// ==UserScript==
// @name van.mz.playerAdvanced
// @namespace van
// @version 3.17
// @description Player display optimization 球员着色插件
// @author van
// @match https://www.managerzone.com/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_listValues
// @grant GM_deleteValue
// @grant GM_setClipboard
// @grant GM_xmlhttpRequest
// @connect www.budeng.win
// @require https://cdn.bootcss.com/pako/1.0.5/pako.min.js
// @require https://cdn.jsdelivr.net/gh/vanjoge/MZExtension/Scripts/base64js.min.js
// @downloadURL none
// ==/UserScript==
var gm_mzlanguage = {
zh: {
Name: "中文",
Save: "保存",
Setting: "设置",
Test: "测试",
SettingTitle: "点击可对语言和XML导出进行设置",
Language: "语言",
XmlMode: "战术导出模式",
XmlMode1: "顺序选择球员",
XmlMode2: "根据位置选择球员(需提交数据到后台)",
TacConf: "位置系数设置",
AutoRun: "自动着色",
AutoRun0: "仅打开页面时自动执行一次",
AutoRun1: "随系统刷新自动着色(如果浏览器变卡请关闭此选项)",
NotSureEx: "挂牌后属性可能有变动,不确定转会市场显示是否是真实属性,请自行甄别。
属性变动时间",
NotSure: "属性不确定",
ManualColorTitle: "点击可手动着色 快捷键:ALT + A",
ManualColor: "手动着色",
Jijing: "比赛集锦",
dongzuo: "球员动作",
Copyxml1: "复制主队战术",
Copyxml2: "复制客队战术",
CopyXmlMsg: "战术已复制到剪切板",
CopyXmlMsgError: "战术复制失败",
BA_NORMAL: "BA_NORMAL",
BA_WALL: "站人墙",
BA_HOLD: "抱着球",
BA_DOWN: "倒地",
BA_HOLD_THROWIN: "界外球准备",
BA_THROWIN: "界外球",
BA_LEFT_FOOT_SHOT_FWD: "射门/长传(L)",
BA_LEFT_FOOT_SHOT_BACK: "BA_LEFT_FOOT_SHOT_BACK",
BA_LEFT_FOOT_SHOT_RIGHT: "BA_LEFT_FOOT_SHOT_RIGHT",
BA_LEFT_FOOT_SHOT_LEFT: "BA_LEFT_FOOT_SHOT_LEFT",
BA_RIGHT_FOOT_SHOT_FWD: "射门/长传(R)",
BA_RIGHT_FOOT_SHOT_BACK: "BA_RIGHT_FOOT_SHOT_BACK",
BA_RIGHT_FOOT_SHOT_RIGHT: "BA_RIGHT_FOOT_SHOT_RIGHT",
BA_RIGHT_FOOT_SHOT_LEFT: "BA_RIGHT_FOOT_SHOT_LEFT",
BA_LEFT_FOOT_PASS_FWD: "短传(L)",
BA_LEFT_FOOT_PASS_BACK: "BA_LEFT_FOOT_PASS_BACK",
BA_LEFT_FOOT_PASS_RIGHT: "BA_LEFT_FOOT_PASS_RIGHT",
BA_LEFT_FOOT_PASS_LEFT: "BA_LEFT_FOOT_PASS_LEFT",
BA_RIGHT_FOOT_PASS_FWD: "短传(R)",
BA_RIGHT_FOOT_PASS_BACK: "BA_RIGHT_FOOT_PASS_BACK",
BA_RIGHT_FOOT_PASS_RIGHT: "BA_RIGHT_FOOT_PASS_RIGHT",
BA_RIGHT_FOOT_PASS_LEFT: "BA_RIGHT_FOOT_PASS_LEFT",
BA_PICK_UP_BALL: "捡起球",
BA_DROP_BALL: "放下球",
BA_HEADER: "争顶",
BA_TRIP: "丢失球权",
BA_CELEBRATE: "庆祝进球",
BA_GK_READY: "准备扑救",
BA_GK_ACRO_LEFT: "ACRO(L)",
BA_GK_ACRO_LEFT_HOLD: "ACRO_HOLD(L)",
BA_GK_ACRO_RIGHT: "ACRO(R)",
BA_GK_ACRO_RIGHT_HOLD: "ACRO_HOLD(R)",
BA_GK_SIDESTEP_LEFT: "移动(L)",
BA_GK_SIDESTEP_RIGHT: "移动(R)",
BA_GK_KICK: "BA_GK_KICK",
BA_GK_THROW_BALL: "BA_GK_THROW_BALL",
BA_GK_STRETCH_LEFT: "BA_GK_STRETCH_LEFT",
BA_GK_STRETCH_LEFT_HOLD: "BA_GK_STRETCH_LEFT_HOLD",
BA_GK_STRETCH_RIGHT: "BA_GK_STRETCH_RIGHT",
BA_GK_STRETCH_RIGHT_HOLD: "BA_GK_STRETCH_RIGHT_HOLD",
BA_BALL_OWNER: "控球",
BA_TACKLE: "上抢",
BA_SLIDING_TACKLE: "BA_SLIDING_TACKLE",
BA_SLIDING_TACKLE_STAND: "BA_SLIDING_TACKLE_STAND",
BA_MAX: "BA_MAX",
BA_MY_1001: "头球攻门(L)",
BA_MY_1002: "头球攻门(R)",
BA_MY_1003: "卸下球",
BA_MY_1011: "上抢(成功)",
BA_MY_1012: "上抢(失败)",
Unknown: "未知"
,
training_pos: "无教练",
training_camp: "进营",
training_coach: "有教练",
training_ycc: "调整",
training_itc: "强化",
training_neg: "掉球",
training_unit: "格",
training_unknown: "未知训练类型",
training_ball_day: "离下一次涨球训练天数",
training_part: "分段训练效率",
training_total: "进度",
training_avg: "平均",
training_now: "当前训练进度",
SkillsAnalysisTitle: "点击可手动着色和分析训练效率 快捷键:ALT + S",
SkillsAnalysis: "训练效率分析"
}
,
en: {
Name: "English",
Save: "Save",
Setting: "Setting",
Test: "Test",
SettingTitle: "Click setting language",
Language: "Language",
XmlMode: "Tactical Export Model",
XmlMode1: "Sequential selection",
XmlMode2: "Choose by location(need submit data to server)",
TacConf: "Tactical Coefficient Setting",
AutoRun: "Auto Colorable",
AutoRun0: "By page loaded(Once)",
AutoRun1: "By MZ Refresh",
NotSureEx: "Skills may change after entering the transfer market.
Change time ",
NotSure: "Uncertain skill",
ManualColorTitle: "Click the Colorable Skill. Shortcut key : ALT + A",
ManualColor: "Colorable Skill",
Jijing: "Events",
dongzuo: "PlayerStatus",
Copyxml1: "CopyXML(home)",
Copyxml2: "CopyXML(away)",
CopyXmlMsg: "The tactic was copied to the Clipboard!",
CopyXmlMsgError: "Copy error!",
BA_NORMAL: "Normal",
BA_WALL: "Wall",
BA_HOLD: "Hold",
BA_DOWN: "Down",
BA_HOLD_THROWIN: "HoldThrowin",
BA_THROWIN: "Throwin",
BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
BA_PICK_UP_BALL: "PickUpBall",
BA_DROP_BALL: "DropBall",
BA_HEADER: "Header",
BA_TRIP: "Trip",
BA_CELEBRATE: "Celebrate",
BA_GK_READY: "GkReady",
BA_GK_ACRO_LEFT: "GkAcroLeft",
BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
BA_GK_ACRO_RIGHT: "GkAcroRight",
BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
BA_GK_SIDESTEP_LEFT: "GkSidestepLeft",
BA_GK_SIDESTEP_RIGHT: "GkSidestepRight",
BA_GK_KICK: "GkKick",
BA_GK_THROW_BALL: "GkThrowBall",
BA_GK_STRETCH_LEFT: "GkStretchLeft",
BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
BA_GK_STRETCH_RIGHT: "GkStretchRight",
BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
BA_BALL_OWNER: "BallOwner",
BA_TACKLE: "Tackle",
BA_SLIDING_TACKLE: "SlidingTackle",
BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
BA_MAX: "Max",
BA_MY_1001: "HeadGoal(L)",
BA_MY_1002: "HeadGoal(R)",
BA_MY_1003: "StopTheBall",
BA_MY_1011: "Tackle(Success)",
BA_MY_1012: "Tackle(Fail)",
Unknown: "Unknown"
,
training_pos: "No coach",
training_camp: "CAMP",
training_coach: "Coach",
training_ycc: "Ycc",
training_itc: "Itc",
training_neg: "Neg",
training_unit: "↑",
training_unknown: "Unknown training",
training_ball_day: "Next ball days",
training_part: "Training efficiency",
training_total: "Total",
training_avg: "Avg",
training_now: "Now",
SkillsAnalysisTitle: "Colorable Skill and Analysis of Training Efficiency Shortcut key :ALT + S",
SkillsAnalysis: "Colorable By Graphs"
}
,
es: {
Name: "Español",
Save: "Guardar",
Setting: "Ajustes",
Test: "Test",
SettingTitle: "Haga clic en configuración Idioma",
Language: "Idioma",
XmlMode: "Tactical Export Model",
XmlMode1: "Secuencia de selección",
XmlMode2: "Elegir por locación (necesita suministrar datos al servidor)",
TacConf: "Tactical Coefficient Setting",
AutoRun: "Auto Coloreable",
AutoRun0: "Por página cargada (sólo una vez)",
AutoRun1: "Por recargar MZ",
NotSureEx: "Las skills pueden cambiar después de ingresar al mercado.
Cambiar hora ",
NotSure: "Skill incierta",
ManualColorTitle: "Haga clic en la skill para colorear. Acceso directo: ALT + A",
ManualColor: "Color de la skill",
Jijing: "Eventos",
dongzuo: "PlayerStatus",
Copyxml1: "CopiarXML(local)",
Copyxml2: "CopiarXML(visitante)",
CopyXmlMsg: "La táctica fue copiada al portapapeles",
CopyXmlMsgError: "¡Error al copiar!",
BA_NORMAL: "Normal",
BA_WALL: "Wall",
BA_HOLD: "Hold",
BA_DOWN: "Down",
BA_HOLD_THROWIN: "HoldThrowin",
BA_THROWIN: "Throwin",
BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
BA_PICK_UP_BALL: "Toma la pelota",
BA_DROP_BALL: "Tira la pelota al césped",
BA_HEADER: "Cabezazo",
BA_TRIP: "Trip",
BA_CELEBRATE: "Celebración",
BA_GK_READY: "Arquero preparado",
BA_GK_ACRO_LEFT: "GkAcroLeft",
BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
BA_GK_ACRO_RIGHT: "GkAcroRight",
BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
BA_GK_SIDESTEP_LEFT: "Arquero da un paso a la izquierda",
BA_GK_SIDESTEP_RIGHT: "Arquero da un paso a la derecha",
BA_GK_KICK: "Arquero da una patada",
BA_GK_THROW_BALL: "GkThrowBall",
BA_GK_STRETCH_LEFT: "GkStretchLeft",
BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
BA_GK_STRETCH_RIGHT: "GkStretchRight",
BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
BA_BALL_OWNER: "Con la pelota en los pies",
BA_TACKLE: "Entrada",
BA_SLIDING_TACKLE: "Barrida",
BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
BA_MAX: "Max",
BA_MY_1001: "HeadGoal(L)",
BA_MY_1002: "HeadGoal(R)",
BA_MY_1003: "Frena la pelota",
BA_MY_1011: "Entrada(acertada)",
BA_MY_1012: "Entrada(fallida)",
Unknown: "Desconocido"
,
training_pos: "Sin entrenador",
training_camp: "CAMP",
training_coach: "Coach",
training_ycc: "YCC",
training_itc: "ITC",
training_neg: "Neg",
training_unit: "↑",
training_unknown: "Entrenamiento desconocido",
training_ball_day: "Días para ganar una pelotita",
training_part: "Eficacia de entrenamiento",
training_total: "Total",
training_avg: "Avg",
training_now: "Ahora",
SkillsAnalysisTitle: "Skills y análisis de eficacia de entrenamiento coloreables al presionar: ALT + S",
SkillsAnalysis: "Coloreable por gráficos"
}
};
var now_language = gm_mzlanguage.en;
function CTable() {
//key value
this.data = {};
//keys
this.keys = new Array();
this.addData = function (key, value) {
if (this.data[key] == undefined) {
this.keys.push(key);
this.keys.sort(function (a, b) {
return a - b;
});
}
this.data[key] = value;
};
this.getVal = function (i) {
if (this.data[i] == undefined) {
//
} else {
return this.data[i];
}
};
this.GetX = function (i) {
var rv = this.getVal(i);
rv = Math.floor(rv * 214 / 1000) - 3;
return rv;
};
this.GetY = function (i) {
var rv = GetVal(i);
rv = Math.floor(rv * 328 / 1000) - 1;
return rv;
};
}
function mzcamp() {
this.data = {};
this.name = null;
this.keys = new Array();
this.index = 0;
this.add = function (begin, end) {
if (end > begin + 2937600000) {
end = begin + 2937600000;
}
if (this.data[begin] == undefined) {
this.keys.push(begin);
this.keys.sort(function (a, b) {
return a - b;
});
}
this.data[begin] = {
begin: begin,
end: end
};
};
this.getItem = function (begin) {
return this.data[begin];
};
this.resetIndex = function () {
this.index = 0;
};
this.inYTC = function (x) {
while (this.index < this.keys.length) {
let item = this.data[this.keys[this.index]];
if (x < item.begin) {
return false;
} else if (x <= item.end) {
if (/\d/.test(item.name)) {
return false;
}
return true;
}
if (x > item.end) {
this.index++;
}
}
return false;
};
};
function playerTrainingBySkill() {
//涨球时间
this.ballDay = 0;
//训练统计
this.stat = new trainingStat();
//当前球数
this.skill = 0;
}
function trainingStat() {
//所有 不包含掉球
this.all = new trainingDay();
////普通训练 无教练
//this.pos = new trainingDay();
////强化营
//this.itc = new trainingDay();
////调整营
//this.ycc = new trainingDay();
////掉球
//this.neg = new trainingDay();
////理疗
//this.physio = new trainingDay();
////有教练
//this.coach = new trainingDay();
////训练营
//this.camp = new trainingDay();
//对某类型加1
this.add = function (type, tn) {
if (!this[type]) {
this[type] = new trainingDay();
}
this[type][tn] += 1;
};
this.getSum = function (canOver100) {
let ret = 0;
if (this.neg) {
ret = this.all.getSum() - this.neg.getSum();
} else {
ret = this.all.getSum();
}
if (!canOver100) {
if (ret >= 100) {
ret = 99.99;
}
}
return ret;
};
this.getAvg = function () {
return this.all.getAvg();
};
this.getTnText = function () {
let str = "";
if (this.pos) {
str += " " + now_language.training_pos + this.pos.getTnText();
}
if (this.camp) {
str += " " + now_language.training_camp + this.camp.getTnText();
}
if (this.coach) {
str += " " + now_language.training_coach + this.coach.getTnText();
}
if (this.ycc) {
str += " " + now_language.training_ycc + this.ycc.getTnText();
}
if (this.itc) {
str += " " + now_language.training_itc + this.itc.getTnText();
}
if (this.neg) {
str += " " + now_language.training_neg + this.neg.getTnText();
}
return str;
};
this.getDayByAvg = function (avg) {
let ret = (100 - this.getSum()) / avg;
ret = parseFloat(ret).toFixed(1);
return ret;
};
this.getDay = function () {
if (this.coach) {
return this.getDayByAvg(this.coach);
} else if (this.pos) {
return this.getDayByAvg(this.pos);
}
return undefined;
};
}
function trainingDay() {
this.t1 = 0;
this.t2 = 0;
this.t3 = 0;
this.t4 = 0;
this.t5 = 0;
this.t6 = 0;
this.t7 = 0;
this.t8 = 0;
this.t9 = 0;
this.t10 = 0;
this.getSum = function () {
let ret = this.t1 * 0.4 * 1 + this.t2 * 0.55 * 2 + this.t3 * 0.7 * 3 + this.t4 * 0.85 * 4 + this.t5 * 1 * 5 + this.t6 * 1.15 * 6 + this.t7 * 1.3 * 7 + this.t8 * 1.45 * 8 + this.t9 * 1.6 * 9 + this.t10 * 1.75 * 10;
ret = parseFloat(ret).toFixed(1);
return ret;
};
this.getAvg = function () {
let ret = this.getSum() / (this.t1 * 1 + this.t2 * 1 + this.t3 * 1 + this.t4 * 1 + this.t5 * 1 + this.t6 * 1 + this.t7 * 1 + this.t8 * 1 + this.t9 * 1 + this.t10 * 1);
ret = parseFloat(ret).toFixed(1);
return ret;
};
this.getTnText = function () {
let str = "";
if (this.t1 > 0) {
str += " 1" + now_language.training_unit + "(" + this.t1 + ")";
}
if (this.t2 > 0) {
str += " 2" + now_language.training_unit + "(" + this.t2 + ")";
}
if (this.t3 > 0) {
str += " 3" + now_language.training_unit + "(" + this.t3 + ")";
}
if (this.t4 > 0) {
str += " 4" + now_language.training_unit + "(" + this.t4 + ")";
}
if (this.t5 > 0) {
str += " 5" + now_language.training_unit + "(" + this.t5 + ")";
}
if (this.t6 > 0) {
str += " 6" + now_language.training_unit + "(" + this.t6 + ")";
}
if (this.t7 > 0) {
str += " 7" + now_language.training_unit + "(" + this.t7 + ")";
}
if (this.t8 > 0) {
str += " 8" + now_language.training_unit + "(" + this.t8 + ")";
}
if (this.t9 > 0) {
str += " 9" + now_language.training_unit + "(" + this.t9 + ")";
}
if (this.t10 > 0) {
str += " 10" + now_language.training_unit + "(" + this.t10 + ")";
}
return str;
};
}
var mzreg = {
playerMax: /trainingField.players\s*=\s*({.+})/,
playerId: /player_id_(\d+)/,
bar_itc: /bar_itc_(\d+)/,
bar_ycc: /bar_ycc_(\d+)/,
bar_pos: /bar_pos_(\d+)/,
bar_neg: /bar_neg_(\d+)/,
trainingType: /&t=([^)]+)/,
data2d_url: /matchviewer\/media/,
shortlist_url: /\/?p=shortlist/
};
var mzImg = {
red_skill:
[
"",
"",
"",
"",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADASURBVFhH7ZhBDoAgDAS94uP5kd/x4M0XaNZQUxshUg72sCRGrduE7giI01TakvOxz/PjQEye23M0fa2fjDccEOCAKU2DtanR9ITrcEADvqmXCw34bWaIoHeUzBQ4ALiAL6NdXgR7L25F05Oi0wGA1E2v8xJHTIOPpHeWzTQL3o54QG6B/1tPgk4H7NRt120BW5vq/9Y7y2YawK4pXaO69lWvt3XR9CQ44MBW9u9ft3PR9AOlMzXaD5ne/pBgnwMnVGDpfjrKHa4AAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACySURBVFhH7ZhBDoAgDAS5wuP5kd/x4M0XaGpaszbW4HFDSYhQ96CdbLGWomPp/dhbe0yJ2X1/ZddH7zVV3IALTBsI1ieDXT8V3BHn3tR1gYDfKgOjPqFrBgSuuNvcbk73e0sYuz7BA3h0Lp7zFpcYgmfWJ/gAvHe8QP4Cz6ZP8EGp9+e2gY1KPZs+wUMbt9Z6uTr6qse2TtbM+gQPGdi0fx9t59j1CR8ywP5D5u/zzw7/BIZH4+GYZs1CAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACtSURBVFhH5ZhBDoAgDAS5wuP5kd/x4M0XaNZQUxsxeGSXhKh1L2WyhZJSG0utx17KYyJm/+NTTd9bh6njBhwwbXiwMTk1/dRwR5x7U28vHvBbZVDQU0JHUoALd5vbzenx2xZATU8N3jvX7/MWR8yDV9LLgI+OB+Qv8Ox6avC+1Md928D2Sj27nhY8wK45X67unep9W6empwWPxLbWv4+2c2p6avhqFzJ/82WDfwLFrd5EQmi8RgAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVFhH7VjRCoMwDPTVfrx/5O/sYW/7gkqWnkuDlQiDuHEFUeOByV2TtJ2mNtZlqa9Sukts+O7vxJd6xs+It1vZIbgEgmGF9c4SX9+ig4dbiRl1xgawq94erMBHlYF4rZA/mflwHNmOieDfITzxmukjfqIJl46TIOywfR52sVnhiddMP+InXdCoA154n/ES3JnwxPf8RHlPx/nS7fs2hB2VeuK19KcLedUBEfYxz13fEjHtos8uXojXqT7i5yr/qfhn279Ht3PE/8F2jgc4n0Orbx5YpWZy4OcbEqHYp2q4IyoAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADfSURBVFhH7ZjBDoMgEES9ysf7R/2dHnrrF9BsYZpxUw3GtdvDmBgVJwHmsSwwTf26LUt9lrK6rQz//VP6UiP92fL50nIAt47gYrC+cunrGzp8OOvPpXBHIvdDvb8w4G8zg/RthuTI5wEx4k8KdKsUDUe0o+H+Gw2UvkV6lD+p4Hlkcp5HuZUxeOlbpEf48zfgfcRb5/bAS3/On1TwBo8XdhzRALs11fs8Jn1LA6N+poG3Bt7neZW3DCYvUvziRfo4f9LAW8WPvn8f3c5Jv7+dO+pPKnwdyMQeyBz189fwX20F0wr7zmFhAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVFhH7ZhLDoQgEETdyuG9kdeZxezmBJgeKFN2RiOZRjZFYlSsINSj+U1TTeuy5E9Kh8vy8N3fpU95pD9nXJryAdwagsRgfWHS5y90+PC0P01w70TuTr0+MOBfI4P0ZYTkyOcO0cOfEOhWCCqOaEfF/Tt+KH2J9FH+hILnnsnzPPItj8FLXyJ9hD/dwPuIt8ZdgZf+WX9CwRs8XthxRAPs2VDv5zHpyzTQy88w8FbB1zwf5i2DyYsUv3iRfpw/YeCtoHfdv9/dzkl/vZ3r7U8ofB3IjD2QafX/X/gb1OjNbdNi8SQAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVFhH7ZhNDoQgDIXZyuG50VzHhTtPwKQDz9QGCLNrk0diVHgaeF9aflLq5VNKvXN+XVKHdnunPtdI/gw5ArgMBEWDtR9RX3/Q4YN3f4bQ9QAe6v1BAx5lBupbhtSR783PWcZO6DiiHR237/gB9S3So/izBK8jV8/zqJc6DZ76FukR/NkGbyNeBrcCT71vf7ZTvZ23AXaW6qlvqd+rP1PwAvY8jte8JTD1IsUuXqiP488UvDRcff++u52jfr2d8+bPEj4PZGIdyPzLy8L/AkpZx9CM/6kBAAAAAElFTkSuQmCC"
],
red_skill_blevel:
[
"",
"",
"",
"",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNpiYICCvX19/z9ycaFgkBgDDjDQ6v///w/Hy5cvB4mDMYiNLDeKsWMwQA5YGEAOePRIGQzq0SN9/tNaMB6NfCIjHjlA0QG2nDZY1COlXHCE1x+N/W/TJAWP/NHIJRDxsICE5S5YwKPzkXPjYFCPHvGwyB+NeBIiHluuQhZHj5jBoB65qGdkZBwt6imNePQcRihiBkr9aOOOykU9OiBUFA+U+tHIo0Lj7hknJ95WNHrjazCoH408yjCTc1ERIwsjIwM+AFKDzB5M6kcBhWAoD+CMYtIxQIABAD/G6io9wgMiAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUeNrsWLENwkAMtBFNMgKz0DEHS6RHSAyQFVL+FCkzCvRMYPQvHPmtkC+oLPukk/6dq+5iy3qAL+ZxpHffV8w1+AFreiJamVLK9cJ8lt+8sEAaxZBGapMt6nXo0/NW6DX8qlM0tjrHql786SXw+3Kl8+O0hu8ueDaGu4WN1HfZXRb1OngO33XwW10i69poi3o56hExRr02TndMy2gr+ljuGqNeozVareg9httc7l5dt7sV62XKoj7Crnm4DAMeEWEPWSPPlvUB4w8y/zzgBAk+AgwATrKOZ9SrHu0AAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNpiYICCvX19/z9ycaFgkBgDDjDc1f///x+Oly9fDhIHYxAbWW6oYjBA9jgMIAcMeqCNBPXokT7/aS0YD5fIR0n56ABbThgp6pFyBjjC64/G/rdpkoJH/pCPeJhHYakfFjDofOTcMhLUo0c8LPKHVcRjS/XI4ugBNxLUIxf1jIyMw6+oRw8I9BxAKOCGq/ph37hDL/rQAaGicriqHw6RS7Bx94yTE28rF71xNBLUD/eIZ3IuKmJkYWRkwAdAapDZI0n9sAejAzi4B3CGIwYIMACTLTKkLYTX2wAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNrsmDEOwjAMRWPE0h6Bs7BxDi7RHSFxgFyBMadg5Ciwc4KgRKRyvtN2YXAkf8lSmr6hznctK8799PA+fsaxirTnFmR8zccY5wghpP0cac3faYksnkgRTxQPwXjJo+n31yWHVvOrSka1Ktv4Ns/+pGz49XmOx9thNl+d8eXDSzWXRPGZV7/xkkfji/mqjW9VMd/HgzBe8rzVE5H+Vo+JYUVvHYTxtfHdDHfYylBbrc94L4zvIfLw8h6G1akVhx3jJd+b8bvTNNGeyK0pMXxt/DLfnexC5n8XOD3EV4ABAA1G1tKnDW+dAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNpiYICCvX19/z9ycaFgkBgDDjCqnjL1////h+Ply5eDxMEYxEaWoxUGA2SHwQCyw9E9NaqecvXokT7/aS0Y0yvyUVImOsCWUkfVU0c9Us4DR3j90dj/Nk1S8MinecTDHAJLnTCHo/ORU/OoesrVo0c8LPLpGvHYUiWyOLrHRtVTrh65qGdkZKR/UY/uUPQUSshjo+rJUz/gjTv0ogkdECrKRtWTp54ekUuwcfeMkxNvKxS98TKqnnL1Ax3xTM5FRYwsjIwM+ABIDTJ7VD311A84GB1gGbgBnIHAAAEGALzfew8s0IRiAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpiYICCvX19/z9ycaFgkBgDDjCqnr7q////D8fLly8HiYMxiI0sRywGA2SLYADZIeiOHFVPf/XokT7/aS0Ykxv5KCkNHWBLeaPqB0Y9Uk4FR3j90dj/Nk1S8MgnOeJhBsNSG8wh6Hzk1Dmqnv7q0SMeFvkURTy2VIYsju7QUfX0V49c1DMyMlJe1KNbjJ7iCDl0VD191FO9cYde1KADQkXTqHr6qCcncgk27p5xcuJtVaI3RkbV0189tSOeybmoiJGFkZEBHwCpQWaPqh849VQHowMmQ2cAhxoYIMAAohYfTLMKd8QAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO9JREFUeNrsmDEOwjAMReOKpT0CXIWNS2Rh4ArdERJ07hXY2lMwsnEN2DlBaCJcOW5oVhf5S1ZT6zUZvuVaKcxXt7Z176qKwufMDykvm3fOjdH3vc+H8GufC6IfoujG/FDl5fPc9OvzGALNjyqHK1VJyi+DR+PR9NN977bn9Wi+QRCrBzfm77TalJfPc+PR/Mj4VNXQPD9Yefk8bfUAMGn1Bf9/PJomeuakvGzeWgtd15nD5hJiMD3kJq2DK9dqlJfJ06k+FWFYeJXl7JTIhwvl5fM544tdXcMKYLadeIaulV8On5VegPzvBU4qPgIMABoVn4y9nkDEAAAAAElFTkSuQmCC"
],
green_skill:
[
"",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACPSURBVFhH7ZgxCoAwFEO79f5ncejVdFICjcQPQuc0H0T9uiQvta2tzRrHdfd+fg70+DxnQwcIHKBZGgRDyZGkgF/q80IDEafMHABcwOdoZxDqvZnsyAF4LZ3n2UcvTpk5UMHXEQ/4AW8GHXLqp77O8wyCofS9Jeni7m9Vn22daUaynTMFuyIrP3BWXPJ55wH1ZAeNPHeqYQAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC3SURBVFhH7VhBCoAwDNtt/3+LB7+mJ6WwSC3OmdMKZiBqDZomtNsspY112Y9at9thMTyPZxbfe4/iExWA4WYmhjc2UmPxE1PTp79U7uV6u/AGP3WGL3gpn1QBM9eqG9WOSo/3oM/ik6YtWmakH36eR9xi3ngGL4WTKhCNjxVvJr8ZP8InTVu0YuuO8zaM7bX6EV4KJ1XAr957q3q/rWPxSdMWLVOA3Z6xeKmcWAH2hwyLT5z6L6mdbM4PGe5TPwoAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC6SURBVFhH7ZhLCoAwDES76/3P4sKr6UoZ6EgMViw02TgFscahMXmkH0tpbV32o9btdsHG9/4ere/5lX1iBggcMNksWO8qWj8xNA31pXIv6q1jAT/NDBF6kUrKAOCiulntrHT/zM+J1ieFLTcAaZtd52mHzYKP1ItIUgY8eF/xgPwGfrY+KWy58VO3X7cJtjfVz9aLSFIG7O69t6u3x7pofVLYcoMMRB/PRscXlcQMRP+QGR0/MfRfujoBedoWpRqlwWYAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC3SURBVFhH7ZhLCoAwDETd9f5nceHVdKUEOhKDLTRddBZTEDVOoJmn/bhttR37dZdyfg6L4Xk8s+lb/VS84wCAG0w0DzamsukFN+GAB/xSrxce8N/IwKBPlKwUc8DgGnx87XgR4j3cYtOLYtIBA+mbn+cRt5gHz6RPlq20CD5+8Qa5B361XgSTDsShO87bANsa6lfrk2UrzS/uWqt6v61j04vghANs27PR/kyUrlS2HzKj/RHBMQceHJceMQCHNbYAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVFhH7ZjBCoAwDEN32/9/iwd/TU9KoZFYVnHHsA5ErTnMPtKta83Hvp1X78frshi+x7u6PvuvpeIAbjAxGGxMhrp+Kbh/nPtQ9wcGPKoMivqC7hkwuOZuuB1Oj+9ImLq+wBN4di6v84hbjMEr6wt8Aj463iB/gVfTF/ik1Md1G2CzUq+mL/CDNi7b1XNbx7t9RX2Bpwyot2ez8y/4lAH1A5nZ+a8O/wZU9iW93UtuGAAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVFhH7ZjBDoAgDEO58f/f4sFf05NmCZW6OOKVDhKjzl7g2TFWShv7dl61Hq/LYvju79n00TpMHQdwg4nBYP3ksumnhvvHuQ/19sCAvzJDBr0kdJuUwTV3w+1wun/HAmTTS4Nn5/I+j7jFGHwmfRrw3vEGeQReXS8NnlO937cBNkr16npZ8Fy9R1U9H+uy6WXBo8BD0baOc72ekYa+Gji9aTVqWKn9BDcjBi1Jkz7/KwAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADPSURBVFhH7VhBDoAwCPPm/9/iwa/paQaxhhG3sBMz6RKjYg/QDgYuy7P27SzrelSX2PDd34k/So+fFm9T2SG4BIJlhfXOEl9u0cHDVGJGnbEBvKo/D1bgr8pAvFbIX2Y+HEe2YyP4dwhPvGZ6i59owqXjJAi77DkPu9is8MRrpn/xky5o1AEvvM94Ca4nPPE1P1He03G+dPtzG8K2Sj3xWvrThRx1wDZ3ra7eNi/E61b3PIzyPgWe41l/PBvlZwpRo07wh0x/LBvlJ8p7Fu4Chrg01UrUXzQAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADZSURBVFhH7ZjBDoQgDES9+f/f4mF/zT1hujhmbISwsW73MCZGxSbAPAYK07Rfr+Vd5nk93VaG//6p+LVE6tPS+dFyALeO4GKwvnLFlw906HBXn0fhjjj3oL6/MOCrmUHxdYZk5/OAGNEnBbpViobD7Wi4/0YDFV+dHqVPKngembzOo9zKGLziq9Mj9Pkb8N7x1rkeeMXf0ycVvMHjxI4dDbCtqd6vY4qvy8ConmngORlpZfWt5EXx/eRuRJ808EjwOGExF0duV7T96+uZCl8HMrEHMt/q+Wv4G4AbPGGz4g/QAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADZSURBVFhH7ZjBDoQgDES9+f/fsof9NT1hujibsVnIEou9DIlRa4Mwj0JhWc7yfu1lXbfLZTZ893f5byVTnxaXITuAW0dQGKyvTP7lAx06PK3PENx/IvdL/XxgwL9mBvnXGZIjnwfEDH1CoFslaDiiHQ337/ih/GukZ+kTCp5HJq/zsJuNwcu/RnqGPtPA+4i3zvXAy/9ZfULBGzxO7DiiAbY11ft1TP51GZilZxh4TkZaWX0reZF/P7mboU8YeCR4nLBYFGduV7Rd7OsfCl8HMrkHMqP634V/AA8vQ+1df+9kAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADESURBVFhH7ZhLDoAgDETZcf+zuPBqusJUHFMbSmTXJkNiVBgNzEvLp5Sn7NvZaj0+l9Sh3d6pP1omf4YcAVwGgqLB2o+obzd0+BDdnyF0PYCX+vOgAY8yA/U9Q+rIj+anl7ELOo5oR8ftO35AfY/0LP5MwevI1fM86qVOg6e+R3oGf36DtxEvg5uBpz62P79TvZ23AdZL9dT31B/VHxe8Xox4q3pv8UL9fHEXwR8XvDRwe5Zre7bKawqfBzK5DmRWeVn4FzPlS3kjdc0LAAAAAElFTkSuQmCC"
],
green_skill_blevel:
[
"",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNrslzEKAjEQRWdEzB2s9iB2aRQULGw9ighexHIbC0FBL+BRvEPWJpLgxL8R0TZhHnzYnWyVP/mZJXpxOXXeGNdTqMm69z6pbdtQjwrPuKYqQxE0WsBGQOPF9P19E6XmF2o8GpyTNYR0SjR8e1v7yW6czNfNLEvD5crT8cCS6HQ9P0hqzpn07hz1aJqGrLWkFEp+0vGOxxpGPTNr1Jce9bnxEv1436PxOtzVIQ6mStRP56OPRHhHvWHNx4rA4e7bVI/DnaoODWaL3yf5n2+UsmA8+SHSkXAFiOnpp1+pgqcAAwA2YdI0uYtBawAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP1JREFUeNrsWEEKwjAQzIpY3+CpD/HWi4KCB68+RQQ/4rEXD4KCfsCn+IfUSzTBDdto2hQEV9iBgXY7p05nslSpF87HymSZrtHOVARtemOMZ1mWdu5or+kz4W/oQI1DUGND01P0oem729pRzGdiPDUsxKckp+rJl+UM31xXZrwdefPl5f+W/cXSqMMefJovp7vCmdaZv0ek6rWut0Se56ooCiVggjC59Myms656WvUAIFXPrepDI7HK6fndZHxML8sdb4I1Cat7Mhu8NQJWd1UNAY1P0T9rH6RPGYMua7EtPbbcNeklVbzZm87bk0k1XfWCP0r+t3/gCPnxIcAAqgwADpJouaIAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO5JREFUeNrsmDEKAjEQRSci5A5WOYhdKgvBwtajiOBFLNNYCAp6AY/iHaLNSIIJs2GjTWbXYj582J393ctMhgX46Hp+ota+41CDilrnETHbORfq0eGZfhO3cRQFkURBlRA58iX0w2MbLfCZwFMApfo6kytPTmIEvrtvcL6fZfgCq62nqzXC6ahyd94uL0g173V+T+LKe9+dEsYYsNaCiEllJ9I7mNa483TUK6Vk1HOP+hJMGs30Pv4GslVelrsRwAcIFEQfKAqSIy8wRlzualt3bVlrmRcYw3qyWGr1aw+gGe68aGD90w8cMb/fAgwAkWYpnU/mV8wAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNpiYICC7Zt//mdn/4GCQWIMOMBAq////z8cL1++HCQOxiA2stwoxo7BADlgYQA54NEjZTCoR4/0+U9rwXg08omMeOQARQfYctpgUY+UcsERXn809r9NkxQ88kcjl0DEwwISlrtgAY/OR86Ng0E9esTDIn804kmIeGy5ClkcPWIGg3rkop6RkXG0qKc04tFzGKGIGSj1o407Khf16IBQUTxQ6kcjj4qNO1ytaFyNr4FUPxp5lGEmT192RgYCAFnNYFM/CigEQ3kAZxSTjgECDABGFRX5kmgsvgAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM9JREFUeNrsWMEJAjEQ3PhJD9ZiAz4swVJEsBGfKcCHFViKPehrJcE9NsuFCL6G3YGBu9y8Zm6WJURf3G9vzvnVsZ7RAGh6Zl5YSqnnjfVZf/PCBm2UQBtpTUbU29Cvz1Oj1/C7plisNQdVr/70Fvj5ceTdZbuE7y54MUbaIkbad90uRL0NXsJ3HfxaS/S5NRpRr0d9SilGvTXONmZmNIo+lrvJqLeYjVYUvcdwf17uRlvxaJlC0kfYPTf7Q040gdag6wPgFzL/XOAEmT4CDAB1xsUXGbRqMwAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNpiYICC7Zt//mdn/4GCQWIMOMBwV////384Xr58OUgcjEFsZLmhisEA2eMwgBww6IE2EtSjR/r8p7VgPFwiHyXlowNsOWGkqEfKGeAIrz8a+9+mSQoe+UM+4mEehaV+WMCg85Fzy0hQjx7xsMgfVhGPLdUji6MH3EhQj1zUMzIyDr+iHj0g0HMAoYAbruqHfeMOvehDB4SKyuGqfjhELtGNO1ytXFyNo+GsfrhHPJOnLzsjAwGArGakqR/2YHQAB/cAznDEAAEGAM3odEQYHimLAAAAAElFTkSuQmCC",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANxJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoelT1////h+Ply5eDxMEYxEaWGywYDJA9AgPIHkUPhFH1mOrRI33+01owHqyRj5KS0QG2lD2qHrt6pJwEjvD6o7H/bZqk4JE/6CIe5nBYaoZ5FJ2PnPpH1WOqR494WOQP6ojHloqRxdEDYlQ9pnrkop6RkXHwF/XoHkNP0YQCYlQ9asQPmcYdelGGDggVfaPqf2JE/FDAKI0XXK1WXI2dUfWYjbuhgpk8fdkZGQgAZDWj6vGrH3JgdECGegM4QwEDBBgAToojce1k6CoAAAAASUVORK5CYII=",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANtJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoesrU////H46XL18OEgdjEBtZjlYYDJAdBgPIDkf31Kh6ytWjR/r8p7VgTK/IR0mZ6ABbSh1VTx31SDkPHOH1R2P/2zRJwSOf5hEPcwgsdcIcjs5HTs2j6ilXjx7xsMina8RjS5XI4ugeG1VPuXrkop6RkZH+RT26Q9FTKCGPjaonT/2AN+7QiyZ0QKgoG1VPnnp6RC7RjTtcrVBcjZdR9eSrH+iIZ/L0ZWdkIACQ1Yyqp676AQejAywDN4AzEBggwAD3jtKPndMGXwAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANtJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoevqq////PxwvX74cJA7GIDayHLEYDJAtggFkh6A7clQ9/dWjR/r8p7VgTG7ko6Q0dIAt5Y2qHxj1SDkVHOH1R2P/2zRJwSOf5IiHGQxLbTCHoPORU+eoevqrR494WORTFPHYUhmyOLpDR9XTXz1yUc/IyEh5UY9uMXqKI+TQUfX0UU/1xh16UYMOCBVNo+rpo56cyCW6cYerVYmrMTKqnn7qqR3xTJ6+7IwMBACymlH1A6ue6mB0wGToDOBQAwMEGADJEoG8ooBn0wAAAABJRU5ErkJggg==",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANNJREFUeNrsmMEJQjEMhlMv3cFZXMCDIziKCC7isQN4cAJHcQc9RVrMI/1tyTVP8kPgNXwvPfwhhBJ9db+9OedXFzVHEwXvm2fmJUopNd+iftdck/5RpAvjpcH759H06/PUQszvOgc16qTg18GL8WL6+XHk3WW7mE8CSvdIYTzrbgveP4/Gi/md8aOu0Xm8OHj/vB71KaXfUY+FsIOsi4P3yZvLHY4OlDVqgvfJa+NH0S0Lsy1xtlwE75e3jN/sDzmRIc0Evy7eVDyA/O8Dzig+AgwAwwcw6YPFEjsAAAAASUVORK5CYII="
]
};
var pmax = {};
var isAjaxing = false;
trainingInfo = {};
function clearCache(maxcount) {
let lists = GM_listValues();
let max = lists.length;
if (maxcount) {
max = maxcount;
} else if (lists.length > 100) {
max = 100;
}
for (var i = 0; i < lists.length; i++) {
let ts;
if (lists[i].startsWith("Dt_")) {
ts = GM_getValue(lists[i], -1);
let key = lists[i].substring(3);
if (ts != -1) {
let dt = new Date(ts);
let now = new Date();
if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && now.getUTCDate() == dt.getUTCDate()) {
continue;
}
GM_deleteValue(lists[i]);
GM_deleteValue(key);
max--;
if (max <= 0) {
break;
}
}
}
}
}
function autoclearCache() {
let ts = GM_getValue("last_autoclear", 0);
let dt = new Date(ts);
let now = new Date();
if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && (now.getUTCDate() - dt.getUTCDate()) < 3) {
return false;
} else {
clearCache(100);
GM_setValue("last_autoclear", now.getTime());
return true;
}
}
function myAjax(url, callback, cache_mode, Cjson) {
if (cache_mode == undefined) {
cache_mode = 2;
//0 不缓存每次都获取 1 缓存永不刷新 2 缓存每日刷新
}
if (cache_mode > 0) {
let b64 = getLocValue(url, cache_mode);
if (b64) {
let tdata;
if (b64.startsWith("H4sIAA")) {
if (Cjson) {
tdata = "9" + b64;
} else {
tdata = pako.ungzip(base64js.toByteArray(b64), { to: 'string' });
}
} else {
if (Cjson) {
tdata = "9" + base64js.fromByteArray(pako.gzip(b64));
} else {
tdata = b64;
}
}
callback(tdata, true);
return;
}
}
$.ajax({
type: "GET",
url: url,
dataType: "html",
success: function (data) {
let b64 = base64js.fromByteArray(pako.gzip(data));
setLocValue(url, b64);
if (Cjson) {
callback("9" + b64, false);
} else {
callback(data, false);
}
isAjaxing = false;
}
});
}
function getLocValue(key, cache_mode) {
if (cache_mode == 1) {
let b64 = GM_getValue(key, false);
if (b64) {
return b64;
}
return false;
} else {
let ts = GM_getValue("Dt_" + key, -1);
if (ts != -1) {
let dt = new Date(ts);
let now = new Date();
//let d = now.getTime() - dt.getTime();
if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && now.getUTCDate() == dt.getUTCDate()) {
if (now.getUTCHours() >= 1 && now.getUTCHours() <= 22) {
//取缓存
} else if (now.getUTCHours() != dt.getUTCHours()) {
//每小时更新一次缓存
return false;
}
} else {
return false;
}
let b64 = GM_getValue(key, false);
if (b64) {
return b64;
}
return false;
} else {
return false;
}
}
}
function setLocValue(key, val) {
GM_setValue("Dt_" + key, new Date().getTime());
GM_setValue(key, val);
}
function getMax(callback) {
myAjax(
"/?p=training",
function (data) {
var result = data.match(mzreg.playerMax);
pmax = JSON.parse(result[1]);
callback(pmax);
});
return false;
}
function setSrc(transfer, img, skill, maxed, skillBallDay, pid, k) {
if (skill > 0) {
let flag_exit = false;
if (transfer && skillBallDay) {
if (new Date().getTime() - skillBallDay < 345600000) {
getTrainingGraphsBySkill_id(pid, k, function (data) {
let result = data.match(new RegExp('{"x":' + skillBallDay + ',"y":(\\d+),[^}]*"marker"'));
if (result && result.length) {
$(img).parent().parent().find("td.skillval").html("(" + result[1] + ")");
setSrc(false, img, result[1], maxed, false, pid, k);
flag_exit = true;
}
});
}
}
if (flag_exit) {
return;
}
if (pid && trainingInfo[pid][k]) {
let extmp = $(img).parent().parent().find(".skill_exact2");
if (extmp.length > 0) {
extmp.remove();
}
let sum = 0;
if (trainingInfo[pid][k][skill]) {
sum = trainingInfo[pid][k][skill].stat.getSum();
}
$(img).parent().parent().append("
" + (flag ? str : "") + "