{
  "title": "Blacklight Inspection",
  "page_title": "Accueil - Cantal — CIDFF",
  "uri_ins": "https://cantal.cidff.info/",
  "uri_dest": "https://cantal.cidff.info/",
  "uri_redirects": [],
  "secure_connection": {},
  "host": "cantal.cidff.info",
  "config": {
    "emulateDevice": {
      "name": "iPhone 15 Pro",
      "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1",
      "viewport": {
        "width": 393,
        "height": 659,
        "deviceScaleFactor": 3,
        "isMobile": true,
        "hasTouch": true,
        "isLandscape": false
      }
    },
    "cleareCache": true,
    "captureHar": true,
    "captureLinks": false,
    "enableAdBlock": false,
    "saveBrowserProfile": false,
    "numPages": 2,
    "defaultTimeout": 35000,
    "defaultWaitUntil": "networkidle2",
    "headless": true,
    "headers": {},
    "extraChromiumArgs": [
      "--disable-features=TrackingProtection3pcd",
      "--website-analysis-scan=56a5bf80-adcf-42ae-8fee-ad1daf547ece"
    ],
    "extraPuppeteerOptions": {}
  },
  "browser": {
    "name": "Chromium",
    "version": "Chrome/127.0.6533.88",
    "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/127.0.0.0 Safari/537.36",
    "platform": {
      "name": "Linux",
      "version": "6.12.101+deb13-amd64"
    }
  },
  "script": {
    "host": "35d8fd4bd11b",
    "version": {
      "npm": "3.11.0",
      "commit": "dev"
    },
    "node_version": "v24.19.0"
  },
  "start_time": "2026-08-22T17:19:51.596Z",
  "end_time": "2026-08-22T17:20:04.975Z",
  "browsing_history": [
    "https://cantal.cidff.info/",
    "https://cantal.cidff.info/services/education-et-citoyennete/",
    "https://cantal.cidff.info/services/vie-familiale-et-parentalite/"
  ],
  "hosts": {
    "requests": {
      "first_party": [
        "cantal.cidff.info"
      ],
      "third_party": [
        "unpkg.com",
        "cdnjs.cloudflare.com",
        "b.basemaps.cartocdn.com",
        "c.basemaps.cartocdn.com",
        "a.basemaps.cartocdn.com"
      ]
    }
  },
  "reports": {
    "behaviour_event_listeners": {
      "MOUSE": {
        "https://cantal.cidff.info/wp-content/cache/autoptimize/autoptimize_single_fa03f187c5d2fdfce7632be6f0a06478.php?ver=1.9.4": [
          "scroll"
        ]
      },
      "KEYBOARD": {
        "data:text/javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBJZCA9ICJjaWRmZi1tYXAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwUmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWFwSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwRGV0YWlsc1JlZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaWRmZi1zaXRlLWRldGFpbHMnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vZGVsIDogWyBsYXQsIGxvbiwgdG9vbHRpcCwgc2l0ZURhdGEgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuMTEwODcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44Njk4MTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE1VUkFUYCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImlkIjoiMTIiLCJjZW50cmVfaWQiOiIyIiwibm9tIjoiTVVSQVQiLCJub21fc2x1ZyI6Im11cmF0IiwiYWRyZXNzZSI6Ik1haXNvbiBkZXMgc2VydmljZXMgLSA0IHJ1ZSBGYXVib3VyZyBOb3RyZS1EYW1lIiwiY3AiOiIxNTMwMCIsInZpbGxlIjoiTXVyYXQiLCJ2aWxsZV9zbHVnIjoibXVyYXQiLCJjaXR5X2lkIjoiNTM2MSIsImVtYWlsIjoiY2lkZmYuMTVAb3JhbmdlLmZyIiwidGVsZXBob25lIjoiMDQgNzEgMjAgMjggODgiLCJxcHYiOiIwIiwienJyIjoiMSIsImFjY3VlaWwiOiJNYWlzb24gZGUgc2VydmljZSIsImFjY3VlaWxfcHJlY2lzaW9uIjoiTWFpc29uIGRlcyBzZXJ2aWNlcyIsImhvcmFpcmVzIjoiU3VyIGRlbWFuZGVcblN1ciBkZW1hbmRlXG5QZXJtYW5lbmNlIHRcdTAwZTlsXHUwMGU5cGhvbmlxdWUgIGp1cmlkaXF1ZSA6ICBUb3VzIGxlcyBsdW5kaXMgYXByXHUwMGU4cy1taWRpLCBkZSAxNGggXHUwMGUwIDE3aCwgbGUgQ0lERkYgXG5kdSBDYW50YWwgYXNzdXJlIHVuZSBwZXJtYW5lbmNlIGp1cmlkaXF1ZS4gVW5lIGp1cmlzdGUgZXN0IFx1MDBlMCB2b3RyZSBkaXNwb3NpdGlvbiBwb3VyIHJcdTAwZTlwb25kcmUgXHUwMGUwIHRvdXRlcyB2b3MgcXVlc3Rpb25zIGp1cmlkaXF1ZXMuXG4/Pz8/IENvbnRhY3Rlei1ub3VzIGF1IDA0IDcxIDQ2IDg5IDUwIiwidm9sX2hyX2hlYmRvIjoiMzVIIiwiaWkiOiIxIiwiaWMiOiIwIiwiZSI6IjEiLCJ2IjoiMSIsInByZWNpc2lvbiI6IiIsImNhcnRvZ3JhcGhpZSI6IjEiLCJkZWxldGVkIjoiMCIsImNhZHJlMSI6IkwnYWNjXHUwMGU4cyBhdXggZHJvaXRzIHRvdXRlcyB0aFx1MDBlOW1hdGlxdWVzIGNvbmZvbmR1ZXMgKERcdTAwZTljcmV0IDIwMTUtMTc0NSBkdSAyMyBkXHUwMGU5Y2VtYnJlIDIwMTUgcmVsYXRpZiBcdTAwZTAgbCdhZ3JcdTAwZTltZW50KSIsImNhZHJlMiI6IkwnYWNjb21wYWduZW1lbnQgZW1wbG9pIiwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6bnVsbCwiY2FkcmU1IjpudWxsLCJhY2Nlc3NpYmlsaXRlMSI6IkF1ZGl0aWYiLCJhY2Nlc3NpYmlsaXRlMiI6Ik1lbnRhbFwvUHN5Y2hpcXVlIiwiYWNjZXNzaWJpbGl0ZTMiOiJNb3RldXIiLCJhY2Nlc3NpYmlsaXRlNCI6IlZpc3VlbCIsImFjY2Vzc2liaWxpdGU1IjpudWxsLCJ0eXBlMSI6bnVsbCwidHlwZTIiOiJUXHUwMGU5bFx1MDBlOXBob25pcXVlIiwidHlwZTMiOm51bGwsInR5cGU0IjpudWxsLCJtZnMiOm51bGwsImRlcGFydGVtZW50IjoiQ2FudGFsIiwicmVnaW9uIjoiQXV2ZXJnbmUtUmhcdTAwZjRuZS1BbHBlcyIsImNvb3JkcyI6eyJsYXQiOjQ1LjExMDg3LCJsb24iOjIuODY5ODE0LCJ1cmwiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5mclwvbWFwc1wvQDQ1LjExMDg3LDIuODY5ODE0LDE1eiJ9LCJzaXRlX2ludGVybmV0IjoiaHR0cDpcL1wvY2FudGFsLmNpZGZmLmluZm9cLyJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NS4wMzM5MDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wODE1MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFNBSU5ULUZMT1VSYCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImlkIjoiMTMiLCJjZW50cmVfaWQiOiIyIiwibm9tIjoiU0FJTlQtRkxPVVIiLCJub21fc2x1ZyI6InNhaW50ZmxvdXIiLCJhZHJlc3NlIjoiMyBhdmVudWUgZHUgTGlvcmFuIiwiY3AiOiIxNTEwMCIsInZpbGxlIjoiU2FpbnQtRmxvdXIiLCJ2aWxsZV9zbHVnIjoic2FpbnRmbG91ciIsImNpdHlfaWQiOiI1NDA5IiwiZW1haWwiOiJjaWRmZi4xNUBvcmFuZ2UuZnIiLCJ0ZWxlcGhvbmUiOiIwNCA3MSA0NiA4OSA1MCIsInFwdiI6IjAiLCJ6cnIiOiIwIiwiYWNjdWVpbCI6IkNlbnRyZSBDb21tdW5hbCBkJ0FjdGlvbiBTb2NpYWxlIENDQVMiLCJhY2N1ZWlsX3ByZWNpc2lvbiI6IiIsImhvcmFpcmVzIjoiSmV1ZGlzIC0gOWgwMCBcLyAxMmgwMCAxM2gwMCBcLyAxNmgwMCIsInZvbF9ocl9oZWJkbyI6IjEyaCBwYXIgbW9pcyIsImlpIjoiMSIsImljIjoiMSIsImUiOiIxIiwidiI6IjEiLCJwcmVjaXNpb24iOiIiLCJjYXJ0b2dyYXBoaWUiOiIxIiwiZGVsZXRlZCI6IjAiLCJjYWRyZTEiOiJMJ2FjY1x1MDBlOHMgYXV4IGRyb2l0cyB0b3V0ZXMgdGhcdTAwZTltYXRpcXVlcyBjb25mb25kdWVzIChEXHUwMGU5Y3JldCAyMDE1LTE3NDUgZHUgMjMgZFx1MDBlOWNlbWJyZSAyMDE1IHJlbGF0aWYgXHUwMGUwIGwnYWdyXHUwMGU5bWVudCkiLCJjYWRyZTIiOiJMJ2FjY29tcGFnbmVtZW50IGVtcGxvaSIsImNhZHJlMyI6IkwnYWNjb21wYWduZW1lbnQgdmlvbGVuY2UiLCJjYWRyZTQiOm51bGwsImNhZHJlNSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTEiOiJBdWRpdGlmIiwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjoiTW90ZXVyIiwiYWNjZXNzaWJpbGl0ZTQiOiJWaXN1ZWwiLCJhY2Nlc3NpYmlsaXRlNSI6bnVsbCwidHlwZTEiOiJQaHlzaXF1ZSIsInR5cGUyIjoiVFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSIsInR5cGUzIjpudWxsLCJ0eXBlNCI6bnVsbCwibWZzIjpudWxsLCJkZXBhcnRlbWVudCI6IkNhbnRhbCIsInJlZ2lvbiI6IkF1dmVyZ25lLVJoXHUwMGY0bmUtQWxwZXMiLCJjb29yZHMiOnsibGF0Ijo0NS4wMzM5MDEsImxvbiI6My4wODE1MjMsInVybCI6Imh0dHBzOlwvXC93d3cuZ29vZ2xlLmZyXC9tYXBzXC9ANDUuMDMzOTAxLDMuMDgxNTIzLDE1eiJ9LCJzaXRlX2ludGVybmV0IjoiaHR0cDpcL1wvY2FudGFsLmNpZGZmLmluZm9cLyJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NS4yMjA2MjcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zNDA4MjgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE1BVVJJQUNgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiaWQiOiIxNCIsImNlbnRyZV9pZCI6IjIiLCJub20iOiJNQVVSSUFDIiwibm9tX3NsdWciOiJtYXVyaWFjIiwiYWRyZXNzZSI6IlNlcnZpY2VzIFNvY2lhdXggTWFpc29uIGRlIGxhIFNvbGlkYXJpdFx1MDBlOSAtIDI4IFJ1ZSBFbmNoYWxhZGUiLCJjcCI6IjE1MjAwIiwidmlsbGUiOiJNYXVyaWFjIiwidmlsbGVfc2x1ZyI6Im1hdXJpYWMiLCJjaXR5X2lkIjoiNTM0MyIsImVtYWlsIjoiY2lkZmYuMTVAb3JhbmdlLmZyIiwidGVsZXBob25lIjoiMDQgNzEgNDYgODkgNTAiLCJxcHYiOiIwIiwienJyIjoiMSIsImFjY3VlaWwiOiJTZXJ2aWNlcyBTb2NpYXV4IE1haXNvbiBkZSBsYSBTb2xpZGFyaXRcdTAwZTkiLCJhY2N1ZWlsX3ByZWNpc2lvbiI6Ik1haXNvbiBkZSBsYSBTb2xpZGFyaXRcdTAwZTkiLCJob3JhaXJlcyI6IlZlbmRyZWRpIC0gOWgwMCBcLzEyaDAwXG5TdXIgZGVtYW5kZVxuUGVybWFuZW5jZSB0XHUwMGU5bFx1MDBlOXBob25pcXVlICBqdXJpZGlxdWUgOiAgVG91cyBsZXMgbHVuZGlzIGFwclx1MDBlOHMtbWlkaSwgZGUgMTRoIFx1MDBlMCAxN2gsIGxlIENJREZGIFxuZHUgQ2FudGFsIGFzc3VyZSB1bmUgcGVybWFuZW5jZSBqdXJpZGlxdWUuIFVuZSBqdXJpc3RlIGVzdCBcdTAwZTAgdm90cmUgZGlzcG9zaXRpb24gcG91ciByXHUwMGU5cG9uZHJlIFx1MDBlMCB0b3V0ZXMgdm9zIHF1ZXN0aW9ucyBqdXJpZGlxdWVzLlxuPz8/PyBDb250YWN0ZXotbm91cyBhdSAwNCA3MSA0NiA4OSA1MCIsInZvbF9ocl9oZWJkbyI6IjMgaGV1cmVzIHBhciBtb2lzIiwiaWkiOiIxIiwiaWMiOiIxIiwiZSI6IjEiLCJ2IjoiMSIsInByZWNpc2lvbiI6IiIsImNhcnRvZ3JhcGhpZSI6IjEiLCJkZWxldGVkIjoiMCIsImNhZHJlMSI6IkwnYWNjXHUwMGU4cyBhdXggZHJvaXRzIHRvdXRlcyB0aFx1MDBlOW1hdGlxdWVzIGNvbmZvbmR1ZXMgKERcdTAwZTljcmV0IDIwMTUtMTc0NSBkdSAyMyBkXHUwMGU5Y2VtYnJlIDIwMTUgcmVsYXRpZiBcdTAwZTAgbCdhZ3JcdTAwZTltZW50KSIsImNhZHJlMiI6IkwnYWNjb21wYWduZW1lbnQgZW1wbG9pIiwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6bnVsbCwiY2FkcmU1IjpudWxsLCJhY2Nlc3NpYmlsaXRlMSI6IkF1ZGl0aWYiLCJhY2Nlc3NpYmlsaXRlMiI6Ik1lbnRhbFwvUHN5Y2hpcXVlIiwiYWNjZXNzaWJpbGl0ZTMiOiJNb3RldXIiLCJhY2Nlc3NpYmlsaXRlNCI6IlZpc3VlbCIsImFjY2Vzc2liaWxpdGU1IjpudWxsLCJ0eXBlMSI6IlBoeXNpcXVlIiwidHlwZTIiOiJUXHUwMGU5bFx1MDBlOXBob25pcXVlIiwidHlwZTMiOm51bGwsInR5cGU0IjpudWxsLCJtZnMiOm51bGwsImRlcGFydGVtZW50IjoiQ2FudGFsIiwicmVnaW9uIjoiQXV2ZXJnbmUtUmhcdTAwZjRuZS1BbHBlcyIsImNvb3JkcyI6eyJsYXQiOjQ1LjIyMDYyNywibG9uIjoyLjM0MDgyOCwidXJsIjoiaHR0cHM6XC9cL3d3dy5nb29nbGUuZnJcL21hcHNcL0A0NS4yMjA2MjcsMi4zNDA4MjgsMTV6In0sInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9jYW50YWwuY2lkZmYuaW5mb1wvIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjcxMDE1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTk1NzQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBNQVVSU2AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJpZCI6IjE1IiwiY2VudHJlX2lkIjoiMiIsIm5vbSI6Ik1BVVJTIiwibm9tX3NsdWciOiJtYXVycyIsImFkcmVzc2UiOiJNYWlzb24gZGVzIHNlcnZpY2VzIC0gMyBwbGFjZSBkdSAxMSBub3ZlbWJyZSIsImNwIjoiMTU2MDAiLCJ2aWxsZSI6Ik1hdXJzIiwidmlsbGVfc2x1ZyI6Im1hdXJzIiwiY2l0eV9pZCI6IjUzNDUiLCJlbWFpbCI6ImNpZGZmLjE1QG9yYW5nZS5mciIsInRlbGVwaG9uZSI6IjA0IDcxIDQ2IDg3IDE3IiwicXB2IjoiMCIsInpyciI6IjEiLCJhY2N1ZWlsIjoiTWFpc29uIGRlcyBTZXJ2aWNlcyBhdSBQdWJsaWNzIiwiYWNjdWVpbF9wcmVjaXNpb24iOiJNYWlzb24gZGVzIHNlcnZpY2VzIiwiaG9yYWlyZXMiOiJNZXJjcmVkaXMgU2VtYWluZSBwYWlyZXMgLSA5aFwvMTFoMzBcblN1ciBkZW1hbmRlXG5QZXJtYW5lbmNlIHRcdTAwZTlsXHUwMGU5cGhvbmlxdWUgIGp1cmlkaXF1ZSA6ICBUb3VzIGxlcyBsdW5kaXMgYXByXHUwMGU4cy1taWRpLCBkZSAxNGggXHUwMGUwIDE3aCwgbGUgQ0lERkYgXG5kdSBDYW50YWwgYXNzdXJlIHVuZSBwZXJtYW5lbmNlIGp1cmlkaXF1ZS4gVW5lIGp1cmlzdGUgZXN0IFx1MDBlMCB2b3RyZSBkaXNwb3NpdGlvbiBwb3VyIHJcdTAwZTlwb25kcmUgXHUwMGUwIHRvdXRlcyB2b3MgcXVlc3Rpb25zIGp1cmlkaXF1ZXMuXG4/Pz8/IENvbnRhY3Rlei1ub3VzIGF1IDA0IDcxIDQ2IDg5IDUwIiwidm9sX2hyX2hlYmRvIjoiM2gzMCBwYXIgbW9pcyIsImlpIjoiMSIsImljIjoiMCIsImUiOiIxIiwidiI6IjEiLCJwcmVjaXNpb24iOiIiLCJjYXJ0b2dyYXBoaWUiOiIxIiwiZGVsZXRlZCI6IjAiLCJjYWRyZTEiOiJMJ2FjY1x1MDBlOHMgYXV4IGRyb2l0cyB0b3V0ZXMgdGhcdTAwZTltYXRpcXVlcyBjb25mb25kdWVzIChEXHUwMGU5Y3JldCAyMDE1LTE3NDUgZHUgMjMgZFx1MDBlOWNlbWJyZSAyMDE1IHJlbGF0aWYgXHUwMGUwIGwnYWdyXHUwMGU5bWVudCkiLCJjYWRyZTIiOiJMJ2FjY29tcGFnbmVtZW50IGVtcGxvaSIsImNhZHJlMyI6IkwnYWNjb21wYWduZW1lbnQgdmlvbGVuY2UiLCJjYWRyZTQiOm51bGwsImNhZHJlNSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTEiOiJBdWRpdGlmIiwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjoiTW90ZXVyIiwiYWNjZXNzaWJpbGl0ZTQiOiJWaXN1ZWwiLCJhY2Nlc3NpYmlsaXRlNSI6bnVsbCwidHlwZTEiOm51bGwsInR5cGUyIjoiVFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSIsInR5cGUzIjpudWxsLCJ0eXBlNCI6bnVsbCwibWZzIjoiRnJhbmNlIFNlcnZpY2UiLCJkZXBhcnRlbWVudCI6IkNhbnRhbCIsInJlZ2lvbiI6IkF1dmVyZ25lLVJoXHUwMGY0bmUtQWxwZXMiLCJjb29yZHMiOnsibGF0Ijo0NC43MTAxNSwibG9uIjoyLjE5NTc0NiwidXJsIjoiaHR0cHM6XC9cL3d3dy5nb29nbGUuZnJcL21hcHNcL0A0NC43MTAxNSwyLjE5NTc0NiwxNXoifSwic2l0ZV9pbnRlcm5ldCI6Imh0dHA6XC9cL2NhbnRhbC5jaWRmZi5pbmZvXC8ifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuMjgyMTAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjYyODczLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSSU9NIGVzIE1PTlRBR05FU2AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJpZCI6IjE2IiwiY2VudHJlX2lkIjoiMiIsIm5vbSI6IlJJT00gZXMgTU9OVEFHTkVTIiwibm9tX3NsdWciOiJyaW9tLWVzLW1vbnRhZ25lcyIsImFkcmVzc2UiOiJTZXJ2aWNlcyBTb2NpYXV4IE1haXNvbiBkZSBsYSBTb2xpZGFyaXRcdTAwZTkgLSBSdWUgTWFyZ3Vlcml0ZSBNZXluaWFsIiwiY3AiOiIxNTQwMCIsInZpbGxlIjoiUmlvbS1cdTAwZThzLU1vbnRhZ25lcyIsInZpbGxlX3NsdWciOiJyaW9tZXNtb250YWduZXMiLCJjaXR5X2lkIjoiNTM4NSIsImVtYWlsIjoiY2lkZmYuMTVAb3JhbmdlLmZyIiwidGVsZXBob25lIjoiMDQgNzEgNDYgODkgNTAiLCJxcHYiOiIwIiwienJyIjoiMSIsImFjY3VlaWwiOiJTZXJ2aWNlcyBTb2NpYXV4IE1haXNvbiBkZSBsYSBTb2xpZGFyaXRcdTAwZTkiLCJhY2N1ZWlsX3ByZWNpc2lvbiI6Ik1haXNvbiBkZSBsYSBTb2xpZGFyaXRcdTAwZTkiLCJob3JhaXJlcyI6IlN1ciBkZW1hbmRlXG5TdXIgZGVtYW5kZVxuUGVybWFuZW5jZSB0XHUwMGU5bFx1MDBlOXBob25pcXVlICBqdXJpZGlxdWUgOiAgVG91cyBsZXMgbHVuZGlzIGFwclx1MDBlOHMtbWlkaSwgZGUgMTRoIFx1MDBlMCAxN2gsIGxlIENJREZGIFxuZHUgQ2FudGFsIGFzc3VyZSB1bmUgcGVybWFuZW5jZSBqdXJpZGlxdWUuIFVuZSBqdXJpc3RlIGVzdCBcdTAwZTAgdm90cmUgZGlzcG9zaXRpb24gcG91ciByXHUwMGU5cG9uZHJlIFx1MDBlMCB0b3V0ZXMgdm9zIHF1ZXN0aW9ucyBqdXJpZGlxdWVzLlxuPz8/PyBDb250YWN0ZXotbm91cyBhdSAwNCA3MSA0NiA4OSA1MCIsInZvbF9ocl9oZWJkbyI6IjMgSCBwYXIgbW9pcyIsImlpIjoiMSIsImljIjoiMCIsImUiOiIwIiwidiI6IjEiLCJwcmVjaXNpb24iOiIiLCJjYXJ0b2dyYXBoaWUiOiIxIiwiZGVsZXRlZCI6IjAiLCJjYWRyZTEiOiJMJ2FjY1x1MDBlOHMgYXV4IGRyb2l0cyB0b3V0ZXMgdGhcdTAwZTltYXRpcXVlcyBjb25mb25kdWVzIChEXHUwMGU5Y3JldCAyMDE1LTE3NDUgZHUgMjMgZFx1MDBlOWNlbWJyZSAyMDE1IHJlbGF0aWYgXHUwMGUwIGwnYWdyXHUwMGU5bWVudCkiLCJjYWRyZTIiOiJMJ2FjY29tcGFnbmVtZW50IGVtcGxvaSIsImNhZHJlMyI6IkwnYWNjb21wYWduZW1lbnQgdmlvbGVuY2UiLCJjYWRyZTQiOm51bGwsImNhZHJlNSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTEiOiJBdWRpdGlmIiwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjoiTW90ZXVyIiwiYWNjZXNzaWJpbGl0ZTQiOiJWaXN1ZWwiLCJhY2Nlc3NpYmlsaXRlNSI6bnVsbCwidHlwZTEiOiJQaHlzaXF1ZSIsInR5cGUyIjoiVFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSIsInR5cGUzIjpudWxsLCJ0eXBlNCI6bnVsbCwibWZzIjpudWxsLCJkZXBhcnRlbWVudCI6IkNhbnRhbCIsInJlZ2lvbiI6IkF1dmVyZ25lLVJoXHUwMGY0bmUtQWxwZXMiLCJjb29yZHMiOnsibGF0Ijo0NS4yODIxMDEsImxvbiI6Mi42NjI4NzMsInVybCI6Imh0dHBzOlwvXC93d3cuZ29vZ2xlLmZyXC9tYXBzXC9ANDUuMjgyMTAxLDIuNjYyODczLDE1eiJ9LCJzaXRlX2ludGVybmV0IjoiaHR0cDpcL1wvY2FudGFsLmNpZGZmLmluZm9cLyJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC45MjA3ODUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40NDI4OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQXVyaWxsYWNgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiaWQiOiIxNzY4IiwiY2VudHJlX2lkIjoiMiIsIm5vbSI6IkF1cmlsbGFjIiwibm9tX3NsdWciOiJhdXJpbGxhYyIsImFkcmVzc2UiOiIzMiBydWUgQ2xhaXJ2aXZyZSIsImNwIjoiMTUwMDAiLCJ2aWxsZSI6IkF1cmlsbGFjIiwidmlsbGVfc2x1ZyI6ImF1cmlsbGFjIiwiY2l0eV9pZCI6IjUyNDIiLCJlbWFpbCI6ImNpZGZmLjE1QG9yYW5nZS5mciIsInRlbGVwaG9uZSI6IjA0IDcxIDQ2IDg5IDUwIiwicXB2IjoiMCIsInpyciI6IjAiLCJhY2N1ZWlsIjoiQ0lERkYgMTUiLCJhY2N1ZWlsX3ByZWNpc2lvbiI6IiIsImhvcmFpcmVzIjoiTHVuZGksIG1hcmRpIGV0IGpldWRpIDogOGgzMCAtIDEyaDAwIFwvIDEzaDAwIC0gMThoMDBcbk1lcmNyZWRpIDogOGgzMCAtIDEyaDAwIFwvIDEzaDMwIC0gMTdoMDBcblZlbmRyZWRpIDogOGgzMCAtIDEyaDAwIFwvIDEzaCAtIDE2aDAwIiwidm9sX2hyX2hlYmRvIjoiMzVoMDAgIiwiaWkiOiIxIiwiaWMiOiIxIiwiZSI6IjEiLCJ2IjoiMSIsInByZWNpc2lvbiI6IiIsImNhcnRvZ3JhcGhpZSI6IjEiLCJkZWxldGVkIjoiMCIsImNhZHJlMSI6IkwnYWNjXHUwMGU4cyBhdXggZHJvaXRzIHRvdXRlcyB0aFx1MDBlOW1hdGlxdWVzIGNvbmZvbmR1ZXMgKERcdTAwZTljcmV0IDIwMTUtMTc0NSBkdSAyMyBkXHUwMGU5Y2VtYnJlIDIwMTUgcmVsYXRpZiBcdTAwZTAgbCdhZ3JcdTAwZTltZW50KSIsImNhZHJlMiI6IkwnYWNjb21wYWduZW1lbnQgZW1wbG9pIiwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6IkwnYWNjb21wYWduZW1lbnQgcGFyZW50YWxpdFx1MDBlOSAoRUlDQ0YsIG1cdTAwZTlkaWF0aW9uIGZhbWlsaWFsZSkiLCJjYWRyZTUiOm51bGwsImFjY2Vzc2liaWxpdGUxIjoiQXVkaXRpZiIsImFjY2Vzc2liaWxpdGUyIjoiTWVudGFsXC9Qc3ljaGlxdWUiLCJhY2Nlc3NpYmlsaXRlMyI6Ik1vdGV1ciIsImFjY2Vzc2liaWxpdGU0IjoiVmlzdWVsIiwiYWNjZXNzaWJpbGl0ZTUiOm51bGwsInR5cGUxIjoiUGh5c2lxdWUiLCJ0eXBlMiI6IlRcdTAwZTlsXHUwMGU5cGhvbmlxdWUiLCJ0eXBlMyI6IlZpc2lvY29uZlx1MDBlOXJlbmNlIiwidHlwZTQiOiJBdXRyZSIsIm1mcyI6bnVsbCwiZGVwYXJ0ZW1lbnQiOiJDYW50YWwiLCJyZWdpb24iOiJBdXZlcmduZS1SaFx1MDBmNG5lLUFscGVzIiwiY29vcmRzIjp7ImxhdCI6NDQuOTIwNzg1LCJsb24iOjIuNDQyODksInVybCI6Imh0dHBzOlwvXC93d3cuZ29vZ2xlLmZyXC9tYXBzXC9ANDQuOTIwNzg1LDIuNDQyODksMTV6In0sInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9jYW50YWwuY2lkZmYuaW5mb1wvIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1LjI1MTQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTk3NzIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBNQVNTSUFDYCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImlkIjoiMzAwNiIsImNlbnRyZV9pZCI6IjIiLCJub20iOiJNQVNTSUFDIiwibm9tX3NsdWciOiJtYXNzaWFjIiwiYWRyZXNzZSI6Ik1haXNvbiBGcmFuY2UgU2VydmljZSAtIDYgcnVlIGR1IGRvY3RldXIgTWFsbGV0IiwiY3AiOiIxNTUwMCIsInZpbGxlIjoiTWFzc2lhYyIsInZpbGxlX3NsdWciOiJtYXNzaWFjIiwiY2l0eV9pZCI6IjUzNDIiLCJlbWFpbCI6ImNpZGZmLjE1QG9yYW5nZS5mciIsInRlbGVwaG9uZSI6IjA0IDcxIDQ2IDg5IDUwICIsInFwdiI6IjAiLCJ6cnIiOiIwIiwiYWNjdWVpbCI6IiIsImFjY3VlaWxfcHJlY2lzaW9uIjoiTWFpc29uIEZyYW5jZSBzZXJ2aWNlcyIsImhvcmFpcmVzIjoiU3VyIGRlbWFuZGVcblBlcm1hbmVuY2UgdFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSAganVyaWRpcXVlIDogIFRvdXMgbGVzIGx1bmRpcyBhcHJcdTAwZThzLW1pZGksIGRlIDE0aCBcdTAwZTAgMTdoLCBsZSBDSURGRiBcbmR1IENhbnRhbCBhc3N1cmUgdW5lIHBlcm1hbmVuY2UganVyaWRpcXVlLiBVbmUganVyaXN0ZSBlc3QgXHUwMGUwIHZvdHJlIGRpc3Bvc2l0aW9uIHBvdXIgclx1MDBlOXBvbmRyZSBcdTAwZTAgdG91dGVzIHZvcyBxdWVzdGlvbnMganVyaWRpcXVlcy5cbj8/Pz8gQ29udGFjdGV6LW5vdXMgYXUgMDQgNzEgNDYgODkgNTAiLCJ2b2xfaHJfaGViZG8iOiIiLCJpaSI6IjAiLCJpYyI6IjAiLCJlIjoiMCIsInYiOiIwIiwicHJlY2lzaW9uIjoiIiwiY2FydG9ncmFwaGllIjoiMSIsImRlbGV0ZWQiOiIwIiwiY2FkcmUxIjoiTCdhY2NcdTAwZThzIGF1eCBkcm9pdHMgdG91dGVzIHRoXHUwMGU5bWF0aXF1ZXMgY29uZm9uZHVlcyAoRFx1MDBlOWNyZXQgMjAxNS0xNzQ1IGR1IDIzIGRcdTAwZTljZW1icmUgMjAxNSByZWxhdGlmIFx1MDBlMCBsJ2Fnclx1MDBlOW1lbnQpIiwiY2FkcmUyIjoiTCdhY2NvbXBhZ25lbWVudCBlbXBsb2kiLCJjYWRyZTMiOiJMJ2FjY29tcGFnbmVtZW50IHZpb2xlbmNlIiwiY2FkcmU0IjpudWxsLCJjYWRyZTUiOm51bGwsImFjY2Vzc2liaWxpdGUxIjpudWxsLCJhY2Nlc3NpYmlsaXRlMiI6bnVsbCwiYWNjZXNzaWJpbGl0ZTMiOm51bGwsImFjY2Vzc2liaWxpdGU0IjpudWxsLCJhY2Nlc3NpYmlsaXRlNSI6IkNldHRlIHBlcm1hbmVuY2Ugblx1MjAxOWVzdCBwYXMgYWNjZXNzaWJsZSBhdXggcGVyc29ubmVzIGVuIHNpdHVhdGlvbiBkZSBoYW5kaWNhcCIsInR5cGUxIjoiUGh5c2lxdWUiLCJ0eXBlMiI6IlRcdTAwZTlsXHUwMGU5cGhvbmlxdWUiLCJ0eXBlMyI6bnVsbCwidHlwZTQiOm51bGwsIm1mcyI6IkZyYW5jZSBTZXJ2aWNlIiwiZGVwYXJ0ZW1lbnQiOiJDYW50YWwiLCJyZWdpb24iOiJBdXZlcmduZS1SaFx1MDBmNG5lLUFscGVzIiwiY29vcmRzIjp7ImxhdCI6NDUuMjUxNDYsImxvbiI6My4xOTc3MjMsInVybCI6Imh0dHBzOlwvXC93d3cuZ29vZ2xlLmZyXC9tYXBzXC9ANDUuMjUxNDYsMy4xOTc3MjMsMTV6In0sInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9jYW50YWwuY2lkZmYuaW5mb1wvIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjkyMDc4NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ0Mjg5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYW50YWwsIEF1cmlsbGFjYCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImlkIjoiMiIsIm5vbSI6IkNhbnRhbCwgQXVyaWxsYWMiLCJhZHJlc3NlIjoiMzIgY2l0XHUwMGU5IENsYWlydml2cmUiLCJjcCI6IjE1MDAwIiwidmlsbGUiOiJBdXJpbGxhYyIsInRlbGVwaG9uZSI6IjA0IDcxIDQ2IDg5IDUwIiwibWFpbCI6ImNpZGYuMTVAd2FuYWRvby5mciIsInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9jYW50YWwuY2lkZmYuaW5mb1wvIiwiYWNjZXNfZHJvaXQiOiJMJ2FjY1x1MDBlOHMgYXV4IGRyb2l0cyB0b3V0ZXMgdGhcdTAwZTltYXRpcXVlcyBjb25mb25kdWVzIChEXHUwMGU5Y3JldCAyMDE1LTE3NDUgZHUgMjMgZFx1MDBlOWNlbWJyZSAyMDE1IHJlbGF0aWYgXHUwMGUwIGwnYWdyXHUwMGU5bWVudCkiLCJlbXBsb2kiOiJMJ2FjY29tcGFnbmVtZW50IGVtcGxvaSIsInZpb2xlbmNlcyI6IkwnYWNjb21wYWduZW1lbnQgdmlvbGVuY2UiLCJwYXJlbnRhbGl0ZSI6IkwnYWNjb21wYWduZW1lbnQgcGFyZW50YWxpdFx1MDBlOSAoRUlDQ0YsIG1cdTAwZTlkaWF0aW9uIGZhbWlsaWFsZSkiLCJhdXRyZSI6bnVsbCwic2llZ2UiOnRydWUsImNvb3JkcyI6eyJsYXQiOjQ0LjkyMDc4NSwibG9uIjoyLjQ0Mjg5LCJ1cmwiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5mclwvbWFwc1wvQDQ0LjkyMDc4NSwyLjQ0Mjg5LDE1eiJ9LCJyZWdpb24iOiJBdXZlcmduZS1SaFx1MDBmNG5lLUFscGVzIiwiZGVwYXJ0ZW1lbnQiOiJDYW50YWwifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFpvb20gPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRab29tTW9iaWxlID0gNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5ab29tID0gNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhab29tID0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXAgPSBudWxsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRNYXAoc2VsZWN0ZWRDYXRlZ29yaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbmV3IEwubWFwKG1hcElkLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTC5jb250cm9sLnpvb20oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbXJpZ2h0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmFkZFRvKG1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9saWdodF9hbGwve3p9L3t4fS97eX17cn0ucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluWm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFpvb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuYWRkVG8obWFwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJDYXRlZ29yeTEgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXllckNhdGVnb3J5MiA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyQ2F0ZWdvcnkzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJDYXRlZ29yeTQgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXllckNhdGVnb3J5NSA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJzID0gbmV3IEwubWFya2VyQ2x1c3Rlckdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BpZGVyTGVnUG9seWxpbmVPcHRpb25zOiB7IHdlaWdodDogNjAwLCBjb2xvcjogJyMyMjInLCBvcGFjaXR5OiAwIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENsdXN0ZXJSYWRpdXM6IDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1haW5NYXJrZXJzID0gbmV3IEwubGF5ZXJHcm91cCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZHJlc3NQb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGFkZHJlc3NQb2ludHNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gYVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGFbM107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkcyA9IG5ldyBMLkxhdExuZyhhWzBdLCBhWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXIgPSB7IGRhdGE6IG5ldyBMLm1hcmtlcihjb29yZHMsIHsgdGl0bGUgfSksIHNpZWdlOiBkYXRhLnNpZWdlIH07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGFbJ2NhZHJlMSddIHx8IGRhdGFbJ2FjY2VzX2Ryb2l0J10gKSBsYXllckNhdGVnb3J5MS5wdXNoKG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsnY2FkcmUyJ10gfHwgZGF0YVsndmlvbGVuY2VzJ10gKSBsYXllckNhdGVnb3J5Mi5wdXNoKG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsnY2FkcmUzJ10gfHwgZGF0YVsnZW1wbG9pJ10gKSBsYXllckNhdGVnb3J5My5wdXNoKG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsnY2FkcmU0J10gfHwgZGF0YVsncGFyZW50YWxpdGUnXSApIGxheWVyQ2F0ZWdvcnk0LnB1c2gobWFya2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhWydjYWRyZTUnXSB8fCBkYXRhWydhdXRyZSddICkgbGF5ZXJDYXRlZ29yeTUucHVzaChtYXJrZXIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLmRhdGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnBhblRvKGNvb3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBSZWYuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ29uLW1hcmtlci1pbnRlcmFjdCcsIHsgZGV0YWlsOiBkYXRhIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5hZGRMYXllcihtYWluTWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmFkZExheWVyKG1hcmtlcnMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXllcnNUb0Rpc3BsYXkgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2F0ZWdvcmllcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGVjdGVkQ2F0ZWdvcmllcy5pbmNsdWRlcygxKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc1RvRGlzcGxheS5wdXNoKC4uLmxheWVyQ2F0ZWdvcnkxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZWN0ZWRDYXRlZ29yaWVzLmluY2x1ZGVzKDIpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzVG9EaXNwbGF5LnB1c2goLi4ubGF5ZXJDYXRlZ29yeTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxlY3RlZENhdGVnb3JpZXMuaW5jbHVkZXMoMykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNUb0Rpc3BsYXkucHVzaCguLi5sYXllckNhdGVnb3J5MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGVjdGVkQ2F0ZWdvcmllcy5pbmNsdWRlcyg0KSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc1RvRGlzcGxheS5wdXNoKC4uLmxheWVyQ2F0ZWdvcnk0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZWN0ZWRDYXRlZ29yaWVzLmluY2x1ZGVzKDUpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzVG9EaXNwbGF5LnB1c2goLi4ubGF5ZXJDYXRlZ29yeTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNUb0Rpc3BsYXkucHVzaCguLi5sYXllckNhdGVnb3J5MSwgLi4ubGF5ZXJDYXRlZ29yeTIsIC4uLmxheWVyQ2F0ZWdvcnkzLCAuLi5sYXllckNhdGVnb3J5NCwgLi4ubGF5ZXJDYXRlZ29yeTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJzVG9TaG93ID0gWy4uLm5ldyBTZXQobGF5ZXJzVG9EaXNwbGF5KV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Vyc1RvU2hvdy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtID0gbWFya2Vyc1RvU2hvd1tpXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtLnNpZWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmRhdGEuYWRkVG8obWFpbk1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5kYXRhLnNldFpJbmRleE9mZnNldCgxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uZGF0YS5zZXRJY29uKGNyZWF0ZU1haW5NYXJrZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmRhdGEuYWRkVG8obWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmRhdGEuc2V0SWNvbihjcmVhdGVNYXJrZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbWFya2Vycy5nZXRMYXllcnMoKS5sZW5ndGggPiAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmZpdEJvdW5kcyhtYXJrZXJzLmdldEJvdW5kcygpLCB7IHBhZGRpbmc6IFsgMTAsIDEwIF0gfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFpbk1hcmtlcnMuZ2V0TGF5ZXJzKClbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5zZXRWaWV3KG1haW5NYXJrZXJzLmdldExheWVycygpWzBdLmdldExhdExuZygpLCA1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnNldFZpZXcoWzQ2LjUsIDIuMzQ1NDkyM10sIDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlcmFjdGlvbiBydWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZGlzYWJsZSgpOyAvLyBEaXNhYmxlIHNjcm9sbCBpbnRlcmFjdGlvbiBhdCBmaXJzdAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsgLy8gUmVlbmFibGUgc2Nyb2xsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5kaXNhYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFJlZi5hZGRFdmVudExpc3RlbmVyKCdvbi1tYXJrZXItaW50ZXJhY3QnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaXRlRGV0YWlscyhlLmRldGFpbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZGVEZXRhaWxzRXZlbnRzID0gWydjbGljaycsICdtb3Zlc3RhcnQnXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVEZXRhaWxzRXZlbnRzLmZvckVhY2goZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5hZGRFdmVudExpc3RlbmVyKGUsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVTaXRlRGV0YWlscygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICJFc2NhcGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlU2l0ZURldGFpbHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0TWFwKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTWFya2VyKGNsYXNzTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTC5pY29uKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblVybDogJ2h0dHBzOi8vY2FudGFsLmNpZGZmLmluZm8vd3AtY29udGVudC90aGVtZXMvY2lkZmYtd3AvYXNzZXRzL2ltYWdlcy93ZWJwL2ljb24tcGlucy1zZWNvbmRhcnktZmlsbGVkLndlYnAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzE4LCAyM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1VybDogJ2h0dHBzOi8vY2FudGFsLmNpZGZmLmluZm8vd3AtY29udGVudC90aGVtZXMvY2lkZmYtd3AvYXNzZXRzL2ltYWdlcy93ZWJwL2ljb24tcGlucy1maWxsZWQtc2hhZG93LndlYnAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiBbMjUsIDI1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QW5jaG9yOiBbNCwgMTVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTWFpbk1hcmtlcigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEwuaWNvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Vcmw6ICdodHRwczovL2NhbnRhbC5jaWRmZi5pbmZvL3dwLWNvbnRlbnQvdGhlbWVzL2NpZGZmLXdwL2Fzc2V0cy9pbWFnZXMvd2VicC9pY29uLXBpbnMtZmlsbGVkLndlYnAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzI4LCAzM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1VybDogJ2h0dHBzOi8vY2FudGFsLmNpZGZmLmluZm8vd3AtY29udGVudC90aGVtZXMvY2lkZmYtd3AvYXNzZXRzL2ltYWdlcy93ZWJwL2ljb24tcGlucy1maWxsZWQtc2hhZG93LndlYnAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiBbMzAsIDMwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QW5jaG9yOiBbNCwgMTZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2V0U2l0ZURldGFpbHMoZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dTaXRlRGV0YWlscygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VlTW9yZUtleSA9IGRhdGEuc2llZ2UgPyBgJHtuZXcgU3RyaW5nKGRhdGEubm9tKS5yZXBsYWNlKC9cXHxcLHxccy9naSwgJy0nKS50b0xvd2VyQ2FzZSgpfS0ke2RhdGEuaWR9YCA6IGAke2RhdGEubm9tX3NsdWd9LSR7ZGF0YS5pZH1gCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLXRpdGxlJ10iKS5pbm5lckhUTUwgPSBkYXRhLm5vbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtc2VlLW1vcmUnXSIpLmhyZWYgPSBgaHR0cHM6Ly9jYW50YWwuY2lkZmYuaW5mby9saXN0ZS1kZXMtcGVybWFuZW5jZXMvP2RlcGFydGVtZW50PSR7ZGF0YS5kZXBhcnRlbWVudH0mY2VudHJlLWlkPSR7c2VlTW9yZUtleX1gOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5ob3JhaXJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtaG91cnMtd3JhcHBlciddIikuc3R5bGUuZGlzcGxheSA9ICdmbGV4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWhvdXJzJ10iKS5pbm5lckhUTUwgPSBkYXRhLmhvcmFpcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1ob3Vycy13cmFwcGVyJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWxvY2F0aW9uJ10iKS5pbm5lckhUTUwgPSBgJHtkYXRhLmFkcmVzc2V9LCAke2RhdGEuY3B9ICR7ZGF0YS52aWxsZX1gOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50ZWxlcGhvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLXRlbC13cmFwcGVyJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtdGVsJ10iKS5pbm5lckhUTUwgPSBkYXRhLnRlbGVwaG9uZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtdGVsLXdyYXBwZXInXSIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWRyZTEgfHwgZGF0YS5hY2Nlc19kcm9pdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtMSddIikuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWNhZHJlLTEnXSIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWRyZTIgfHwgZGF0YS5lbXBsb2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWNhZHJlLTInXSIpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS0yJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuY2FkcmUzIHx8IGRhdGEudmlvbGVuY2VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS0zJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtMyddIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhZHJlNCB8fCBkYXRhLnBhcmVudGFsaXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS00J10iKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtNCddIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaGlkZVNpdGVEZXRhaWxzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93U2l0ZURldGFpbHMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0TWFwTGF5b3V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVTaXRlRGV0YWlscygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5vZmYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9uLW1hcC1yZWZyZXNoIiwgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldE1hcExheW91dCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdENhdGVnb3JpZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFzdC1maWx0ZXItY2F0ZWdvcmllcycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGxhc3RDYXRlZ29yaWVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0TWFwKGxhc3RDYXRlZ29yaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdE1hcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9uLWNhdGVnb3J5LWZpbHRlci1jaGFuZ2UiLCAoZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcmllcyA9IGUuZGV0YWlsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlU2l0ZURldGFpbHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAub2ZmKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRNYXAoc2VsZWN0ZWRDYXRlZ29yaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICA=": [
          "keydown"
        ]
      }
    },
    "canvas_fingerprinters": {
      "data_url": {},
      "fingerprinters": [],
      "styles": {},
      "texts": {}
    },
    "canvas_font_fingerprinters": {
      "canvas_font": {},
      "text_measure": {}
    },
    "cookies": [],
    "fb_pixel_events": [],
    "tiktok_pixel_events": [],
    "twitter_pixel_events": [],
    "google_analytics_events": [],
    "key_logging": {},
    "session_recorders": {},
    "third_party_trackers": []
  }
}