', {
'id': 'MagicTabLightbox',
'style': 'position:absolute;\x20top:0;\x20left:0;\x20width:100%;\x20height:100%;\x20background:rgba(0,0,0,.75);\x20color:white;'
});
bn['html']([
'
',
'
'
]['join']('\x20')), $('#sidepanel-WMEmagic')['append'](bn), $('#MagicEnableLayer')['click'](function () {
$('#layer-switcher-item_magic')['trigger']('click');
});
}
} else
$('#MagicTabLightbox')['remove']();
});
}, dJ = function () {
var bm = bo['loadOptions']();
for (var bn in bm) {
bw[bn] = bm[bn];
var dQ = document['getElementById'](bn);
dQ ? (dQ['checked'] = bm[bn], dQ['disabled'] = !0x1, bo['log']('Setting\x20options\x20for:\x20' + bn)) : bo['log']('Can\x27t\x20find\x20element:\x20' + bn);
}
bx = bo['loadOptions']('shortcuts');
};
window['addEventListener']('beforeunload', dR);
var dR = function () {
bo['log']('Saving\x20options'), bo['saveOptions'](bw);
var bm = {};
localStorage['keyboardShortcuts'] && (bm = JSON['parse'](localStorage['keyboardShortcuts'])), W['accelerators']['Groups']['magic']['members']['forEach'](function (bn) {
bx[bn['name']] = bm[bn['name']];
}), bo['saveOptions'](bx, 'shortcuts');
};
dE['prototype']['addMenuOption'] = function (bm) {
var bn;
if ('segments' === bm['section'])
bn = document['getElementById']('magic_menu_segments');
else if ('venues' === bm['section'])
bn = document['getElementById']('magic_menu_venues');
else if ('nodes' === bm['section'])
bn = document['getElementById']('magic_menu_nodes');
else if ('comments' === bm['section'])
bn = document['getElementById']('magic_menu_comments');
else {
if ('extras' !== bm['section'])
return void bo['log']('DUNNO\x20' + bm['section']);
bn = document['getElementById']('magic_menu_extras');
}
bn = document['getElementById']('magic_menu_' + bm['color']) || document['getElementById']('magic_menu_#000000'), bz[bm['id']] = bm;
var bs = f5['checkPluginEnabled'](bm['id']);
if (bm['devMode'] && (bm['title'] = bm['title'] + '\x20[DEV]', bs = !0x0), bs) {
if (bn && !document['getElementById']('magic_menu_' + bm['section'] + '_' + bm['id'])) {
(bC = document['createElement']('DIV'))['id'] = 'magic_menu_' + bm['section'] + '_' + bm['id'];
var bt = document['createElement']('INPUT');
bt['type'] = 'checkbox', bt['id'] = bt['name'] = bm['id'], bt['checked'] = bw[bm['id']];
var bu = document['createElement']('LABEL');
bu['id'] = bm['id'] + '_label', bu['htmlFor'] = bm['id'], bu['style']['fontWeight'] = 'normal', bu['style']['fontFamily'] = 'Open\x20Sans,Alef,helvetica,sans-serif', bm['devMode'] && (bu['style']['backgroundColor'] = '#ed503b73'), bu['innerText'] = f5['getLocale'](bm['id'], '_title')['default'] || bm['title'], bu['title'] = f5['getLocale'](bm['id'], '_text')['default'] || bm['text'] || f5['getLocale'](bm['id'], '_title')['default'] || bm['title'], bm['minZoom'] && (bu['title'] += '\x20(zoom\x20>=\x20' + bm['minZoom'] + ')');
var bx = document['createElement']('SPAN');
bx['id'] = bm['id'] + '_action', bx['style']['color'] = bm['color'], bx['style']['fontFamily'] = 'monospace', bx['style']['textShadow'] = '3px\x203px\x2010px\x20#333', bx['title'] = bm['actionDesc'] || '', bx['innerText'] = '\x20■■■\x20', bz[bm['id']]['actionFunc'] ? c7(bm['id'], '_fix_min_rank') ? (bx['style']['cursor'] = 'pointer', bx['title'] += '\x20(can\x20auto)') : (bx['style']['cursor'] = 'not-allowed', bx['title'] += '\x20(no\x20perms)') : bx['style']['cursor'] = 'default';
var e0 = document['createElement']('SPAN');
e0['id'] = bm['id'] + '_counter', e0['style']['cursor'] = 'crosshair', e0['title'] = 'select\x20all\x20items', e0['innerText'] = '0}', e0['addEventListener']('click', function () {
!function (bm, bn) {
var bo = [];
if ('segments' === bn)
for (var e7 in by['todo']['segments']) {
var bs = by['todo']['segments'][e7];
for (var bt in bs) {
(bu = bs[bt])['plugId'] === bm && bo['push'](bu['obj']);
}
}
else if ('venues' === bn)
for (var e7 in by['todo']['venues']) {
bs = by['todo']['venues'][e7];
for (var bt in bs) {
(bu = bs[bt])['plugId'] === bm && bo['push'](bu['obj']);
}
}
else if ('nodes' === bn)
for (var e7 in by['todo']['nodes']) {
bs = by['todo']['nodes'][e7];
for (var bt in bs) {
var bu;
(bu = bs[bt])['plugId'] === bm && bo['push'](bu['obj']);
}
}
W['selectionManager']['setSelectedModels'](bo);
}(bm['id'], bm['section']);
});
var bA = document['createElement']('SPAN');
bA['innerText'] = '\x20';
var bB = document['createElement']('SPAN');
if (bB['innerText'] = '\x20', bC['appendChild'](bt), bC['appendChild'](bA), bm['color'] && bm['loop'] && (bC['appendChild'](e0), bC['appendChild'](bB)), bC['appendChild'](bu), bm['color'] && bC['appendChild'](bx), 'string' == typeof bm['color'])
$('#magic_menu_' + bm['color']['replace']('#', '\x5c#'))['css']('display', 'block'), $('#magic_menu_' + bm['color']['replace']('#', '\x5c#') + '_header')['css']('display', 'block');
else {
let bn;
'extras' === bm['section'] && (bn = '000000'), $('#magic_menu_\x5c#' + bn)['css']('display', 'block'), $('#magic_menu_\x5c#' + bn + '_header')['css']('display', 'block');
}
bn['appendChild'](bC), void 0x0 === bw[bm['id']] ? !0x0 !== bm['default'] ? bw[bm['id']] = !0x1 : bw[bm['id']] = !0x0 : bw[bm['id']] = bw[bm['id']], bv[bm['id']] = bm['color'], dR(), bm['startFunc'] && bw[bm['id']] && bm['startFunc']();
}
} else {
var bC, bV = 'magic_menu_' + bm['section'] + '_' + bm['id'];
(bC = document['getElementById'](bV)) && bC['remove']();
}
}, dE['prototype']['addMagic'] = function (bm, bn) {
f5['updateUI'](bm, function () {
by['magicLayer']['addFeatures'](bn);
});
}, dE['prototype']['iamready'] = function () {
return null !== document['getElementById']('magic_menu');
}, dE['prototype']['color'] = function (bm) {
return bv[bm];
}, dE['prototype']['plugin'] = function (bm) {
return bz[bm];
};
var ep = function () {
var bm = W['model']['getTopCountry']()['attributes'];
return null != bm ? (by['topCountry'] = bm, bm) : (bm = by['topCountry'], {
'name': '_default',
'id': 0x29a
});
};
dE['prototype']['getLocale'] = function (bm, bn) {
if (void 0x0 === bn)
return {};
var bo = '_default', ev = 0x29a, bs = ep();
bs && (bo = bs['name']['toLowerCase'](), ev = bs['id']);
var bt = bo + '_' + ev;
let bv = I18n['locale'];
var bw = bm + ':' + bn, bx = bw + '#' + bv;
if (bu[bt]) {
if (bu[bt][bw])
return bu[bt][bw];
if (bu[bt][bx])
return bu[bt][bx];
}
return bu[bv] ? bu[bv][bw] ? bu[bv][bw] : bu[bv][bx] ? bu[bv][bx] : bu['en'][bw] ? bu['en'][bw] : bu['en'][bx] ? bu['en'][bx] : 'COMPUTER\x20SAYS\x20NO' : bu['en'][bw] ? bu['en'][bw] : bu['en'][bx] ? bu['en'][bx] : 'COMPUTER\x20SAYS\x20NO';
}, dE['prototype']['normalizedLevel'] = function () {
return W['app']['attributes']['user']['getRank']() + 0x1;
}, dE['prototype']['getConfig'] = function (bm, bn, bo, eE) {
if (void 0x0 === bn)
return {};
var bs = bm + ':' + bn, bu = '_default', bv = 0x29a, bw = ep(), bx = null;
if (W['model']['getTopState']() && (bx = W['model']['getTopState']()['attributes']['name'] ? W['model']['getTopState']()['attributes']['name']['toLowerCase']() : null), eE && 'segment' === eE['type']) {
var eK = eE['attributes']['primaryStreetID'];
if (eK < 0x0)
return {};
if (eK) {
var by = W['model']['streets']['getObjectById'](eK)['attributes'];
if (null == by)
return {};
var bz = by['cityID'], bA = W['model']['cities']['getObjectById'](bz), bB = W['model']['countries']['getObjectById'](bA['attributes']['countryID'])['attributes'], bC = W['model']['states']['getObjectById'](bA['attributes']['stateID'])['attributes'];
bC = bC && bC['name'] ? bC['name']['toLowerCase']() : null, bw === bB && bx === bC || (bw = bB, bx = bC);
}
}
bw && (bu = bw['name']['toLowerCase'](), bv = bw['id']);
var bV = bu + '_' + bv, c0 = {};
return bt[bV] && !0x0 !== bo ? bt[bV][bs + '|' + bx] && 'noState' !== bo ? c0 = bt[bV][bs + '|' + bx] : bt[bV][bs] ? c0 = bt[bV][bs] : 'noDefault' !== bo && 'noState' != bo && (c0 = bt['default'][bs]) : c0 = bt['default'][bs], c0 || {};
}, dE['prototype']['checkPluginEnabled'] = function (bm) {
var bn = f5['getConfig'](bm, '_plugin')['enabled'];
if (f5['getConfig'](bm, '_min_rank')['enabled'] && null != f5['getConfig'](bm, '_min_rank')['default'] && '' != f5['getConfig'](bm, '_min_rank')['default'] && 0x0 != parseInt(f5['getConfig'](bm, '_min_rank')['default'])) {
if (bn = parseInt(f5['getConfig'](bm, '_min_rank')['default']) <= f5['normalizedLevel'](), f5['getConfig'](bm, '_approved_users')['enabled'] && null != f5['getConfig'](bm, '_approved_users')['default']) {
let bo = f5['getConfig'](bm, '_approved_users')['default']['split'](',');
bo['forEach']((bm, bn, bo) => bo[bn] = bm['trim']()), bo['includes'](W['loginManager']['user']['userName']['toLowerCase']()) && (bn = !0x0);
}
} else if (f5['getConfig'](bm, '_approved_users')['enabled'] && null != f5['getConfig'](bm, '_approved_users')['default']) {
let bo = f5['getConfig'](bm, '_approved_users')['default']['split'](',');
bo['forEach']((bm, bn, bo) => bo[bn] = bm['trim']()), bn = !!bo['includes'](W['loginManager']['user']['userName']['toLowerCase']());
}
return bn;
}, dE['prototype']['controlAsync'] = function (bm) {
void 0x0 !== by['async'][bm] && (clearTimeout(by['async'][bm]), bo['log']('Aborting\x20Async\x20task...\x20' + bm), delete by['async'][bm]);
}, dE['prototype']['updateUI'] = function (bm, bn) {
f5['controlAsync'](bm), 'function' == typeof bn ? by['async'][bm] = setTimeout(function () {
bo['log']('Executing\x20Async\x20task...\x20' + bm), bn(), delete by['async'][bm];
}, 0x64) : bo['log']('NO\x20FUNCTION???');
}, dE['prototype']['clearLayer'] = function () {
by['magicLayer']['removeAllFeatures']();
}, bm['WMEmagic'] = dE;
}(window);
var f5 = f5 || new WMEmagic();
},
function (f6, f7, f8) {
'use strict';
var f9 = f9 || void 0x0, fa = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === f9 && (f9 = new WMEmagic()), f9['iamready']() ? fd() : setTimeout(fa, 0x3e8)) : setTimeout(fa, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var f6 = document['createElement']('script');
f6['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), f6['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](f6);
}
setTimeout(fa, 0x3e8);
}();
let fc = 'seg_fwycity', fd = function () {
f9['addMenuOption']({
'id': fc,
'title': 'FW\x20with\x20city\x20name',
'color': '#377EC6',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': fe,
'postLoop': null
});
};
var fe = function (f6) {
let f7 = {}, f8 = [];
if (0x3 === f6['attributes']['roadType']) {
var fa = f6['getAddress']();
if (fa && fa['city'] && '' != fa['city']['attributes']['name'])
f8['push'](f9['utils']['highlightObject'](f6, f9['color'](fc))), f7 = {
'id': f6['attributes']['id'],
'type': f6['type'],
'plugId': fc,
'obj': f6
};
}
return f8['length'] > 0x0 && setTimeout(f9['addMagic'](fc + '_' + attr['id'], f8), 0x64), f7;
};
},
function (fj, fk, fl) {
'use strict';
var fm = fm || void 0x0, fn = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === fm && (fm = new WMEmagic()), fm['iamready']() ? fI() : setTimeout(fn, 0x3e8)) : setTimeout(fn, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var fj = document['createElement']('script');
fj['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), fj['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](fj);
}
setTimeout(fn, 0x3e8);
}();
let fp = 'seg_onsegcity';
var fq = {}, fs = function (fj) {
var fk = fj['attributes']['primaryStreetID'];
if (null !== fk && -0x64 !== fk) {
var fl = W['model']['streets']['getObjectById'](fk);
if (!fl)
return;
var fm = fl['cityID'];
if (fm < 0x0)
return;
if (!(fp = W['model']['cities']['getObjectById'](fm)))
return;
var fn = fp['attributes']['name'];
if (null == fn || '' === fn)
return;
if (void 0x0 === fq[fm]) {
var fp = W['model']['cities']['getObjectById'](fm);
fq[fm] = {}, fq[fm]['cnt'] = 0x1, fq[fm]['seg'] = fj, fq[fm]['street'] = fl['attributes'], fq[fm]['city'] = fp['attributes'];
} else
fq[fm]['cnt'] += 0x1;
}
}, ft = function () {
fq = {};
}, fu = function () {
let fj = [], fk = [];
for (var fl in fq)
if (fq[fl]['cnt'] < 0x2) {
var fn = fq[fl];
if (!fm['utils']['isOnScreen'](fn['seg']['getFromNode']()) && !fm['utils']['isOnScreen'](fn['seg']['getToNode']()))
continue;
fm['utils']['log']('Found\x20one\x20segment\x20city\x20name:\x20' + fn['city']['name']), fj['push'](fm['utils']['highlightObject'](fn['seg'], '#FF9B2B'));
var fs = fn['seg']['attributes'], ft = fs['id'], fu = fn['seg']['type'];
fk['push']({
'id': ft,
'type': fu,
'plugId': fp,
'obj': fn['seg']
});
}
return fj['length'] > 0x0 && setTimeout(fm['addMagic'](fp + '_' + fs['id'], fj), 0x64), fk;
};
let fI = function () {
fm['addMenuOption']({
'id': fp,
'title': 'City\x20with\x20only\x201\x20segment',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': ft,
'loopFunc': fs,
'postLoop': fu
});
};
},
function (fJ, fK, fL) {
'use strict';
if (void 0x0 === fM)
var fM = !0x0;
var fN = fM, fO = fO || void 0x0, fP = function () {
return void 0x0 === window['require'] ? (setTimeout(fP, 0x3e8), void (fN && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(fP, 0x3e8), void (fN && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === fO && (fN && console['log']('INIT\x20MAGIC'), fO = new WMEmagic()), fO['iamready']() ? void fS() : (fN && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(fP, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var fJ = document['createElement']('script');
fJ['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), fJ['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](fJ), fN && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
fN && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(fP, 0x3e8);
}();
let fR = 'seg_simplify', fS = function () {
fO['addMenuOption']({
'id': fR,
'title': 'Simplifiable\x20Segments',
'color': '#377EC6',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'minZoom': 0xf,
'preLoop': null,
'loopFunc': fT,
'postLoop': null
});
};
var fT = function (fJ) {
var fK = fJ['attributes'];
let fL = {}, fM = [];
if ('segment' == fJ['type'] && fJ['getOLGeometry']()['components']['length'] > 0x2 && null == fK['junctionID'] && 'Delete' != fJ['state'] && fK['updatedBy'] && 0x0 === fK['virtualNodeIDs']['length']) {
var fN = Math['abs'](fJ['getOLGeometry']()['components'][0x0]['x'] - fJ['getOLGeometry']()['components'][0x1]['x']), fP = Math['abs'](fJ['getOLGeometry']()['components'][0x0]['y'] - fJ['getOLGeometry']()['components'][0x1]['y']), fS = Math['sqrt'](fN * fN + fP * fP), fT = Math['abs'](fJ['getOLGeometry']()['components'][fJ['getOLGeometry']()['components']['length'] - 0x2]['x'] - fJ['getOLGeometry']()['components'][fJ['getOLGeometry']()['components']['length'] - 0x1]['x']), g2 = Math['abs'](fJ['getOLGeometry']()['components'][fJ['getOLGeometry']()['components']['length'] - 0x2]['y'] - fJ['getOLGeometry']()['components'][fJ['getOLGeometry']()['components']['length'] - 0x1]['y']), g3 = Math['sqrt'](fT * fT + g2 * g2), g4 = null, g5 = null;
fS < 2.5 && (g4 = fJ['getOLGeometry']()['components'][0x1]['clone']()), g3 < 2.5 && (g5 = fJ['getOLGeometry']()['components'][fJ['getOLGeometry']()['components']['length'] - 0x2]['clone']()), null != g4 && null != g5 && g4['x'] == g5['x'] && g4['y'] == g5['y'] && (g5 = null);
var g6 = fJ['getOLGeometry']()['simplify'](0.8);
if (fJ['getOLGeometry']()['components']['length'] != g6['components']['length'] && (null != g4 && (g4['x'] == g6['components'][0x1]['x'] && g4['y'] == g6['components'][0x1]['y'] || g6['addPoint'](g4, 0x1)), null != g5 && (g5['x'] == g6['components'][g6['components']['length'] - 0x2]['x'] && g5['y'] == g6['components'][g6['components']['length'] - 0x2]['y'] || g6['addPoint'](g5, g6['components']['length'] - 0x1))), fJ['getOLGeometry']()['components']['length'] - g6['components']['length'])
fO['utils']['log']('Found\x20simplifiable\x20segment\x20with\x20ID:\x20' + fK['id']), fM['push'](fO['utils']['highlightObject'](fJ, fO['color'](fR))), fL = {
'id': fK['id'],
'type': fJ['type'],
'plugId': fR,
'obj': fJ
};
}
return fM['length'] > 0x0 && setTimeout(fO['addMagic'](fR + '_' + fK['id'], fM), 0x64), fL;
};
},
function (g7, g8, g9) {
'use strict';
var ga = ga || void 0x0, gb = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === ga && (ga = new WMEmagic()), ga['iamready']() ? gd() : setTimeout(gb, 0x3e8)) : setTimeout(gb, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var g7 = document['createElement']('script');
g7['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), g7['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](g7);
}
setTimeout(gb, 0x3e8);
}();
let gd = function () {
ga['addMenuOption']({
'id': 'seg_unknown',
'title': 'Unknown\x20Direction\x20Segments',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': ge,
'postLoop': null,
'actionFunc': gf,
'actionDesc': 'Convert\x20unknown\x20direction\x20to\x20both\x20directions'
});
};
var ge = function (g7, g8) {
var g9 = g7['attributes'];
g9['revDirection'], g9['fwdDirection'];
if (!ga['utils']['isDrivable'](g7))
return;
let gb = {}, gd = [];
if (gi(g7)) {
if (!0x0 === g8) {
var ge = {};
return ge['revDirection'] = ge['fwdDirection'] = !0x0, gh(g7, ge), g7;
}
ga['utils']['log']('Found\x20unknown\x20direction\x20segment\x20with\x20ID:\x20' + g9['id']), gd['push'](ga['utils']['highlightObject'](g7, '#EC3E40')), gb = {
'id': g9['id'],
'type': g7['type'],
'plugId': 'seg_unknown',
'obj': g7
};
}
return gd['length'] > 0x0 && setTimeout(ga['addMagic']('seg_unknown_' + g9['id'], gd), 0x64), gb;
}, gf = function () {
var g7 = [];
ga['utils']['loopSegments']([function (g8) {
g7['push'](ge(g8, !0x0));
}]), g7['forEach'](function (g7) {
if (void 0x0 !== g7) {
var g8 = g7['attributes'];
void 0x0 !== g8 && (gg(g8['toNodeID'], g8['id']), gg(g8['fromNodeID'], g8['id']));
}
});
}, gg = function (g7, g8) {
var g9 = window['require']('Waze/Model/Graph/Actions/SetTurn'), gb = W['model']['nodes']['get'](g7);
ga['utils']['canEdit'](gb) && gb['attributes']['segIDs']['forEach'](function (g7) {
gb['attributes']['segIDs']['forEach'](function (ga) {
if (g7 != ga && (g7 === g8 || ga === g8)) {
var gd = W['model']['segments']['getObjectById'](g7), ge = W['model']['segments']['getObjectById'](ga), gf = W['model']['getTurnGraph']();
if (gd['isDrivable']() && ge['isDrivable']()) {
var gg = gf['getTurnThroughNode'](gb, gd, ge);
W['model']['actionManager']['add'](new g9(gf, gg['withTurnData'](gg['getTurnData']()['withToggledState'](!0x0))));
}
}
});
});
}, gh = function (g7, g8) {
var g9 = window['require']('Waze/Action/UpdateObject'), ga = window['require']('Waze/Action/MultiAction'), gb = [];
gb['push'](new g9(g7, g8)), W['model']['actionManager']['add'](new ga(gb));
}, gi = function (g7) {
var g8 = g7['attributes'], g9 = g8['revDirection'], ga = g8['fwdDirection'];
if (!0x1 === g9 && !0x1 === ga)
return !0x0;
};
},
function (gM, gN, gO) {
'use strict';
var gP = gP || void 0x0, gQ = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === gP && (gP = new WMEmagic()), gP['iamready']() ? gT() : setTimeout(gQ, 0x3e8)) : setTimeout(gQ, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var gM = document['createElement']('script');
gM['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), gM['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](gM);
}
setTimeout(gQ, 0x3e8);
}();
let gS = 'seg_unnamed', gT = function () {
gP['addMenuOption']({
'id': gS,
'title': 'Unnamed\x20Segments',
'color': '#377EC6',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': gU,
'postLoop': null,
'actionFunc': gV,
'devMode': !0x1
});
};
var gU = function (gM, gN) {
var gO = gM['attributes'];
let gQ = {}, gT = [];
if (null === gO['primaryStreetID'])
if (gN) {
var gU = void 0x0;
if (0x0 === (h4 = W['model']['cities']['getByAttributes']({
'isEmpty': !0x0,
'countryID': W['model']['getTopCountry']()['id'],
'stateID': W['model']['getTopState']()['id']
}))['length']) {
var gV = W['model']['states']['objects'][W['model']['getTopState']()['id']], h3 = W['model']['countries']['objects'][W['model']['getTopCountry']()['id']], h4 = new (window['require']('Waze/Action/AddOrGetCity'))(gV, h3, void 0x0, !0x0);
W['model']['actionManager']['add'](h4), gU = h4['city']['getID']();
} else
gU = h4[0x0]['getID']();
var h5 = void 0x0;
if (0x0 === (h7 = W['model']['streets']['getByAttributes']({
'isEmpty': !0x0,
'cityID': gU
}))['length']) {
var h6 = W['model']['cities']['objects'][gU], h7 = new (window['require']('Waze/Action/AddOrGetStreet'))(void 0x0, h6, !0x0);
W['model']['actionManager']['add'](h7), h5 = h7['street']['getID']();
} else
h5 = h7[0x0]['getID']();
var h8 = {};
h8['primaryStreetID'] = h5, gP['utils']['setAttributes'](gM, h8);
} else {
gP['utils']['log']('Found\x20unnamed\x20segment\x20with\x20ID:\x20' + gO['id']), gT['push'](gP['utils']['highlightObject'](gM, gP['color'](gS))), gQ = {
'id': gO['id'],
'type': gM['type'],
'plugId': gS,
'obj': gM
};
}
return gT['length'] > 0x0 && setTimeout(gP['addMagic'](gS + '_' + gO['id'], gT), 0x64), gQ;
}, gV = function () {
gP['utils']['loopSegments']([function (gM) {
gU(gM, !0x0);
}]);
};
},
function (ha, hb, hc) {
'use strict';
var hd = hd || void 0x0, hf = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === hd && (hd = new WMEmagic()), hd['iamready']() ? hh() : setTimeout(hf, 0x3e8)) : setTimeout(hf, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var ha = document['createElement']('script');
ha['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), ha['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](ha);
}
setTimeout(hf, 0x3e8);
}();
let hh = function () {
hd['addMenuOption']({
'id': 'ven_unnamed',
'title': 'Unnamed\x20Places\x20(landmarks)',
'text': 'it\x27s\x20ignoring\x20residencial\x20places',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': hi,
'postLoop': null
});
};
var hi = function (ha) {
let hb = ha['attributes'];
var hc = hb['categories'];
if (hc['includes']('RESIDENCE_HOME'))
return;
if (hc['includes']('JUNCTION_INTERCHANGE'))
return;
let hf = {}, hh = [];
'' === hb['name'] && (hd['utils']['log']('Found\x20unnamed\x20venue\x20with\x20ID:\x20' + hb['id']), hh['push'](hd['utils']['highlightObject'](ha, '#FF9B2B')), hf = {
'id': hb['id'],
'type': ha['type'],
'plugId': 'ven_unnamed',
'obj': ha
});
return hh['length'] > 0x0 && setTimeout(hd['addMagic']('ven_unnamed_' + hb['id'], hh), 0x64), hf;
};
},
function (ho, hp, hq) {
'use strict';
var hr = hr || void 0x0, hs = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === hr && (hr = new WMEmagic()), hr['iamready']() ? hw() : setTimeout(hs, 0x3e8)) : setTimeout(hs, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var ho = document['createElement']('script');
ho['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), ho['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](ho);
}
setTimeout(hs, 0x3e8);
}();
var hu = [
'#ff0000',
'#6666ff',
'#0099ff',
'#00cc66',
'#6600ff',
'#ff00ff',
'#ff7733',
'#669900',
'#004d99',
'#5c00e6'
], hv = 0x0;
let hw = function () {
hr['addMenuOption']({
'id': 'ven_dupgpid',
'title': 'Duplicated\x20Google\x20Places',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'venues',
'preLoop': hz,
'loopFunc': hy,
'postLoop': hA,
'actionFunc': hB
}), hr['utils']['loopVenues']([hy]);
};
var hx = {}, hy = function (ho) {
let hp = ho['attributes'];
if (!(W['loginManager']['user']['rank'] < 0x2))
for (var hq = hp['externalProviderIDs'], hr = 0x0; hr < hq['length']; hr++) {
var hs = hq[hr]['id'];
void 0x0 === hx[hs] ? (hx[hs] = {}, hx[hs]['cnt'] = 0x1, hx[hs]['venues'] = [], hx[hs]['venues']['push'](ho)) : hx[hs]['venues']['includes'](ho) || (hx[hs]['cnt'] += 0x1, hx[hs]['venues']['push'](ho));
}
}, hz = function () {
hx = {}, hv = 0x0;
}, hA = function () {
let ho = [], hp = [];
for (var hq in hx)
if (hx[hq]['cnt'] > 0x1) {
var hs = hu[hv];
hv++;
var hw = hx[hq];
hr['utils']['log']('Found\x20one\x20Google\x20Place\x20with\x20many\x20venues\x20(' + hw['cnt'] + '):\x20' + hq + hs), hw['venues']['forEach'](function (hq, hu, hv) {
var hw = hq['attributes'];
ho['push'](hr['utils']['highlightObject'](hq, '#FF9B2B', hs));
var hx = hw['id'], hy = hq['type'];
hp['push']({
'id': hx,
'type': hy,
'plugId': 'ven_dupgpid',
'obj': hq
});
});
}
return ho['length'] > 0x0 && setTimeout(hr['addMagic']('ven_dupgpid_postLoop', ho), 0x64), hp;
}, hB = function () {
var ho = [];
for (var hp in hx) {
if (hx[hp]['cnt'] > 0x1)
hx[hp]['venues']['forEach'](function (hp, hq, hr) {
ho['push'](hp);
});
}
W['selectionManager']['setSelectedModels'](ho);
};
},
function (hX, hY, hZ) {
'use strict';
var i0 = i0 || void 0x0, i1 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === i0 && (i0 = new WMEmagic()), i0['iamready']() ? i4() : setTimeout(i1, 0x3e8)) : setTimeout(i1, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var hX = document['createElement']('script');
hX['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), hX['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](hX);
}
setTimeout(i1, 0x3e8);
}();
let i3 = 'seg_nospeed', i4 = function () {
i0['addMenuOption']({
'id': i3,
'title': 'No\x20speed',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'howto': 'Most\x20drivable\x20roads\x20should\x20have\x20a\x20speed\x20limit,\x20double\x20check\x20with\x20your\x20CM',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': i5,
'postLoop': null,
'actionFunc': i6
});
};
var i5 = function (hX, hY) {
if (!i0['utils']['isDrivable'](hX))
return;
var hZ = hX['attributes'];
if (0xf === hZ['roadType'])
return;
if (null !== hZ['junctionID'] && void 0x0 !== hZ['junctionID'] && !0x1 === i0['getConfig'](i3, 'roundabout_roads', null, hX)['enabled'])
return;
if (0x1 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'street_roads', null, hX)['enabled'])
return;
if (0x11 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'private_roads', null, hX)['enabled'])
return;
if (0x14 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'parking_roads', null, hX)['enabled'])
return;
if (0x8 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'off_roads', null, hX)['enabled'])
return;
if (0x7 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'minor_roads', null, hX)['enabled'])
return;
if (0x6 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'major_roads', null, hX)['enabled'])
return;
if (0x2 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'primary_roads', null, hX)['enabled'])
return;
if (0x3 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'freeway_roads', null, hX)['enabled'])
return;
if (0x4 === hZ['roadType'] && !0x1 === i0['getConfig'](i3, 'ramp_roads', null, hX)['enabled'])
return;
var i1 = hZ['revMaxSpeed'], i4 = hZ['fwdMaxSpeed'], i5 = hZ['revDirection'], i6 = hZ['fwdDirection'];
let ih = {}, ii = [];
if (!0x0 === i6 && null === i4 || !0x0 === i5 && null === i1)
if (!0x0 === hY) {
var ij = !0x1, ik = {}, il = i7(hX);
switch (hZ['roadType']) {
case 0x1:
ij = il ? i0['getConfig'](i3, 'streetCity_roads', null, hX)['default'] : i0['getConfig'](i3, 'street_roads', null, hX)['default'];
break;
case 0x2:
ij = il ? i0['getConfig'](i3, 'primaryCity_roads', null, hX)['default'] : i0['getConfig'](i3, 'primary_roads', null, hX)['default'];
break;
case 0x3:
ij = i0['getConfig'](i3, 'freeway_roads', null, hX)['default'];
break;
case 0x4:
ij = i0['getConfig'](i3, 'ramp_roads', null, hX)['default'];
break;
case 0x6:
ij = il ? i0['getConfig'](i3, 'majorCity_roads', null, hX)['default'] : i0['getConfig'](i3, 'major_roads', null, hX)['default'];
break;
case 0x7:
ij = il ? i0['getConfig'](i3, 'minorCity_roads', null, hX)['default'] : i0['getConfig'](i3, 'minor_roads', null, hX)['default'];
break;
case 0x8:
ij = i0['getConfig'](i3, 'off_roads', null, hX)['default'];
break;
case 0x11:
ij = i0['getConfig'](i3, 'private_roads', null, hX)['default'];
break;
case 0x14:
ij = i0['getConfig'](i3, 'parking_roads', null, hX)['default'];
}
if (ij && ij > 0x0) {
ik['revMaxSpeed'] = ik['fwdMaxSpeed'] = ij;
var im = !0x1;
i1 > 0x0 || !0x1 === i5 ? delete ik['revMaxSpeed'] : ik['revMaxSpeed'] > 0x0 && (im = !0x0), i4 > 0x0 || !0x1 === i6 ? delete ik['fwdMaxSpeed'] : ik['fwdMaxSpeed'] > 0x0 && (im = !0x0), im && i0['utils']['setAttributes'](hX, ik);
}
} else {
i0['utils']['log']('Found\x20segment\x20with\x20no\x20speed\x20limits\x20with\x20ID:\x20' + hZ['id']), ii['push'](i0['utils']['highlightObject'](hX, i0['color'](i3))), ih = {
'id': hZ['id'],
'type': hX['type'],
'plugId': i3,
'obj': hX
};
}
return ii['length'] > 0x0 && setTimeout(i0['addMagic'](i3 + '_' + hZ['id'], ii), 0x64), ih;
}, i6 = function () {
i0['utils']['loopSegments']([function (hX) {
i5(hX, !0x0);
}]);
}, i7 = function (hX) {
var hY = null, hZ = W['model']['streets']['getObjectById'](hX['attributes']['primaryStreetID']);
if (!hZ)
return null;
var i0 = hX['model']['cities']['getObjectById'](hZ['cityID']);
return i0 && (hY = i0['attributes']['name']), hY;
};
},
function (it, iu, iv) {
'use strict';
var iw = iw || void 0x0, ix = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === iw && (iw = new WMEmagic()), iw['iamready']() ? iA() : setTimeout(ix, 0x3e8)) : setTimeout(ix, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var it = document['createElement']('script');
it['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), it['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](it);
}
setTimeout(ix, 0x3e8);
}();
let iz = 'nod_allred', iA = function () {
iw['addMenuOption']({
'id': iz,
'title': 'All\x20red\x20arrows',
'color': '#EC3E40',
'loop': !0x0,
'section': 'nodes',
'preLoop': null,
'loopFunc': iB,
'postLoop': null,
'actionFunc': iC,
'actionDesc': 'Convert\x20allred\x20arrow\x20nodes\x20to\x20greens',
'minZoom': 0x11,
'maxObjects': 0x3e8
});
};
var iB = function (it) {
let iu = it['attributes'], iv = {}, ix = [];
if (!0x0 === it['areAllConnectionsDisabled']()) {
var iA = 0x0;
if (iu['segIDs']['forEach'](function (it) {
var iu = W['model']['segments']['getObjectById'](it);
iw['utils']['isDrivable'](iu) && iA++;
}), iA > 0x1)
iw['utils']['log']('Found\x20all\x20red\x20node\x20with\x20ID:\x20' + iu['id']), ix['push'](iw['utils']['highlightObject'](it, iw['color'](iz))), iv = {
'id': iu['id'],
'type': it['type'],
'plugId': iz,
'obj': it
};
}
return ix['length'] > 0x0 && setTimeout(iw['addMagic'](iz + '_' + iu['id'], ix), 0x64), iv;
}, iC = function () {
var it = window['require']('Waze/Model/Graph/Actions/SetTurn');
for (var iu in W['model']['nodes']['objects']) {
var iv = W['model']['nodes']['objects'][iu];
iw['utils']['canEdit'](iv) && !0x0 === iv['areAllConnectionsDisabled']() && iv['attributes']['segIDs']['forEach'](function (iu) {
iv['attributes']['segIDs']['forEach'](function (iw) {
if (iu != iw) {
var ix = W['model']['segments']['getObjectById'](iu), iz = W['model']['segments']['getObjectById'](iw), iA = W['model']['getTurnGraph']();
if (iv['isTurnAllowedBySegDirections'](ix, iz) && !ix['isTurnAllowed'](iz, iv) && ix['isDrivable']() && iz['isDrivable']()) {
var iB = iA['getTurnThroughNode'](iv, ix, iz);
W['model']['actionManager']['add'](new it(iA, iB['withTurnData'](iB['getTurnData']()['withToggledState'](!0x0))));
}
}
});
});
}
};
},
function (iT, iU, iV) {
'use strict';
var iW = iW || void 0x0, iX = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === iW && (iW = new WMEmagic()), iW['iamready']() ? iZ() : setTimeout(iX, 0x3e8)) : setTimeout(iX, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var iT = document['createElement']('script');
iT['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), iT['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](iT);
}
setTimeout(iX, 0x3e8);
}();
let iZ = function () {
iW['addMenuOption']({
'id': 'seg_altname',
'title': 'Show\x20alternative\x20names',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'text': 'Some\x20road\x20have\x20a\x20lot\x20of\x20names,\x20this\x20will\x20show\x20all\x20the\x20secondary\x20names\x20on\x20the\x20editor',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': j0,
'postLoop': null
});
};
var j0 = function (iT) {
var iU = iT['attributes'];
let iV = {}, iX = [];
if (iU['streetIDs']['length'] > 0x0) {
var iZ = null;
iU['streetIDs']['forEach'](function (iT) {
var iU = W['model']['streets']['getObjectById'](iT);
null === iZ ? iZ = iU['name'] : iZ += '\x20:\x20' + iU['name'];
}), iW['utils']['log']('Found\x20alternative\x20name\x20segment\x20with\x20ID:\x20' + iU['id']), iX['push'](iW['utils']['highlightObject'](iT, '#FFFFFF', 'black', iZ)), iV = {
'id': iU['id'],
'type': iT['type'],
'plugId': 'seg_altname',
'obj': iT
};
}
return iX['length'] > 0x0 && setTimeout(iW['addMagic']('seg_altname_' + iU['id'], iX), 0x64), iV;
};
},
function (j8, j9, ja) {
'use strict';
var jb = jb || void 0x0, jc = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === jb && (jb = new WMEmagic()), jb['iamready']() ? jf() : setTimeout(jc, 0x3e8)) : setTimeout(jc, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var j8 = document['createElement']('script');
j8['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), j8['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](j8);
}
setTimeout(jc, 0x3e8);
}();
let je = 'seg_overlap', jf = function () {
jb['addMenuOption']({
'id': je,
'title': 'Overlap\x20Segments',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': jg,
'postLoop': null
});
};
var jg = function (j8) {
var j9 = j8['attributes'];
let ja = {};
var jc = j8['getToNode'](), jf = j8['getFromNode'](), jg = !0x1;
jc && jc['attributes']['segIDs']['forEach'](function (ja) {
var jb = W['model']['segments']['getObjectById'](ja);
if (jb) {
var je = jb['attributes'];
if (j9['id'] !== je['id']) {
var jf = jc['getAngleToSegment'](j8), jr = jc['getAngleToSegment'](jb), js = Math['abs'](jf - jr);
0xb4 < js && (js = 0x168 - js), js < 0x2 && (jg = !0x0);
}
}
}), jf && jf['attributes']['segIDs']['forEach'](function (ja) {
var jb = W['model']['segments']['getObjectById'](ja);
if (jb) {
var jc = jb['attributes'];
if (j9['id'] !== jc['id']) {
var je = jf['getAngleToSegment'](j8), jx = jf['getAngleToSegment'](jb), jy = Math['abs'](je - jx);
0xb4 < jy && (jy = 0x168 - jy), jy < 0x2 && (jg = !0x0);
}
}
});
let jz = [];
!0x0 === jg && (jb['utils']['log']('Found\x20overlap\x20segment\x20with\x20ID:\x20' + j9['id']), jz['push'](jb['utils']['highlightObject'](j8, jb['color'](je))), ja = {
'id': j9['id'],
'type': j8['type'],
'plugId': je,
'obj': j8
});
return jz['length'] > 0x0 && setTimeout(jb['addMagic'](je + '_' + j9['id'], jz), 0x64), ja;
};
},
function (jA, jB, jC) {
'use strict';
var jD = jD || void 0x0, jE = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === jD && (jD = new WMEmagic()), jD['iamready']() ? jH() : setTimeout(jE, 0x3e8)) : setTimeout(jE, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var jA = document['createElement']('script');
jA['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), jA['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](jA);
}
setTimeout(jE, 0x3e8);
}();
let jG = 'seg_small', jH = function () {
jD['addMenuOption']({
'id': jG,
'title': 'Small\x20(less\x20than\x205m)\x20Segments',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': jI,
'postLoop': null
});
};
var jI = function (jA) {
var jB = jA['attributes'];
let jC = {};
if (!jD['utils']['isDrivable'](jA))
return;
let jE = [];
jB['length'] < 0x6 && null === jB['junctionID'] && (jD['utils']['log']('Found\x20small\x20segment\x20with\x20ID:\x20' + jB['id']), jE['push'](jD['utils']['highlightObject'](jA, jD['color'](jG))), jC = {
'id': jB['id'],
'type': jA['type'],
'plugId': jG,
'obj': jA
});
return jE['length'] > 0x0 && setTimeout(jD['addMagic'](jG + '_' + jB['id'], jE), 0x64), jC;
};
},
function (jN, jO, jP) {
'use strict';
if (void 0x0 === jQ)
var jQ = !0x0;
var jR = jQ, jS = jS || void 0x0, jT = function () {
return void 0x0 === window['require'] ? (setTimeout(jT, 0x3e8), void (jR && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(jT, 0x3e8), void (jR && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === jS && (jR && console['log']('INIT\x20MAGIC'), jS = new WMEmagic()), jS['iamready']() ? void jW() : (jR && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(jT, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var jN = document['createElement']('script');
jN['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), jN['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](jN), jR && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
jR && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(jT, 0x3e8);
}();
var jV = [
'dbcm',
'carloslaso',
'asterix06',
'bellhouse',
'justins83',
'hugo_moreira',
'goncalovm76',
'j0n4s13'
], jW = function () {
jV['includes'](W['loginManager']['user']['attributes']['userName']['toLowerCase']()) && jS['addMenuOption']({
'id': 'ext_godmode',
'title': 'G0D\x20m0d3',
'color': !0x1,
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': jY,
'stopFunc': jZ,
'default': !0x1
});
}, jX = function () {
W['loginManager']['user']['mteManager'] = !0x0, W['loginManager']['user']['isStaff'] = !0x0, W['loginManager']['user']['debugUser'] = !0x0, W['loginManager']['user']['rank'] = 0x6, W['loginManager']['user']['globalEditor'] = !0x0, W['loginManager']['user']['adOperator'] = !0x0, W['loginManager']['user']['totalEdits'] = 0x18d5d42aa, W['loginManager']['user']['totalPoints'] = 0x18d5d42aa, W['loginManager']['user']['editableMiles'] = 0x29a, W['loginManager']['user']['editableCountryIDs'] = [];
for (var jN = 0x0; jN < 0xec; jN++)
W['loginManager']['user']['editableCountryIDs']['push'](jN);
for (var jO in W['model']['segments']['objects']) {
W['model']['segments']['getObjectById'](jO)['attributes']['permissions'] = -0x1;
}
for (var jO in W['model']['venues']['objects']) {
W['model']['venues']['getObjectById'](jO)['attributes']['permissions'] = -0x1;
}
for (var jO in W['model']['nodes']['objects']) {
W['model']['nodes']['getObjectById'](jO)['attributes']['permissions'] = -0x1;
}
for (var jO in W['model']['mapUpdateRequests']['objects']) {
W['model']['mapUpdateRequests']['getObjectById'](jO)['attributes']['permissions'] = -0x1;
}
}, jY = function () {
W['map']['events']['register']('zoomend', null, jX), W['map']['events']['register']('changelayer', null, jX), W['map']['events']['register']('moveend', null, jX), W['model']['events']['register']('mergeend', null, jX);
}, jZ = function () {
W['map']['events']['unregister']('zoomend', null, jX), W['map']['events']['unregister']('changelayer', null, jX), W['map']['events']['unregister']('moveend', null, jX), W['model']['events']['unregister']('mergeend', null, jX);
};
},
function (k5, k6, k7) {
'use strict';
var k8 = k8 || void 0x0, k9 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === k8 && (k8 = new WMEmagic()), k8['iamready']() ? kc() : setTimeout(k9, 0x3e8)) : setTimeout(k9, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var k5 = document['createElement']('script');
k5['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), k5['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](k5);
}
setTimeout(k9, 0x3e8);
}();
let kb = 'seg_nowayin', kc = function () {
k8['addMenuOption']({
'id': kb,
'title': 'no\x20way\x20IN',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0x11,
'maxObjects': 0x3e8,
'preLoop': kq,
'loopFunc': ks,
'postLoop': null,
'actionFunc': kd,
'actionDesc': 'Convert\x20all\x20way\x20in\x20arrows\x20to\x20greens'
});
};
var kd = function () {
k8['utils']['loopSegments']([function (k5) {
ks(k5, !0x0);
}]);
}, ke = function (k5, k6) {
var k7 = window['require']('Waze/Model/Graph/Actions/SetTurn'), k9 = k6['attributes']['id'];
k8['utils']['canEdit'](k5) && k5['attributes']['segIDs']['forEach'](function (k8) {
if (k9 != k8) {
var kb = W['model']['segments']['getObjectById'](k8), kc = W['model']['getTurnGraph']();
if (k5['isTurnAllowedBySegDirections'](kb, k6) && !kb['isTurnAllowed'](k6, k5) && k6['isDrivable']() && kb['isDrivable']()) {
var kd = kc['getTurnThroughNode'](k5, kb, k6);
W['model']['actionManager']['add'](new k7(kc, kd['withTurnData'](kd['getTurnData']()['withToggledState'](!0x0))));
}
}
});
};
let ko = {}, kp = [];
var kq = function () {
ko = {}, kp = [];
}, kr = function (k5) {
let k6 = k5['attributes'];
k8['utils']['log']('Found\x20no\x20way\x20in\x20segment\x20with\x20ID:\x20' + k6['id']), kp['push'](k8['utils']['highlightObject'](k5, k8['color'](kb)));
var k7 = k6['id'], k9 = k5['type'];
ko = {
'id': k7,
'type': k9,
'plugId': kb,
'obj': k5
}, kp['length'] > 0x0 && setTimeout(k8['addMagic'](kb + '_' + k6['id'], kp), 0x64);
}, ks = function (k5, k6) {
var k7 = k5['attributes'];
kq();
var k9 = k8['utils']['getDirection'](k5);
if (k8['utils']['isDrivable'](k5)) {
if (0x1 === k9 && 0x0 === kt(k5)['length'] && k8['utils']['isOnScreen'](k5['getFromNode']()) && 0x14 !== k7['roadType'] && k5['getConnectedSegmentsByDirection']('from')['length'] > 0x0)
if (k6) {
if (!k7['revDirection']) {
var kb = { 'revDirection': !0x0 };
k8['utils']['setAttributes'](k5, kb);
}
ke(k5['getFromNode'](), k5);
} else
kp['push'](new OpenLayers['Feature']['Vector'](k5['getNodeByDirection']('from')['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), kr(k5);
return 0x2 === k9 && 0x0 === ku(k5)['length'] && k8['utils']['isOnScreen'](k5['getToNode']()) && 0x14 !== k7['roadType'] && k5['getConnectedSegmentsByDirection']('to')['length'] > 0x0 && (k6 ? ke(k5['getToNode'](), k5) : (kp['push'](new OpenLayers['Feature']['Vector'](k5['getNodeByDirection']('to')['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💩',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), kr(k5))), 0x3 === k9 && k8['utils']['isOnScreen'](k5['getFromNode']()) && k8['utils']['isOnScreen'](k5['getToNode']()) && 0x0 === kt(k5)['length'] && 0x0 === ku(k5)['length'] && (k6 ? (ke(k5['getFromNode'](), k5), ke(k5['getToNode'](), k5)) : kr(k5)), ko;
}
}, kt = function (k5) {
var k6 = 'from';
return k5['getConnectedSegments'](k6)['filter'](function (k7) {
if (k7 === k5)
return !0x1;
var k8 = k5['getNodeByDirection'](k6);
return k7['isTurnAllowed'](k5, k8);
});
}, ku = function (k5) {
return k5['getConnectedSegments']('to')['filter'](function (k6) {
if (k6 === k5)
return !0x1;
var k7 = k5['getNodeByDirection']('to');
return k6['isTurnAllowed'](k5, k7);
});
};
},
function (kL, kM, kN) {
'use strict';
var kO = kO || void 0x0, kP = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === kO && (kO = new WMEmagic()), kO['iamready']() ? kS() : setTimeout(kP, 0x3e8)) : setTimeout(kP, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var kL = document['createElement']('script');
kL['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), kL['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](kL);
}
setTimeout(kP, 0x3e8);
}();
let kR = 'seg_nowayout', kS = function () {
kO['addMenuOption']({
'id': kR,
'title': 'no\x20way\x20OUT',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0x11,
'maxObjects': 0x3e8,
'preLoop': kV,
'loopFunc': kZ,
'postLoop': null,
'actionFunc': kX,
'actionDesc': 'Convert\x20all\x20way\x20OUT\x20arrows\x20to\x20greens,\x20transform\x20seg\x20to\x20two\x20way\x20when\x20is\x20one\x20way\x20to\x20a\x20black\x20hole'
});
}, kT = {}, kU = [];
var kV = function () {
kT = {}, kU = [];
}, kW = function (kL) {
let kM = kL['attributes'];
kO['utils']['log']('Found\x20no\x20way\x20out\x20segment\x20with\x20ID:\x20' + kM['id']), kU['push'](kO['utils']['highlightObject'](kL, kO['color'](kR)));
var kN = kM['id'], kP = kL['type'];
kT = {
'id': kN,
'type': kP,
'plugId': kR,
'obj': kL
}, kU['length'] > 0x0 && setTimeout(kO['addMagic'](kR + '_' + kM['id'], kU), 0x64);
}, kX = function () {
kO['utils']['loopSegments']([function (kL) {
kZ(kL, !0x0);
}]);
}, kY = function (kL, kM) {
var kN = window['require']('Waze/Model/Graph/Actions/SetTurn'), kP = kM['attributes']['id'];
kO['utils']['canEdit'](kL) && kL['attributes']['segIDs']['forEach'](function (kO) {
if (kP != kO) {
var kR = W['model']['segments']['getObjectById'](kO), kS = W['model']['getTurnGraph']();
if (kL['isTurnAllowedBySegDirections'](kM, kR) && !kM['isTurnAllowed'](kR, kL) && kM['isDrivable']() && kR['isDrivable']()) {
var kT = kS['getTurnThroughNode'](kL, kM, kR);
W['model']['actionManager']['add'](new kN(kS, kT['withTurnData'](kT['getTurnData']()['withToggledState'](!0x0))));
}
}
});
}, kZ = function (kL, kM) {
var kN = kL['attributes'];
kV();
var kP = kO['utils']['getDirection'](kL);
if (kO['utils']['isDrivable'](kL)) {
if (0x1 === kP && 0x0 === l1(kL)['length'] && kO['utils']['isOnScreen'](kL['getToNode']()) && 0x14 !== kN['roadType'] && kL['getConnectedSegmentsByDirection']('to')['length'] > 0x0 && (kM ? kY(kL['getToNode'](), kL) : (kU['push'](new OpenLayers['Feature']['Vector'](kL['getNodeByDirection']('to')['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), kW(kL))), 0x2 === kP && 0x0 === l0(kL)['length'] && kO['utils']['isOnScreen'](kL['getFromNode']()) && 0x14 !== kN['roadType'] && kL['getConnectedSegmentsByDirection']('from')['length'] > 0x0)
if (kM) {
if (!kN['fwdDirection']) {
var kR = { 'fwdDirection': !0x0 };
kO['utils']['setAttributes'](kL, kR);
}
kY(kL['getToNode'](), kL);
} else
kU['push'](new OpenLayers['Feature']['Vector'](kL['getNodeByDirection']('from')['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💩',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), kW(kL);
return 0x3 === kP && kO['utils']['isOnScreen'](kL['getFromNode']()) && kO['utils']['isOnScreen'](kL['getToNode']()) && (kL['getConnectedSegments']('from')['length'] > 0x1 && 0x0 === l0(kL)['length'] && kL['getConnectedSegments']('to')['length'] > 0x1 && 0x0 === l1(kL)['length'] && (kM ? (kY(kL['getFromNode'](), kL), kY(kL['getToNode'](), kL)) : kW(kL)), kL['getConnectedSegments']('from')['length'] > 0x1 && 0x0 === l0(kL)['length'] && 0x1 === kL['getConnectedSegments']('to')['length'] && 0x0 === l1(kL)['length'] && (kM ? kY(kL['getFromNode'](), kL) : kW(kL)), 0x1 === kL['getConnectedSegments']('from')['length'] && 0x0 === l0(kL)['length'] && kL['getConnectedSegments']('to')['length'] > 0x1 && 0x0 === l1(kL)['length'] && (kM ? kY(kL['getToNode'](), kL) : kW(kL)), 0x0 === l1(kL)['length'] && lr(kL['getConnectedSegments']('to')) && (kM ? kY(kL['getToNode'](), kL) : kW(kL)), 0x0 === l0(kL)['length'] && lr(kL['getConnectedSegments']('from')) && (kM ? kY(kL['getFromNode'](), kL) : kW(kL))), kT;
}
}, l0 = function (kL) {
var kM = 'from';
return kL['getConnectedSegments'](kM)['filter'](function (kN) {
if (kN === kL)
return !0x1;
var kO = kL['getNodeByDirection'](kM);
return kL['isTurnAllowed'](kN, kO);
});
}, l1 = function (kL) {
return kL['getConnectedSegments']('to')['filter'](function (kM) {
if (kM === kL)
return !0x1;
var kN = kL['getNodeByDirection']('to');
return kL['isTurnAllowed'](kM, kN);
});
};
let lr = function (kL) {
return kL['findIndex'](function (kL) {
return kL['attributes']['junctionID'] > 0x0;
}) > -0x1;
};
},
function (lu, lv, lw) {
'use strict';
var lx = lx || void 0x0, ly = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === lx && (lx = new WMEmagic()), lx['iamready']() ? lB() : setTimeout(ly, 0x3e8)) : setTimeout(ly, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var lu = document['createElement']('script');
lu['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), lu['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](lu);
}
setTimeout(ly, 0x3e8);
}();
let lA = 'seg_lockrank', lB = function () {
lx['addMenuOption']({
'id': lA,
'title': 'not\x20locked',
'color': '#F5D801',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': lD,
'postLoop': null,
'actionFunc': lE
});
};
var lC = {
1: 'street_roads',
17: 'private_roads',
20: 'parking_roads',
8: 'off_roads',
7: 'minor_roads',
6: 'major_roads',
2: 'primary_roads',
3: 'freeway_roads',
4: 'ramp_roads',
18: 'railroad_roads',
15: 'ferry_roads',
10: 'ped_boardwalk',
5: 'walking_trail',
101: 'streetCity_roads',
117: 'privateCity_roads',
120: 'parkingCity_roads',
108: 'offCity_roads',
107: 'minorCity_roads',
106: 'majorCity_roads',
102: 'primaryCity_roads',
103: 'freewayCity_roads',
104: 'rampCity_roads',
118: 'railroadCity_roads',
115: 'ferryCity_roads',
110: 'pedCity_boardwalk',
105: 'walkingCity_trail',
201: 'streetCity_roads_toll',
217: 'privateCity_roads_toll',
220: 'parkingCity_roads_toll',
208: 'offCity_roads_toll',
207: 'minorCity_roads_toll',
206: 'majorCity_roads_toll',
202: 'primaryCity_roads_toll',
203: 'freewayCity_roads_toll',
204: 'rampCity_roads_toll',
218: 'railroadCity_roads_toll',
215: 'ferryCity_roads_toll',
210: 'pedCity_boardwalk_toll',
205: 'walkingCity_trail_toll',
301: 'street_roads_toll',
317: 'private_roads_toll',
320: 'parking_roads_toll',
308: 'off_roads_toll',
307: 'minor_roads_toll',
306: 'major_roads_toll',
302: 'primary_roads_toll',
303: 'freeway_roads_toll',
304: 'ramp_roads_toll',
318: 'railroad_roads_toll',
315: 'ferry_roads_toll',
310: 'ped_boardwalk_toll',
305: 'walking_trail_toll'
}, lD = function (lu, lv) {
var lw = lu['attributes'], ly = !0x1;
if (lx['utils']['isRoundabout'](lu)) {
if (!0x1 === lx['getConfig'](lA, 'roundabout_roads', null, lu)['enabled'])
return;
ly = !0x0;
}
if (0x1 === lw['roadType'] && lu['attributes']['fwdDirection'] + lu['attributes']['revDirection'] == 0x1 && !0x1 === lx['getConfig'](lA, 'street_roads_1way', null, lu)['enabled'] && !0x1 === lx['getConfig'](lA, 'street_roads', null, lu)['enabled'])
return;
if (0x1 === lw['roadType'] && lu['attributes']['fwdDirection'] + lu['attributes']['revDirection'] == 0x2 && !0x1 === lx['getConfig'](lA, 'street_roads', null, lu)['enabled'])
return;
if (0x11 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'private_roads', null, lu)['enabled'])
return;
if (0x14 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'parking_roads', null, lu)['enabled'])
return;
if (0x8 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'off_roads', null, lu)['enabled'])
return;
if (0x7 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'minor_roads', null, lu)['enabled'])
return;
if (0x6 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'major_roads', null, lu)['enabled'])
return;
if (0x2 === lw['roadType'] && lu['attributes']['fwdDirection'] + lu['attributes']['revDirection'] == 0x1 && !0x1 === lx['getConfig'](lA, 'primary_roads_1way', null, lu)['enabled'] && !0x1 === lx['getConfig'](lA, 'primary_roads', null, lu)['enabled'])
return;
if (0x2 === lw['roadType'] && lu['attributes']['fwdDirection'] + lu['attributes']['revDirection'] == 0x2 && !0x1 === lx['getConfig'](lA, 'primary_roads', null, lu)['enabled'])
return;
if (0x3 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'freeway_roads', null, lu)['enabled'])
return;
if (0x4 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'ramp_roads', null, lu)['enabled'])
return;
if (0x12 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'railroad_roads', null, lu)['enabled'])
return;
if (0xf === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'ferry_roads', null, lu)['enabled'])
return;
if (0xa === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'ped_boardwalk', null, lu)['enabled'])
return;
if (0x5 === lw['roadType'] && !0x1 === lx['getConfig'](lA, 'walking_trail', null, lu)['enabled'])
return;
let lB = lx['utils']['getCityName'](lu), lD = 0x1 == lw['fwdToll'] || 0x1 == lw['revToll'], lE = lx['utils']['getLockRank'](lu), lO = 0x0;
lB && lD && !0x0 === lx['getConfig'](lA, lC[lw['roadType'] + 0xc8], null, lu)['enabled'] && (lO = lx['getConfig'](lA, lC[lw['roadType'] + 0xc8], null, lu)['default']), !lO && lB && (lO = lx['getConfig'](lA, lC[lw['roadType'] + 0x64], null, lu)['default']), !lO && lD && !0x0 === lx['getConfig'](lA, lC[lw['roadType'] + 0x12c], null, lu)['enabled'] && (lO = lx['getConfig'](lA, lC[lw['roadType'] + 0x12c], null, lu)['default']), lO || (lO = lx['getConfig'](lA, lC[lw['roadType']], null, lu)['default']), 0x1 != lw['roadType'] && 0x2 != lw['roadType'] || !lx['getConfig'](lA, lC[lw['roadType']] + '_1way', null, lu)['enabled'] || lu['attributes']['fwdDirection'] + lu['attributes']['revDirection'] != 0x1 || (lO = lB ? lx['getConfig'](lA, lC[lw['roadType'] + 0x64] + '_1way', null, lu)['default'] : lx['getConfig'](lA, lC[lw['roadType']] + '_1way', null, lu)['default']), ly && (lO = lx['getConfig'](lA, 'roundabout_roads', null, lu)['default']), lO = function (lu, lv) {
if (null != lu) {
if (/^\d+$/['test'](lu))
return lu;
var [lw, ly] = lu['split']('||');
if ('HIGHER_CONNECTION' === lw) {
var lA = 0x0;
return lx['utils']['isRoundabout'](lv) ? lA = lF(lv) : function (lu) {
return 0x4 === lu['attributes']['roadType'];
}(lv) && (lA = lG(lv) + 0x1), ly > 0x1 ? lA > ly ? lA : ly : lA;
}
}
}(lO, lu);
let lV = lx['normalizedLevel']();
lO > lV && (lO = lV);
let lW = {}, lX = [];
if (lO > lE)
if (!0x0 === lv && lO > lE) {
var lY = {};
lY['lockRank'] = lO - 0x1, lx['utils']['setAttributes'](lu, lY);
} else {
lx['utils']['log']('Found\x20segment\x20with\x20no\x20lock\x20with\x20ID:\x20' + lw['id']), lX['push'](lx['utils']['highlightObject'](lu, lx['color'](lA))), lW = {
'id': lw['id'],
'type': lu['type'],
'plugId': lA,
'obj': lu
};
}
return lX['length'] > 0x0 && setTimeout(lx['addMagic'](lA + '_' + lw['id'], lX), 0x64), lW;
}, lE = function () {
lx['utils']['loopSegments']([function (lu) {
lD(lu, !0x0);
}]);
}, lF = function (lu) {
var lv = -0x1, lw = lu['getRoundabout']();
if (lw)
for (var ly = W['model']['segments']['getByIds'](lw['getSegmentsIds']()), lA = 0x0; lA < ly['length']; lA++)
for (var lB = ly[lA]['getConnectedSegments']('to'), lC = 0x0; lC < lB['length']; lC++) {
var lD = lB[lC];
if (!lD['getRoundabout']()) {
var lE = lx['utils']['getLockRank'](lD);
lv < lE && (lv = lE);
}
}
return lv;
}, lG = function (lu, lv, lw) {
lv = lv || 0x0, lw = lw || 0x0;
var lx = lu['attributes'];
if (0x4 !== lx['roadType'])
return 0x0 === lw ? undef : lv;
var ly = lx['id'], lA = lx['toNodeID'], lB = lx['fromNodeID'], lC = W['model']['nodes']['getObjectById'](lA)['attributes']['segIDs'], lD = W['model']['nodes']['getObjectById'](lB)['attributes']['segIDs'];
if (lC[lw])
for (var lE = 0x0; lE < lC['length']; lE++) {
var lF = lC[lE];
if (ly !== lF)
0x4 === (ml = (mk = W['model']['segments']['getObjectById'](lF))['attributes'])['roadType'] && lG(mk, lv, ly), ml['lockRank'] > lv && (lv = ml['lockRank']);
}
if (lD[lw])
for (lE = 0x0; lE < lD['length']; lE++) {
var mk, ml, mm = lD[lE];
if (ly !== mm)
0x4 === (ml = (mk = W['model']['segments']['getObjectById'](mm))['attributes'])['roadType'] && lG(mk, lv, ly), ml['lockRank'] > lv && (lv = ml['lockRank']);
}
return lv;
};
},
function (mn, mo, mp) {
'use strict';
var mq = mq || void 0x0, mr = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === mq && (mq = new WMEmagic()), mq['iamready']() ? mu() : setTimeout(mr, 0x3e8)) : setTimeout(mr, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var mn = document['createElement']('script');
mn['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), mn['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](mn);
}
setTimeout(mr, 0x3e8);
}();
let mt = 'nod_unneededJunc', mu = function () {
mq['addMenuOption']({
'id': mt,
'title': 'Unneeded\x20junction',
'title#de': 'Überflüssige\x20Kreuzung',
'color': '#377EC6',
'loop': !0x0,
'section': 'nodes',
'minZoom': 0x11,
'preLoop': null,
'loopFunc': mv,
'postLoop': null
});
};
var mv = function (mn) {
let mo = {}, mp = [];
var mr = function (mn) {
for (var mo = 0x1; mo < mn['length']; mo++)
if (mn[mo] != mn[0x0])
return !0x1;
return !0x0;
}, mu = function (mn) {
return !mn['attributes']['fwdDirection'] && !mn['attributes']['revDirection'];
}, mv = (mW = mn['attributes'])['id'];
if (0x2 != mW['segIDs']['length'])
return;
var mF = (mS = mW['segIDs']['map'](function (mn) {
return W['model']['segments']['objects'][mn];
}))[0x0]['attributes'], mG = mS[0x1]['attributes'];
if (mF['hasClosures'] || mG['hasClosures'])
return;
if (mn['isTurnAllowedBySegDirections'](mS[0x0], mS[0x1]) && 0x0 == mS[0x0]['isTurnAllowed'](mS[0x1], mn))
return;
if (mn['isTurnAllowedBySegDirections'](mS[0x1], mS[0x0]) && 0x0 == mS[0x1]['isTurnAllowed'](mS[0x0], mn))
return;
if (mn['isTurnAllowedBySegDirections'](mS[0x0], mS[0x0]) && 0x1 == mS[0x0]['isTurnAllowed'](mS[0x0], mn))
return;
if (mn['isTurnAllowedBySegDirections'](mS[0x1], mS[0x1]) && 0x1 == mS[0x1]['isTurnAllowed'](mS[0x1], mn))
return;
var mI, mJ, mK = mF['fromNodeID'] == mv, mL = mG['fromNodeID'] == mv;
if (null != mF['junctionID'])
return;
if (null != mG['junctionID'])
return;
if (mF['primaryStreetID'] != mG['primaryStreetID'])
return;
if ((mF['streetIDs']['length'] || mG['streetIDs']['length']) && (mF['streetIDs'][0x0] != mG['streetIDs'][0x0] || mF['streetIDs'][0x1] != mG['streetIDs'][0x1] || mF['streetIDs'][0x2] != mG['streetIDs'][0x2] || mF['streetIDs']['length'] != mG['streetIDs']['length']))
return;
if (mF['level'] != mG['level'])
return;
if (mF['roadType'] != mG['roadType'])
return;
if (mu(mS[0x0]) || mu(mS[0x1]))
return;
if (mF['lockRank'] != mG['lockRank'])
return;
if (mF['fwdFlags'] != mG['fwdFlags'])
return;
if (mF['revFlags'] != mG['revFlags'])
return;
if (mF['flags'] != mG['flags'])
return;
if (mF['fwdToll'] != mG['fwdToll'] || mG['revToll'] != mF['revToll'] || mG['fwdToll'] != mF['revToll'])
return;
if (mF['length'] + mG['length'] > 0x1869f)
return;
if (mJ = mL, !(mI = mK) && !mJ || mI && mJ) {
if (mF['fwdDirection'] != mG['revDirection'] || mF['revDirection'] != mG['fwdDirection'])
return;
} else if (mF['fwdDirection'] != mG['fwdDirection'] || mG['revDirection'] != mF['revDirection'])
return;
if (!mr([
mF['fwdMaxSpeed'],
mG['fwdMaxSpeed']
]))
return;
if (!mr([
mF['revMaxSpeed'],
mG['revMaxSpeed']
]))
return;
if (!mr([
mF['fwdMaxSpeedUnverified'],
mG['fwdMaxSpeedUnverified']
]))
return;
if (!mr([
mF['revMaxSpeedUnverified'],
mG['revMaxSpeedUnverified']
]))
return;
if (0x0 != mF['restrictions']['length'] || 0x0 != mG['restrictions']['length'])
return;
let mM = W['model']['getTurnGraph']()['getTurnThroughNode'](mn, mS[0x0], mS[0x1]), mN = W['model']['getTurnGraph']()['getTurnThroughNode'](mn, mS[0x1], mS[0x0]);
if (!(mM['getTurnData']()['getRestrictions']()['length'] > 0x0 || mN['getTurnData']()['getRestrictions']()['length'] > 0x0 || W['model']['getTurnGraph']()['getTurnThroughNode'](mn, mS[0x0], mS[0x1])['getTurnData']()['getInstructionOpcode']() || W['model']['getTurnGraph']()['getTurnThroughNode'](mn, mS[0x1], mS[0x0])['getTurnData']()['getInstructionOpcode']())) {
var mO = mF['fromNodeID'] == mv ? mF['toNodeID'] : mF['fromNodeID'];
if (null == mO || mG['fromNodeID'] != mO && mG['toNodeID'] != mO) {
var mP = mG['fromNodeID'] == mv ? mG['toNodeID'] : mG['fromNodeID'];
if (mP != mO) {
var mQ = W['model']['nodes']['objects'][mO];
if (void 0x0 !== mQ) {
if ('Delete' == mQ['state'])
return;
var mR = W['model']['nodes']['objects'][mP];
if (void 0x0 !== mR) {
if ('Delete' == mR['state'])
return;
var mS;
if (void 0x0 !== (mS = mR['attributes']['segIDs']['map'](function (mn) {
return W['model']['segments']['objects'][mn];
}))[0x0] && void 0x0 !== mS[0x1]) {
for (var mU = !0x1, mV = 0x0; mV < mS['length']; mV++) {
var mW;
(mW = mS[mV]['attributes'])['fromNodeID'] != mO && mW['toNodeID'] != mO || (mU = !0x0);
}
if (mU)
return;
}
}
}
}
return mq['utils']['log']('Found\x20unnecessary\x20node\x20with\x20ID:\x20' + mW['id']), mp['push'](mq['utils']['highlightObject'](mn, mq['color'](mt))), mo = {
'id': mW['id'],
'type': mn['type'],
'plugId': mt,
'obj': mn
}, mp['length'] > 0x0 && setTimeout(mq['addMagic'](mt + '_' + mW['id'], mp), 0x64), mo;
}
}
};
},
function (mX, mY, mZ) {
'use strict';
var n0 = n0 || void 0x0, n1 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === n0 && (n0 = new WMEmagic()), n0['iamready']() ? n4() : setTimeout(n1, 0x3e8)) : setTimeout(n1, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var mX = document['createElement']('script');
mX['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), mX['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](mX);
}
setTimeout(n1, 0x3e8);
}();
let n3 = 'ext_searchhl', n4 = function () {
n0['addMenuOption']({
'id': n3,
'title': 'Highlight\x20search',
'color': '#FFFFFF',
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': n9,
'stopFunc': na,
'default': !0x0
});
};
var n5 = function (mX, mY, mZ) {
let n1 = [];
new RegExp(mY, 'ig')['exec'](mX) && n1['push'](n0['utils']['highlightObject'](mZ, n0['color'](n3))), n1['length'] > 0x0 && setTimeout(n0['addMagic'](n3 + '_' + mZ['attributes']['id'], n1), 0x64);
}, n6 = function () {
var mX = document['getElementsByName']('q')[0x0]['value'];
mX['length'] < 0x2 || (n0['clearLayer'](), n0['utils']['loopSegments']([function (mY) {
var mZ = mY['attributes']['primaryStreetID'];
if (null !== mZ && -0x64 !== mZ) {
var n0 = W['model']['streets']['getObjectById'](mZ);
if (!n0)
return;
var n1 = n0['name'] || '', n3 = n0['cityID'];
if (n3 < 0x0)
return;
var n4 = W['model']['cities']['getObjectById'](n3);
if (!n4)
return;
var n6 = n4['attributes']['name'] || '';
n5(n1, mX, mY), n5(n6, mX, mY);
}
}]), n0['utils']['loopVenues']([function (mY) {
let mZ = mY['attributes'];
n5(mZ['name'], mX, mY);
}]));
}, n7 = !0x1, n8 = function (mX) {
n7 && window['clearTimeout'](n7), n7 = setTimeout(n6, 0x1f4);
}, n9 = function () {
var mX = document['getElementsByName']('q')[0x0];
mX && (mX['addEventListener']('keyup', n8, !0x1), mX['addEventListener']('focus', n8, !0x1));
}, na = function () {
var mX = document['getElementsByName']('q')[0x0];
mX && (mX['removeEventListener']('keyup', n8, !0x1), mX['removeEventListener']('focus', n8, !0x1));
};
},
function (ns, nt, nu) {
'use strict';
var nv = nv || void 0x0, nw = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === nv && (nv = new WMEmagic()), nv['iamready']() ? nz() : setTimeout(nw, 0x3e8)) : setTimeout(nw, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var ns = document['createElement']('script');
ns['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), ns['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](ns);
}
setTimeout(nw, 0x3e8);
}();
let ny = 'ven_normalize';
let nz = function () {
nv['addMenuOption']({
'id': ny,
'title': 'Normalize\x20Venues',
'color': '#EC3E40',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': nB,
'postLoop': null,
'startFunc': !0x1,
'stopFunc': !0x1,
'default': !0x1,
'devMode': !0x1
});
};
var nA = function (ns, nt, nu) {
var nw = 0x1;
do {
var ny = nv['getConfig'](nu, 'regex' + nw, nt);
if (nw++, void 0x0 === ny['default'])
break;
if (void 0x0 !== ny['enabled'] && !0x1 !== ny['enabled']) {
var nz, nA, nB;
[nz, nA, nB] = ny['default']['split']('\x20###\x20');
var nK = new RegExp(nz, nA);
ns = ns['replace'](nK, nB);
}
} while ('string' == typeof ny['default']);
return ns;
}, nB = function (ns) {
let nt = ns['attributes'];
var nu = nt['name'], nw = nu;
if ('' === nu)
return;
nw = nA(nw, 'noDefault', 'all_orthographic'), nw = nA(nw, 'noDefault', 'all_abbreviation'), nw = nA(nw, !0x0, ny);
let nz = {}, nB = [];
nu !== (nw = nA(nw, 'noDefault', ny)) && (nv['utils']['log']('Found\x20normalized\x20venue\x20with\x20ID:\x20' + nt['id']), nB['push'](nv['utils']['highlightObject'](ns, '#EC3E40')), nz = {
'id': nt['id'],
'type': ns['type'],
'plugId': ny,
'obj': ns,
'result': nw
});
return nB['length'] > 0x0 && setTimeout(nv['addMagic'](ny + '_' + nt['id'], nB), 0x64), nz;
};
},
function (nR, nS, nT) {
'use strict';
var nU = nU || void 0x0, nV = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === nU && (nU = new WMEmagic()), nU['iamready']() ? nY() : setTimeout(nV, 0x3e8)) : setTimeout(nV, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var nR = document['createElement']('script');
nR['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), nR['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](nR);
}
setTimeout(nV, 0x3e8);
}();
let nX = 'seg_tollroad', nY = function () {
nU['addMenuOption']({
'id': nX,
'title': 'Toll\x20road',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': nZ,
'postLoop': null,
'devMode': !0x1
});
};
var nZ = function (nR) {
var nS = nR['attributes'];
let nT = {}, nV = [];
(nS['fwdToll'] || nS['revToll']) && (nU['utils']['log']('Found\x20toll\x20road\x20segment\x20with\x20ID:\x20' + nS['id']), nV['push'](nU['utils']['highlightObject'](nR, nU['color'](nX))), nT = {
'id': nS['id'],
'type': nR['type'],
'plugId': nX,
'obj': nR
});
return nV['length'] > 0x0 && setTimeout(nU['addMagic'](nX + '_' + nS['id'], nV), 0x64), nT;
};
},
function (o4, o5, o6) {
'use strict';
var o7 = o7 || void 0x0, o8 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === o7 && (o7 = new WMEmagic()), o7['iamready']() ? ob() : setTimeout(o8, 0x3e8)) : setTimeout(o8, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var o4 = document['createElement']('script');
o4['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), o4['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](o4);
}
setTimeout(o8, 0x3e8);
}();
let oa = 'nod_difficult', ob = function () {
o7['addMenuOption']({
'id': oa,
'title': 'Difficult\x20node',
'text': 'There\x20is\x20at\x20least\x20one\x20difficult\x20turn',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'nodes',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': oc,
'postLoop': null,
'actionFunc': null,
'actionDesc': null,
'devMode': !0x1
});
};
var oc = function (o4) {
let o5 = o4['attributes'], o6 = {}, o8 = [];
for (var ob = o4['allConnectionKeys']()['legal'], oc = 0x0; oc < ob['length']; oc++) {
var oj = ob[oc];
if (W['model']['getTurnGraph']()['getTurnThroughNode'](o4, oj['from'], oj['to'])['getTurnData']()['getRestrictions']()['some'](function (ob) {
if ('DIFFICULT' === ob['_defaultType']) {
o7['utils']['log']('Found\x20difficult\x20node\x20with\x20ID:\x20' + o5['id']), o8['push'](o7['utils']['highlightObject'](o4, o7['color'](oa)));
var oc = o5['id'], oj = o4['type'];
return o6 = {
'id': oc,
'type': oj,
'plugId': oa,
'obj': o4
}, !0x0;
}
}))
break;
}
return o8['length'] > 0x0 && setTimeout(o7['addMagic'](oa + '_' + o5['id'], o8), 0x64), o6;
};
},
function (oo, op, oq) {
'use strict';
var or = or || void 0x0, os = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === or && (or = new WMEmagic()), or['iamready']() ? ov() : setTimeout(os, 0x3e8)) : setTimeout(os, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var oo = document['createElement']('script');
oo['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), oo['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](oo);
}
setTimeout(os, 0x3e8);
}();
let ou = 'ven_parkinglots', ov = function () {
or['addMenuOption']({
'id': ou,
'title': 'Parking\x20lots\x20as\x20Points',
'text': 'Parking\x20lots\x20must\x20be\x20areas',
'color': '#EC3E40',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': ow,
'postLoop': null,
'devMode': !0x1
});
};
var ow = function (oo) {
let op = oo['attributes'];
if (!op['categories']['includes']('PARKING_LOT'))
return;
let oq = {}, os = [];
oo['isPoint']() && (or['utils']['log']('Found\x20parking\x20lot\x20point\x20venue\x20with\x20ID:\x20' + op['id']), os['push'](or['utils']['highlightObject'](oo, '#EC3E40')), oq = {
'id': op['id'],
'type': oo['type'],
'plugId': ou,
'obj': oo
});
return os['length'] > 0x0 && setTimeout(or['addMagic'](ou + '_' + op['id'], os), 0x64), oq;
};
},
function (oB, oC, oD) {
'use strict';
var oE = oE || void 0x0, oF = function () {
return void 0x0 === window['require'] ? (setTimeout(oF, 0x3e8), void console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...')) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(oF, 0x3e8), void console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...')) : (void 0x0 === oE && (console['log']('INIT\x20MAGIC'), oE = new WMEmagic()), oE['iamready']() ? void oI() : (console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(oF, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var oB = document['createElement']('script');
oB['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), oB['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](oB), console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(oF, 0x3e8);
}();
let oH = 'ven_lockrank', oI = function () {
oE['addMenuOption']({
'id': oH,
'title': 'venue\x20not\x20protected',
'color': '#F5D801',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': oJ,
'postLoop': null,
'actionFunc': oK,
'devMode': !0x1
});
};
var oJ = function (oB, oC) {
let oD = oB['attributes'];
var oF = oD['categories'], oI = oE['utils']['getLockRank'](oB), oJ = oI;
oF['forEach'](function (oC) {
var oD = oE['getConfig'](oH, oC['toLowerCase']())['default'];
oD > oJ && (oJ = oD), 'HIGHER_CONNECTION' === oD && (oJ = oL(oB));
});
var oK = oE['normalizedLevel']();
oJ > oK && (oJ = oK);
let oM = {}, oX = [];
if (oJ > oI)
if (!0x0 === oC) {
var oY = {};
oY['lockRank'] = oJ - 0x1, oE['utils']['setAttributes'](oB, oY);
} else {
oE['utils']['log']('Found\x20venue\x20not\x20protected\x20with\x20ID:\x20' + oD['id']), oX['push'](oE['utils']['highlightObject'](oB, oE['color'](oH))), oM = {
'id': oD['id'],
'type': oB['type'],
'plugId': oH,
'obj': oB
};
}
return oX['length'] > 0x0 && setTimeout(oE['addMagic'](oH + '_' + oD['id'], oX), 0x64), oM;
}, oK = function () {
oE['utils']['loopVenues']([function (oB) {
oJ(oB, !0x0);
}]);
}, oL = function (oB) {
for (var oC in W['model']['segments']['objects']) {
var oD = W['model']['segments']['getObjectById'](oC);
if (oE['utils']['isOnScreen'](oD) && oB['getOLGeometry']()['intersects'](oD['getOLGeometry']()))
return 0x14 === oD['attributes']['roadType'] ? oM(oD) : oE['utils']['getLockRank'](oD);
}
}, oM = function (oB, oC, oD) {
oC = oC || 0x0, oD = oD || 0x0;
var oE = oB['attributes'];
if (0x14 !== oE['roadType'])
return 0x0 === oD ? undef : oC;
var oF = oE['id'], oH = oE['toNodeID'], oI = oE['fromNodeID'], oJ = W['model']['nodes']['getObjectById'](oH)['attributes']['segIDs'], oK = W['model']['nodes']['getObjectById'](oI)['attributes']['segIDs'];
if (oJ[oD])
for (var oL = 0x0; oL < oJ['length']; oL++) {
var pd = oJ[oL];
if (oF !== pd)
0x14 === (pf = (pe = W['model']['segments']['getObjectById'](pd))['attributes'])['roadType'] && oM(pe, oC, oF), pf['lockRank'] > oC && (oC = pf['lockRank']);
}
if (oK[oD])
for (oL = 0x0; oL < oK['length']; oL++) {
var pe, pf, pg = oK[oL];
if (oF !== pg)
0x14 === (pf = (pe = W['model']['segments']['getObjectById'](pg))['attributes'])['roadType'] && oM(pe, oC, oF), pf['lockRank'] > oC && (oC = pf['lockRank']);
}
return oC;
};
},
function (ph, pi, pj) {
'use strict';
var pk = pk || void 0x0, pl = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === pk && (pk = new WMEmagic()), pk['iamready']() ? po() : setTimeout(pl, 0x3e8)) : setTimeout(pl, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var ph = document['createElement']('script');
ph['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), ph['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](ph);
}
setTimeout(pl, 0x3e8);
}();
let pn = 'seg_normalize';
let po = function () {
pk['addMenuOption']({
'id': pn,
'title': 'Normalize\x20Roads',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': pq,
'postLoop': null,
'startFunc': !0x1,
'stopFunc': !0x1,
'default': !0x1,
'devMode': !0x1
});
};
var pp = function (ph, pi, pj) {
var pl = 0x1;
do {
var pn, po, pp, pq = pk['getConfig'](pj, 'regex' + pl, pi);
if (pl++, void 0x0 === pq['default'])
break;
if (void 0x0 === pq['enabled'] || !0x1 === pq['enabled'])
continue;
[pn, po, pp] = pq['default']['split']('\x20###\x20');
let pz = ph;
var pA = new RegExp(pn, po);
(ph = ph['replace'](pA, pp)) != pz && '' == pp && (ph = '');
} while ('string' == typeof pq['default']);
return ph;
}, pq = function (ph) {
let pi = ph['attributes'];
var pj;
if (void 0x0 === (pj = pk['utils']['getRoadName'](ph)) || '' === pj)
return;
var pl = pj;
pl = pp(pl, 'noDefault', 'all_orthographic'), pl = pp(pl, 'noDefault', 'all_abbreviation'), pl = pp(pl, !0x0, pn), pl = pp(pl, 'noState', pn);
let po = {}, pq = [], pH = [];
pj !== (pl = pp(pl, 'noDefault', pn)) && (pk['utils']['log']('Found\x20normalized\x20road\x20with\x20ID:\x20' + pi['id']), pH['push'](pk['utils']['highlightObject'](ph, '#EC3E40')), po = {
'id': pi['id'],
'type': ph['type'],
'plugId': pn,
'obj': ph,
'result': pl,
'oldName': pj
}, pq['push'](po));
if (pk['getConfig'](pn, '_check_alts')['enabled'] && pi['streetIDs'])
for (let pj = 0x0; pj < pi['streetIDs']['length']; pj++) {
let pJ = W['model']['streets']['getObjectById'](pi['streetIDs'][pj]);
if (pJ && (pl = pJ['name'], pJ['name'])) {
pJ['cityID'], W['model']['cities']['getObjectById'](pJ['cityID']);
if (0x12 != pi['roadType'] && 0x13 != pi['roadType'])
if (pl = pp(pl, !0x0, pn), pl = pp(pl, 'noState', pn), pl = pp(pl, 'noDefault', pn), pJ['name'] !== pl && pq['every'](function (ph) {
return ph['oldName'] != pJ['name'];
}))
pk['utils']['log']('Found\x20normalized\x20road\x20with\x20ID:\x20' + pi['id']), pH['push'](pk['utils']['highlightObject'](ph, '#EC3E40')), po = {
'id': pi['id'],
'type': ph['type'],
'plugId': pn,
'obj': ph,
'result': pl,
'oldName': pJ['name']
}, pq['push'](po);
}
}
return pH['length'] > 0x0 && setTimeout(pk['addMagic'](pn + '_' + pi['id'], pH), 0x64), pq;
};
},
function (pL, pM, pN) {
'use strict';
var pO = pO || void 0x0, pP = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === pO && (pO = new WMEmagic()), pO['iamready']() ? pS() : setTimeout(pP, 0x3e8)) : setTimeout(pP, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var pL = document['createElement']('script');
pL['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), pL['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](pL);
}
setTimeout(pP, 0x3e8);
}();
var pR = [
'dbcm',
'carloslaso',
'asterix06',
'bellhouse',
'justins83',
'hugo_moreira',
'goncalovm76',
'j0n4s13'
];
let pS = function () {
(W['loginManager']['user']['normalizedLevel'] > 0x4 || pR['includes'](W['loginManager']['user']['attributes']['userName']['toLowerCase']())) && pO['addMenuOption']({
'id': 'ext_enmte',
'title': 'Enhance\x20MTE',
'color': !0x1,
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': pT,
'stopFunc': pY,
'default': !0x1,
'devMode': !0x1
});
};
var pT = function () {
W['accelerators']['addAction']('WMEmagic_addClosure', { 'group': 'magic' }), I18n['translations'][I18n['locale']]['keyboard_shortcuts']['groups']['magic']['members']['WMEmagic_addClosure'] = 'add\x20closure\x20to\x20segment', W['accelerators']['events']['register']('WMEmagic_addClosure', this, function () {
pW();
}), W['accelerators']['registerShortcut']('2,49', 'WMEmagic_addClosure', !0x0), pZ(), W['map']['events']['register']('moveend', this, pU);
}, pU = function () {
setTimeout(pZ, 0x64);
}, pV = function (pL) {
var pM = ('0' + (pL['getMonth']() + 0x1))['slice'](-0x2), pN = ('0' + pL['getDate']())['slice'](-0x2);
return pL['getFullYear']() + '-' + pM + '-' + pN + '\x20' + ('0' + pL['getHours']())['slice'](-0x2) + ':' + ('0' + pL['getMinutes']())['slice'](-0x2);
}, pW = function () {
pO['utils']['log']('close\x20something...');
var pL = document['getElementById']('magic_met_opts');
if (pL && '0' !== pL['value']) {
if ('_CRISIS_' === pL['value']) {
var pM = W['model']['segments']['topCityID'], pN = new Date(), pP = pV(pN), pR = pN['getDate']();
pN['setDate'](pR + 0x1);
var pS = pV(pN), pT = new XMLHttpRequest();
pT['withCredentials'] = !0x0, pT['open']('POST', '/row-Descartes/app/Features?language=en&bbox=0%2C0%2C0%2C0&ignoreWarnings=', !0x0), pT['setRequestHeader']('Content-type', 'application/json'), pT['setRequestHeader']('x-csrf-token', qv('_csrf_token')), pT['send']('{\x22actions\x22:{\x22name\x22:\x22CompositeAction\x22,\x22_subActions\x22:[{\x22_objectType\x22:\x22majorTrafficEvent\x22,\x22action\x22:\x22ADD\x22,\x22attributes\x22:{\x22id\x22:-102,\x22category\x22:\x22OTHER\x22,\x22cityID\x22:' + pM + ',\x22comment\x22:null,\x22startDate\x22:\x22' + pP + '\x22,\x22endDate\x22:\x22' + pS + '\x22,\x22names\x22:[{\x22locale\x22:\x22en\x22,\x22value\x22:\x22WMEmagic\x20test\x22}],\x22url\x22:null,\x22partners\x22:[],\x22tweetText\x22:null}}]}}');
}
for (var pU = 0x0; pU < W['selectionManager']['getSelectedFeatures']()['length']; pU++) {
var pW = W['selectionManager']['getSelectedFeatures']()[pU]['attributes']['_wmeObject']['attributes'];
'segment' === pW['type'] && pX(pL['value'], pW['attributes']['id']);
}
}
}, pX = function (pL, pM) {
pO['utils']['log']('close\x20something...\x20MET:' + pL + '\x20SEG:' + pM);
var pN, pP = W['model']['majorTrafficEvents']['getObjectById'](pL)['attributes'];
pN = '_CRISIS_' !== pL && '0' !== pL ? 'CLOSURE\x20at\x20' + pP['names'][0x0]['value'] : 'WME\x20Magic\x20test\x20', pL = pL ? '\x22' + pL + '\x22' : 'null';
var pR = new Date(), pS = pV(pR);
pS = pP['startDate'];
var pT = pR['getDate']();
pR['setDate'](pT + 0x1);
var pU = pV(pR);
pU = pP['endDate'];
var pW = new XMLHttpRequest();
pW['withCredentials'] = !0x0, pW['open']('POST', '/row-Descartes/app/Features?language=en&bbox=0%2C0%2C0%2C0&ignoreWarnings=', !0x0), pW['setRequestHeader']('Content-type', 'application/json'), pW['setRequestHeader']('x-csrf-token', qv('_csrf_token')), pW['send']('{\x22actions\x22:{\x22name\x22:\x22CompositeAction\x22,\x22_subActions\x22:[{\x22name\x22:\x22MultiAction\x22,\x22_subActions\x22:[{\x22_objectType\x22:\x22roadClosure\x22,\x22action\x22:\x22ADD\x22,\x22attributes\x22:{\x22reason\x22:\x22' + pN + '\x22,\x22location\x22:\x22\x22,\x22segID\x22:' + pM + ',\x22id\x22:-101,\x22startDate\x22:\x22' + pS + '\x22,\x22endDate\x22:\x22' + pU + '\x22,\x22forward\x22:true,\x22permanent\x22:true,\x22eventId\x22:' + pL + '}},{\x22_objectType\x22:\x22roadClosure\x22,\x22action\x22:\x22ADD\x22,\x22attributes\x22:{\x22reason\x22:\x22' + pN + '\x22,\x22location\x22:\x22\x22,\x22segID\x22:' + pM + ',\x22id\x22:-102,\x22startDate\x22:\x22' + pS + '\x22,\x22endDate\x22:\x22' + pU + '\x22,\x22forward\x22:false,\x22permanent\x22:true,\x22eventId\x22:' + pL + '}}]}]}}'), setTimeout(function () {
W['controller']['reload']();
}, 0x1f4);
}, pY = function () {
var pL = document['getElementById']('magic_met_opts');
pL && pL['remove'](), W['map']['events']['unregister']('moveend', this, pU);
}, pZ = function () {
var pL = document['getElementById']('magic_MTE'), pM = document['getElementById']('magic_met_opts'), pN = null;
pM && (pN = pM['value'], pL['remove']());
var pO = document['getElementById']('edit-buttons')['firstChild'], pP = document['createElement']('DIV');
pP['id'] = 'magic_MTE', pP['className'] = 'toolbar-submenu\x20toolbar-group', pO['insertBefore'](pP, pO['firstChild']);
var pR = document['createElement']('select');
pR['className'] = 'form-control\x20language-select', pR['id'] = 'magic_met_opts', pR['style']['margin'] = '13px\x204px\x204px\x204px';
var pS = document['createElement']('option');
for (var pT in (pS['text'] = '--choose\x20closure--', pS['value'] = 0x0, pR['options']['add'](pS, 0x1), W['model']['majorTrafficEvents']['objects'])) {
var pU = W['model']['majorTrafficEvents']['getObjectById'](pT);
(pS = document['createElement']('option'))['id'] = 'magic_opt_' + pU['attributes']['names'][0x0]['value'], pS['text'] = pU['attributes']['names'][0x0]['value'], pS['value'] = pT, pR['options']['add'](pS, 0x1), pN === pS['value'] && (pS['selected'] = !0x0);
}
pP['appendChild'](pR);
};
function qv(pL) {
for (var pM = pL + '=', pN = document['cookie']['split'](';'), pO = 0x0; pO < pN['length']; pO++) {
for (var pP = pN[pO]; '\x20' == pP['charAt'](0x0);)
pP = pP['substring'](0x1);
if (0x0 == pP['indexOf'](pM))
return pP['substring'](pM['length'], pP['length']);
}
return '';
}
},
function (qB, qC, qD) {
'use strict';
var qE = qE || void 0x0, qF = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === qE && (qE = new WMEmagic()), qE['iamready']() ? qI() : setTimeout(qF, 0x3e8)) : setTimeout(qF, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var qB = document['createElement']('script');
qB['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), qB['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](qB);
}
setTimeout(qF, 0x3e8);
}();
let qH = 'ven_noaddress', qI = function () {
qE['addMenuOption']({
'id': qH,
'title': 'Places\x20without\x20address',
'text': 'Venues\x20without\x20addresses,\x20*PUM!',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': qJ,
'postLoop': null
});
};
var qJ = function (qB) {
let qC = qB['attributes'];
if (qC['categories']['includes']('RESIDENCE_HOME'))
return;
let qD = {}, qF = [];
void 0x0 === qC['streetID'] && (qE['utils']['log']('Found\x20venue\x20without\x20address\x20with\x20ID:\x20' + qC['id']), qF['push'](qE['utils']['highlightObject'](qB, '#FF9B2B')), qD = {
'id': qC['id'],
'type': qB['type'],
'plugId': qH,
'obj': qB
});
return qF['length'] > 0x0 && setTimeout(qE['addMagic'](qH + '_' + qC['id'], qF), 0x64), qD;
};
},
function (qO, qP, qQ) {
'use strict';
if (void 0x0 === qR)
var qR = !0x0;
var qS = qR, qT = qT || void 0x0, qU = function () {
return void 0x0 === window['require'] ? (setTimeout(qU, 0x3e8), void (qS && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(qU, 0x3e8), void (qS && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === qT && (qS && console['log']('INIT\x20MAGIC'), qT = new WMEmagic()), qT['iamready']() ? void qX() : (qS && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(qU, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var qO = document['createElement']('script');
qO['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), qO['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](qO), qS && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
qS && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(qU, 0x3e8);
}();
let qW = 'seg_unpavedseg';
var qX = function () {
qT['addMenuOption']({
'id': qW,
'title': 'Unpaved\x20segments',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': qY,
'postLoop': null,
'devMode': !0x1
});
}, qY = function (qO) {
let qP = qO['attributes'], qQ = {}, qR = [];
if (0x10 & qP['flags']) {
qR['push'](qT['utils']['highlightObject'](qO, qT['color'](qW))), qQ = {
'id': qP['id'],
'type': qO['type'],
'plugId': qW,
'obj': qO
};
}
return qR['length'] > 0x0 && setTimeout(qT['addMagic'](qW + '_' + qP['id'], qR), 0x64), qQ;
};
},
function (r3, r4, r5) {
'use strict';
if (void 0x0 === r6)
var r6 = !0x0;
var r7 = r6, r8 = r8 || void 0x0, r9 = function () {
return void 0x0 === window['require'] ? (setTimeout(r9, 0x3e8), void (r7 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(r9, 0x3e8), void (r7 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === r8 && (r7 && console['log']('INIT\x20MAGIC'), r8 = new WMEmagic()), r8['iamready']() ? void rc() : (r7 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(r9, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var r3 = document['createElement']('script');
r3['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), r3['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](r3), r7 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
r7 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(r9, 0x3e8);
}();
let rb = 'seg_noconn', rc = function () {
r8['addMenuOption']({
'id': rb,
'title': 'No\x20connection',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': rd,
'postLoop': null,
'devMode': !0x1,
'minZoom': 0x12,
'maxObjects': 0x3e8
});
};
var rd = function (r3) {
let r4 = r3['attributes'], r5 = {}, r6 = [], r7 = r3['attributes']['roadType'], r9 = W['model']['nodes']['getByIds']([
r3['attributes']['fromNodeID'],
r3['attributes']['toNodeID']
]);
if (0xa !== r7 && 0x10 !== r7 && 0x12 !== r7 && 0x13 !== r7 && 0x5 !== r7)
for (let r7 = 0x0; r7 < r9['length']; r7++)
if (0x1 == r9[r7]['attributes']['segIDs']['length'] && W['map']['getExtent']()['intersectsBounds'](r9[r7]['getOLGeometry']()['getBounds']())) {
var rc = re(r9[r7]['getOLGeometry'](), [r9[r7]['attributes']['segIDs'][0x0]]);
if (null != rc) {
let rd = W['model']['segments']['getObjectById'](r9[r7]['attributes']['segIDs'][0x0]);
r6['push'](r8['utils']['highlightObject'](rd, r8['color'](rb))), r6['push'](new OpenLayers['Feature']['Vector'](rc['line'], {}, { 'fill': !0x1 }));
let re = '💥', rp = '10px';
W['map']['getZoom']() > 0x8 && (re += '\x20' + rc['distanceToSegment']['toFixed'](0x2) + 'm', rp = '20px');
let rq = new OpenLayers['Feature']['Vector'](rc['closestPoint'], {}, {
'label': re,
'fontSize': rp,
'labelAlign': 'cm'
});
return r6['push'](rq), r5 = {
'id': r3['attributes']['id'],
'type': r3['type'],
'plugId': rb,
'obj': r3
}, r6['length'] > 0x0 && setTimeout(r8['addMagic'](rb + '_' + r4['id'], r6), 0x64), r5;
}
}
}, re = function (r3, r4) {
let r5, r6 = 0x1 / 0x0;
var r7 = performance['now']();
for (let r7 of W['model']['segments']['getObjectArray']()) {
if (!W['map']['getExtent']()['intersectsBounds'](r7['getOLGeometry']()['getBounds']()))
continue;
if (r4['includes'](r7['attributes']['id']))
continue;
let r8 = r7['attributes']['roadType'];
if (0xa === r8 || 0x10 === r8 || 0x12 === r8 || 0x13 === r8 || 0x5 === r8)
continue;
let rb = r3['distanceTo'](r7['getOLGeometry'](), { 'details': !0x0 });
var r9 = new OpenLayers['Geometry']['LineString']([
new OpenLayers['Geometry']['Point'](rb['x1'], rb['y1']),
r3
]);
if (rb = r9['getGeodesicLength'](W['map']['getProjectionObject']()), rb <= 0x5)
return r6 = rb['distance'], r5 = r7, r5['distanceToSegment'] = rb, r5['line'] = r9, r5['closestPoint'] = new OpenLayers['Geometry']['Point']((r9['components'][0x0]['x'] + r9['components'][0x1]['x']) / 0x2, (r9['components'][0x0]['y'] + r9['components'][0x1]['y']) / 0x2), r5;
}
var rb = performance['now']();
r8['utils']['log']('Looping\x20onscreensegments\x20took\x20' + (rb - r7) + '\x20milliseconds.');
};
},
function (rC, rD, rE) {
'use strict';
if (void 0x0 === rF)
var rF = !0x0;
var rG = rF, rH = rH || void 0x0, rI = function () {
return void 0x0 === window['require'] ? (setTimeout(rI, 0x3e8), void (rG && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(rI, 0x3e8), void (rG && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === rH && (rG && console['log']('INIT\x20MAGIC'), rH = new WMEmagic()), rH['iamready']() ? void rL() : (rG && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(rI, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var rC = document['createElement']('script');
rC['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), rC['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](rC), rG && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
rG && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(rI, 0x3e8);
}();
let rK = 'ven_unnudgedrpp', rL = function () {
rH['addMenuOption']({
'id': rK,
'title': 'RPP\x20with\x20no\x20entry/exit\x20point',
'text': 'Highlight\x20RPPs\x20with\x20no\x20entry/exit\x20point',
'color': '#EC3E40',
'loop': !0x0,
'section': 'venues',
'minZoom': 0x11,
'preLoop': null,
'loopFunc': rM,
'postLoop': null
});
};
var rM = function (rC) {
let rD = rC['attributes'];
if (!rD['categories']['includes']('RESIDENCE_HOME'))
return;
let rE = {}, rF = [], rG = rN(rC['getOLGeometry']());
0x0 === rD['entryExitPoints']['length'] && rC['getAddress']()['getStreetName']() !== rG['getAddress']()['getStreetName']() && (rF['push'](rH['utils']['highlightObject'](rC, '#EC3E40')), rE = {
'id': rD['id'],
'type': rC['type'],
'plugId': rK,
'obj': rC
});
return rF['length'] > 0x0 && setTimeout(rH['addMagic'](rK + '_' + rD['id'], rF), 0x64), rE;
}, rN = function (rC, rD = []) {
let rE, rF = 0x1 / 0x0;
for (let rG of W['model']['segments']['getObjectArray']()) {
if (!W['map']['getExtent']()['intersectsBounds'](rG['getOLGeometry']()['getBounds']()))
continue;
if (rD['includes'](rG['attributes']['id']))
continue;
let rH = rG['attributes']['roadType'];
if (0xa === rH || 0x10 === rH || 0x12 === rH || 0x13 === rH || 0x5 === rH)
continue;
let rI = rC['distanceTo'](rG['getOLGeometry'](), { 'details': !0x0 });
rI = new OpenLayers['Geometry']['LineString']([
new OpenLayers['Geometry']['Point'](rI['x1'], rI['y1']),
rC
])['getGeodesicLength'](W['map']['getProjectionObject']()), rI <= rF && (rF = rI, rE = rG);
}
return rE;
};
},
function (s0, s1, s2) {
'use strict';
if (void 0x0 === s3)
var s3 = !0x0;
var s4 = s3, s5 = s5 || void 0x0, s6 = function () {
return void 0x0 === window['require'] ? (setTimeout(s6, 0x3e8), void (s4 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(s6, 0x3e8), void (s4 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === s5 && (s4 && console['log']('INIT\x20MAGIC'), s5 = new WMEmagic()), s5['iamready']() ? void sa() : (s4 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(s6, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var s0 = document['createElement']('script');
s0['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), s0['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](s0), s4 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
s4 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(s6, 0x3e8);
}();
var s8 = {
6: 0x22b,
7: 0x1bc,
2: 0x14d,
1: 0xde,
'-1': 0x0
};
let s9 = 'seg_roundaboutroute', sa = function () {
s5['addMenuOption']({
'id': s9,
'title': 'Roundabouts\x20breaking\x20routing',
'text': 'Roundabouts\x20with\x20smaller\x20roadType\x20kill\x20routing\x20server',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': sc,
'postLoop': null,
'devMode': !0x1,
'actionFunc': sb
});
};
var sb = function () {
s5['utils']['loopSegments']([function (s0) {
sc(s0, !0x0);
}]);
}, sc = function (s0, s1) {
var s2 = s0['attributes'];
let s3 = {}, s4 = [];
var s6 = {}, sa = s0['getRoundabout'](), sb = -0x1;
if (sa) {
for (var sc = W['model']['segments']['getByIds'](sa['getSegmentsIds']()), so = 0x0; so < sc['length']; so++)
for (var sp = (st = sc[so])['getConnectedSegments']('to'), sq = 0x0; sq < sp['length']; sq++) {
var sr = sp[sq];
if (!sr['getRoundabout']() && sr['isDrivable']()) {
var ss = sr['attributes']['roadType'];
void 0x0 === s6[ss] ? s6[ss] = 0x1 : s6[ss]++, s8[ss] && s6[ss] > 0x1 && s8[sb] < s8[ss] && (sb = ss);
}
}
if (s5['utils']['getDirection'](s0) > 0x2)
s5['utils']['log']('Found\x20two\x20direction\x20roundabout\x20segment\x20with\x20with\x20ID:\x20' + s2['id']), s4['push'](s5['utils']['highlightObject'](s0, s5['color'](s9))), s3 = {
'id': s2['id'],
'type': s0['type'],
'plugId': s9,
'obj': s0,
'detail': 'two\x20ways\x20roundabout'
};
}
if (s8[sb] > s8[s0['attributes']['roadType']])
if (s1) {
if (sa)
for (sc = W['model']['segments']['getByIds'](sa['getSegmentsIds']()), so = 0x0; so < sc['length']; so++) {
var st = sc[so], su = {};
su['roadType'] = sb, s5['utils']['setAttributes'](st, su);
}
} else
s5['utils']['log']('Found\x20roundabout\x20segment\x20with\x20ID:\x20' + s2['id']), s4['push'](s5['utils']['highlightObject'](s0, s5['color'](s9))), s3 = {
'id': s2['id'],
'type': s0['type'],
'plugId': s9,
'obj': s0
};
return s4['length'] > 0x0 && setTimeout(s5['addMagic'](s9 + '_' + s2['id'], s4), 0x64), s3;
};
},
function (sw, sx, sy) {
'use strict';
var sz = sz || void 0x0, sA = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === sz && (sz = new WMEmagic()), sz['iamready']() ? sD() : setTimeout(sA, 0x3e8)) : setTimeout(sA, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var sw = document['createElement']('script');
sw['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), sw['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](sw);
}
setTimeout(sA, 0x3e8);
}();
let sC = 'seg_routepref', sD = function () {
sz['addMenuOption']({
'id': sC,
'title': 'Routing\x20preference',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': sE,
'postLoop': null,
'devMode': !0x1
});
};
var sE = function (sw) {
let sx = sw['attributes'], sy = {}, sA = [];
if (null != sx['routingRoadType']) {
sA['push'](sz['utils']['highlightObject'](sw, sz['color'](sC))), sy = {
'id': sx['id'],
'type': sw['type'],
'plugId': sC,
'obj': sw
};
}
return sA['length'] > 0x0 && setTimeout(sz['addMagic'](sC + '_' + sx['id'], sA), 0x64), sy;
};
},
function (sJ, sK, sL) {
'use strict';
var sM = sM || void 0x0, sN = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === sM && (sM = new WMEmagic()), sM['iamready']() ? sQ() : setTimeout(sN, 0x3e8)) : setTimeout(sN, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var sJ = document['createElement']('script');
sJ['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), sJ['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](sJ);
}
setTimeout(sN, 0x3e8);
}();
let sP = 'seg_headlightsReq', sQ = function () {
sM['addMenuOption']({
'id': sP,
'title': 'Headlights\x20required',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': sR,
'postLoop': null,
'devMode': !0x1
});
};
var sR = function (sJ) {
let sK = sJ['attributes'], sL = {}, sN = [];
if (0x20 & sK['flags']) {
sN['push'](sM['utils']['highlightObject'](sJ, sM['color'](sP))), sL = {
'id': sK['id'],
'type': sJ['type'],
'plugId': sP,
'obj': sJ
};
}
return sN['length'] > 0x0 && setTimeout(sM['addMagic'](sP + '_' + sK['id'], sN), 0x64), sL;
};
},
function (sW, sX, sY) {
'use strict';
var sZ = sZ || void 0x0, t0 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === sZ && (sZ = new WMEmagic()), sZ['iamready']() ? t3() : setTimeout(t0, 0x3e8)) : setTimeout(t0, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var sW = document['createElement']('script');
sW['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), sW['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](sW);
}
setTimeout(t0, 0x3e8);
}();
let t2 = 'seg_roundaboutname', t3 = function () {
sZ['addMenuOption']({
'id': t2,
'title': 'Named\x20roundabout',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': t4,
'postLoop': null,
'devMode': !0x1
});
};
var t4 = function (sW) {
let sX = sW['attributes'], sY = {}, t0 = [];
var t3 = sW['getAddress']();
if (sX['junctionID'] && t3 && t3['street'] && null != t3['street']['name']) {
t0['push'](sZ['utils']['highlightObject'](sW, sZ['color'](t2))), sY = {
'id': sX['id'],
'type': sW['type'],
'plugId': t2,
'obj': sW
};
}
return t0['length'] > 0x0 && setTimeout(sZ['addMagic'](t2 + '_' + sX['id'], t0), 0x64), sY;
};
},
function (ta, tb, tc) {
'use strict';
if (void 0x0 === td)
var td = !0x0;
var te = td, tf = tf || void 0x0, tg = function () {
return void 0x0 === window['require'] ? (setTimeout(tg, 0x3e8), void (te && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(tg, 0x3e8), void (te && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === tf && (te && console['log']('INIT\x20MAGIC'), tf = new WMEmagic()), tf['iamready']() ? void tj() : (te && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(tg, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var ta = document['createElement']('script');
ta['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), ta['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](ta), te && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
te && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(tg, 0x3e8);
}();
let ti = 'seg_autolocked', tj = function () {
tf['addMenuOption']({
'id': ti,
'title': 'Auto-locked',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': tk,
'postLoop': null,
'actionFunc': null,
'devMode': !0x1
});
};
var tk = function (ta, tb) {
var tc = ta['attributes'];
let td = {}, te = [];
null === tc['lockRank'] && (tf['utils']['log']('Found\x20auto-locked\x20segment\x20with\x20ID:\x20' + tc['id']), te['push'](tf['utils']['highlightObject'](ta, tf['color'](ti))), td = {
'id': tc['id'],
'type': ta['type'],
'plugId': ti,
'obj': ta
});
return te['length'] > 0x0 && setTimeout(tf['addMagic'](ti + '_' + tc['id'], te), 0x64), td;
};
},
function (tr, ts, tt) {
'use strict';
if (void 0x0 === tu)
var tu = !0x0;
var tv = tu, tw = tw || void 0x0, tx = function () {
return void 0x0 === window['require'] ? (setTimeout(tx, 0x3e8), void (tv && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(tx, 0x3e8), void (tv && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === tw && (tv && console['log']('INIT\x20MAGIC'), tw = new WMEmagic()), tw['iamready']() ? void tA() : (tv && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(tx, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var tr = document['createElement']('script');
tr['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), tr['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](tr), tv && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
tv && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(tx, 0x3e8);
}();
let tz = 'seg_unverifiedspeed', tA = function () {
tw['addMenuOption']({
'id': tz,
'title': 'Unverifies\x20Speed',
'color': '#F5D801',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': tB,
'postLoop': null,
'actionFunc': tC,
'devMode': !0x1
});
};
var tB = function (tr, ts) {
var tt = tr['attributes'];
let tu = {}, tv = [];
if (!0x0 === tt['revMaxSpeedUnverified'] || !0x0 === tt['fwdMaxSpeedUnverified'])
if (ts) {
var tx = {};
tx['revMaxSpeedUnverified'] = tx['fwdMaxSpeedUnverified'] = !0x1, tw['utils']['setAttributes'](tr, tx);
} else {
tw['utils']['log']('Found\x20unverified\x20speed\x20segment\x20with\x20ID:\x20' + tt['id']), tv['push'](tw['utils']['highlightObject'](tr, tw['color'](tz))), tu = {
'id': tt['id'],
'type': tr['type'],
'plugId': tz,
'obj': tr
};
}
return tv['length'] > 0x0 && setTimeout(tw['addMagic'](tz + '_' + tt['id'], tv), 0x64), tu;
}, tC = function () {
tw['utils']['loopSegments']([function (tr) {
tB(tr, !0x0);
}]);
};
},
function (tK, tL, tM) {
'use strict';
if (void 0x0 === tN)
var tN = !0x0;
var tO = tN, tP = tP || void 0x0, tQ = function () {
return void 0x0 === window['require'] ? (setTimeout(tQ, 0x3e8), void (tO && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(tQ, 0x3e8), void (tO && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === tP && (tO && console['log']('INIT\x20MAGIC'), tP = new WMEmagic()), tP['iamready']() ? void tT() : (tO && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(tQ, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var tK = document['createElement']('script');
tK['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), tK['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](tK), tO && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
tO && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(tQ, 0x3e8);
}();
let tS = 'seg_intersect', tT = function () {
tP['addMenuOption']({
'id': tS,
'title': 'Segments\x20intersecting',
'text': 'No\x20intersection\x20and\x20segments\x20on\x20the\x20same\x20elevation',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0x11,
'preLoop': null,
'loopFunc': tU,
'postLoop': null,
'devMode': !0x1
});
};
var tU = function (tK) {
if (!tP['utils']['isDrivable'](tK))
return;
let tL, tM = tK['attributes'], tN = tM['level'];
for (var tO in W['model']['segments']['objects'])
if (tM['id'] != tO) {
var tQ = W['model']['segments']['getObjectById'](tO);
if (tP['utils']['isDrivable'](tQ) && tP['utils']['isOnScreen'](tQ) && !tP['utils']['isRoundabout'](tQ) && tN === tQ['attributes']['level'] && tW(tK, tQ)) {
tL = 'segment:\x20' + tO;
break;
}
}
var tT = tK['getNodeByDirection']('from')['attributes']['id'], tU = tK['getNodeByDirection']('to')['attributes']['id'];
for (var u5 in W['model']['nodes']['objects']) {
let tM = W['model']['nodes']['objects'][u5];
if (!tM['isVirtual']() && (u5 != tT && u5 != tU && tK['getOLGeometry']()['intersects'](tM['getOLGeometry']()))) {
tL = 'node:\x20' + u5;
break;
}
}
let tV = {}, u8 = [];
tL && (tP['utils']['log']('Found\x20segment\x20intersecting\x20with\x20ID:\x20' + tM['id'] + '\x20and\x20' + tL), u8['push'](tP['utils']['highlightObject'](tK, '#EC3E40')), tV = {
'id': tM['id'],
'type': tK['type'],
'plugId': tS,
'obj': tK
});
return u8['length'] > 0x0 && setTimeout(tP['addMagic'](tS + '_' + tM['id'], u8), 0x64), tV;
}, tV = function (tK) {
let tL = tK['getOLGeometry']()['components'];
for (var tM, tN, tO = tL['length'] - 0x1, tP = new Array(tO), tQ = 0x0; tQ < tO; ++tQ)
tM = tL[tQ], tN = tL[tQ + 0x1], tM['x'] < tN['x'] ? tP[tQ] = {
'x1': Math['round'](0x989680 * tM['x']),
'y1': Math['round'](0x989680 * tM['y']),
'x2': Math['round'](0x989680 * tN['x']),
'y2': Math['round'](0x989680 * tN['y'])
} : tP[tQ] = {
'x1': Math['round'](0x989680 * tN['x']),
'y1': Math['round'](0x989680 * tN['y']),
'x2': Math['round'](0x989680 * tM['x']),
'y2': Math['round'](0x989680 * tM['y'])
};
return tP;
}, tW = function (tK, tL) {
var tM = !0x1, tN = tK['getOLGeometry']()['components']['length'] - 0x2, tO = tL['getOLGeometry']()['components']['length'] - 0x2;
for (let tQ = 0x1; tQ <= tN; ++tQ)
for (let tN = 0x1; tN <= tO; ++tN) {
let tO = tK['getOLGeometry']()['components'][tQ], tT = tL['getOLGeometry']()['components'][tN];
if (tO['x'] == tT['x'] && tO['y'] == tT['y']) {
tM = !0x0;
let tO = [];
tO['push'](new OpenLayers['Feature']['Vector'](tK['getOLGeometry']()['components'][tQ]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), tO['push'](new OpenLayers['Feature']['Vector'](tL['getOLGeometry']()['components'][tN]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), setTimeout(tP['addMagic'](tS + '_X_' + tK['attributes']['id'], tO), 0x64);
}
}
if (tM)
return !0x0;
var tQ, tT, tU, tW, uv, uw, ux, uy, uz = tV(tK), uA = tV(tL), uB = uz[0x0], uC = uA[0x0], uD = _['last'](uz), uE = _['last'](uA);
(uD['x1'] === uC['x1'] && uD['y1'] === uC['y1'] || uD['x1'] === uC['x2'] && uD['y1'] === uC['y2'] || uD['x2'] === uC['x1'] && uD['y2'] === uC['y1'] || uD['x2'] === uC['x2'] && uD['y2'] === uC['y2'] || uD['x1'] === uE['x1'] && uD['y1'] === uE['y1'] || uD['x1'] === uE['x2'] && uD['y1'] === uE['y2'] || uD['x2'] === uE['x1'] && uD['y2'] === uE['y1'] || uD['x2'] === uE['x2'] && uD['y2'] === uE['y2']) && uz['splice'](uz['length'] - 0x1, 0x1), (uB['x1'] === uE['x1'] && uB['y1'] === uE['y1'] || uB['x1'] === uE['x2'] && uB['y1'] === uE['y2'] || uB['x2'] === uE['x1'] && uB['y2'] === uE['y1'] || uB['x2'] === uE['x2'] && uB['y2'] === uE['y2'] || uB['x1'] === uC['x1'] && uB['y1'] === uC['y1'] || uB['x1'] === uC['x2'] && uB['y1'] === uC['y2'] || uB['x2'] === uC['x1'] && uB['y2'] === uC['y1'] || uB['x2'] === uC['x2'] && uB['y2'] === uC['y2']) && uz['splice'](0x0, 0x1);
uF:
for (var uG = 0x0, uH = uz['length']; uG < uH; ++uG) {
tT = (tQ = uz[uG])['x1'], tU = tQ['x2'], tW = tQ['y1'], uv = tQ['y2'];
for (var uI = 0x0, uJ = uA['length']; uI < uJ && !((uw = uA[uI])['x1'] > tU); ++uI)
if (!(uw['x2'] < tT) && (ux = uw['y1'], uy = uw['y2'], !(Math['min'](ux, uy) > Math['max'](tW, uv)) && !(Math['max'](ux, uy) < Math['min'](tW, uv)) && OpenLayers['Geometry']['segmentsIntersect'](tQ, uw))) {
tP['utils']['log'](uG), tP['utils']['log'](JSON['stringify'](tQ)), tP['utils']['log'](uI), tP['utils']['log'](JSON['stringify'](uw));
let tM = [];
return tM['push'](new OpenLayers['Feature']['Vector'](tK['getOLGeometry']()['components'][uH]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '20px',
'textAlign': 'center',
'textBaseline': 'middle'
})), tM['push'](new OpenLayers['Feature']['Vector'](tL['getOLGeometry']()['components'][uJ]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '20px',
'textAlign': 'center',
'textBaseline': 'middle'
})), setTimeout(tP['addMagic'](tS + '_X_' + tK['attributes']['id'], tM), 0x64), !0x0;
}
}
return !0x1;
};
},
function (uL, uM, uN) {
'use strict';
if (void 0x0 === uO)
var uO = !0x0;
var uP = uO, uQ = uQ || void 0x0, uR = function () {
return void 0x0 === window['require'] ? (setTimeout(uR, 0x3e8), void (uP && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(uR, 0x3e8), void (uP && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === uQ && (uP && console['log']('INIT\x20MAGIC'), uQ = new WMEmagic()), uQ['iamready']() ? void uU() : (uP && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(uR, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var uL = document['createElement']('script');
uL['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), uL['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](uL), uP && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
uP && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(uR, 0x3e8);
}();
let uT = 'seg_roundaboutground', uU = function () {
uQ['addMenuOption']({
'id': uT,
'title': 'Roundabout\x20not\x20flat',
'text': 'Roundabouts\x20usual\x20are\x20flat,\x20not\x20a\x20roller\x20coaster',
'color': '#377EC6',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': uV,
'postLoop': null,
'devMode': !0x1
});
};
var uV = function (uL) {
if (!uQ['utils']['isRoundabout'](uL))
return;
let uM = uL['attributes'], uN = uM['level'];
for (var uO, uP = uL['getRoundabout'](), uR = W['model']['segments']['getByIds'](uP['getSegmentsIds']()), uU = 0x0; uU < uR['length']; uU++) {
if (uR[uU]['attributes']['level'] !== uN) {
uO = !0x0;
break;
}
}
let uV = {}, v4 = [];
uO && (uQ['utils']['log']('Found\x20rollar\x20coaster\x20roundabout:' + uM['id']), v4['push'](uQ['utils']['highlightObject'](uL, '#377EC6')), uV = {
'id': uM['id'],
'type': uL['type'],
'plugId': uT,
'obj': uL
});
return v4['length'] > 0x0 && setTimeout(uQ['addMagic'](uT + '_' + uM['id'], v4), 0x64), uV;
};
},
function (v5, v6, v7) {
'use strict';
if (void 0x0 === v8)
var v8 = !0x0;
var v9 = v8, va = va || void 0x0, vb = function () {
return void 0x0 === window['require'] ? (setTimeout(vb, 0x3e8), void (v9 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(vb, 0x3e8), void (v9 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === va && (v9 && console['log']('INIT\x20MAGIC'), va = new WMEmagic()), va['iamready']() ? void ve() : (v9 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(vb, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var v5 = document['createElement']('script');
v5['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), v5['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](v5), v9 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
v9 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(vb, 0x3e8);
}();
let vd = 'seg_roundaboutspeed', ve = function () {
let v5 = va['getConfig'](vd, 'roundabout_roads', null, null)['default'];
void 0x0 !== v5 && '' != v5 || va['addMenuOption']({
'id': vd,
'title': 'Roundabout\x20has\x20speed',
'text': 'Roundabouts\x20without\x20speedlimit\x20will\x20alert\x20the\x20user\x20if\x20they\x20are\x20speeding\x20when\x20exiting\x20to\x20another\x20street',
'color': '#01A46C',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': vh,
'postLoop': null,
'actionFunc': vg,
'devMode': !0x1
});
};
var vg = function () {
va['utils']['loopSegments']([function (v5) {
vh(v5, !0x0);
}]);
}, vh = function (v5, v6) {
if (!va['utils']['isRoundabout'](v5))
return;
let v7 = v5['attributes'];
var v8 = v7['revMaxSpeed'], v9 = v7['fwdMaxSpeed'], vb = !0x1;
(0x1 == v7['revDirection'] && v8 > 0x0 || 0x1 == v7['fwdDirection'] && v9 > 0x0) && (vb = !0x0);
let ve = {}, vg = [];
if (vb)
if (!0x0 === v6) {
var vh = {};
vh['revMaxSpeed'] = vh['fwdMaxSpeed'] = null, va['utils']['setAttributes'](v5, vh);
} else {
va['utils']['log']('Found\x20a\x20speedy\x20roundabout:' + v7['id']), vg['push'](va['utils']['highlightObject'](v5, '#01A46C')), ve = {
'id': v7['id'],
'type': v5['type'],
'plugId': vd,
'obj': v5
};
}
return vg['length'] > 0x0 && setTimeout(va['addMagic'](vd + '_' + v7['id'], vg), 0x64), ve;
};
},
function (vs, vt, vu) {
'use strict';
var vv = vv || void 0x0, vw = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === vv && (vv = new WMEmagic()), vv['iamready']() ? vy() : setTimeout(vw, 0x3e8)) : setTimeout(vw, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var vs = document['createElement']('script');
vs['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), vs['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](vs);
}
setTimeout(vw, 0x3e8);
}();
let vy = function () {
vv['addMenuOption']({
'id': 'ext_fixui',
'title': 'fix\x20UI',
'color': !0x1,
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': vz,
'stopFunc': !0x1,
'default': !0x1
});
};
var vz = function () {
var vs = document['createElement']('DIV');
vs['className'] = 'overlay-button\x20zoom-button', vs['style']['borderRadius'] = '0\x200\x200\x200', vs['style']['borderBottom'] = 0x0, vs['style']['borderTop'] = 0x0, vs['style']['justifyContent'] = 'center';
var vt = document['createElement']('I');
vt['id'] = 'magic_zoom', vt['style']['fontSize'] = '20px', vs['appendChild'](vt);
var vu = document['getElementsByClassName']('zoom-bar-container')[0x0];
vu['insertBefore'](vs, vu['children'][0x1]), W['map']['events']['register']('zoomend', null, vA), vA();
}, vA = function () {
document['getElementById']('magic_zoom')['innerText'] = W['map']['getZoom']();
};
},
function (vE, vF, vG) {
'use strict';
if (void 0x0 === vH)
var vH = !0x0;
var vI = vH, vJ = vJ || void 0x0, vK = function () {
return void 0x0 === window['require'] ? (setTimeout(vK, 0x3e8), void (vI && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(vK, 0x3e8), void (vI && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === vJ && (vI && console['log']('INIT\x20MAGIC'), vJ = new WMEmagic()), vJ['iamready']() ? void vM() : (vI && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(vK, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var vE = document['createElement']('script');
vE['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), vE['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](vE), vI && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
vI && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(vK, 0x3e8);
}();
let vM = function () {
vJ['addMenuOption']({
'id': 'ven_pmr',
'title': 'Disability\x20parking',
'text': 'Standerize\x20parking\x20lots\x20for\x20reduced\x20mobility',
'color': '#01A46C',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': vO,
'postLoop': null,
'actionFunc': vN,
'devMode': !0x1
});
};
var vN = function () {
vJ['utils']['loopVenues']([function (vE) {
vO(vE, !0x0);
}]);
}, vO = function (vE, vF) {
let vG = vE['attributes'];
if (vE['getOLGeometry']()['getArea']() > 0x1f4)
return !0x1;
vG['name'], _['includes'](vG['aliases'], 'PMR');
var vH = vJ['utils']['getLockRank'](vE), vI = _['includes'](vG['services'], 'DISABILITY_PARKING');
vG['description'];
let vK = vJ['getConfig']('ven_pmr', 'min_lock', null, vE)['default'], vM = vJ['normalizedLevel']();
vK > vM && (vK = vM);
var vN = !0x1;
vH < vK && vI && (vN = !0x0);
let vO = {}, vZ = [];
if (vN)
if (!0x0 === vF) {
var w0 = {};
w0['lockRank'] = vK, vJ['utils']['setAttributes'](vE, w0);
} else {
vJ['utils']['log']('Found\x20a\x20bad\x20PMR:' + vG['id']), vZ['push'](vJ['utils']['highlightObject'](vE, '#01A46C')), vO = {
'id': vG['id'],
'type': vE['type'],
'plugId': 'ven_pmr',
'obj': vE
};
}
return vI && vZ['push'](new OpenLayers['Feature']['Vector'](vE['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '♿️',
'fontSize': '20px',
'textAlign': 'center',
'textBaseline': 'middle'
})), vZ['length'] > 0x0 && setTimeout(vJ['addMagic']('ven_pmr_' + vG['id'], vZ), 0x64), vO;
};
},
function (w1, w2, w3) {
'use strict';
if (void 0x0 === w4)
var w4 = !0x0;
var w5 = w4, w6 = w6 || void 0x0, w7 = function () {
return void 0x0 === window['require'] ? (setTimeout(w7, 0x3e8), void (w5 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(w7, 0x3e8), void (w5 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === w6 && (w5 && console['log']('INIT\x20MAGIC'), w6 = new WMEmagic()), w6['iamready']() ? void wa() : (w5 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(w7, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var w1 = document['createElement']('script');
w1['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), w1['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](w1), w5 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
w5 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(w7, 0x3e8);
}();
let w9 = 'ven_streetfaraway', wa = function () {
w6['addMenuOption']({
'id': w9,
'title': 'Landmark\x20far\x20from\x20street',
'text': 'This\x20landmark\x20is\x20far\x20far\x20away\x20from\x20the\x20street',
'color': '#01A46C',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': wb,
'postLoop': null,
'minZoom': 0x11,
'actionFunc': null,
'devMode': !0x1
});
};
var wb = function (w1, w2) {
let w3 = w1['attributes'];
var w4 = 'notfound', w5 = w1['getOLGeometry']()['getCentroid'](), w7 = W['model']['streets']['getObjectById'](w3['streetID']);
if (void 0x0 === w7)
return;
if (w7 && w7['isEmpty'])
return;
for (var wa in W['model']['segments']['objects']) {
var wb = W['model']['segments']['getObjectById'](wa);
if (w6['utils']['isOnScreen'](wb))
if (wb['attributes']['primaryStreetID'] == w3['streetID']) {
var wk = wb['getOLGeometry']()['getCentroid']();
let w1 = w5['distanceTo'](wk);
if (!(w1 > 0x1f4)) {
w4 = !0x1;
break;
}
0x0 != w4 && (w4 = w1);
}
}
let wm = {}, wn = [];
w4 && (w6['utils']['log']('Found\x20a\x20landmark\x20with\x20a\x20far\x20far\x20away\x20[' + w4 + ']\x20street:' + w3['id']), wn['push'](w6['utils']['highlightObject'](w1, '#01A46C')), wm = {
'id': w3['id'],
'type': w1['type'],
'plugId': w9,
'obj': w1
});
return wn['length'] > 0x0 && setTimeout(w6['addMagic'](w9 + '_' + w3['id'], wn), 0x64), wm;
};
},
function (wo, wp, wq) {
'use strict';
if (void 0x0 === wr)
var wr = !0x0;
var ws = wr, wt = wt || void 0x0, wu = function () {
return void 0x0 === window['require'] ? (setTimeout(wu, 0x3e8), void (ws && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(wu, 0x3e8), void (ws && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === wt && (ws && console['log']('INIT\x20MAGIC'), wt = new WMEmagic()), wt['iamready']() ? void ww() : (ws && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(wu, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var wo = document['createElement']('script');
wo['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), wo['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](wo), ws && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
ws && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(wu, 0x3e8);
}();
let ww = function () {
wt['addMenuOption']({
'id': 'ven_pce',
'title': 'Charging\x20parking',
'text': 'Standerize\x20parking\x20lots\x20for\x20charging',
'color': '#01A46C',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': wy,
'postLoop': null,
'actionFunc': wx,
'devMode': !0x1
});
};
var wx = function () {
wt['utils']['loopVenues']([function (wo) {
wy(wo, !0x0);
}]);
}, wy = function (wo, wp) {
let wq = wo['attributes'];
if (wo['getOLGeometry']()['getArea']() > 0x1f4)
return !0x1;
wq['name'], _['includes'](wq['aliases'], 'PCE');
var wr = wt['utils']['getLockRank'](wo), ws = _['includes'](wq['services'], 'EV_CHARGING_STATION');
wq['description'];
let wu = wt['getConfig']('ven_pce', 'min_lock', null, wo)['default'], ww = wt['normalizedLevel']();
wu > ww && (wu = ww);
var wx = !0x1;
wr < wu && ws && (wx = !0x0);
let wy = {}, wJ = [];
if (wx)
if (!0x0 === wp) {
var wK = {};
wK['lockRank'] = wu, wt['utils']['setAttributes'](wo, wK);
} else {
wt['utils']['log']('Found\x20a\x20bad\x20PCE:' + wq['id']), wJ['push'](wt['utils']['highlightObject'](wo, '#01A46C')), wy = {
'id': wq['id'],
'type': wo['type'],
'plugId': 'ven_pce',
'obj': wo
};
}
return ws && wJ['push'](new OpenLayers['Feature']['Vector'](wo['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '⚡️',
'fontSize': '20px',
'textAlign': 'center',
'textBaseline': 'middle'
})), wJ['length'] > 0x0 && setTimeout(wt['addMagic']('ven_pce_' + wq['id'], wJ), 0x64), wy;
};
},
function (wL, wM, wN) {
'use strict';
if (void 0x0 === wO)
var wO = !0x0;
var wP = wO, wQ = wQ || void 0x0, wR = function () {
return void 0x0 === window['require'] ? (setTimeout(wR, 0x3e8), void (wP && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(wR, 0x3e8), void (wP && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === wQ && (wP && console['log']('INIT\x20MAGIC'), wQ = new WMEmagic()), wQ['iamready']() ? void wT() : (wP && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(wR, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var wL = document['createElement']('script');
wL['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), wL['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](wL), wP && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
wP && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(wR, 0x3e8);
}();
let wT = function () {
wQ['addMenuOption']({
'id': 'seg_narrow',
'title': 'Narrow(Alley)\x20Street',
'text': 'At\x20this\x20time,\x20DO\x20NOT\x20use\x20the\x20Narrow\x20Street\x20road\x20type\x20in\x20the\x20USA',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': wU,
'postLoop': null,
'devMode': !0x1
});
};
var wU = function (wL, wM) {
let wN = wL['attributes'], wO = {}, wP = [];
0x16 == wN['roadType'] && (wQ['utils']['log']('Found\x20a\x20narrow\x20segment:' + wN['id']), wP['push'](wQ['utils']['highlightObject'](wL, '#EC3E40')), wO = {
'id': wN['id'],
'type': wL['type'],
'plugId': 'seg_narrow',
'obj': wL
});
return wP['length'] > 0x0 && setTimeout(wQ['addMagic']('seg_narrow_' + wN['id'], wP), 0x64), wO;
};
},
function (x0, x3, x4) {
'use strict';
if (void 0x0 === x5)
var x5 = !0x0;
let x6 = x5;
var x7 = x7 || void 0x0;
let x8 = function () {
return void 0x0 === window['require'] ? (setTimeout(x8, 0x3e8), void (x6 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(x8, 0x3e8), void (x6 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === x7 && (x6 && console['log']('INIT\x20MAGIC'), x7 = new WMEmagic()), x7['iamready']() ? void xb() : (x6 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(x8, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var x0 = document['createElement']('script');
x0['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), x0['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](x0), x6 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
x6 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(x8, 0x3e8);
}();
let xa = 'seg_angleless30', xb = function () {
x7['addMenuOption']({
'id': xa,
'title': 'Aggressive\x20turn',
'text': 'Please\x20avoid\x20turns\x20less\x20than\x2030\x20degress',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': xx,
'postLoop': null,
'devMode': !0x1
});
};
function xc(x0, x3, x4) {
var x5 = parseFloat(x3) - parseFloat(x0);
return x5 > 0xb4 && (x5 -= 0x168), x5 < -0xb4 && (x5 += 0x168), x4 ? x5 : x5 > 0x0 ? x5 - 0xb4 : x5 + 0xb4;
}
function xh(x0, x3) {
return 'function' == typeof x0['getObjectById'] ? x0['getObjectById'](x3) : void 0x0 === x0['getObjectById'] ? x0['get'](x3) : void 0x0;
}
function xk(x0) {
return x0['getOLGeometry']()['components'][0x0];
}
function xm(x0) {
return x0['getOLGeometry']()['components'][x0['getOLGeometry']()['components']['length'] - 0x1];
}
function xo(x0) {
return x0['getOLGeometry']()['components'][0x1];
}
function xq(x0) {
return x0['getOLGeometry']()['components'][x0['getOLGeometry']()['components']['length'] - 0x2];
}
function xs(x0, x3) {
return null == x0 || null == x3 ? null : (x3['attributes']['fromNodeID'] === x0 ? (x4 = xo(x3)['x'] - xk(x3)['x'], x5 = xo(x3)['y'] - xk(x3)['y']) : (x4 = xq(x3)['x'] - xm(x3)['x'], x5 = xq(x3)['y'] - xm(x3)['y']), 0xb4 * Math['atan2'](x5, x4) / Math['PI'] % 0x168);
var x4, x5;
}
let xx = function (x0) {
let x3 = x0['attributes'], x4 = {}, x5 = [], x6 = !0x1;
x0['attributes']['id'];
var x8 = x0, xb = xh(window['W']['model']['nodes'], x8['attributes']['fromNodeID']), xk = xh(window['W']['model']['nodes'], x8['attributes']['toNodeID']), xm = xs(x8['attributes']['fromNodeID'], x8), xo = xs(x8['attributes']['toNodeID'], x8);
for (let x4 = 0x0; x4 < xb['attributes']['segIDs']['length']; x4++) {
let x5 = W['model']['segments']['getObjectById'](xb['attributes']['segIDs'][x4]);
if (x3['id'] != x5['attributes']['id'] && (x0['isDrivable']() && x5['isDrivable']() && x0['isTurnAllowed'](x5, xb))) {
var xq = xs(x8['attributes']['fromNodeID'], x5), xx = xc(xq, xm, !0x1);
if (xx >= 0xaa || xx <= -0xaa) {
x7['utils']['log']('Segment\x20to\x20' + x3['id'] + '\x20from\x20' + x5['attributes']['id'] + '\x20angle:\x20' + xq + ',\x20turn\x20angle:\x20' + xx, 0x2), x6 = !0x0;
break;
}
}
}
for (let x4 = 0x0; x4 < xk['attributes']['segIDs']['length']; x4++) {
let x5 = W['model']['segments']['getObjectById'](xk['attributes']['segIDs'][x4]);
if (x3['id'] != x5['attributes']['id'] && (x0['isDrivable']() && x5['isDrivable']() && x0['isTurnAllowed'](x5, xk))) {
var xO = xs(x8['attributes']['toNodeID'], x5), xP = xc(xO, xo, !0x1);
if (xP >= 0xaa || xP <= -0xaa) {
x7['utils']['log']('Segment\x20from\x20' + x3['id'] + '\x20to\x20' + x5['attributes']['id'] + '\x20angle:\x20' + xO + ',\x20turn\x20angle:\x20' + xP, 0x2), x6 = !0x0;
break;
}
}
}
x6 && (x7['utils']['log']('Found\x20a\x20aggresive\x20turn\x20on\x20segment:' + x3['id']), x5['push'](x7['utils']['highlightObject'](x0, '#EC3E40')), x4 = {
'id': x3['id'],
'type': x0['type'],
'plugId': xa,
'obj': x0
});
return x5['length'] > 0x0 && setTimeout(x7['addMagic'](xa + '_' + x3['id'], x5), 0x64), x4;
};
},
function (xQ, xR, xS) {
'use strict';
if (void 0x0 === xT)
var xT = !0x0;
var xU = xT, xV = xV || void 0x0, xW = function () {
return void 0x0 === window['require'] ? (setTimeout(xW, 0x3e8), void (xU && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(xW, 0x3e8), void (xU && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === xV && (xU && console['log']('INIT\x20MAGIC'), xV = new WMEmagic()), xV['iamready']() ? void xZ() : (xU && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(xW, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var xQ = document['createElement']('script');
xQ['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), xQ['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](xQ), xU && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
xU && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(xW, 0x3e8);
}();
let xY = 'ven_doubleparkinglots', xZ = function () {
xV['addMenuOption']({
'id': xY,
'title': 'Parking\x20lots\x20overlapping',
'text': 'Parking\x20lots\x20must\x20be\x20over\x20each\x20other',
'color': '#EC3E40',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': y0,
'postLoop': null,
'devMode': !0x1
});
};
var y0 = function (xQ) {
let xR = xQ['attributes'];
if (!xR['categories']['includes']('PARKING_LOT'))
return;
if (xR['name']['includes']('🅿️\x20♿️'))
return;
if (xR['name']['includes']('🅿️\x20🔌'))
return;
var xS = !0x1;
for (var xT in W['model']['venues']['objects']) {
var xU = W['model']['venues']['getObjectById'](xT), xW = xU['attributes'];
if (xR['id'] != xW['id'])
if (xW['categories']['includes']('PARKING_LOT') && !xW['name']['includes']('🅿️\x20♿️') && !xW['name']['includes']('🅿️\x20🔌') && xQ['getOLGeometry']()['intersects'](xU['getOLGeometry']())) {
xS = !0x0;
break;
}
}
let xZ = {}, y0 = [];
xS && (xV['utils']['log']('Found\x20parking\x20lot\x20over\x20other\x20Parking\x20Lot\x20with\x20ID:\x20' + xR['id']), y0['push'](xV['utils']['highlightObject'](xQ, '#EC3E40')), xZ = {
'id': xR['id'],
'type': xQ['type'],
'plugId': xY,
'obj': xQ
});
return y0['length'] > 0x0 && setTimeout(xV['addMagic'](xY + '_' + xR['id'], y0), 0x64), xZ;
};
},
function (yb, yc, yd) {
'use strict';
if (void 0x0 === ye)
var ye = !0x0;
var yf = ye, yg = yg || void 0x0, yh = function () {
return void 0x0 === window['require'] ? (setTimeout(yh, 0x3e8), void (yf && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(yh, 0x3e8), void (yf && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === yg && (yf && console['log']('INIT\x20MAGIC'), yg = new WMEmagic()), yg['iamready']() ? void yk() : (yf && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(yh, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var yb = document['createElement']('script');
yb['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), yb['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](yb), yf && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
yf && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(yh, 0x3e8);
}();
let yj = 'ven_badEmoji', yk = function () {
yg['addMenuOption']({
'id': yj,
'title': 'bad\x20Emoji',
'text': 'this\x20Emoji\x20is\x20not\x20supported\x20by\x20the\x20map\x20and\x20will\x20be\x20burned\x20as\x20▯▯',
'color': '#EC3E40',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': yl,
'postLoop': null,
'actionFunc': null,
'devMode': !0x1
});
};
var yl = function (yb, yc) {
let yd = yb['attributes'];
var ye = yd['name'];
let yf = {}, yh = [];
var yk = ye;
(yk = ym(yk, !0x0, yj), ye !== (yk = ym(yk, 'noDefault', yj)) && yb['getOLGeometry']()['getArea']() > 0x1f4) && (yg['utils']['log']('Found\x20bad\x20Emoji\x20landmark\x20with\x20ID:\x20' + yd['id']), yh['push'](yg['utils']['highlightObject'](yb, yg['color'](yj))), yf = {
'id': yd['id'],
'type': yb['type'],
'plugId': yj,
'obj': yb,
'result': yk
});
return yh['length'] > 0x0 && setTimeout(yg['addMagic'](yj + '_' + yd['id'], yh), 0x64), yf;
}, ym = function (yb, yc, yd) {
var ye = 0x1;
do {
var yf = yg['getConfig'](yd, 'regex' + ye, yc);
if (ye++, void 0x0 === yf['default'])
break;
if (void 0x0 !== yf['enabled'] && !0x1 !== yf['enabled']) {
var yh, yj, yk;
[yh, yj, yk] = yf['default']['split']('\x20###\x20');
var yl = new RegExp(yh, yj);
yb = yb['replace'](yl, yk);
}
} while ('string' == typeof yf['default']);
return yb;
};
},
function (yD, yE, yF) {
'use strict';
if (void 0x0 === yG)
var yG = !0x0;
var yH = yG, yI = yI || void 0x0, yJ = function () {
return void 0x0 === window['require'] ? (setTimeout(yJ, 0x3e8), void (yH && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(yJ, 0x3e8), void (yH && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === yI && (yH && console['log']('INIT\x20MAGIC'), yI = new WMEmagic()), yI['iamready']() ? void yM() : (yH && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(yJ, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var yD = document['createElement']('script');
yD['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), yD['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](yD), yH && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
yH && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(yJ, 0x3e8);
}();
let yL = 'ven_cargasEdescargs', yM = function () {
yI['addMenuOption']({
'id': yL,
'title': 'Cargo\x20parking',
'text': 'Standerize\x20parking\x20lots\x20for\x20cargo',
'color': '#01A46C',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': yO,
'postLoop': null,
'actionFunc': yN,
'devMode': !0x1
});
};
var yN = function () {
yI['utils']['loopVenues']([function (yD) {
yO(yD, !0x0);
}]);
}, yO = function (yD, yE) {
let yF = yD['attributes'];
if (yD['getOLGeometry']()['getArea']() > 0x1f4)
return !0x1;
var yG = yF['name'], yH = yI['utils']['getLockRank'](yD), yJ = _['includes'](yF['services'], 'DELIVERIES') || '🚚\x20Cargas\x20e\x20Descargas' == yG;
let yM = yI['getConfig'](yL, 'min_lock', null, yD)['default'], yN = yI['normalizedLevel']();
yM > yN && (yM = yN);
var yO = !0x1;
yH < yM && yJ && (yO = !0x0);
let yZ = {}, z0 = [];
if (yO)
if (!0x0 === yE) {
var z1 = {};
z1['lockRank'] = yM, yI['utils']['setAttributes'](yD, z1);
} else {
yI['utils']['log']('Found\x20a\x20bad\x20PMR:' + yF['id']), z0['push'](yI['utils']['highlightObject'](yD, '#01A46C')), yZ = {
'id': yF['id'],
'type': yD['type'],
'plugId': yL,
'obj': yD
};
}
return yJ && z0['push'](new OpenLayers['Feature']['Vector'](yD['getOLGeometry']()['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '🚚',
'fontSize': '20px',
'textAlign': 'center',
'textBaseline': 'middle'
})), z0['length'] > 0x0 && setTimeout(yI['addMagic'](yL + '_' + yF['id'], z0), 0x64), yZ;
};
},
function (z2, z3, z4) {
'use strict';
if (void 0x0 === z5)
var z5 = !0x0;
var z6 = z5, z7 = z7 || void 0x0, z8 = function () {
return void 0x0 === window['require'] ? (setTimeout(z8, 0x3e8), void (z6 && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(z8, 0x3e8), void (z6 && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === z7 && (z6 && console['log']('INIT\x20MAGIC'), z7 = new WMEmagic()), z7['iamready']() ? void zb() : (z6 && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(z8, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var z2 = document['createElement']('script');
z2['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), z2['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](z2), z6 && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
z6 && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(z8, 0x3e8);
}();
let za = 'seg_streetLen', zb = function () {
z7['addMenuOption']({
'id': za,
'title': 'Street\x20name\x20is\x20too\x20long',
'text': 'Long\x20street\x20names\x20brack\x20the\x20UI,\x20forcing\x20the\x20baloon\x20to\x20be\x20out\x20of\x20the\x20segment',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': zc,
'postLoop': null,
'devMode': !0x1
});
};
var zc = function (z2) {
var z3 = z2['attributes'];
if (0x4 == z3['roadType'])
return;
let z4 = {}, z5 = [];
z2['getAddress']()['getStreetName']()['length'] > 0x28 && (z7['utils']['log']('Found\x20long\x20street\x20name\x20segment\x20with\x20ID:\x20' + z3['id']), z5['push'](z7['utils']['highlightObject'](z2, z7['color'](za))), z4 = {
'id': z3['id'],
'type': z2['type'],
'plugId': za,
'obj': z2
});
return z5['length'] > 0x0 && setTimeout(z7['addMagic'](za + '_' + z3['id'], z5), 0x64), z4;
};
},
function (zh, zi, zj) {
'use strict';
if (void 0x0 === zk)
var zk = !0x0;
var zl = zk, zm = zm || void 0x0, zn = function () {
return void 0x0 === window['require'] ? (setTimeout(zn, 0x3e8), void (zl && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(zn, 0x3e8), void (zl && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === zm && (zl && console['log']('INIT\x20MAGIC'), zm = new WMEmagic()), zm['iamready']() ? void zq() : (zl && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(zn, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var zh = document['createElement']('script');
zh['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), zh['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](zh), zl && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
zl && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(zn, 0x3e8);
}();
let zp = 'ven_gasSations', zq = function () {
zm['addMenuOption']({
'id': zp,
'title': 'Wrong\x20road\x20type\x20in\x20Gas\x20Station',
'text': 'You\x20should\x20use\x20parking\x20lot\x20road\x20type\x20in\x20Gas\x20Stations',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'venues',
'minZoom': 0x11,
'preLoop': null,
'loopFunc': zr,
'postLoop': null,
'devMode': !0x1
});
};
var zr = function (zh) {
let zi = zh['attributes'];
if (!_['includes'](zh['attributes']['categories'], 'GAS_STATION'))
return;
var zj = zs(zh);
if ('looks_good' == zj['result'])
return;
let zk = {}, zl = [];
zj && (zm['utils']['log']('Found\x20GAS\x20STATION\x20with\x20road\x20problems\x20with\x20ID:\x20' + zi['id']), zl['push'](zm['utils']['highlightObject'](zh, zm['color'](zp))), zk = {
'id': zi['id'],
'type': zh['type'],
'plugId': zp,
'obj': zh
});
return zl['length'] > 0x0 && setTimeout(zm['addMagic'](zp + '_' + zi['id'], zl), 0x64), zk;
}, zs = function (zh) {
var zi = !0x1;
for (var zj in W['model']['segments']['objects']) {
var zk = W['model']['segments']['getObjectById'](zj);
if (zm['utils']['isOnScreen'](zk) && zh['getOLGeometry']()['intersects'](zk['getOLGeometry']())) {
if (0x14 != zk['attributes']['roadType'])
return { 'result': 'seg_no_pl' };
zi = !0x0;
}
}
return zi ? { 'result': 'looks_good' } : { 'result': 'no_seg' };
};
},
function (zC, zD, zE) {
'use strict';
if (void 0x0 === zF)
var zF = !0x0;
var zG = zF, zH = zH || void 0x0, zI = function () {
return void 0x0 === window['require'] ? (setTimeout(zI, 0x3e8), void (zG && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(zI, 0x3e8), void (zG && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === zH && (zG && console['log']('INIT\x20MAGIC'), zH = new WMEmagic()), zH['iamready']() ? void zL() : (zG && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(zI, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var zC = document['createElement']('script');
zC['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), zC['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](zC), zG && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
zG && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(zI, 0x3e8);
}();
let zK = 'seg_emptyStreetName', zL = function () {
zH['addMenuOption']({
'id': zK,
'title': 'Segments\x20with\x20empty\x20name',
'text': 'Easy\x20way\x20to\x20find\x20segments\x20without\x20street\x20names',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': zM,
'postLoop': null,
'devMode': !0x1
});
};
var zM = function (zC) {
let zD = {}, zE = [], zF = zC['attributes'];
!0x0 === _['isEmpty'](zC['getAddress']()['getStreet']()) && (zE['push'](zH['utils']['highlightObject'](zC, zH['color'](zK))), zD = {
'id': zC['attributes']['id'],
'type': zC['type'],
'plugId': zK,
'obj': zC
});
return zE['length'] > 0x0 && setTimeout(zH['addMagic'](zK + '_' + zF['id'], zE), 0x64), zD;
};
},
function (zR, zS, zT) {
'use strict';
if (void 0x0 === zU)
var zU = !0x0;
var zV = zU, zW = zW || void 0x0, zX = function () {
return void 0x0 === window['require'] ? (setTimeout(zX, 0x3e8), void (zV && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(zX, 0x3e8), void (zV && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === zW && (zV && console['log']('INIT\x20MAGIC'), zW = new WMEmagic()), zW['iamready']() ? void A0() : (zV && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(zX, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var zR = document['createElement']('script');
zR['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), zR['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](zR), zV && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
zV && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(zX, 0x3e8);
}();
let zZ = 'seg_segmentroute', A0 = function () {
zW['addMenuOption']({
'id': zZ,
'title': 'Segment\x20breaking\x20routing',
'text': 'Segment\x20with\x20smaller\x20roadType\x20kill\x20routing\x20server',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'preLoop': null,
'loopFunc': A2,
'postLoop': null,
'minZoom': 0x11,
'actionFunc': null,
'devMode': !0x1
});
};
var A1 = {
3: 0x29a,
6: 0x22b,
7: 0x1bc,
2: 0x14d,
1: 0xde
}, A2 = function (zR, zS) {
let zT = zR['attributes'];
if (zW['utils']['isRoundabout'](zR))
return;
if (!zR['isDrivable']())
return;
let zU = !0x1;
var zV = 0x0;
zR['getConnectedSegmentsByDirection']('to')['forEach'](function (zS) {
A1[zS['attributes']['roadType']] > A1[zR['attributes']['roadType']] && zV++;
});
var zX = 0x0;
zR['getConnectedSegmentsByDirection']('from')['forEach'](function (zS) {
A1[zS['attributes']['roadType']] > A1[zR['attributes']['roadType']] && zX++;
}), Math['abs'](zV - zX) > -0x1 && zV > 0x0 && zX > 0x0 && (0x1 == zV || 0x1 == zX) && (zU = !0x0);
let A0 = {}, A2 = [];
zU && (zW['utils']['log']('Found\x20a\x20segment\x20breaking\x20routing:' + zT['id']), A2['push'](zW['utils']['highlightObject'](zR, '#EC3E40')), A0 = {
'id': zT['id'],
'type': zR['type'],
'plugId': zZ,
'obj': zR
});
return A2['length'] > 0x0 && setTimeout(zW['addMagic'](zZ + '_' + zT['id'], A2), 0x64), A0;
};
},
function (Ad, Ae, Af) {
'use strict';
if (void 0x0 === Ag)
var Ag = !0x0;
var Ah = Ag, Ai = Ai || void 0x0, Aj = function () {
return void 0x0 === window['require'] ? (setTimeout(Aj, 0x3e8), void (Ah && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(Aj, 0x3e8), void (Ah && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === Ai && (Ah && console['log']('INIT\x20MAGIC'), Ai = new WMEmagic()), Ai['iamready']() ? void Am() : (Ah && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(Aj, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var Ad = document['createElement']('script');
Ad['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), Ad['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](Ad), Ah && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
Ah && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(Aj, 0x3e8);
}();
let Al = 'seg_emptyCityName', Am = function () {
Ai['addMenuOption']({
'id': Al,
'title': 'Segments\x20with\x20empty\x20city\x20name',
'text': 'Easy\x20way\x20to\x20find\x20segments\x20without\x20city\x20names',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': An,
'postLoop': null,
'devMode': !0x1
});
}, An = function (Ad) {
let Ae = {}, Af = [], Ag = Ad['attributes'];
if (function (Ad, Ae) {
let Af = Ae['attributes'], Ag = Ai['utils']['getCityName'](Ae), Ah = Ai['utils']['hasToll'](Ae), Aj = {
1: 'street_roads',
17: 'private_roads',
20: 'parking_roads',
8: 'off_roads',
7: 'minor_roads',
6: 'major_roads',
2: 'primary_roads',
3: 'freeway_roads',
4: 'ramp_roads',
18: 'railroad_roads',
15: 'ferry_roads',
10: 'ped_boardwalk',
5: 'walking_trail',
101: 'streetCity_roads',
117: 'privateCity_roads',
120: 'parkingCity_roads',
108: 'offCity_roads',
107: 'minorCity_roads',
106: 'majorCity_roads',
102: 'primaryCity_roads',
103: 'freewayCity_roads',
104: 'rampCity_roads',
118: 'railroadCity_roads',
115: 'ferryCity_roads',
110: 'pedCity_boardwalk',
105: 'walkingCity_trail',
201: 'street_roads_toll',
217: 'private_roads_toll',
220: 'parking_roads_toll',
208: 'off_roads_toll',
207: 'minor_roads_toll',
206: 'major_roads_toll',
202: 'primary_roads_toll',
203: 'freeway_roads_toll',
204: 'ramp_roads_toll',
218: 'railroad_roads_toll',
215: 'ferry_roads_toll',
210: 'ped_boardwalk_toll',
205: 'walking_trail_toll',
301: 'streetCity_roads_toll',
317: 'privateCity_roads_toll',
320: 'parkingCity_roads_toll',
308: 'offCity_roads_toll',
307: 'minorCity_roads_toll',
306: 'majorCity_roads_toll',
302: 'primaryCity_roads_toll',
303: 'freewayCity_roads_toll',
304: 'rampCity_roads_toll',
318: 'railroadCity_roads_toll',
315: 'ferryCity_roads_toll',
310: 'pedCity_boardwalk_toll',
305: 'walkingCity_trail_toll'
}, Al = (Af['roadType'], 0x0);
_['isEmpty'](Ag) || (Al += 0x64), Ah && (Al += 0xc8);
let Am = Ai['getConfig'](Ad, Aj[Af['roadType'] + Al], null, Ae)['enabled'];
return !0x0 === Am || void 0x0 === Am;
}(Al, Ad)) {
if (!0x0 === _['isEmpty'](Ad['getAddress']()['getCity']()))
Af['push'](Ai['utils']['highlightObject'](Ad, Ai['color'](Al))), Ae = {
'id': Ad['attributes']['id'],
'type': Ad['type'],
'plugId': Al,
'obj': Ad
};
return Af['length'] > 0x0 && setTimeout(Ai['addMagic'](Al + '_' + Ag['id'], Af), 0x64), Ae;
}
};
},
function (AA, AB, AC) {
'use strict';
if (void 0x0 === AD)
var AD = !0x0;
var AE = AD, AF = AF || void 0x0, AG = function () {
return void 0x0 === window['require'] ? (setTimeout(AG, 0x3e8), void (AE && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(AG, 0x3e8), void (AE && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === AF && (AE && console['log']('INIT\x20MAGIC'), AF = new WMEmagic()), AF['iamready']() ? void AJ() : (AE && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(AG, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var AA = document['createElement']('script');
AA['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), AA['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](AA), AE && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
AE && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(AG, 0x3e8);
}();
let AI = 'seg_small_geometry', AJ = function () {
AF['addMenuOption']({
'id': AI,
'title': 'Geometry\x20nodes\x20too\x20close',
'text': 'Sometimes\x20these\x20hidden\x20geometries\x20might\x20create\x20problems\x20with\x20aggressive\x20turns\x20and\x20such.\x20HINT:\x20look\x20near\x20the\x20connection\x20nodes',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': AK,
'postLoop': null,
'devMode': !0x1
});
};
var AK = function (AA, AB) {
var AC = AA['attributes'];
let AD = {};
if (!AF['utils']['isDrivable'](AA))
return;
let AE = [];
if (AA['getOLGeometry']()['components']['length'] > 0x2 && null === AC['junctionID'])
for (var AG = 0x0; AG < AA['getOLGeometry']()['components']['length'] - 0x1; AG++)
if (AA['getOLGeometry']()['components'][AG]['distanceTo'](AA['getOLGeometry']()['components'][AG + 0x1]) < 0x1) {
if (!AB) {
AF['utils']['log']('Found\x20segment\x20with\x20short\x20geometry\x20nodes,\x20with\x20ID:\x20' + AC['id']), AE['push'](new OpenLayers['Feature']['Vector'](AA['getOLGeometry']()['components'][AG]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), AE['push'](new OpenLayers['Feature']['Vector'](AA['getOLGeometry']()['components'][AG + 0x1]['clone'](), {}, {
'fill': !0x1,
'labelAlign': 'cm',
'label': '💥',
'fontSize': '10px',
'textAlign': 'center',
'textBaseline': 'middle'
})), AE['push'](AF['utils']['highlightObject'](AA, AF['color'](AI))), AD = {
'id': AC['id'],
'type': AA['type'],
'plugId': AI,
'obj': AA
};
break;
}
var AJ = AA['getOLGeometry']()['simplify']();
AJ['removeComponent'](AJ['components'][0x1]);
var AK = new (window['require']('Waze/Action/UpdateSegmentGeometry'))(AA, AA['getOLGeometry'](), AJ);
W['model']['actionManager']['add'](AK);
}
return AE['length'] > 0x0 && setTimeout(AF['addMagic'](AI + '_' + AC['id'], AE), 0x64), AD;
};
},
function (AT, AU, AV) {
'use strict';
if (void 0x0 === AW)
var AW = !0x0;
var AX = AW, AY = AY || void 0x0, AZ = function () {
return void 0x0 === window['require'] ? (setTimeout(AZ, 0x3e8), void (AX && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(AZ, 0x3e8), void (AX && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === AY && (AX && console['log']('INIT\x20MAGIC'), AY = new WMEmagic()), AY['iamready']() ? void B1() : (AX && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(AZ, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var AT = document['createElement']('script');
AT['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), AT['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](AT), AX && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
AX && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(AZ, 0x3e8);
}();
let B1 = function () {
AY['addMenuOption']({
'id': 'ext_dynamic_ui',
'title': 'Highlight\x20components',
'text': 'You\x20can\x20give\x20HL\x20through\x20query\x20string',
'howto': 'Follow\x20the\x20parameters\x20documented\x20and\x20enjoy',
'color': !0x1,
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': B3,
'stopFunc': !0x1,
'default': !0x1,
'devMode': !0x1
});
};
var B2 = function (AT) {
return /^\w+$/['test'](AT);
}, B3 = function () {
var AT = new URLSearchParams(location['search']);
if (AT['has']('hl_id')) {
var AU = AT['get']('hl_id');
if ('lockRank' === AU && AT['has']('hl_value')) {
var AV = AT['get']('hl_value'), AW = AT['get']('hl_bgcolor'), AX = AT['get']('hl_color');
if (!B2(AU))
return;
if (!B2(AV))
return;
B2(AX) || (AX = '000000'), B2(AW) || (AW = '43cf45b8');
var AY = '@keyframes\x20glowing\x20\x20{0%\x20{\x20\x20box-shadow:\x200\x20\x200\x20-10px\x20#ed503b;\x20\x20}\x2040%\x20\x20{\x20box-shadow:\x200\x20\x200\x2020px\x20\x20#ed503b;\x20}\x20\x2060%\x20{\x20box-shadow:\x200\x200\x2020px\x20#ed503b;\x20}\x20100%\x20{\x20box-shadow:\x200\x200\x20-10px\x20#ed503b;\x20}\x20}', AZ = document['createElement']('style');
AZ['type'] = 'text/css', AZ['styleSheet'] ? AZ['styleSheet']['cssText'] = AY : AZ['appendChild'](document['createTextNode'](AY)), document['getElementsByTagName']('head')[0x0]['appendChild'](AZ);
var B1 = document['getElementById']({
1: 'lockRank-0-13',
2: 'lockRank-1-14',
3: 'lockRank-2-15',
4: 'lockRank-3-16',
5: 'lockRank-4-17',
6: 'lockRank-5-18'
}[AV])['nextElementSibling'];
if (!B1)
return;
AX && (B1['style']['color'] = '#' + AX), B1['style']['backgroundColor'] = '#' + AW, B1['style']['boxShadow'] = '#' + AW + '\x200px\x200px\x2030px', B1['style']['cursor'] = 'cell', B1['style']['animation'] = 'glowing\x203000ms\x20infinite';
}
}
};
},
function (Bd, Be, Bf) {
'use strict';
if (void 0x0 === Bg)
var Bg = !0x0;
var Bh = Bg, Bi = Bi || void 0x0, Bj = function () {
return void 0x0 === window['require'] ? (setTimeout(Bj, 0x3e8), void (Bh && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(Bj, 0x3e8), void (Bh && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === Bi && (Bh && console['log']('INIT\x20MAGIC'), Bi = new WMEmagic()), Bi['iamready']() ? void Bm() : (Bh && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(Bj, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var Bd = document['createElement']('script');
Bd['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), Bd['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](Bd), Bh && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
Bh && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(Bj, 0x3e8);
}();
let Bl = 'seg_lanes', Bm = function () {
Bi['addMenuOption']({
'id': Bl,
'title': 'Lanes\x20Enabled',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': Bn,
'postLoop': null,
'actionFunc': null,
'devMode': !0x1
});
};
var Bn = function (Bd, Be) {
var Bf = Bd['attributes'];
let Bg = {}, Bh = [];
(Bd['getFwdLanes']()['laneCount'] > 0x0 || Bd['getRevLanes']()['laneCount'] > 0x0) && (Bi['utils']['log']('Found\x20lanes\x20on\x20segment\x20with\x20ID:\x20' + Bf['id']), Bh['push'](Bi['utils']['highlightObject'](Bd, Bi['color'](Bl))), Bg = {
'id': Bf['id'],
'type': Bd['type'],
'plugId': Bl,
'obj': Bd
});
return Bh['length'] > 0x0 && setTimeout(Bi['addMagic'](Bl + '_' + Bf['id'], Bh), 0x64), Bg;
};
},
function (Bt, Bu, Bv) {
'use strict';
if (void 0x0 === Bw)
var Bw = !0x0;
var Bx = Bw, By = By || void 0x0, Bz = function () {
return void 0x0 === window['require'] ? (setTimeout(Bz, 0x3e8), void (Bx && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(Bz, 0x3e8), void (Bx && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === By && (Bx && console['log']('INIT\x20MAGIC'), By = new WMEmagic()), By['iamready']() ? void BB() : (Bx && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(Bz, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var Bt = document['createElement']('script');
Bt['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), Bt['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](Bt), Bx && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
Bx && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(Bz, 0x3e8);
}();
let BB = function () {
By['addMenuOption']({
'id': 'ext_gravatar',
'title': 'Gravatar\x20avatar',
'color': !0x1,
'loop': !0x1,
'section': 'extras',
'preLoop': null,
'loopFunc': null,
'postLoop': null,
'startFunc': BC,
'stopFunc': !0x1,
'default': !0x1,
'devMode': !0x1
});
};
var BC = function () {
var Bt = (Bt = Bv(0x3b))(W['loginManager']['user']['email']['toLowerCase']()), Bu = (W['loginManager']['user']['normalizedLevel'], document['getElementsByClassName']('user-box-avatar-container')[0x0]['children'][0x0]), Bw = Bu['src'];
Bu['src'] = 'https://www.gravatar.com/avatar/' + Bt + '?d=' + Bw, Bu['addEventListener']('click', function () {
setTimeout(function () {
document['getElementsByClassName']('user-box-avatar-container')[0x1]['children'][0x0]['src'] = 'https://www.gravatar.com/avatar/' + Bt + '?d=' + Bw;
}, 0xfa);
});
};
},
function (BG, BH, BI) {
var BJ;
!function (BK) {
'use strict';
function BL(BG, BH) {
var BI = (0xffff & BG) + (0xffff & BH);
return (BG >> 0x10) + (BH >> 0x10) + (BI >> 0x10) << 0x10 | 0xffff & BI;
}
function BP(BG, BH, BI, BJ, BK, BP) {
return BL((BW = BL(BL(BH, BG), BL(BJ, BP))) << (BX = BK) | BW >>> 0x20 - BX, BI);
var BW, BX;
}
function BY(BG, BH, BI, BJ, BK, BL, BY) {
return BP(BH & BI | ~BH & BJ, BG, BH, BK, BL, BY);
}
function C6(BG, BH, BI, BJ, BK, BL, BY) {
return BP(BH & BJ | BI & ~BJ, BG, BH, BK, BL, BY);
}
function Ce(BG, BH, BI, BJ, BK, BL, BY) {
return BP(BH ^ BI ^ BJ, BG, BH, BK, BL, BY);
}
function Cm(BG, BH, BI, BJ, BK, BL, BY) {
return BP(BI ^ (BH | ~BJ), BG, BH, BK, BL, BY);
}
function Cu(BG, BH) {
var BI, BJ, BK, BP, Cu;
BG[BH >> 0x5] |= 0x80 << BH % 0x20, BG[0xe + (BH + 0x40 >>> 0x9 << 0x4)] = BH;
var CC = 0x67452301, CD = -0x10325477, CE = -0x67452302, CF = 0x10325476;
for (BI = 0x0; BI < BG['length']; BI += 0x10)
BJ = CC, BK = CD, BP = CE, Cu = CF, CC = BY(CC, CD, CE, CF, BG[BI], 0x7, -0x28955b88), CF = BY(CF, CC, CD, CE, BG[BI + 0x1], 0xc, -0x173848aa), CE = BY(CE, CF, CC, CD, BG[BI + 0x2], 0x11, 0x242070db), CD = BY(CD, CE, CF, CC, BG[BI + 0x3], 0x16, -0x3e423112), CC = BY(CC, CD, CE, CF, BG[BI + 0x4], 0x7, -0xa83f051), CF = BY(CF, CC, CD, CE, BG[BI + 0x5], 0xc, 0x4787c62a), CE = BY(CE, CF, CC, CD, BG[BI + 0x6], 0x11, -0x57cfb9ed), CD = BY(CD, CE, CF, CC, BG[BI + 0x7], 0x16, -0x2b96aff), CC = BY(CC, CD, CE, CF, BG[BI + 0x8], 0x7, 0x698098d8), CF = BY(CF, CC, CD, CE, BG[BI + 0x9], 0xc, -0x74bb0851), CE = BY(CE, CF, CC, CD, BG[BI + 0xa], 0x11, -0xa44f), CD = BY(CD, CE, CF, CC, BG[BI + 0xb], 0x16, -0x76a32842), CC = BY(CC, CD, CE, CF, BG[BI + 0xc], 0x7, 0x6b901122), CF = BY(CF, CC, CD, CE, BG[BI + 0xd], 0xc, -0x2678e6d), CE = BY(CE, CF, CC, CD, BG[BI + 0xe], 0x11, -0x5986bc72), CC = C6(CC, CD = BY(CD, CE, CF, CC, BG[BI + 0xf], 0x16, 0x49b40821), CE, CF, BG[BI + 0x1], 0x5, -0x9e1da9e), CF = C6(CF, CC, CD, CE, BG[BI + 0x6], 0x9, -0x3fbf4cc0), CE = C6(CE, CF, CC, CD, BG[BI + 0xb], 0xe, 0x265e5a51), CD = C6(CD, CE, CF, CC, BG[BI], 0x14, -0x16493856), CC = C6(CC, CD, CE, CF, BG[BI + 0x5], 0x5, -0x29d0efa3), CF = C6(CF, CC, CD, CE, BG[BI + 0xa], 0x9, 0x2441453), CE = C6(CE, CF, CC, CD, BG[BI + 0xf], 0xe, -0x275e197f), CD = C6(CD, CE, CF, CC, BG[BI + 0x4], 0x14, -0x182c0438), CC = C6(CC, CD, CE, CF, BG[BI + 0x9], 0x5, 0x21e1cde6), CF = C6(CF, CC, CD, CE, BG[BI + 0xe], 0x9, -0x3cc8f82a), CE = C6(CE, CF, CC, CD, BG[BI + 0x3], 0xe, -0xb2af279), CD = C6(CD, CE, CF, CC, BG[BI + 0x8], 0x14, 0x455a14ed), CC = C6(CC, CD, CE, CF, BG[BI + 0xd], 0x5, -0x561c16fb), CF = C6(CF, CC, CD, CE, BG[BI + 0x2], 0x9, -0x3105c08), CE = C6(CE, CF, CC, CD, BG[BI + 0x7], 0xe, 0x676f02d9), CC = Ce(CC, CD = C6(CD, CE, CF, CC, BG[BI + 0xc], 0x14, -0x72d5b376), CE, CF, BG[BI + 0x5], 0x4, -0x5c6be), CF = Ce(CF, CC, CD, CE, BG[BI + 0x8], 0xb, -0x788e097f), CE = Ce(CE, CF, CC, CD, BG[BI + 0xb], 0x10, 0x6d9d6122), CD = Ce(CD, CE, CF, CC, BG[BI + 0xe], 0x17, -0x21ac7f4), CC = Ce(CC, CD, CE, CF, BG[BI + 0x1], 0x4, -0x5b4115bc), CF = Ce(CF, CC, CD, CE, BG[BI + 0x4], 0xb, 0x4bdecfa9), CE = Ce(CE, CF, CC, CD, BG[BI + 0x7], 0x10, -0x944b4a0), CD = Ce(CD, CE, CF, CC, BG[BI + 0xa], 0x17, -0x41404390), CC = Ce(CC, CD, CE, CF, BG[BI + 0xd], 0x4, 0x289b7ec6), CF = Ce(CF, CC, CD, CE, BG[BI], 0xb, -0x155ed806), CE = Ce(CE, CF, CC, CD, BG[BI + 0x3], 0x10, -0x2b10cf7b), CD = Ce(CD, CE, CF, CC, BG[BI + 0x6], 0x17, 0x4881d05), CC = Ce(CC, CD, CE, CF, BG[BI + 0x9], 0x4, -0x262b2fc7), CF = Ce(CF, CC, CD, CE, BG[BI + 0xc], 0xb, -0x1924661b), CE = Ce(CE, CF, CC, CD, BG[BI + 0xf], 0x10, 0x1fa27cf8), CC = Cm(CC, CD = Ce(CD, CE, CF, CC, BG[BI + 0x2], 0x17, -0x3b53a99b), CE, CF, BG[BI], 0x6, -0xbd6ddbc), CF = Cm(CF, CC, CD, CE, BG[BI + 0x7], 0xa, 0x432aff97), CE = Cm(CE, CF, CC, CD, BG[BI + 0xe], 0xf, -0x546bdc59), CD = Cm(CD, CE, CF, CC, BG[BI + 0x5], 0x15, -0x36c5fc7), CC = Cm(CC, CD, CE, CF, BG[BI + 0xc], 0x6, 0x655b59c3), CF = Cm(CF, CC, CD, CE, BG[BI + 0x3], 0xa, -0x70f3336e), CE = Cm(CE, CF, CC, CD, BG[BI + 0xa], 0xf, -0x100b83), CD = Cm(CD, CE, CF, CC, BG[BI + 0x1], 0x15, -0x7a7ba22f), CC = Cm(CC, CD, CE, CF, BG[BI + 0x8], 0x6, 0x6fa87e4f), CF = Cm(CF, CC, CD, CE, BG[BI + 0xf], 0xa, -0x1d31920), CE = Cm(CE, CF, CC, CD, BG[BI + 0x6], 0xf, -0x5cfebcec), CD = Cm(CD, CE, CF, CC, BG[BI + 0xd], 0x15, 0x4e0811a1), CC = Cm(CC, CD, CE, CF, BG[BI + 0x4], 0x6, -0x8ac817e), CF = Cm(CF, CC, CD, CE, BG[BI + 0xb], 0xa, -0x42c50dcb), CE = Cm(CE, CF, CC, CD, BG[BI + 0x2], 0xf, 0x2ad7d2bb), CD = Cm(CD, CE, CF, CC, BG[BI + 0x9], 0x15, -0x14792c6f), CC = BL(CC, BJ), CD = BL(CD, BK), CE = BL(CE, BP), CF = BL(CF, Cu);
return [
CC,
CD,
CE,
CF
];
}
function CG(BG) {
var BH, BI = '', BJ = 0x20 * BG['length'];
for (BH = 0x0; BH < BJ; BH += 0x8)
BI += String['fromCharCode'](BG[BH >> 0x5] >>> BH % 0x20 & 0xff);
return BI;
}
function CL(BG) {
var BH, BI = [];
for (BI[(BG['length'] >> 0x2) - 0x1] = void 0x0, BH = 0x0; BH < BI['length']; BH += 0x1)
BI[BH] = 0x0;
var BJ = 0x8 * BG['length'];
for (BH = 0x0; BH < BJ; BH += 0x8)
BI[BH >> 0x5] |= (0xff & BG['charCodeAt'](BH / 0x8)) << BH % 0x20;
return BI;
}
function CQ(BG) {
var BH, BI, BJ = '';
for (BI = 0x0; BI < BG['length']; BI += 0x1)
BH = BG['charCodeAt'](BI), BJ += '0123456789abcdef'['charAt'](BH >>> 0x4 & 0xf) + '0123456789abcdef'['charAt'](0xf & BH);
return BJ;
}
function CV(BG) {
return unescape(encodeURIComponent(BG));
}
function CX(BG) {
return function (BG) {
return CG(Cu(CL(BG), 0x8 * BG['length']));
}(CV(BG));
}
function D0(BG, BH) {
return function (BG, BH) {
var BI, BJ, BK = CL(BG), BL = [], BP = [];
for (BL[0xf] = BP[0xf] = void 0x0, BK['length'] > 0x10 && (BK = Cu(BK, 0x8 * BG['length'])), BI = 0x0; BI < 0x10; BI += 0x1)
BL[BI] = 0x36363636 ^ BK[BI], BP[BI] = 0x5c5c5c5c ^ BK[BI];
return BJ = Cu(BL['concat'](CL(BH)), 0x200 + 0x8 * BH['length']), CG(Cu(BP['concat'](BJ), 0x280));
}(CV(BG), CV(BH));
}
function Da(BG, BH, BI) {
return BH ? BI ? D0(BH, BG) : CQ(D0(BH, BG)) : BI ? CX(BG) : CQ(CX(BG));
}
void 0x0 === (BJ = function () {
return Da;
}['call'](BH, BI, BH, BG)) || (BG['exports'] = BJ);
}();
},
function (De, Df, Dg) {
'use strict';
if (void 0x0 === Dh)
var Dh = !0x0;
var Di = Dh, Dj = Dj || void 0x0, Dk = function () {
return void 0x0 === window['require'] ? (setTimeout(Dk, 0x3e8), void (Di && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(Dk, 0x3e8), void (Di && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === Dj && (Di && console['log']('INIT\x20MAGIC'), Dj = new WMEmagic()), Dj['iamready']() ? void Dn() : (Di && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(Dk, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var De = document['createElement']('script');
De['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), De['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](De), Di && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
Di && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(Dk, 0x3e8);
}();
let Dm = 'ven_doubleInterchange', Dn = function () {
Dj['addMenuOption']({
'id': Dm,
'title': 'Interchange\x20over\x20each\x20other',
'text': 'You\x20should\x20review\x20this\x20kind\x20of\x20venues\x20that\x20are\x20over\x20each\x20other',
'color': '#01A46C',
'loop': !0x0,
'section': 'venues',
'minZoom': 0x11,
'preLoop': null,
'loopFunc': Do,
'postLoop': null,
'devMode': !0x1
});
};
var Do = function (De) {
let Df = De['attributes'];
if (!_['includes'](De['attributes']['categories'], 'JUNCTION_INTERCHANGE'))
return;
var Dg = Dp(De);
if ('looks_good' == Dg['result'])
return;
let Dh = {}, Di = [];
Dg && (Dj['utils']['log']('Found\x20double\x20intersection\x20with\x20ID:\x20' + Df['id']), Di['push'](Dj['utils']['highlightObject'](De, Dj['color'](Dm))), Dh = {
'id': Df['id'],
'type': De['type'],
'plugId': Dm,
'obj': De
});
return Di['length'] > 0x0 && setTimeout(Dj['addMagic'](Dm + '_' + Df['id'], Di), 0x64), Dh;
}, Dp = function (De) {
for (var Df in W['model']['venues']['objects'])
if (Df != De['attributes']['id']) {
var Dg = W['model']['venues']['getObjectById'](Df);
if (De['getOLGeometry']()['intersects'](Dg['getOLGeometry']()) && _['includes'](Dg['attributes']['categories'], 'JUNCTION_INTERCHANGE'))
return { 'result': 'intersect' };
}
return { 'result': 'looks_good' };
};
},
function (Dy, Dz, DA) {
'use strict';
if (void 0x0 === DB)
var DB = !0x0;
var DC = DB, DD = DD || void 0x0, DE = function () {
return void 0x0 === window['require'] ? (setTimeout(DE, 0x3e8), void (DC && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(DE, 0x3e8), void (DC && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === DD && (DC && console['log']('INIT\x20MAGIC'), DD = new WMEmagic()), DD['iamready']() ? void DH() : (DC && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(DE, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var Dy = document['createElement']('script');
Dy['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), Dy['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](Dy), DC && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
DC && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(DE, 0x3e8);
}();
let DG = 'ven_multiEntries', DH = function () {
DD['addMenuOption']({
'id': DG,
'title': 'Venues\x20with\x20multi\x20Entries',
'text': 'Venues\x20with\x20more\x20that\x20one\x20entry',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': DI,
'postLoop': null,
'devMode': !0x1
});
};
var DI = function (Dy) {
let Dz = Dy['attributes'];
Dz['categories'];
let DA = {}, DB = [];
Dz['entryExitPoints']['length'] > 0x1 && (DD['utils']['log']('Found\x20venue\x20with\x20more\x20than\x20one\x20entry\x20with\x20ID:\x20' + Dz['id']), DB['push'](DD['utils']['highlightObject'](Dy, '#FFFFFF')), DA = {
'id': Dz['id'],
'type': Dy['type'],
'plugId': DG,
'obj': Dy
});
return DB['length'] > 0x0 && setTimeout(DD['addMagic'](DG + '_' + Dz['id'], DB), 0x64), DA;
};
},
function (DN, DO, DP) {
'use strict';
if (void 0x0 === DQ)
var DQ = !0x0;
var DR = DQ, DS = DS || void 0x0, DT = function () {
return void 0x0 === window['require'] ? (setTimeout(DT, 0x3e8), void (DR && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(DT, 0x3e8), void (DR && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === DS && (DR && console['log']('INIT\x20MAGIC'), DS = new WMEmagic()), DS['iamready']() ? void DW() : (DR && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(DT, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var DN = document['createElement']('script');
DN['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), DN['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](DN), DR && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
DR && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(DT, 0x3e8);
}();
let DV = 'ven_HNsMissing', DW = function () {
DS['addMenuOption']({
'id': DV,
'title': 'House\x20Number\x20missing\x20on\x20street',
'text': 'Landmark\x20has\x20HN\x20that\x20is\x20not\x20on\x20segment',
'color': '#FF9B2B',
'loop': !0x0,
'section': 'venues',
'preLoop': E3,
'loopFunc': DX,
'postLoop': null,
'devMode': !0x1
}), W['map']['events']['register']('zoomend', null, E3), W['map']['events']['register']('moveend', null, E3), W['model']['events']['register']('mergeend', null, E3), W['model']['actionManager']['events']['register']('afterclearactions', null, E3), W['model']['actionManager']['events']['register']('afteraction', null, E3), W['model']['actionManager']['events']['register']('afterundoaction', null, E3), W['model']['actionManager']['events']['register']('noActions', null, E3), W['accelerators']['events']['register']('reloadData', null, E3), W['editingMediator']['on']('change:editingHouseNumbers', E3);
}, DX = function (DN) {
let DO = DN['attributes'];
if (!DS['utils']['isOnScreen'](DN))
return;
if (void 0x0 === document['segmentHouseNumbers'])
return;
if (void 0x0 === DO['houseNumber'])
return;
let DP = W['model']['streets']['getObjectById'](DO['streetID']);
if (void 0x0 === DP)
return;
if (DP && DP['isEmpty'])
return;
let DQ = DY(DN);
if (DQ['length'] < 0x1)
return;
let DR = DZ(DQ, DO['houseNumber']), DT = -0x29a;
DR['length'] > 0x0 && (DT = E0(DN, DR[0x0]));
let DW = {}, DX = [];
if (DT > 0x1f4 || DT <= -0x29a) {
DS['utils']['log']('Found\x20House\x20Number\x20not\x20in\x20street\x20with\x20ID:\x20' + DO['id']), DX['push'](DS['utils']['highlightObject'](DN, '#FF9B2B')), DW = {
'id': DO['id'],
'type': DN['type'],
'plugId': DV,
'obj': DN
};
}
return DX['length'] > 0x0 && setTimeout(DS['addMagic'](DV + '_' + DO['id'], DX), 0x64), DW;
}, DY = function (DN) {
let DO = DN['attributes'], DP = [];
for (var DQ in W['model']['segments']['objects']) {
let DN = W['model']['segments']['getObjectById'](DQ)['attributes'];
DN['primaryStreetID'] == DO['streetID'] && DP['push'](DN['id']);
}
return DP;
}, DZ = function (DN, DO) {
let DP = [];
for (let DQ = 0x0; DQ < DN['length']; DQ++) {
let DR = DN[DQ], DS = W['model']['segmentHouseNumbers']['getByAttributes']({
'segID': DR,
'number': DO
});
if (DS['length'] > 0x0 && DP['push'](DS[0x0]), document['segmentHouseNumbers'])
for (let DN = 0x0; DN < document['segmentHouseNumbers']['length']; DN++)
document['segmentHouseNumbers'][DN]['segID'] == DR && DP['push'](document['segmentHouseNumbers'][DN]);
}
return DP;
}, E0 = function (DN, DO) {
let DP = DN['getNavigationPoints'](), DQ = -0x14d;
if (DP['length'] > 0x0) {
for (let DN = 0x0; DN < DP['length']; DN++)
if (DP[DN]['isPrimary']() && void 0x0 !== DO['getOLGeometry']()['getCentroid']) {
DQ = DP[DN]['getPoint']()['getCentroid']()['distanceTo'](DO['getOLGeometry']()['getCentroid']());
break;
}
} else
void 0x0 !== DO['getOLGeometry']()['getCentroid'] && (DQ = DN['getOLGeometry']()['getCentroid']()['distanceTo'](DO['getOLGeometry']()['getCentroid']()));
return DQ;
}, E1 = [], E2 = Date['now'](), E3 = function () {
DS['utils']['log']('Refreshing\x20HouseNumbers\x20from\x20server...');
let DN = W['map']['getExtent']()['toGeometry'](), DO = W['model']['segments']['objects'], DP = Object['keys'](DO)['filter'](function (DP) {
if (DO[DP]['attributes']['hasHNs'] && DN['intersects'](DO[DP]['getOLGeometry']()))
return DP;
})['map'](function (DN) {
return DN;
}), DQ = (E1['filter'](function (DN) {
return DP['indexOf'](DN) < 0x0;
}), W['model']['segmentHouseNumbers']['objects']), DR = DP['filter'](function (DN) {
return !(Object['keys'](DQ)['indexOf'](DN) >= 0x0) && (E1['indexOf'](DN) < 0x0 || E2 < DO[DN]['attributes']['updatedOn']);
});
E1 = DP, DR['length'] > 0x0 && (E2 = Date['now'](), DS['utils']['log']('Donalding\x20HouseNumbers\x20from\x20server...'), $['ajax']({
'dataType': 'json',
'url': EG(),
'data': { 'ids': DR['join'](',') },
'success': function (DN) {
if (void 0x0 !== DN['error']);
else {
if (void 0x0 !== DN['segmentHouseNumbers']['objects'])
if (void 0x0 === document['segmentHouseNumbers'])
document['segmentHouseNumbers'] = DN['segmentHouseNumbers']['objects'];
else {
for (var DO = 0x0; DO < DN['segmentHouseNumbers']['objects']['length']; DO++)
for (var DP = DN['segmentHouseNumbers']['objects'][DO], DQ = 0x0; DQ < document['segmentHouseNumbers']['length']; DQ++) {
document['segmentHouseNumbers'][DQ]['id'] == DP['id'] && document['segmentHouseNumbers']['splice'](DQ, 0x1);
}
Array['prototype']['push']['apply'](document['segmentHouseNumbers'], DN['segmentHouseNumbers']['objects']);
}
}
}
}));
};
function EG() {
let DN = 'https://www.waze.com';
return ~document['URL']['indexOf']('https://beta.waze.com') && (DN = 'https://beta.waze.com'), DN += W['Config']['paths']['houseNumbers'], DN;
}
},
function (EI, EJ, EK) {
'use strict';
if (void 0x0 === EL)
var EL = !0x0;
var EM = EL, EN = EN || void 0x0, EO = function () {
return void 0x0 === window['require'] ? (setTimeout(EO, 0x3e8), void (EM && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(EO, 0x3e8), void (EM && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === EN && (EM && console['log']('INIT\x20MAGIC'), EN = new WMEmagic()), EN['iamready']() ? void ER() : (EM && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(EO, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var EI = document['createElement']('script');
EI['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), EI['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](EI), EM && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
EM && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(EO, 0x3e8);
}();
let EQ = 'ven_noEntries', ER = function () {
EN['addMenuOption']({
'id': EQ,
'title': 'Big\x20Place,\x20no\x20Entries',
'text': 'Big\x20Places\x20usually\x20are\x20surrounded\x20by\x20several\x20roads,\x20if\x20you\x20don\x27t\x20specify\x20an\x20entry\x20point,\x20Waze\x20might\x20not\x20suggest\x20the\x20correct\x20place\x20to\x20stop',
'color': '#F5D801',
'loop': !0x0,
'section': 'venues',
'preLoop': null,
'loopFunc': ES,
'postLoop': null,
'devMode': !0x1
});
};
var ES = function (EI) {
let EJ = EI['attributes'];
if (_['isEmpty'](EJ['name']))
return;
var EK = EJ['categories'];
if (EK['includes']('PARKING_LOT'))
return;
if (EK['includes']('JUNCTION_INTERCHANGE'))
return;
if (_['intersection'](EK, [
'SEA_LAKE_POOL',
'RIVER_STREAM',
'BRIDGE',
'FOREST_GROVE',
'FACTORY_INDUSTRIAL',
'TRANSPORTATION',
'TUNNEL'
])['length'] > 0x0 && _['isEmpty'](EJ['externalProviderIDs']))
return;
let EL = {}, EM = [];
EI['getOLGeometry']()['getArea']() > 0x1f4 && EJ['entryExitPoints']['length'] < 0x1 && (EN['utils']['log']('Found\x20big\x20venue\x20with\x20no\x20entry\x20point\x20with\x20ID:\x20' + EJ['id']), EM['push'](EN['utils']['highlightObject'](EI, '#F5D801')), EL = {
'id': EJ['id'],
'type': EI['type'],
'plugId': EQ,
'obj': EI
});
return EM['length'] > 0x0 && setTimeout(EN['addMagic'](EQ + '_' + EJ['id'], EM), 0x64), EL;
};
},
function (EY, EZ, F0) {
'use strict';
var F1 = F1 || void 0x0, F2 = function () {
void 0x0 !== window['require'] && 'undefined' != typeof WMEmagic && 'undefined' != typeof WMEutils ? (void 0x0 === F1 && (F1 = new WMEmagic()), F1['iamready']() ? F5() : setTimeout(F2, 0x3e8)) : setTimeout(F2, 0x3e8);
};
!function () {
if ('undefined' == typeof WMEmagic) {
var EY = document['createElement']('script');
EY['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), EY['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](EY);
}
setTimeout(F2, 0x3e8);
}();
let F4 = 'seg_normalizeCity';
let F5 = function () {
F1['addMenuOption']({
'id': F4,
'title': 'Normalize\x20City',
'color': '#EC3E40',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': Fh,
'postLoop': null,
'startFunc': !0x1,
'stopFunc': !0x1,
'default': !0x1,
'devMode': !0x1
});
}, F6 = function (EY, EZ, F0) {
var F2 = 0x1;
do {
var F4, F5, F6, Fe = F1['getConfig'](F0, 'regex' + F2, EZ);
if (F2++, void 0x0 === Fe['default'])
break;
if (void 0x0 === Fe['enabled'] || !0x1 === Fe['enabled'])
continue;
[F4, F5, F6] = Fe['default']['split']('\x20###\x20');
let Ff = EY;
var Fg = new RegExp(F4, F5);
(EY = EY['replace'](Fg, F6)) != Ff && '' == F6 && (EY = '');
} while ('string' == typeof Fe['default']);
return EY;
};
var Fh = function (EY) {
let EZ = EY['attributes'];
var F0;
if (void 0x0 === (F0 = F1['utils']['getCityName'](EY)) || '' === F0)
return;
var F2 = F0;
F2 = F6(F2, 'noDefault', 'all_orthographic'), F2 = F6(F2, !0x0, F4), F2 = F6(F2, 'noState', F4);
let F5 = {}, Fh = [], Fo = [];
F0 !== (F2 = F6(F2, 'noDefault', F4)) && (F1['utils']['log']('Found\x20normalized\x20city\x20with\x20ID:\x20' + EZ['id']), Fo['push'](F1['utils']['highlightObject'](EY, '#EC3E40')), F5 = {
'id': EZ['id'],
'type': EY['type'],
'plugId': F4,
'obj': EY
}, Fh['push'](F5));
return Fo['length'] > 0x0 && setTimeout(F1['addMagic'](F4 + '_' + EZ['id'], Fo), 0x64), Fh;
};
},
function (Fp, Fq, Fr) {
'use strict';
if (void 0x0 === Fs)
var Fs = !0x0;
var Ft = Fs, Fu = Fu || void 0x0, Fv = function () {
return void 0x0 === window['require'] ? (setTimeout(Fv, 0x3e8), void (Ft && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(Fv, 0x3e8), void (Ft && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === Fu && (Ft && console['log']('INIT\x20MAGIC'), Fu = new WMEmagic()), Fu['iamready']() ? void Fy() : (Ft && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(Fv, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var Fp = document['createElement']('script');
Fp['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), Fp['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](Fp), Ft && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
Ft && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(Fv, 0x3e8);
}();
let Fx = 'seg_AVGSpeedCam', Fy = function () {
Fu['addMenuOption']({
'id': Fx,
'title': 'Segments\x20with\x20AVG\x20Speed\x20Camera',
'text': 'Easy\x20way\x20to\x20find\x20segments\x20with\x20average\x20speed\x20camera',
'howto': 'Double\x20check\x20if\x20in\x20your\x20Country\x20you\x20should\x20use\x20this\x20feature',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'segments',
'minZoom': 0xf,
'preLoop': null,
'loopFunc': Fz,
'postLoop': null,
'devMode': !0x1
});
};
var Fz = function (Fp) {
let Fq = {}, Fr = [], Fs = Fp['attributes'];
(0x1 & Fs['revFlags'] || 0x1 & Fs['fwdFlags']) && (Fr['push'](Fu['utils']['highlightObject'](Fp, Fu['color'](Fx))), Fq = {
'id': Fp['attributes']['id'],
'type': Fp['type'],
'plugId': Fx,
'obj': Fp
});
return Fr['length'] > 0x0 && setTimeout(Fu['addMagic'](Fx + '_' + Fs['id'], Fr), 0x64), Fq;
};
},
function (FE, FF, FG) {
'use strict';
if (void 0x0 === FH)
var FH = !0x0;
var FI = FH, FJ = FJ || void 0x0, FK = function () {
return void 0x0 === window['require'] ? (setTimeout(FK, 0x3e8), void (FI && console['log']('no\x20window.require???\x20W8ing\x20a\x20sec...'))) : 'undefined' == typeof WMEmagic || 'undefined' == typeof WMEutils ? (setTimeout(FK, 0x3e8), void (FI && console['log']('NO\x20WME\x20Magic???\x20W8ing\x20a\x20sec...'))) : (void 0x0 === FJ && (FI && console['log']('INIT\x20MAGIC'), FJ = new WMEmagic()), FJ['iamready']() ? void FM() : (FI && console['log']('WMEmagic\x20not\x20ready!\x20W8ing\x20a\x20sec...'), void setTimeout(FK, 0x3e8)));
};
!function () {
if ('undefined' == typeof WMEmagic) {
var FE = document['createElement']('script');
FE['setAttribute']('src', 'https://waze.xpto.org/magic/magic.bundle.ninja.user.js?xXx'), FE['setAttribute']('type', 'text/javascript'), document['getElementsByTagName']('head')[0x0]['appendChild'](FE), FI && console['log']('WME\x20Magic:\x20loading\x20WME\x20Magic\x20...');
} else
FI && console['log']('WME\x20Magic:\x20WME\x20Magic\x20already\x20loaded...');
setTimeout(FK, 0x3e8);
}();
var FM = function () {
FJ['addMenuOption']({
'id': 'speed_signs',
'title': 'Show\x20Speed\x20Signs',
'text': 'Based\x20on\x20map\x20comments',
'color': '#FFFFFF',
'loop': !0x0,
'section': 'comments',
'preLoop': null,
'loopFunc': FN,
'postLoop': null,
'actionFunc': null,
'devMode': !0x1
});
}, FN = function (FE) {
let FF = FE['attributes'];
var FG = !0x1;
let FH = FF['subject']['match'](/Sinal (\d+)/);
if (FH || (FH = FF['subject']['match'](/Radar (\d+)/)), FH || (FH = FF['subject']['match'](/Sign (\d+)/)), FH || (FH = FF['subject']['match'](/^(\d+)$/)), null == FH)
return;
FH[0x1] && (FG = !0x0);
let FI = [];
return FG && FI['push'](new OpenLayers['Feature']['Vector'](FE['getOLGeometry']()['clone'](), {}, {
'graphic': !0x0,
'graphicWidth': 0x14,
'graphicHeight': 0x14,
'graphicYOffset': 0xa,
'externalGraphic': 'https://waze.xpto.org/wurm/images/signs/row/' + FH[0x1] + '.svg'
})), FI['length'] > 0x0 && setTimeout(FJ['addMagic']('speed_signs_' + FF['id'], FI), 0x64), {};
};
}
]);