[
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# Next.js build output\n.next\n\n# Nuxt.js build / generate output\n.nuxt\ndist\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and *not* Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\npackage-lock.json\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 OXDBXKXO\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# akamai-toolkit\nThis script aims to provide various tools to work on Akamai anti-bot solution.\n\nTo install the dependencies and start using the script, just run:\n\n```sh\n> cd akamai-toolkit\n> npm install\n> node toolkit.js\n```\n\nThe script uses [commander](https://www.npmjs.com/package/commander) to parse arguments, which does not behave correctly when using `npm start`. You can use `node` or just do `./toolkit.js` (you may have to update the shebang).\n\nPlease give a look at the `config.json` file. It contains the current Akamai script version that you must update if needed, the chrome binary to use with Puppeteer and the list of sites to check Akamai version on.\n\n### Akamai deobfuscator\nSource from [char](https://github.com/char/akamai-deobfuscator). Using an AST is a really good idea and I'm planning to use the same method to create deobfuscators for other anti-bot scripts. The deobfuscator from **char** required full Akamai script URL, so I added the possibility to simply type the target.\n\nUsage: `node toolkit.js -d <target>`, where target can be of the form *fedex.com*, *www.nike.com* or *https://www.adidas.com*.\n\n### Akamai version checker\nSource from [zedd3v](https://github.com/zedd3v/akamai-versions-checker). Refactored the code and added possibility to check version on a single site.\n\nThe tool will print script version in different colors depending on the Akamai version number set in `config.json`.\n\nUsage: \n\n- `node toolkit.js -v`  will check version for all the sites in __config.json__.\n- `node toolkit.js -v <target>` will check version on target. Target can be of the form *fedex.com*, *www.nike.com* or *https://www.adidas.com*.\n\n### Ternary to if \n\nSource from [RayBB](https://github.com/RayBB/ternary-converter). I just kept the conversion part. It needs update as malformed ternary sometimes cause infinite loops. \n\nUsage: `node toolkit.js -t`\n\n### Akamai sensor_data parsing\n\nThe script includes a sensor_data parser and checker based on the checker of [gondone666](https://github.com/gondone666/parse-sensor), which I improved and updated.\n\nChanges :\n- Added 129 variable which was not parsed and causing issues\n- Added pretty-print function that displays sensor_data info in categories\n  - Browser information\n  - Automation detection\n  - Browser detection (bmak.gd())\n  - Screen size\n  - Events\n  - Coherence check (115)\n  - Challenges\n  - Fingerprinting\n  - bmak.fpcf.fpValstr (70)\n  - w (129)\n  - Target info\n  - Sensor_data info\n  - Miscellaneous variables\n- Added some checks to test the quality of your sensors\n- Added challenge solution checks, to see if you can create coherent challenge solutions\n\nUsage: `node toolkit.js -p`\n\n### Custom browser\n\nThe script uses Puppeteer to provide an easy way to experiment on scripts. You can replace a script by a custom one, allowing you to add additional logs for example. You can also execute Javascript in Node and in-browser. The tool uses YAML config files, allowing you to quickly change the behaviour of Puppeteer without having to manually edit the code.\n\nAvailable options are:\n- `headless` : to control headless property of the browser\n- `devtools` : to open the devtools in the browser\n- `windowSize` : to set a custom window size for the browser\n- `dis_intercept` : to disable requests interception (if you just need to open a page)\n- `target` : URL to browse\n- `hijack_script_path` : path to the custom script, leave empty to disable script hijack\n- `helpers` : enable helpers functions for simpler config file creation\n\tAt the moment the script only has one helper: `cookie`, allowing user to access the value of a cookie without having to type the full Javascript code.\n- `script_name_includes` : full URL or part of the URL of the script to replace\n- `main` : code to run after the target page is loaded\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval()\n- `GET` : code to run when the target script is being downloaded\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval() (you do not need to include script hijack code)\n- `POST` : code to run when a POST is made to the target script\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval()\n- `DEFAULT` : code to run when any other HTTP method is used on target script\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval()\n- `response` : code to run when a request to target script receives a response\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval()\n- `requests` : code to run when a request in made to any other resource than the script\n  - `page` : code to run on page\n  - `node` : code to run in Node.js using eval()\n\nYou will find an example config file for Akamai script hijack on nike.com in **puppeteer_configs** directory.\n\nUsage: `node toolkit.js -c <config_file>`\n\tPlease note that config files can only be in **puppeteer_configs** directory and that you do not need to specify the .yaml extension. For example, to call Puppeteer with akamai.yaml config, you need to call `node toolkit.js -c akamai`.\n"
  },
  {
    "path": "config.json",
    "content": "{\n    \"akamai_version\": \"1.7\",\n    \"chromePath\": \"node_modules/puppeteer/.local-chromium/linux-856583/chrome-linux/chrome\",\n    \"sites\": [\n        \"https://www.xfinity.com\",\n        \"https://www.ups.com\",\n        \"https://www.banggood.com\",\n        \"https://www.homedepot.com\",\n        \"https://www.groupon.com\",\n        \"https://www.att.com\",\n        \"https://www.lenovo.com\",\n        \"https://www.zara.com\",\n        \"https://www.olx.in\",\n        \"https://www.lowes.com\",\n        \"https://www.usbank.com\",\n        \"https://www.farfetch.com\",\n        \"https://www.dhl.de\",\n        \"https://www.g2a.com\",\n        \"https://www.fedex.com\",\n        \"https://www.rottentomatoes.com\",\n        \"https://www.uniqlo.com\",\n        \"https://www.collegeboard.org\",\n        \"https://www.xero.com\",\n        \"https://www.emirates.com\",\n        \"https://www.thetrainline.com\",\n        \"https://www.nike.com\",\n        \"https://www.zalando.com\"\n    ]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"akamai-toolkit\",\n  \"version\": \"1.0.1\",\n  \"description\": \"This script aims to provide various tools to work on Akamai anti-bot solution\",\n  \"main\": \"toolkit.js\",\n  \"scripts\": {\n    \"start\": \"node toolkit.js\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"OXDBXKXO\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@babel/parser\": \"^7.12.14\",\n    \"@babel/traverse\": \"^7.12.13\",\n    \"@babel/types\": \"^7.12.13\",\n    \"abck\": \"^1.6.6\",\n    \"commander\": \"^7.0.0\",\n    \"got\": \"^11.8.1\",\n    \"js-beautify\": \"^1.13.5\",\n    \"js-yaml\": \"^4.0.0\",\n    \"pad\": \"^3.2.0\",\n    \"puppeteer\": \"^8.0.0\",\n    \"puppeteer-extra\": \"^3.1.16\",\n    \"puppeteer-extra-plugin-stealth\": \"^2.7.4\"\n  }\n}\n"
  },
  {
    "path": "puppeteer_configs/akamai.yaml",
    "content": "# General Puppeteer settings\nheadless: false\ndevtools: true\nwindowSize:\n  width: 300\n  heigth: 300\ntarget: https://www.nike.com\n\nhijack_script_path: scripts/akamai-1.68-nike.js\n\nhelpers: true\nscript_name_includes: /staticweb/\nmain:\n  node : \"console.log('page loaded')\"\n\nPOST:\n  node: \"\n  console.log('\\\\n##########################');\n  console.log('sensor_data: ' + req.postData());\n  \"\nresponse:\n  node: \"\n  console.log('\\\\n##########################');\n  console.log('_abck: ' + cookie('_abck'));\n  \""
  },
  {
    "path": "puppeteer_configs/template.yaml",
    "content": "headless: false\ndevtools: false\nwindowSize:\n  width:\n  heigth:\nhelpers: true\ndis_intercept: false\ntarget: \nhijack_script_path: \nscript_name_includes: \nmain: \n  page: \n  node: \n\nGET: \n  page: \n  node: \n\nPOST: \n  page: \n  node: \n\nDEFAULT: \n  page: \n  node: \n\nresponse: \n  page: \n  node: \n\nrequests: \n  page: \n  node:"
  },
  {
    "path": "scripts/akamai-1.67-nike.js",
    "content": "var _cf = _cf || [],\n  bmak = bmak && bmak.hasOwnProperty(\"ver\") && bmak.hasOwnProperty(\"sed\") ? bmak : {\n    ver: 1.67,\n    ke_cnt_lmt: 150,\n    mme_cnt_lmt: 100,\n    mduce_cnt_lmt: 75,\n    pme_cnt_lmt: 25,\n    pduce_cnt_lmt: 25,\n    tme_cnt_lmt: 25,\n    tduce_cnt_lmt: 25,\n    doe_cnt_lmt: 10,\n    dme_cnt_lmt: 10,\n    vc_cnt_lmt: 100,\n    doa_throttle: 0,\n    dma_throttle: 0,\n    session_id: \"default_session\",\n    js_post: !1,\n    loc: \"\",\n    cf_url: \"https:\" === document.location.protocol ? \"https://\" : \"http://\",\n    params_url: (\"https:\" === document.location.protocol ? \"https://\" : \"http://\") + document.location.hostname + \"/get_params\",\n    auth: \"\",\n    api_public_key: \"afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq\",\n    aj_lmt_doact: 1,\n    aj_lmt_dmact: 1,\n    aj_lmt_tact: 1,\n    ce_js_post: 0,\n    init_time: 0,\n    informinfo: \"\",\n    prevfid: -1,\n    fidcnt: 0,\n    sensor_data: 0,\n    ins: null,\n    cns: null,\n    enGetLoc: 0,\n    enReadDocUrl: 1,\n    disFpCalOnTimeout: 0,\n    xagg: -1,\n    pen: -1,\n    brow: \"\",\n    browver: \"\",\n    psub: \"-\",\n    lang: \"-\",\n    prod: \"-\",\n    plen: -1,\n    doadma_en: 0,\n    sdfn: [],\n    d2: 0,\n    d3: 0,\n    thr: 0,\n    cs: \"0a46G5m17Vrp4o4c\",\n    hn: \"unk\",\n    z1: 0,\n    o9: 0,\n    vc: \"\",\n    y1: 2016,\n    ta: 0,\n    tst: -1,\n    t_tst: 0,\n    ckie: \"_abck\",\n    n_ck: \"0\",\n    ckurl: 0,\n    bm: !1,\n    mr: \"-1\",\n    altFonts: !1,\n    rst: !1,\n    runFonts: !1,\n    fsp: !1,\n    firstLoad: !0,\n    pstate: !1,\n    mn_mc_lmt: 10,\n    mn_state: 0,\n    mn_mc_indx: 0,\n    mn_sen: 0,\n    mn_tout: 100,\n    mn_stout: 1e3,\n    mn_ct: 1,\n    mn_cc: \"\",\n    mn_cd: 1e4,\n    mn_lc: [],\n    mn_ld: [],\n    mn_lcl: 0,\n    mn_al: [],\n    mn_il: [],\n    mn_tcl: [],\n    mn_r: [],\n    mn_rt: 0,\n    mn_wt: 0,\n    mn_abck: \"\",\n    mn_psn: \"\",\n    mn_ts: \"\",\n    mn_lg: [],\n    loap: 1,\n    dcs: 0,\n    ir: function() {\n      bmak.start_ts = Date.now ? Date.now() : +new Date(), bmak.kact = \"\", bmak.ke_cnt = 0, bmak.ke_vel = 0, bmak.mact = \"\", bmak.mme_cnt = 0, bmak.mduce_cnt = 0, bmak.me_vel = 0, bmak.pact = \"\", bmak.pme_cnt = 0, bmak.pduce_cnt = 0, bmak.pe_vel = 0, bmak.tact = \"\", bmak.tme_cnt = 0, bmak.tduce_cnt = 0, bmak.te_vel = 0, bmak.doact = \"\", bmak.doe_cnt = 0, bmak.doe_vel = 0, bmak.dmact = \"\", bmak.dme_cnt = 0, bmak.dme_vel = 0, bmak.vcact = \"\", bmak.vc_cnt = 0, bmak.aj_indx = 0, bmak.aj_ss = 0, bmak.aj_type = -1, bmak.aj_indx_doact = 0, bmak.aj_indx_dmact = 0, bmak.aj_indx_tact = 0, bmak.me_cnt = 0, bmak.pe_cnt = 0, bmak.te_cnt = 0, bmak.nav_perm = \"\", bmak.brv = 0, bmak.hbCalc = !1, bmak.fmh = \"\", bmak.fmz = \"\", bmak.ssh = \"\", bmak.wv = \"\", bmak.wr = \"\", bmak.weh = \"\", bmak.wl = 0;\n    },\n    get_cf_date: function() {\n      return Date.now ? Date.now() : +new Date();\n    },\n    sd_debug: function(a) {\n      if (!bmak.js_post) {\n        var t = a;\n        \"string\" == typeof _sd_trace ? _sd_trace += t : _sd_trace = t;\n      }\n    },\n    pi: function(a) {\n      return parseInt(a);\n    },\n    uar: function() {\n      return window.navigator.userAgent.replace(/\\\\|\"/g, \"\");\n    },\n    gd: function() {\n      var a = bmak.uar(),\n        t = \"\" + bmak.ab(a),\n        e = bmak.start_ts / 2,\n        n = -1,\n        o = -1,\n        m = -1,\n        r = -1,\n        i = -1,\n        c = -1,\n        b = -1;\n\n      try {\n        n = window.screen ? window.screen.availWidth : -1;\n      } catch (a) {\n        n = -1;\n      }\n\n      try {\n        o = window.screen ? window.screen.availHeight : -1;\n      } catch (a) {\n        o = -1;\n      }\n\n      try {\n        m = window.screen ? window.screen.width : -1;\n      } catch (a) {\n        m = -1;\n      }\n\n      try {\n        r = window.screen ? window.screen.height : -1;\n      } catch (a) {\n        r = -1;\n      }\n\n      try {\n        i = window.innerHeight || (document.body && \"clientHeight\" in document.body ? document.body.clientHeight : document.documentElement && \"clientHeight\" in document.documentElement ? document.documentElement.clientHeight : -1);\n      } catch (a) {\n        i = -1;\n      }\n\n      try {\n        c = window.innerWidth || (document.body && \"clientWidth\" in document.body ? document.body.clientWidth : document.documentElement && \"clientWidth\" in document.documentElement ? document.documentElement.clientWidth : -1);\n      } catch (a) {\n        c = -1;\n      }\n\n      try {\n        b = \"outerWidth\" in window && void 0 !== window.outerWidth ? window.outerWidth : -1;\n      } catch (a) {\n        b = -1;\n      }\n\n      bmak.z1 = bmak.pi(bmak.start_ts / (bmak.y1 * bmak.y1));\n      var d = Math.random(),\n        k = bmak.pi(1e3 * d / 2),\n        s = d + \"\";\n      return s = s.slice(0, 11) + k, bmak.gbrv(), bmak.get_browser(), bmak.bc(), bmak.bmisc(), a + \",uaend,\" + bmak.xagg + \",\" + bmak.psub + \",\" + bmak.lang + \",\" + bmak.prod + \",\" + bmak.plen + \",\" + bmak.pen + \",\" + bmak.wen + \",\" + bmak.den + \",\" + bmak.z1 + \",\" + bmak.d3 + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + c + \",\" + i + \",\" + b + \",\" + bmak.bd() + \",\" + t + \",\" + s + \",\" + e + \",\" + bmak.brv + \",loc:\" + bmak.loc;\n    },\n    get_browser: function() {\n      navigator.productSub && (bmak.psub = navigator.productSub), navigator.language && (bmak.lang = navigator.language), navigator.product && (bmak.prod = navigator.product), bmak.plen = void 0 !== navigator.plugins ? navigator.plugins.length : -1;\n    },\n    gbrv: function() {\n      navigator.brave && navigator.brave.isBrave().then(function(a) {\n        bmak.brv = a ? 1 : 0;\n      }).catch(function(a) {\n        bmak.brv = 0;\n      });\n    },\n    bc: function() {\n      var a = window.addEventListener ? 1 : 0,\n        t = window.XMLHttpRequest ? 1 : 0,\n        e = window.XDomainRequest ? 1 : 0,\n        n = window.emit ? 1 : 0,\n        o = window.DeviceOrientationEvent ? 1 : 0,\n        m = window.DeviceMotionEvent ? 1 : 0,\n        r = window.TouchEvent ? 1 : 0,\n        i = window.spawn ? 1 : 0,\n        c = window.chrome ? 1 : 0,\n        b = Function.prototype.bind ? 1 : 0,\n        d = window.Buffer ? 1 : 0,\n        k = window.PointerEvent ? 1 : 0;\n\n      try {\n        var s = window.innerWidth ? 1 : 0;\n      } catch (a) {\n        var s = 0;\n      }\n\n      try {\n        var l = window.outerWidth ? 1 : 0;\n      } catch (a) {\n        var l = 0;\n      }\n\n      bmak.xagg = a + (t << 1) + (e << 2) + (n << 3) + (o << 4) + (m << 5) + (r << 6) + (i << 7) + (s << 8) + (l << 9) + (c << 10) + (b << 11) + (d << 12) + (k << 13);\n    },\n    bmisc: function() {\n      bmak.pen = window._phantom ? 1 : 0, bmak.wen = window.webdriver ? 1 : 0, bmak.den = window.domAutomation ? 1 : 0;\n    },\n    bd: function() {\n      var a = [],\n        t = window.callPhantom ? 1 : 0;\n      a.push(\",cpen:\" + t);\n      var e = 0;\n      window.ActiveXObject && \"ActiveXObject\" in window && (e = 1), a.push(\"i1:\" + e);\n      var n = \"number\" == typeof document.documentMode ? 1 : 0;\n      a.push(\"dm:\" + n);\n      var o = window.chrome && window.chrome.webstore ? 1 : 0;\n      a.push(\"cwen:\" + o);\n      var m = navigator.onLine ? 1 : 0;\n      a.push(\"non:\" + m);\n      var r = window.opera ? 1 : 0;\n      a.push(\"opc:\" + r);\n      var i = \"undefined\" != typeof InstallTrigger ? 1 : 0;\n      a.push(\"fc:\" + i);\n      var c = window.HTMLElement && Object.prototype.toString.call(window.HTMLElement).indexOf(\"Constructor\") > 0 ? 1 : 0;\n      a.push(\"sc:\" + c);\n      var b = \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection ? 1 : 0;\n      a.push(\"wrc:\" + b);\n      var d = \"mozInnerScreenY\" in window ? window.mozInnerScreenY : 0;\n      a.push(\"isc:\" + d), bmak.d2 = bmak.pi(bmak.z1 / 23);\n      var k = \"function\" == typeof navigator.vibrate ? 1 : 0;\n      a.push(\"vib:\" + k);\n      var s = \"function\" == typeof navigator.getBattery ? 1 : 0;\n      a.push(\"bat:\" + s);\n      var l = Array.prototype.forEach ? 0 : 1;\n      a.push(\"x11:\" + l);\n      var u = \"FileReader\" in window ? 1 : 0;\n      return a.push(\"x12:\" + u), a.join(\",\");\n    },\n    fas: function() {\n      try {\n        return Boolean(navigator.credentials) + (Boolean(navigator.appMinorVersion) << 1) + (Boolean(navigator.bluetooth) << 2) + (Boolean(navigator.storage) << 3) + (Boolean(Math.imul) << 4) + (Boolean(navigator.getGamepads) << 5) + (Boolean(navigator.getStorageUpdates) << 6) + (Boolean(navigator.hardwareConcurrency) << 7) + (Boolean(navigator.mediaDevices) << 8) + (Boolean(navigator.mozAlarms) << 9) + (Boolean(navigator.mozConnection) << 10) + (Boolean(navigator.mozIsLocallyAvailable) << 11) + (Boolean(navigator.mozPhoneNumberService) << 12) + (Boolean(navigator.msManipulationViewsEnabled) << 13) + (Boolean(navigator.permissions) << 14) + (Boolean(navigator.registerProtocolHandler) << 15) + (Boolean(navigator.requestMediaKeySystemAccess) << 16) + (Boolean(navigator.requestWakeLock) << 17) + (Boolean(navigator.sendBeacon) << 18) + (Boolean(navigator.serviceWorker) << 19) + (Boolean(navigator.storeWebWideTrackingException) << 20) + (Boolean(navigator.webkitGetGamepads) << 21) + (Boolean(navigator.webkitTemporaryStorage) << 22) + (Boolean(Number.parseInt) << 23) + (Boolean(Math.hypot) << 24);\n      } catch (a) {\n        return 0;\n      }\n    },\n    getmr: function() {\n      try {\n        if (\"undefined\" == typeof performance || void 0 === performance.now || \"undefined\" == typeof JSON) return void(bmak.mr = \"undef\");\n\n        for (var a = \"\", t = 1e3, e = [Math.abs, Math.acos, Math.asin, Math.atanh, Math.cbrt, Math.exp, Math.random, Math.round, Math.sqrt, isFinite, isNaN, parseFloat, parseInt, JSON.parse], n = 0; n < e.length; n++) {\n          var o = [],\n            m = 0,\n            r = performance.now(),\n            i = 0,\n            c = 0;\n\n          if (void 0 !== e[n]) {\n            for (i = 0; i < t && m < .6; i++) {\n              for (var b = performance.now(), d = 0; d < 4e3; d++) e[n](3.14);\n\n              var k = performance.now();\n              o.push(Math.round(1e3 * (k - b))), m = k - r;\n            }\n\n            var s = o.sort();\n            c = s[Math.floor(s.length / 2)] / 5;\n          }\n\n          a = a + c + \",\";\n        }\n\n        bmak.mr = a;\n      } catch (a) {\n        bmak.mr = \"exception\";\n      }\n    },\n    sed: function() {\n      var a;\n      a = window.$cdc_asdjflasutopfhvcZLmcfl_ || document.$cdc_asdjflasutopfhvcZLmcfl_ ? \"1\" : \"0\";\n      var t;\n      t = null != window.document.documentElement.getAttribute(\"webdriver\") ? \"1\" : \"0\";\n      var e;\n      e = void 0 !== navigator.webdriver && navigator.webdriver ? \"1\" : \"0\";\n      var n;\n      n = void 0 !== window.webdriver ? \"1\" : \"0\";\n      var o;\n      o = void 0 !== window.XPathResult || void 0 !== document.XPathResult ? \"1\" : \"0\";\n      var m;\n      m = null != window.document.documentElement.getAttribute(\"driver\") ? \"1\" : \"0\";\n      var r;\n      return r = null != window.document.documentElement.getAttribute(\"selenium\") ? \"1\" : \"0\", [a, t, e, n, o, m, r].join(\",\");\n    },\n    cma: function(a, t) {\n      try {\n        if (1 == t && bmak.mme_cnt < bmak.mme_cnt_lmt || 1 != t && bmak.mduce_cnt < bmak.mduce_cnt_lmt) {\n          var e = a || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = e.toElement;\n          null == m && (m = e.target);\n          var r = bmak.gf(m),\n            i = bmak.get_cf_date() - bmak.start_ts,\n            c = bmak.me_cnt + \",\" + t + \",\" + i + \",\" + n + \",\" + o;\n\n          if (1 != t) {\n            c = c + \",\" + r;\n            var b = void 0 !== e.which ? e.which : e.button;\n            null != b && 1 != b && (c = c + \",\" + b);\n          }\n\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (c += \",it0\"), c += \";\", bmak.me_vel = bmak.me_vel + bmak.me_cnt + t + i + n + o, bmak.mact = bmak.mact + c, bmak.ta += i;\n        }\n\n        1 == t ? bmak.mme_cnt++ : bmak.mduce_cnt++, bmak.me_cnt++, bmak.js_post && 3 == t && (bmak.aj_type = 1, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (a) {}\n    },\n    x2: function() {\n      var a = bmak.ff,\n        t = a(98) + a(109) + a(97) + a(107),\n        e = a(103) + a(101) + a(116) + a(95) + a(99) + a(102) + a(95) + a(100) + a(97) + a(116) + a(101),\n        n = window[t][e],\n        o = 0;\n      return \"function\" == typeof n && (o = n()), o;\n    },\n    np: function() {\n      var a = [],\n        t = [\"geolocation\", \"notifications\", \"push\", \"midi\", \"camera\", \"microphone\", \"speaker\", \"device-info\", \"background-sync\", \"bluetooth\", \"persistent-storage\", \"ambient-light-sensor\", \"accelerometer\", \"gyroscope\", \"magnetometer\", \"clipboard\", \"accessibility-events\", \"clipboard-read\", \"clipboard-write\", \"payment-handler\"];\n\n      try {\n        if (!navigator.permissions) return void(bmak.nav_perm = 6);\n        bmak.nav_perm = 8;\n\n        var e = function(t, e) {\n            return navigator.permissions.query({\n              name: t\n            }).then(function(t) {\n              switch (t.state) {\n                case \"prompt\":\n                  a[e] = 1;\n                  break;\n\n                case \"granted\":\n                  a[e] = 2;\n                  break;\n\n                case \"denied\":\n                  a[e] = 0;\n                  break;\n\n                default:\n                  a[e] = 5;\n              }\n            }).catch(function(t) {\n              a[e] = -1 !== t.message.indexOf(\"is not a valid enum value of type PermissionName\") ? 4 : 3;\n            });\n          },\n          n = t.map(function(a, t) {\n            return e(a, t);\n          });\n\n        Promise.all(n).then(function() {\n          bmak.nav_perm = a.join(\"\");\n        });\n      } catch (a) {\n        bmak.nav_perm = 7;\n      }\n    },\n    cpa: function(a, t) {\n      try {\n        var e = !1;\n\n        if (1 == t && bmak.pme_cnt < bmak.pme_cnt_lmt || 1 != t && bmak.pduce_cnt < bmak.pduce_cnt_lmt) {\n          var n = a || window.event;\n\n          if (n && \"mouse\" != n.pointerType) {\n            e = !0;\n            var o = -1,\n              m = -1;\n            n && n.pageX && n.pageY ? (o = Math.floor(n.pageX), m = Math.floor(n.pageY)) : n && n.clientX && n.clientY && (o = Math.floor(n.clientX), m = Math.floor(n.clientY));\n            var r = bmak.get_cf_date() - bmak.start_ts,\n              i = bmak.pe_cnt + \",\" + t + \",\" + r + \",\" + o + \",\" + m;\n            void 0 !== n.isTrusted && !1 === n.isTrusted && (i += \",0\"), bmak.pe_vel = bmak.pe_vel + bmak.pe_cnt + t + r + o + m, bmak.pact = bmak.pact + i + \";\", bmak.ta += r, 1 == t ? bmak.pme_cnt++ : bmak.pduce_cnt++;\n          }\n        }\n\n        1 == t ? bmak.pme_cnt++ : bmak.pduce_cnt++, bmak.pe_cnt++, bmak.js_post && 3 == t && e && (bmak.aj_type = 2, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (a) {}\n    },\n    ab: function(a) {\n      if (null == a) return -1;\n\n      try {\n        for (var t = 0, e = 0; e < a.length; e++) {\n          var n = a.charCodeAt(e);\n          n < 128 && (t += n);\n        }\n\n        return t;\n      } catch (a) {\n        return -2;\n      }\n    },\n    ff: function(a) {\n      return String.fromCharCode(a);\n    },\n    cal_dis: function(a) {\n      var t = a[0] - a[1],\n        e = a[2] - a[3],\n        n = a[4] - a[5],\n        o = Math.sqrt(t * t + e * e + n * n);\n      return Math.floor(o);\n    },\n    to: function() {\n      var a = bmak.x2() % 1e7;\n      bmak.d3 = a;\n\n      for (var t = a, e = bmak.pi(bmak.ff(51)), n = 0; n < 5; n++) {\n        var o = bmak.pi(a / Math.pow(10, n)) % 10,\n          m = o + 1;\n        op = bmak.cc(o), t = op(t, m);\n      }\n\n      bmak.o9 = t * e;\n    },\n    jrs: function(a) {\n      for (var t = Math.floor(1e5 * Math.random() + 1e4), e = String(a * t), n = 0, o = [], m = e.length >= 18; o.length < 6;) o.push(parseInt(e.slice(n, n + 2))), n = m ? n + 3 : n + 2;\n\n      return [t, bmak.cal_dis(o)];\n    },\n    fm: function() {\n      var a = [\"Monospace\", \"Wingdings 2\", \"ITC Bodoni 72 Bold\", \"Menlo\", \"Gill Sans MT\", \"Lucida Sans\", \"Bodoni 72\", \"Serif\", \"Shree Devanagari 714\", \"Microsoft Tai Le\", \"Nimbus Roman No 9 L\", \"Candara\", \"Press Start 2P\", \"Waseem\"],\n        t = document.createElement(\"span\");\n      t.innerHTML = \"mmmmmmmmlli\", t.style.fontSize = \"192px\";\n      var e = \"\",\n        n = document.getElementsByTagName(\"body\")[0];\n\n      if (n) {\n        for (var o in a) t.style.fontFamily = a[o], n.appendChild(t), e += a[o] + \":\" + t.offsetWidth + \",\" + t.offsetHeight + \";\", n.removeChild(t);\n\n        bmak.fmh = bmak.ats(bmak.mn_s(e));\n      } else bmak.fmh = \"\";\n\n      bmak.fmz = \"devicePixelRatio\" in window && void 0 !== window.devicePixelRatio ? window.devicePixelRatio : -1;\n    },\n    wgl: function() {},\n    csh: function() {\n      if (window.speechSynthesis) {\n        var a = window.speechSynthesis.getVoices();\n\n        if (a.length > 0) {\n          for (var t = \"\", e = 0; e < a.length; e++) t += a[e].voiceURI + \"_\" + a[e].lang;\n\n          bmak.ssh = bmak.ats(bmak.mn_s(t));\n        } else bmak.ssh = \"0\";\n      } else bmak.ssh = \"n\";\n    },\n    gf: function(a) {\n      var t;\n      if (t = null == a ? document.activeElement : a, null == document.activeElement) return -1;\n      var e = t.getAttribute(\"name\");\n\n      if (null == e) {\n        var n = t.getAttribute(\"id\");\n        return null == n ? -1 : bmak.ab(n);\n      }\n\n      return bmak.ab(e);\n    },\n    cc: function(a) {\n      var t = a % 4;\n      2 == t && (t = 3);\n\n      var e = 42 + t,\n        n = function(a, t) {\n          return 0;\n        };\n\n      if (42 == e) var n = function(a, t) {\n        return a * t;\n      };\n      else if (43 == e) var n = function(a, t) {\n        return a + t;\n      };\n      else var n = function(a, t) {\n        return a - t;\n      };\n      return n;\n    },\n    isIgn: function(a) {\n      var t = document.activeElement;\n      if (null == document.activeElement) return 0;\n      var e = t.getAttribute(\"type\");\n      return 1 == (null == e ? -1 : bmak.get_type(e)) && bmak.fidcnt > 12 && -2 == a ? 1 : 0;\n    },\n    cka: function(a, t) {\n      try {\n        var e = a || window.event,\n          n = -1,\n          o = 1;\n\n        if (bmak.ke_cnt < bmak.ke_cnt_lmt && e) {\n          n = e.keyCode;\n          var m = e.charCode,\n            r = e.shiftKey ? 1 : 0,\n            i = e.ctrlKey ? 1 : 0,\n            c = e.metaKey ? 1 : 0,\n            b = e.altKey ? 1 : 0,\n            d = 8 * r + 4 * i + 2 * c + b,\n            k = bmak.get_cf_date() - bmak.start_ts,\n            s = bmak.gf(null),\n            l = 0;\n          m && n && (n = 0 != m && 0 != n && m != n ? -1 : 0 != n ? n : m), 0 == i && 0 == c && 0 == b && n >= 32 && (n = 3 == t && n >= 32 && n <= 126 ? -2 : n >= 33 && n <= 47 ? -3 : n >= 112 && n <= 123 ? -4 : -2), s != bmak.prevfid ? (bmak.fidcnt = 0, bmak.prevfid = s) : bmak.fidcnt = bmak.fidcnt + 1;\n\n          if (0 == bmak.isIgn(n)) {\n            var u = bmak.ke_cnt + \",\" + t + \",\" + k + \",\" + n + \",\" + l + \",\" + d + \",\" + s;\n            void 0 !== e.isTrusted && !1 === e.isTrusted && (u += \",0\"), u += \";\", bmak.kact = bmak.kact + u, bmak.ke_vel = bmak.ke_vel + bmak.ke_cnt + t + k + n + d + s, bmak.ta += k;\n          } else o = 0;\n        }\n\n        o && e && bmak.ke_cnt++, !bmak.js_post || 1 != t || 13 != n && 9 != n || (bmak.aj_type = 3, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (a) {}\n    },\n    cta: function(a, t) {\n      try {\n        if (1 == t && bmak.tme_cnt < bmak.tme_cnt_lmt || 1 != t && bmak.tduce_cnt < bmak.tduce_cnt_lmt) {\n          var e = a || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = bmak.get_cf_date() - bmak.start_ts,\n            r = bmak.te_cnt + \",\" + t + \",\" + m + \",\" + n + \",\" + o;\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (r += \",0\"), bmak.tact = bmak.tact + r + \";\", bmak.ta += m, bmak.te_vel = bmak.te_vel + bmak.te_cnt + t + m + n + o, bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n        }\n\n        1 == t ? bmak.tme_cnt++ : bmak.tduce_cnt++, bmak.te_cnt++, bmak.js_post && 2 == t && bmak.aj_indx_tact < bmak.aj_lmt_tact && (bmak.aj_type = 5, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_tact++);\n      } catch (a) {}\n    },\n    getFloatVal: function(a) {\n      try {\n        if (-1 != bmak.chknull(a) && !isNaN(a)) {\n          var t = parseFloat(a);\n          if (!isNaN(t)) return t.toFixed(2);\n        }\n      } catch (a) {}\n\n      return -1;\n    },\n    cdoa: function(a) {\n      try {\n        if (bmak.doe_cnt < bmak.doe_cnt_lmt && bmak.doa_throttle < 2 && a) {\n          var t = bmak.get_cf_date() - bmak.start_ts,\n            e = bmak.getFloatVal(a.alpha),\n            n = bmak.getFloatVal(a.beta),\n            o = bmak.getFloatVal(a.gamma),\n            m = bmak.doe_cnt + \",\" + t + \",\" + e + \",\" + n + \",\" + o;\n          void 0 !== a.isTrusted && !1 === a.isTrusted && (m += \",0\"), bmak.doact = bmak.doact + m + \";\", bmak.ta += t, bmak.doe_vel = bmak.doe_vel + bmak.doe_cnt + t, bmak.doe_cnt++;\n        }\n\n        bmak.js_post && bmak.doe_cnt > 1 && bmak.aj_indx_doact < bmak.aj_lmt_doact && (bmak.aj_type = 6, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_doact++), bmak.doa_throttle++;\n      } catch (a) {}\n    },\n    cdma: function(a) {\n      try {\n        if (bmak.dme_cnt < bmak.dme_cnt_lmt && bmak.dma_throttle < 2 && a) {\n          var t = bmak.get_cf_date() - bmak.start_ts,\n            e = -1,\n            n = -1,\n            o = -1;\n          a.acceleration && (e = bmak.getFloatVal(a.acceleration.x), n = bmak.getFloatVal(a.acceleration.y), o = bmak.getFloatVal(a.acceleration.z));\n          var m = -1,\n            r = -1,\n            i = -1;\n          a.accelerationIncludingGravity && (m = bmak.getFloatVal(a.accelerationIncludingGravity.x), r = bmak.getFloatVal(a.accelerationIncludingGravity.y), i = bmak.getFloatVal(a.accelerationIncludingGravity.z));\n          var c = -1,\n            b = -1,\n            d = 1;\n          a.rotationRate && (c = bmak.getFloatVal(a.rotationRate.alpha), b = bmak.getFloatVal(a.rotationRate.beta), d = bmak.getFloatVal(a.rotationRate.gamma));\n          var k = bmak.dme_cnt + \",\" + t + \",\" + e + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + i + \",\" + c + \",\" + b + \",\" + d;\n          void 0 !== a.isTrusted && !1 === a.isTrusted && (k += \",0\"), bmak.dmact = bmak.dmact + k + \";\", bmak.ta += t, bmak.dme_vel = bmak.dme_vel + bmak.dme_cnt + t, bmak.dme_cnt++;\n        }\n\n        bmak.js_post && bmak.dme_cnt > 1 && bmak.aj_indx_dmact < bmak.aj_lmt_dmact && (bmak.aj_type = 7, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_dmact++), bmak.dma_throttle++;\n      } catch (a) {}\n    },\n    get_type: function(a) {\n      return a = a.toLowerCase(), \"text\" == a || \"search\" == a || \"url\" == a || \"email\" == a || \"tel\" == a || \"number\" == a ? 0 : \"password\" == a ? 1 : 2;\n    },\n    chknull: function(a) {\n      return null == a ? -1 : a;\n    },\n    getforminfo: function() {\n      for (var a = \"\", t = \"\", e = document.getElementsByTagName(\"input\"), n = -1, o = 0; o < e.length; o++) {\n        var m = e[o],\n          r = bmak.ab(m.getAttribute(\"name\")),\n          i = bmak.ab(m.getAttribute(\"id\")),\n          c = m.getAttribute(\"required\"),\n          b = null == c ? 0 : 1,\n          d = m.getAttribute(\"type\"),\n          k = null == d ? -1 : bmak.get_type(d),\n          s = m.getAttribute(\"autocomplete\");\n        null == s ? n = -1 : (s = s.toLowerCase(), n = \"off\" == s ? 0 : \"on\" == s ? 1 : 2);\n        var l = m.defaultValue,\n          u = m.value,\n          _ = 0,\n          f = 0;\n        l && 0 != l.length && (f = 1), !u || 0 == u.length || f && u == l || (_ = 1), 2 != k && (a = a + k + \",\" + n + \",\" + _ + \",\" + b + \",\" + i + \",\" + r + \",\" + f + \";\"), t = t + _ + \";\";\n      }\n\n      return null == bmak.ins && (bmak.ins = t), bmak.cns = t, a;\n    },\n    startdoadma: function() {\n      0 == bmak.doadma_en && window.addEventListener && (window.addEventListener(\"deviceorientation\", bmak.cdoa, !0), window.addEventListener(\"devicemotion\", bmak.cdma, !0), bmak.doadma_en = 1), bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n    },\n    updatet: function() {\n      return bmak.get_cf_date() - bmak.start_ts;\n    },\n    htm: function(a) {\n      bmak.cta(a, 1);\n    },\n    hts: function(a) {\n      bmak.cta(a, 2);\n    },\n    hte: function(a) {\n      bmak.cta(a, 3);\n    },\n    htc: function(a) {\n      bmak.cta(a, 4);\n    },\n    hmm: function(a) {\n      bmak.cma(a, 1);\n    },\n    hc: function(a) {\n      bmak.cma(a, 2);\n    },\n    hmd: function(a) {\n      bmak.cma(a, 3);\n    },\n    hmu: function(a) {\n      bmak.cma(a, 4);\n    },\n    hpd: function(a) {\n      bmak.cpa(a, 3);\n    },\n    hpu: function(a) {\n      bmak.cpa(a, 4);\n    },\n    hkd: function(a) {\n      bmak.cka(a, 1);\n    },\n    hku: function(a) {\n      bmak.cka(a, 2);\n    },\n    hkp: function(a) {\n      bmak.cka(a, 3);\n    },\n    form_submit: function() {\n      try {\n        if (bmak.bpd(), 0 == bmak.sdfn.length) {\n          if (document.getElementById(\"bm-telemetry\") && (document.getElementById(\"bm-telemetry\").value = bmak.sensor_data), void 0 !== document.getElementsByName(\"bm-telemetry\"))\n            for (var a = document.getElementsByName(\"bm-telemetry\"), t = 0; t < a.length; t++) a[t].value = bmak.sensor_data;\n        } else\n          for (var t = 0; t < bmak.sdfn.length; t++) document.getElementById(bmak.sdfn[t]) && (document.getElementById(bmak.sdfn[t]).value = bmak.sensor_data);\n      } catch (a) {\n        bmak.sd_debug(\",s7:\" + a + \",\" + bmak.sensor_data);\n      }\n    },\n    get_telemetry: function() {\n      return bmak.bpd(), bmak.ir(), bmak.sensor_data;\n    },\n    getdurl: function() {\n      return bmak.enReadDocUrl ? document.URL.replace(/\\\\|\"/g, \"\") : \"\";\n    },\n    x1: function() {\n      return Math.floor(16777216 * (1 + Math.random())).toString(36);\n    },\n    gck: function() {\n      var a = bmak.x1() + bmak.x1() + bmak.x1() + bmak.x1();\n      return bmak.set_cookie(bmak.ckie, a + \"_\" + bmak.ab(a)), a;\n    },\n    set_cookie: function(a, t) {\n      void 0 !== document.cookie && (document.cookie = a + \"=\" + t + \"; path=/; expires=Fri, 01 Feb 2025 08:00:00 GMT;\");\n    },\n    get_cookie: function() {\n      var a = \"0\";\n\n      try {\n        var a = bmak.cookie_chk_read(bmak.ckie);\n        a || (bmak.n_ck = 1, a = bmak.bm ? \"2\" : \"1\");\n      } catch (a) {}\n\n      return a;\n    },\n    cookie_chk_read: function(a) {\n      if (document.cookie)\n        for (var t = a + \"=\", e = document.cookie.split(\"; \"), n = 0; n < e.length; n++) {\n          var o = e[n];\n\n          if (0 === o.indexOf(t)) {\n            var m = o.substring(t.length, o.length);\n            if (-1 != m.indexOf(\"~\") || -1 != decodeURIComponent(m).indexOf(\"~\")) return m;\n          }\n        }\n      return !1;\n    },\n    bpd: function() {\n      bmak.sd_debug(\"<bpd>\");\n      var a = 0;\n\n      try {\n        a = bmak.get_cf_date();\n        var t = bmak.updatet(),\n          e = \"3\";\n        bmak.ckie && (e = bmak.get_cookie());\n        var n = bmak.gd(),\n          o = window.DeviceOrientationEvent ? \"do_en\" : \"do_dis\",\n          m = window.DeviceMotionEvent ? \"dm_en\" : \"dm_dis\",\n          r = window.TouchEvent ? \"t_en\" : \"t_dis\",\n          i = o + \",\" + m + \",\" + r,\n          c = bmak.getforminfo(),\n          b = bmak.getdurl(),\n          d = bmak.aj_type + \",\" + bmak.aj_indx;\n        !bmak.fpcf.fpValCalculated && (0 == bmak.js_post || bmak.aj_indx > 0) && bmak.fpcf.fpVal();\n\n        var k = bmak.ke_vel + bmak.me_vel + bmak.doe_vel + bmak.dme_vel + bmak.te_vel + bmak.pe_vel,\n          s = bmak.ff,\n          l = s(80) + s(105) + s(90) + s(116) + s(69),\n          u = bmak.jrs(bmak.start_ts),\n          _ = bmak.get_cf_date() - bmak.start_ts,\n          f = bmak.pi(bmak.d2 / 6),\n          p = bmak.fas(),\n          h = [bmak.ke_vel + 1, bmak.me_vel + 32, bmak.te_vel + 32, bmak.doe_vel, bmak.dme_vel, bmak.pe_vel, k, t, bmak.init_time, bmak.start_ts, bmak.fpcf.td, bmak.d2, bmak.ke_cnt, bmak.me_cnt, f, bmak.pe_cnt, bmak.te_cnt, _, bmak.ta, bmak.n_ck, e, bmak.ab(e), bmak.fpcf.rVal, bmak.fpcf.rCFP, p, l, u[0], u[1]],\n          v = h.join(\",\"),\n          g = \"\" + bmak.ab(bmak.fpcf.fpValstr);\n\n        bmak.firstLoad ? bmak.np() : bmak.csh(), !bmak.hbCalc && (0 == bmak.js_post || bmak.aj_indx > 0) && (bmak.fm(), bmak.wgl(), bmak.hbCalc = !0);\n        var w = \"\";\n        bmak.hbCalc && (w = bmak.fmh + \",\" + bmak.fmz + \",\" + bmak.ssh + \",\" + bmak.wv + \",\" + bmak.wr + \",\" + bmak.weh + \",\" + bmak.wl);\n        var y = bmak.sed(),\n          C = bmak.mn_get_current_challenges(),\n          S = \"\",\n          E = \"\",\n          M = \"\";\n\n        if (void 0 !== C[1]) {\n          var j = C[1];\n          void 0 !== bmak.mn_r[j] && (S = bmak.mn_r[j]);\n        }\n\n        if (void 0 !== C[2]) {\n          var x = C[2];\n          void 0 !== bmak.mn_r[x] && (E = bmak.mn_r[x]);\n        }\n\n        if (void 0 !== C[3]) {\n          var A = C[3];\n          void 0 !== bmak.mn_r[A] && (M = bmak.mn_r[A]);\n        }\n\n        bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + n + \"-1,2,-94,-101,\" + i + \"-1,2,-94,-105,\" + bmak.informinfo + \"-1,2,-94,-102,\" + c + \"-1,2,-94,-108,\" + bmak.kact + \"-1,2,-94,-110,\" + bmak.mact + \"-1,2,-94,-117,\" + bmak.tact + \"-1,2,-94,-111,\" + bmak.doact + \"-1,2,-94,-109,\" + bmak.dmact + \"-1,2,-94,-114,\" + bmak.pact + \"-1,2,-94,-103,\" + bmak.vcact + \"-1,2,-94,-112,\" + b + \"-1,2,-94,-115,\" + v + \"-1,2,-94,-106,\" + d, bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-119,\" + bmak.mr + \"-1,2,-94,-122,\" + y + \"-1,2,-94,-123,\" + S + \"-1,2,-94,-124,\" + E + \"-1,2,-94,-126,\" + M + \"-1,2,-94,-127,\" + bmak.nav_perm;\n        var L = 24 ^ bmak.ab(bmak.sensor_data);\n        bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-70,\" + bmak.fpcf.fpValstr + \"-1,2,-94,-80,\" + g + \"-1,2,-94,-116,\" + bmak.o9 + \"-1,2,-94,-118,\" + L + \"-1,2,-94,-129,\" + w + \"-1,2,-94,-121,\", bmak.sd_debug(\",s1:\" + bmak.sensor_data.slice(0, 10));\n      } catch (a) {\n        var P = \"\";\n\n        try {\n          a.stack && \"string\" == typeof a.stack ? P = a.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof a && (P = a.replace(/\\\"/g, \"\\\\'\")), P = P.slice(0, 1e3), bmak.sd_debug(\",s2:\" + P), bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + bmak.uar() + \"-1,2,-94,-120,\" + P;\n        } catch (a) {\n          a.stack && \"string\" == typeof a.stack ? P = a.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof a && (P = a.replace(/\\\"/g, \"\\\\'\")), P = P.slice(0, 1e3), bmak.sd_debug(\",s3:\" + P), bmak.sensor_data = bmak.ver + bmak.sensor_data + \",s3:\" + P;\n        }\n      }\n\n      try {\n        var T = bmak.od(bmak.cs, bmak.api_public_key).slice(0, 16),\n          F = Math.floor(bmak.get_cf_date() / 36e5),\n          D = bmak.get_cf_date(),\n          B = T + bmak.od(F, T) + bmak.sensor_data;\n        bmak.sensor_data = B + \";\" + (bmak.get_cf_date() - a) + \";\" + bmak.tst + \";\" + (bmak.get_cf_date() - D);\n      } catch (a) {}\n\n      bmak.sd_debug(\"</bpd>\");\n    },\n    od: function(a, t) {\n      try {\n        a = String(a), t = String(t);\n        var e = [],\n          n = t.length;\n\n        if (n > 0) {\n          for (var o = 0; o < a.length; o++) {\n            var m = a.charCodeAt(o),\n              r = a.charAt(o),\n              i = t.charCodeAt(o % n);\n            m = bmak.rir(m, 47, 57, i), m != a.charCodeAt(o) && (r = String.fromCharCode(m)), e.push(r);\n          }\n\n          if (e.length > 0) return e.join(\"\");\n        }\n      } catch (a) {}\n\n      return a;\n    },\n    rir: function(a, t, e, n) {\n      return a > t && a <= e && (a += n % (e - t)) > e && (a = a - e + t), a;\n    },\n    lvc: function(a) {\n      try {\n        if (bmak.vc_cnt < bmak.vc_cnt_lmt) {\n          var t = bmak.get_cf_date() - bmak.start_ts,\n            e = a + \",\" + t + \";\";\n          bmak.vcact = bmak.vcact + e;\n        }\n\n        bmak.vc_cnt++;\n      } catch (a) {}\n    },\n    hvc: function() {\n      try {\n        var a = 1;\n        document[bmak.hn] && (a = 0), bmak.lvc(a);\n      } catch (a) {}\n    },\n    hb: function(a) {\n      bmak.lvc(2);\n    },\n    hf: function(a) {\n      bmak.lvc(3);\n    },\n    rve: function() {\n      void 0 !== document.hidden ? (bmak.hn = \"hidden\", bmak.vc = \"visibilitychange\") : void 0 !== document.mozHidden ? (bmak.hn = \"mozHidden\", bmak.vc = \"mozvisibilitychange\") : void 0 !== document.msHidden ? (bmak.hn = \"msHidden\", bmak.vc = \"msvisibilitychange\") : void 0 !== document.webkitHidden && (bmak.hn = \"webkitHidden\", bmak.vc = \"webkitvisibilitychange\"), document.addEventListener ? \"unk\" != bmak.hn && document.addEventListener(bmak.vc, bmak.hvc, !0) : document.attachEvent && \"unk\" != bmak.hn && document.attachEvent(bmak.vc, bmak.hvc), window.onblur = bmak.hb, window.onfocus = bmak.hf;\n    },\n    startTracking: function() {\n      bmak.startdoadma();\n\n      try {\n        bmak.to();\n      } catch (a) {\n        bmak.o9 = -654321;\n      }\n\n      setInterval(function() {\n        bmak.startdoadma();\n      }, 3e3), document.addEventListener ? (document.addEventListener(\"touchmove\", bmak.htm, !0), document.addEventListener(\"touchstart\", bmak.hts, !0), document.addEventListener(\"touchend\", bmak.hte, !0), document.addEventListener(\"touchcancel\", bmak.htc, !0), document.addEventListener(\"mousemove\", bmak.hmm, !0), document.addEventListener(\"click\", bmak.hc, !0), document.addEventListener(\"mousedown\", bmak.hmd, !0), document.addEventListener(\"mouseup\", bmak.hmu, !0), document.addEventListener(\"pointerdown\", bmak.hpd, !0), document.addEventListener(\"pointerup\", bmak.hpu, !0), document.addEventListener(\"keydown\", bmak.hkd, !0), document.addEventListener(\"keyup\", bmak.hku, !0), document.addEventListener(\"keypress\", bmak.hkp, !0)) : document.attachEvent && (document.attachEvent(\"touchmove\", bmak.htm), document.attachEvent(\"touchstart\", bmak.hts), document.attachEvent(\"touchend\", bmak.hte), document.attachEvent(\"touchcancel\", bmak.htc), document.attachEvent(\"onmousemove\", bmak.hmm), document.attachEvent(\"onclick\", bmak.hc), document.attachEvent(\"onmousedown\", bmak.hmd), document.attachEvent(\"onmouseup\", bmak.hmu), document.attachEvent(\"onpointerdown\", bmak.hpd), document.attachEvent(\"onpointerup\", bmak.hpu), document.attachEvent(\"onkeydown\", bmak.hkd), document.attachEvent(\"onkeyup\", bmak.hku), document.attachEvent(\"onkeypress\", bmak.hkp)), bmak.rve(), bmak.informinfo = bmak.getforminfo(), bmak.js_post && (bmak.aj_type = 0, bmak.bpd(), bmak.pd(!0)), bmak.firstLoad = !1;\n    },\n    gb: function(a, t) {\n      var e = a.charCodeAt(t);\n      return e = e > 255 ? 0 : e;\n    },\n    encode: function(a) {\n      if (\"undefined\" != typeof btoa) return btoa(a);\n\n      for (var t, e, n, o, m, r, i, c = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", b = \"\", d = 3 * Math.floor(a.length / 3), k = 0; k < d; k += 3) t = bmak.gb(a, k), e = bmak.gb(a, k + 1), n = bmak.gb(a, k + 2), o = t >> 2, m = ((3 & t) << 4) + (e >> 4), r = ((15 & e) << 2) + (n >> 6), i = 63 & n, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + c.charAt(i);\n\n      return a.length % 3 == 1 && (t = bmak.gb(a, k), o = t >> 2, m = (3 & t) << 4, b = b + c.charAt(o) + c.charAt(m) + \"==\"), a.length % 3 == 2 && (t = bmak.gb(a, k), e = bmak.gb(a, k + 1), o = t >> 2, m = ((3 & t) << 4) + (e >> 4), r = (15 & e) << 2, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + \"=\"), b;\n    },\n    ie9OrLower: function() {\n      try {\n        if (\"string\" == typeof navigator.appVersion && -1 != navigator.appVersion.indexOf(\"MSIE\")) {\n          if (parseFloat(navigator.appVersion.split(\"MSIE\")[1]) <= 9) return !0;\n        }\n      } catch (a) {}\n\n      return !1;\n    },\n    parse_gp: function(a) {},\n    call_gp: function() {\n      var a;\n      void 0 !== window.XMLHttpRequest ? a = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (a = new XDomainRequest(), a.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : a = new ActiveXObject(\"Microsoft.XMLHTTP\"), a.open(\"GET\", bmak.params_url, !0), a.onreadystatechange = function() {\n        a.readyState > 3 && bmak.parse_gp && bmak.parse_gp(a);\n      }, a.send();\n    },\n    apicall: function(a, t) {\n      var e;\n      e = window.XDomainRequest ? new XDomainRequest() : window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\"Microsoft.XMLHTTP\"), e.open(\"POST\", a, t);\n      var n = bmak.encode(bmak.api_public_key + \":\");\n      bmak.auth = \",\\\"auth\\\" : \\\"\" + n + \"\\\"\", e.setRequestHeader && (e.setRequestHeader(\"Content-type\", \"application/json\"), e.setRequestHeader(\"Authorization\", \"Basic \" + n), bmak.auth = \"\");\n      var o = \"{\\\"session_id\\\" : \\\"\" + bmak.session_id + \"\\\",\\\"sensor_data\\\" : \\\"\" + bmak.sensor_data + \"\\\"\" + bmak.auth + \"}\";\n      e.send(o);\n    },\n    apicall_bm: function(a, t, e) {\n      var n;\n      void 0 !== window.XMLHttpRequest ? n = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (n = new XDomainRequest(), n.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : n = new ActiveXObject(\"Microsoft.XMLHTTP\"), n.open(\"POST\", a, t), void 0 !== n.withCredentials && (n.withCredentials = !0);\n      var o = \"{\\\"sensor_data\\\":\\\"\" + bmak.sensor_data + \"\\\"}\";\n      n.onreadystatechange = function() {\n        n.readyState > 3 && e && e(n);\n      }, n.send(o), bmak.dcs = 0;\n    },\n    pd: function(a) {\n      bmak.check_stop_protocol() ? (bmak.apicall_bm(bmak.cf_url, a, bmak.patp), bmak.aj_indx = bmak.aj_indx + 1) : bmak.loap && bmak.dcs && bmak.apicall_bm(bmak.cf_url, a, bmak.patp);\n    },\n    check_stop_protocol: function() {\n      var a = bmak.get_stop_signals(),\n        t = a[0];\n      !bmak.rst && t > -1 && (bmak.ir(), bmak.rst = !0);\n      var e = a[1];\n      return -1 == e || bmak.aj_ss < e;\n    },\n    get_stop_signals: function() {\n      var a = [-1, -1],\n        t = bmak.cookie_chk_read(bmak.ckie);\n      if (!1 !== t) try {\n        var e = decodeURIComponent(t).split(\"~\");\n\n        if (e.length >= 4) {\n          var n = bmak.pi(e[1]),\n            o = bmak.pi(e[3]);\n          n = isNaN(n) ? -1 : n, o = isNaN(o) ? -1 : o, a = [o, n];\n        }\n      } catch (a) {}\n      return a;\n    },\n    patp: function(a) {\n      bmak.aj_ss++, bmak.rst = !1;\n    },\n    get_mn_params_from_abck: function() {\n      var a = [\n        []\n      ];\n\n      try {\n        var t = bmak.cookie_chk_read(bmak.ckie);\n\n        if (!1 !== t) {\n          var e = decodeURIComponent(t).split(\"~\");\n\n          if (e.length >= 5) {\n            var n = e[0],\n              o = e[4],\n              m = o.split(\"||\");\n            if (m.length > 0)\n              for (var r = 0; r < m.length; r++) {\n                var i = m[r],\n                  c = i.split(\"-\");\n\n                if (c.length >= 5) {\n                  var b = bmak.pi(c[0]),\n                    d = c[1],\n                    k = bmak.pi(c[2]),\n                    s = bmak.pi(c[3]),\n                    l = bmak.pi(c[4]),\n                    u = 1;\n                  c.length >= 6 && (u = bmak.pi(c[5]));\n                  var _ = [b, n, d, k, s, l, u];\n                  2 == u ? a.splice(0, 0, _) : a.push(_);\n                }\n              }\n          }\n        }\n      } catch (a) {}\n\n      return a;\n    },\n    mn_get_current_challenges: function() {\n      var a = bmak.get_mn_params_from_abck(),\n        t = [];\n      if (null != a)\n        for (var e = 0; e < a.length; e++) {\n          var n = a[e];\n\n          if (n.length > 0) {\n            var o = n[1] + n[2],\n              m = n[6];\n            t[m] = o;\n          }\n        }\n      return t;\n    },\n    mn_update_challenge_details: function(a) {\n      bmak.mn_sen = a[0], bmak.mn_abck = a[1], bmak.mn_psn = a[2], bmak.mn_cd = a[3], bmak.mn_tout = a[4], bmak.mn_stout = a[5], bmak.mn_ct = a[6], bmak.mn_ts = bmak.start_ts, bmak.mn_cc = bmak.mn_abck + bmak.start_ts + bmak.mn_psn;\n    },\n    mn_get_new_challenge_params: function(a) {\n      var t = null,\n        e = null,\n        n = null;\n      if (null != a)\n        for (var o = 0; o < a.length; o++) {\n          var m = a[o];\n\n          if (m.length > 0) {\n            for (var r = m[0], i = bmak.mn_abck + bmak.start_ts + m[2], c = (m[3], m[6]), b = 0; b < bmak.mn_lcl && 1 == r && bmak.mn_lc[b] != i; b++);\n\n            b == bmak.mn_lcl && (t = o, 2 == c && (e = o), 3 == c && (n = o));\n          }\n        }\n      return null != n && bmak.pstate ? a[n] : null == e || bmak.pstate ? null == t || bmak.pstate ? null : a[t] : a[e];\n    },\n    mn_poll: function() {\n      if (0 == bmak.mn_state) {\n        var a = bmak.get_mn_params_from_abck(),\n          t = bmak.mn_get_new_challenge_params(a);\n        null != t && (bmak.mn_update_challenge_details(t), bmak.mn_sen && (bmak.mn_state = 1, bmak.mn_mc_indx = 0, bmak.mn_al = [], bmak.mn_il = [], bmak.mn_tcl = [], bmak.mn_lg = [], bmak.mn_rts = bmak.get_cf_date(), bmak.mn_rt = bmak.mn_rts - bmak.start_ts, bmak.mn_wt = 0, setTimeout(bmak.mn_w, bmak.mn_tout)));\n      }\n    },\n    rotate_right: function(a, t) {\n      return a >>> t | a << 32 - t;\n    },\n    encode_utf8: function(a) {\n      return unescape(encodeURIComponent(a));\n    },\n    mn_s: function(a) {\n      var t = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298],\n        e = 1779033703,\n        n = 3144134277,\n        o = 1013904242,\n        m = 2773480762,\n        r = 1359893119,\n        i = 2600822924,\n        c = 528734635,\n        b = 1541459225,\n        d = bmak.encode_utf8(a),\n        k = 8 * d.length;\n      d += String.fromCharCode(128);\n\n      for (var s = d.length / 4 + 2, l = Math.ceil(s / 16), u = new Array(l), _ = 0; _ < l; _++) {\n        u[_] = new Array(16);\n\n        for (var f = 0; f < 16; f++) u[_][f] = d.charCodeAt(64 * _ + 4 * f) << 24 | d.charCodeAt(64 * _ + 4 * f + 1) << 16 | d.charCodeAt(64 * _ + 4 * f + 2) << 8 | d.charCodeAt(64 * _ + 4 * f + 3) << 0;\n      }\n\n      var p = k / Math.pow(2, 32);\n      u[l - 1][14] = Math.floor(p), u[l - 1][15] = k;\n\n      for (var h = 0; h < l; h++) {\n        for (var v, g = new Array(64), w = e, y = n, C = o, S = m, E = r, v = i, M = c, j = b, _ = 0; _ < 64; _++) {\n          var x, A, L, P, T, F;\n          _ < 16 ? g[_] = u[h][_] : (x = bmak.rotate_right(g[_ - 15], 7) ^ bmak.rotate_right(g[_ - 15], 18) ^ g[_ - 15] >>> 3, A = bmak.rotate_right(g[_ - 2], 17) ^ bmak.rotate_right(g[_ - 2], 19) ^ g[_ - 2] >>> 10, g[_] = g[_ - 16] + x + g[_ - 7] + A), A = bmak.rotate_right(E, 6) ^ bmak.rotate_right(E, 11) ^ bmak.rotate_right(E, 25), L = E & v ^ ~E & M, P = j + A + L + t[_] + g[_], x = bmak.rotate_right(w, 2) ^ bmak.rotate_right(w, 13) ^ bmak.rotate_right(w, 22), T = w & y ^ w & C ^ y & C, F = x + T, j = M, M = v, v = E, E = S + P >>> 0, S = C, C = y, y = w, w = P + F >>> 0;\n        }\n\n        e += w, n += y, o += C, m += S, r += E, i += v, c += M, b += j;\n      }\n\n      return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, 255 & m, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, 255 & i, c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c, b >> 24 & 255, b >> 16 & 255, b >> 8 & 255, 255 & b];\n    },\n    mn_init: function() {\n      var a = 200;\n      bmak.pstate && (a = 100), setInterval(bmak.mn_poll, a);\n    },\n    bdm: function(a, t) {\n      for (var e = 0, n = 0; n < a.length; ++n) e = (e << 8 | a[n]) >>> 0, e %= t;\n\n      return e;\n    },\n    mn_w: function() {\n      try {\n        for (var a = 0, t = 0, e = 0, n = \"\", o = bmak.get_cf_date(), m = bmak.mn_cd + bmak.mn_mc_indx; 0 == a;) {\n          n = Math.random().toString(16);\n          var r = bmak.mn_cc + m.toString() + n,\n            i = bmak.mn_s(r);\n          if (0 == bmak.bdm(i, m)) a = 1, e = bmak.get_cf_date() - o, bmak.mn_al.push(n), bmak.mn_tcl.push(e), bmak.mn_il.push(t), 0 == bmak.mn_mc_indx && (bmak.mn_lg.push(bmak.mn_abck), bmak.mn_lg.push(bmak.mn_ts), bmak.mn_lg.push(bmak.mn_psn), bmak.mn_lg.push(bmak.mn_cc), bmak.mn_lg.push(bmak.mn_cd.toString()), bmak.mn_lg.push(m.toString()), bmak.mn_lg.push(n), bmak.mn_lg.push(r), bmak.mn_lg.push(i), bmak.mn_lg.push(bmak.mn_rt));\n          else if ((t += 1) % 1e3 == 0 && (e = bmak.get_cf_date() - o) > bmak.mn_stout) return bmak.mn_wt += e, void setTimeout(bmak.mn_w, bmak.mn_stout);\n        }\n\n        bmak.mn_mc_indx += 1, bmak.mn_mc_indx < bmak.mn_mc_lmt ? setTimeout(bmak.mn_w, e) : (bmak.mn_mc_indx = 0, bmak.mn_lc[bmak.mn_lcl] = bmak.mn_cc, bmak.mn_ld[bmak.mn_lcl] = bmak.mn_cd, bmak.mn_lcl = bmak.mn_lcl + 1, bmak.mn_state = 0, bmak.mn_lg.push(bmak.mn_wt), bmak.mn_lg.push(bmak.get_cf_date()), bmak.mn_r[bmak.mn_abck + bmak.mn_psn] = bmak.mn_pr(), bmak.js_post && (bmak.aj_type = 8, 2 == bmak.mn_ct && (bmak.dcs = 1), bmak.bpd(), bmak.pd(!0)));\n      } catch (a) {\n        bmak.sd_debug(\",mn_w:\" + a);\n      }\n    },\n    mn_pr: function() {\n      return bmak.mn_al.join(\",\") + \";\" + bmak.mn_tcl.join(\",\") + \";\" + bmak.mn_il.join(\",\") + \";\" + bmak.mn_lg.join(\",\") + \";\";\n    },\n    ats: function(a) {\n      for (var t = \"\", e = 0; e < a.length; e++) t += 2 == a[e].toString(16).length ? a[e].toString(16) : \"0\" + a[e].toString(16);\n\n      return t;\n    },\n    calc_fp: function() {\n      bmak.fpcf.fpVal(), bmak.js_post && (bmak.aj_type = 9, bmak.bpd(), bmak.pd(!0));\n    },\n    listFunctions: {\n      _setJsPost: function(a) {\n        bmak.js_post = a, bmak.js_post && (bmak.enReadDocUrl = 1);\n      },\n      _setSessionId: function(a) {\n        bmak.session_id = a;\n      },\n      _setJavaScriptKey: function(a) {\n        bmak.api_public_key = a;\n      },\n      _setEnAddHidden: function(a) {\n        bmak.enAddHidden = a;\n      },\n      _setInitTime: function(a) {\n        bmak.init_time = a;\n      },\n      _setApiUrl: function(a) {\n        bmak.cf_url = a;\n      },\n      _setEnGetLoc: function(a) {\n        bmak.enGetLoc = a;\n      },\n      _setEnReadDocUrl: function(a) {\n        bmak.enReadDocUrl = a;\n      },\n      _setDisFpCalOnTimeout: function(a) {\n        bmak.disFpCalOnTimeout = a;\n      },\n      _setCookie: function(a) {\n        bmak.ckie = a;\n      },\n      _setCS: function(a) {\n        bmak.cs = (String(a) + bmak.cs).slice(0, 16);\n      },\n      _setFsp: function(a) {\n        bmak.fsp = a, bmak.fsp && (bmak.cf_url = bmak.cf_url.replace(/^http:\\/\\//i, \"https://\"));\n      },\n      _setBm: function(a) {\n        bmak.bm = a, bmak.bm ? (bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/_bm/_data\", bmak.js_post = !0) : bmak.params_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/get_params\";\n      },\n      _setAu: function(a) {\n        \"string\" == typeof a && (0 === a.lastIndexOf(\"/\", 0) ? bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + a : bmak.cf_url = a);\n      },\n      _setSDFieldNames: function() {\n        try {\n          var a;\n\n          for (a = 0; a < arguments.length; a += 1) bmak.sdfn.push(arguments[a]);\n        } catch (a) {\n          bmak.sd_debug(\",setSDFN:\" + a);\n        }\n      },\n      _setUseAltFonts: function(a) {\n        bmak.altFonts = a;\n      },\n      _setPowState: function(a) {\n        bmak.pstate = a;\n      },\n      _setPow: function(a) {\n        bmak.pstate = a;\n      },\n      _setLOAP: function(a) {\n        bmak.loap = a;\n      }\n    },\n    applyFunc: function() {\n      var a, t, e;\n\n      for (a = 0; a < arguments.length; a += 1) e = arguments[a];\n\n      t = e.shift(), bmak.listFunctions[t] && bmak.listFunctions[t].apply(bmak.listFunctions, e);\n    }\n  };\n\nif (function(a) {\n    var t = {};\n    a.fpcf = t, t.sf4 = function() {\n      var a = bmak.uar();\n      return !(!~a.indexOf(\"Version/4.0\") || !(~a.indexOf(\"iPad;\") || ~a.indexOf(\"iPhone\") || ~a.indexOf(\"Mac OS X 10_5\")));\n    }, t.fpValstr = \"-1\", t.fpValCalculated = !1, t.rVal = \"-1\", t.rCFP = \"-1\", t.cache = {}, t.td = -999999, t.clearCache = function() {\n      t.cache = {};\n    }, t.fpVal = function() {\n      t.fpValCalculated = !0;\n\n      try {\n        var a = 0;\n        a = Date.now ? Date.now() : +new Date();\n        var e = t.data();\n        t.fpValstr = e.replace(/\\\"/g, \"\\\\\\\\\\\"\");\n        var n = 0;\n        n = Date.now ? Date.now() : +new Date(), t.td = n - a;\n      } catch (a) {}\n    }, t.timezoneOffsetKey = function() {\n      return new Date().getTimezoneOffset();\n    }, t.data = function() {\n      var a = screen.colorDepth ? screen.colorDepth : -1,\n        e = screen.pixelDepth ? screen.pixelDepth : -1,\n        n = navigator.cookieEnabled ? navigator.cookieEnabled : -1,\n        o = navigator.javaEnabled ? navigator.javaEnabled() : -1,\n        m = navigator.doNotTrack ? navigator.doNotTrack : -1,\n        r = \"default\";\n      r = bmak.runFonts ? bmak.altFonts ? t.fonts_optm() : t.fonts() : \"dis\";\n      return [t.canvas(\"<@nv45. F1n63r,Pr1n71n6!\"), t.canvas(\"m,Ev!xV67BaU> eh2m<f3AG3@\"), r, t.pluginInfo(), t.sessionStorageKey(), t.localStorageKey(), t.indexedDbKey(), t.timezoneOffsetKey(), t.webrtcKey(), a, e, n, o, m].join(\";\");\n    }, t.PLUGINS = [\"WebEx64 General Plugin Container\", \"YouTube Plug-in\", \"Java Applet Plug-in\", \"Shockwave Flash\", \"iPhotoPhotocast\", \"SharePoint Browser Plug-in\", \"Chrome Remote Desktop Viewer\", \"Chrome PDF Viewer\", \"Native Client\", \"Unity Player\", \"WebKit-integrierte PDF\", \"QuickTime Plug-in\", \"RealPlayer Version Plugin\", \"RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)\", \"Mozilla Default Plug-in\", \"Adobe Acrobat\", \"AdobeAAMDetect\", \"Google Earth Plug-in\", \"Java Plug-in 2 for NPAPI Browsers\", \"Widevine Content Decryption Module\", \"Microsoft Office Live Plug-in\", \"Windows Media Player Plug-in Dynamic Link Library\", \"Google Talk Plugin Video Renderer\", \"Edge PDF Viewer\", \"Shockwave for Director\", \"Default Browser Helper\", \"Silverlight Plug-In\"], t.pluginInfo = function() {\n      if (void 0 === navigator.plugins) return null;\n\n      for (var a = t.PLUGINS.length, e = \"\", n = 0; n < a; n++) {\n        var o = t.PLUGINS[n];\n        void 0 !== navigator.plugins[o] && (e = e + \",\" + n);\n      }\n\n      return e;\n    }, t.canvas = function(a) {\n      try {\n        if (void 0 !== t.cache.canvas) return t.cache.canvas;\n        var e = -1;\n\n        if (!t.sf4()) {\n          var n = document.createElement(\"canvas\");\n\n          if (n.width = 280, n.height = 60, n.style.display = \"none\", \"function\" == typeof n.getContext) {\n            var o = n.getContext(\"2d\");\n            o.fillStyle = \"rgb(102, 204, 0)\", o.fillRect(100, 5, 80, 50), o.fillStyle = \"#f60\", o.font = \"16pt Arial\", o.fillText(a, 10, 40), o.strokeStyle = \"rgb(120, 186, 176)\", o.arc(80, 10, 20, 0, Math.PI, !1), o.stroke();\n            var m = n.toDataURL();\n            e = 0;\n\n            for (var r = 0; r < m.length; r++) {\n              e = (e << 5) - e + m.charCodeAt(r), e &= e;\n            }\n\n            e = e.toString();\n            var i = document.createElement(\"canvas\");\n            i.width = 16, i.height = 16;\n            var c = i.getContext(\"2d\");\n            c.font = \"6pt Arial\", t.rVal = Math.floor(1e3 * Math.random()).toString(), c.fillText(t.rVal, 1, 12);\n\n            for (var b = i.toDataURL(), d = 0, k = 0; k < b.length; k++) {\n              d = (d << 5) - d + b.charCodeAt(k), d &= d;\n            }\n\n            t.rCFP = d.toString();\n          }\n        }\n\n        return e;\n      } catch (a) {\n        return \"exception\";\n      }\n    }, t.fonts_optm = function() {\n      var a = 200,\n        e = bmak.get_cf_date(),\n        n = [];\n\n      if (!t.sf4() && document.body) {\n        var o = [\"sans-serif\", \"monospace\"],\n          m = [0, 0],\n          r = [0, 0],\n          i = document.createElement(\"div\");\n        i.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n        var c;\n\n        for (c = 0; c < o.length; c++) {\n          var b = document.createElement(\"span\");\n          b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = o[c], i.appendChild(b);\n        }\n\n        for (document.body.appendChild(i), c = 0; c < i.childNodes.length; c++) b = i.childNodes[c], m[c] = b.offsetWidth, r[c] = b.offsetHeight;\n\n        if (document.body.removeChild(i), bmak.get_cf_date() - e > a) return \"\";\n        var d = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"],\n          k = document.createElement(\"div\");\n        k.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n\n        for (var s = [], l = 0; l < d.length; l++) {\n          var u = document.createElement(\"div\");\n\n          for (c = 0; c < o.length; c++) {\n            var b = document.createElement(\"span\");\n            b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = d[l] + \",\" + o[c], u.appendChild(b);\n          }\n\n          k.appendChild(u);\n        }\n\n        if (bmak.get_cf_date() - e > a) return \"\";\n        document.body.appendChild(k);\n\n        for (var l = 0; l < k.childNodes.length; l++) {\n          var _ = !1,\n            u = k.childNodes[l];\n\n          for (c = 0; c < u.childNodes.length; c++) {\n            var b = u.childNodes[c];\n\n            if (b.offsetWidth !== m[c] || b.offsetHeight !== r[c]) {\n              _ = !0;\n              break;\n            }\n          }\n\n          if (_ && s.push(l), bmak.get_cf_date() - e > a) break;\n        }\n\n        document.body.removeChild(k), n = s.sort();\n      }\n\n      return n.join(\",\");\n    }, t.fonts = function() {\n      var a = [];\n\n      if (!t.sf4() && document.body) {\n        var e = [\"serif\", \"sans-serif\", \"monospace\"],\n          n = [0, 0, 0],\n          o = [0, 0, 0],\n          m = document.createElement(\"span\");\n        m.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", m.style.fontSize = \"90px\";\n        var r;\n\n        for (r = 0; r < e.length; r++) m.style.fontFamily = e[r], document.body.appendChild(m), n[r] = m.offsetWidth, o[r] = m.offsetHeight, document.body.removeChild(m);\n\n        for (var i = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"], c = [], b = 0; b < i.length; b++) {\n          var d = !1;\n\n          for (r = 0; r < e.length; r++)\n            if (m.style.fontFamily = i[b] + \",\" + e[r], document.body.appendChild(m), m.offsetWidth === n[r] && m.offsetHeight === o[r] || (d = !0), document.body.removeChild(m), d) {\n              c.push(b);\n              break;\n            }\n        }\n\n        a = c.sort();\n      }\n\n      return a.join(\",\");\n    }, t.webrtcKey = function() {\n      return \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection;\n    }, t.indexedDbKey = function() {\n      return !!t.hasIndexedDB();\n    }, t.sessionStorageKey = function() {\n      return !!t.hasSessionStorage();\n    }, t.localStorageKey = function() {\n      return !!t.hasLocalStorage();\n    }, t.hasSessionStorage = function() {\n      try {\n        return !!window.sessionStorage;\n      } catch (a) {\n        return !1;\n      }\n    }, t.hasLocalStorage = function() {\n      try {\n        return !!window.localStorage;\n      } catch (a) {\n        return !1;\n      }\n    }, t.hasIndexedDB = function() {\n      return !!window.indexedDB;\n    };\n  }(bmak), bmak.firstLoad) {\n  bmak.sd_debug(\"<init/>\");\n\n  for (var bm_counter = 0; bm_counter < _cf.length; bm_counter++) bmak.applyFunc(_cf[bm_counter]);\n\n  bmak.sd_debug(\"<setSDFN>\" + bmak.sdfn.join() + \"</setSDFN>\"), _cf = {\n    push: bmak.applyFunc\n  };\n\n  try {\n    bmak.ir(), bmak.t_tst = bmak.get_cf_date(), bmak.startTracking(), bmak.tst = bmak.get_cf_date() - bmak.t_tst, bmak.disFpCalOnTimeout || setTimeout(bmak.calc_fp, 500);\n\n    for (var bm_counter = 0; bm_counter < 3; bm_counter++) setTimeout(bmak.getmr, 400 + 5e3 * bm_counter);\n\n    bmak.mn_init();\n  } catch (a) {}\n}"
  },
  {
    "path": "scripts/akamai-1.68-nike.js",
    "content": "var _cf = _cf || [],\n  bmak = bmak && bmak.hasOwnProperty(\"ver\") && bmak.hasOwnProperty(\"sed\") ? bmak : {\n    ver: 1.68,\n    ke_cnt_lmt: 150,\n    mme_cnt_lmt: 100,\n    mduce_cnt_lmt: 75,\n    pme_cnt_lmt: 25,\n    pduce_cnt_lmt: 25,\n    tme_cnt_lmt: 25,\n    tduce_cnt_lmt: 25,\n    doe_cnt_lmt: 10,\n    dme_cnt_lmt: 10,\n    vc_cnt_lmt: 100,\n    doa_throttle: 0,\n    dma_throttle: 0,\n    session_id: \"default_session\",\n    js_post: !1,\n    loc: \"\",\n    cf_url: \"https:\" === document.location.protocol ? \"https://\" : \"http://\",\n    params_url: (\"https:\" === document.location.protocol ? \"https://\" : \"http://\") + document.location.hostname + \"/get_params\",\n    auth: \"\",\n    api_public_key: \"afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq\",\n    aj_lmt_doact: 1,\n    aj_lmt_dmact: 1,\n    aj_lmt_tact: 1,\n    ce_js_post: 0,\n    init_time: 0,\n    informinfo: \"\",\n    prevfid: -1,\n    fidcnt: 0,\n    sensor_data: 0,\n    ins: null,\n    cns: null,\n    enGetLoc: 0,\n    enReadDocUrl: 1,\n    disFpCalOnTimeout: 0,\n    xagg: -1,\n    pen: -1,\n    brow: \"\",\n    browver: \"\",\n    psub: \"-\",\n    lang: \"-\",\n    prod: \"-\",\n    plen: -1,\n    doadma_en: 0,\n    sdfn: [],\n    d2: 0,\n    d3: 0,\n    thr: 0,\n    cs: \"0a46G5m17Vrp4o4c\",\n    hn: \"unk\",\n    z1: 0,\n    o9: 0,\n    vc: \"\",\n    y1: 2016,\n    ta: 0,\n    tst: -1,\n    t_tst: 0,\n    ckie: \"_abck\",\n    n_ck: \"0\",\n    ckurl: 0,\n    bm: !1,\n    mr: \"-1\",\n    altFonts: !1,\n    rst: !1,\n    runFonts: !1,\n    fsp: !1,\n    firstLoad: !0,\n    pstate: !1,\n    mn_mc_lmt: 10,\n    mn_state: 0,\n    mn_mc_indx: 0,\n    mn_sen: 0,\n    mn_tout: 100,\n    mn_stout: 1e3,\n    mn_ct: 1,\n    mn_cc: \"\",\n    mn_cd: 1e4,\n    mn_lc: [],\n    mn_ld: [],\n    mn_lcl: 0,\n    mn_al: [],\n    mn_il: [],\n    mn_tcl: [],\n    mn_r: [],\n    mn_rt: 0,\n    mn_wt: 0,\n    mn_abck: \"\",\n    mn_psn: \"\",\n    mn_ts: \"\",\n    mn_lg: [],\n    loap: 1,\n    dcs: 0,\n    ir: function() {\n      bmak.start_ts = Date.now ? Date.now() : +new Date(), bmak.kact = \"\", bmak.ke_cnt = 0, bmak.ke_vel = 0, bmak.mact = \"\", bmak.mme_cnt = 0, bmak.mduce_cnt = 0, bmak.me_vel = 0, bmak.pact = \"\", bmak.pme_cnt = 0, bmak.pduce_cnt = 0, bmak.pe_vel = 0, bmak.tact = \"\", bmak.tme_cnt = 0, bmak.tduce_cnt = 0, bmak.te_vel = 0, bmak.doact = \"\", bmak.doe_cnt = 0, bmak.doe_vel = 0, bmak.dmact = \"\", bmak.dme_cnt = 0, bmak.dme_vel = 0, bmak.vcact = \"\", bmak.vc_cnt = 0, bmak.aj_indx = 0, bmak.aj_ss = 0, bmak.aj_type = -1, bmak.aj_indx_doact = 0, bmak.aj_indx_dmact = 0, bmak.aj_indx_tact = 0, bmak.me_cnt = 0, bmak.pe_cnt = 0, bmak.te_cnt = 0, bmak.nav_perm = \"\", bmak.brv = 0, bmak.hbCalc = !1, bmak.fmh = \"\", bmak.fmz = \"\", bmak.ssh = \"\", bmak.wv = \"\", bmak.wr = \"\", bmak.weh = \"\", bmak.wl = 0;\n    },\n    get_cf_date: function() {\n      return Date.now ? Date.now() : +new Date();\n    },\n    sd_debug: function(t) {\n      if (!bmak.js_post) {\n        var a = t;\n        \"string\" == typeof _sd_trace ? _sd_trace += a : _sd_trace = a;\n      }\n    },\n    pi: function(t) {\n      return parseInt(t);\n    },\n    uar: function() {\n      return window.navigator.userAgent.replace(/\\\\|\"/g, \"\");\n    },\n    gd: function() {\n      var t = bmak.uar(),\n        a = \"\" + bmak.ab(t),\n        e = bmak.start_ts / 2,\n        n = -1,\n        o = -1,\n        m = -1,\n        r = -1,\n        i = -1,\n        c = -1,\n        b = -1;\n\n      try {\n        n = window.screen ? window.screen.availWidth : -1;\n      } catch (t) {\n        n = -1;\n      }\n\n      try {\n        o = window.screen ? window.screen.availHeight : -1;\n      } catch (t) {\n        o = -1;\n      }\n\n      try {\n        m = window.screen ? window.screen.width : -1;\n      } catch (t) {\n        m = -1;\n      }\n\n      try {\n        r = window.screen ? window.screen.height : -1;\n      } catch (t) {\n        r = -1;\n      }\n\n      try {\n        i = window.innerHeight || (document.body && \"clientHeight\" in document.body ? document.body.clientHeight : document.documentElement && \"clientHeight\" in document.documentElement ? document.documentElement.clientHeight : -1);\n      } catch (t) {\n        i = -1;\n      }\n\n      try {\n        c = window.innerWidth || (document.body && \"clientWidth\" in document.body ? document.body.clientWidth : document.documentElement && \"clientWidth\" in document.documentElement ? document.documentElement.clientWidth : -1);\n      } catch (t) {\n        c = -1;\n      }\n\n      try {\n        b = \"outerWidth\" in window && void 0 !== window.outerWidth ? window.outerWidth : -1;\n      } catch (t) {\n        b = -1;\n      }\n\n      bmak.z1 = bmak.pi(bmak.start_ts / (bmak.y1 * bmak.y1));\n      var d = Math.random(),\n        s = bmak.pi(1e3 * d / 2),\n        k = d + \"\";\n      return k = k.slice(0, 11) + s, bmak.gbrv(), bmak.get_browser(), bmak.bc(), bmak.bmisc(), t + \",uaend,\" + bmak.xagg + \",\" + bmak.psub + \",\" + bmak.lang + \",\" + bmak.prod + \",\" + bmak.plen + \",\" + bmak.pen + \",\" + bmak.wen + \",\" + bmak.den + \",\" + bmak.z1 + \",\" + bmak.d3 + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + c + \",\" + i + \",\" + b + \",\" + bmak.bd() + \",\" + a + \",\" + k + \",\" + e + \",\" + bmak.brv + \",loc:\" + bmak.loc;\n    },\n    get_browser: function() {\n      navigator.productSub && (bmak.psub = navigator.productSub), navigator.language && (bmak.lang = navigator.language), navigator.product && (bmak.prod = navigator.product), bmak.plen = void 0 !== navigator.plugins ? navigator.plugins.length : -1;\n    },\n    gbrv: function() {\n      navigator.brave && navigator.brave.isBrave().then(function(t) {\n        bmak.brv = t ? 1 : 0;\n      }).catch(function(t) {\n        bmak.brv = 0;\n      });\n    },\n    bc: function() {\n      var t = window.addEventListener ? 1 : 0,\n        a = window.XMLHttpRequest ? 1 : 0,\n        e = window.XDomainRequest ? 1 : 0,\n        n = window.emit ? 1 : 0,\n        o = window.DeviceOrientationEvent ? 1 : 0,\n        m = window.DeviceMotionEvent ? 1 : 0,\n        r = window.TouchEvent ? 1 : 0,\n        i = window.spawn ? 1 : 0,\n        c = window.chrome ? 1 : 0,\n        b = Function.prototype.bind ? 1 : 0,\n        d = window.Buffer ? 1 : 0,\n        s = window.PointerEvent ? 1 : 0;\n\n      try {\n        var k = window.innerWidth ? 1 : 0;\n      } catch (t) {\n        var k = 0;\n      }\n\n      try {\n        var l = window.outerWidth ? 1 : 0;\n      } catch (t) {\n        var l = 0;\n      }\n\n      bmak.xagg = t + (a << 1) + (e << 2) + (n << 3) + (o << 4) + (m << 5) + (r << 6) + (i << 7) + (k << 8) + (l << 9) + (c << 10) + (b << 11) + (d << 12) + (s << 13);\n    },\n    bmisc: function() {\n      bmak.pen = window._phantom ? 1 : 0, bmak.wen = window.webdriver ? 1 : 0, bmak.den = window.domAutomation ? 1 : 0;\n    },\n    bd: function() {\n      var t = [],\n        a = window.callPhantom ? 1 : 0;\n      t.push(\",cpen:\" + a);\n      var e = 0;\n      window.ActiveXObject && \"ActiveXObject\" in window && (e = 1), t.push(\"i1:\" + e);\n      var n = \"number\" == typeof document.documentMode ? 1 : 0;\n      t.push(\"dm:\" + n);\n      var o = window.chrome && window.chrome.webstore ? 1 : 0;\n      t.push(\"cwen:\" + o);\n      var m = navigator.onLine ? 1 : 0;\n      t.push(\"non:\" + m);\n      var r = window.opera ? 1 : 0;\n      t.push(\"opc:\" + r);\n      var i = \"undefined\" != typeof InstallTrigger ? 1 : 0;\n      t.push(\"fc:\" + i);\n      var c = window.HTMLElement && Object.prototype.toString.call(window.HTMLElement).indexOf(\"Constructor\") > 0 ? 1 : 0;\n      t.push(\"sc:\" + c);\n      var b = \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection ? 1 : 0;\n      t.push(\"wrc:\" + b);\n      var d = \"mozInnerScreenY\" in window ? window.mozInnerScreenY : 0;\n      t.push(\"isc:\" + d), bmak.d2 = bmak.pi(bmak.z1 / 23);\n      var s = \"function\" == typeof navigator.vibrate ? 1 : 0;\n      t.push(\"vib:\" + s);\n      var k = \"function\" == typeof navigator.getBattery ? 1 : 0;\n      t.push(\"bat:\" + k);\n      var l = Array.prototype.forEach ? 0 : 1;\n      t.push(\"x11:\" + l);\n      var u = \"FileReader\" in window ? 1 : 0;\n      return t.push(\"x12:\" + u), t.join(\",\");\n    },\n    fas: function() {\n      try {\n        return Boolean(navigator.credentials) + (Boolean(navigator.appMinorVersion) << 1) + (Boolean(navigator.bluetooth) << 2) + (Boolean(navigator.storage) << 3) + (Boolean(Math.imul) << 4) + (Boolean(navigator.getGamepads) << 5) + (Boolean(navigator.getStorageUpdates) << 6) + (Boolean(navigator.hardwareConcurrency) << 7) + (Boolean(navigator.mediaDevices) << 8) + (Boolean(navigator.mozAlarms) << 9) + (Boolean(navigator.mozConnection) << 10) + (Boolean(navigator.mozIsLocallyAvailable) << 11) + (Boolean(navigator.mozPhoneNumberService) << 12) + (Boolean(navigator.msManipulationViewsEnabled) << 13) + (Boolean(navigator.permissions) << 14) + (Boolean(navigator.registerProtocolHandler) << 15) + (Boolean(navigator.requestMediaKeySystemAccess) << 16) + (Boolean(navigator.requestWakeLock) << 17) + (Boolean(navigator.sendBeacon) << 18) + (Boolean(navigator.serviceWorker) << 19) + (Boolean(navigator.storeWebWideTrackingException) << 20) + (Boolean(navigator.webkitGetGamepads) << 21) + (Boolean(navigator.webkitTemporaryStorage) << 22) + (Boolean(Number.parseInt) << 23) + (Boolean(Math.hypot) << 24);\n      } catch (t) {\n        return 0;\n      }\n    },\n    getmr: function() {\n      try {\n        if (\"undefined\" == typeof performance || void 0 === performance.now || \"undefined\" == typeof JSON) return void(bmak.mr = \"undef\");\n\n        for (var t = \"\", a = 1e3, e = [Math.abs, Math.acos, Math.asin, Math.atanh, Math.cbrt, Math.exp, Math.random, Math.round, Math.sqrt, isFinite, isNaN, parseFloat, parseInt, JSON.parse], n = 0; n < e.length; n++) {\n          var o = [],\n            m = 0,\n            r = performance.now(),\n            i = 0,\n            c = 0;\n\n          if (void 0 !== e[n]) {\n            for (i = 0; i < a && m < .6; i++) {\n              for (var b = performance.now(), d = 0; d < 4e3; d++) e[n](3.14);\n\n              var s = performance.now();\n              o.push(Math.round(1e3 * (s - b))), m = s - r;\n            }\n\n            var k = o.sort();\n            c = k[Math.floor(k.length / 2)] / 5;\n          }\n\n          t = t + c + \",\";\n        }\n\n        bmak.mr = t;\n      } catch (t) {\n        bmak.mr = \"exception\";\n      }\n    },\n    sed: function() {\n      var t;\n      t = window.$cdc_asdjflasutopfhvcZLmcfl_ || document.$cdc_asdjflasutopfhvcZLmcfl_ ? \"1\" : \"0\";\n      var a;\n      a = null != window.document.documentElement.getAttribute(\"webdriver\") ? \"1\" : \"0\";\n      var e;\n      e = void 0 !== navigator.webdriver && navigator.webdriver ? \"1\" : \"0\";\n      var n;\n      n = void 0 !== window.webdriver ? \"1\" : \"0\";\n      var o;\n      o = void 0 !== window.XPathResult || void 0 !== document.XPathResult ? \"1\" : \"0\";\n      var m;\n      m = null != window.document.documentElement.getAttribute(\"driver\") ? \"1\" : \"0\";\n      var r;\n      return r = null != window.document.documentElement.getAttribute(\"selenium\") ? \"1\" : \"0\", [t, a, e, n, o, m, r].join(\",\");\n    },\n    cma: function(t, a) {\n      try {\n        if (1 == a && bmak.mme_cnt < bmak.mme_cnt_lmt || 1 != a && bmak.mduce_cnt < bmak.mduce_cnt_lmt) {\n          var e = t || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = e.toElement;\n          null == m && (m = e.target);\n          var r = bmak.gf(m),\n            i = bmak.get_cf_date() - bmak.start_ts,\n            c = bmak.me_cnt + \",\" + a + \",\" + i + \",\" + n + \",\" + o;\n\n          if (1 != a) {\n            c = c + \",\" + r;\n            var b = void 0 !== e.which ? e.which : e.button;\n            null != b && 1 != b && (c = c + \",\" + b);\n          }\n\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (c += \",it0\"), c += \";\", bmak.me_vel = bmak.me_vel + bmak.me_cnt + a + i + n + o, bmak.mact = bmak.mact + c, bmak.ta += i;\n        }\n\n        1 == a ? bmak.mme_cnt++ : bmak.mduce_cnt++, bmak.me_cnt++, bmak.js_post && 3 == a && (bmak.aj_type = 1, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    x2: function() {\n      var t = bmak.ff,\n        a = t(98) + t(109) + t(97) + t(107),\n        e = t(103) + t(101) + t(116) + t(95) + t(99) + t(102) + t(95) + t(100) + t(97) + t(116) + t(101),\n        n = window[a][e],\n        o = 0;\n      return \"function\" == typeof n && (o = n()), o;\n    },\n    np: function() {\n      var t = [],\n        a = [\"geolocation\", \"notifications\", \"push\", \"midi\", \"camera\", \"microphone\", \"speaker\", \"device-info\", \"background-sync\", \"bluetooth\", \"persistent-storage\", \"ambient-light-sensor\", \"accelerometer\", \"gyroscope\", \"magnetometer\", \"clipboard\", \"accessibility-events\", \"clipboard-read\", \"clipboard-write\", \"payment-handler\"];\n\n      try {\n        if (!navigator.permissions) return void(bmak.nav_perm = 6);\n        bmak.nav_perm = 8;\n\n        var e = function(a, e) {\n            return navigator.permissions.query({\n              name: a\n            }).then(function(a) {\n              switch (a.state) {\n                case \"prompt\":\n                  t[e] = 1;\n                  break;\n\n                case \"granted\":\n                  t[e] = 2;\n                  break;\n\n                case \"denied\":\n                  t[e] = 0;\n                  break;\n\n                default:\n                  t[e] = 5;\n              }\n            }).catch(function(a) {\n              t[e] = -1 !== a.message.indexOf(\"is not a valid enum value of type PermissionName\") ? 4 : 3;\n            });\n          },\n          n = a.map(function(t, a) {\n            return e(t, a);\n          });\n\n        Promise.all(n).then(function() {\n          bmak.nav_perm = t.join(\"\");\n        });\n      } catch (t) {\n        bmak.nav_perm = 7;\n      }\n    },\n    cpa: function(t, a) {\n      try {\n        var e = !1;\n\n        if (1 == a && bmak.pme_cnt < bmak.pme_cnt_lmt || 1 != a && bmak.pduce_cnt < bmak.pduce_cnt_lmt) {\n          var n = t || window.event;\n\n          if (n && \"mouse\" != n.pointerType) {\n            e = !0;\n            var o = -1,\n              m = -1;\n            n && n.pageX && n.pageY ? (o = Math.floor(n.pageX), m = Math.floor(n.pageY)) : n && n.clientX && n.clientY && (o = Math.floor(n.clientX), m = Math.floor(n.clientY));\n            var r = bmak.get_cf_date() - bmak.start_ts,\n              i = bmak.pe_cnt + \",\" + a + \",\" + r + \",\" + o + \",\" + m;\n            void 0 !== n.isTrusted && !1 === n.isTrusted && (i += \",0\"), bmak.pe_vel = bmak.pe_vel + bmak.pe_cnt + a + r + o + m, bmak.pact = bmak.pact + i + \";\", bmak.ta += r, 1 == a ? bmak.pme_cnt++ : bmak.pduce_cnt++;\n          }\n        }\n\n        1 == a ? bmak.pme_cnt++ : bmak.pduce_cnt++, bmak.pe_cnt++, bmak.js_post && 3 == a && e && (bmak.aj_type = 2, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    ab: function(t) {\n      if (null == t) return -1;\n\n      try {\n        for (var a = 0, e = 0; e < t.length; e++) {\n          var n = t.charCodeAt(e);\n          n < 128 && (a += n);\n        }\n\n        return a;\n      } catch (t) {\n        return -2;\n      }\n    },\n    ff: function(t) {\n      return String.fromCharCode(t);\n    },\n    cal_dis: function(t) {\n      var a = t[0] - t[1],\n        e = t[2] - t[3],\n        n = t[4] - t[5],\n        o = Math.sqrt(a * a + e * e + n * n);\n      return Math.floor(o);\n    },\n    to: function() {\n      var t = bmak.x2() % 1e7;\n      bmak.d3 = t;\n\n      for (var a = t, e = bmak.pi(bmak.ff(51)), n = 0; n < 5; n++) {\n        var o = bmak.pi(t / Math.pow(10, n)) % 10,\n          m = o + 1;\n        op = bmak.cc(o), a = op(a, m);\n      }\n\n      bmak.o9 = a * e;\n    },\n    jrs: function(t) {\n      for (var a = Math.floor(1e5 * Math.random() + 1e4), e = String(t * a), n = 0, o = [], m = e.length >= 18; o.length < 6;) o.push(parseInt(e.slice(n, n + 2))), n = m ? n + 3 : n + 2;\n\n      return [a, bmak.cal_dis(o)];\n    },\n    fm: function() {\n      var t = [\"Monospace\", \"Wingdings 2\", \"ITC Bodoni 72 Bold\", \"Menlo\", \"Gill Sans MT\", \"Lucida Sans\", \"Bodoni 72\", \"Serif\", \"Shree Devanagari 714\", \"Microsoft Tai Le\", \"Nimbus Roman No 9 L\", \"Candara\", \"Press Start 2P\", \"Waseem\"],\n        a = document.createElement(\"span\");\n      a.innerHTML = \"mmmmmmmmlli\", a.style.fontSize = \"192px\";\n      var e = \"\",\n        n = document.getElementsByTagName(\"body\")[0];\n\n      if (n) {\n        for (var o in t) a.style.fontFamily = t[o], n.appendChild(a), e += t[o] + \":\" + a.offsetWidth + \",\" + a.offsetHeight + \";\", n.removeChild(a);\n\n        bmak.fmh = bmak.ats(bmak.mn_s(e));\n      } else bmak.fmh = \"\";\n\n      bmak.fmz = \"devicePixelRatio\" in window && void 0 !== window.devicePixelRatio ? window.devicePixelRatio : -1;\n    },\n    wgl: function() {\n      try {\n        var t = document.createElement(\"canvas\"),\n          a = t.getContext(\"webgl\");\n        bmak.wv = \"n\", bmak.wr = \"n\", bmak.weh = \"n\", bmak.wl = 0, a && (bmak.wv = \"b\", bmak.wr = \"b\", bmak.weh = \"b\", a.getSupportedExtensions() && (bmak.weh = bmak.ats(bmak.mn_s(JSON.stringify(a.getSupportedExtensions().sort()))), bmak.wl = a.getSupportedExtensions().length, a.getSupportedExtensions().indexOf(\"WEBGL_debug_renderer_info\") >= 0 && (bmak.wv = a.getParameter(a.getExtension(\"WEBGL_debug_renderer_info\").UNMASKED_VENDOR_WEBGL), bmak.wr = a.getParameter(a.getExtension(\"WEBGL_debug_renderer_info\").UNMASKED_RENDERER_WEBGL))));\n      } catch (t) {\n        bmak.wv = \"e\", bmak.wr = \"e\", bmak.weh = \"e\", bmak.wl = 0;\n      }\n    },\n    csh: function() {\n      if (window.speechSynthesis) {\n        var t = window.speechSynthesis.getVoices();\n\n        if (t.length > 0) {\n          for (var a = \"\", e = 0; e < t.length; e++) a += t[e].voiceURI + \"_\" + t[e].lang;\n\n          bmak.ssh = bmak.ats(bmak.mn_s(a));\n        } else bmak.ssh = \"0\";\n      } else bmak.ssh = \"n\";\n    },\n    gf: function(t) {\n      var a;\n      if (a = null == t ? document.activeElement : t, null == document.activeElement) return -1;\n      var e = a.getAttribute(\"name\");\n\n      if (null == e) {\n        var n = a.getAttribute(\"id\");\n        return null == n ? -1 : bmak.ab(n);\n      }\n\n      return bmak.ab(e);\n    },\n    cc: function(t) {\n      var a = t % 4;\n      2 == a && (a = 3);\n\n      var e = 42 + a,\n        n = function(t, a) {\n          return 0;\n        };\n\n      if (42 == e) var n = function(t, a) {\n        return t * a;\n      };\n      else if (43 == e) var n = function(t, a) {\n        return t + a;\n      };\n      else var n = function(t, a) {\n        return t - a;\n      };\n      return n;\n    },\n    isIgn: function(t) {\n      var a = document.activeElement;\n      if (null == document.activeElement) return 0;\n      var e = a.getAttribute(\"type\");\n      return 1 == (null == e ? -1 : bmak.get_type(e)) && bmak.fidcnt > 12 && -2 == t ? 1 : 0;\n    },\n    cka: function(t, a) {\n      try {\n        var e = t || window.event,\n          n = -1,\n          o = 1;\n\n        if (bmak.ke_cnt < bmak.ke_cnt_lmt && e) {\n          n = e.keyCode;\n          var m = e.charCode,\n            r = e.shiftKey ? 1 : 0,\n            i = e.ctrlKey ? 1 : 0,\n            c = e.metaKey ? 1 : 0,\n            b = e.altKey ? 1 : 0,\n            d = 8 * r + 4 * i + 2 * c + b,\n            s = bmak.get_cf_date() - bmak.start_ts,\n            k = bmak.gf(null),\n            l = 0;\n          m && n && (n = 0 != m && 0 != n && m != n ? -1 : 0 != n ? n : m), 0 == i && 0 == c && 0 == b && n >= 32 && (n = 3 == a && n >= 32 && n <= 126 ? -2 : n >= 33 && n <= 47 ? -3 : n >= 112 && n <= 123 ? -4 : -2), k != bmak.prevfid ? (bmak.fidcnt = 0, bmak.prevfid = k) : bmak.fidcnt = bmak.fidcnt + 1;\n\n          if (0 == bmak.isIgn(n)) {\n            var u = bmak.ke_cnt + \",\" + a + \",\" + s + \",\" + n + \",\" + l + \",\" + d + \",\" + k;\n            void 0 !== e.isTrusted && !1 === e.isTrusted && (u += \",0\"), u += \";\", bmak.kact = bmak.kact + u, bmak.ke_vel = bmak.ke_vel + bmak.ke_cnt + a + s + n + d + k, bmak.ta += s;\n          } else o = 0;\n        }\n\n        o && e && bmak.ke_cnt++, !bmak.js_post || 1 != a || 13 != n && 9 != n || (bmak.aj_type = 3, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    cta: function(t, a) {\n      try {\n        if (1 == a && bmak.tme_cnt < bmak.tme_cnt_lmt || 1 != a && bmak.tduce_cnt < bmak.tduce_cnt_lmt) {\n          var e = t || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = bmak.get_cf_date() - bmak.start_ts,\n            r = bmak.te_cnt + \",\" + a + \",\" + m + \",\" + n + \",\" + o;\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (r += \",0\"), bmak.tact = bmak.tact + r + \";\", bmak.ta += m, bmak.te_vel = bmak.te_vel + bmak.te_cnt + a + m + n + o, bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n        }\n\n        1 == a ? bmak.tme_cnt++ : bmak.tduce_cnt++, bmak.te_cnt++, bmak.js_post && 2 == a && bmak.aj_indx_tact < bmak.aj_lmt_tact && (bmak.aj_type = 5, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_tact++);\n      } catch (t) {}\n    },\n    getFloatVal: function(t) {\n      try {\n        if (-1 != bmak.chknull(t) && !isNaN(t)) {\n          var a = parseFloat(t);\n          if (!isNaN(a)) return a.toFixed(2);\n        }\n      } catch (t) {}\n\n      return -1;\n    },\n    cdoa: function(t) {\n      try {\n        if (bmak.doe_cnt < bmak.doe_cnt_lmt && bmak.doa_throttle < 2 && t) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = bmak.getFloatVal(t.alpha),\n            n = bmak.getFloatVal(t.beta),\n            o = bmak.getFloatVal(t.gamma),\n            m = bmak.doe_cnt + \",\" + a + \",\" + e + \",\" + n + \",\" + o;\n          void 0 !== t.isTrusted && !1 === t.isTrusted && (m += \",0\"), bmak.doact = bmak.doact + m + \";\", bmak.ta += a, bmak.doe_vel = bmak.doe_vel + bmak.doe_cnt + a, bmak.doe_cnt++;\n        }\n\n        bmak.js_post && bmak.doe_cnt > 1 && bmak.aj_indx_doact < bmak.aj_lmt_doact && (bmak.aj_type = 6, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_doact++), bmak.doa_throttle++;\n      } catch (t) {}\n    },\n    cdma: function(t) {\n      try {\n        if (bmak.dme_cnt < bmak.dme_cnt_lmt && bmak.dma_throttle < 2 && t) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = -1,\n            n = -1,\n            o = -1;\n          t.acceleration && (e = bmak.getFloatVal(t.acceleration.x), n = bmak.getFloatVal(t.acceleration.y), o = bmak.getFloatVal(t.acceleration.z));\n          var m = -1,\n            r = -1,\n            i = -1;\n          t.accelerationIncludingGravity && (m = bmak.getFloatVal(t.accelerationIncludingGravity.x), r = bmak.getFloatVal(t.accelerationIncludingGravity.y), i = bmak.getFloatVal(t.accelerationIncludingGravity.z));\n          var c = -1,\n            b = -1,\n            d = 1;\n          t.rotationRate && (c = bmak.getFloatVal(t.rotationRate.alpha), b = bmak.getFloatVal(t.rotationRate.beta), d = bmak.getFloatVal(t.rotationRate.gamma));\n          var s = bmak.dme_cnt + \",\" + a + \",\" + e + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + i + \",\" + c + \",\" + b + \",\" + d;\n          void 0 !== t.isTrusted && !1 === t.isTrusted && (s += \",0\"), bmak.dmact = bmak.dmact + s + \";\", bmak.ta += a, bmak.dme_vel = bmak.dme_vel + bmak.dme_cnt + a, bmak.dme_cnt++;\n        }\n\n        bmak.js_post && bmak.dme_cnt > 1 && bmak.aj_indx_dmact < bmak.aj_lmt_dmact && (bmak.aj_type = 7, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_dmact++), bmak.dma_throttle++;\n      } catch (t) {}\n    },\n    get_type: function(t) {\n      return t = t.toLowerCase(), \"text\" == t || \"search\" == t || \"url\" == t || \"email\" == t || \"tel\" == t || \"number\" == t ? 0 : \"password\" == t ? 1 : 2;\n    },\n    chknull: function(t) {\n      return null == t ? -1 : t;\n    },\n    getforminfo: function() {\n      for (var t = \"\", a = \"\", e = document.getElementsByTagName(\"input\"), n = -1, o = 0; o < e.length; o++) {\n        var m = e[o],\n          r = bmak.ab(m.getAttribute(\"name\")),\n          i = bmak.ab(m.getAttribute(\"id\")),\n          c = m.getAttribute(\"required\"),\n          b = null == c ? 0 : 1,\n          d = m.getAttribute(\"type\"),\n          s = null == d ? -1 : bmak.get_type(d),\n          k = m.getAttribute(\"autocomplete\");\n        null == k ? n = -1 : (k = k.toLowerCase(), n = \"off\" == k ? 0 : \"on\" == k ? 1 : 2);\n        var l = m.defaultValue,\n          u = m.value,\n          _ = 0,\n          f = 0;\n        l && 0 != l.length && (f = 1), !u || 0 == u.length || f && u == l || (_ = 1), 2 != s && (t = t + s + \",\" + n + \",\" + _ + \",\" + b + \",\" + i + \",\" + r + \",\" + f + \";\"), a = a + _ + \";\";\n      }\n\n      return null == bmak.ins && (bmak.ins = a), bmak.cns = a, t;\n    },\n    startdoadma: function() {\n      0 == bmak.doadma_en && window.addEventListener && (window.addEventListener(\"deviceorientation\", bmak.cdoa, !0), window.addEventListener(\"devicemotion\", bmak.cdma, !0), bmak.doadma_en = 1), bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n    },\n    updatet: function() {\n      return bmak.get_cf_date() - bmak.start_ts;\n    },\n    htm: function(t) {\n      bmak.cta(t, 1);\n    },\n    hts: function(t) {\n      bmak.cta(t, 2);\n    },\n    hte: function(t) {\n      bmak.cta(t, 3);\n    },\n    htc: function(t) {\n      bmak.cta(t, 4);\n    },\n    hmm: function(t) {\n      bmak.cma(t, 1);\n    },\n    hc: function(t) {\n      bmak.cma(t, 2);\n    },\n    hmd: function(t) {\n      bmak.cma(t, 3);\n    },\n    hmu: function(t) {\n      bmak.cma(t, 4);\n    },\n    hpd: function(t) {\n      bmak.cpa(t, 3);\n    },\n    hpu: function(t) {\n      bmak.cpa(t, 4);\n    },\n    hkd: function(t) {\n      bmak.cka(t, 1);\n    },\n    hku: function(t) {\n      bmak.cka(t, 2);\n    },\n    hkp: function(t) {\n      bmak.cka(t, 3);\n    },\n    form_submit: function() {\n      try {\n        if (bmak.bpd(), 0 == bmak.sdfn.length) {\n          if (document.getElementById(\"bm-telemetry\") && (document.getElementById(\"bm-telemetry\").value = bmak.sensor_data), void 0 !== document.getElementsByName(\"bm-telemetry\"))\n            for (var t = document.getElementsByName(\"bm-telemetry\"), a = 0; a < t.length; a++) t[a].value = bmak.sensor_data;\n        } else\n          for (var a = 0; a < bmak.sdfn.length; a++) document.getElementById(bmak.sdfn[a]) && (document.getElementById(bmak.sdfn[a]).value = bmak.sensor_data);\n      } catch (t) {\n        bmak.sd_debug(\",s7:\" + t + \",\" + bmak.sensor_data);\n      }\n    },\n    get_telemetry: function() {\n      return bmak.bpd(), bmak.ir(), bmak.sensor_data;\n    },\n    getdurl: function() {\n      return bmak.enReadDocUrl ? document.URL.replace(/\\\\|\"/g, \"\") : \"\";\n    },\n    x1: function() {\n      return Math.floor(16777216 * (1 + Math.random())).toString(36);\n    },\n    gck: function() {\n      var t = bmak.x1() + bmak.x1() + bmak.x1() + bmak.x1();\n      return bmak.set_cookie(bmak.ckie, t + \"_\" + bmak.ab(t)), t;\n    },\n    set_cookie: function(t, a) {\n      void 0 !== document.cookie && (document.cookie = t + \"=\" + a + \"; path=/; expires=Fri, 01 Feb 2025 08:00:00 GMT;\");\n    },\n    get_cookie: function() {\n      var t = \"0\";\n\n      try {\n        var t = bmak.cookie_chk_read(bmak.ckie);\n        t || (bmak.n_ck = 1, t = bmak.bm ? \"2\" : \"1\");\n      } catch (t) {}\n\n      return t;\n    },\n    cookie_chk_read: function(t) {\n      if (document.cookie)\n        for (var a = t + \"=\", e = document.cookie.split(\"; \"), n = 0; n < e.length; n++) {\n          var o = e[n];\n\n          if (0 === o.indexOf(a)) {\n            var m = o.substring(a.length, o.length);\n            if (-1 != m.indexOf(\"~\") || -1 != decodeURIComponent(m).indexOf(\"~\")) return m;\n          }\n        }\n      return !1;\n    },\n    bpd: function() {\n      bmak.sd_debug(\"<bpd>\");\n      var t = 0;\n\n      try {\n        t = bmak.get_cf_date();\n        var a = bmak.updatet(),\n          e = \"3\";\n        bmak.ckie && (e = bmak.get_cookie());\n        var n = bmak.gd(),\n          o = window.DeviceOrientationEvent ? \"do_en\" : \"do_dis\",\n          m = window.DeviceMotionEvent ? \"dm_en\" : \"dm_dis\",\n          r = window.TouchEvent ? \"t_en\" : \"t_dis\",\n          i = o + \",\" + m + \",\" + r,\n          c = bmak.getforminfo(),\n          b = bmak.getdurl(),\n          d = bmak.aj_type + \",\" + bmak.aj_indx;\n        !bmak.fpcf.fpValCalculated && (0 == bmak.js_post || bmak.aj_indx > 0) && bmak.fpcf.fpVal();\n\n        var s = bmak.ke_vel + bmak.me_vel + bmak.doe_vel + bmak.dme_vel + bmak.te_vel + bmak.pe_vel,\n          k = bmak.ff,\n          l = k(80) + k(105) + k(90) + k(116) + k(69),\n          u = bmak.jrs(bmak.start_ts),\n          _ = bmak.get_cf_date() - bmak.start_ts,\n          f = bmak.pi(bmak.d2 / 6),\n          p = bmak.fas(),\n          h = [bmak.ke_vel + 1, bmak.me_vel + 32, bmak.te_vel + 32, bmak.doe_vel, bmak.dme_vel, bmak.pe_vel, s, a, bmak.init_time, bmak.start_ts, bmak.fpcf.td, bmak.d2, bmak.ke_cnt, bmak.me_cnt, f, bmak.pe_cnt, bmak.te_cnt, _, bmak.ta, bmak.n_ck, e, bmak.ab(e), bmak.fpcf.rVal, bmak.fpcf.rCFP, p, l, u[0], u[1]],\n          v = h.join(\",\"),\n          g = \"\" + bmak.ab(bmak.fpcf.fpValstr);\n\n        bmak.firstLoad ? bmak.np() : bmak.csh(), !bmak.hbCalc && (0 == bmak.js_post || bmak.aj_indx > 0) && (bmak.fm(), bmak.wgl(), bmak.hbCalc = !0);\n        var w = \"\";\n        bmak.hbCalc && (w = bmak.fmh + \",\" + bmak.fmz + \",\" + bmak.ssh + \",\" + bmak.wv + \",\" + bmak.wr + \",\" + bmak.weh + \",\" + bmak.wl);\n        var y = bmak.sed(),\n          E = bmak.mn_get_current_challenges(),\n          S = \"\",\n          C = \"\",\n          x = \"\";\n\n        if (void 0 !== E[1]) {\n          var M = E[1];\n          void 0 !== bmak.mn_r[M] && (S = bmak.mn_r[M]);\n        }\n\n        if (void 0 !== E[2]) {\n          var j = E[2];\n          void 0 !== bmak.mn_r[j] && (C = bmak.mn_r[j]);\n        }\n\n        if (void 0 !== E[3]) {\n          var A = E[3];\n          void 0 !== bmak.mn_r[A] && (x = bmak.mn_r[A]);\n        }\n\n        bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + n + \"-1,2,-94,-101,\" + i + \"-1,2,-94,-105,\" + bmak.informinfo + \"-1,2,-94,-102,\" + c + \"-1,2,-94,-108,\" + bmak.kact + \"-1,2,-94,-110,\" + bmak.mact + \"-1,2,-94,-117,\" + bmak.tact + \"-1,2,-94,-111,\" + bmak.doact + \"-1,2,-94,-109,\" + bmak.dmact + \"-1,2,-94,-114,\" + bmak.pact + \"-1,2,-94,-103,\" + bmak.vcact + \"-1,2,-94,-112,\" + b + \"-1,2,-94,-115,\" + v + \"-1,2,-94,-106,\" + d, bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-119,\" + bmak.mr + \"-1,2,-94,-122,\" + y + \"-1,2,-94,-123,\" + S + \"-1,2,-94,-124,\" + C + \"-1,2,-94,-126,\" + x + \"-1,2,-94,-127,\" + bmak.nav_perm;\n        var L = 24 ^ bmak.ab(bmak.sensor_data);\n        bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-70,\" + bmak.fpcf.fpValstr + \"-1,2,-94,-80,\" + g + \"-1,2,-94,-116,\" + bmak.o9 + \"-1,2,-94,-118,\" + L + \"-1,2,-94,-129,\" + w + \"-1,2,-94,-121,\", bmak.sd_debug(\",s1:\" + bmak.sensor_data.slice(0, 10));\n      } catch (t) {\n        var P = \"\";\n\n        try {\n          t.stack && \"string\" == typeof t.stack ? P = t.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof t && (P = t.replace(/\\\"/g, \"\\\\'\")), P = P.slice(0, 1e3), bmak.sd_debug(\",s2:\" + P), bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + bmak.uar() + \"-1,2,-94,-120,\" + P;\n        } catch (t) {\n          t.stack && \"string\" == typeof t.stack ? P = t.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof t && (P = t.replace(/\\\"/g, \"\\\\'\")), P = P.slice(0, 1e3), bmak.sd_debug(\",s3:\" + P), bmak.sensor_data = bmak.ver + bmak.sensor_data + \",s3:\" + P;\n        }\n      }\n\n      try {\n        var T = bmak.od(bmak.cs, bmak.api_public_key).slice(0, 16),\n          F = Math.floor(bmak.get_cf_date() / 36e5),\n          B = bmak.get_cf_date(),\n          D = T + bmak.od(F, T) + bmak.sensor_data;\n        bmak.sensor_data = D + \";\" + (bmak.get_cf_date() - t) + \";\" + bmak.tst + \";\" + (bmak.get_cf_date() - B);\n      } catch (t) {}\n\n      bmak.sd_debug(\"</bpd>\");\n    },\n    od: function(t, a) {\n      try {\n        t = String(t), a = String(a);\n        var e = [],\n          n = a.length;\n\n        if (n > 0) {\n          for (var o = 0; o < t.length; o++) {\n            var m = t.charCodeAt(o),\n              r = t.charAt(o),\n              i = a.charCodeAt(o % n);\n            m = bmak.rir(m, 47, 57, i), m != t.charCodeAt(o) && (r = String.fromCharCode(m)), e.push(r);\n          }\n\n          if (e.length > 0) return e.join(\"\");\n        }\n      } catch (t) {}\n\n      return t;\n    },\n    rir: function(t, a, e, n) {\n      return t > a && t <= e && (t += n % (e - a)) > e && (t = t - e + a), t;\n    },\n    lvc: function(t) {\n      try {\n        if (bmak.vc_cnt < bmak.vc_cnt_lmt) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = t + \",\" + a + \";\";\n          bmak.vcact = bmak.vcact + e;\n        }\n\n        bmak.vc_cnt++;\n      } catch (t) {}\n    },\n    hvc: function() {\n      try {\n        var t = 1;\n        document[bmak.hn] && (t = 0), bmak.lvc(t);\n      } catch (t) {}\n    },\n    hb: function(t) {\n      bmak.lvc(2);\n    },\n    hf: function(t) {\n      bmak.lvc(3);\n    },\n    rve: function() {\n      void 0 !== document.hidden ? (bmak.hn = \"hidden\", bmak.vc = \"visibilitychange\") : void 0 !== document.mozHidden ? (bmak.hn = \"mozHidden\", bmak.vc = \"mozvisibilitychange\") : void 0 !== document.msHidden ? (bmak.hn = \"msHidden\", bmak.vc = \"msvisibilitychange\") : void 0 !== document.webkitHidden && (bmak.hn = \"webkitHidden\", bmak.vc = \"webkitvisibilitychange\"), document.addEventListener ? \"unk\" != bmak.hn && document.addEventListener(bmak.vc, bmak.hvc, !0) : document.attachEvent && \"unk\" != bmak.hn && document.attachEvent(bmak.vc, bmak.hvc), window.onblur = bmak.hb, window.onfocus = bmak.hf;\n    },\n    startTracking: function() {\n      bmak.startdoadma();\n\n      try {\n        bmak.to();\n      } catch (t) {\n        bmak.o9 = -654321;\n      }\n\n      setInterval(function() {\n        bmak.startdoadma();\n      }, 3e3), document.addEventListener ? (document.addEventListener(\"touchmove\", bmak.htm, !0), document.addEventListener(\"touchstart\", bmak.hts, !0), document.addEventListener(\"touchend\", bmak.hte, !0), document.addEventListener(\"touchcancel\", bmak.htc, !0), document.addEventListener(\"mousemove\", bmak.hmm, !0), document.addEventListener(\"click\", bmak.hc, !0), document.addEventListener(\"mousedown\", bmak.hmd, !0), document.addEventListener(\"mouseup\", bmak.hmu, !0), document.addEventListener(\"pointerdown\", bmak.hpd, !0), document.addEventListener(\"pointerup\", bmak.hpu, !0), document.addEventListener(\"keydown\", bmak.hkd, !0), document.addEventListener(\"keyup\", bmak.hku, !0), document.addEventListener(\"keypress\", bmak.hkp, !0)) : document.attachEvent && (document.attachEvent(\"touchmove\", bmak.htm), document.attachEvent(\"touchstart\", bmak.hts), document.attachEvent(\"touchend\", bmak.hte), document.attachEvent(\"touchcancel\", bmak.htc), document.attachEvent(\"onmousemove\", bmak.hmm), document.attachEvent(\"onclick\", bmak.hc), document.attachEvent(\"onmousedown\", bmak.hmd), document.attachEvent(\"onmouseup\", bmak.hmu), document.attachEvent(\"onpointerdown\", bmak.hpd), document.attachEvent(\"onpointerup\", bmak.hpu), document.attachEvent(\"onkeydown\", bmak.hkd), document.attachEvent(\"onkeyup\", bmak.hku), document.attachEvent(\"onkeypress\", bmak.hkp)), bmak.rve(), bmak.informinfo = bmak.getforminfo(), bmak.js_post && (bmak.aj_type = 0, bmak.bpd(), bmak.pd(!0)), bmak.firstLoad = !1;\n    },\n    gb: function(t, a) {\n      var e = t.charCodeAt(a);\n      return e = e > 255 ? 0 : e;\n    },\n    encode: function(t) {\n      if (\"undefined\" != typeof btoa) return btoa(t);\n\n      for (var a, e, n, o, m, r, i, c = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", b = \"\", d = 3 * Math.floor(t.length / 3), s = 0; s < d; s += 3) a = bmak.gb(t, s), e = bmak.gb(t, s + 1), n = bmak.gb(t, s + 2), o = a >> 2, m = ((3 & a) << 4) + (e >> 4), r = ((15 & e) << 2) + (n >> 6), i = 63 & n, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + c.charAt(i);\n\n      return t.length % 3 == 1 && (a = bmak.gb(t, s), o = a >> 2, m = (3 & a) << 4, b = b + c.charAt(o) + c.charAt(m) + \"==\"), t.length % 3 == 2 && (a = bmak.gb(t, s), e = bmak.gb(t, s + 1), o = a >> 2, m = ((3 & a) << 4) + (e >> 4), r = (15 & e) << 2, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + \"=\"), b;\n    },\n    ie9OrLower: function() {\n      try {\n        if (\"string\" == typeof navigator.appVersion && -1 != navigator.appVersion.indexOf(\"MSIE\")) {\n          if (parseFloat(navigator.appVersion.split(\"MSIE\")[1]) <= 9) return !0;\n        }\n      } catch (t) {}\n\n      return !1;\n    },\n    parse_gp: function(t) {},\n    call_gp: function() {\n      var t;\n      void 0 !== window.XMLHttpRequest ? t = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (t = new XDomainRequest(), t.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : t = new ActiveXObject(\"Microsoft.XMLHTTP\"), t.open(\"GET\", bmak.params_url, !0), t.onreadystatechange = function() {\n        t.readyState > 3 && bmak.parse_gp && bmak.parse_gp(t);\n      }, t.send();\n    },\n    apicall: function(t, a) {\n      var e;\n      e = window.XDomainRequest ? new XDomainRequest() : window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\"Microsoft.XMLHTTP\"), e.open(\"POST\", t, a);\n      var n = bmak.encode(bmak.api_public_key + \":\");\n      bmak.auth = \",\\\"auth\\\" : \\\"\" + n + \"\\\"\", e.setRequestHeader && (e.setRequestHeader(\"Content-type\", \"application/json\"), e.setRequestHeader(\"Authorization\", \"Basic \" + n), bmak.auth = \"\");\n      var o = \"{\\\"session_id\\\" : \\\"\" + bmak.session_id + \"\\\",\\\"sensor_data\\\" : \\\"\" + bmak.sensor_data + \"\\\"\" + bmak.auth + \"}\";\n      e.send(o);\n    },\n    apicall_bm: function(t, a, e) {\n      var n;\n      void 0 !== window.XMLHttpRequest ? n = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (n = new XDomainRequest(), n.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : n = new ActiveXObject(\"Microsoft.XMLHTTP\"), n.open(\"POST\", t, a), void 0 !== n.withCredentials && (n.withCredentials = !0);\n      var o = \"{\\\"sensor_data\\\":\\\"\" + bmak.sensor_data + \"\\\"}\";\n      n.onreadystatechange = function() {\n        n.readyState > 3 && e && e(n);\n      }, n.send(o), bmak.dcs = 0;\n    },\n    pd: function(t) {\n      bmak.check_stop_protocol() ? (bmak.apicall_bm(bmak.cf_url, t, bmak.patp), bmak.aj_indx = bmak.aj_indx + 1) : bmak.loap && bmak.dcs && bmak.apicall_bm(bmak.cf_url, t, bmak.patp);\n    },\n    check_stop_protocol: function() {\n      var t = bmak.get_stop_signals(),\n        a = t[0];\n      !bmak.rst && a > -1 && (bmak.ir(), bmak.rst = !0);\n      var e = t[1];\n      return -1 == e || bmak.aj_ss < e;\n    },\n    get_stop_signals: function() {\n      var t = [-1, -1],\n        a = bmak.cookie_chk_read(bmak.ckie);\n      if (!1 !== a) try {\n        var e = decodeURIComponent(a).split(\"~\");\n\n        if (e.length >= 4) {\n          var n = bmak.pi(e[1]),\n            o = bmak.pi(e[3]);\n          n = isNaN(n) ? -1 : n, o = isNaN(o) ? -1 : o, t = [o, n];\n        }\n      } catch (t) {}\n      return t;\n    },\n    patp: function(t) {\n      bmak.aj_ss++, bmak.rst = !1;\n    },\n    get_mn_params_from_abck: function() {\n      var t = [\n        []\n      ];\n\n      try {\n        var a = bmak.cookie_chk_read(bmak.ckie);\n\n        if (!1 !== a) {\n          var e = decodeURIComponent(a).split(\"~\");\n\n          if (e.length >= 5) {\n            var n = e[0],\n              o = e[4],\n              m = o.split(\"||\");\n            if (m.length > 0)\n              for (var r = 0; r < m.length; r++) {\n                var i = m[r],\n                  c = i.split(\"-\");\n\n                if (c.length >= 5) {\n                  var b = bmak.pi(c[0]),\n                    d = c[1],\n                    s = bmak.pi(c[2]),\n                    k = bmak.pi(c[3]),\n                    l = bmak.pi(c[4]),\n                    u = 1;\n                  c.length >= 6 && (u = bmak.pi(c[5]));\n                  var _ = [b, n, d, s, k, l, u];\n                  2 == u ? t.splice(0, 0, _) : t.push(_);\n                }\n              }\n          }\n        }\n      } catch (t) {}\n\n      return t;\n    },\n    mn_get_current_challenges: function() {\n      var t = bmak.get_mn_params_from_abck(),\n        a = [];\n      if (null != t)\n        for (var e = 0; e < t.length; e++) {\n          var n = t[e];\n\n          if (n.length > 0) {\n            var o = n[1] + n[2],\n              m = n[6];\n            a[m] = o;\n          }\n        }\n      return a;\n    },\n    mn_update_challenge_details: function(t) {\n      bmak.mn_sen = t[0], bmak.mn_abck = t[1], bmak.mn_psn = t[2], bmak.mn_cd = t[3], bmak.mn_tout = t[4], bmak.mn_stout = t[5], bmak.mn_ct = t[6], bmak.mn_ts = bmak.start_ts, bmak.mn_cc = bmak.mn_abck + bmak.start_ts + bmak.mn_psn;\n    },\n    mn_get_new_challenge_params: function(t) {\n      var a = null,\n        e = null,\n        n = null;\n      if (null != t)\n        for (var o = 0; o < t.length; o++) {\n          var m = t[o];\n\n          if (m.length > 0) {\n            for (var r = m[0], i = bmak.mn_abck + bmak.start_ts + m[2], c = (m[3], m[6]), b = 0; b < bmak.mn_lcl && 1 == r && bmak.mn_lc[b] != i; b++);\n\n            b == bmak.mn_lcl && (a = o, 2 == c && (e = o), 3 == c && (n = o));\n          }\n        }\n      return null != n && bmak.pstate ? t[n] : null == e || bmak.pstate ? null == a || bmak.pstate ? null : t[a] : t[e];\n    },\n    mn_poll: function() {\n      if (0 == bmak.mn_state) {\n        var t = bmak.get_mn_params_from_abck(),\n          a = bmak.mn_get_new_challenge_params(t);\n        null != a && (bmak.mn_update_challenge_details(a), bmak.mn_sen && (bmak.mn_state = 1, bmak.mn_mc_indx = 0, bmak.mn_al = [], bmak.mn_il = [], bmak.mn_tcl = [], bmak.mn_lg = [], bmak.mn_rts = bmak.get_cf_date(), bmak.mn_rt = bmak.mn_rts - bmak.start_ts, bmak.mn_wt = 0, setTimeout(bmak.mn_w, bmak.mn_tout)));\n      }\n    },\n    rotate_right: function(t, a) {\n      return t >>> a | t << 32 - a;\n    },\n    encode_utf8: function(t) {\n      return unescape(encodeURIComponent(t));\n    },\n    mn_s: function(t) {\n      var a = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298],\n        e = 1779033703,\n        n = 3144134277,\n        o = 1013904242,\n        m = 2773480762,\n        r = 1359893119,\n        i = 2600822924,\n        c = 528734635,\n        b = 1541459225,\n        d = bmak.encode_utf8(t),\n        s = 8 * d.length;\n      d += String.fromCharCode(128);\n\n      for (var k = d.length / 4 + 2, l = Math.ceil(k / 16), u = new Array(l), _ = 0; _ < l; _++) {\n        u[_] = new Array(16);\n\n        for (var f = 0; f < 16; f++) u[_][f] = d.charCodeAt(64 * _ + 4 * f) << 24 | d.charCodeAt(64 * _ + 4 * f + 1) << 16 | d.charCodeAt(64 * _ + 4 * f + 2) << 8 | d.charCodeAt(64 * _ + 4 * f + 3) << 0;\n      }\n\n      var p = s / Math.pow(2, 32);\n      u[l - 1][14] = Math.floor(p), u[l - 1][15] = s;\n\n      for (var h = 0; h < l; h++) {\n        for (var v, g = new Array(64), w = e, y = n, E = o, S = m, C = r, v = i, x = c, M = b, _ = 0; _ < 64; _++) {\n          var j, A, L, P, T, F;\n          _ < 16 ? g[_] = u[h][_] : (j = bmak.rotate_right(g[_ - 15], 7) ^ bmak.rotate_right(g[_ - 15], 18) ^ g[_ - 15] >>> 3, A = bmak.rotate_right(g[_ - 2], 17) ^ bmak.rotate_right(g[_ - 2], 19) ^ g[_ - 2] >>> 10, g[_] = g[_ - 16] + j + g[_ - 7] + A), A = bmak.rotate_right(C, 6) ^ bmak.rotate_right(C, 11) ^ bmak.rotate_right(C, 25), L = C & v ^ ~C & x, P = M + A + L + a[_] + g[_], j = bmak.rotate_right(w, 2) ^ bmak.rotate_right(w, 13) ^ bmak.rotate_right(w, 22), T = w & y ^ w & E ^ y & E, F = j + T, M = x, x = v, v = C, C = S + P >>> 0, S = E, E = y, y = w, w = P + F >>> 0;\n        }\n\n        e += w, n += y, o += E, m += S, r += C, i += v, c += x, b += M;\n      }\n\n      return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, 255 & m, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, 255 & i, c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c, b >> 24 & 255, b >> 16 & 255, b >> 8 & 255, 255 & b];\n    },\n    mn_init: function() {\n      var t = 200;\n      bmak.pstate && (t = 100), setInterval(bmak.mn_poll, t);\n    },\n    bdm: function(t, a) {\n      for (var e = 0, n = 0; n < t.length; ++n) e = (e << 8 | t[n]) >>> 0, e %= a;\n\n      return e;\n    },\n    mn_w: function() {\n      try {\n        for (var t = 0, a = 0, e = 0, n = \"\", o = bmak.get_cf_date(), m = bmak.mn_cd + bmak.mn_mc_indx; 0 == t;) {\n          n = Math.random().toString(16);\n          var r = bmak.mn_cc + m.toString() + n,\n            i = bmak.mn_s(r);\n          if (0 == bmak.bdm(i, m)) t = 1, e = bmak.get_cf_date() - o, bmak.mn_al.push(n), bmak.mn_tcl.push(e), bmak.mn_il.push(a), 0 == bmak.mn_mc_indx && (bmak.mn_lg.push(bmak.mn_abck), bmak.mn_lg.push(bmak.mn_ts), bmak.mn_lg.push(bmak.mn_psn), bmak.mn_lg.push(bmak.mn_cc), bmak.mn_lg.push(bmak.mn_cd.toString()), bmak.mn_lg.push(m.toString()), bmak.mn_lg.push(n), bmak.mn_lg.push(r), bmak.mn_lg.push(i), bmak.mn_lg.push(bmak.mn_rt));\n          else if ((a += 1) % 1e3 == 0 && (e = bmak.get_cf_date() - o) > bmak.mn_stout) return bmak.mn_wt += e, void setTimeout(bmak.mn_w, bmak.mn_stout);\n        }\n\n        bmak.mn_mc_indx += 1, bmak.mn_mc_indx < bmak.mn_mc_lmt ? setTimeout(bmak.mn_w, e) : (bmak.mn_mc_indx = 0, bmak.mn_lc[bmak.mn_lcl] = bmak.mn_cc, bmak.mn_ld[bmak.mn_lcl] = bmak.mn_cd, bmak.mn_lcl = bmak.mn_lcl + 1, bmak.mn_state = 0, bmak.mn_lg.push(bmak.mn_wt), bmak.mn_lg.push(bmak.get_cf_date()), bmak.mn_r[bmak.mn_abck + bmak.mn_psn] = bmak.mn_pr(), bmak.js_post && (bmak.aj_type = 8, 2 == bmak.mn_ct && (bmak.dcs = 1), bmak.bpd(), bmak.pd(!0)));\n      } catch (t) {\n        bmak.sd_debug(\",mn_w:\" + t);\n      }\n    },\n    mn_pr: function() {\n      return bmak.mn_al.join(\",\") + \";\" + bmak.mn_tcl.join(\",\") + \";\" + bmak.mn_il.join(\",\") + \";\" + bmak.mn_lg.join(\",\") + \";\";\n    },\n    ats: function(t) {\n      for (var a = \"\", e = 0; e < t.length; e++) a += 2 == t[e].toString(16).length ? t[e].toString(16) : \"0\" + t[e].toString(16);\n\n      return a;\n    },\n    calc_fp: function() {\n      bmak.fpcf.fpVal(), bmak.js_post && (bmak.aj_type = 9, bmak.bpd(), bmak.pd(!0));\n    },\n    listFunctions: {\n      _setJsPost: function(t) {\n        bmak.js_post = t, bmak.js_post && (bmak.enReadDocUrl = 1);\n      },\n      _setSessionId: function(t) {\n        bmak.session_id = t;\n      },\n      _setJavaScriptKey: function(t) {\n        bmak.api_public_key = t;\n      },\n      _setEnAddHidden: function(t) {\n        bmak.enAddHidden = t;\n      },\n      _setInitTime: function(t) {\n        bmak.init_time = t;\n      },\n      _setApiUrl: function(t) {\n        bmak.cf_url = t;\n      },\n      _setEnGetLoc: function(t) {\n        bmak.enGetLoc = t;\n      },\n      _setEnReadDocUrl: function(t) {\n        bmak.enReadDocUrl = t;\n      },\n      _setDisFpCalOnTimeout: function(t) {\n        bmak.disFpCalOnTimeout = t;\n      },\n      _setCookie: function(t) {\n        bmak.ckie = t;\n      },\n      _setCS: function(t) {\n        bmak.cs = (String(t) + bmak.cs).slice(0, 16);\n      },\n      _setFsp: function(t) {\n        bmak.fsp = t, bmak.fsp && (bmak.cf_url = bmak.cf_url.replace(/^http:\\/\\//i, \"https://\"));\n      },\n      _setBm: function(t) {\n        bmak.bm = t, bmak.bm ? (bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/_bm/_data\", bmak.js_post = !0) : bmak.params_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/get_params\";\n      },\n      _setAu: function(t) {\n        \"string\" == typeof t && (0 === t.lastIndexOf(\"/\", 0) ? bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + t : bmak.cf_url = t);\n      },\n      _setSDFieldNames: function() {\n        try {\n          var t;\n\n          for (t = 0; t < arguments.length; t += 1) bmak.sdfn.push(arguments[t]);\n        } catch (t) {\n          bmak.sd_debug(\",setSDFN:\" + t);\n        }\n      },\n      _setUseAltFonts: function(t) {\n        bmak.altFonts = t;\n      },\n      _setPowState: function(t) {\n        bmak.pstate = t;\n      },\n      _setPow: function(t) {\n        bmak.pstate = t;\n      },\n      _setLOAP: function(t) {\n        bmak.loap = t;\n      }\n    },\n    applyFunc: function() {\n      var t, a, e;\n\n      for (t = 0; t < arguments.length; t += 1) e = arguments[t];\n\n      a = e.shift(), bmak.listFunctions[a] && bmak.listFunctions[a].apply(bmak.listFunctions, e);\n    },\n    getStateField: function(t) {\n      for (var a = \"\", e = \"aeiouy13579\", n = 0, o = t.toLowerCase(); n < o.length;) e.indexOf(o[n]) >= 0 || e.indexOf(o[n + 1]) >= 0 ? a += 1 : a += 0, n += 2;\n\n      return a;\n    }\n  };\n\nif (function(t) {\n    var a = {};\n    t.fpcf = a, a.sf4 = function() {\n      var t = bmak.uar();\n      return !(!~t.indexOf(\"Version/4.0\") || !(~t.indexOf(\"iPad;\") || ~t.indexOf(\"iPhone\") || ~t.indexOf(\"Mac OS X 10_5\")));\n    }, a.fpValstr = \"-1\", a.fpValCalculated = !1, a.rVal = \"-1\", a.rCFP = \"-1\", a.cache = {}, a.td = -999999, a.clearCache = function() {\n      a.cache = {};\n    }, a.fpVal = function() {\n      a.fpValCalculated = !0;\n\n      try {\n        var t = 0;\n        t = Date.now ? Date.now() : +new Date();\n        var e = a.data();\n        a.fpValstr = e.replace(/\\\"/g, \"\\\\\\\\\\\"\");\n        var n = 0;\n        n = Date.now ? Date.now() : +new Date(), a.td = n - t;\n      } catch (t) {}\n    }, a.timezoneOffsetKey = function() {\n      return new Date().getTimezoneOffset();\n    }, a.data = function() {\n      var t = screen.colorDepth ? screen.colorDepth : -1,\n        e = screen.pixelDepth ? screen.pixelDepth : -1,\n        n = navigator.cookieEnabled ? navigator.cookieEnabled : -1,\n        o = navigator.javaEnabled ? navigator.javaEnabled() : -1,\n        m = navigator.doNotTrack ? navigator.doNotTrack : -1,\n        r = \"default\";\n      r = bmak.runFonts ? bmak.altFonts ? a.fonts_optm() : a.fonts() : \"dis\";\n      return [a.canvas(\"<@nv45. F1n63r,Pr1n71n6!\"), a.canvas(\"m,Ev!xV67BaU> eh2m<f3AG3@\"), r, a.pluginInfo(), a.sessionStorageKey(), a.localStorageKey(), a.indexedDbKey(), a.timezoneOffsetKey(), a.webrtcKey(), t, e, n, o, m].join(\";\");\n    }, a.PLUGINS = [\"WebEx64 General Plugin Container\", \"YouTube Plug-in\", \"Java Applet Plug-in\", \"Shockwave Flash\", \"iPhotoPhotocast\", \"SharePoint Browser Plug-in\", \"Chrome Remote Desktop Viewer\", \"Chrome PDF Viewer\", \"Native Client\", \"Unity Player\", \"WebKit-integrierte PDF\", \"QuickTime Plug-in\", \"RealPlayer Version Plugin\", \"RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)\", \"Mozilla Default Plug-in\", \"Adobe Acrobat\", \"AdobeAAMDetect\", \"Google Earth Plug-in\", \"Java Plug-in 2 for NPAPI Browsers\", \"Widevine Content Decryption Module\", \"Microsoft Office Live Plug-in\", \"Windows Media Player Plug-in Dynamic Link Library\", \"Google Talk Plugin Video Renderer\", \"Edge PDF Viewer\", \"Shockwave for Director\", \"Default Browser Helper\", \"Silverlight Plug-In\"], a.pluginInfo = function() {\n      if (void 0 === navigator.plugins) return null;\n\n      for (var t = a.PLUGINS.length, e = \"\", n = 0; n < t; n++) {\n        var o = a.PLUGINS[n];\n        void 0 !== navigator.plugins[o] && (e = e + \",\" + n);\n      }\n\n      return e;\n    }, a.canvas = function(t) {\n      try {\n        if (void 0 !== a.cache.canvas) return a.cache.canvas;\n        var e = -1;\n\n        if (!a.sf4()) {\n          var n = document.createElement(\"canvas\");\n\n          if (n.width = 280, n.height = 60, n.style.display = \"none\", \"function\" == typeof n.getContext) {\n            var o = n.getContext(\"2d\");\n            o.fillStyle = \"rgb(102, 204, 0)\", o.fillRect(100, 5, 80, 50), o.fillStyle = \"#f60\", o.font = \"16pt Arial\", o.fillText(t, 10, 40), o.strokeStyle = \"rgb(120, 186, 176)\", o.arc(80, 10, 20, 0, Math.PI, !1), o.stroke();\n            var m = n.toDataURL();\n            e = 0;\n\n            for (var r = 0; r < m.length; r++) {\n              e = (e << 5) - e + m.charCodeAt(r), e &= e;\n            }\n\n            e = e.toString();\n            var i = document.createElement(\"canvas\");\n            i.width = 16, i.height = 16;\n            var c = i.getContext(\"2d\");\n            c.font = \"6pt Arial\", a.rVal = Math.floor(1e3 * Math.random()).toString(), c.fillText(a.rVal, 1, 12);\n\n            for (var b = i.toDataURL(), d = 0, s = 0; s < b.length; s++) {\n              d = (d << 5) - d + b.charCodeAt(s), d &= d;\n            }\n\n            a.rCFP = d.toString();\n          }\n        }\n\n        return e;\n      } catch (t) {\n        return \"exception\";\n      }\n    }, a.fonts_optm = function() {\n      var t = 200,\n        e = bmak.get_cf_date(),\n        n = [];\n\n      if (!a.sf4() && document.body) {\n        var o = [\"sans-serif\", \"monospace\"],\n          m = [0, 0],\n          r = [0, 0],\n          i = document.createElement(\"div\");\n        i.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n        var c;\n\n        for (c = 0; c < o.length; c++) {\n          var b = document.createElement(\"span\");\n          b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = o[c], i.appendChild(b);\n        }\n\n        for (document.body.appendChild(i), c = 0; c < i.childNodes.length; c++) b = i.childNodes[c], m[c] = b.offsetWidth, r[c] = b.offsetHeight;\n\n        if (document.body.removeChild(i), bmak.get_cf_date() - e > t) return \"\";\n        var d = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"],\n          s = document.createElement(\"div\");\n        s.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n\n        for (var k = [], l = 0; l < d.length; l++) {\n          var u = document.createElement(\"div\");\n\n          for (c = 0; c < o.length; c++) {\n            var b = document.createElement(\"span\");\n            b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = d[l] + \",\" + o[c], u.appendChild(b);\n          }\n\n          s.appendChild(u);\n        }\n\n        if (bmak.get_cf_date() - e > t) return \"\";\n        document.body.appendChild(s);\n\n        for (var l = 0; l < s.childNodes.length; l++) {\n          var _ = !1,\n            u = s.childNodes[l];\n\n          for (c = 0; c < u.childNodes.length; c++) {\n            var b = u.childNodes[c];\n\n            if (b.offsetWidth !== m[c] || b.offsetHeight !== r[c]) {\n              _ = !0;\n              break;\n            }\n          }\n\n          if (_ && k.push(l), bmak.get_cf_date() - e > t) break;\n        }\n\n        document.body.removeChild(s), n = k.sort();\n      }\n\n      return n.join(\",\");\n    }, a.fonts = function() {\n      var t = [];\n\n      if (!a.sf4() && document.body) {\n        var e = [\"serif\", \"sans-serif\", \"monospace\"],\n          n = [0, 0, 0],\n          o = [0, 0, 0],\n          m = document.createElement(\"span\");\n        m.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", m.style.fontSize = \"90px\";\n        var r;\n\n        for (r = 0; r < e.length; r++) m.style.fontFamily = e[r], document.body.appendChild(m), n[r] = m.offsetWidth, o[r] = m.offsetHeight, document.body.removeChild(m);\n\n        for (var i = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"], c = [], b = 0; b < i.length; b++) {\n          var d = !1;\n\n          for (r = 0; r < e.length; r++)\n            if (m.style.fontFamily = i[b] + \",\" + e[r], document.body.appendChild(m), m.offsetWidth === n[r] && m.offsetHeight === o[r] || (d = !0), document.body.removeChild(m), d) {\n              c.push(b);\n              break;\n            }\n        }\n\n        t = c.sort();\n      }\n\n      return t.join(\",\");\n    }, a.webrtcKey = function() {\n      return \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection;\n    }, a.indexedDbKey = function() {\n      return !!a.hasIndexedDB();\n    }, a.sessionStorageKey = function() {\n      return !!a.hasSessionStorage();\n    }, a.localStorageKey = function() {\n      return !!a.hasLocalStorage();\n    }, a.hasSessionStorage = function() {\n      try {\n        return !!window.sessionStorage;\n      } catch (t) {\n        return !1;\n      }\n    }, a.hasLocalStorage = function() {\n      try {\n        return !!window.localStorage;\n      } catch (t) {\n        return !1;\n      }\n    }, a.hasIndexedDB = function() {\n      return !!window.indexedDB;\n    };\n  }(bmak), bmak.firstLoad) {\n  if (bmak.sd_debug(\"<init/>\"), _cf.length > 0) {\n    for (var bm_counter = 0; bm_counter < _cf.length; bm_counter++) bmak.applyFunc(_cf[bm_counter]);\n\n    bmak.sd_debug(\"<setSDFN>\" + bmak.sdfn.join() + \"</setSDFN>\"), _cf = {\n      push: bmak.applyFunc\n    };\n  } else {\n    var bm_script;\n\n    if (document.currentScript && (bm_script = document.currentScript), !bm_script) {\n      var scripts = document.getElementsByTagName(\"script\");\n      scripts.length && (bm_script = scripts[scripts.length - 1]);\n    }\n\n    if (bm_script.src) {\n      var bm_url = bm_script.src,\n        url_split = bm_url.split(\"/\"),\n        obfus_state_field;\n\n      if (url_split.length >= 4 && (obfus_state_field = bm_url.split(\"/\").slice(-4)[0]), obfus_state_field && obfus_state_field.length % 2 == 0) {\n        var state_field_str = bmak.getStateField(obfus_state_field);\n        state_field_str.length >= 3 && (bmak.listFunctions._setFsp(\"1\" == state_field_str[0]), bmak.listFunctions._setBm(\"1\" == state_field_str[1]), bmak.listFunctions._setPowState(\"1\" == state_field_str[2]), bmak.listFunctions._setAu(bm_url));\n      }\n    }\n  }\n\n  try {\n    bmak.ir(), bmak.t_tst = bmak.get_cf_date(), bmak.startTracking(), bmak.tst = bmak.get_cf_date() - bmak.t_tst, bmak.disFpCalOnTimeout || setTimeout(bmak.calc_fp, 500);\n\n    for (var bm_counter = 0; bm_counter < 3; bm_counter++) setTimeout(bmak.getmr, 400 + 5e3 * bm_counter);\n\n    bmak.mn_init();\n  } catch (t) {}\n}"
  },
  {
    "path": "scripts/akamai-1.7-nike.js",
    "content": "var _cf = _cf || [],\n  bmak = bmak && bmak.hasOwnProperty(\"ver\") && bmak.hasOwnProperty(\"sed\") ? bmak : {\n    ver: 1.7,\n    ke_cnt_lmt: 150,\n    mme_cnt_lmt: 100,\n    mduce_cnt_lmt: 75,\n    pme_cnt_lmt: 25,\n    pduce_cnt_lmt: 25,\n    tme_cnt_lmt: 25,\n    tduce_cnt_lmt: 25,\n    doe_cnt_lmt: 10,\n    dme_cnt_lmt: 10,\n    vc_cnt_lmt: 100,\n    doa_throttle: 0,\n    dma_throttle: 0,\n    session_id: \"default_session\",\n    js_post: !1,\n    loc: \"\",\n    cf_url: \"https:\" === document.location.protocol ? \"https://\" : \"http://\",\n    params_url: (\"https:\" === document.location.protocol ? \"https://\" : \"http://\") + document.location.hostname + \"/get_params\",\n    auth: \"\",\n    api_public_key: \"afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq\",\n    aj_lmt_doact: 1,\n    aj_lmt_dmact: 1,\n    aj_lmt_tact: 1,\n    ce_js_post: 0,\n    init_time: 0,\n    informinfo: \"\",\n    prevfid: -1,\n    fidcnt: 0,\n    sensor_data: 0,\n    ins: null,\n    cns: null,\n    enGetLoc: 0,\n    enReadDocUrl: 1,\n    disFpCalOnTimeout: 0,\n    xagg: -1,\n    pen: -1,\n    brow: \"\",\n    browver: \"\",\n    psub: \"-\",\n    lang: \"-\",\n    prod: \"-\",\n    plen: -1,\n    doadma_en: 0,\n    sdfn: [],\n    d2: 0,\n    d3: 0,\n    thr: 0,\n    cs: \"0a46G5m17Vrp4o4c\",\n    hn: \"unk\",\n    z1: 0,\n    o9: 0,\n    vc: \"\",\n    y1: 2016,\n    ta: 0,\n    tst: -1,\n    t_tst: 0,\n    ckie: \"_abck\",\n    n_ck: \"0\",\n    ckurl: 0,\n    bm: !1,\n    mr: \"-1\",\n    altFonts: !1,\n    rst: !1,\n    runFonts: !1,\n    fsp: !1,\n    firstLoad: !0,\n    pstate: !1,\n    mn_mc_lmt: 10,\n    mn_state: 0,\n    mn_mc_indx: 0,\n    mn_sen: 0,\n    mn_tout: 100,\n    mn_stout: 1e3,\n    mn_ct: 1,\n    mn_cc: \"\",\n    mn_cd: 1e4,\n    mn_lc: [],\n    mn_ld: [],\n    mn_lcl: 0,\n    mn_al: [],\n    mn_il: [],\n    mn_tcl: [],\n    mn_r: [],\n    mn_rt: 0,\n    mn_wt: 0,\n    mn_abck: \"\",\n    mn_psn: \"\",\n    mn_ts: \"\",\n    mn_lg: [],\n    loap: 1,\n    dcs: 0,\n    ir: function() {\n      bmak.start_ts = Date.now ? Date.now() : +new Date(), bmak.kact = \"\", bmak.ke_cnt = 0, bmak.ke_vel = 0, bmak.mact = \"\", bmak.mme_cnt = 0, bmak.mduce_cnt = 0, bmak.me_vel = 0, bmak.pact = \"\", bmak.pme_cnt = 0, bmak.pduce_cnt = 0, bmak.pe_vel = 0, bmak.tact = \"\", bmak.tme_cnt = 0, bmak.tduce_cnt = 0, bmak.te_vel = 0, bmak.doact = \"\", bmak.doe_cnt = 0, bmak.doe_vel = 0, bmak.dmact = \"\", bmak.dme_cnt = 0, bmak.dme_vel = 0, bmak.vcact = \"\", bmak.vc_cnt = 0, bmak.aj_indx = 0, bmak.aj_ss = 0, bmak.aj_type = -1, bmak.aj_indx_doact = 0, bmak.aj_indx_dmact = 0, bmak.aj_indx_tact = 0, bmak.me_cnt = 0, bmak.pe_cnt = 0, bmak.te_cnt = 0, bmak.nav_perm = \"\", bmak.brv = 0, bmak.hbCalc = !1, bmak.fmh = \"\", bmak.fmz = \"\", bmak.ssh = \"\", bmak.wv = \"\", bmak.wr = \"\", bmak.weh = \"\", bmak.wl = 0;\n    },\n    get_cf_date: function() {\n      return Date.now ? Date.now() : +new Date();\n    },\n    sd_debug: function(t) {\n      if (!bmak.js_post) {\n        var a = t;\n        \"string\" == typeof _sd_trace ? _sd_trace += a : _sd_trace = a;\n      }\n    },\n    pi: function(t) {\n      return parseInt(t);\n    },\n    uar: function() {\n      return window.navigator.userAgent.replace(/\\\\|\"/g, \"\");\n    },\n    gd: function() {\n      var t = bmak.uar(),\n        a = \"\" + bmak.ab(t),\n        e = bmak.start_ts / 2,\n        n = -1,\n        o = -1,\n        m = -1,\n        r = -1,\n        i = -1,\n        c = -1,\n        b = -1;\n\n      try {\n        n = window.screen ? window.screen.availWidth : -1;\n      } catch (t) {\n        n = -1;\n      }\n\n      try {\n        o = window.screen ? window.screen.availHeight : -1;\n      } catch (t) {\n        o = -1;\n      }\n\n      try {\n        m = window.screen ? window.screen.width : -1;\n      } catch (t) {\n        m = -1;\n      }\n\n      try {\n        r = window.screen ? window.screen.height : -1;\n      } catch (t) {\n        r = -1;\n      }\n\n      try {\n        i = window.innerHeight || (document.body && \"clientHeight\" in document.body ? document.body.clientHeight : document.documentElement && \"clientHeight\" in document.documentElement ? document.documentElement.clientHeight : -1);\n      } catch (t) {\n        i = -1;\n      }\n\n      try {\n        c = window.innerWidth || (document.body && \"clientWidth\" in document.body ? document.body.clientWidth : document.documentElement && \"clientWidth\" in document.documentElement ? document.documentElement.clientWidth : -1);\n      } catch (t) {\n        c = -1;\n      }\n\n      try {\n        b = \"outerWidth\" in window && void 0 !== window.outerWidth ? window.outerWidth : -1;\n      } catch (t) {\n        b = -1;\n      }\n\n      bmak.z1 = bmak.pi(bmak.start_ts / (bmak.y1 * bmak.y1));\n      var d = Math.random(),\n        s = bmak.pi(1e3 * d / 2),\n        k = d + \"\";\n      return k = k.slice(0, 11) + s, bmak.gbrv(), bmak.get_browser(), bmak.bc(), bmak.bmisc(), t + \",uaend,\" + bmak.xagg + \",\" + bmak.psub + \",\" + bmak.lang + \",\" + bmak.prod + \",\" + bmak.plen + \",\" + bmak.pen + \",\" + bmak.wen + \",\" + bmak.den + \",\" + bmak.z1 + \",\" + bmak.d3 + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + c + \",\" + i + \",\" + b + \",\" + bmak.bd() + \",\" + a + \",\" + k + \",\" + e + \",\" + bmak.brv + \",loc:\" + bmak.loc;\n    },\n    get_browser: function() {\n      navigator.productSub && (bmak.psub = navigator.productSub), navigator.language && (bmak.lang = navigator.language), navigator.product && (bmak.prod = navigator.product), bmak.plen = void 0 !== navigator.plugins ? navigator.plugins.length : -1;\n    },\n    gbrv: function() {\n      navigator.brave && navigator.brave.isBrave().then(function(t) {\n        bmak.brv = t ? 1 : 0;\n      })[\"catch\"](function(t) {\n        bmak.brv = 0;\n      });\n    },\n    bc: function() {\n      var t = window.addEventListener ? 1 : 0,\n        a = window.XMLHttpRequest ? 1 : 0,\n        e = window.XDomainRequest ? 1 : 0,\n        n = window.emit ? 1 : 0,\n        o = window.DeviceOrientationEvent ? 1 : 0,\n        m = window.DeviceMotionEvent ? 1 : 0,\n        r = window.TouchEvent ? 1 : 0,\n        i = window.spawn ? 1 : 0,\n        c = window.chrome ? 1 : 0,\n        b = Function.prototype.bind ? 1 : 0,\n        d = window.Buffer ? 1 : 0,\n        s = window.PointerEvent ? 1 : 0;\n\n      try {\n        var k = window.innerWidth ? 1 : 0;\n      } catch (t) {\n        var k = 0;\n      }\n\n      try {\n        var l = window.outerWidth ? 1 : 0;\n      } catch (t) {\n        var l = 0;\n      }\n\n      bmak.xagg = t + (a << 1) + (e << 2) + (n << 3) + (o << 4) + (m << 5) + (r << 6) + (i << 7) + (k << 8) + (l << 9) + (c << 10) + (b << 11) + (d << 12) + (s << 13);\n    },\n    bmisc: function() {\n      bmak.pen = window._phantom ? 1 : 0, bmak.wen = window.webdriver ? 1 : 0, bmak.den = window.domAutomation ? 1 : 0;\n    },\n    bd: function() {\n      var t = [],\n        a = window.callPhantom ? 1 : 0;\n      t.push(\",cpen:\" + a);\n      var e = 0;\n      window.ActiveXObject && \"ActiveXObject\" in window && (e = 1), t.push(\"i1:\" + e);\n      var n = \"number\" == typeof document.documentMode ? 1 : 0;\n      t.push(\"dm:\" + n);\n      var o = window.chrome && window.chrome.webstore ? 1 : 0;\n      t.push(\"cwen:\" + o);\n      var m = navigator.onLine ? 1 : 0;\n      t.push(\"non:\" + m);\n      var r = window.opera ? 1 : 0;\n      t.push(\"opc:\" + r);\n      var i = \"undefined\" != typeof InstallTrigger ? 1 : 0;\n      t.push(\"fc:\" + i);\n      var c = window.HTMLElement && Object.prototype.toString.call(window.HTMLElement).indexOf(\"Constructor\") > 0 ? 1 : 0;\n      t.push(\"sc:\" + c);\n      var b = \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection ? 1 : 0;\n      t.push(\"wrc:\" + b);\n      var d = \"mozInnerScreenY\" in window ? window.mozInnerScreenY : 0;\n      t.push(\"isc:\" + d), bmak.d2 = bmak.pi(bmak.z1 / 23);\n      var s = \"function\" == typeof navigator.vibrate ? 1 : 0;\n      t.push(\"vib:\" + s);\n      var k = \"function\" == typeof navigator.getBattery ? 1 : 0;\n      t.push(\"bat:\" + k);\n      var l = Array.prototype.forEach ? 0 : 1;\n      t.push(\"x11:\" + l);\n      var u = \"FileReader\" in window ? 1 : 0;\n      return t.push(\"x12:\" + u), t.join(\",\");\n    },\n    fas: function() {\n      try {\n        return Boolean(navigator.credentials) + (Boolean(navigator.appMinorVersion) << 1) + (Boolean(navigator.bluetooth) << 2) + (Boolean(navigator.storage) << 3) + (Boolean(Math.imul) << 4) + (Boolean(navigator.getGamepads) << 5) + (Boolean(navigator.getStorageUpdates) << 6) + (Boolean(navigator.hardwareConcurrency) << 7) + (Boolean(navigator.mediaDevices) << 8) + (Boolean(navigator.mozAlarms) << 9) + (Boolean(navigator.mozConnection) << 10) + (Boolean(navigator.mozIsLocallyAvailable) << 11) + (Boolean(navigator.mozPhoneNumberService) << 12) + (Boolean(navigator.msManipulationViewsEnabled) << 13) + (Boolean(navigator.permissions) << 14) + (Boolean(navigator.registerProtocolHandler) << 15) + (Boolean(navigator.requestMediaKeySystemAccess) << 16) + (Boolean(navigator.requestWakeLock) << 17) + (Boolean(navigator.sendBeacon) << 18) + (Boolean(navigator.serviceWorker) << 19) + (Boolean(navigator.storeWebWideTrackingException) << 20) + (Boolean(navigator.webkitGetGamepads) << 21) + (Boolean(navigator.webkitTemporaryStorage) << 22) + (Boolean(Number.parseInt) << 23) + (Boolean(Math.hypot) << 24);\n      } catch (t) {\n        return 0;\n      }\n    },\n    getmr: function() {\n      try {\n        if (\"undefined\" == typeof performance || void 0 === performance.now || \"undefined\" == typeof JSON) return void(bmak.mr = \"undef\");\n\n        for (var t = \"\", a = 1e3, e = [Math.abs, Math.acos, Math.asin, Math.atanh, Math.cbrt, Math.exp, Math.random, Math.round, Math.sqrt, isFinite, isNaN, parseFloat, parseInt, JSON.parse], n = 0; n < e.length; n++) {\n          var o = [],\n            m = 0,\n            r = performance.now(),\n            i = 0,\n            c = 0;\n\n          if (void 0 !== e[n]) {\n            for (i = 0; i < a && m < .6; i++) {\n              for (var b = performance.now(), d = 0; d < 4e3; d++) e[n](3.14);\n\n              var s = performance.now();\n              o.push(Math.round(1e3 * (s - b))), m = s - r;\n            }\n\n            var k = o.sort();\n            c = k[Math.floor(k.length / 2)] / 5;\n          }\n\n          t = t + c + \",\";\n        }\n\n        bmak.mr = t;\n      } catch (t) {\n        bmak.mr = \"exception\";\n      }\n    },\n    sed: function() {\n      var t;\n      t = window.$cdc_asdjflasutopfhvcZLmcfl_ || document.$cdc_asdjflasutopfhvcZLmcfl_ ? \"1\" : \"0\";\n      var a;\n      a = null != window.document.documentElement.getAttribute(\"webdriver\") ? \"1\" : \"0\";\n      var e;\n      e = void 0 !== navigator.webdriver && navigator.webdriver ? \"1\" : \"0\";\n      var n;\n      n = void 0 !== window.webdriver ? \"1\" : \"0\";\n      var o;\n      o = void 0 !== window.XPathResult || void 0 !== document.XPathResult ? \"1\" : \"0\";\n      var m;\n      m = null != window.document.documentElement.getAttribute(\"driver\") ? \"1\" : \"0\";\n      var r;\n      return r = null != window.document.documentElement.getAttribute(\"selenium\") ? \"1\" : \"0\", [t, a, e, n, o, m, r].join(\",\");\n    },\n    cma: function(t, a) {\n      try {\n        if (1 == a && bmak.mme_cnt < bmak.mme_cnt_lmt || 1 != a && bmak.mduce_cnt < bmak.mduce_cnt_lmt) {\n          var e = t || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = e.toElement;\n          null == m && (m = e.target);\n          var r = bmak.gf(m),\n            i = bmak.get_cf_date() - bmak.start_ts,\n            c = bmak.me_cnt + \",\" + a + \",\" + i + \",\" + n + \",\" + o;\n\n          if (1 != a) {\n            c = c + \",\" + r;\n            var b = void 0 !== e.which ? e.which : e.button;\n            null != b && 1 != b && (c = c + \",\" + b);\n          }\n\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (c += \",it0\"), c += \";\", bmak.me_vel = bmak.me_vel + bmak.me_cnt + a + i + n + o, bmak.mact = bmak.mact + c, bmak.ta += i;\n        }\n\n        1 == a ? bmak.mme_cnt++ : bmak.mduce_cnt++, bmak.me_cnt++, bmak.js_post && 3 == a && (bmak.aj_type = 1, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    x2: function() {\n      var t = bmak.ff,\n        a = t(98) + t(109) + t(97) + t(107),\n        e = t(103) + t(101) + t(116) + t(95) + t(99) + t(102) + t(95) + t(100) + t(97) + t(116) + t(101),\n        n = window[a][e],\n        o = 0;\n      return \"function\" == typeof n && (o = n()), o;\n    },\n    np: function() {\n      var t = [],\n        a = [\"geolocation\", \"notifications\", \"push\", \"midi\", \"camera\", \"microphone\", \"speaker\", \"device-info\", \"background-sync\", \"bluetooth\", \"persistent-storage\", \"ambient-light-sensor\", \"accelerometer\", \"gyroscope\", \"magnetometer\", \"clipboard\", \"accessibility-events\", \"clipboard-read\", \"clipboard-write\", \"payment-handler\"];\n\n      try {\n        if (!navigator.permissions) return void(bmak.nav_perm = 6);\n        bmak.nav_perm = 8;\n\n        var e = function(a, e) {\n            return navigator.permissions.query({\n              name: a\n            }).then(function(a) {\n              switch (a.state) {\n                case \"prompt\":\n                  t[e] = 1;\n                  break;\n\n                case \"granted\":\n                  t[e] = 2;\n                  break;\n\n                case \"denied\":\n                  t[e] = 0;\n                  break;\n\n                default:\n                  t[e] = 5;\n              }\n            })[\"catch\"](function(a) {\n              t[e] = -1 !== a.message.indexOf(\"is not a valid enum value of type PermissionName\") ? 4 : 3;\n            });\n          },\n          n = a.map(function(t, a) {\n            return e(t, a);\n          });\n\n        Promise.all(n).then(function() {\n          bmak.nav_perm = t.join(\"\");\n        });\n      } catch (t) {\n        bmak.nav_perm = 7;\n      }\n    },\n    cpa: function(t, a) {\n      try {\n        var e = !1;\n\n        if (1 == a && bmak.pme_cnt < bmak.pme_cnt_lmt || 1 != a && bmak.pduce_cnt < bmak.pduce_cnt_lmt) {\n          var n = t || window.event;\n\n          if (n && \"mouse\" != n.pointerType) {\n            e = !0;\n            var o = -1,\n              m = -1;\n            n && n.pageX && n.pageY ? (o = Math.floor(n.pageX), m = Math.floor(n.pageY)) : n && n.clientX && n.clientY && (o = Math.floor(n.clientX), m = Math.floor(n.clientY));\n            var r = bmak.get_cf_date() - bmak.start_ts,\n              i = bmak.pe_cnt + \",\" + a + \",\" + r + \",\" + o + \",\" + m;\n            void 0 !== n.isTrusted && !1 === n.isTrusted && (i += \",0\"), bmak.pe_vel = bmak.pe_vel + bmak.pe_cnt + a + r + o + m, bmak.pact = bmak.pact + i + \";\", bmak.ta += r, 1 == a ? bmak.pme_cnt++ : bmak.pduce_cnt++;\n          }\n        }\n\n        1 == a ? bmak.pme_cnt++ : bmak.pduce_cnt++, bmak.pe_cnt++, bmak.js_post && 3 == a && e && (bmak.aj_type = 2, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    ab: function(t) {\n      if (null == t) return -1;\n\n      try {\n        for (var a = 0, e = 0; e < t.length; e++) {\n          var n = t.charCodeAt(e);\n          n < 128 && (a += n);\n        }\n\n        return a;\n      } catch (t) {\n        return -2;\n      }\n    },\n    ff: function(t) {\n      return String.fromCharCode(t);\n    },\n    cal_dis: function(t) {\n      var a = t[0] - t[1],\n        e = t[2] - t[3],\n        n = t[4] - t[5],\n        o = Math.sqrt(a * a + e * e + n * n);\n      return Math.floor(o);\n    },\n    to: function() {\n      var t = bmak.x2() % 1e7;\n      bmak.d3 = t;\n\n      for (var a = t, e = bmak.pi(bmak.ff(51)), n = 0; n < 5; n++) {\n        var o = bmak.pi(t / Math.pow(10, n)) % 10,\n          m = o + 1;\n        op = bmak.cc(o), a = op(a, m);\n      }\n\n      bmak.o9 = a * e;\n    },\n    jrs: function(t) {\n      for (var a = Math.floor(1e5 * Math.random() + 1e4), e = String(t * a), n = 0, o = [], m = e.length >= 18; o.length < 6;) o.push(parseInt(e.slice(n, n + 2))), n = m ? n + 3 : n + 2;\n\n      return [a, bmak.cal_dis(o)];\n    },\n    fm: function() {\n      var t = [\"Monospace\", \"Wingdings 2\", \"ITC Bodoni 72 Bold\", \"Menlo\", \"Gill Sans MT\", \"Lucida Sans\", \"Bodoni 72\", \"Serif\", \"Shree Devanagari 714\", \"Microsoft Tai Le\", \"Nimbus Roman No 9 L\", \"Candara\", \"Press Start 2P\", \"Waseem\"],\n        a = document.createElement(\"span\");\n      a.innerHTML = \"mmmmmmmmlli\", a.style.fontSize = \"192px\";\n      var e = \"\",\n        n = document.getElementsByTagName(\"body\")[0];\n\n      if (n) {\n        for (var o in t) a.style.fontFamily = t[o], n.appendChild(a), e += t[o] + \":\" + a.offsetWidth + \",\" + a.offsetHeight + \";\", n.removeChild(a);\n\n        bmak.fmh = bmak.ats(bmak.mn_s(e));\n      } else bmak.fmh = \"\";\n\n      bmak.fmz = \"devicePixelRatio\" in window && void 0 !== window.devicePixelRatio ? window.devicePixelRatio : -1;\n    },\n    wgl: function() {\n      try {\n        var t = document.createElement(\"canvas\"),\n          a = t.getContext(\"webgl\");\n        bmak.wv = \"n\", bmak.wr = \"n\", bmak.weh = \"n\", bmak.wl = 0, a && (bmak.wv = \"b\", bmak.wr = \"b\", bmak.weh = \"b\", a.getSupportedExtensions() && (bmak.weh = bmak.ats(bmak.mn_s(JSON.stringify(a.getSupportedExtensions().sort()))), bmak.wl = a.getSupportedExtensions().length, a.getSupportedExtensions().indexOf(\"WEBGL_debug_renderer_info\") >= 0 && (bmak.wv = a.getParameter(a.getExtension(\"WEBGL_debug_renderer_info\").UNMASKED_VENDOR_WEBGL), bmak.wr = a.getParameter(a.getExtension(\"WEBGL_debug_renderer_info\").UNMASKED_RENDERER_WEBGL))));\n      } catch (t) {\n        bmak.wv = \"e\", bmak.wr = \"e\", bmak.weh = \"e\", bmak.wl = 0;\n      }\n    },\n    csh: function() {\n      if (window.speechSynthesis) {\n        var t = window.speechSynthesis.getVoices();\n\n        if (t.length > 0) {\n          for (var a = \"\", e = 0; e < t.length; e++) a += t[e].voiceURI + \"_\" + t[e].lang;\n\n          bmak.ssh = bmak.ats(bmak.mn_s(a));\n        } else bmak.ssh = \"0\";\n      } else bmak.ssh = \"n\";\n    },\n    hbs: function() {\n      try {\n        return Boolean(window.__nightmare) + (Boolean(window.cdc_adoQpoasnfa76pfcZLmcfl_Array) << 1) + (Boolean(window.cdc_adoQpoasnfa76pfcZLmcfl_Promise) << 2) + (Boolean(window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol) << 3) + (Boolean(window.OSMJIF) << 4) + (Boolean(window._Selenium_IDE_Recorder) << 5) + (Boolean(window.__$webdriverAsyncExecutor) << 6) + (Boolean(window.__driver_evaluate) << 7) + (Boolean(window.__driver_unwrapped) << 8) + (Boolean(window.__fxdriver_evaluate) << 9) + (Boolean(window.__fxdriver_unwrapped) << 10) + (Boolean(window.__lastWatirAlert) << 11) + (Boolean(window.__lastWatirConfirm) << 12) + (Boolean(window.__lastWatirPrompt) << 13) + (Boolean(window.__phantomas) << 14) + (Boolean(window.__selenium_evaluate) << 15) + (Boolean(window.__selenium_unwrapped) << 16) + (Boolean(window.__webdriverFuncgeb) << 17) + (Boolean(window.__webdriver__chr) << 18) + (Boolean(window.__webdriver_evaluate) << 19) + (Boolean(window.__webdriver_script_fn) << 20) + (Boolean(window.__webdriver_script_func) << 21) + (Boolean(window.__webdriver_script_function) << 22) + (Boolean(window.__webdriver_unwrapped) << 23) + (Boolean(window.awesomium) << 24) + (Boolean(window.callSelenium) << 25) + (Boolean(window.calledPhantom) << 26) + (Boolean(window.calledSelenium) << 27) + (Boolean(window.domAutomationController) << 28) + (Boolean(window.watinExpressionError) << 29) + (Boolean(window.watinExpressionResult) << 30) + (Boolean(window.spynner_additional_js_loaded) << 31) + (Boolean(document.$chrome_asyncScriptInfo) << 32) + (Boolean(window.fmget_targets) << 33) + (Boolean(window.geb) << 34);\n      } catch (t) {\n        return 0;\n      }\n    },\n    gwd: function() {\n      try {\n        return navigator.webdriver ? navigator.webdriver : -1;\n      } catch (t) {\n        return 0;\n      }\n    },\n    gf: function(t) {\n      var a;\n      if (a = null == t ? document.activeElement : t, null == document.activeElement) return -1;\n      var e = a.getAttribute(\"name\");\n\n      if (null == e) {\n        var n = a.getAttribute(\"id\");\n        return null == n ? -1 : bmak.ab(n);\n      }\n\n      return bmak.ab(e);\n    },\n    cc: function(t) {\n      var a = t % 4;\n      2 == a && (a = 3);\n\n      var e = 42 + a,\n        n = function(t, a) {\n          return 0;\n        };\n\n      if (42 == e) var n = function(t, a) {\n        return t * a;\n      };\n      else if (43 == e) var n = function(t, a) {\n        return t + a;\n      };\n      else var n = function(t, a) {\n        return t - a;\n      };\n      return n;\n    },\n    isIgn: function(t) {\n      var a = document.activeElement;\n      if (null == document.activeElement) return 0;\n      var e = a.getAttribute(\"type\");\n      return 1 == (null == e ? -1 : bmak.get_type(e)) && bmak.fidcnt > 12 && -2 == t ? 1 : 0;\n    },\n    cka: function(t, a) {\n      try {\n        var e = t || window.event,\n          n = -1,\n          o = 1;\n\n        if (bmak.ke_cnt < bmak.ke_cnt_lmt && e) {\n          n = e.keyCode;\n          var m = e.charCode,\n            r = e.shiftKey ? 1 : 0,\n            i = e.ctrlKey ? 1 : 0,\n            c = e.metaKey ? 1 : 0,\n            b = e.altKey ? 1 : 0,\n            d = 8 * r + 4 * i + 2 * c + b,\n            s = bmak.get_cf_date() - bmak.start_ts,\n            k = bmak.gf(null),\n            l = 0;\n          m && n && (n = 0 != m && 0 != n && m != n ? -1 : 0 != n ? n : m), 0 == i && 0 == c && 0 == b && n >= 32 && (n = 3 == a && n >= 32 && n <= 126 ? -2 : n >= 33 && n <= 47 ? -3 : n >= 112 && n <= 123 ? -4 : -2), k != bmak.prevfid ? (bmak.fidcnt = 0, bmak.prevfid = k) : bmak.fidcnt = bmak.fidcnt + 1;\n\n          if (0 == bmak.isIgn(n)) {\n            var u = bmak.ke_cnt + \",\" + a + \",\" + s + \",\" + n + \",\" + l + \",\" + d + \",\" + k;\n            void 0 !== e.isTrusted && !1 === e.isTrusted && (u += \",0\"), u += \";\", bmak.kact = bmak.kact + u, bmak.ke_vel = bmak.ke_vel + bmak.ke_cnt + a + s + n + d + k, bmak.ta += s;\n          } else o = 0;\n        }\n\n        o && e && bmak.ke_cnt++, !bmak.js_post || 1 != a || 13 != n && 9 != n || (bmak.aj_type = 3, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1);\n      } catch (t) {}\n    },\n    cta: function(t, a) {\n      try {\n        if (1 == a && bmak.tme_cnt < bmak.tme_cnt_lmt || 1 != a && bmak.tduce_cnt < bmak.tduce_cnt_lmt) {\n          var e = t || window.event,\n            n = -1,\n            o = -1;\n          e && e.pageX && e.pageY ? (n = Math.floor(e.pageX), o = Math.floor(e.pageY)) : e && e.clientX && e.clientY && (n = Math.floor(e.clientX), o = Math.floor(e.clientY));\n          var m = bmak.get_cf_date() - bmak.start_ts,\n            r = bmak.te_cnt + \",\" + a + \",\" + m + \",\" + n + \",\" + o;\n          void 0 !== e.isTrusted && !1 === e.isTrusted && (r += \",0\"), bmak.tact = bmak.tact + r + \";\", bmak.ta += m, bmak.te_vel = bmak.te_vel + bmak.te_cnt + a + m + n + o, bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n        }\n\n        1 == a ? bmak.tme_cnt++ : bmak.tduce_cnt++, bmak.te_cnt++, bmak.js_post && 2 == a && bmak.aj_indx_tact < bmak.aj_lmt_tact && (bmak.aj_type = 5, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_tact++);\n      } catch (t) {}\n    },\n    getFloatVal: function(t) {\n      try {\n        if (-1 != bmak.chknull(t) && !isNaN(t)) {\n          var a = parseFloat(t);\n          if (!isNaN(a)) return a.toFixed(2);\n        }\n      } catch (t) {}\n\n      return -1;\n    },\n    cdoa: function(t) {\n      try {\n        if (bmak.doe_cnt < bmak.doe_cnt_lmt && bmak.doa_throttle < 2 && t) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = bmak.getFloatVal(t.alpha),\n            n = bmak.getFloatVal(t.beta),\n            o = bmak.getFloatVal(t.gamma),\n            m = bmak.doe_cnt + \",\" + a + \",\" + e + \",\" + n + \",\" + o;\n          void 0 !== t.isTrusted && !1 === t.isTrusted && (m += \",0\"), bmak.doact = bmak.doact + m + \";\", bmak.ta += a, bmak.doe_vel = bmak.doe_vel + bmak.doe_cnt + a, bmak.doe_cnt++;\n        }\n\n        bmak.js_post && bmak.doe_cnt > 1 && bmak.aj_indx_doact < bmak.aj_lmt_doact && (bmak.aj_type = 6, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_doact++), bmak.doa_throttle++;\n      } catch (t) {}\n    },\n    cdma: function(t) {\n      try {\n        if (bmak.dme_cnt < bmak.dme_cnt_lmt && bmak.dma_throttle < 2 && t) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = -1,\n            n = -1,\n            o = -1;\n          t.acceleration && (e = bmak.getFloatVal(t.acceleration.x), n = bmak.getFloatVal(t.acceleration.y), o = bmak.getFloatVal(t.acceleration.z));\n          var m = -1,\n            r = -1,\n            i = -1;\n          t.accelerationIncludingGravity && (m = bmak.getFloatVal(t.accelerationIncludingGravity.x), r = bmak.getFloatVal(t.accelerationIncludingGravity.y), i = bmak.getFloatVal(t.accelerationIncludingGravity.z));\n          var c = -1,\n            b = -1,\n            d = 1;\n          t.rotationRate && (c = bmak.getFloatVal(t.rotationRate.alpha), b = bmak.getFloatVal(t.rotationRate.beta), d = bmak.getFloatVal(t.rotationRate.gamma));\n          var s = bmak.dme_cnt + \",\" + a + \",\" + e + \",\" + n + \",\" + o + \",\" + m + \",\" + r + \",\" + i + \",\" + c + \",\" + b + \",\" + d;\n          void 0 !== t.isTrusted && !1 === t.isTrusted && (s += \",0\"), bmak.dmact = bmak.dmact + s + \";\", bmak.ta += a, bmak.dme_vel = bmak.dme_vel + bmak.dme_cnt + a, bmak.dme_cnt++;\n        }\n\n        bmak.js_post && bmak.dme_cnt > 1 && bmak.aj_indx_dmact < bmak.aj_lmt_dmact && (bmak.aj_type = 7, bmak.bpd(), bmak.pd(!0), bmak.ce_js_post = 1, bmak.aj_indx_dmact++), bmak.dma_throttle++;\n      } catch (t) {}\n    },\n    get_type: function(t) {\n      return t = t.toLowerCase(), \"text\" == t || \"search\" == t || \"url\" == t || \"email\" == t || \"tel\" == t || \"number\" == t ? 0 : \"password\" == t ? 1 : 2;\n    },\n    chknull: function(t) {\n      return null == t ? -1 : t;\n    },\n    getforminfo: function() {\n      for (var t = \"\", a = \"\", e = document.getElementsByTagName(\"input\"), n = -1, o = 0; o < e.length; o++) {\n        var m = e[o],\n          r = bmak.ab(m.getAttribute(\"name\")),\n          i = bmak.ab(m.getAttribute(\"id\")),\n          c = m.getAttribute(\"required\"),\n          b = null == c ? 0 : 1,\n          d = m.getAttribute(\"type\"),\n          s = null == d ? -1 : bmak.get_type(d),\n          k = m.getAttribute(\"autocomplete\");\n        null == k ? n = -1 : (k = k.toLowerCase(), n = \"off\" == k ? 0 : \"on\" == k ? 1 : 2);\n        var l = m.defaultValue,\n          u = m.value,\n          _ = 0,\n          f = 0;\n        l && 0 != l.length && (f = 1), !u || 0 == u.length || f && u == l || (_ = 1), 2 != s && (t = t + s + \",\" + n + \",\" + _ + \",\" + b + \",\" + i + \",\" + r + \",\" + f + \";\"), a = a + _ + \";\";\n      }\n\n      return null == bmak.ins && (bmak.ins = a), bmak.cns = a, t;\n    },\n    startdoadma: function() {\n      0 == bmak.doadma_en && window.addEventListener && (window.addEventListener(\"deviceorientation\", bmak.cdoa, !0), window.addEventListener(\"devicemotion\", bmak.cdma, !0), bmak.doadma_en = 1), bmak.doa_throttle = 0, bmak.dma_throttle = 0;\n    },\n    updatet: function() {\n      return bmak.get_cf_date() - bmak.start_ts;\n    },\n    htm: function(t) {\n      bmak.cta(t, 1);\n    },\n    hts: function(t) {\n      bmak.cta(t, 2);\n    },\n    hte: function(t) {\n      bmak.cta(t, 3);\n    },\n    htc: function(t) {\n      bmak.cta(t, 4);\n    },\n    hmm: function(t) {\n      bmak.cma(t, 1);\n    },\n    hc: function(t) {\n      bmak.cma(t, 2);\n    },\n    hmd: function(t) {\n      bmak.cma(t, 3);\n    },\n    hmu: function(t) {\n      bmak.cma(t, 4);\n    },\n    hpd: function(t) {\n      bmak.cpa(t, 3);\n    },\n    hpu: function(t) {\n      bmak.cpa(t, 4);\n    },\n    hkd: function(t) {\n      bmak.cka(t, 1);\n    },\n    hku: function(t) {\n      bmak.cka(t, 2);\n    },\n    hkp: function(t) {\n      bmak.cka(t, 3);\n    },\n    form_submit: function() {\n      try {\n        if (bmak.bpd(), 0 == bmak.sdfn.length) {\n          if (document.getElementById(\"bm-telemetry\") && (document.getElementById(\"bm-telemetry\").value = bmak.sensor_data), void 0 !== document.getElementsByName(\"bm-telemetry\"))\n            for (var t = document.getElementsByName(\"bm-telemetry\"), a = 0; a < t.length; a++) t[a].value = bmak.sensor_data;\n        } else\n          for (var a = 0; a < bmak.sdfn.length; a++) document.getElementById(bmak.sdfn[a]) && (document.getElementById(bmak.sdfn[a]).value = bmak.sensor_data);\n      } catch (t) {\n        bmak.sd_debug(\",s7:\" + t + \",\" + bmak.sensor_data);\n      }\n    },\n    get_telemetry: function() {\n      return bmak.bpd(), bmak.ir(), bmak.sensor_data;\n    },\n    getdurl: function() {\n      return bmak.enReadDocUrl ? document.URL.replace(/\\\\|\"/g, \"\") : \"\";\n    },\n    x1: function() {\n      return Math.floor(16777216 * (1 + Math.random())).toString(36);\n    },\n    gck: function() {\n      var t = bmak.x1() + bmak.x1() + bmak.x1() + bmak.x1();\n      return bmak.set_cookie(bmak.ckie, t + \"_\" + bmak.ab(t)), t;\n    },\n    set_cookie: function(t, a) {\n      void 0 !== document.cookie && (document.cookie = t + \"=\" + a + \"; path=/; expires=Fri, 01 Feb 2025 08:00:00 GMT;\");\n    },\n    get_cookie: function() {\n      var t = \"0\";\n\n      try {\n        var t = bmak.cookie_chk_read(bmak.ckie);\n        t || (bmak.n_ck = 1, t = bmak.bm ? \"2\" : \"1\");\n      } catch (t) {}\n\n      return t;\n    },\n    cookie_chk_read: function(t) {\n      if (document.cookie)\n        for (var a = t + \"=\", e = document.cookie.split(\"; \"), n = 0; n < e.length; n++) {\n          var o = e[n];\n\n          if (0 === o.indexOf(a)) {\n            var m = o.substring(a.length, o.length);\n            if (-1 != m.indexOf(\"~\") || -1 != decodeURIComponent(m).indexOf(\"~\")) return m;\n          }\n        }\n      return !1;\n    },\n    bpd: function() {\n      bmak.sd_debug(\"<bpd>\");\n      var t = 0;\n\n      try {\n        t = bmak.get_cf_date();\n        var a = bmak.updatet(),\n          e = \"3\";\n        bmak.ckie && (e = bmak.get_cookie());\n        var n = bmak.gd(),\n          o = window.DeviceOrientationEvent ? \"do_en\" : \"do_dis\",\n          m = window.DeviceMotionEvent ? \"dm_en\" : \"dm_dis\",\n          r = window.TouchEvent ? \"t_en\" : \"t_dis\",\n          i = o + \",\" + m + \",\" + r,\n          c = bmak.getforminfo(),\n          b = bmak.getdurl(),\n          d = bmak.aj_type + \",\" + bmak.aj_indx;\n        !bmak.fpcf.fpValCalculated && (0 == bmak.js_post || bmak.aj_indx > 0) && bmak.fpcf.fpVal();\n\n        var s = bmak.ke_vel + bmak.me_vel + bmak.doe_vel + bmak.dme_vel + bmak.te_vel + bmak.pe_vel,\n          k = bmak.ff,\n          l = k(80) + k(105) + k(90) + k(116) + k(69),\n          u = bmak.jrs(bmak.start_ts),\n          _ = bmak.get_cf_date() - bmak.start_ts,\n          f = bmak.pi(bmak.d2 / 6),\n          p = bmak.fas(),\n          v = bmak.hbs(),\n          h = bmak.gwd(),\n          g = [bmak.ke_vel + 1, bmak.me_vel + 32, bmak.te_vel + 32, bmak.doe_vel, bmak.dme_vel, bmak.pe_vel, s, a, bmak.init_time, bmak.start_ts, bmak.fpcf.td, bmak.d2, bmak.ke_cnt, bmak.me_cnt, f, bmak.pe_cnt, bmak.te_cnt, _, bmak.ta, bmak.n_ck, e, bmak.ab(e), bmak.fpcf.rVal, bmak.fpcf.rCFP, p, l, u[0], u[1], v, h],\n          w = g.join(\",\"),\n          y = \"\" + bmak.ab(bmak.fpcf.fpValstr);\n\n        bmak.firstLoad ? bmak.np() : bmak.csh(), !bmak.hbCalc && (0 == bmak.js_post || bmak.aj_indx > 0) && (bmak.fm(), bmak.wgl(), bmak.hbCalc = !0);\n        var E = \"\";\n        bmak.hbCalc && (E = bmak.fmh + \",\" + bmak.fmz + \",\" + bmak.ssh + \",\" + bmak.wv + \",\" + bmak.wr + \",\" + bmak.weh + \",\" + bmak.wl);\n        var S = bmak.sed(),\n          C = bmak.mn_get_current_challenges(),\n          B = \"\",\n          x = \"\",\n          M = \"\";\n\n        if (void 0 !== C[1]) {\n          var j = C[1];\n          void 0 !== bmak.mn_r[j] && (B = bmak.mn_r[j]);\n        }\n\n        if (void 0 !== C[2]) {\n          var A = C[2];\n          void 0 !== bmak.mn_r[A] && (x = bmak.mn_r[A]);\n        }\n\n        if (void 0 !== C[3]) {\n          var L = C[3];\n          void 0 !== bmak.mn_r[L] && (M = bmak.mn_r[L]);\n        }\n\n        bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + n + \"-1,2,-94,-101,\" + i + \"-1,2,-94,-105,\" + bmak.informinfo + \"-1,2,-94,-102,\" + c + \"-1,2,-94,-108,\" + bmak.kact + \"-1,2,-94,-110,\" + bmak.mact + \"-1,2,-94,-117,\" + bmak.tact + \"-1,2,-94,-111,\" + bmak.doact + \"-1,2,-94,-109,\" + bmak.dmact + \"-1,2,-94,-114,\" + bmak.pact + \"-1,2,-94,-103,\" + bmak.vcact + \"-1,2,-94,-112,\" + b + \"-1,2,-94,-115,\" + w + \"-1,2,-94,-106,\" + d, bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-119,\" + bmak.mr + \"-1,2,-94,-122,\" + S + \"-1,2,-94,-123,\" + B + \"-1,2,-94,-124,\" + x + \"-1,2,-94,-126,\" + M + \"-1,2,-94,-127,\" + bmak.nav_perm;\n        var P = 24 ^ bmak.ab(bmak.sensor_data);\n        bmak.sensor_data = bmak.sensor_data + \"-1,2,-94,-70,\" + bmak.fpcf.fpValstr + \"-1,2,-94,-80,\" + y + \"-1,2,-94,-116,\" + bmak.o9 + \"-1,2,-94,-118,\" + P + \"-1,2,-94,-129,\" + E + \"-1,2,-94,-121,\", bmak.sd_debug(\",s1:\" + bmak.sensor_data.slice(0, 10));\n      } catch (t) {\n        var T = \"\";\n\n        try {\n          t.stack && \"string\" == typeof t.stack ? T = t.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof t && (T = t.replace(/\\\"/g, \"\\\\'\")), T = T.slice(0, 1e3), bmak.sd_debug(\",s2:\" + T), bmak.sensor_data = bmak.ver + \"-1,2,-94,-100,\" + bmak.uar() + \"-1,2,-94,-120,\" + T;\n        } catch (t) {\n          t.stack && \"string\" == typeof t.stack ? T = t.stack.replace(/\\\"/g, \"\\\\'\") : \"string\" == typeof t && (T = t.replace(/\\\"/g, \"\\\\'\")), T = T.slice(0, 1e3), bmak.sd_debug(\",s3:\" + T), bmak.sensor_data = bmak.ver + bmak.sensor_data + \",s3:\" + T;\n        }\n      }\n\n      try {\n        var F = bmak.od(bmak.cs, bmak.api_public_key).slice(0, 16),\n          D = Math.floor(bmak.get_cf_date() / 36e5),\n          R = bmak.get_cf_date(),\n          N = F + bmak.od(D, F) + bmak.sensor_data;\n        bmak.sensor_data = N + \";\" + (bmak.get_cf_date() - t) + \";\" + bmak.tst + \";\" + (bmak.get_cf_date() - R);\n      } catch (t) {}\n\n      bmak.sd_debug(\"</bpd>\");\n    },\n    od: function(t, a) {\n      try {\n        t = String(t), a = String(a);\n        var e = [],\n          n = a.length;\n\n        if (n > 0) {\n          for (var o = 0; o < t.length; o++) {\n            var m = t.charCodeAt(o),\n              r = t.charAt(o),\n              i = a.charCodeAt(o % n);\n            m = bmak.rir(m, 47, 57, i), m != t.charCodeAt(o) && (r = String.fromCharCode(m)), e.push(r);\n          }\n\n          if (e.length > 0) return e.join(\"\");\n        }\n      } catch (t) {}\n\n      return t;\n    },\n    rir: function(t, a, e, n) {\n      return t > a && t <= e && (t += n % (e - a)) > e && (t = t - e + a), t;\n    },\n    lvc: function(t) {\n      try {\n        if (bmak.vc_cnt < bmak.vc_cnt_lmt) {\n          var a = bmak.get_cf_date() - bmak.start_ts,\n            e = t + \",\" + a + \";\";\n          bmak.vcact = bmak.vcact + e;\n        }\n\n        bmak.vc_cnt++;\n      } catch (t) {}\n    },\n    hvc: function() {\n      try {\n        var t = 1;\n        document[bmak.hn] && (t = 0), bmak.lvc(t);\n      } catch (t) {}\n    },\n    hb: function(t) {\n      bmak.lvc(2);\n    },\n    hf: function(t) {\n      bmak.lvc(3);\n    },\n    rve: function() {\n      void 0 !== document.hidden ? (bmak.hn = \"hidden\", bmak.vc = \"visibilitychange\") : void 0 !== document.mozHidden ? (bmak.hn = \"mozHidden\", bmak.vc = \"mozvisibilitychange\") : void 0 !== document.msHidden ? (bmak.hn = \"msHidden\", bmak.vc = \"msvisibilitychange\") : void 0 !== document.webkitHidden && (bmak.hn = \"webkitHidden\", bmak.vc = \"webkitvisibilitychange\"), document.addEventListener ? \"unk\" != bmak.hn && document.addEventListener(bmak.vc, bmak.hvc, !0) : document.attachEvent && \"unk\" != bmak.hn && document.attachEvent(bmak.vc, bmak.hvc), window.onblur = bmak.hb, window.onfocus = bmak.hf;\n    },\n    startTracking: function() {\n      bmak.startdoadma();\n\n      try {\n        bmak.to();\n      } catch (t) {\n        bmak.o9 = -654321;\n      }\n\n      setInterval(function() {\n        bmak.startdoadma();\n      }, 3e3), document.addEventListener ? (document.addEventListener(\"touchmove\", bmak.htm, !0), document.addEventListener(\"touchstart\", bmak.hts, !0), document.addEventListener(\"touchend\", bmak.hte, !0), document.addEventListener(\"touchcancel\", bmak.htc, !0), document.addEventListener(\"mousemove\", bmak.hmm, !0), document.addEventListener(\"click\", bmak.hc, !0), document.addEventListener(\"mousedown\", bmak.hmd, !0), document.addEventListener(\"mouseup\", bmak.hmu, !0), document.addEventListener(\"pointerdown\", bmak.hpd, !0), document.addEventListener(\"pointerup\", bmak.hpu, !0), document.addEventListener(\"keydown\", bmak.hkd, !0), document.addEventListener(\"keyup\", bmak.hku, !0), document.addEventListener(\"keypress\", bmak.hkp, !0)) : document.attachEvent && (document.attachEvent(\"touchmove\", bmak.htm), document.attachEvent(\"touchstart\", bmak.hts), document.attachEvent(\"touchend\", bmak.hte), document.attachEvent(\"touchcancel\", bmak.htc), document.attachEvent(\"onmousemove\", bmak.hmm), document.attachEvent(\"onclick\", bmak.hc), document.attachEvent(\"onmousedown\", bmak.hmd), document.attachEvent(\"onmouseup\", bmak.hmu), document.attachEvent(\"onpointerdown\", bmak.hpd), document.attachEvent(\"onpointerup\", bmak.hpu), document.attachEvent(\"onkeydown\", bmak.hkd), document.attachEvent(\"onkeyup\", bmak.hku), document.attachEvent(\"onkeypress\", bmak.hkp)), bmak.rve(), bmak.informinfo = bmak.getforminfo(), bmak.js_post && (bmak.aj_type = 0, bmak.bpd(), bmak.pd(!0)), bmak.firstLoad = !1;\n    },\n    gb: function(t, a) {\n      var e = t.charCodeAt(a);\n      return e = e > 255 ? 0 : e;\n    },\n    encode: function(t) {\n      if (\"undefined\" != typeof btoa) return btoa(t);\n\n      for (var a, e, n, o, m, r, i, c = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", b = \"\", d = 3 * Math.floor(t.length / 3), s = 0; s < d; s += 3) a = bmak.gb(t, s), e = bmak.gb(t, s + 1), n = bmak.gb(t, s + 2), o = a >> 2, m = ((3 & a) << 4) + (e >> 4), r = ((15 & e) << 2) + (n >> 6), i = 63 & n, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + c.charAt(i);\n\n      return t.length % 3 == 1 && (a = bmak.gb(t, s), o = a >> 2, m = (3 & a) << 4, b = b + c.charAt(o) + c.charAt(m) + \"==\"), t.length % 3 == 2 && (a = bmak.gb(t, s), e = bmak.gb(t, s + 1), o = a >> 2, m = ((3 & a) << 4) + (e >> 4), r = (15 & e) << 2, b = b + c.charAt(o) + c.charAt(m) + c.charAt(r) + \"=\"), b;\n    },\n    ie9OrLower: function() {\n      try {\n        if (\"string\" == typeof navigator.appVersion && -1 != navigator.appVersion.indexOf(\"MSIE\")) {\n          if (parseFloat(navigator.appVersion.split(\"MSIE\")[1]) <= 9) return !0;\n        }\n      } catch (t) {}\n\n      return !1;\n    },\n    parse_gp: function(t) {},\n    call_gp: function() {\n      var t;\n      void 0 !== window.XMLHttpRequest ? t = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (t = new XDomainRequest(), t.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : t = new ActiveXObject(\"Microsoft.XMLHTTP\"), t.open(\"GET\", bmak.params_url, !0), t.onreadystatechange = function() {\n        t.readyState > 3 && bmak.parse_gp && bmak.parse_gp(t);\n      }, t.send();\n    },\n    apicall: function(t, a) {\n      var e;\n      e = window.XDomainRequest ? new XDomainRequest() : window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\"Microsoft.XMLHTTP\"), e.open(\"POST\", t, a);\n      var n = bmak.encode(bmak.api_public_key + \":\");\n      bmak.auth = \",\\\"auth\\\" : \\\"\" + n + \"\\\"\", e.setRequestHeader && (e.setRequestHeader(\"Content-type\", \"application/json\"), e.setRequestHeader(\"Authorization\", \"Basic \" + n), bmak.auth = \"\");\n      var o = \"{\\\"session_id\\\" : \\\"\" + bmak.session_id + \"\\\",\\\"sensor_data\\\" : \\\"\" + bmak.sensor_data + \"\\\"\" + bmak.auth + \"}\";\n      e.send(o);\n    },\n    apicall_bm: function(t, a, e) {\n      var n;\n      void 0 !== window.XMLHttpRequest ? n = new XMLHttpRequest() : void 0 !== window.XDomainRequest ? (n = new XDomainRequest(), n.onload = function() {\n        this.readyState = 4, this.onreadystatechange instanceof Function && this.onreadystatechange();\n      }) : n = new ActiveXObject(\"Microsoft.XMLHTTP\"), n.open(\"POST\", t, a), void 0 !== n.withCredentials && (n.withCredentials = !0);\n      var o = \"{\\\"sensor_data\\\":\\\"\" + bmak.sensor_data + \"\\\"}\";\n      n.onreadystatechange = function() {\n        n.readyState > 3 && e && e(n);\n      }, n.send(o), bmak.dcs = 0;\n    },\n    pd: function(t) {\n      bmak.check_stop_protocol() ? (bmak.apicall_bm(bmak.cf_url, t, bmak.patp), bmak.aj_indx = bmak.aj_indx + 1) : bmak.loap && bmak.dcs && bmak.apicall_bm(bmak.cf_url, t, bmak.patp);\n    },\n    check_stop_protocol: function() {\n      var t = bmak.get_stop_signals(),\n        a = t[0];\n      !bmak.rst && a > -1 && (bmak.ir(), bmak.rst = !0);\n      var e = t[1];\n      return -1 == e || bmak.aj_ss < e;\n    },\n    get_stop_signals: function() {\n      var t = [-1, -1],\n        a = bmak.cookie_chk_read(bmak.ckie);\n      if (!1 !== a) try {\n        var e = decodeURIComponent(a).split(\"~\");\n\n        if (e.length >= 4) {\n          var n = bmak.pi(e[1]),\n            o = bmak.pi(e[3]);\n          n = isNaN(n) ? -1 : n, o = isNaN(o) ? -1 : o, t = [o, n];\n        }\n      } catch (t) {}\n      return t;\n    },\n    patp: function(t) {\n      bmak.aj_ss++, bmak.rst = !1;\n    },\n    get_mn_params_from_abck: function() {\n      var t = [\n        []\n      ];\n\n      try {\n        var a = bmak.cookie_chk_read(bmak.ckie);\n\n        if (!1 !== a) {\n          var e = decodeURIComponent(a).split(\"~\");\n\n          if (e.length >= 5) {\n            var n = e[0],\n              o = e[4],\n              m = o.split(\"||\");\n            if (m.length > 0)\n              for (var r = 0; r < m.length; r++) {\n                var i = m[r],\n                  c = i.split(\"-\");\n\n                if (c.length >= 5) {\n                  var b = bmak.pi(c[0]),\n                    d = c[1],\n                    s = bmak.pi(c[2]),\n                    k = bmak.pi(c[3]),\n                    l = bmak.pi(c[4]),\n                    u = 1;\n                  c.length >= 6 && (u = bmak.pi(c[5]));\n                  var _ = [b, n, d, s, k, l, u];\n                  2 == u ? t.splice(0, 0, _) : t.push(_);\n                }\n              }\n          }\n        }\n      } catch (t) {}\n\n      return t;\n    },\n    mn_get_current_challenges: function() {\n      var t = bmak.get_mn_params_from_abck(),\n        a = [];\n      if (null != t)\n        for (var e = 0; e < t.length; e++) {\n          var n = t[e];\n\n          if (n.length > 0) {\n            var o = n[1] + n[2],\n              m = n[6];\n            a[m] = o;\n          }\n        }\n      return a;\n    },\n    mn_update_challenge_details: function(t) {\n      bmak.mn_sen = t[0], bmak.mn_abck = t[1], bmak.mn_psn = t[2], bmak.mn_cd = t[3], bmak.mn_tout = t[4], bmak.mn_stout = t[5], bmak.mn_ct = t[6], bmak.mn_ts = bmak.start_ts, bmak.mn_cc = bmak.mn_abck + bmak.start_ts + bmak.mn_psn;\n    },\n    mn_get_new_challenge_params: function(t) {\n      var a = null,\n        e = null,\n        n = null;\n      if (null != t)\n        for (var o = 0; o < t.length; o++) {\n          var m = t[o];\n\n          if (m.length > 0) {\n            for (var r = m[0], i = bmak.mn_abck + bmak.start_ts + m[2], c = (m[3], m[6]), b = 0; b < bmak.mn_lcl && 1 == r && bmak.mn_lc[b] != i; b++);\n\n            b == bmak.mn_lcl && (a = o, 2 == c && (e = o), 3 == c && (n = o));\n          }\n        }\n      return null != n && bmak.pstate ? t[n] : null == e || bmak.pstate ? null == a || bmak.pstate ? null : t[a] : t[e];\n    },\n    mn_poll: function() {\n      if (0 == bmak.mn_state) {\n        var t = bmak.get_mn_params_from_abck(),\n          a = bmak.mn_get_new_challenge_params(t);\n        null != a && (bmak.mn_update_challenge_details(a), bmak.mn_sen && (bmak.mn_state = 1, bmak.mn_mc_indx = 0, bmak.mn_al = [], bmak.mn_il = [], bmak.mn_tcl = [], bmak.mn_lg = [], bmak.mn_rts = bmak.get_cf_date(), bmak.mn_rt = bmak.mn_rts - bmak.start_ts, bmak.mn_wt = 0, setTimeout(bmak.mn_w, bmak.mn_tout)));\n      }\n    },\n    rotate_right: function(t, a) {\n      return t >>> a | t << 32 - a;\n    },\n    encode_utf8: function(t) {\n      return unescape(encodeURIComponent(t));\n    },\n    mn_s: function(t) {\n      var a = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298],\n        e = 1779033703,\n        n = 3144134277,\n        o = 1013904242,\n        m = 2773480762,\n        r = 1359893119,\n        i = 2600822924,\n        c = 528734635,\n        b = 1541459225,\n        d = bmak.encode_utf8(t),\n        s = 8 * d.length;\n      d += String.fromCharCode(128);\n\n      for (var k = d.length / 4 + 2, l = Math.ceil(k / 16), u = new Array(l), _ = 0; _ < l; _++) {\n        u[_] = new Array(16);\n\n        for (var f = 0; f < 16; f++) u[_][f] = d.charCodeAt(64 * _ + 4 * f) << 24 | d.charCodeAt(64 * _ + 4 * f + 1) << 16 | d.charCodeAt(64 * _ + 4 * f + 2) << 8 | d.charCodeAt(64 * _ + 4 * f + 3) << 0;\n      }\n\n      var p = s / Math.pow(2, 32);\n      u[l - 1][14] = Math.floor(p), u[l - 1][15] = s;\n\n      for (var v = 0; v < l; v++) {\n        for (var h, g = new Array(64), w = e, y = n, E = o, S = m, C = r, h = i, B = c, x = b, _ = 0; _ < 64; _++) {\n          var M, j, A, L, P, T;\n          _ < 16 ? g[_] = u[v][_] : (M = bmak.rotate_right(g[_ - 15], 7) ^ bmak.rotate_right(g[_ - 15], 18) ^ g[_ - 15] >>> 3, j = bmak.rotate_right(g[_ - 2], 17) ^ bmak.rotate_right(g[_ - 2], 19) ^ g[_ - 2] >>> 10, g[_] = g[_ - 16] + M + g[_ - 7] + j), j = bmak.rotate_right(C, 6) ^ bmak.rotate_right(C, 11) ^ bmak.rotate_right(C, 25), A = C & h ^ ~C & B, L = x + j + A + a[_] + g[_], M = bmak.rotate_right(w, 2) ^ bmak.rotate_right(w, 13) ^ bmak.rotate_right(w, 22), P = w & y ^ w & E ^ y & E, T = M + P, x = B, B = h, h = C, C = S + L >>> 0, S = E, E = y, y = w, w = L + T >>> 0;\n        }\n\n        e += w, n += y, o += E, m += S, r += C, i += h, c += B, b += x;\n      }\n\n      return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, 255 & m, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, 255 & i, c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c, b >> 24 & 255, b >> 16 & 255, b >> 8 & 255, 255 & b];\n    },\n    mn_init: function() {\n      var t = 200;\n      bmak.pstate && (t = 100), setInterval(bmak.mn_poll, t);\n    },\n    bdm: function(t, a) {\n      for (var e = 0, n = 0; n < t.length; ++n) e = (e << 8 | t[n]) >>> 0, e %= a;\n\n      return e;\n    },\n    mn_w: function() {\n      try {\n        for (var t = 0, a = 0, e = 0, n = \"\", o = bmak.get_cf_date(), m = bmak.mn_cd + bmak.mn_mc_indx; 0 == t;) {\n          n = Math.random().toString(16);\n          var r = bmak.mn_cc + m.toString() + n,\n            i = bmak.mn_s(r);\n          if (0 == bmak.bdm(i, m)) t = 1, e = bmak.get_cf_date() - o, bmak.mn_al.push(n), bmak.mn_tcl.push(e), bmak.mn_il.push(a), 0 == bmak.mn_mc_indx && (bmak.mn_lg.push(bmak.mn_abck), bmak.mn_lg.push(bmak.mn_ts), bmak.mn_lg.push(bmak.mn_psn), bmak.mn_lg.push(bmak.mn_cc), bmak.mn_lg.push(bmak.mn_cd.toString()), bmak.mn_lg.push(m.toString()), bmak.mn_lg.push(n), bmak.mn_lg.push(r), bmak.mn_lg.push(i), bmak.mn_lg.push(bmak.mn_rt));\n          else if ((a += 1) % 1e3 == 0 && (e = bmak.get_cf_date() - o) > bmak.mn_stout) return bmak.mn_wt += e, void setTimeout(bmak.mn_w, bmak.mn_stout);\n        }\n\n        bmak.mn_mc_indx += 1, bmak.mn_mc_indx < bmak.mn_mc_lmt ? setTimeout(bmak.mn_w, e) : (bmak.mn_mc_indx = 0, bmak.mn_lc[bmak.mn_lcl] = bmak.mn_cc, bmak.mn_ld[bmak.mn_lcl] = bmak.mn_cd, bmak.mn_lcl = bmak.mn_lcl + 1, bmak.mn_state = 0, bmak.mn_lg.push(bmak.mn_wt), bmak.mn_lg.push(bmak.get_cf_date()), bmak.mn_r[bmak.mn_abck + bmak.mn_psn] = bmak.mn_pr(), bmak.js_post && (bmak.aj_type = 8, 2 == bmak.mn_ct && (bmak.dcs = 1), bmak.bpd(), bmak.pd(!0)));\n      } catch (t) {\n        bmak.sd_debug(\",mn_w:\" + t);\n      }\n    },\n    mn_pr: function() {\n      return bmak.mn_al.join(\",\") + \";\" + bmak.mn_tcl.join(\",\") + \";\" + bmak.mn_il.join(\",\") + \";\" + bmak.mn_lg.join(\",\") + \";\";\n    },\n    ats: function(t) {\n      for (var a = \"\", e = 0; e < t.length; e++) a += 2 == t[e].toString(16).length ? t[e].toString(16) : \"0\" + t[e].toString(16);\n\n      return a;\n    },\n    calc_fp: function() {\n      bmak.fpcf.fpVal(), bmak.js_post && (bmak.aj_type = 9, bmak.bpd(), bmak.pd(!0));\n    },\n    listFunctions: {\n      _setJsPost: function(t) {\n        bmak.js_post = t, bmak.js_post && (bmak.enReadDocUrl = 1);\n      },\n      _setSessionId: function(t) {\n        bmak.session_id = t;\n      },\n      _setJavaScriptKey: function(t) {\n        bmak.api_public_key = t;\n      },\n      _setEnAddHidden: function(t) {\n        bmak.enAddHidden = t;\n      },\n      _setInitTime: function(t) {\n        bmak.init_time = t;\n      },\n      _setApiUrl: function(t) {\n        bmak.cf_url = t;\n      },\n      _setEnGetLoc: function(t) {\n        bmak.enGetLoc = t;\n      },\n      _setEnReadDocUrl: function(t) {\n        bmak.enReadDocUrl = t;\n      },\n      _setDisFpCalOnTimeout: function(t) {\n        bmak.disFpCalOnTimeout = t;\n      },\n      _setCookie: function(t) {\n        bmak.ckie = t;\n      },\n      _setCS: function(t) {\n        bmak.cs = (String(t) + bmak.cs).slice(0, 16);\n      },\n      _setFsp: function(t) {\n        bmak.fsp = t, bmak.fsp && (bmak.cf_url = bmak.cf_url.replace(/^http:\\/\\//i, \"https://\"));\n      },\n      _setBm: function(t) {\n        bmak.bm = t, bmak.bm ? (bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/_bm/_data\", bmak.js_post = !0) : bmak.params_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + \"/get_params\";\n      },\n      _setAu: function(t) {\n        \"string\" == typeof t && (0 === t.lastIndexOf(\"/\", 0) ? bmak.cf_url = (bmak.fsp ? \"https:\" : document.location.protocol) + \"//\" + document.location.hostname + t : bmak.cf_url = t);\n      },\n      _setSDFieldNames: function() {\n        try {\n          var t;\n\n          for (t = 0; t < arguments.length; t += 1) bmak.sdfn.push(arguments[t]);\n        } catch (t) {\n          bmak.sd_debug(\",setSDFN:\" + t);\n        }\n      },\n      _setUseAltFonts: function(t) {\n        bmak.altFonts = t;\n      },\n      _setPowState: function(t) {\n        bmak.pstate = t;\n      },\n      _setPow: function(t) {\n        bmak.pstate = t;\n      },\n      _setLOAP: function(t) {\n        bmak.loap = t;\n      }\n    },\n    applyFunc: function() {\n      var t, a, e;\n\n      for (t = 0; t < arguments.length; t += 1) e = arguments[t];\n\n      a = e.shift(), bmak.listFunctions[a] && bmak.listFunctions[a].apply(bmak.listFunctions, e);\n    },\n    getStateField: function(t) {\n      for (var a = \"\", e = \"aeiouy13579\", n = 0, o = t.toLowerCase(); n < o.length;) e.indexOf(o[n]) >= 0 || e.indexOf(o[n + 1]) >= 0 ? a += 1 : a += 0, n += 2;\n\n      return a;\n    }\n  };\n\nif (function(t) {\n    var a = {};\n    t.fpcf = a, a.sf4 = function() {\n      var t = bmak.uar();\n      return !(!~t.indexOf(\"Version/4.0\") || !(~t.indexOf(\"iPad;\") || ~t.indexOf(\"iPhone\") || ~t.indexOf(\"Mac OS X 10_5\")));\n    }, a.fpValstr = \"-1\", a.fpValCalculated = !1, a.rVal = \"-1\", a.rCFP = \"-1\", a.cache = {}, a.td = -999999, a.clearCache = function() {\n      a.cache = {};\n    }, a.fpVal = function() {\n      a.fpValCalculated = !0;\n\n      try {\n        var t = 0;\n        t = Date.now ? Date.now() : +new Date();\n        var e = a.data();\n        a.fpValstr = e.replace(/\\\"/g, \"\\\\\\\\\\\"\");\n        var n = 0;\n        n = Date.now ? Date.now() : +new Date(), a.td = n - t;\n      } catch (t) {}\n    }, a.timezoneOffsetKey = function() {\n      return new Date().getTimezoneOffset();\n    }, a.data = function() {\n      var t = screen.colorDepth ? screen.colorDepth : -1,\n        e = screen.pixelDepth ? screen.pixelDepth : -1,\n        n = navigator.cookieEnabled ? navigator.cookieEnabled : -1,\n        o = navigator.javaEnabled ? navigator.javaEnabled() : -1,\n        m = navigator.doNotTrack ? navigator.doNotTrack : -1,\n        r = \"default\";\n      r = bmak.runFonts ? bmak.altFonts ? a.fonts_optm() : a.fonts() : \"dis\";\n      return [a.canvas(\"<@nv45. F1n63r,Pr1n71n6!\"), a.canvas(\"m,Ev!xV67BaU> eh2m<f3AG3@\"), r, a.pluginInfo(), a.sessionStorageKey(), a.localStorageKey(), a.indexedDbKey(), a.timezoneOffsetKey(), a.webrtcKey(), t, e, n, o, m].join(\";\");\n    }, a.PLUGINS = [\"WebEx64 General Plugin Container\", \"YouTube Plug-in\", \"Java Applet Plug-in\", \"Shockwave Flash\", \"iPhotoPhotocast\", \"SharePoint Browser Plug-in\", \"Chrome Remote Desktop Viewer\", \"Chrome PDF Viewer\", \"Native Client\", \"Unity Player\", \"WebKit-integrierte PDF\", \"QuickTime Plug-in\", \"RealPlayer Version Plugin\", \"RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)\", \"Mozilla Default Plug-in\", \"Adobe Acrobat\", \"AdobeAAMDetect\", \"Google Earth Plug-in\", \"Java Plug-in 2 for NPAPI Browsers\", \"Widevine Content Decryption Module\", \"Microsoft Office Live Plug-in\", \"Windows Media Player Plug-in Dynamic Link Library\", \"Google Talk Plugin Video Renderer\", \"Edge PDF Viewer\", \"Shockwave for Director\", \"Default Browser Helper\", \"Silverlight Plug-In\"], a.pluginInfo = function() {\n      if (void 0 === navigator.plugins) return null;\n\n      for (var t = a.PLUGINS.length, e = \"\", n = 0; n < t; n++) {\n        var o = a.PLUGINS[n];\n        void 0 !== navigator.plugins[o] && (e = e + \",\" + n);\n      }\n\n      return e;\n    }, a.canvas = function(t) {\n      try {\n        if (void 0 !== a.cache.canvas) return a.cache.canvas;\n        var e = -1;\n\n        if (!a.sf4()) {\n          var n = document.createElement(\"canvas\");\n\n          if (n.width = 280, n.height = 60, n.style.display = \"none\", \"function\" == typeof n.getContext) {\n            var o = n.getContext(\"2d\");\n            o.fillStyle = \"rgb(102, 204, 0)\", o.fillRect(100, 5, 80, 50), o.fillStyle = \"#f60\", o.font = \"16pt Arial\", o.fillText(t, 10, 40), o.strokeStyle = \"rgb(120, 186, 176)\", o.arc(80, 10, 20, 0, Math.PI, !1), o.stroke();\n            var m = n.toDataURL();\n            e = 0;\n\n            for (var r = 0; r < m.length; r++) {\n              e = (e << 5) - e + m.charCodeAt(r), e &= e;\n            }\n\n            e = e.toString();\n            var i = document.createElement(\"canvas\");\n            i.width = 16, i.height = 16;\n            var c = i.getContext(\"2d\");\n            c.font = \"6pt Arial\", a.rVal = Math.floor(1e3 * Math.random()).toString(), c.fillText(a.rVal, 1, 12);\n\n            for (var b = i.toDataURL(), d = 0, s = 0; s < b.length; s++) {\n              d = (d << 5) - d + b.charCodeAt(s), d &= d;\n            }\n\n            a.rCFP = d.toString();\n          }\n        }\n\n        return e;\n      } catch (t) {\n        return \"exception\";\n      }\n    }, a.fonts_optm = function() {\n      var t = 200,\n        e = bmak.get_cf_date(),\n        n = [];\n\n      if (!a.sf4() && document.body) {\n        var o = [\"sans-serif\", \"monospace\"],\n          m = [0, 0],\n          r = [0, 0],\n          i = document.createElement(\"div\");\n        i.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n        var c;\n\n        for (c = 0; c < o.length; c++) {\n          var b = document.createElement(\"span\");\n          b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = o[c], i.appendChild(b);\n        }\n\n        for (document.body.appendChild(i), c = 0; c < i.childNodes.length; c++) b = i.childNodes[c], m[c] = b.offsetWidth, r[c] = b.offsetHeight;\n\n        if (document.body.removeChild(i), bmak.get_cf_date() - e > t) return \"\";\n        var d = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"],\n          s = document.createElement(\"div\");\n        s.style.cssText = \"position: relative; left: -9999px; visibility: hidden; display: block !important\";\n\n        for (var k = [], l = 0; l < d.length; l++) {\n          var u = document.createElement(\"div\");\n\n          for (c = 0; c < o.length; c++) {\n            var b = document.createElement(\"span\");\n            b.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", b.style.fontSize = \"90px\", b.style.fontFamily = d[l] + \",\" + o[c], u.appendChild(b);\n          }\n\n          s.appendChild(u);\n        }\n\n        if (bmak.get_cf_date() - e > t) return \"\";\n        document.body.appendChild(s);\n\n        for (var l = 0; l < s.childNodes.length; l++) {\n          var _ = !1,\n            u = s.childNodes[l];\n\n          for (c = 0; c < u.childNodes.length; c++) {\n            var b = u.childNodes[c];\n\n            if (b.offsetWidth !== m[c] || b.offsetHeight !== r[c]) {\n              _ = !0;\n              break;\n            }\n          }\n\n          if (_ && k.push(l), bmak.get_cf_date() - e > t) break;\n        }\n\n        document.body.removeChild(s), n = k.sort();\n      }\n\n      return n.join(\",\");\n    }, a.fonts = function() {\n      var t = [];\n\n      if (!a.sf4() && document.body) {\n        var e = [\"serif\", \"sans-serif\", \"monospace\"],\n          n = [0, 0, 0],\n          o = [0, 0, 0],\n          m = document.createElement(\"span\");\n        m.innerHTML = \"abcdefhijklmnopqrstuvxyz1234567890;+-.\", m.style.fontSize = \"90px\";\n        var r;\n\n        for (r = 0; r < e.length; r++) m.style.fontFamily = e[r], document.body.appendChild(m), n[r] = m.offsetWidth, o[r] = m.offsetHeight, document.body.removeChild(m);\n\n        for (var i = [\"Geneva\", \"Lobster\", \"New York\", \"Century\", \"Apple Gothic\", \"Minion Pro\", \"Apple LiGothic\", \"Century Gothic\", \"Monaco\", \"Lato\", \"Fantasque Sans Mono\", \"Adobe Braille\", \"Cambria\", \"Futura\", \"Bell MT\", \"Courier\", \"Courier New\", \"Calibri\", \"Avenir Next\", \"Birch Std\", \"Palatino\", \"Ubuntu Regular\", \"Oswald\", \"Batang\", \"Ubuntu Medium\", \"Cantarell\", \"Droid Serif\", \"Roboto\", \"Helvetica Neue\", \"Corsiva Hebrew\", \"Adobe Hebrew\", \"TI-Nspire\", \"Comic Neue\", \"Noto\", \"AlNile\", \"Palatino-Bold\", \"ArialHebrew-Light\", \"Avenir\", \"Papyrus\", \"Open Sans\", \"Times\", \"Quicksand\", \"Source Sans Pro\", \"Damascus\", \"Microsoft Sans Serif\"], c = [], b = 0; b < i.length; b++) {\n          var d = !1;\n\n          for (r = 0; r < e.length; r++)\n            if (m.style.fontFamily = i[b] + \",\" + e[r], document.body.appendChild(m), m.offsetWidth === n[r] && m.offsetHeight === o[r] || (d = !0), document.body.removeChild(m), d) {\n              c.push(b);\n              break;\n            }\n        }\n\n        t = c.sort();\n      }\n\n      return t.join(\",\");\n    }, a.webrtcKey = function() {\n      return \"function\" == typeof window.RTCPeerConnection || \"function\" == typeof window.mozRTCPeerConnection || \"function\" == typeof window.webkitRTCPeerConnection;\n    }, a.indexedDbKey = function() {\n      return !!a.hasIndexedDB();\n    }, a.sessionStorageKey = function() {\n      return !!a.hasSessionStorage();\n    }, a.localStorageKey = function() {\n      return !!a.hasLocalStorage();\n    }, a.hasSessionStorage = function() {\n      try {\n        return !!window.sessionStorage;\n      } catch (t) {\n        return !1;\n      }\n    }, a.hasLocalStorage = function() {\n      try {\n        return !!window.localStorage;\n      } catch (t) {\n        return !1;\n      }\n    }, a.hasIndexedDB = function() {\n      return !!window.indexedDB;\n    };\n  }(bmak), bmak.firstLoad) {\n  if (bmak.sd_debug(\"<init/>\"), _cf.length > 0) {\n    for (var bm_counter = 0; bm_counter < _cf.length; bm_counter++) bmak.applyFunc(_cf[bm_counter]);\n\n    bmak.sd_debug(\"<setSDFN>\" + bmak.sdfn.join() + \"</setSDFN>\"), _cf = {\n      push: bmak.applyFunc\n    };\n  } else {\n    var bm_script;\n\n    if (document.currentScript && (bm_script = document.currentScript), !bm_script) {\n      var scripts = document.getElementsByTagName(\"script\");\n      scripts.length && (bm_script = scripts[scripts.length - 1]);\n    }\n\n    if (bm_script.src) {\n      var bm_url = bm_script.src,\n        url_split = bm_url.split(\"/\"),\n        obfus_state_field;\n\n      if (url_split.length >= 4 && (obfus_state_field = bm_url.split(\"/\").slice(-4)[0]), obfus_state_field && obfus_state_field.length % 2 == 0) {\n        var state_field_str = bmak.getStateField(obfus_state_field);\n        state_field_str.length >= 3 && (bmak.listFunctions._setFsp(\"1\" == state_field_str[0]), bmak.listFunctions._setBm(\"1\" == state_field_str[1]), bmak.listFunctions._setPowState(\"1\" == state_field_str[2]), bmak.listFunctions._setAu(bm_url));\n      }\n    }\n  }\n\n  try {\n    bmak.ir(), bmak.t_tst = bmak.get_cf_date(), bmak.startTracking(), bmak.tst = bmak.get_cf_date() - bmak.t_tst, bmak.disFpCalOnTimeout || setTimeout(bmak.calc_fp, 500);\n\n    for (var bm_counter = 0; bm_counter < 3; bm_counter++) setTimeout(bmak.getmr, 400 + 5e3 * bm_counter);\n\n    bmak.mn_init();\n  } catch (t) {}\n}"
  },
  {
    "path": "src/akamai-script.js",
    "content": "const got = require('got');\nconst chalk = require('chalk');\nconst pad = require('pad');\n\nlet config = require('../config.json');\n\nasync function request(target) {\n    const { body } = await got(target, {\n        https: {\n        rejectUnauthorized: false,\n        },\n        headers: {\n        Accept:\n            'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',\n        'Accept-Encoding': 'gzip, deflate',\n        'Accept-Language': 'en-US,en;q=0.9',\n        'Cache-Control': 'no-cache',\n        Connection: 'keep-alive',\n        Pragma: 'no-cache',\n        'Upgrade-Insecure-Requests': '1',\n        'User-Agent':\n            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',\n        },\n    });\n\n    return body;\n}\n\nasync function fetchAkamaiScript(url) {\n    try {\n        const body = await request(url);\n\n        scriptUrl = /\\['_setAu', '(\\/\\w+\\/\\w+)'\\]/i.exec(body);\n        \n        if (!scriptUrl) scriptUrl = /<script type=\"text\\/javascript\"  src=\"([^\"]+?)\"><\\/script><\\/body>/g.exec(body);\n\n        if (!scriptUrl) return;\n        \n        if (scriptUrl[1].includes(\"http\")) endpoint = scriptUrl[1]\n        else endpoint = url + scriptUrl[1]\n\n        return { endpoint: endpoint, script: (await request(endpoint)) };\n    }\n    catch (err) {\n        console.log(chalk.red.underline(\"Failed to fetch Akamai script on \" + url));\n    }\n}\n\nfunction getVersionFromFile(file) {\n    try {\n        return file.split('ver:')[1].split(',ke_cnt_lmt')[0];\n    }\n    catch (err) {\n        return chalk.underline(\"ERROR\");\n    }\n}\n\nasync function getAkamaiVersion(url, log=undefined) {\n    const result = await fetchAkamaiScript(url);\n\n    if (!result || !result.script) return -1;\n\n    const ver = getVersionFromFile(result.script);\n\n    if (log) console.log(printColoredVersion(ver), result.endpoint);\n\n    return ver;\n}\n\nfunction printColoredVersion(ver) {\n    if (parseFloat(ver) > parseFloat(config.akamai_version)) return chalk.yellowBright.bold(pad(ver, 4) + pad(\"   (new)\", 10));\n    else if (parseFloat(ver) < parseFloat(config.akamai_version)) return chalk.magentaBright.bold(pad(ver, 4) + pad(\"   (old)\", 10));\n    else if (parseFloat(ver) == parseFloat(config.akamai_version)) return chalk.greenBright.bold(pad(ver, 4) + pad(\" (current)\", 10));\n    else return chalk.red.bold(pad(ver, 4) + pad(\" :(\", 10));\n}\n\nmodule.exports = { fetchAkamaiScript, getVersionFromFile, getAkamaiVersion, printColoredVersion };"
  },
  {
    "path": "src/browser.js",
    "content": "const fs = require('fs');\nconst chalk = require('chalk');\nconst yaml = require('js-yaml');\nconst puppeteer = require('puppeteer-extra');\nconst StealthPlugin = require('puppeteer-extra-plugin-stealth');\npuppeteer.use(StealthPlugin());\n\nconst config = require('../config.json')\n\nfunction startPuppeteer(puppeteerParams) {\n\n    const size_config = !(!puppeteerParams.windowSize && puppeteerParams.windowSize.width.length && puppeteerParams.windowSize.height.length) ? `--window-size=${puppeteerParams.windowSize.width},${puppeteerParams.windowSize.height}` : '--start-maximized';\n    \n    puppeteer.launch({ headless: puppeteerParams.headless, devtools: puppeteerParams.devtools, ignoreHTTPSErrors: true, args: [size_config], executablePath: config.chromePath }).then(async browser => {\n        const pages = await browser.pages()\n        const page = pages[0];\n        \n        await page.setUserAgent(\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36\")\n        await page.setRequestInterception(!puppeteerParams.dis_intercept);\n        \n        !puppeteerParams.dis_intercept && page.on('request', async req => {\n\n            if (puppeteerParams.script_name_includes && puppeteerParams.script_name_includes.length && req.url().includes(puppeteerParams.script_name_includes)){\n                if (req.method() == \"GET\"){\n                    if (puppeteerParams.hijack_script_path && puppeteerParams.hijack_script_path.length) {\n                        try {\n                            const script = fs.readFileSync(__dirname + '/../' + puppeteerParams.hijack_script_path, {encoding:'utf8'});\n                            req.respond({\n                                status: 200,\n                                headers: {\"hijack\": \"successful\"},\n                                contentType: 'application/javascript',\n                                body: script\n                            });\n                        }\n                        catch {\n                            const error = \"Could not find hijack script, please check path in Puppeteer config file\";\n                            console.log(error);\n                        }\n                    }\n                    else req.continue();\n                    \n                    puppeteerParams.GET && puppeteerParams.GET.node && puppeteerParams.GET.node.length && eval(\"(async () => {\" + puppeteerParams.GET.node + \";})()\");\n                    puppeteerParams.GET && puppeteerParams.GET.page && puppeteerParams.GET.page.length && await page.evaluate(puppeteerParams.GET.page);\n                }\n                \n                else if (req.method() == \"POST\"){\n\n                    puppeteerParams.POST && puppeteerParams.POST.node && puppeteerParams.POST.node.length && eval(\"(async () => {\" + puppeteerParams.POST.node + \";})()\");\n                    puppeteerParams.POST && puppeteerParams.POST.page && puppeteerParams.POST.page.length && await page.evaluate(puppeteerParams.POST.page);\n                    req.continue();\n                }\n                \n                else {\n                    \n                    puppeteerParams.DEFAULT && puppeteerParams.DEFAULT.node && puppeteerParams.DEFAULT.node.length && eval(\"(async () => {\" + puppeteerParams.DEFAULT.node + \";})()\");\n                    puppeteerParams.DEFAULT && puppeteerParams.DEFAULT.page && puppeteerParams.DEFAULT.page.length && await page.evaluate(puppeteerParams.DEFAULT.page);\n                    req.continue();\n                }\n\n                return;\n            }\n            \n            else {\n                puppeteerParams.requests && puppeteerParams.requests.node && puppeteerParams.requests.node.length && eval(\"(async () => {\" + puppeteerParams.requests.node + \";})()\");\n                puppeteerParams.requests && puppeteerParams.requests.page && puppeteerParams.requests.page.length && await page.evaluate(puppeteerParams.requests.page);\n                req.continue();\n            }\n        });\n\n        !puppeteerParams.dis_intercept && page.on('response', async req => {\n\n            if (puppeteerParams.script_name_includes && puppeteerParams.script_name_includes.length && req.url().includes(puppeteerParams.script_name_includes)){\n                \n                puppeteerParams.response && puppeteerParams.response.node && puppeteerParams.response.node.length && eval(\"(async () => {\" + puppeteerParams.response.node + \";})()\");\n                puppeteerParams.response && puppeteerParams.response.page && puppeteerParams.response.page.length && await page.evaluate(puppeteerParams.response.page);\n\n                return;\n            }\n        });\n        \n        await page.goto(puppeteerParams.target, {waitUntil: 'load', timeout: 0});\n        \n        puppeteerParams.main && puppeteerParams.main.node && eval(\"(async () => {\" + puppeteerParams.main.node + \";})()\")\n        puppeteerParams.main && puppeteerParams.main.page && await page.evaluate(puppeteerParams.main.page)\n        \n    }).catch((e) => { \n        console.log(chalk.red.underline(\"browser.js: startPuppeteer\\n\" + e.message));\n        process.exit(0);\n     })\n}\n\n// If you need to use startPuppeteer from somewhere else\nfunction puppeteerParamsProto() {\n    return {\n        \"headless\": false,\n        \"devtools\": false,\n        \"windowSize\": undefined,\n        \"dis_intercept\": false,\n        \"target\": \"https://github.com/OXDBXKXO/akamai-toolkit\",\n        \"hijack_script_path\": \"\",\n        \"helpers\": true,\n        \"script_name_includes\": \"/staticweb/\",\n        \"main\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        },\n        \"GET\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        },\n        \"POST\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        },\n        \"DEFAULT\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        },\n        \"response\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        },\n        \"requests\": {\n            \"page\": \"\",\n            \"node\": \"\"\n        }\n    }\n}\n\nfunction getPuppetteerConfigFromFile(filename) {\n    \n    try {       \n        const data = fs.readFileSync(filename, {encoding:'utf8', flag:'r'});\n        let puppeteerParams = yaml.loadAll(data)[0];\n        \n        puppeteerParams.dis_intercept && (puppeteerParams.dis_intercept = true);\n        \n        if (puppeteerParams.helpers) {\n            puppeteerParams.GET && puppeteerParams.GET.node && (puppeteerParams.GET.node = puppeteerParams.GET.node.replace(/cookie\\(([^)]+)\\)/, 'await page.cookies().then(jar => cookie($1, jar))'));\n            puppeteerParams.POST && puppeteerParams.POST.node && (puppeteerParams.POST.node = puppeteerParams.POST.node.replace(/cookie\\(([^)]+)\\)/, 'await page.cookies().then(jar => cookie($1, jar))'));\n            puppeteerParams.DEFAULT && puppeteerParams.DEFAULT.node && (puppeteerParams.DEFAULT.node = puppeteerParams.DEFAULT.node.replace(/cookie\\(([^)]+)\\)/, 'await page.cookies().then(jar => cookie($1, jar))'));\n            puppeteerParams.response && puppeteerParams.response.node && (puppeteerParams.response.node = puppeteerParams.response.node.replace(/cookie\\(([^)]+)\\)/, 'await page.cookies().then(jar => cookie($1, jar))'));\n        }\n\n        return puppeteerParams;\n    } catch (e) {\n        console.log(chalk.red.underline(\"browser.js: getPuppeteerConfigFromFile\\n\" + e.message));\n        process.exit(0);\n    }\n    \n}\n\n// Used when helpers is enabled to get cookie value from Node scope\nasync function cookie(cookie_name, jar){\n    if (!jar) return;\n    for (let i = 0; i < jar.length; i++) {\n        const cookie = jar[i];\n        if (cookie.name == cookie_name) return cookie.value\n    }\n}\n\nmodule.exports = { startPuppeteer, getPuppetteerConfigFromFile, puppeteerParamsProto }\n"
  },
  {
    "path": "src/deobfuscate.js",
    "content": "// Source from github.com/char/akamai-deobfuscator\n\nconst parser = require('@babel/parser');\nconst t = require('@babel/types');\nconst traverse = require('@babel/traverse').default;\nconst generate = require('@babel/generator').default;\nconst beautify = require('js-beautify');\n\nfunction deobfuscate(source) {\n\n    const ast = parser.parse(source);\n    let acArray = [];\n\n    traverse(ast, {\n        VariableDeclaration(path) {\n            // Find the variable with the identifier name \"_ac\". \n            // This holds all of the function & property names\n            // so that it can be used as a lookup table.\n            const functionNameMap = path.node.declarations.find(d => d.id.name === \"_ac\");\n\n            if(functionNameMap) {\n                // copy all of the values into a copy of the array\n                // so we can retrieve the proper function names later on\n                acArray = functionNameMap.init.elements.map(n => n.value);\n\n                // remove the _ac variable from the code because it's\n                // useless once we recover all of the names.\n                path.replaceWith(t.noop());\n            }\n\n        },\n        MemberExpression(path) {\n            // If we find a MemberExpression who's object's name equals with _ac\n            // replace it with the value retrieved from the _ac array.\n            // e.g.\n            // change document[_ac[183]] to document[\"activeElement\"]\n            if(path.node.object.name === \"_ac\") {\n                path.replaceWith(t.stringLiteral(acArray[path.node.property.value]));\n            }\n        }\n    })\n\n    // Do one more pass through the AST\n    // This changes all of the StringLiterals into Identifiers.\n    // This helps us recover the dot operator for function calls\n    // and property access instead of array lookup.\n    // e.g.\n    // document[\"activeElement\"] to document.activeElement\n    traverse(ast, {\n        MemberExpression(path) {\n            if(path.node.property.type === 'StringLiteral') {\n                path.replaceWith(t.memberExpression(path.node.object, t.identifier(path.node.property.value), false));\n            }\n        }\n    })\n\n    // Generate the new code given our modifications to the AST\n    // and beautify it to recover any indentation that may have\n    // been lost.\n    let deobfCode = generate(ast, {}, source).code;\n    deobfCode = beautify(deobfCode, {indent_size: 2, space_in_empty_paren: true});\n    \n    return deobfCode;\n}\n\nmodule.exports = { deobfuscate };"
  },
  {
    "path": "src/main.js",
    "content": "const fs = require('fs');\nconst chalk = require('chalk');\nconst beautify = require('js-beautify')\n\nconst readline = require('readline');\nconst rl = readline.createInterface({\n  input: process.stdin,\n  output: process.stdout\n});\n\nconst { deobfuscate } = require('./deobfuscate');\nconst { fetchAkamaiScript, getVersionFromFile, getAkamaiVersion, printColoredVersion } = require('./akamai-script');\nconst { toIf } = require('./ternary2if');\nconst { parse_sensor } = require('./parse-sensor');\nconst { startPuppeteer, getPuppetteerConfigFromFile } = require('./browser');\n\nconst config = require('../config.json');\n\nasync function saveDeofbfuscatedFile(target) {\n\n    if (!target.includes(\"http\")) target = \"https://\" + target;\n\n    const script_obf = (await fetchAkamaiScript(target));\n\n    if (!script_obf) {\n        console.log(chalk.red.underline(\"Could not fetch Akamai script on target\"));\n        process.exit(0);\n    }\n    \n    const ver = getVersionFromFile(script_obf.script);\n    const script = deobfuscate(script_obf.script);\n\n    console.log(\"Script version is: \" + printColoredVersion(ver));\n    console.log(\"Script location is: \" + script_obf.endpoint);\n\n    const filename = \"akamai-\" + ver + \"-\" + ((target.match(/\\./g) || []).length == 1 ? target.split('.')[0] : target.split('.')[1]).replace(\"https://\", \"\").replace(\"http://\", \"\") + \".js\";\n\n    try {\n        if(!fs.existsSync(__dirname + '/../scripts')) {\n            fs.mkdirSync(__dirname + '/../scripts');\n        }\n    } catch {\n        console.log(chalk.red.underline(\"Could not create ../scripts/ directory\"));\n        process.exit(0);\n    }\n\n    fs.writeFile(__dirname + '/../scripts/' + filename, script, function (err) {\n        if (err) { console.log(chalk.red.underline(\"Could not create ../scripts/\" + filename + \" file\") + \"\\n\" + err); process.exit(0); }\n\n        console.log(chalk.whiteBright.underline(filename) + \" successfully created in `scripts` folder\");\n        process.exit(0);\n    });\n}\n\nasync function checkVersion(target) {\n\n    if (!target.includes(\"http\")) target = \"https://\" + target;\n\n    return getAkamaiVersion(target, log=true);\n}\n\nasync function checkVersions() {\n    await Promise.all(config.sites.map(async (site) => {\n        await getAkamaiVersion(site, log = true);\n    }))\n}\n\nasync function ternary2if() {\n    rl.question('Ternary to convert: ', (ternary) => {\n        if (ternary == \"\") { rl.close(); process.exit(0); }\n\n        let js_raw = \"\";\n        try { js_raw = toIf(ternary); }\n        catch { console.log(chalk.red.underline(\"Malformed ternary expression\")); rl.close(); process.exit(0); }\n\n        console.log(chalk.whiteBright.bold(\"\\n-------------------------\"));\n        console.log(chalk.whiteBright.bold(beautify(js_raw, { indent_size: 2, space_in_empty_paren: true })));\n        console.log(chalk.whiteBright.bold(\"-------------------------\\n\"));\n\n        rl.close();\n    });\n}\n\nasync function sensorParsing() {\n    rl.question('Paste sensor_data here: ', (sensor) => {\n        if (sensor == \"\") { rl.close(); return; }\n\n        try {\n            const missing_values = parse_sensor(sensor)\n            \n            if (missing_values.length) console.log(chalk.red.bold(\"\\nMalformed sensor_data\"));\n            missing_values.forEach(missing_value => {\n                console.log(chalk.red.underline(\"Missing value: \" + missing_value));\n            });\n        }\n        catch { console.log(chalk.red.underline(\"Malformed sensor_data\")); }\n\n        rl.close();\n    });\n}\n\nasync function runPuppetter(config_file) {\n    if (!config_file.length) { console.log(chalk.whiteBright(\"You must provide a config file name\")); process.exit(0); }\n\n    config_file = __dirname + \"/../puppeteer_configs/\" + config_file + \".yaml\";\n    let puppeteerParams = getPuppetteerConfigFromFile(config_file);\n    \n    startPuppeteer(puppeteerParams);\n\n}\n\nmodule.exports = { saveDeofbfuscatedFile, checkVersion, checkVersions, ternary2if, sensorParsing, runPuppetter }"
  },
  {
    "path": "src/parse-sensor.js",
    "content": "const chalk = require('chalk');\nconst { default: Abck } = require(\"abck\");\n\nconst keys = {\n    '-1,2,-94,-100,': 'key_ver',\n    '-1,2,-94,-101,': 'browser_info',\n    '-1,2,-94,-105,': 'events',\n    '-1,2,-94,-102,': 'informinfo',\n    '-1,2,-94,-108,': 'forminfo',\n    '-1,2,-94,-110,': 'kact',\n    '-1,2,-94,-117,': 'mact',\n    '-1,2,-94,-111,': 'tact',\n    '-1,2,-94,-109,': 'doact',\n    '-1,2,-94,-114,': 'dmact',\n    '-1,2,-94,-103,': 'pact',\n    '-1,2,-94,-112,': 'vcact',\n    '-1,2,-94,-115,': 'URL',\n    '-1,2,-94,-106,': 'consistency_check',\n    '-1,2,-94,-119,': 'aj',\n    '-1,2,-94,-122,': 'mr',\n    '-1,2,-94,-123,': 'sed',\n    '-1,2,-94,-124,': 'challenge_1',\n    '-1,2,-94,-126,': 'challenge_2',\n    '-1,2,-94,-127,': 'challenge_3',\n    '-1,2,-94,-70,' : 'nav_perm',\n    '-1,2,-94,-80,' : 'fpVal',\n    '-1,2,-94,-116,': 'fpVal_Hash',\n    '-1,2,-94,-118,': 'o9',\n    '-1,2,-94,-129,': 'sensor_hash',\n    '-1,2,-94,-121,': 'more_fingerprinting'\n};\n\nconst values_gd = [\"xagg\", \"psub\", \"lang\", \"prod\", \"plen\", \"pen\", \"wen\", \"den\", \"z1\", \"d3\", \"availWidth\", \"availHeight\", \"width\", \"height\", \"innerWidth\", \"innerHeight\", \"outerWidth\", \"ua_hash\", \"random\", \"start_ts / 2\", \"brv\", \"loc\"];\nconst values_115 = [\"bmak.ke_vel + 1\", \"bmak.me_vel + 32\", \"bmak.te_vel + 32\", \"bmak.doe_vel\", \"bmak.dme_vel\", \"bmak.pe_vel\", \"k (vels sum)\", \"bmak.updatet()\",\"bmak.init_time\", \"bmak.start_ts\", \"bmak.fpcf.td\", \"bmak.d2\", \"bmak.ke_cnt\", \"bmak.me_cnt\", \"bmak.pi(bmak.d2 / 6)\", \"bmak.pe_cnt\", \"bmak.te_cnt\", \"bmak.get_cf_date() - bmak.start_ts\", \"bmak.ta\", \"bmak.n_ck\", \"bmak.get_cookie()\", \"bmak.ab(bmak.get_cookie())\", \"bmak.fpcf.rVal\", \"bmak.fpcf.rCFP\", \"bmak.fas()\", \"bmak.ff(80) + bmak.ff(105) + bmak.ff(90) + bmak.ff(116) + bmak.ff(69)\", \"bmak.jrs(bmak.start_ts)[0]\", \"bmak.jrs(bmak.start_ts)[1]\", \"hbs\", \"gwd\"];\nconst values_fpVal = [\"canvas(\\\"<@nv45. F1n63r,Pr1n71n6!\\\")\", \"canvas(\\\"m,Ev!xV67BaU> eh2m<f3AG3@\\\")\", \"bmak.runFonts ? bmak.altFonts ? t.fonts_optm() : t.fonts() : \\\"dis\\\"\", \"pluginInfo()\", \"sessionStorageKey()\", \"localStorageKey()\", \"indexedDbKey()\", \"timezoneOffsetKey()\", \"webrtcKey()\", \"screen.colorDepth ? screen.colorDepth : -1\", \"screen.pixelDepth ? screen.pixelDepth : -1\", \"navigator.cookieEnabled ? navigator.cookieEnabled : -1\", \"navigator.javaEnabled ? navigator.javaEnabled() : -1\", \"navigator.doNotTrack ? navigator.doNotTrack : -1\"];\nconst values_129 = [ \"fmh\", \"fmz\", \"ssh\", \"wv\", \"wr\", \"weh\", \"wl\"];\n\nconst mact  = { 1:\"mouseMove\", 2:\"mouseClick\", 3:\"mouseDown\", 4:\"mouseUp\" };\nconst tact  = { 1:\"touchMove\", 2:\"touchStart\", 3:\"touchEnd\" }\nconst pact  = { 3:\"pointerDown\", 4:\"pointerUp\" };\nconst kact  = { 1:\"keyDown\", 2:\"keyUp\", 3:\"keyPress\" };\nconst vcact = { 1:\"visibilityChange\",2:\"onBlur\",3:\"onFocus\" };\n\nfunction parse_sensor(sensor_data) {\n    const missing_values = sensorIntegrityCheck(sensor_data);\n    if (missing_values.length) return missing_values;\n\n    let parsed_sensor = {};\n    let actions = {};\n    let ta = 0, ke_vel = 0, me_vel = 0, pe_vel = 0, te_vel = 0, doe_vel = 0, dme_vel = 0;\n    \n    let previous_key_index = 0;\n    for (let key in keys) {\n\n        let sensor_variable = sensor_data.substring(previous_key_index, sensor_data.indexOf(key, previous_key_index));\n        previous_key_index = sensor_data.indexOf(key, previous_key_index) + key.length;\n\n        parsed_sensor[keys[key]] = sensor_variable;\n        if (sensor_variable == \"\") continue;\n\n        switch (keys[key]) {\n            case \"browser_info\":\n                const bd = (sensor_variable.match(/cpen(.*?)x12\\:(\\d+)/g,\"\"))[0];\n                const bd_values = [\"cpen\", \"i1\", \"dm\", \"cwen\", \"non\", \"opc\", \"fc\", \"sc\", \"wrc\", \"isc\", \"vib\", \"bat\", \"x11\", \"x12\"];\n                \n                const bd_val = bd.split(\",\");\n                for (let i = 0; i < bd_values.length; i++) {\n                    parsed_sensor[bd_values[i]] = bd_val[i];\n                }\n\n                const tmp = sensor_variable.replace(`,${bd},`,\"\").split(\",uaend,\");\n                parsed_sensor[\"user_agent\"] = tmp[0];\n\n                const gd_val = tmp[1].split(\",\");\n                for (let i = 0; i < values_gd.length; i++) {\n                    parsed_sensor[values_gd[i]] = gd_val[i];\n                }\n            break;\n\n            case \"consistency_check\": \n                const h_value = sensor_variable.split(\",\");\n                for (let i = 0; i < values_115.length; i++) {\n                    parsed_sensor[values_115[i]] = h_value[i];\n                }\n            break;\n\n            case \"fpVal\":\n                const fp_value = sensor_variable.split(\";\");\n                for (let i = 0; i < values_fpVal.length; i++) {\n                    parsed_sensor[values_fpVal[i]] = fp_value[i];\n                }\n            break;\n\n            case \"more_fingerprinting\":\n                const more_fp = sensor_variable.split(\",\");\n                for (let i = 0; i < 4; i++) {\n                    parsed_sensor[values_129[i]] = more_fp[i];\n                }\n                parsed_sensor[\"wr\"] = more_fp.slice(4, -3).join(\",\");\n                parsed_sensor[\"weh\"] = more_fp.slice(-2)[0];\n                parsed_sensor[\"wl\"] = more_fp.slice(-1)[0];\n            break;\n\n            case \"mact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[2]);\n                    me_vel += parseInt(act[0]) + parseInt(act[1]) + parseInt(act[2]) + parseInt(act[3]) + parseInt(act[4]);\n\n                    if (!actions[act[2]]) actions[act[2]] = \"\";\n                    actions[act[2]] += `${mact[act[1]]} x:${act[3]} y:${act[4]};`;\n                }\n            break;\n\n            case \"pact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[2]);\n                    pe_vel += parseInt(act[0]) + parseInt(act[1]) + parseInt(act[2]) + parseInt(act[3]) + parseInt(act[4]);\n                    \n                    if (!actions[act[2]]) actions[act[2]]=\"\";\n                    actions[act[2]] += `${pact[act[1]]} x:${act[3]} y:${act[4]};`;\n                }\n            break;\n\n            case \"tact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[2]);\n                    te_vel += parseInt(act[0]) + parseInt(act[1]) + parseInt(act[2]) + parseInt(act[3]) + parseInt(act[4]);\n                    \n                    if (!actions[act[2]]) actions[act[2]] = \"\";\n                    actions[act[2]] += `${tact[act[1]]} x:${act[3]} y:${act[4]};`;\n                }\n            break;\n\n            case \"doact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[1]);\n                    doe_vel += parseInt(act[0]) + parseInt(act[1]);\n                    \n                    if (!actions[act[1]]) actions[act[1]] = \"\";\n                    actions[act[1]] += 'deviceOrientation;';\n                }\n            break;\n\n            case \"dmact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[1]);\n                    dme_vel += parseInt(act[0]) + parseInt(act[1]);\n                    \n                    if (!actions[act[1]]) actions[act[1]] = \"\";\n                    actions[act[1]] += 'deviceMotion;';\n                }\n            break;\n\n            case \"vcact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    if (!actions[act[2]]) actions[act[2]] = \"\";\n                    actions[act[2]] += `${vcact[act[1]]};`;\n                }\t\t\t\t\t\n            break;\n\n            case \"kact\":\n                var acts = sensor_variable.split(\";\");\n                for (let a of acts) {\n                    var act = a.split(\",\");\n                    if (act.length == 1) break;\n\n                    ta += parseInt(act[2]);\n                    ke_vel += parseInt(act[0]) + parseInt(act[1]) + parseInt(act[2]) + parseInt(act[3]) + parseInt(act[5]) + parseInt(act[6]);\n\n                    if (!actions[act[2]]) actions[act[2]] = \"\";\n                    actions[act[2]]+=`${kact[act[1]]} keyCode:${act[3]};`;\n                }\n            break;\n        }\n    }\n    parsed_sensor[\"timings\"] = sensor_data.substring(previous_key_index + 1, sensor_data.length);\n\n    if (Object.keys(actions).length) console.log(chalk.magenta.bold(\"\\nTimings:\"))\n    let time = 0;\n    Object.keys(actions).sort((a, b) => a - b).forEach((a)=>{\n        const ts = a - time;\n        if (!isNaN(ts)) console.log(`[${ts} ms] - ${actions[a]}`);\n    })\n    \n    console.log(chalk.magenta.bold(\"\\nParsed sensor_data:\"));\n    prettyPrint(parsed_sensor, values_115, values_fpVal);\n    \n    // Challenge solutions check\n    if (parsed_sensor[\"challenge_1\"].length || parsed_sensor[\"challenge_2\"].length || parsed_sensor[\"challenge_3\"].length) {\n        console.log(chalk.magenta.bold(\"\\nChallenge checks:\"));\n\n        if (parsed_sensor[\"challenge_1\"].length) {\n            console.log(chalk.blueBright.underline(\"Challenge 1\"));\n            challengeCheckSolutions(parsed_sensor[\"challenge_1\"]);\n        }\n\n        if (parsed_sensor[\"challenge_2\"].length) {\n            console.log(chalk.blueBright.underline(\"Challenge 2\"));\n            challengeCheckSolutions(parsed_sensor[\"challenge_2\"]);\n        }\n\n        if (parsed_sensor[\"challenge_3\"].length) {\n            console.log(chalk.blueBright.underline(\"Challenge 3\"));\n            challengeCheckSolutions(parsed_sensor[\"challenge_3\"]);\n        }\n    }\n    \n    // Miscellaneous checks\n    console.log(chalk.magenta.bold(\"\\nMiscellaneous checks:\"));\n    \n    console.log(chalk.whiteBright.bold(\"ke_vel check:            \") + ((parsed_sensor[\"ke_vel + 1\"] - ke_vel - 1) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(ke_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"ke_vel + 1\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"me_vel check:            \") + ((parsed_sensor[\"me_vel + 32\"] - me_vel - 32) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(me_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"me_vel + 32\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"te_vel check:            \") + ((parsed_sensor[\"te_vel + 32\"] - te_vel - 32) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(te_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"te_vel + 32\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"pe_vel check:            \") + ((parsed_sensor[\"pe_vel\"] - pe_vel) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(pe_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"pe_vel\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"doe_vel check:           \") + ((parsed_sensor[\"doe_vel\"] - doe_vel) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(doe_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"doe_vel\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"dme_vel check:           \") + ((parsed_sensor[\"dme_vel\"] - dme_vel) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(dme_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"dme_vel\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"vel_sum check:           \") + ((parsed_sensor[\"vel_sum\"] - ke_vel - me_vel - te_vel - pe_vel - doe_vel - dme_vel) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(ke_vel + me_vel + te_veld + pe_vel + me_vel + doe_vel + dme_vel) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"vel_sum\"]) : chalk.green.bold(\"PASSED\")));\n    \n    console.log(chalk.whiteBright.bold(\"ta check:                \") + ((ta - parsed_sensor[\"ta\"]) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(ta) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"ta\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"d2/6 check:              \") + ((parsed_sensor[\"bmak.pi(bmak.d2 / 6)\"] != Math.floor(parsed_sensor[\"bmak.d2\"] / 6)) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(Math.floor(parsed_sensor[\"bmak.d2\"] / 6)) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"bmak.pi(bmak.d2 / 6)\"]) : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"d3 check:                \") + ((Math.abs(parsed_sensor[\"start_ts\"] % 1e7 - parsed_sensor[\"d3\"]) < 2) ? chalk.red.bold(\"FAILED Expected Math.abs(\") + chalk.magentaBright(parsed_sensor[\"start_ts\"] % 1e7 - parsed_sensor[\"d3\"]) + chalk.red.bold(\") > 2\") : chalk.green.bold(\"PASSED\")));\n    \n    console.log(chalk.whiteBright.bold(\"z1 check:                \") + ((parsed_sensor[\"z1\"] != parseInt(parsed_sensor[\"bmak.start_ts\"] / (2016 * 2016))) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(parseInt(parsed_sensor[\"bmak.start_ts\"] / (2016 * 2016))) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"z1\"]) : chalk.green.bold(\"PASSED\")));\n    \n    let aj_type = parsed_sensor[\"aj\"].split(',')[0];\n    let tst = parsed_sensor[\"timings\"].split(';')[1];\n    console.log(chalk.whiteBright.bold(\"tst check:               \") + ((aj_type != 0 && tst == -1) ? chalk.red.bold(\"FAILED \") + chalk.magentaBright(\"tst is -1 only for aj_type=0\") : chalk.green.bold(\"PASSED\")));\n    \n    console.log(chalk.whiteBright.bold(\"fpcf_td check:           \") + ((aj_type && parsed_sensor[\"fpcf_td\"] == -999999 || !aj_type && parsed_sensor[\"fpcf_td\"] != -999999) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(\"fpcf_td is -999999 only for aj_type=0\") : chalk.green.bold(\"PASSED\")));\n    console.log(chalk.whiteBright.bold(\"start_ts/2 check:        \") + ((parsed_sensor[\"start_ts / 2\"] != (parsed_sensor[\"bmak.start_ts\"] / 2)) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(parsed_sensor[\"bmak.start_ts\"] / 2) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"start_ts / 2\"]) : chalk.green.bold(\"PASSED\")));\n    \n    const ua_hash = Abck.ab(parsed_sensor[\"user_agent\"]);\n    console.log(chalk.whiteBright.bold(\"bmak.aur() hash check:   \") + ((parsed_sensor[\"ua_hash\"] != ua_hash) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(ua_hash) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"ua_hash\"]) : chalk.green.bold(\"PASSED\")));\n    \n    console.log(chalk.whiteBright.bold(\"bmak.hbs() check:        \") + ((parsed_sensor[\"hbs\"] != 0) ? chalk.red.bold(\"FAILED \") + chalk.magentaBright(\"bmak.hbs() != 0 indicates use of browser automation tools\") : chalk.green.bold(\"PASSED\")));\n\n    const fpVal_Hash = Abck.ab(parsed_sensor[\"fpVal\"]);\n    console.log(chalk.whiteBright.bold(\"fpValStr hash check:     \") + ((parsed_sensor[\"fpVal_Hash\"] != fpVal_Hash) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(fpVal_Hash) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"fpVal_Hash\"]) : chalk.green.bold(\"PASSED\")));\n    \n    const sensor_hash = 24 ^ Abck.ab(sensor_data.substring(sensor_data.indexOf(\"1.\"), sensor_data.indexOf(\"-1,2,-94,-70,\")));\n    console.log(chalk.whiteBright.bold(\"sensor hash (118) check: \") + ((parsed_sensor[\"sensor_hash\"] != sensor_hash) ? chalk.red.bold(\"FAILED Expected \") + chalk.magentaBright(sensor_hash) + chalk.red.bold(\" found \") + chalk.magentaBright(parsed_sensor[\"sensor_hash\"]) : chalk.green.bold(\"PASSED\")));\n\n\n    process.exit(0);\n}\n\nfunction prettyPrint(parsed_sensor) {\n    console.log(chalk.blueBright.underline(\"Browser information\"));\n    const browser_info = { \n        \"user_agent\":\"bmak.uar()\",\n        \"ua_hash\":\"bmak.ab(bmak.uar())\",\n        \"psub\":\"bmak.psub\",\n        \"lang\":\"bmak.lang\",\n        \"prod\":\"bmak.prod\",\n        \"plen\":\"bmak.plen\",\n        \"loc\": \"bmak.loc (always empty)\",\n        \"nav_perm\":\"bmak.nav_perm\",\n        \"brv\": \"bmak.brv\",\n    };\n    Object.keys(browser_info).forEach(value => {\n        let val = parsed_sensor[value];\n        if (value == \"loc\") val = val.replace(\"loc:\", \"\");\n\n        console.log(chalk.whiteBright(browser_info[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nAutomation detection\"));\n    const auto_detect = {\n        \"sed\":\"bmak.sed()\",\n        \"xagg\":\"bmak.xagg\",\n        \"pen\":\"bmak.pen\",\n        \"wen\":\"bmak.wen\",\n        \"den\":\"bmak.den\",\n        \"hbs\":\"bmak.hbs()\",\n        \"gwd\":\"bmak.gwd()\"\n    };\n    Object.keys(auto_detect).forEach(value => {\n        let val = parsed_sensor[value];\n        if (value == \"loc\") val = val.replace(\"loc:\", \"\");\n\n        console.log(chalk.whiteBright(auto_detect[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nBrowser detection (bmak.bd())\"));\n    const bd_values = { \n        \"cpen\":\"window.callPhantom\",\n        \"i1\":\"window.ActiveXObject\",\n        \"dm\":\"\\\"number\\\" == typeof document.documentMode\",\n        \"cwen\":\"window.chrome && window.chrome.webstore\",\n        \"non\":\"navigator.onLine\",\n        \"opc\":\"window.opera\",\n        \"fc\": \"\\\"undefined\\\" != typeof InstallTrigger\",\n        \"sc\":\"Object.prototype.toString.call(window.HTMLElement).indexOf(\\\"Constructor\\\")\",\n        \"wrc\": \"typeof window.RTCPeerConnection || \\\"function\\\" == typeof window.mozRTCPeerConnection || \\\"function\\\" == typeof window.webkitRTCPeerConnection\",\n        \"isc\":\"window.mozInnerScreenY\",\n        \"vib\":\"\\\"function\\\" == typeof navigator.vibrate\",\n        \"bat\":\"\\\"function\\\" == typeof navigator.getBattery\",\n        \"x11\":\"Array.prototype.forEach\",\n        \"x12\":\"\\\"FileReader\\\" in window\"\n    };\n    Object.keys(bd_values).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(bd_values[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nScreen size\"));\n    const screen_size = {\n        \"width\": \"window.screen.width\",\n        \"height\": \"window.screen.height\",\n        \"availWidth\": \"window.screen.availWidth\",\n        \"availHeight\": \"window.screen.availHeight\",\n        \"innerWidth\": \"window.innerWidth\",\n        \"innerHeight\": \"window.innerHeight\",\n        \"outerWidth\": \"window.outerWidth\"\n    };\n    Object.keys(screen_size).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(screen_size[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nEvents\"));\n    const events = {\n        \"events\": \"Special events status\",\n        \"kact\": \"bmak.kact (Keys events)\",\n        \"mact\": \"bmak.mact (Mouse events)\",\n        \"tact\": \"bmak.tact (Touch events)\",\n        \"pact\": \"bmak.pact (Pointer events)\",\n        \"doact\": \"bmak.doact (DeviceOrientation events)\",\n        \"dmact\": \"bmak.dmact (DeviceMovement events)\",\n        \"vcact\": \"bmak.vcact (VisibilityChange events)\"\n    }\n    Object.keys(events).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(events[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nCoherence check (115))\"));\n    values_115.forEach(value => {\n        if (value == \"hbs\" || value == \"gwd\") {\n            // Do not print them here as we already print them in Automation Detection section\n            return;\n        }\n\n        console.log(chalk.whiteBright(value + \": \" + chalk.cyanBright.bold(parsed_sensor[value])));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nChallenges\"));\n    const challenges = {\n        \"challenge_1\": \"S = bmak.mn_r[bmak.mn_get_current_challenges()[1]]\",\n        \"challenge_2\": \"E = bmak.mn_r[bmak.mn_get_current_challenges()[2]]\",\n        \"challenge_3\": \"M = bmak.mn_r[bmak.mn_get_current_challenges()[3]]\"\n    }\n    Object.keys(challenges).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(challenges[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nFingerprinting\"));\n    const fingerprinting = {\n        \"mr\": \"bmak.mr\",\n        \"fpVal\": \"bmak.fpcf.fpValstr\",\n        \"fpVal_Hash\": \"bmak.ab(bmak.fpcf.fpValstr)\"\n    }\n    Object.keys(fingerprinting).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(fingerprinting[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nbmak.fpcf.fpValstr (70)\"));\n    values_fpVal.forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(value + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nw (129)\"));\n    const more_fingerprinting = {\n        \"fmh\": \"bmak.fmh (installed fonts hash)\",\n        \"fmz\": \"bmak.fmz (window.devicePixelRatio)\",\n        \"ssh\": \"bmak.ssh (speech synthesis hash)\",\n        \"wv\": \"bmak.wv\",\n        \"wr\": \"bmak.wr\",\n        \"weh\": \"bmak.weh\",\n        \"wl\": \"bmak.wl\"\n    }\n    Object.keys(more_fingerprinting).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(more_fingerprinting[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nTarget info\"));\n    const website = {\n        \"URL\": \"bmak.getdurl()\",\n        \"informinfo\": \"bmak.informinfo\",\n        \"forminfo\": \"bmak.getforminfo()\"\n    }\n    Object.keys(website).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(website[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n\n    console.log(chalk.blueBright.underline(\"\\nSensor_data info\"));\n    const version_length = parsed_sensor[\"key_ver\"].split(\".\")[1].length + 2;\n    const api_key = parsed_sensor[\"key_ver\"].substring(0, parsed_sensor[\"key_ver\"].length - version_length);\n    const version = parsed_sensor[\"key_ver\"].substring(parsed_sensor[\"key_ver\"].length - version_length)\n    console.log(chalk.whiteBright(\"API public key hash: \" + chalk.cyanBright.bold(api_key)));\n    console.log(chalk.whiteBright(\"Akamai version: \" + chalk.cyanBright.bold(version)));\n\n    const aj_split = parsed_sensor[\"aj\"].split(',');\n    const aj_type = aj_split[0];\n    const aj_indx = aj_split[1];\n    console.log(chalk.whiteBright(\"bmak.aj_type: \") + chalk.cyanBright.bold(aj_type) + chalk.whiteBright.bold(\" -> \") + chalk.cyanBright.bold(getSensorType(aj_type)));\n    console.log(chalk.whiteBright(\"bmak.aj_indx: \" + chalk.cyanBright.bold(aj_indx)));\n\n    const timings_split = parsed_sensor[\"timings\"].split(';');\n    const sensor_data_gen_time = timings_split[0];\n    const startTracking_exec_time = timings_split[1];\n    const api_hash_gen_time = timings_split[2];\n    console.log(chalk.whiteBright(\"Sensor_data generation time (ms): \" + chalk.cyanBright.bold(sensor_data_gen_time)));\n    console.log(chalk.whiteBright(\"bmak.startTracking() execution time (ms): \" + chalk.cyanBright.bold(startTracking_exec_time)));\n    console.log(chalk.whiteBright(\"Public API key hash generation time (ms): \" + chalk.cyanBright.bold(api_hash_gen_time)));\n\n    console.log(chalk.blueBright.underline(\"\\nMiscellaneous variables\"));\n    const misc = {\n        \"z1\": \"bmak.z1 = bmak.pi(bmak.start_ts / (2016 * 2016))\",\n        \"d3\": \"bmak.d3 = bmak.get_cf_date() % 1e7\",\n        \"random\": \"randNum.toString().slice(0, 11) + bmak.pi(1e3 * randNum / 2)\",\n        \"o9\": \"bmak.o9\",\n        \"start_ts / 2\": \"bmak.start_ts() / 2\"\n    }\n    Object.keys(misc).forEach(value => {\n        let val = parsed_sensor[value];\n        console.log(chalk.whiteBright(misc[value] + \": \" + chalk.cyanBright.bold(val)));\n    });\n}\n\nfunction getSensorType(aj_type) {\n    switch (parseInt(aj_type)) {\n        case 0:\n            return \"bmak.startTracking(): Initialisation\";\n        case 1:\n            return \"bmak.cma(): MouseClick event\";\n        case 2:\n            return \"bmak.cpa(): PointerDown event\";\n        case 3:\n            return \"bmak.cka(): Keyboard event\";\n        case 5:\n            return \"bmak.cta(): TouchStart event\";\n        case 6:\n            return \"bmak.cdoa(): DeviceOrientation event\";\n        case 7:\n            return \"bmak.cdma(): DeviceMovement event\";\n        case 8:\n            return \"bmak.mn_w(): Challenge solving\";\n        case 9:\n            return \"bmak.calc_fp(): Fingerprinting computation\";\n        default:\n            return \"Unrecognized aj_type\";\n    }\n}\n\nfunction challengeCheckSolutions(challenge) {\n    const challenge_split = challenge.split(';');\n    const challenge_solutions = challenge_split[0].split(',');\n    const challenge_parameters = challenge_split[3].split(',');\n\n    const mn_abck = challenge_parameters[0];\n    const mn_ts = challenge_parameters[1];\n    const mn_psn = challenge_parameters[2];\n    const mn_cc = challenge_parameters[3];\n\n    console.log(chalk.whiteBright.bold(\"bmak.mn_abck: \") + chalk.cyanBright.bold(mn_abck));\n    console.log(chalk.whiteBright.bold(\"bmak.mn_ts: \") + chalk.cyanBright.bold(mn_ts));\n    console.log(chalk.whiteBright.bold(\"bmak.mn_psn: \") + chalk.cyanBright.bold(mn_psn));\n\n    challenge_solutions.forEach((solution, index) => {\n        const m = parseInt(challenge_parameters[5]) + index;\n        const r = mn_cc + m + solution;\n        const i = Abck.mn_s(r);\n\n        console.log((Abck.bdm(i, m) == 0 ? chalk.greenBright.bold(solution) : chalk.redBright.bold(solution)));\n    });\n}\n\nfunction sensorIntegrityCheck(sensor_data) {\n    const values = [ 100, 101, 105, 102, 108, 110, 117, 111, 109, 114, 103, 112, 115, 106,\n                     119, 122, 123, 124, 126, 127, 70, 80, 116, 118, 129, 121];\n    let missing_values = [];\n\n    for (value of values) if (!sensor_data.includes(\"-1,2,-94,-\" + value + \",\")) missing_values.push(value);\n\n    return missing_values;\n}\n\nmodule.exports = { parse_sensor }"
  },
  {
    "path": "src/ternary2if.js",
    "content": "// Source from https://github.com/RayBB/ternary-converter\n\nfunction toIf(str){\n    var num = 0;\n    \n    function getPart(str, partNumber) {\n      var questionsAndColons = []; // array for loop;\n      var piece = \"\"; // Part we are returning\n      for (var i = 0; i < str.length; i++) {\n        var cur = str[i];\n        if (cur == \"?\") questionsAndColons.push(cur);\n        else if (cur == \":\") {\n          questionsAndColons.pop();\n          if (questionsAndColons.length === 0) {\n            firstElse = str.substring(str.indexOf(\"?\") + 2, i-1);\n            lastElse = str.substring(i + 2);\n            break;\n          }\n        }\n      }\n      if (partNumber === 1) piece = str.substring(0, str.indexOf(\"?\")-1);\n      if (partNumber === 2) piece = firstElse;\n      if (partNumber === 3) piece = lastElse;\n      \n      num++;// This is to prevent infinite loops\n      if (num < 100) return wreckTheTern(piece);\n      \n    }\n    \n    function wreckTheTern(str) {\n      if (str.indexOf(\"?\") === -1) { /// not ternary ///////NEEDS UPDATE\n        return str;\n      } else {\n        return \"if (\" + getPart(str, 1) + \"){\\n\" + getPart(str, 2) + \";\\n}\" +\n          \"else {\\n\" + getPart(str, 3) + \";\\n}\";\n      }\n    }\n    \n    return wreckTheTern(str);\n    }\n\nmodule.exports = { toIf }"
  },
  {
    "path": "toolkit.js",
    "content": "#!/usr/bin/node\n\nconst { program } = require('commander');\nconst { saveDeofbfuscatedFile, checkVersion, checkVersions, ternary2if, sensorParsing, runPuppetter } = require('./src/main');\n\nasync function main() {\n    \n    program\n    .name(\"./toolkit.js\")\n    .usage(\"<option>\")\n    .option('-d, --deobfuscate <url>', \"Fetches a fresh and readable copy of the Akamai script\")\n    .option('-v, --version-check [url]', \"Checks current Akamai version on a large set of Akamai-protected websites\")\n    .option('-c, --custom-script <config_file>', \"Prompts a Puppeteer-controlled Chromium instance for script behavior analysis\")\n    .option('-t, --ternary', \"Turns a ternary expression to a regular if-statement\")\n    .option('-p, --parse', \"Parses and check sensor_data\")\n    .option('-h, --help', \"Displays list of available parameters\")\n\n    program.parse();\n\n    const options = program.opts();\n    \n    if (options.deobfuscate) await saveDeofbfuscatedFile(options.deobfuscate);\n\n    else if (options.versionCheck) {\n        if (options.versionCheck === true) { await checkVersions(); process.exit(0); }\n        else { await checkVersion(options.versionCheck); process.exit(0); }\n    }\n\n    else if (options.ternary) await ternary2if();\n\n    else if (options.customScript) await runPuppetter(options.customScript);\n\n    else if (options.parse) sensorParsing();\n\n    else if (options.help) program.help();\n\n    else program.help();\n}\n\nmain();"
  }
]