{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\PatrolAndRescuePersonnelMgmt\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\PatrolAndRescuePersonnelMgmt\\components\\TablePage\\index.vue","mtime":1752055336186},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3hjanktZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgZ2V0U29ydGVyRGlyZWN0aW9uLCByZWZpbmVSZXF1ZXN0Qm9keSwgc2V0UXVlcnlWYWx1ZSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyUGFnaW5hdGlvbi9pbmRleC52dWUnOwppbXBvcnQgeyBUYWJsZU1peGluIH0gZnJvbSAnQC9taXhpbnMvdGFibGVNaXhpbic7CmltcG9ydCB0cmVlU2lkZSBmcm9tICdAL2NvbXBvbmVudHMvdHJlZVNpZGUvaW5kZXgudnVlJzsKaW1wb3J0IFNlYXJjaENvbW1vbiBmcm9tICdAL2NvbXBvbmVudHMvU2VhcmNoQ29tbW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IHRhYmxlRGF0YSwgdGFibGVEZWxldGUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9wYXRyb2xBbmRSZXNjdWVQZXJzb25uZWxNZ210JzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIHRlYW1EYXRhIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcGF0cm9sQW5kUmVzY3VlVGVhbXNNZ210JzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIGNvbXBhbnlEYXRhIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvb3V0c291cmNpbmdDb21wYW55TWdtdCc7CmltcG9ydCB7IGdldFRyZWUgfSBmcm9tICdAL2FwaS90cmVlJzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdUYWJsZVBhZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sCiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBTZWFyY2hDb21tb246IFNlYXJjaENvbW1vbgogIH0sCiAgbWl4aW5zOiBbVGFibGVNaXhpbl0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGlzQWRkRGlzYWJsZWQ6IHRydWUsCiAgICAgIC8vIOaWsOWinuaMiemSruaYr+WQpuemgeeUqAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICB0YWJsZUxvYWRpbmc6IHRydWUsCiAgICAgIHRyZWVMb2FkaW5nOiB0cnVlLAogICAgICBidG5Mb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZURhdGE6IFtdLAogICAgICAvL+W3pui+ueagkQogICAgICB0YWJMaXN0OiBbJ+aUv+etluazleinhCddLAogICAgICAvL+W3pui+uXRhYgogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIG9wdGlvbkxpc3Q6IFsKICAgICAgLy8ge3RpdGxlOiAn6LSm5Y+35ZCN44CB6Zif5ZGY5aeT5ZCN44CB5omL5py65Y+3JywgcHJvcDogWydhY2NvdW50JywgJ25hbWUnLCAndGVsJ10sIHR5cGU6ICdpbnB1dCcsIGRlZmF1bHQ6IHRydWV9LAogICAgICB7CiAgICAgICAgdGl0bGU6ICfpmJ/lkZjlp5PlkI0nLAogICAgICAgIHByb3A6ICd0bS5uYW1lXycsCiAgICAgICAgdHlwZTogJ2lucHV0JywKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+aJi+acuuWPtycsCiAgICAgICAgcHJvcDogJyB0bS50ZWxfJywKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgIH0sCiAgICAgIC8vIHt0aXRsZTogJ+i6q+S7veivgeWPtycsIHByb3A6ICdjb2RlJywgdHlwZTogJ2lucHV0J30sCiAgICAgIC8vIHt0aXRsZTogJ+WkluWMheWFrOWPuCcsIHByb3A6ICdvdXRfY29tcGFueV9uYW1lXycsIHR5cGU6ICdpbnB1dCd9LAogICAgICAvLyB7dGl0bGU6ICflpJbljIXlhazlj7gnLCBwcm9wOiAnb2MubmFtZV8nLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uOiBbXSwgbXVsdGlwbGU6IGZhbHNlfSwKICAgICAgewogICAgICAgIHRpdGxlOiAn5aSW5YyF5YWs5Y+4JywKICAgICAgICBwcm9wOiAnb2MubmFtZV8nLAogICAgICAgIHR5cGU6ICdpbnB1dCcsCiAgICAgICAgZGVmYXVsdDogZmFsc2UKICAgICAgfQogICAgICAvLyB7dGl0bGU6ICfkurrlkZjnsbvlnosnLCBwcm9wOiAndHlwZScsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb246IGdldERpY3Rpb25hcnlCeUNvZGUoJ3J5bHgteGNqeXJ5JyksIG11bHRpcGxlOiBmYWxzZX0sCiAgICAgIC8vIHt0aXRsZTogJ+S6uuWRmOiBjOWKoScsIHByb3A6ICd0bS5wb3N0XycsIHR5cGU6ICdpbnB1dCcsIGRlZmF1bHQ6IHRydWV9CgogICAgICAvLyB7CiAgICAgIC8vICAgdGl0bGU6ICfkurrlkZjogYzliqEnLAogICAgICAvLyAgIHByb3A6ICd0bS5wb3N0XycsCiAgICAgIC8vICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgIC8vICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdyeXp3LXhjanlyeScpLAogICAgICAvLyAgIG11bHRpcGxlOiBmYWxzZQogICAgICAvLyB9CiAgICAgIC8vIHt0aXRsZTogJ+aYr+WQpuWklua0vuS6uuWRmCcsIHByb3A6ICdpc091dCcsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb246IGRpY3Rpb25hcnlFc2NhcGUoJ3NmcGonKSwgbXVsdGlwbGU6IHRydWV9CiAgICAgIF0sCiAgICAgIHBhcmFtczogewogICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICBwYWdlU2l6ZTogMjAsCiAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgdG90YWw6IDAKICAgICAgICB9LAogICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHByb3BlcnR5OiAndG0ucm9hZF9pZF8nCiAgICAgICAgfSwKICAgICAgICAvLyB7b3BlcmF0aW9uOiAnRVFVQUwnLCBwcm9wZXJ0eTogJ3R5cGUnLCB2YWx1ZTogJzEnfSwKICAgICAgICAvLyB7IG9wZXJhdGlvbjogJ0xJS0UnLCBwcm9wZXJ0eTogJ1RFQU1fRlVMTF9JRF8nIH0sCiAgICAgICAgewogICAgICAgICAgZ3JvdXA6ICdhY2NvdW50TmFtZVRlbCcsCiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHJlbGF0aW9uOiAnT1InLAogICAgICAgICAgcHJvcGVydHk6ICdhY2NvdW50JwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAnYWNjb3VudE5hbWVUZWwnLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAnbmFtZScKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ2FjY291bnROYW1lVGVsJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RlbCcKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHByb3BlcnR5OiAndG0ubmFtZV8nCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICBwcm9wZXJ0eTogJyB0bS50ZWxfJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcHJvcGVydHk6ICdvYy5uYW1lXycKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RlYW1fSWRfJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAndG0udHlwZV8nLAogICAgICAgICAgdmFsdWU6ICcxJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAndG0ucG9zdF8nCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgICAgcHJvcGVydHk6ICdpc091dCcKICAgICAgICB9XSwKICAgICAgICBzb3J0ZXI6IFt7CiAgICAgICAgICBkaXJlY3Rpb246ICcnLAogICAgICAgICAgcHJvcGVydHk6ICdhY2NvdW50JwogICAgICAgIH0sIHsKICAgICAgICAgIGRpcmVjdGlvbjogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJ25hbWUnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAndGVsJwogICAgICAgIH0sIHsKICAgICAgICAgIGRpcmVjdGlvbjogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2lzT3V0JwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIHRyZWVJdGVtOiB7fSAvLyDmoJHlvaLoioLngrnpgInkuK3lr7nosaEKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiOt+WPluagkeW9ouebruW9lQogICAgdGhpcy5nZXRPcmdUcmVlRGF0YShmdW5jdGlvbiAodHJlZURhdGEpIHsKICAgICAgX3RoaXMudHJlZUl0ZW0gPSB0cmVlRGF0YVswXSB8fCB7fTsKICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgIGlmIChfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgYXJyYXkgPSBfdGhpcy5leHRyYWN0SWRzKF90aGlzLnRyZWVJdGVtKTsKICAgICAgfQogICAgICAvLyDku47ot6/nlLHlj4LmlbDkuK3ojrflj5Z0ZWFtSWQKICAgICAgLy8gbGV0IHt0ZWFtSWR9ID0gdGhpcy4kcm91dGUucXVlcnkKICAgICAgLy8gLy8g5aaC5p6c5pyJdGVhbUlk5Y+C5pWw77yM5YiZ5p+l5om+5a+55bqU55qE5qCR6IqC54K5CiAgICAgIC8vIGlmICh0ZWFtSWQpIHsKICAgICAgLy8gICBjb25zdCBmaW5kTm9kZSA9IHRoaXMuZmluZFRyZWVOb2RlKHRyZWVEYXRhLCB0ZWFtSWQpCiAgICAgIC8vICAgaWYgKGZpbmROb2RlKSB7CiAgICAgIC8vICAgICB0aGlzLnRyZWVJdGVtID0gZmluZE5vZGUKICAgICAgLy8gICAgIHRoaXMuJG5leHRUaWNrKF8gPT4gewogICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5zZXRDdXJyZW50S2V5KGZpbmROb2RlLmlkKQogICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5leHBhbmRIYW5kbGUodHJ1ZSwgMikKICAgICAgLy8gICAgIH0pCiAgICAgIC8vICAgICAvLyDorr7nva7mn6Xor6Llj4LmlbAKICAgICAgLy8gICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICd0bS5yb2FkX2lkXycsIFtmaW5kTm9kZS5pZF0pCiAgICAgIC8vICAgfQogICAgICAvLyB9IGVsc2UgewogICAgICAvLyDpu5jorqTpgInkuK3nrKzkuIDpobkKICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzJCRyZWZzJHRyZWVTaWRlLCBfdHJlZURhdGEkLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleSgoX3RyZWVEYXRhJCA9IHRyZWVEYXRhWzBdKSA9PT0gbnVsbCB8fCBfdHJlZURhdGEkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJlZURhdGEkLmlkKTsKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgIH0pOwogICAgICBzZXRRdWVyeVZhbHVlKF90aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgYXJyYXkpOwogICAgICAvLyB9CiAgICAgIC8v6L+b5YWl6aG16Z2i6LCD55So5LiA5qyhCiAgICAgIF90aGlzLmxvYWREYXRhKCk7CiAgICB9KTsKICAgIC8vIHRoaXMuZ2V0VGVhbURhdGEoKQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdUYWJsZVBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewogICAgICAgIGNhc2UgJ2FkZCc6CiAgICAgICAgICBfdGhpczIuaGFuZGxlQ3VycmVudENoYW5nZSgxKTsKICAgICAgICAgIC8vIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxCiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2VkaXQnOgogICAgICAgICAgX3RoaXMyLmxvYWREYXRhKCk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSk7CiAgICB0aGlzLmdldENvbXBhbnlhdGEoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgLy8g6L6F5Yqp5pa55rOV77ya5Zyo5qCR5pWw5o2u5Lit5p+l5om+54m55a6a6IqC54K5KOWumuS9jSkKICAgIGZpbmRUcmVlTm9kZTogZnVuY3Rpb24gZmluZFRyZWVOb2RlKHRyZWVEYXRhLCBpZCkgewogICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodHJlZURhdGEpLAogICAgICAgIF9zdGVwOwogICAgICB0cnkgewogICAgICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwLnZhbHVlOwogICAgICAgICAgaWYgKG5vZGUuaWQgPT09IGlkKSByZXR1cm4gbm9kZTsKICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7CiAgICAgICAgICAgIHZhciBmb3VuZCA9IHRoaXMuZmluZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIGlkKTsKICAgICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfaXRlcmF0b3IuZShlcnIpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIF9pdGVyYXRvci5mKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAogICAgbWFuYWdlckNoYW5nZTogZnVuY3Rpb24gbWFuYWdlckNoYW5nZShpZCkgewogICAgICByZXR1cm4gdGhpcy5jb21wYW55T3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gaWQ7CiAgICAgIH0pWzBdLm5hbWU7CiAgICB9LAogICAgZ2V0Q29tcGFueWF0YTogZnVuY3Rpb24gZ2V0Q29tcGFueWF0YSgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJGNvbXBhbnlEYXRhLCBfeWllbGQkY29tcGFueURhdGEkcm8sIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhbnlEYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkY29tcGFueURhdGEgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRjb21wYW55RGF0YSRybyA9IF95aWVsZCRjb21wYW55RGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkY29tcGFueURhdGEkcm8gPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJGNvbXBhbnlEYXRhJHJvOwogICAgICAgICAgICAgIF90aGlzNC5jb21wYW55T3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgY29uc29sZS5sb2cocm93cywgJ+WkluWMheWFrOWPuCcpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIGdldFNvcnRlckRpcmVjdGlvbjogZ2V0U29ydGVyRGlyZWN0aW9uLAogICAgZ2V0VGVhbURhdGE6IGZ1bmN0aW9uIGdldFRlYW1EYXRhKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJHRlYW1EYXRhLCBfeWllbGQkdGVhbURhdGEkcm93cywgcm93cywgdGVhbUlkOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRlYW1EYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGVhbURhdGEkcm93cyA9IF95aWVsZCR0ZWFtRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGVhbURhdGEkcm93cyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkdGVhbURhdGEkcm93czsKICAgICAgICAgICAgICAvLyB0aGlzLm9wdGlvbkxpc3RbM10ub3B0aW9uID0gcm93cy5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS5pZAogICAgICAgICAgICAgIC8vICAgcmV0dXJuIGl0ZW0KICAgICAgICAgICAgICAvLyB9KQogICAgICAgICAgICAgIHRlYW1JZCA9IF90aGlzNS4kcm91dGUucXVlcnkudGVhbUlkOwogICAgICAgICAgICAgIGlmICh0ZWFtSWQpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5wYXJhbXMucXVlcnlzWzVdLnZhbHVlID0gdGVhbUlkOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczUuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5sb2FkRGF0YSgpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDojrflj5blhazlj7jmoJEKICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YShjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJGdldFRyZWUsIHZhbHVlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDA7CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIGdldFRyZWUoKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRnZXRUcmVlID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkZ2V0VHJlZS52YWx1ZTsKICAgICAgICAgICAgICBfdGhpczYudHJlZURhdGEgPSBbdmFsdWVdOwogICAgICAgICAgICAgIC8vIOWmguaenOaciei3r+eUseWPguaVsO+8jOWcqOagkeWKoOi9veWujOaIkOWQjuiHquWKqOmAieS4reWvueW6lOiKgueCuQogICAgICAgICAgICAgIC8vIGNvbnN0IHt0ZWFtSWR9ID0gdGhpcy4kcm91dGUucXVlcnkKICAgICAgICAgICAgICAvLyBpZiAodGVhbUlkKSB7CiAgICAgICAgICAgICAgLy8gICBjb25zdCBmaW5kTm9kZSA9IHRoaXMuZmluZFRyZWVOb2RlKHRoaXMudHJlZURhdGEsIHRlYW1JZCkKICAgICAgICAgICAgICAvLyAgIGlmIChmaW5kTm9kZSkgewogICAgICAgICAgICAgIC8vICAgICB0aGlzLnRyZWVJdGVtID0gZmluZE5vZGUKICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kbmV4dFRpY2soXyA9PiB7CiAgICAgICAgICAgICAgLy8gICAgICAgdGhpcy4kcmVmcy50cmVlU2lkZT8uc2V0Q3VycmVudEtleShmaW5kTm9kZS5pZCkKICAgICAgICAgICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5leHBhbmRIYW5kbGUodHJ1ZSwgMikKICAgICAgICAgICAgICAvLyAgICAgfSkKICAgICAgICAgICAgICAvLyAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgW2ZpbmROb2RlLmlkXSkKICAgICAgICAgICAgICAvLyAgIH0KICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDc7CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXM2LnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNi50cmVlRGF0YSk7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5maW5pc2goNyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMCwsIDcsIDEyXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICB0cmFuc2Zvcm1UcmVlRGF0YTogZnVuY3Rpb24gdHJhbnNmb3JtVHJlZURhdGEoZGF0YSkgewogICAgICByZXR1cm4gewogICAgICAgIG5hbWU6IGRhdGEubmFtZSwKICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICBjaGlsZHJlbjogZGF0YS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY2hpbGQpIHsKICAgICAgICAgIGFjYy5wdXNoKHsKICAgICAgICAgICAgaWQ6IGNoaWxkLmlkLAogICAgICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLAogICAgICAgICAgICBwYXRoOiBjaGlsZC5wYXRoLAogICAgICAgICAgICBjaGlsZHJlbjogY2hpbGQucm9hZExpc3QubWFwKGZ1bmN0aW9uIChyb2FkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGlkOiByb2FkLmlkLAogICAgICAgICAgICAgICAgbmFtZTogcm9hZC5uYW1lLAogICAgICAgICAgICAgICAgcGF0aDogcm9hZC5wYXRoCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSkKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIGFjYzsKICAgICAgICB9LCBbXSkKICAgICAgfTsKICAgIH0sCiAgICAvL+W3pui+ueagkeiKgueCuQogICAgY3VycmVudENoYW5nZTogZnVuY3Rpb24gY3VycmVudENoYW5nZShub2RlSXRlbSkgewogICAgICBpZiAobm9kZUl0ZW0uaWQgPT09ICcxNzY2MDE3NDY4NDQ0NDUwODE2JykgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWU7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfICcsIHRoaXMuZXh0cmFjdElkcyhub2RlSXRlbSkpOwogICAgICB9IGVsc2UgaWYgKG5vZGVJdGVtLmNoaWxkcmVuICYmIG5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBhcnJheSA9IG5vZGVJdGVtLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgfSk7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfICcsIGFycmF5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndG0ucm9hZF9pZF8gJywgW25vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZF0gfHwgW10pOwogICAgICB9CiAgICAgIC8vIOWIpOaWreaYr+WQpuaYr+S4gOe6p+ebruW9le+8iOaciSBjaGlsZHJlbiDlsZ7mgKfvvIkKICAgICAgLy8gaWYgKG5vZGVJdGVtLmNoaWxkcmVuICYmIG5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgLy8gICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlIC8vIOemgeeUqOaWsOWinuaMiemSrgogICAgICAvLyAgIGNvbnN0IGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGl0ZW0gPT4gaXRlbS5pZCkKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndG0ucm9hZF9pZF8nLCBhcnJheSkKICAgICAgLy8gICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeS6jOe6p+ebruW9lei/m+ihjOaWsOWinuaTjeS9nCcpCiAgICAgIC8vIH0gZWxzZSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2UgLy8g5ZCv55So5paw5aKe5oyJ6ZKuCiAgICAgIC8vICAgLy8g5L+u5pS55a+55bqU55qE5a2X5q615YC8CiAgICAgIC8vICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgW25vZGVJdGVtPy5pZF0gfHwgW10pCiAgICAgIC8vIH0KICAgICAgdGhpcy50cmVlSXRlbSA9IG5vZGVJdGVtIHx8IHt9OwogICAgICB0aGlzLmNhbGNUYWJsZUhlaWdodCg1MDApOwogICAgICAvLyDmm7TmlrBVUkzkuK3nmoR0ZWFtSWTlj4LmlbDvvIzkvYbkuI3op6blj5HpobXpnaLliLfmlrAKICAgICAgdGhpcy4kcm91dGVyLnJlcGxhY2UoewogICAgICAgIHF1ZXJ5OiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJHJvdXRlLnF1ZXJ5KSwge30sIHsKICAgICAgICAgIHRlYW1JZDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZCkgfHwgJycKICAgICAgICB9KQogICAgICB9KTsKICAgICAgUHViU3ViLnB1Ymxpc2goJ1RyZWVJdGVtU2VsZWN0ZWQnLCB7CiAgICAgICAgaWQ6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWQpIHx8ICcnLAogICAgICAgIG5hbWU6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ubmFtZSkgfHwgJycsCiAgICAgICAgcGF0aDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5wYXRoKSB8fCAnJywKICAgICAgICBvcmdJZDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5vcmdJZCkgfHwgJycKICAgICAgfSk7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy/ojrflj5bmlbDmja4KICAgIGxvYWREYXRhOiBmdW5jdGlvbiBsb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM3LnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURhdGEocmVmaW5lUmVxdWVzdEJvZHkoX3RoaXM3LnBhcmFtcykpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkdG90YSA9IF95aWVsZCR0YWJsZURhdGEudG90YWw7CiAgICAgICAgICAgICAgdG90YWwgPSBfeWllbGQkdGFibGVEYXRhJHRvdGEgPT09IHZvaWQgMCA/IDAgOiBfeWllbGQkdGFibGVEYXRhJHRvdGE7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSRyb3dzID0gX3lpZWxkJHRhYmxlRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGFibGVEYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRhYmxlRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNy5wYXJhbXMucGFnZUJlYW4udG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICBfdGhpczcudGFibGVEYXRhID0gcm93cy5tYXAoZnVuY3Rpb24gKHJvdykgewogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcm93KSwge30sIHsKICAgICAgICAgICAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCBfdGhpczcudHJlZUl0ZW0ubmFtZSAvLyDlpoLmnpwgcm93Lm9yZ05hbWUg5Li656m677yM5L2/55SoIHRyZWVJdGVtLm5hbWUKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIF90aGlzNy50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v5Y+M5Ye75L+u5pS5CiAgICBoYW5kbGVEYkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVEYkNsaWNrKHJvdykgewogICAgICBpZiAodGhpcy5jbGlja1RpbWVyKSByZXR1cm4gdGhpcy5jbGlja1RpbWVyID0gZmFsc2U7CiAgICAgIC8vIOehruS/nSByb3cg5Lit5YyF5ZCrIG9yZ05hbWUKICAgICAgdmFyIHBheWxvYWQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCB0aGlzLnRyZWVJdGVtLm5hbWUsCiAgICAgICAgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgICAgcm9hZElkOiByb3cucm9hZElkIHx8IHRoaXMudHJlZUl0ZW0uaWQgLy8g5aaC5p6cIHJvdy50ZWFtSWQg5Li656m677yM5L2/55SoIHRyZWVJdGVtLmlkCiAgICAgIH0pOwogICAgICBjb25zb2xlLmxvZyhyb3cucm9hZE5hbWUsICc1NTU1NTU1NTU1NTU1NTU1NTUnKTsKICAgICAgdGhpcy5jaGFuZ2VQYWdlKCdFZGl0QWRkUGFnZScsIHBheWxvYWQpOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB0aGlzLmNsaWNrVGltZXIgPSB0cnVlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzOC5jbGlja1RpbWVyID0gZmFsc2U7CiAgICAgIH0pOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTpgInkuK3nmoTlt6Hmo4DmlZHmj7TpmJ/lkZjlkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBpZHMsIF95aWVsZCR0YWJsZURlbGV0ZSwgc3RhdGUsIF90aGlzOCRwYXJhbXMkcGFnZUJlYSwgcGFnZSwgcGFnZVNpemUsIHRvdGFsLCB0b3RhbFBhZ2VzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczguYnRuTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXM4LmN1cnJlbnREYXRhRGVsLmpvaW4oKTsKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShpZHMpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGVsZXRlID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVEZWxldGUuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2VzcygiXHU1REUxXHU2OEMwXHU2NTUxXHU2M0Y0XHU5NjFGXHU1NDU4XHU1MjIwXHU5NjY0XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgX3RoaXM4JHBhcmFtcyRwYWdlQmVhID0gX3RoaXM4LnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzOCRwYXJhbXMkcGFnZUJlYS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzOCRwYXJhbXMkcGFnZUJlYS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczgkcGFyYW1zJHBhZ2VCZWEudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczgudGFibGVEYXRhLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAvLyDlvZPliY3pobXlj6rmnInkuIDmnaHmlbDmja4KICAgICAgICAgICAgICAgICAgX3RoaXM4LnBhcmFtcy5wYWdlQmVhbi5wYWdlIC09IDE7IC8vIOi/lOWbnuWJjeS4gOmhtQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE0OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczgubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDE0OwogICAgICAgICAgICAgIF90aGlzOC5idG5Mb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5maW5pc2goMTQpOwogICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzIsLCAxNCwgMTddXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgcm93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICAvLyDkvKDpgJLlvZPliY3pgInkuK3nmoTmoJHoioLngrnkv6Hmga8KICAgICAgdmFyIHBheWxvYWQgPSByb3cuaWQgPyByb3cgOiB7CiAgICAgICAgY2F0YWxvZ0lkOiB0aGlzLnRyZWVJdGVtLmlkLAogICAgICAgIHJvYWROYW1lOiB0aGlzLnRyZWVJdGVtLm5hbWUsCiAgICAgICAgcGF0aDogdGhpcy50cmVlSXRlbS5wYXRoLAogICAgICAgIHJvYWRJZDogdGhpcy50cmVlSXRlbS5pZCwKICAgICAgICAvLyDnoa7kv53kvKDpgJIgdGVhbUlkCiAgICAgICAgY2xlYXJGb3JtOiB0cnVlLAogICAgICAgIC8vIOa4heepuuihqOWNleagh+W/lwogICAgICAgIC8vIOehruS/neS8oOmAkuW9k+WJjXRyZWVJdGVtCiAgICAgICAgdHJlZUl0ZW06IHRoaXMudHJlZUl0ZW0KICAgICAgfTsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCBwYXlsb2FkKTsKICAgICAgfSwgcm93LmlkID8gJ+e8lui+kScgOiAn5re75YqgJyk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}