{"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\src\\utils\\flow-display.js","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\utils\\flow-display.js","mtime":1619607677285},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICJFOi9ib21hbi1mcmFtd29yay9ydW95aS11aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbGwuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwoKZnVuY3Rpb24gRmxvd0Rpc3BsYXkoZGlhZ3JhbURpdiwgZXZlbnQpIHsKICB2YXIgRyA9IGdvLkdyYXBoT2JqZWN0Lm1ha2U7CiAgdmFyIF90aGlzID0ge307CiAgdmFyIF9kaXNwbGF5ZXIgPSB7fTsKICAvKiog5aSE55CG5Lyg5YWl5LqL5Lu2ICovCgogIGlmICghZXZlbnQpIHsKICAgIGV2ZW50ID0gewogICAgICBzaG93RWRpdE5vZGU6IGZ1bmN0aW9uIHNob3dFZGl0Tm9kZSgpIHt9LAogICAgICBTZWxlY3Rpb25EZWxldGVkOiBmdW5jdGlvbiBTZWxlY3Rpb25EZWxldGVkKCkge30sCiAgICAgIExpbmtEcmF3bjogZnVuY3Rpb24gTGlua0RyYXduKCkge30sCiAgICAgIGV4dGVybmFsb2JqZWN0c2Ryb3BwZWQ6IGZ1bmN0aW9uIGV4dGVybmFsb2JqZWN0c2Ryb3BwZWQoKSB7fQogICAgfTsKICB9CgogIGlmIChldmVudC5zaG93RWRpdE5vZGUpIHsKICAgIC8v57yW6L6R6IqC54K5CiAgICBfdGhpcy5zaG93RWRpdE5vZGUgPSBldmVudC5zaG93RWRpdE5vZGU7CiAgfQoKICBpZiAoZXZlbnQuU2VsZWN0aW9uRGVsZXRlZCkgewogICAgLy/liKDpmaTkuovku7YKICAgIF90aGlzLlNlbGVjdGlvbkRlbGV0ZWQgPSBldmVudC5TZWxlY3Rpb25EZWxldGVkOwogIH0KCiAgaWYgKGV2ZW50LkxpbmtEcmF3bikgewogICAgLy/nur/nmoTnlJ/miJDkuovku7YKICAgIF90aGlzLkxpbmtEcmF3biA9IGV2ZW50LkxpbmtEcmF3bjsKICB9CgogIGlmIChldmVudC5leHRlcm5hbG9iamVjdHNkcm9wcGVkKSB7CiAgICAvL+iKgueCueeahOeUn+aIkOS6i+S7tgogICAgX3RoaXMuZXh0ZXJuYWxvYmplY3RzZHJvcHBlZCA9IGV2ZW50LmV4dGVybmFsb2JqZWN0c2Ryb3BwZWQ7CiAgfQogIC8qKiAtLS0tLS0tLXB1YmxpYyBtZXRob2QtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiovCgogIC8qKg0KICAgKiDmmL7npLrmtYHnqIvlm74NCiAgICogQHBhcmFtIGZsb3dEYXRhICDmtYHnqIvlm75qc29u5pWw5o2uDQogICAqLwoKCiAgdGhpcy5sb2FkRmxvdyA9IGZ1bmN0aW9uIChmbG93RGF0YSkgewogICAgaWYgKCFmbG93RGF0YSkgcmV0dXJuOwogICAgX2Rpc3BsYXllci5tb2RlbCA9IGdvLk1vZGVsLmZyb21Kc29uKGZsb3dEYXRhKTsKICAgIHZhciBwb3MgPSBfZGlzcGxheWVyLm1vZGVsLm1vZGVsRGF0YS5wb3NpdGlvbjsgLy8gaWYgKHBvcykgX2Rpc3BsYXllci5pbml0aWFsUG9zaXRpb24gPSBnby5Qb2ludC5wYXJzZShwb3MpOwoKICAgIHRoaXMuZGlhZ3JhbSA9IF9kaXNwbGF5ZXI7IC8vIOabtOaUueaJgOaciei/nue6v+S4remXtOeahOaWh+acrOiDjOaZr+iJsgoKICAgIHNldExpbmtUZXh0QmcoKTsKICB9OwogIC8qKg0KICAgKiDojrflj5bmtYHnqIvlm77mlbDmja4NCiAgICogQHJldHVybnMgeyp9DQogICAqLwoKCiAgdGhpcy5nZXRGbG93RGF0YSA9IGZ1bmN0aW9uICgpIHsKICAgIF9kaXNwbGF5ZXIubW9kZWwubW9kZWxEYXRhLnBvc2l0aW9uID0gZ28uUG9pbnQuc3RyaW5naWZ5KF9kaXNwbGF5ZXIucG9zaXRpb24pOwogICAgcmV0dXJuIF9kaXNwbGF5ZXIubW9kZWwudG9Kc29uKCk7CiAgfTsKICAvKioNCiAgICog5Yqo55S75pi+56S65rWB56iL6Lev5b6E54q25oCBDQogICAqIHN0clN0ZXBLZXlzIOW3sue7j+mAmui/h+eahOa1geeoi+iKgueCuWtleQ0KICAgKiBpc0NvbXBsZXRlZCDmtYHnqIvmmK/lkKblt7LlrozmiJANCiAgICogaXNFbmQg5piv5ZCm5piv5bey5YWz6Zet5rWB56iL77yM5bey5YWz6Zet5rWB56iL55qE5b6F5aSE55CG6IqC54K55YiZ5Li65YWz6Zet54q25oCBDQogICAqLwoKCiAgdGhpcy5hbmltYXRlRmxvd1BhdGggPSBmdW5jdGlvbiAoc3RyU3RlcEtleXMsIGVycm9yUGF0aElkcywgaXNDb21wbGV0ZWQsIGlzRW5kKSB7CiAgICBpZiAoIXN0clN0ZXBLZXlzKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgc3RlcEtleXMgPSBzdHJTdGVwS2V5cy5zcGxpdCgnLCcpOyAvLyDmn6Xmib7miYDmnInjgJDlt7LlrozmiJDjgJHmraXpqqTvvJrjgJDlvIDlp4vjgJEtPiDjgJDlt7LlrozmiJDjgJHvvIhO5Liq77yJCgogICAgdmFyIHN0ZXBzID0gZmluZEZpbmlzaGVkU3RlcHMoc3RlcEtleXMsIGlzQ29tcGxldGVkKTsgLy8g6auY5Lqu5omA5pyJ4oCc5bey5a6M5oiQ4oCd5q2l6aqkCgogICAgc2hvd0ZpbmlzaGVkTm9kZXMoc3RlcHMpOyAvL+OAkOW8gOWni+OAkS0+IOOAkOW3suWujOaIkOOAke+8iE7kuKrvvIktPuOAkOW+heWkhOeQhuOAkQogICAgLy8g5oiWCiAgICAvL+OAkOW8gOWni+OAkS0+IOOAkOW3suWujOaIkOOAke+8iE7kuKrvvIktPuOAkOe7k+adn+OAkQoKICAgIHZhciBsYXN0U3RlcCA9IGZpbmRMYXN0U3RlcChzdGVwS2V5cywgc3RlcHMsIGlzQ29tcGxldGVkLCBpc0VuZCk7CiAgICBzdGVwcy5wdXNoKGxhc3RTdGVwKTsKCiAgICBpZiAoIWlzQ29tcGxldGVkKSB7CiAgICAgIC8vIOKAnOW+heWkhOeQhuKAneatpemqpO+8jOWKoOS4iumXqueDgeWKqOeUuwogICAgICBsb29wUnVubmluZ05vZGUobGFzdFN0ZXAsIGlzRW5kKTsKICAgIH0gLy8g5Zyo6L+e57q/5LiK5Yqg6Zeq54OB5Yqo55S7CgoKICAgIGlmIChlcnJvclBhdGhJZHMgJiYgZXJyb3JQYXRoSWRzLmxlbmd0aCA+IDApIHsKICAgICAgdmFyIGxpbmtzID0gZmluZEZpbmlzaGVkTGlua3MobGFzdFN0ZXApOwogICAgICBsb29wTGlua3MobGlua3MpOwogICAgfQogIH07IC8vIOW9k+WJjeeUu+W4g+WunuS+iwoKICAvKiogLS0tLS0tLS1wdWJsaWMgbWV0aG9kLS0tLS0tLS0tLS0tLWVuZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoqLwoKCiAgdGhpcy5kaWFncmFtID0gaW5pdChkaWFncmFtRGl2KTsKICAvKiogLS0tLS0tLS1wcml2YXRlIG1ldGhvZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKi8KCiAgLyoqDQogICAqIOWIneWni+WMlua1geeoi+iuvuiuoeWZqA0KICAgKiBAcGFyYW0gZGl2SWQg6K6+6K6h5ZmoRGl2DQogICAqLwoKICBmdW5jdGlvbiBpbml0KGRpdklkKSB7CiAgICBfZGlzcGxheWVyID0gRyhnby5EaWFncmFtLCBkaXZJZCwgewogICAgICBhbGxvd0Ryb3A6IGZhbHNlLAogICAgICBhbGxvd1NlbGVjdDogZmFsc2UsCiAgICAgIGFsbG93SG9yaXpvbnRhbFNjcm9sbDogdHJ1ZSwKICAgICAgYWxsb3dWZXJ0aWNhbFNjcm9sbDogdHJ1ZSwKICAgICAgYWxsb3dNb3ZlOiBmYWxzZSwKICAgICAgYWxsb3dMaW5rOiBmYWxzZSwKICAgICAgYWxsb3dSZWxpbms6IGZhbHNlLAogICAgICAiZHJhZ2dpbmdUb29sLmRyYWdzTGluayI6IGZhbHNlCiAgICB9KTsgLy8g5rWB56iL5q2l6aqk55qE5qC35byP5qih5p2/CgogICAgX2Rpc3BsYXllci5ub2RlVGVtcGxhdGUgPSBtYWtlTm9kZVRlbXBsYXRlKCk7IC8vIOWPjOWHu+S6i+S7tgoKICAgIF9kaXNwbGF5ZXIuYWRkRGlhZ3JhbUxpc3RlbmVyKCJPYmplY3REb3VibGVDbGlja2VkIiwgb25PYmplY3REb3VibGVDbGlja2VkKTsgLy8g5re75Yqg5byA5aeL6IqC54K5CgoKICAgIF9kaXNwbGF5ZXIubm9kZVRlbXBsYXRlTWFwLmFkZCgiU3RhcnQiLCBHKGdvLk5vZGUsICJTcG90IiwgewogICAgICBsb2NhdGlvblNwb3Q6IGdvLlNwb3QuQ2VudGVyCiAgICB9LCBuZXcgZ28uQmluZGluZygibG9jYXRpb24iLCAibG9jIiwgZ28uUG9pbnQucGFyc2UpLm1ha2VUd29XYXkoZ28uUG9pbnQuc3RyaW5naWZ5KSwgewogICAgICBzZWxlY3RhYmxlOiB0cnVlLAogICAgICBzZWxlY3Rpb25BZG9ybm1lbnRUZW1wbGF0ZTogbWFrZU5vZGVTZWxlY3Rpb25BZG9ybm1lbnRUZW1wbGF0ZSgpCiAgICB9LCBuZXcgZ28uQmluZGluZygiYW5nbGUiKS5tYWtlVHdvV2F5KCksIEcoZ28uUGFuZWwsICJBdXRvIiwgewogICAgICBuYW1lOiAiUEFORUwiCiAgICB9LCBuZXcgZ28uQmluZGluZygiZGVzaXJlZFNpemUiLCAic2l6ZSIsIGdvLlNpemUucGFyc2UpLm1ha2VUd29XYXkoZ28uU2l6ZS5zdHJpbmdpZnkpLCBHKGdvLlNoYXBlLCAiQ2lyY2xlIiwgLy8gZGVmYXVsdCBmaWd1cmUKICAgIHsKICAgICAgcG9ydElkOiAiIiwKICAgICAgLy8gdGhlIGRlZmF1bHQgcG9ydDogaWYgbm8gc3BvdCBvbiBsaW5rIGRhdGEsIHVzZSBjbG9zZXN0IHNpZGUKICAgICAgbmFtZTogIlBJUEUiLAogICAgICBmcm9tTGlua2FibGU6IHRydWUsCiAgICAgIHRvTGlua2FibGU6IHRydWUsCiAgICAgIGN1cnNvcjogInBvaW50ZXIiLAogICAgICBmaWxsOiAiIzVGNzc5MCIsCiAgICAgIC8vIGRlZmF1bHQgY29sb3IKICAgICAgc3Ryb2tlV2lkdGg6IDEsCiAgICAgIHN0cm9rZTogIiM1Rjc3OTAiCiAgICB9LCBuZXcgZ28uQmluZGluZygiZmlndXJlIiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2UiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZURhc2hBcnJheSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlV2lkdGgiKSwgbmV3IGdvLkJpbmRpbmcoImZpbGwiKSksIEcoZ28uVGV4dEJsb2NrLCB7CiAgICAgIGZvbnQ6ICJib2xkIDExcHQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIsCiAgICAgIG1hcmdpbjogOCwKICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsCiAgICAgIHN0cm9rZTogIndoaXRlIiwKICAgICAgb3ZlcmZsb3c6IGdvLlRleHRCbG9jay5PdmVyZmxvd0VsbGlwc2lzCiAgICB9LCBuZXcgZ28uQmluZGluZygidGV4dCIpLm1ha2VUd29XYXkoKSkgLy8gewogICAgLy8gICAgIHRvb2xUaXA6IEcoZ28uQWRvcm5tZW50LCAiQXV0byIsCiAgICAvLyAgICAgICAgIEcoZ28uU2hhcGUsIHsgZmlsbDogIiNGRkZGQ0MiIH0pLAogICAgLy8gICAgICAgICBHKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwKICAgIC8vICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IiwgIiIsIG5vZGVJbmZvKSkKICAgIC8vICAgICApCiAgICAvLyB9CiAgICApKSk7IC8vIOa3u+WKoOe7k+adn+iKgueCuQoKCiAgICBfZGlzcGxheWVyLm5vZGVUZW1wbGF0ZU1hcC5hZGQoIkVuZCIsIEcoZ28uTm9kZSwgIlNwb3QiLCB7CiAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJsb2NhdGlvbiIsICJsb2MiLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShnby5Qb2ludC5zdHJpbmdpZnkpLCB7CiAgICAgIHNlbGVjdGFibGU6IHRydWUsCiAgICAgIHNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlOiBtYWtlTm9kZVNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlKCkKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJhbmdsZSIpLm1ha2VUd29XYXkoKSwgRyhnby5QYW5lbCwgIkF1dG8iLCB7CiAgICAgIG5hbWU6ICJQQU5FTCIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJkZXNpcmVkU2l6ZSIsICJzaXplIiwgZ28uU2l6ZS5wYXJzZSkubWFrZVR3b1dheShnby5TaXplLnN0cmluZ2lmeSksIEcoZ28uU2hhcGUsICJDaXJjbGUiLCAvLyBkZWZhdWx0IGZpZ3VyZQogICAgewogICAgICBwb3J0SWQ6ICIiLAogICAgICAvLyB0aGUgZGVmYXVsdCBwb3J0OiBpZiBubyBzcG90IG9uIGxpbmsgZGF0YSwgdXNlIGNsb3Nlc3Qgc2lkZQogICAgICBuYW1lOiAiUElQRSIsCiAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSwKICAgICAgdG9MaW5rYWJsZTogdHJ1ZSwKICAgICAgY3Vyc29yOiAicG9pbnRlciIsCiAgICAgIGZpbGw6ICIjNUY3NzkwIiwKICAgICAgLy8gZGVmYXVsdCBjb2xvcgogICAgICBzdHJva2VXaWR0aDogMSwKICAgICAgc3Ryb2tlOiAiIzVGNzc5MCIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJmaWd1cmUiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlRGFzaEFycmF5IiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2VXaWR0aCIpLCBuZXcgZ28uQmluZGluZygiZmlsbCIpKSwgRyhnby5UZXh0QmxvY2ssIHsKICAgICAgZm9udDogImJvbGQgMTFwdCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiwKICAgICAgbWFyZ2luOiA4LAogICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCwKICAgICAgc3Ryb2tlOiAid2hpdGUiCiAgICB9LCBuZXcgZ28uQmluZGluZygidGV4dCIpLm1ha2VUd29XYXkoKSkgLy8gewogICAgLy8gICAgIHRvb2xUaXA6IEcoZ28uQWRvcm5tZW50LCAiQXV0byIsCiAgICAvLyAgICAgICAgIEcoZ28uU2hhcGUsIHsgZmlsbDogIiNGRkZGQ0MiIH0pLAogICAgLy8gICAgICAgICBHKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwKICAgIC8vICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IiwgIiIsIG5vZGVJbmZvKSkKICAgIC8vICAgICApCiAgICAvLyB9CiAgICApKSk7IC8vIOa1geeoi+i/nuaOpee6v+eahOagt+W8j+aooeadvwoKCiAgICBfZGlzcGxheWVyLmxpbmtUZW1wbGF0ZSA9IG1ha2VMaW5rVGVtcGxhdGUoKTsKICAgIHJldHVybiBfZGlzcGxheWVyOwogIH0KICAvKioNCiAgICog5q2l6aqk5Zu+55qE5qC35byP5qih5p2/DQogICAqIEByZXR1cm5zIHsqfQ0KICAgKi8KCgogIGZ1bmN0aW9uIG1ha2VOb2RlVGVtcGxhdGUoKSB7CiAgICB2YXIgX0c7CgogICAgcmV0dXJuIEcoZ28uTm9kZSwgIlNwb3QiLCB7CiAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJsb2NhdGlvbiIsICJsb2MiLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShnby5Qb2ludC5zdHJpbmdpZnkpLCB7CiAgICAgIHNlbGVjdGFibGU6IHRydWUsCiAgICAgIHNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlOiBtYWtlTm9kZVNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlKCkKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJhbmdsZSIpLm1ha2VUd29XYXkoKSwgRyhnby5QYW5lbCwgIkF1dG8iLCB7CiAgICAgIG5hbWU6ICJQQU5FTCIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJkZXNpcmVkU2l6ZSIsICJzaXplIiwgZ28uU2l6ZS5wYXJzZSkubWFrZVR3b1dheShnby5TaXplLnN0cmluZ2lmeSksIEcoZ28uU2hhcGUsICJSb3VuZGVkUmVjdGFuZ2xlIiwgLy8gZGVmYXVsdCBmaWd1cmUKICAgIHsKICAgICAgcG9ydElkOiAiIiwKICAgICAgLy8gdGhlIGRlZmF1bHQgcG9ydDogaWYgbm8gc3BvdCBvbiBsaW5rIGRhdGEsIHVzZSBjbG9zZXN0IHNpZGUKICAgICAgbmFtZTogIlBJUEUiLAogICAgICBmcm9tTGlua2FibGU6IHRydWUsCiAgICAgIHRvTGlua2FibGU6IHRydWUsCiAgICAgIGN1cnNvcjogInBvaW50ZXIiLAogICAgICBmaWxsOiAid2hpdGUiLAogICAgICAvLyBkZWZhdWx0IGNvbG9yCiAgICAgIHN0cm9rZVdpZHRoOiAxLAogICAgICBzdHJva2U6ICIjRENERUUyIgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImZpZ3VyZSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlIiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2VEYXNoQXJyYXkiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZVdpZHRoIiksIG5ldyBnby5CaW5kaW5nKCJmaWxsIikpLCBHKGdvLlRleHRCbG9jaywgKF9HID0gewogICAgICBmb250OiAiYm9sZCAxMXB0IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiLAogICAgICBtYXJnaW46IDgsCiAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5XcmFwRml0LAogICAgICBzdHJva2U6ICIjMzQzNDM0IiwKICAgICAgdGV4dEFsaWduOiAiY2VudGVyIiwKICAgICAgYWxpZ25tZW50OiBnby5TcG90LkNlbnRlciwKICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyCiAgICB9LCBfZGVmaW5lUHJvcGVydHkoX0csICJ3cmFwIiwgZ28uVGV4dEJsb2NrLldyYXBGaXQpLCBfZGVmaW5lUHJvcGVydHkoX0csICJtaW5TaXplIiwgbmV3IGdvLlNpemUoMTI2LCAyNykpLCBfZGVmaW5lUHJvcGVydHkoX0csICJtYXhTaXplIiwgbmV3IGdvLlNpemUoMTI2LCBOYU4pKSwgX0cpLCBuZXcgZ28uQmluZGluZygidGV4dCIpLm1ha2VUd29XYXkoKSkgLy8gewogICAgLy8gICAgIHRvb2xUaXA6IEcoZ28uQWRvcm5tZW50LCAiQXV0byIsCiAgICAvLyAgICAgICAgIEcoZ28uU2hhcGUsIHsgZmlsbDogIiNGRkZGQ0MiIH0pLAogICAgLy8gICAgICAgICBHKGdvLlRleHRCbG9jaywgeyBtYXJnaW46IDQgfSwKICAgIC8vICAgICAgICAgICAgIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IiwgIiIsIG5vZGVJbmZvKSkKICAgIC8vICAgICApCiAgICAvLyB9CiAgICApKTsKICB9CiAgLyoqDQogICAqIOmAieS4reiKgueCueeahOagt+W8jw0KICAgKiBAcmV0dXJucyB7Kn0NCiAgICovCgoKICBmdW5jdGlvbiBtYWtlTm9kZVNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlKCkgewogICAgcmV0dXJuIEcoZ28uQWRvcm5tZW50LCAiQXV0byIsIEcoZ28uU2hhcGUsIHsKICAgICAgZmlsbDogbnVsbCwKICAgICAgc3Ryb2tlOiAiZGVlcHNreWJsdWUiLAogICAgICBzdHJva2VXaWR0aDogMS41LAogICAgICBzdHJva2VEYXNoQXJyYXk6IFs0LCAyXQogICAgfSksIEcoZ28uUGxhY2Vob2xkZXIpKTsKICB9CiAgLyoqDQogICAqIOa1geeoi+WbvuWFg+e0oOeahOWPjOWHu+S6i+S7tg0KICAgKiBAcGFyYW0gZXYNCiAgICovCgoKICBmdW5jdGlvbiBvbk9iamVjdERvdWJsZUNsaWNrZWQoZXYpIHsKICAgIHZhciBwYXJ0ID0gZXYuc3ViamVjdC5wYXJ0OwogICAgc2hvd0VkaXROb2RlKHBhcnQpOwogIH0KICAvKioNCiAgICog57yW6L6R6IqC54K55L+h5oGvDQogICAqLwoKCiAgZnVuY3Rpb24gc2hvd0VkaXROb2RlKG5vZGUpIHsKICAgIF90aGlzLnNob3dFZGl0Tm9kZShub2RlKTsKCiAgICByZXR1cm4gbm9kZTsKICB9CiAgLyoqDQogICAqIHRvb2x0aXDkuIrmmL7npLrnmoTkv6Hmga8NCiAgICogQHBhcmFtIGQNCiAgICogQHJldHVybnMge3N0cmluZ30NCiAgICovCgoKICBmdW5jdGlvbiBub2RlSW5mbyhkKSB7CiAgICBpZiAoIWQua2V5KSByZXR1cm4gIuaXoGtleSI7CiAgICByZXR1cm4gIue8luWPt++8miIgKyBkLmtleTsKICB9CiAgLyoqDQogICAqIOWumuS5iei/nuaOpee6v+eahOagt+W8j+aooeadvw0KICAgKiBAcmV0dXJucyB7Kn0NCiAgICovCgoKICBmdW5jdGlvbiBtYWtlTGlua1RlbXBsYXRlKCkgewogICAgcmV0dXJuIEcoZ28uTGluaywgewogICAgICBzZWxlY3RhYmxlOiBmYWxzZQogICAgfSwgewogICAgICByZWxpbmthYmxlRnJvbTogdHJ1ZSwKICAgICAgcmVsaW5rYWJsZVRvOiB0cnVlLAogICAgICByZXNoYXBhYmxlOiB0cnVlCiAgICB9LCB7CiAgICAgIHJvdXRpbmc6IGdvLkxpbmsuQXZvaWRzTm9kZXMsCiAgICAgIGN1cnZlOiBnby5MaW5rLkp1bXBPdmVyLAogICAgICBjb3JuZXI6IDUsCiAgICAgIHRvU2hvcnRMZW5ndGg6IDQKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJsYXllck5hbWUiLCAiY29sb3IiKSwgbmV3IGdvLkJpbmRpbmcoInpPcmRlciIpLCAvLyBHKGdvLlNoYXBlLCB7IGlzUGFuZWxNYWluOiB0cnVlLCBzdHJva2U6ICJibGFjayIsIHN0cm9rZVdpZHRoOiAzIH0sIG5ldyBnby5CaW5kaW5nKCJzdHJva2UiKSxuZXcgZ28uQmluZGluZygiek9yZGVyIikpLAogICAgRyhnby5TaGFwZSwgewogICAgICBpc1BhbmVsTWFpbjogdHJ1ZSwKICAgICAgc3Ryb2tlOiAiI0Q1RDVENSIsCiAgICAgIHN0cm9rZVdpZHRoOiAyCiAgICB9KSwgRyhnby5TaGFwZSwgewogICAgICBpc1BhbmVsTWFpbjogdHJ1ZSwKICAgICAgc3Ryb2tlOiAiI0Q1RDVENSIsCiAgICAgIHN0cm9rZVdpZHRoOiAxLAogICAgICBuYW1lOiAiUElQRSIKICAgIH0pLCBHKGdvLlNoYXBlLCB7CiAgICAgIHRvQXJyb3c6ICJzdGFuZGFyZCIsCiAgICAgIHN0cm9rZTogbnVsbCwKICAgICAgZmlsbDogJyNENUQ1RDUnCiAgICB9LCBuZXcgZ28uQmluZGluZygic3Ryb2tlIiksIG5ldyBnby5CaW5kaW5nKCJmaWxsIiksIG5ldyBnby5CaW5kaW5nKCJ6T3JkZXIiKSksIEcoZ28uUGFuZWwsICJBdXRvIiwgRyhnby5TaGFwZSwgewogICAgICBmaWxsOiBudWxsLAogICAgICBzdHJva2U6IG51bGwKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJmaWxsIiwgInBGaWxsIiksIG5ldyBnby5CaW5kaW5nKCJ6T3JkZXIiKSksIEcoZ28uVGV4dEJsb2NrLCB7CiAgICAgIHRleHRBbGlnbjogImNlbnRlciIsCiAgICAgIGZvbnQ6ICIxMHB0IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWYiLAogICAgICBzdHJva2U6ICIjNTU1NTU1IiwKICAgICAgbWFyZ2luOiA0CiAgICB9LCBuZXcgZ28uQmluZGluZygidGV4dCIsICJ0ZXh0IiksIG5ldyBnby5CaW5kaW5nKCJ6T3JkZXIiKSkpKTsKICB9CiAgLyoqDQogICAqIOi/lOWbnuaJgOacieOAkOW3suWujOaIkOOAkeeahOatpemqpA0KICAgKiBAcGFyYW0gc3RlcEtleXMNCiAgICogQHBhcmFtIGlzQ29tcGxldGVkDQogICAqIEByZXR1cm5zIHtBcnJheX0NCiAgICovCgoKICBmdW5jdGlvbiBmaW5kRmluaXNoZWRTdGVwcyhzdGVwS2V5cywgaXNDb21wbGV0ZWQpIHsKICAgIHZhciBhcnJTdGVwID0gW107CiAgICBpZiAoIXN0ZXBLZXlzKSByZXR1cm4gYXJyU3RlcDsKICAgIHZhciBzdGFydFN0ZXAgPSBmaW5kU3RhcnRTdGVwKCk7IC8vIOOAkOW8gOWni+OAkeatpemqpAoKICAgIGFyclN0ZXAucHVzaChzdGFydFN0ZXApOyAvLyDjgJDlt7LlrozmiJDjgJHnmoTmraXpqqQKCiAgICB2YXIgZmluaXNoZWRDb3VudCA9IHN0ZXBLZXlzLmxlbmd0aCAtIDE7IC8vIOS4jeWMheWQq+acgOWQjuS4gOS4quKAnOW+heWkhOeQhuKAnOatpemqpAoKICAgIGlmIChpc0NvbXBsZXRlZCkgewogICAgICBmaW5pc2hlZENvdW50ID0gc3RlcEtleXMubGVuZ3RoOyAvLyDljIXlkKvmiYDmnInmraXpqqQKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbmlzaGVkQ291bnQ7IGkrKykgewogICAgICB2YXIgc3RlcEtleSA9IHN0ZXBLZXlzW2ldOwoKICAgICAgdmFyIHN0ZXAgPSBfZGlzcGxheWVyLmZpbmROb2RlRm9yS2V5KHN0ZXBLZXkpOwoKICAgICAgaWYgKCFzdGVwKSBjb250aW51ZTsKICAgICAgYXJyU3RlcC5wdXNoKHN0ZXApOwogICAgfQoKICAgIHJldHVybiBhcnJTdGVwOwogIH0KICAvKioNCiAgICog6auY5Lqu4oCc5bey5a6M5oiQ4oCd5q2l6aqkDQogICAqIEBwYXJhbSBzdGVwcw0KICAgKi8KCgogIGZ1bmN0aW9uIHNob3dGaW5pc2hlZE5vZGVzKHN0ZXBzKSB7CiAgICBpZiAoIXN0ZXBzKSByZXR1cm47CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgc3RlcCA9IHN0ZXBzW2ldOyAvLyDmraXpqqQo5Y676Zmk5byA5aeL5ZKM57uT5p2f6IqC54K5KQoKICAgICAgaWYgKHN0ZXAuZGF0YS50eXBlICE9PSAxICYmIHN0ZXAuZGF0YS50eXBlICE9PSAyKSB7CiAgICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAiZmlsbCIsICJyZ2JhKDksMTYxLDg1LDAuMDQpIik7CgogICAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KHN0ZXAuZGF0YSwgInN0cm9rZSIsICJyZ2JhKDksMTYxLDg1LDEpIik7CgogICAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KHN0ZXAuZGF0YSwgInN0cm9rZVdpZHRoIiwgMSk7CgogICAgICAgIF9kaXNwbGF5ZXIuY29tbWl0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwogICAgICB9CiAgICB9CiAgfQogIC8qKg0KICAgKg0KICAgKiDmn6Xmib7jgJDlvIDlp4vjgJHoioLngrkNCiAgICogQHBhcmFtIHt9IHN0ZXBzDQogICAqIEByZXR1cm5zIHt9DQogICAqLwoKCiAgZnVuY3Rpb24gZmluZFN0YXJ0U3RlcCgpIHsKICAgIHZhciBzdGFydFN0ZXAgPSBudWxsOwoKICAgIF9kaXNwbGF5ZXIubm9kZXMuZWFjaChmdW5jdGlvbiAoc3RlcCkgewogICAgICBpZiAoc3RlcC5kYXRhLmhhc093blByb3BlcnR5KCdrZXknKSAmJiBzdGVwLmRhdGEua2V5ID09IC0xKSB7CiAgICAgICAgc3RhcnRTdGVwID0gc3RlcDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0pOwoKICAgIHJldHVybiBzdGFydFN0ZXA7CiAgfQogIC8qKg0KICAgKiDlvqrnjq/pl6rng4HigJzlt7LlrozmiJDigJ3mraXpqqTkuYvpl7TnmoTov57nur8NCiAgICogQHBhcmFtIGxpbmtzDQogICAqLwoKCiAgZnVuY3Rpb24gbG9vcExpbmtzKGxpbmtzKSB7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgc2hvd0ZpbmlzaGVkTGlua3MobGlua3MpOyAvLyDigJzlt7LlrozmiJDigJ3ov57nur8KICAgIH0sIDMwMCk7CiAgfQogIC8qKg0KICAgKiDlvqrnjq/pl6rng4HigJzlvoXlpITnkIbigJ3mraXpqqQNCiAgICogQHBhcmFtIG5vZGUNCiAgICovCgoKICBmdW5jdGlvbiBsb29wUnVubmluZ05vZGUobm9kZSwgaXNFbmQpIHsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICBzaG93UnVubmluZ05vZGUobm9kZSwgaXNFbmQpOyAvLyBsb29wUnVubmluZ05vZGUobm9kZSk7CiAgICB9LCAyMDApOwogIH0KICAvKioNCiAgICog6auY5Lqu4oCc5b6F5aSE55CG4oCd5q2l6aqkDQogICAqIEBwYXJhbSBub2RlDQogICAqLwoKCiAgZnVuY3Rpb24gc2hvd1J1bm5pbmdOb2RlKG5vZGUsIGlzRW5kKSB7CiAgICBpZiAoIW5vZGUpIHJldHVybjsgLy8g5Y676Zmk57uT5p2f6IqC54K55ZKM5byA5aeL6IqC54K5CgogICAgaWYgKG5vZGUuZGF0YS50eXBlID09PSAxIHx8IG5vZGUuZGF0YS50eXBlID09PSAyKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoIWlzRW5kKSB7CiAgICAgIF9kaXNwbGF5ZXIuc3RhcnRUcmFuc2FjdGlvbigidmFjYXRlIik7CgogICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShub2RlLmRhdGEsICJmaWxsIiwgbm9kZS5kYXRhLmZpbGwgPT09ICIjZmY5MDAxIiA/ICIjZmZCMDAxIiA6ICJyZ2JhKDI1NSwxNTMsMCwwLjA0KSIpOwoKICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICB9IGVsc2UgewogICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkobm9kZS5kYXRhLCAiZmlsbCIsIG5vZGUuZGF0YS5maWxsID09PSAiI2ZmOTAwMSIgPyAiI2ZmQjAwMSIgOiAicmdiYSgyMzcsNjQsMjAsMC4wNCkiKTsKCiAgICAgIF9kaXNwbGF5ZXIuY29tbWl0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwogICAgfSAvLyDovrnmoYbliqDkuIrmtYHmsLTliqjnlLsKICAgIC8vIHZhciBzaGFwZSA9IG5vZGUuZmluZE9iamVjdCgiUElQRSIpOwogICAgLy8gdmFyIG9mZiA9IHNoYXBlLnN0cm9rZURhc2hPZmZzZXQgLSAyOwogICAgLy8gc2hhcGUuc3Ryb2tlRGFzaE9mZnNldCA9IChvZmYgPD0gMCkgPyAyMCA6IG9mZjsKCiAgfQogIC8qKg0KICAgKiDojrflj5bmnIDlkI7kuIDkuKrmraXpqqTvvIjjgJDlvoXlpITnkIbjgJHmiJbjgJDnu5PmnZ/jgJHvvIkNCiAgICogQHBhcmFtIHN0ZXBLZXlzDQogICAqIEBwYXJhbSBzdGVwcw0KICAgKiBAcGFyYW0gaXNDb21wbGV0ZWQNCiAgICogQHJldHVybnMgeyp9DQogICAqLwoKCiAgZnVuY3Rpb24gZmluZExhc3RTdGVwKHN0ZXBLZXlzLCBzdGVwcywgaXNDb21wbGV0ZWQsIGlzRW5kKSB7CiAgICB2YXIgbGFzdFN0ZXA7CgogICAgaWYgKCFpc0NvbXBsZXRlZCkgewogICAgICAvLyDojrflj5bigJzlvoXlpITnkIbigJ3mraXpqqQKICAgICAgdmFyIGxhc3RLZXkgPSBzdGVwS2V5c1tzdGVwS2V5cy5sZW5ndGggLSAxXTsKCiAgICAgIHZhciBzdGVwID0gX2Rpc3BsYXllci5maW5kTm9kZUZvcktleShsYXN0S2V5KTsKCiAgICAgIGlmIChzdGVwLmRhdGEudHlwZSA9PT0gMSB8fCBzdGVwLmRhdGEudHlwZSA9PT0gMikgewogICAgICAgIHJldHVybiBzdGVwOwogICAgICB9CgogICAgICBpZiAoIWlzRW5kKSB7CiAgICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlIiwgIiNGRjk5MDAiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlV2lkdGgiLCAxKTsgLy8gX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlRGFzaEFycmF5IiwgWzEwLCAxMF0pOwoKCiAgICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlIiwgIiNFRDQwMTQiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlV2lkdGgiLCAxKTsgLy8gX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlRGFzaEFycmF5IiwgWzEwLCAxMF0pOwoKCiAgICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICAgIH0gLy/jgJDlvIDlp4vjgJEtPiDjgJDlt7LlrozmiJDjgJHvvIhO5Liq77yJLT7jgJDlvoXlpITnkIbjgJEKCgogICAgICBsYXN0U3RlcCA9IHN0ZXA7CiAgICB9IGVsc2UgewogICAgICAvLyDnlKjmnIDlkI7kuIDmoLnov57nur/ojrflj5bjgJDnu5PmnZ/jgJHmraXpqqQKICAgICAgdmFyIGxhc3RGaW5pc2hlZFN0ZXAgPSBzdGVwc1tzdGVwcy5sZW5ndGggLSAxXTsKICAgICAgdmFyIGl0ID0gbGFzdEZpbmlzaGVkU3RlcC5maW5kTGlua3NPdXRPZigpOwogICAgICB2YXIgbGFzdExpbmsgPSBpdC5maXJzdCgpOwogICAgICB2YXIgZW5kU3RlcCA9IGxhc3RMaW5rLnRvTm9kZTsgLy/jgJDlvIDlp4vjgJEtPiDjgJDlt7LlrozmiJDjgJHvvIhO5Liq77yJLT7jgJDnu5PmnZ/jgJEKCiAgICAgIGxhc3RTdGVwID0gZW5kU3RlcDsKICAgIH0KCiAgICByZXR1cm4gbGFzdFN0ZXA7CiAgfQogIC8qKg0KICAgKiDmn6Xmib7plJnor6/ov57nur8NCiAgICogQHBhcmFtIHN0ZXBzDQogICAqIEByZXR1cm5zIHtBcnJheX0NCiAgICovCgoKICBmdW5jdGlvbiBmaW5kRmluaXNoZWRMaW5rcyhsYXN0U3RlcCkgewogICAgdmFyIGFyckxpbmtzID0gW107CiAgICBsYXN0U3RlcC5maW5kTGlua3NPdXRPZigpLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICBhcnJMaW5rcy5wdXNoKGl0ZW0pOwogICAgfSk7CiAgICByZXR1cm4gYXJyTGlua3M7CiAgfQogIC8qKg0KICAgKiDpq5jkuq7miYDmnInigJzlt7LlrozmiJDigJ3mraXpqqTnmoTov57nur8NCiAgICogQHBhcmFtIGxpbmtzDQogICAqLwoKCiAgZnVuY3Rpb24gc2hvd0ZpbmlzaGVkTGlua3MobGlua3MpIHsKICAgIGlmICghbGlua3MpIHJldHVybjsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgaSsrKSB7CiAgICAgIC8vIOi/nue6vwogICAgICB2YXIgbGluayA9IGxpbmtzW2ldOwoKICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKCiAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KGxpbmsuZGF0YSwgInN0cm9rZSIsIGxpbmsuZGF0YS5zdHJva2UgPT09ICIjNGZiYTRmIiA/ICIjNGZiYTRmIiA6ICIjRUQ0MDE0Iik7CgogICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShsaW5rLmRhdGEsICJmaWxsIiwgbGluay5kYXRhLmZpbGwgPT09ICIjNGZiYTRmIiA/ICIjNGZiYTRmIiA6ICIjRUQ0MDE0Iik7CgogICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShsaW5rLmRhdGEsICJ6T3JkZXIiLCA5OTkpOwoKICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7IC8vIOe9ruS6juacgOS4iuWxgu+8jOmYsuatouiiq+mBruaMoQoKCiAgICAgIF9kaXNwbGF5ZXIuc3RhcnRUcmFuc2FjdGlvbignbW9kaWZpZWQgek9yZGVyJyk7CgogICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShsaW5rLmRhdGEsICJ6T3JkZXIiLCAxKTsKCiAgICAgIF9kaXNwbGF5ZXIuY29tbWl0VHJhbnNhY3Rpb24oJ21vZGlmaWVkIHpPcmRlcicpOyAvLyDov57nur/liqDkuIrmtYHmsLTliqjnlLsKCgogICAgICB2YXIgc2hhcGUgPSBsaW5rLmZpbmRPYmplY3QoIlBJUEUiKTsKICAgICAgc2hhcGUuc3Ryb2tlID0gJyNFRDQwMTQnOwogICAgICB2YXIgb2ZmID0gc2hhcGUuc3Ryb2tlRGFzaE9mZnNldCAtIDI7CiAgICAgIHNoYXBlLnN0cm9rZURhc2hPZmZzZXQgPSBvZmYgPD0gMCA/IDIwIDogb2ZmOwogICAgfQogIH0KICAvKioNCiAgICog5pu05pS55omA5pyJ6L+e57q/5Lit6Ze055qE5paH5pys6IOM5pmv6ImyDQogICAqLwoKCiAgZnVuY3Rpb24gc2V0TGlua1RleHRCZygpIHsKICAgIF9kaXNwbGF5ZXIubGlua3MuZWFjaChmdW5jdGlvbiAobGluaykgewogICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgaWYgKGxpbmsuZGF0YS50ZXh0KSB7CiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkobGluay5kYXRhLCAicEZpbGwiLCB3aW5kb3cuZ28uR3JhcGhPYmplY3QubWFrZShnby5CcnVzaCwgIlJhZGlhbCIsIHsKICAgICAgICAgIDA6ICJyZ2IoMjQwLCAyNDAsIDI0MCkiLAogICAgICAgICAgMC4zOiAicmdiKDI0MCwgMjQwLCAyNDApIiwKICAgICAgICAgIDE6ICJyZ2JhKDI0MCwgMjQwLCAyNDAsIDApIgogICAgICAgIH0pKTsKICAgICAgfQoKICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICB9KTsKICB9CiAgLyoqIC0tLS0tLS0tcHJpdmF0ZSBtZXRob2QtLS0tLS0tLS0tLS0tLS0tLS1lbmQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiovCgoKICByZXR1cm4gdGhpczsKfQoKZXhwb3J0IGRlZmF1bHQgRmxvd0Rpc3BsYXk7"},null]}