{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\dataShare-fvue\\src\\store\\menu.js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\store\\menu.js","mtime":1733309212454},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiOwp2YXIgX2FjdGlvbnM7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29ydC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3Iuc29tZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCBwb3J0YWwgZnJvbSAiQC9hcGkvcG9ydGFsLmpzIjsKaW1wb3J0IHByb2Nlc3MgZnJvbSAiQC9hcGkvcHJvY2Vzcy5qcyI7CmltcG9ydCB7IGNoaWxkcmVuIH0gZnJvbSAnbWluLWRvY3VtZW50JzsKdmFyIHN0YXRlID0gewogIGFsbDogW10sCiAgLy/oj5zljZXmlbDmja4KICByZXNpZHVhbDogZmFsc2UsCiAgLy/miYvliqjkv67mlLnkuoboj5zljZXnmoTmoIforrAKICBzdGF0ZW1lbnQ6IFtdLAogIC8v5oql6KGo5Lit5b+D6I+c5Y2VCiAgcGFnaW5hdGlvbjoge30sCiAgLy/liIbpobXlj4LmlbAKICByb3dzOiBbXSwKICAvL+aWsOmXu+WKqOaAgeWIl+ihqOaVsOaNrgogIG5vdGljZTogW10sCiAgLy/lj5HmloflhazlkYrliJfooajmlbDmja4KICB0b3RhbDogMCwKICAvL+WIl+ihqOaVsOaNruaAu+adoeaVsAogIGZpbGVzRGF0YToge30sCiAgLy/mlrDpl7vlhazlkYror6bmg4UKICBtZWV0aW5nOiBbXSwKICAvL+S8muiuruWIl+ihqAogIG1lbnVNYXBzOiB7fSwKICAvL+WKqOaAgeiPnOWNleaVsOaNrgogIGN1cnJlbnRNZW51OiB7fSwKICAvL+W9k+WJjeS4gOe6p+iPnOWNlQogIGNvbHVtbkFsaWFzQXJ5OiBbXSwKICAvL+W9k+WJjeimgeivt+axguagj+ebruaVsOaNrueahOWIq+WQjeaVsOe7hAogIGNvbHVtblF1ZXJ5TWVyZ2luZzogbnVsbCwKICAvL+iOt+WPluagj+ebruaVsOaNrueahOivt+axguWQiOW5tuagh+iusOWPmOmHjwogIGNvbHVtbkRhdGE6IHt9LAogIC8v5ZCE5qCP55uu55qE5pWw5o2uCiAgY29sdW1uRGF0YUxvYWRlZEFsaWFzZXM6IG51bGwsCiAgc3lzTWVudXM6IFtdLAogIC8v57O757uf5ZCO5Y+w6I+c5Y2VCiAgZnJvbnRNZW51czogW10gLy/liY3lj7Doj5zljZUKfTsKdmFyIGdldHRlcnMgPSB7CiAgZ2V0Q29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YVthbGlhc107CiAgICB9OwogIH0sCiAgaGFzQ29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gaGFzQ29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YS5oYXNPd25Qcm9wZXJ0eShhbGlhcyk7CiAgICB9OwogIH0sCiAgZnJvbnRNZW51czogZnVuY3Rpb24gZnJvbnRNZW51cyhzdGF0ZSkgewogICAgcmV0dXJuIHN0YXRlLmZyb250TWVudXM7CiAgfSwKICBzeXNNZW51czogZnVuY3Rpb24gc3lzTWVudXMoc3RhdGUpIHsKICAgIHJldHVybiBzdGF0ZS5zeXNNZW51czsKICB9Cn07CnZhciBhY3Rpb25zID0gKF9hY3Rpb25zID0gewogIGFjdGlvblN5c01lbnVzOiBmdW5jdGlvbiBhY3Rpb25TeXNNZW51cyhfcmVmKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIGlmIChzdGF0ZS5tZW51cyAmJiBzdGF0ZS5tZW51cy5sZW5ndGggPj0gMSkgewogICAgICAgIHJlc29sdmUoKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgcG9ydGFsLmdldFN5c01lbnVzKCkudGhlbihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oImN1cnJlbnRTeXNNZW51cyIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgICAgICBjb21taXQoIm11dGF0aW9uU3lzTWVudXMiLCBkYXRhKTsKICAgICAgICByZXNvbHZlKGRhdGEpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgYWN0aW9uRnJvbnRNZW51czogZnVuY3Rpb24gYWN0aW9uRnJvbnRNZW51cyhfcmVmMikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIGlmIChzdGF0ZS5mcm9udE1lbnVzICYmIHN0YXRlLmZyb250TWVudXMubGVuZ3RoID49IDEpIHsKICAgICAgICByZXNvbHZlKHN0YXRlLmZyb250TWVudXMpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBwb3J0YWwuZ2V0RnJvbnRNZW51cygpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICB2YXIgX2RhdGFfJCwgX2RhdGFfJDI7CiAgICAgICAgdmFyIGRhdGFfID0gZGF0YS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuLmxlbmd0aDsKICAgICAgICB9KTsKICAgICAgICBjb21taXQoIm11dGF0aW9uRnJvbnRNZW51cyIsICgoX2RhdGFfJCA9IGRhdGFfWzBdKSA9PT0gbnVsbCB8fCBfZGF0YV8kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGF0YV8kLmNoaWxkcmVuKSB8fCBbXSk7CiAgICAgICAgcmVzb2x2ZSgoX2RhdGFfJDIgPSBkYXRhX1swXSkgPT09IG51bGwgfHwgX2RhdGFfJDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kYXRhXyQyLmNoaWxkcmVuKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOafpeivoumdmeaAgei1hOa6kOebruW9lQogIGdldFN0YXRpY01lbnVzOiBmdW5jdGlvbiBnZXRTdGF0aWNNZW51cyhfcmVmMykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYzLmNvbW1pdDsKICAgIHBvcnRhbC5nZXRNZW51cyhmdW5jdGlvbiAobWVudXMpIHsKICAgICAgY29tbWl0KCdhcHBlbmRNZW51cycsIG1lbnVzKTsKICAgIH0pOwogIH0sCiAgLy8g5p+l6K+i5rWB56iL5Lit5b+D5LiL55qE6LWE5rqQ55uu5b2VCiAgZ2V0U3luY01lbnVzOiBmdW5jdGlvbiBnZXRTeW5jTWVudXMoX3JlZjQsIGlzTGVhZGVyKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjQuY29tbWl0OwogICAgcG9ydGFsLmdldFN1Yk1lbnVzKCdmcm9udF9tZW51JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHByb2Nlc3MuZ2V0U2VjcmV0YXJ5QnlVc2VySWQoZnVuY3Rpb24gKHJlcykgewogICAgICAgIHZhciBpc0xlYWRlciA9IGZhbHNlOwogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAvL+ayoeaciemihuWvvAogICAgICAgICAgaXNMZWFkZXIgPSB0cnVlOwogICAgICAgIH0KICAgICAgICByZXNwb25zZS5pc0xlYWRlciA9IGlzTGVhZGVyOwogICAgICAgIGNvbW1pdCgnc2V0U3luY01lbnVzJywgcmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5bmtYHnqIvkuK3lv4PkuIvnmoTotYTmupDnm67lvZUKICBnZXREZWZhdWx0TWVudXM6IGZ1bmN0aW9uIGdldERlZmF1bHRNZW51cyhfcmVmNSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWY1LmNvbW1pdDsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHBvcnRhbC5nZXRTdWJNZW51cygnZnJvbnRfbWVudScsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHByb2Nlc3MuZ2V0U2VjcmV0YXJ5QnlVc2VySWQoZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgdmFyIGlzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAvL+ayoeaciemihuWvvAogICAgICAgICAgICBpc0xlYWRlciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXNwb25zZS5pc0xlYWRlciA9IGlzTGVhZGVyOwogICAgICAgICAgY29tbWl0KCdzZXRTeW5jTWVudXMnLCByZXNwb25zZSk7CiAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvLyDlvZPliY3nlKjmiLfmjqXlj6PmnYPpmZAKICBnZXRDdXJyZW50VXNlck1ldGhvZEF1dGg6IGZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyTWV0aG9kQXV0aChfcmVmNikgewogICAgdmFyIGNvbW1pdCA9IF9yZWY2LmNvbW1pdDsKICAgIHBvcnRhbC5nZXRDdXJyZW50VXNlck1ldGhvZEF1dGgoZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5hbGxNZXRob2QgPSByZXNwb25zZS5kYXRhLmFsbE1ldGhvZDsKICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLm1ldGhvZEF1dGggPSByZXNwb25zZS5kYXRhLmN1clVzZXJNZXRob2Q7CiAgICB9KTsKICB9LAogIC8vIOW9k+WJjeiPnOWNlQogIGdldEFsbG1lbnVzOiBmdW5jdGlvbiBnZXRBbGxtZW51cyhfcmVmNywgbWVudSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWY3LmNvbW1pdDsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHJlc29sdmUoc3RhdGUuYWxsKTsKICAgIH0pOwogIH0sCiAgLy8g5b2T5YmN6I+c5Y2VCiAgZ2V0Q3VycmVudE1lbnU6IGZ1bmN0aW9uIGdldEN1cnJlbnRNZW51KF9yZWY4LCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjguY29tbWl0OwogICAgY29tbWl0KCdzZXRDdXJyZW50TWVudScsIG1lbnUpOwogIH0sCiAgLy8g6L+95Yqg5LiA5Liq55uu5b2V5Yiw55uu5b2V6I+c5Y2V5LitCiAgYXBwZW5kMm1lbnVzOiBmdW5jdGlvbiBhcHBlbmQybWVudXMoX3JlZjksIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmOS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjkuc3RhdGU7CiAgICBjb21taXQoJ2FwcGVuZE1lbnVzJywgW21lbnVdKTsKICB9LAogIC8vIOS4tOaXtuiuvue9ruS4gOS4quS/ruaUuei/h+eahOebruW9leiPnOWNlQogIHNldFRlbXBsYXRlTWVudXM6IGZ1bmN0aW9uIHNldFRlbXBsYXRlTWVudXMoX3JlZjEwLCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEwLmNvbW1pdDsKICAgIGNvbW1pdCgnc2V0TWVudXMnLCBtZW51KTsKICAgIGNvbW1pdCgnc2V0UmVzaWR1YWwnLCB0cnVlKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAvLyAwLjXnp5LlkI7ph43nva7miYvliqjkv67mlLnnm67lvZXmlbDmja7nmoTmoIforrAKICAgICAgY29tbWl0KCdzZXRSZXNpZHVhbCcsIGZhbHNlKTsKICAgIH0sIDUwMCk7CiAgfSwKICAvLyDkuLTml7borr7nva7kuIDkuKrkv67mlLnov4fnmoTnm67lvZXoj5zljZUKICBzZXRDb3B5TWVudXM6IGZ1bmN0aW9uIHNldENvcHlNZW51cyhfcmVmMTEsIG1lbnUpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTEuY29tbWl0OwogICAgY29tbWl0KCdzZXRNZW51cycsIG1lbnUpOwogIH0sCiAgLy/mm7TmlrDmr4/pobXkuIvmi4nmmL7npLrmlbDmja4KICBzZXRQYWdpbmF0aW9uU2l6ZTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblNpemUoX3JlZjEyLCBzaXplKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEyLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTIuc3RhdGU7CiAgICBjb21taXQoInNldFBhZ2luYXRpb25TaXplIiwgc2l6ZSk7CiAgfSwKICAvL+abtOaWsOesrOWHoOmhtQogIHNldFBhZ2luYXRpb25QYWdlTnVtOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uUGFnZU51bShfcmVmMTMsIGN1cnJlbnRQYWdlKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEzLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTMuc3RhdGU7CiAgICBjb21taXQoInNldFBhZ2luYXRpb25QYWdlTnVtIiwgY3VycmVudFBhZ2UpOwogIH0sCiAgLy/ojrflj5bmlrDpl7vliqjmgIHliJfooagKICBnZXROZXdzUGFnaW5hdGlvbjogZnVuY3Rpb24gZ2V0TmV3c1BhZ2luYXRpb24oX3JlZjE0LCBwYWdpbmF0aW9uKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE0LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTQuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBwb3J0YWwuZ2V0TmV3c1BhZ2luYXRpb24ocGFnaW5hdGlvbiwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgY29tbWl0KCJzZXRSb3dzIiwgcmVzcG9uc2UuZGF0YS5yb3dzKTsgLy/mlrDpl7vliqjmgIHmlbDmja4KICAgICAgICBjb21taXQoInNldFRvdGFsIiwgcmVzcG9uc2UuZGF0YS50b3RhbCk7IC8v5oC75pWw5o2u5p2h5pWwCiAgICAgICAgdmFyIHBhZ2VCZWFuID0gewogICAgICAgICAgInBhZ2UiOiByZXNwb25zZS5kYXRhLnBhZ2UsCiAgICAgICAgICAicGFnZVNpemUiOiByZXNwb25zZS5kYXRhLnBhZ2VTaXplLAogICAgICAgICAgInNob3dUb3RhbCI6ICJ0cnVlIgogICAgICAgIH07IC8v5o6l5Y+j5pa55rOV6L+U5Zue55qEcGFnZUJlYW4KICAgICAgICBjb21taXQoInNldFBhZ2luYXRpb24iLCBwYWdlQmVhbik7IC8v5pi+56S656ys5Yeg6aG177yM5q+P6aG15pi+56S65aSa5bCR5p2hCiAgICAgICAgcmVzb2x2ZSgpOwogICAgICB9KTsKICAgIH0pOwogIH0KfSwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9hY3Rpb25zLCAiZ2V0TmV3c1BhZ2luYXRpb24iLCBmdW5jdGlvbiBnZXROZXdzUGFnaW5hdGlvbihfcmVmMTUsIHR5cGUpIHsKICB2YXIgY29tbWl0ID0gX3JlZjE1LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjE1LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZ2V0TmV3c1BhZ2luYXRpb24odHlwZSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7CiAgICB9KTsKICB9KTsKfSksICJnZXROZXdzUGFnaW5hdGlvbkxpc3QiLCBmdW5jdGlvbiBnZXROZXdzUGFnaW5hdGlvbkxpc3QoX3JlZjE2LCBwYWdpbmF0aW9uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYxNi5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYxNi5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldE5ld3NQYWdpbmF0aW9uTGlzdChwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY29tbWl0KCJzZXRSb3dzIiwgcmVzcG9uc2UuZGF0YS5yb3dzKTsKICAgICAgY29tbWl0KCJzZXRUb3RhbCIsIHJlc3BvbnNlLmRhdGEudG90YWwpOwogICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgInBhZ2UiOiByZXNwb25zZS5kYXRhLnBhZ2UsCiAgICAgICAgInBhZ2VTaXplIjogcmVzcG9uc2UuZGF0YS5wYWdlU2l6ZSwKICAgICAgICAic2hvd1RvdGFsIjogInRydWUiCiAgICAgIH07CiAgICAgIGNvbW1pdCgic2V0UGFnaW5hdGlvbiIsIHBhZ2VCZWFuKTsKICAgICAgcmVzb2x2ZSgpOwogICAgfSk7CiAgfSk7Cn0pLCAiZ2V0Tm90aWNlUGFnaW5hdGlvbiIsIGZ1bmN0aW9uIGdldE5vdGljZVBhZ2luYXRpb24oX3JlZjE3LCBwYWdpbmF0aW9uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYxNy5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYxNy5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldE5vdGljZVBhZ2luYXRpb24ocGFnaW5hdGlvbiwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIGNvbW1pdCgic2V0Tm90aWNlIiwgcmVzcG9uc2UuZGF0YS5yb3dzKTsgLy/lj5HmloflkYrmlbDmja4KICAgICAgY29tbWl0KCJzZXRUb3RhbCIsIHJlc3BvbnNlLmRhdGEudG90YWwpOyAvL+aAu+aVsOaNruadoeaVsAogICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgInBhZ2UiOiByZXNwb25zZS5kYXRhLnBhZ2UsCiAgICAgICAgInBhZ2VTaXplIjogcmVzcG9uc2UuZGF0YS5wYWdlU2l6ZSwKICAgICAgICAic2hvd1RvdGFsIjogInRydWUiCiAgICAgIH07IC8v5o6l5Y+j5pa55rOV6L+U5Zue55qEcGFnZUJlYW4KICAgICAgY29tbWl0KCJzZXRQYWdpbmF0aW9uIiwgcGFnZUJlYW4pOyAvL+aYvuekuuesrOWHoOmhte+8jOavj+mhteaYvuekuuWkmuWwkeadoQogICAgICByZXNvbHZlKCk7CiAgICB9KTsKICB9KTsKfSksICJnZXROZXdzQnlJZCIsIGZ1bmN0aW9uIGdldE5ld3NCeUlkKF9yZWYxOCwgcGFnaW5hdGlvbikgewogIHZhciBjb21taXQgPSBfcmVmMTguY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMTguc3RhdGU7CiAgcG9ydGFsLmdldE5ld3NCeUlkKHBhZ2luYXRpb24sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgaWYgKHJlc3BvbnNlLmRhdGEuZmZqKSB7CiAgICAgIHZhciBmaWxlcyA9IEpTT04ucGFyc2UocmVzcG9uc2UuZGF0YS5mZmopOwogICAgICByZXNwb25zZS5kYXRhLmZmaiA9IGZpbGVzOwogICAgfQogICAgY29tbWl0KCJzZXRGaWxlc0RhdGEiLCByZXNwb25zZS5kYXRhKTsgLy/lj5HmloflkYrmlbDmja4KICB9KTsKfSksICJvbmxpbmVQcmV2aWV3IiwgZnVuY3Rpb24gb25saW5lUHJldmlldyhfcmVmMTksIGlkKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYxOS5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYxOS5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLm9ubGluZVByZXZpZXcoaWQsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpOwogICAgfSk7CiAgfSk7Cn0pLCAiZG93bmxvYWRGaWxlIiwgZnVuY3Rpb24gZG93bmxvYWRGaWxlKF9yZWYyMCwgaWQpIHsKICB2YXIgY29tbWl0ID0gX3JlZjIwLmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjIwLnN0YXRlOwogIHBvcnRhbC5kb3dubG9hZEZpbGUoaWQpOwp9KSwgImRvd25sb2FkSW1nIiwgZnVuY3Rpb24gZG93bmxvYWRJbWcoX3JlZjIxLCB1cmwpIHsKICB2YXIgY29tbWl0ID0gX3JlZjIxLmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjIxLnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZG93bmxvYWRJbWcodXJsLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICB9KTsKICB9KTsKfSksICJnZXRNZWV0aW5nUGFnaW5hdGlvbiIsIGZ1bmN0aW9uIGdldE1lZXRpbmdQYWdpbmF0aW9uKF9yZWYyMiwgcGFnaW5hdGlvbikgewogIHZhciBjb21taXQgPSBfcmVmMjIuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjIuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5nZXRNZWV0aW5nUGFnaW5hdGlvbihwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgY29tbWl0KCJzZXRNZWV0aW5nIiwgcmVzcG9uc2UuZGF0YS5yb3dzKTsgLy/kvJrorq7mlbDmja4KICAgICAgY29tbWl0KCJzZXRUb3RhbCIsIHJlc3BvbnNlLmRhdGEudG90YWwpOyAvL+aAu+aVsOaNruadoeaVsAogICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgInBhZ2UiOiByZXNwb25zZS5kYXRhLnBhZ2UsCiAgICAgICAgInBhZ2VTaXplIjogcmVzcG9uc2UuZGF0YS5wYWdlU2l6ZSwKICAgICAgICAic2hvd1RvdGFsIjogInRydWUiCiAgICAgIH07IC8v5o6l5Y+j5pa55rOV6L+U5Zue55qEcGFnZUJlYW4KICAgICAgY29tbWl0KCJzZXRQYWdpbmF0aW9uIiwgcGFnZUJlYW4pOyAvL+aYvuekuuesrOWHoOmhte+8jOavj+mhteaYvuekuuWkmuWwkeadoQogICAgICByZXNvbHZlKCk7CiAgICB9KTsKICB9KTsKfSksICJnZXRCeVR5cGVLZXlGb3JDb21CbyIsIGZ1bmN0aW9uIGdldEJ5VHlwZUtleUZvckNvbUJvKF9yZWYyMywgZGljS2V5KSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyMy5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyMy5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLmdldEJ5VHlwZUtleUZvckNvbUJvKGRpY0tleSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgfSk7CiAgfSk7Cn0pLCAiZ2V0TmV4dElkQnlBbGlhcyIsIGZ1bmN0aW9uIGdldE5leHRJZEJ5QWxpYXMoX3JlZjI0LCBhbGlhcykgewogIHZhciBjb21taXQgPSBfcmVmMjQuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjQuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5nZXROZXh0SWRCeUFsaWFzKGFsaWFzLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICB9KTsKICB9KTsKfSksIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9hY3Rpb25zLCAidnVlRnJvbnRIb21lIiwgZnVuY3Rpb24gdnVlRnJvbnRIb21lKF9yZWYyNSkgewogIHZhciBjb21taXQgPSBfcmVmMjUuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjUuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC52dWVGcm9udEhvbWUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgfSk7CiAgfSk7Cn0pLCAiZ2V0Q29sdW1uQnlBbGlhcyIsIGZ1bmN0aW9uIGdldENvbHVtbkJ5QWxpYXMoX3JlZjI2LCBhbGlhcykgewogIHZhciBjb21taXQgPSBfcmVmMjYuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMjYuc3RhdGU7CiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIHBvcnRhbC5nZXRDb2x1bW5CeUFsaWFzKGFsaWFzLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgIGNvbW1pdCgidXBkYXRlQ29sdW1uRGF0YSIsIHJlc3BvbnNlKTsKICAgIH0pOwogIH0pOwp9KSwgImdldENvbHVtbkJ5QWxpYXNCYXRjaCIsIGZ1bmN0aW9uIGdldENvbHVtbkJ5QWxpYXNCYXRjaChfcmVmMjcsIGFsaWFzKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyNy5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyNy5zdGF0ZSwKICAgIGdldHRlcnMgPSBfcmVmMjcuZ2V0dGVyczsKICAvLyAxLuWmguaenOW9k+WJjeagj+ebruaVsOaNruS4reW3sue7j+acieWvueW6lOeahOWAvOS6hu+8jOebtOaOpei/lOWbnuOAggogIGlmIChnZXR0ZXJzLmhhc0NvbHVtbkRhdGFXaXRoQWxpYXMoYWxpYXMpKSB7CiAgICByZXR1cm47CiAgfQogIC8vIDIu5piv5ZCm5q2j5Zyo6L+b6KGM6K+35rGC5ZCI5bm277ybCiAgaWYgKHN0YXRlLmNvbHVtblF1ZXJ5TWVyZ2luZykgewogICAgLy8gKDEpLuWPlua2iOW9k+WJjeWAkuiuoeaXtu+8mwogICAgY2xlYXJUaW1lb3V0KHN0YXRlLmNvbHVtblF1ZXJ5TWVyZ2luZyk7CiAgICAvLyAoMiku6YeN572u5b2T5YmN5YCS6K6h5pe25Y+W5raI5qCH6K6w5L2N77ybCiAgICBjb21taXQoInNldENvbHVtblF1ZXJ5TWVyZ2luZyIsIG51bGwpOwogIH0KICAvLyAzLuaehOW7uuS4gOS4quivt+axguWAkuiuoeaXtu+8iOm7mOiupOS4pOS4quivt+axguebuOW3rjUw5q+r56eS5YaF5Lya5ZCI5bm25Li65LiA5Liq6K+35rGC77yJ77ybCiAgdmFyIHRpbWVvdXRDYW5jZWwgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgIC8vIDQu5YCS6K6h5pe257uT5p2f77yM55yf5q2j5Y+R6YCB6K+35rGC77ybCiAgICBwb3J0YWwuYmF0Y2hHZXRDb2x1bW5CeUFsaWFzZXMoc3RhdGUuY29sdW1uQWxpYXNBcnkuam9pbigiLCIpLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgLy8gNS7mm7TmlrDmoI/nm67mlbDmja7liLB2dWV455qEc3RhdGXkuK3jgIIKICAgICAgY29tbWl0KCJzZXRDb2x1bW5EYXRhIiwgcmVzcG9uc2UpOwogICAgfSk7CiAgICAvLyDmuIXnqbrmoI/nm67or7fmsYLmn6Xor6LliKvlkI3mlbDnu4QKICAgIGNvbW1pdCgiY2xlYXJDb2x1bW5BbGlhc0FyeSIpOwogICAgLy8g6YeN572u5YCS6K6h5pe25Y+W5raI5qCH6K6w5L2NCiAgICBjb21taXQoInNldENvbHVtblF1ZXJ5TWVyZ2luZyIsIG51bGwpOwogIH0sIDUwKTsKICAvLyDmt7vliqDmoI/nm67or7fmsYLmn6Xor6LliKvlkI3liLDmlbDnu4QKICBjb21taXQoImFkZENvbHVtbkFsaWFzIiwgYWxpYXMpOwogIC8vIOabtOaWsOWAkuiuoeaXtuWPlua2iOagh+iusOS9jQogIGNvbW1pdCgic2V0Q29sdW1uUXVlcnlNZXJnaW5nIiwgdGltZW91dENhbmNlbCk7Cn0pLCAiZ2V0Q29sdW1uRGF0YSIsIGZ1bmN0aW9uIGdldENvbHVtbkRhdGEoX3JlZjI4LCBjb2x1bW4pIHsKICB2YXIgY29tbWl0ID0gX3JlZjI4LmNvbW1pdCwKICAgIHN0YXRlID0gX3JlZjI4LnN0YXRlOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBwb3J0YWwuZ2V0Q29sdW1uRGF0YShjb2x1bW4sIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgIH0pOwogIH0pOwp9KSwgInVwZGF0ZUZpbGVFeHRyYVByb3AiLCBmdW5jdGlvbiB1cGRhdGVGaWxlRXh0cmFQcm9wKF9yZWYyOSwgY29sdW1uKSB7CiAgdmFyIGNvbW1pdCA9IF9yZWYyOS5jb21taXQsCiAgICBzdGF0ZSA9IF9yZWYyOS5zdGF0ZTsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgcG9ydGFsLnVwZGF0ZUZpbGVFeHRyYVByb3AoY29sdW1uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICB9KTsKICB9KTsKfSksICJjbGVhck1lbnVzIiwgZnVuY3Rpb24gY2xlYXJNZW51cyhfcmVmMzAsIGNvbHVtbikgewogIHZhciBjb21taXQgPSBfcmVmMzAuY29tbWl0LAogICAgc3RhdGUgPSBfcmVmMzAuc3RhdGU7CiAgY29tbWl0KCJjbGVhck1lbnVzIik7CiAgd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oImN1cnJlbnRGcm9udE1lbnVzIik7CiAgd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oImRpY3RfZGF0YSIpOwogIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJhbGxNZXRob2QiKTsKICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgibWV0aG9kQXV0aCIpOwp9KSk7CnZhciBtdXRhdGlvbnMgPSB7CiAgc2V0TWVudXM6IGZ1bmN0aW9uIHNldE1lbnVzKHN0YXRlLCBtZW51cykgewogICAgc3RhdGUuYWxsID0gbWVudXM7CiAgfSwKICBjbGVhck1lbnVzOiBmdW5jdGlvbiBjbGVhck1lbnVzKCkgewogICAgc3RhdGUuZnJvbnRNZW51cyA9IFtdOwogICAgc3RhdGUuc3lzTWVudXMgPSBbXTsKICB9LAogIHNldFJlc2lkdWFsOiBmdW5jdGlvbiBzZXRSZXNpZHVhbChzdGF0ZSwgdmFsKSB7CiAgICBzdGF0ZS5yZXNpZHVhbCA9IHZhbDsKICB9LAogIGFwcGVuZE1lbnVzOiBmdW5jdGlvbiBhcHBlbmRNZW51cyhzdGF0ZSwgbWVudXMpIHsKICAgIG1lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUpIHsKICAgICAgaWYgKCFzdGF0ZS5hbGwuc29tZShmdW5jdGlvbiAobSkgewogICAgICAgIHJldHVybiBtLmFsaWFzID09PSBtZW51LmFsaWFzOwogICAgICB9KSkgewogICAgICAgIHN0YXRlLmFsbC5wdXNoKG1lbnUpOwogICAgICB9CiAgICB9KTsKICAgIHN0YXRlLmFsbC5zb3J0KGZ1bmN0aW9uIChtLCBuKSB7CiAgICAgIHJldHVybiBtLmlkIC0gbi5pZDsKICAgIH0pOwogIH0sCiAgc2V0U3luY01lbnVzOiBmdW5jdGlvbiBzZXRTeW5jTWVudXMoc3RhdGUsIHJlc3BvbnNlKSB7CiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLnZhbHVlICYmIHJlc3BvbnNlLmRhdGEudmFsdWUubGVuZ3RoID4gMCkgewogICAgICB2YXIgbWVudXMgPSByZXNwb25zZS5kYXRhLnZhbHVlOwogICAgICBtZW51cy5mb3JFYWNoKGZ1bmN0aW9uIChtZW51KSB7CiAgICAgICAgaWYgKCFzdGF0ZS5hbGwuc29tZShmdW5jdGlvbiAobSkgewogICAgICAgICAgcmV0dXJuIG0uY29kZSA9PT0gbWVudS5hbGlhczsKICAgICAgICB9KSkgewogICAgICAgICAgc3RhdGUuYWxsLnB1c2goewogICAgICAgICAgICBpZDogbWVudS5pZCwKICAgICAgICAgICAgY29kZTogbWVudS5hbGlhcywKICAgICAgICAgICAgYWxpYXM6IG1lbnUuYWxpYXMsCiAgICAgICAgICAgIHBhdGg6IG1lbnUubWVudVVybCwKICAgICAgICAgICAgbmFtZTogbWVudS5uYW1lLAogICAgICAgICAgICBzbjogbWVudS5zbgogICAgICAgICAgfSk7CiAgICAgICAgICAvL+WIpOaWreaYr+WQpuaYr+a1geeoi+S4reW/gwogICAgICAgICAgaWYgKG1lbnUuYWxpYXMgPT0gInYtZmxvdyIpIHsKICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzTGVhZGVyKSB7CiAgICAgICAgICAgICAgLy/msqHmnInpooblr7wKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lbnUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChtZW51LmNoaWxkcmVuW2ldLmFsaWFzID09ICJ2LWxlYWRlciIpIHsKICAgICAgICAgICAgICAgICAgbWVudS5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzdGF0ZS5tZW51TWFwc1ttZW51LmFsaWFzXSA9IG1lbnUuY2hpbGRyZW47CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJlc3BvbnNlLmlzTGVhZGVyKSB7CiAgICAgICAgICAgICAgLy/mnInpooblr7wKICAgICAgICAgICAgICBzdGF0ZS5tZW51TWFwc1ttZW51LmFsaWFzXSA9IG1lbnUuY2hpbGRyZW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0YXRlLm1lbnVNYXBzW21lbnUuYWxpYXNdID0gbWVudS5jaGlsZHJlbjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gfQogICAgICB9KTsKICAgIH0KICB9LAogIHNldEN1cnJlbnRNZW51OiBmdW5jdGlvbiBzZXRDdXJyZW50TWVudShzdGF0ZSwgcmVzcG9uc2UpIHsKICAgIHN0YXRlLmN1cnJlbnRNZW51ID0gcmVzcG9uc2U7CiAgfSwKICBnZXRBbGxtZW51czogZnVuY3Rpb24gZ2V0QWxsbWVudXMoc3RhdGUsIHJlc3BvbnNlKSB7CiAgICByZXR1cm4gc3RhdGUuYWxsOwogIH0sCiAgc2V0UGFnaW5hdGlvbjogZnVuY3Rpb24gc2V0UGFnaW5hdGlvbihzdGF0ZSwgcGFnaW5hdGlvbikgewogICAgc3RhdGUucGFnaW5hdGlvbiA9IHBhZ2luYXRpb247CiAgfSwKICBzZXRQYWdpbmF0aW9uU2l6ZTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblNpemUoc3RhdGUsIHNpemUpIHsKICAgIHN0YXRlLnBhZ2luYXRpb24ucGFnZVNpemUgPSBzaXplOwogIH0sCiAgc2V0UGFnaW5hdGlvblBhZ2VOdW06IGZ1bmN0aW9uIHNldFBhZ2luYXRpb25QYWdlTnVtKHN0YXRlLCBjdXJyZW50UGFnZSkgewogICAgc3RhdGUucGFnaW5hdGlvbi5wYWdlID0gY3VycmVudFBhZ2U7CiAgfSwKICBzZXRSb3dzOiBmdW5jdGlvbiBzZXRSb3dzKHN0YXRlLCByb3dzKSB7CiAgICBzdGF0ZS5yb3dzID0gcm93czsKICB9LAogIHNldE5vdGljZTogZnVuY3Rpb24gc2V0Tm90aWNlKHN0YXRlLCBub3RpY2UpIHsKICAgIHN0YXRlLm5vdGljZSA9IG5vdGljZTsKICB9LAogIHNldFRvdGFsOiBmdW5jdGlvbiBzZXRUb3RhbChzdGF0ZSwgdG90YWwpIHsKICAgIHN0YXRlLnRvdGFsID0gdG90YWw7CiAgfSwKICBzZXRGaWxlc0RhdGE6IGZ1bmN0aW9uIHNldEZpbGVzRGF0YShzdGF0ZSwgZmlsZXNEYXRhKSB7CiAgICBzdGF0ZS5maWxlc0RhdGEgPSBmaWxlc0RhdGE7CiAgfSwKICBzZXRNZWV0aW5nOiBmdW5jdGlvbiBzZXRNZWV0aW5nKHN0YXRlLCBtZWV0aW5nKSB7CiAgICBzdGF0ZS5tZWV0aW5nID0gbWVldGluZzsKICB9LAogIGFkZENvbHVtbkFsaWFzOiBmdW5jdGlvbiBhZGRDb2x1bW5BbGlhcyhzdGF0ZSwgYWxpYXMpIHsKICAgIHN0YXRlLmNvbHVtbkFsaWFzQXJ5LnB1c2goYWxpYXMpOwogIH0sCiAgY2xlYXJDb2x1bW5BbGlhc0FyeTogZnVuY3Rpb24gY2xlYXJDb2x1bW5BbGlhc0FyeShzdGF0ZSkgewogICAgc3RhdGUuY29sdW1uQWxpYXNBcnkgPSBbXTsKICB9LAogIHNldENvbHVtblF1ZXJ5TWVyZ2luZzogZnVuY3Rpb24gc2V0Q29sdW1uUXVlcnlNZXJnaW5nKHN0YXRlLCB2YWwpIHsKICAgIHN0YXRlLmNvbHVtblF1ZXJ5TWVyZ2luZyA9IHZhbDsKICB9LAogIHNldENvbHVtbkRhdGE6IGZ1bmN0aW9uIHNldENvbHVtbkRhdGEoc3RhdGUsIGRhdGEpIHsKICAgIHZhciBfY29sRGF0YSA9IHN0YXRlLmNvbHVtbkRhdGEgfHwge30sCiAgICAgIGFsaWFzQXJ5ID0gc3RhdGUuY29sdW1uRGF0YUxvYWRlZEFsaWFzZXMgPyBzdGF0ZS5jb2x1bW5EYXRhTG9hZGVkQWxpYXNlcy5zcGxpdCgnLCcpIDogW107CiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHsKICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7CiAgICAgICAgYWxpYXNBcnkucHVzaChkLmFsaWFzKTsKICAgICAgICBfY29sRGF0YVtkLmFsaWFzXSA9IGQ7CiAgICAgIH0pOwogICAgfQogICAgc3RhdGUuY29sdW1uRGF0YSA9IF9jb2xEYXRhOwogICAgc3RhdGUuY29sdW1uRGF0YUxvYWRlZEFsaWFzZXMgPSBhbGlhc0FyeS5qb2luKCIsIik7CiAgfSwKICB1cGRhdGVDb2x1bW5EYXRhOiBmdW5jdGlvbiB1cGRhdGVDb2x1bW5EYXRhKHN0YXRlLCBkYXRhKSB7CiAgICBpZiAoZGF0YSAmJiBkYXRhLmFsaWFzKSB7CiAgICAgIHN0YXRlLmNvbHVtbkRhdGFbZGF0YS5hbGlhc10gPSBkYXRhOwogICAgfQogIH0sCiAgLy8g5YmN5Y+w6I+c5Y2V6LWL5YC8CiAgbXV0YXRpb25Gcm9udE1lbnVzOiBmdW5jdGlvbiBtdXRhdGlvbkZyb250TWVudXMoc3RhdGUsIGZyb250TWVudXMpIHsKICAgIHN0YXRlLmZyb250TWVudXMgPSBmcm9udE1lbnVzOwogIH0sCiAgLy8g5ZCO5Y+w6I+c5Y2V6LWL5YC8CiAgbXV0YXRpb25TeXNNZW51czogZnVuY3Rpb24gbXV0YXRpb25TeXNNZW51cyhzdGF0ZSwgc3lzTWVudXMpIHsKICAgIHN0YXRlLnN5c01lbnVzID0gc3lzTWVudXM7CiAgfQp9OwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZXNwYWNlZDogdHJ1ZSwKICBzdGF0ZTogc3RhdGUsCiAgZ2V0dGVyczogZ2V0dGVycywKICBhY3Rpb25zOiBhY3Rpb25zLAogIG11dGF0aW9uczogbXV0YXRpb25zCn07"},null]}