bbb377be9be965e97e0e160290682866.json 26 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\thread-loader\\dist\\cjs.js!D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\components\\uploadPictures\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\components\\uploadPictures\\index.vue","mtime":1761614938987},{"path":"D:\\front\\item\\zyAdmin\\babel.config.js","mtime":1761614925168},{"path":"D:\\front\\item\\zyAdmin\\.babelrc","mtime":1761614925165},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1761614937017},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9mcm9udC9pdGVtL3p5QWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvciBmcm9tICJEOi9mcm9udC9pdGVtL3p5QWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2Zyb250L2l0ZW0venlBZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWluZGV4LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCB7IGdldENhdGVnb3J5TGlzdEFwaSwgY3JlYXRlQXBpLCBmaWxlTGlzdEFwaSwgY2F0ZWdvcnlFZGl0QXBpLCBtb3ZlQXBpLCBmaWxlVXBkYXRlQXBpIH0gZnJvbSAnQC9hcGkvdXBsb2FkUGljdHVyZXMnOwppbXBvcnQgU2V0dGluZyBmcm9tICdAL3NldHRpbmcnOwppbXBvcnQgeyBnZXRDb29raWVzIH0gZnJvbSAnQC9saWJzL3V0aWwnOwppbXBvcnQgdXBsb2FkSW1nIGZyb20gJ0AvY29tcG9uZW50cy91cGxvYWRJbWcnOwppbXBvcnQgeyBWdWVUcmVlTGlzdCwgVHJlZSwgVHJlZU5vZGUgfSBmcm9tICd2dWUtdHJlZS1saXN0JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICd1cGxvYWRQaWN0dXJlcycsCiAgY29tcG9uZW50czogewogICAgdXBsb2FkSW1nOiB1cGxvYWRJbWcsCiAgICBWdWVUcmVlTGlzdDogVnVlVHJlZUxpc3QKICB9LAogIHByb3BzOiB7CiAgICBpc0Nob2ljZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICcnCiAgICB9LAogICAgaXNQYWdlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgaXNJZnJhbWU6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBncmlkQnRuOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogbnVsbAogICAgfSwKICAgIGdyaWRQaWM6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBudWxsCiAgICB9LAogICAgaXNTaG93OiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogMQogICAgfSwKICAgIHBhZ2VMaW1pdDogewogICAgICB0eXBlOiBOdW1iZXIsCiAgICAgIGRlZmF1bHQ6IDAKICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBzcGluU2hvdzogZmFsc2UsCiAgICAgIGZpbGVVcmw6IFNldHRpbmcuYXBpQmFzZVVSTCArICcvZmlsZS91cGxvYWQnLAogICAgICBtb2RhbFBpYzogZmFsc2UsCiAgICAgIHRyZWVEYXRhOiBbXSwKICAgICAgdHJlZURhdGEyOiBbXSwKICAgICAgcGljdHJ1ZUxpc3Q6IFtdLAogICAgICB1cGxvYWREYXRhOiB7fSwKICAgICAgLy8g5LiK5Lyg5Y+C5pWwCiAgICAgIGNoZWNrUGljTGlzdDogW10sCiAgICAgIHVwbG9hZE5hbWU6IHsKICAgICAgICBuYW1lOiAnJywKICAgICAgICBhbGw6IDEKICAgICAgfSwKICAgICAgZm9ybVZhbGlkYXRlOiB7CiAgICAgICAgaWQ6IDAKICAgICAgfSwKICAgICAgRnJvbURhdGE6IG51bGwsCiAgICAgIHRyZWVJZDogJycsCiAgICAgIGlzSnVkZ2U6IGZhbHNlLAogICAgICBidXR0b25Qcm9wczogewogICAgICAgIHR5cGU6ICdkZWZhdWx0JywKICAgICAgICBzaXplOiAnc21hbGwnCiAgICAgIH0sCiAgICAgIGZpbGVEYXRhOiB7CiAgICAgICAgcGlkOiAwLAogICAgICAgIHJlYWxfbmFtZTogJycsCiAgICAgICAgcGFnZTogMSwKICAgICAgICBsaW1pdDogdGhpcy5wYWdlTGltaXQgfHwgMTgKICAgICAgfSwKICAgICAgdG90YWw6IDAsCiAgICAgIHBpZHM6IDAsCiAgICAgIGxpc3Q6IFtdLAogICAgICBtb2RhbFRpdGxlU3M6ICcnLAogICAgICBpc1Nob3dQaWM6IGZhbHNlLAogICAgICBoZWFkZXI6IHt9LAogICAgICBpZHM6IFtdLAogICAgICAvLyDpgInkuK3pmYTku7bnmoRpZOmbhuWQiAogICAgICBsaWV0U3R5bGU6ICdsaXN0JywKICAgICAgaW1hZ2VVcmw6ICcnLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgbXVsdGlwbGVTZWxlY3Rpb246IFtdLAogICAgICBwaWNtYXJnaW46ICc1cHgnIC8v6buY6K6k6Led56a75Y+z6L656Led56a7CiAgICB9OwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIGlmICh0aGlzLmlzUGFnZSkgewogICAgICB2YXIgaGFuZyA9IHBhcnNlSW50KChkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCAtIHRoaXMuJHJlZnMuaW1nTGlzdEJveC5jbGllbnRIZWlnaHQgLSAzMjUpIC8gMTgwKTsgLy/orqHnrpfooYzmlbAKICAgICAgdmFyIGNvbCA9IHBhcnNlSW50KHRoaXMuJHJlZnMuaW1nTGlzdEJveC5jbGllbnRXaWR0aCAvIDE1Nik7IC8v6K6h566X5YiX5pWwCiAgICAgIHRoaXMuZmlsZURhdGEubGltaXQgPSBjb2wgKiBoYW5nOyAvL+iuoeeul+WIhumhteaVsOmHjwogICAgICB0aGlzLnBpY21hcmdpbiA9IHBhcnNlSW50KHRoaXMuJHJlZnMuaW1nTGlzdEJveC5jbGllbnRXaWR0aCAtIGNvbCAqIDE0NikgLyAoMiAqIGNvbCkgKyAncHgnOyAvL+W5s+Wdh+WIhuW4g+iuoeeul21hcmdpbui3neemuwogICAgfQogICAgdGhpcy5nZXRUb2tlbigpOwogICAgdGhpcy5nZXRMaXN0KCk7CiAgICB0aGlzLmdldEZpbGVMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICByYWRpb0NoYW5nZTogZnVuY3Rpb24gcmFkaW9DaGFuZ2UoKSB7CiAgICAgIHRoaXMuaW5pdERhdGEoKTsKICAgIH0sCiAgICBsb29rSW1nOiBmdW5jdGlvbiBsb29rSW1nKGl0ZW0pIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy5pbWFnZVVybCA9IGl0ZW0uYXR0X2RpcjsKICAgICAgdmFyIHZpZXdlciA9IHRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoJy5pbWFnZXMnKS4kdmlld2VyOwogICAgICB2aWV3ZXIuc2hvdygpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGkgPSBfdGhpcy5waWN0cnVlTGlzdC5maW5kSW5kZXgoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHJldHVybiBlLmF0dF9kaXIgPT09IGl0ZW0uYXR0X2RpcjsKICAgICAgICB9KTsKICAgICAgICB2aWV3ZXIudXBkYXRlKCkudmlldyhpKTsKICAgICAgfSk7CiAgICB9LAogICAgb25EZWw6IGZ1bmN0aW9uIG9uRGVsKG5vZGUpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHZhciBtZXRob2QgPSBub2RlLmNhdGVfaWQgPyByb3V0ZURlbCA6IHJvdXRlQ2F0ZURlbDsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+aPkOekuicsCiAgICAgICAgbWVzc2FnZTogJ+aYr+WQpuehruWumuWIoOmZpOivpeiPnOWNlScsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+WIoOmZpCcsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgbWV0aG9kKG5vZGUuaWQpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXMyLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgICBub2RlLnJlbW92ZSgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgIF90aGlzMi4kbWVzc2FnZS5lcnJvcihlcnIpOwogICAgICAgIH0pOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgb25DaGFuZ2VOYW1lOiBmdW5jdGlvbiBvbkNoYW5nZU5hbWUocGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAocGFyYW1zLmV2ZW50VHlwZSA9PSAnYmx1cicpIHsKICAgICAgICB2YXIgZGF0YSA9IHsKICAgICAgICAgIG5hbWU6IHBhcmFtcy5uZXdOYW1lLAogICAgICAgICAgaWQ6IHBhcmFtcy5pZAogICAgICAgIH07CiAgICAgICAgaW50ZXJmYWNlRWRpdE5hbWUoZGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczMuJG1lc3NhZ2UuZXJyb3IoZXJyKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8vIOa3u+WKoOWIhuexuwogICAgYWRkU29ydDogZnVuY3Rpb24gYWRkU29ydCgpIHsKICAgICAgdGhpcy5hcHBlbmQoewogICAgICAgIGlkOiB0aGlzLnRyZWVJZCB8fCAwCiAgICAgIH0pOwogICAgfSwKICAgIC8vIOeCueWHu+iPnOWNlQogICAgY2xpY2tNZW51OiBmdW5jdGlvbiBjbGlja01lbnUoZGF0YSwgbmFtZSkgewogICAgICBpZiAobmFtZSA9PSAxKSB7CiAgICAgICAgdGhpcy5hcHBlbmQoZGF0YSk7CiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSAyKSB7CiAgICAgICAgdGhpcy5lZGl0UGljKGRhdGEpOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gMykgewogICAgICAgIHRoaXMucmVtb3ZlKGRhdGEsICfliIbnsbsnKTsKICAgICAgfQogICAgfSwKICAgIHVwbG9hZFN1Y2Nlc3M6IGZ1bmN0aW9uIHVwbG9hZFN1Y2Nlc3MoKSB7CiAgICAgIHRoaXMuZmlsZURhdGEucGFnZSA9IDE7CiAgICAgIHRoaXMuaW5pdERhdGEoKTsKICAgICAgdGhpcy5nZXRGaWxlTGlzdCgpOwogICAgfSwKICAgIHVwbG9hZE1vZGFsOiBmdW5jdGlvbiB1cGxvYWRNb2RhbCgpIHsKICAgICAgdGhpcy4kcmVmcy51cGxvYWQudXBsb2FkTW9kYWwgPSB0cnVlOwogICAgfSwKICAgIGVudGVyTW91c2U6IGZ1bmN0aW9uIGVudGVyTW91c2UoaXRlbSkgewogICAgICBpdGVtLnJlYWxOYW1lID0gIWl0ZW0ucmVhbE5hbWU7CiAgICB9LAogICAgZW50ZXJMZWF2ZTogZnVuY3Rpb24gZW50ZXJMZWF2ZShpdGVtKSB7CiAgICAgIGl0ZW0uaXNTaG93RWRpdCA9ICFpdGVtLmlzU2hvd0VkaXQ7CiAgICB9LAogICAgLy8g5LiK5Lyg5aS06YOodG9rZW4KICAgIGdldFRva2VuOiBmdW5jdGlvbiBnZXRUb2tlbigpIHsKICAgICAgdGhpcy5oZWFkZXJbJ0F1dGhvcmktemF0aW9uJ10gPSAnQmVhcmVyICcgKyBnZXRDb29raWVzKCd0b2tlbicpOwogICAgfSwKICAgIG1vdmVJbWc6IGZ1bmN0aW9uIG1vdmVJbWcoc3RhdHVzKSB7CiAgICAgIGlmICghc3RhdHVzKSB7CiAgICAgICAgdGhpcy5nZXRNb3ZlKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCF0aGlzLmlkcy50b1N0cmluZygpKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOmAieaLqeWbvueJhycpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIHNlYXJjaEltZzogZnVuY3Rpb24gc2VhcmNoSW1nKCkge30sCiAgICAvLyDnp7vliqjliIbnsbsKICAgIGdldE1vdmU6IGZ1bmN0aW9uIGdldE1vdmUoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB2YXIgZGF0YSA9IHsKICAgICAgICBwaWQ6IHRoaXMucGlkcywKICAgICAgICBpbWFnZXM6IHRoaXMuaWRzLnRvU3RyaW5nKCkKICAgICAgfTsKICAgICAgaWYgKCFkYXRhLmltYWdlcykgcmV0dXJuOwogICAgICBtb3ZlQXBpKGRhdGEpLnRoZW4oLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWUocmVzKSB7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQubikgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgICAgICAgICAgX3RoaXM0LmdldEZpbGVMaXN0KCk7CiAgICAgICAgICAgICAgICBfdGhpczQucGlkcyA9IDA7CiAgICAgICAgICAgICAgICBfdGhpczQuY2hlY2tQaWNMaXN0ID0gW107CiAgICAgICAgICAgICAgICBfdGhpczQuaWRzID0gW107CiAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7CiAgICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNC4kbWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgZGVsSW1nOiBmdW5jdGlvbiBkZWxJbWcoaWQpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHZhciBpZHMgPSB7CiAgICAgICAgaWRzOiBpZAogICAgICB9OwogICAgICB2YXIgZGVsZnJvbURhdGEgPSB7CiAgICAgICAgdGl0bGU6ICfliKDpmaTpgInkuK3lm77niYcnLAogICAgICAgIHVybDogImZpbGUvZmlsZS9kZWxldGUiLAogICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgIGlkczogaWRzCiAgICAgIH07CiAgICAgIHRoaXMuJG1vZGFsU3VyZShkZWxmcm9tRGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgX3RoaXM1LmdldEZpbGVMaXN0KCk7CiAgICAgICAgX3RoaXM1LmNoZWNrUGljTGlzdCA9IFtdOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM1LiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDliKDpmaTlm77niYcKICAgIGVkaXRQaWNMaXN0OiBmdW5jdGlvbiBlZGl0UGljTGlzdChpZCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdmFyIGlkcyA9IHsKICAgICAgICBpZHM6IGlkIHx8IHRoaXMuaWRzLnRvU3RyaW5nKCkKICAgICAgfTsKICAgICAgdmFyIGRlbGZyb21EYXRhID0gewogICAgICAgIHRpdGxlOiAn5Yig6Zmk6YCJ5Lit5Zu+54mHJywKICAgICAgICB1cmw6ICJmaWxlL2ZpbGUvZGVsZXRlIiwKICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBpZHM6IGlkcwogICAgICB9OwogICAgICB0aGlzLiRtb2RhbFN1cmUoZGVsZnJvbURhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgIF90aGlzNi5nZXRGaWxlTGlzdCgpOwogICAgICAgIF90aGlzNi5pbml0RGF0YSgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM2LiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBpbml0RGF0YTogZnVuY3Rpb24gaW5pdERhdGEoKSB7CiAgICAgIHRoaXMuY2hlY2tQaWNMaXN0ID0gW107CiAgICAgIHRoaXMuaWRzID0gW107CiAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPSBbXTsKICAgIH0sCiAgICAvLyDpvKDmoIfnp7vlhaUg56e75Ye6CiAgICBvbk1vdXNlT3ZlcjogZnVuY3Rpb24gb25Nb3VzZU92ZXIocm9vdCwgbm9kZSwgZGF0YSkgewogICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBkYXRhLmZsYWcgPSAhZGF0YS5mbGFnOwogICAgICBpZiAoZGF0YS5mbGFnMikgewogICAgICAgIGRhdGEuZmxhZzIgPSBmYWxzZTsKICAgICAgfQogICAgfSwKICAgIC8vIOeCueWHu+agkQogICAgYXBwZW5kQnRuOiBmdW5jdGlvbiBhcHBlbmRCdG4oZGF0YSkgewogICAgICB0aGlzLnRyZWVJZCA9IGRhdGEuaWQ7CiAgICAgIHRoaXMuZmlsZURhdGEucGFnZSA9IDE7CiAgICAgIHRoaXMuZ2V0RmlsZUxpc3QoKTsKICAgIH0sCiAgICAvLyDngrnlh7vmt7vliqAKICAgIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKGRhdGEpIHsKICAgICAgdGhpcy50cmVlSWQgPSBkYXRhLmlkOwogICAgICB0aGlzLmdldEZyb20oKTsKICAgIH0sCiAgICAvLyDliKDpmaTliIbnsbsKICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKGRhdGEsIHRpdCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdGhpcy50aXRzID0gdGl0OwogICAgICB2YXIgZGVsZnJvbURhdGEgPSB7CiAgICAgICAgdGl0bGU6ICfliKDpmaQgWyAnICsgZGF0YS50aXRsZSArICcgXSAnICsgJ+WIhuexuycsCiAgICAgICAgdXJsOiAiZmlsZS9jYXRlZ29yeS8iLmNvbmNhdChkYXRhLmlkKSwKICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAogICAgICAgIGlkczogJycKICAgICAgfTsKICAgICAgdGhpcy4kbW9kYWxTdXJlKGRlbGZyb21EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICBfdGhpczcuZ2V0TGlzdCgpOwogICAgICAgIF90aGlzNy5jaGVja1BpY0xpc3QgPSBbXTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNy4kbWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g57yW6L6R5qCR6KGo5Y2VCiAgICBlZGl0UGljOiBmdW5jdGlvbiBlZGl0UGljKGRhdGEpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHRoaXMuJG1vZGFsRm9ybShjYXRlZ29yeUVkaXRBcGkoZGF0YS5pZCkpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBfdGhpczguZ2V0TGlzdCgpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDmkJzntKLliIbnsbsKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHRoaXMuZ2V0TGlzdCgnc2VhcmNoJyk7CiAgICB9LAogICAgLy8g5YiG57G75YiX6KGo5qCRCiAgICBnZXRMaXN0OiBmdW5jdGlvbiBnZXRMaXN0KHR5cGUpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHZhciBkYXRhID0gewogICAgICAgIHRpdGxlOiAn5YWo6YOo5Zu+54mHJywKICAgICAgICBpZDogJycsCiAgICAgICAgcGlkOiAwCiAgICAgIH07CiAgICAgIGdldENhdGVnb3J5TGlzdEFwaSh0aGlzLnVwbG9hZE5hbWUpLnRoZW4oLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlMihyZXMpIHsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDIpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLm4pIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodHlwZSAhPT0gJ3NlYXJjaCcpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM5LnRyZWVEYXRhMiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RvQ29uc3VtYWJsZUFycmF5KHJlcy5kYXRhLmxpc3QpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXMuZGF0YS5saXN0LnVuc2hpZnQoZGF0YSk7CiAgICAgICAgICAgICAgICBfdGhpczkudHJlZURhdGEgPSByZXMuZGF0YS5saXN0OwogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYSgyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM5LiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoaXRlbSwgY2FsbGJhY2spIHsKICAgICAgZ2V0Q2F0ZWdvcnlMaXN0QXBpKHsKICAgICAgICBwaWQ6IGl0ZW0uaWQKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMyA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWUzKHJlcykgewogICAgICAgICAgdmFyIGRhdGE7CiAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQzKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5uKSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgZGF0YSA9IHJlcy5kYXRhLmxpc3Q7CiAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKTsKICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmEoMik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDMpIHsKICAgICAgICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKHJlcykge30pOwogICAgfSwKICAgIGFkZEZsYWc6IGZ1bmN0aW9uIGFkZEZsYWcodHJlZWRhdGEpIHsKICAgICAgdmFyIF90aGlzMCA9IHRoaXM7CiAgICAgIHRyZWVkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIF90aGlzMC4kc2V0KGl0ZW0sICdmbGFnJywgZmFsc2UpOwogICAgICAgIF90aGlzMC4kc2V0KGl0ZW0sICdmbGFnMicsIGZhbHNlKTsKICAgICAgICBpdGVtLmNoaWxkcmVuICYmIF90aGlzMC5hZGRGbGFnKGl0ZW0uY2hpbGRyZW4pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDmlrDlu7rliIbnsbsKICAgIGFkZDogZnVuY3Rpb24gYWRkKCkgewogICAgICB0aGlzLnRyZWVJZCA9IDA7CiAgICAgIHRoaXMuZ2V0RnJvbSgpOwogICAgfSwKICAgIHNlYXJjaEZpbGU6IGZ1bmN0aW9uIHNlYXJjaEZpbGUoKSB7CiAgICAgIHRoaXMuZmlsZURhdGEucGFnZSA9IDE7CiAgICAgIHRoaXMuZ2V0RmlsZUxpc3QoKTsKICAgIH0sCiAgICAvLyDmlofku7bliJfooagKICAgIGdldEZpbGVMaXN0OiBmdW5jdGlvbiBnZXRGaWxlTGlzdCgpIHsKICAgICAgdmFyIF90aGlzMSA9IHRoaXM7CiAgICAgIHRoaXMuZmlsZURhdGEucGlkID0gdGhpcy50cmVlSWQ7CiAgICAgIGZpbGVMaXN0QXBpKHRoaXMuZmlsZURhdGEpLnRoZW4oLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjQgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlNChyZXMpIHsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0Lm4pIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXMuZGF0YS5saXN0LmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgICAgICAgICAgIGVsLmlzU2VsZWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGVsLmlzRWRpdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICBlbC5pc1Nob3dFZGl0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGVsLnJlYWxOYW1lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGVsLm51bSA9IDA7CiAgICAgICAgICAgICAgICAgIF90aGlzMS5lZGl0TmFtZShlbCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzMS5waWN0cnVlTGlzdCA9IHJlcy5kYXRhLmxpc3Q7CiAgICAgICAgICAgICAgICBpZiAoX3RoaXMxLnBpY3RydWVMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICBfdGhpczEuaXNTaG93UGljID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczEuaXNTaG93UGljID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzMS50b3RhbCA9IHJlcy5kYXRhLmNvdW50OwogICAgICAgICAgICAgICAgX3RoaXMxLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIC8v56Gu5L+dZG9t5Yqg6L295a6M5q+VCiAgICAgICAgICAgICAgICAgIC8vIHRoaXMuc2hvd1NlbGVjdERhdGEoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYSgyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NCkgewogICAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMxLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBzaG93U2VsZWN0RGF0YTogZnVuY3Rpb24gc2hvd1NlbGVjdERhdGEoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgaWYgKHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubGVuZ3RoID4gMCkgewogICAgICAgIC8vIOWIpOaWreaYr+WQpuWtmOWcqOWLvumAiei/h+eahOaVsOaNrgogICAgICAgIHRoaXMucGljdHJ1ZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7CiAgICAgICAgICAvLyDojrflj5bmlbDmja7liJfooajmjqXlj6Por7fmsYLliLDnmoTmlbDmja4KICAgICAgICAgIF90aGlzMTAubXVsdGlwbGVTZWxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAvLyDli77pgInliLDnmoTmlbDmja4KICAgICAgICAgICAgaWYgKHJvdy5hdHRfaWQgPT09IGl0ZW0uYXR0X2lkKSB7CiAgICAgICAgICAgICAgLy8gdGhpcy4kcmVmcy50YWJsZS50b2dnbGVSb3dTZWxlY3Rpb24oaXRlbSwgdHJ1ZSk7IC8vIOiLpeaciemHjeWQiO+8jOWImeWbnuaYvuivpeadoeaVsOaNrgogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGdldFJvd0tleTogZnVuY3Rpb24gZ2V0Um93S2V5KHJvdykgewogICAgICByZXR1cm4gcm93LmF0dF9pZDsKICAgIH0sCiAgICAvL+WvueixoeaVsOe7hOWOu+mHje+8mwogICAgdW5pcXVlOiBmdW5jdGlvbiB1bmlxdWUoYXJyKSB7CiAgICAgIHZhciByZXN1bHQgPSBhcnIucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1cnIpIHsKICAgICAgICB2YXIgeCA9IGFjYy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5hdHRfaWQgPT09IGN1cnIuYXR0X2lkOwogICAgICAgIH0pOwogICAgICAgIGlmICgheCkgewogICAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW2N1cnJdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGFjYzsKICAgICAgICB9CiAgICAgIH0sIFtdKTsKICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0sCiAgICAvLyAg6YCJ5Lit5p+Q5LiA6KGMCiAgICBoYW5kbGVTZWxlY3RSb3c6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdFJvdyhzZWxlY3Rpb24pIHsKICAgICAgdmFyIGFyciA9IHRoaXMudW5pcXVlKHNlbGVjdGlvbik7CiAgICAgIHZhciB1bmlxdWVBcnIgPSBbXTsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBpdGVtID0gYXJyW2ldOwogICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGl0ZW0uYXR0X2lkKSkgewogICAgICAgICAgdW5pcXVlQXJyLnB1c2goaXRlbSk7CiAgICAgICAgICBpZHMucHVzaChpdGVtLmF0dF9pZCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuaWRzID0gaWRzOwogICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdW5pcXVlQXJyOwogICAgfSwKICAgIHBhZ2VDaGFuZ2U6IGZ1bmN0aW9uIHBhZ2VDaGFuZ2UoaW5kZXgpIHsKICAgICAgdGhpcy5maWxlRGF0YS5wYWdlID0gaW5kZXg7CiAgICAgIHRoaXMuZ2V0RmlsZUxpc3QoKTsKICAgICAgdGhpcy5jaGVja1BpY0xpc3QgPSBbXTsKICAgIH0sCiAgICAvLyDmlrDlu7rliIbnsbvooajljZUKICAgIGdldEZyb206IGZ1bmN0aW9uIGdldEZyb20oKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy4kbW9kYWxGb3JtKGNyZWF0ZUFwaSh7CiAgICAgICAgaWQ6IHRoaXMudHJlZUlkCiAgICAgIH0pKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczExLmdldExpc3QoKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5LiK5Lyg5LmL5YmNCiAgICBiZWZvcmVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVVwbG9hZChmaWxlKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKICAgICAgLy8gaWYgKGZpbGUuc2l6ZSA+IDIwOTcxNTIpIHsKICAgICAgLy8gICB0aGlzLiRtZXNzYWdlLmVycm9yKGZpbGUubmFtZSArICLlpKflsI/otoXov4cyTSEiKTsKICAgICAgLy8gfSBlbHNlCiAgICAgIGlmICghL2ltYWdlXC9cdysvLnRlc3QoZmlsZS50eXBlKSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivt+S4iuS8oOS7pWpwZ+OAgWpwZWfjgIFwbmfnrYnnu5PlsL7nmoTlm77niYfmlofku7YnKTsgLy9GaWxlRXh0LnRvTG93ZXJDYXNlKCkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgdGhpcy51cGxvYWREYXRhID0gewogICAgICAgIHBpZDogdGhpcy50cmVlSWQKICAgICAgfTsKICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgewogICAgICAgIF90aGlzMTIuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJlc29sdmUodHJ1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICByZXR1cm4gcHJvbWlzZTsKICAgIH0sCiAgICAvLyDkuIrkvKDmiJDlip8KICAgIGhhbmRsZVN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZVN1Y2Nlc3MocmVzLCBmaWxlLCBmaWxlTGlzdCkgewogICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgIHRoaXMuZmlsZURhdGEucGFnZSA9IDE7CiAgICAgICAgdGhpcy5nZXRGaWxlTGlzdCgpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDlhbPpl60KICAgIGNhbmNlbDogZnVuY3Rpb24gY2FuY2VsKCkgewogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VDYW5jZWwnKTsKICAgIH0sCiAgICAvLyDpgInkuK3lm77niYcKICAgIGNoYW5nSW1hZ2U6IGZ1bmN0aW9uIGNoYW5nSW1hZ2UoaXRlbSwgaW5kZXgsIHJvdykgewogICAgICB2YXIgX3RoaXMxMyA9IHRoaXM7CiAgICAgIHZhciBhY3RpdmVJbmRleCA9IDA7CiAgICAgIGlmICghaXRlbS5pc1NlbGVjdCkgewogICAgICAgIGl0ZW0uaXNTZWxlY3QgPSB0cnVlOwogICAgICAgIHRoaXMuY2hlY2tQaWNMaXN0LnB1c2goaXRlbSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaXRlbS5pc1NlbGVjdCA9IGZhbHNlOwogICAgICAgIHRoaXMuY2hlY2tQaWNMaXN0Lm1hcChmdW5jdGlvbiAoZWwsIGluZGV4KSB7CiAgICAgICAgICBpZiAoZWwuYXR0X2lkID09IGl0ZW0uYXR0X2lkKSB7CiAgICAgICAgICAgIGFjdGl2ZUluZGV4ID0gaW5kZXg7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5jaGVja1BpY0xpc3Quc3BsaWNlKGFjdGl2ZUluZGV4LCAxKTsKICAgICAgfQogICAgICB0aGlzLmlkcyA9IFtdOwogICAgICB0aGlzLmNoZWNrUGljTGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0sIGkpIHsKICAgICAgICBfdGhpczEzLmlkcy5wdXNoKGl0ZW0uYXR0X2lkKTsKICAgICAgfSk7CiAgICAgIHRoaXMucGljdHJ1ZUxpc3QubWFwKGZ1bmN0aW9uIChlbCwgaSkgewogICAgICAgIGlmIChlbC5pc1NlbGVjdCkgewogICAgICAgICAgX3RoaXMxMy5jaGVja1BpY0xpc3QuZmlsdGVyKGZ1bmN0aW9uIChlbDIsIGopIHsKICAgICAgICAgICAgaWYgKGVsLmF0dF9pZCA9PSBlbDIuYXR0X2lkKSB7CiAgICAgICAgICAgICAgZWwubnVtID0gaiArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlbC5udW0gPSAwOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g54K55Ye75L2/55So6YCJ5Lit5Zu+54mHCiAgICBjaGVja1BpY3M6IGZ1bmN0aW9uIGNoZWNrUGljcygpIHsKICAgICAgaWYgKHRoaXMuaXNDaG9pY2UgPT09ICfljZXpgIknKSB7CiAgICAgICAgaWYgKHRoaXMuY2hlY2tQaWNMaXN0Lmxlbmd0aCA+IDEpIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+acgOWkmuWPquiDvemAieS4gOW8oOWbvueJhycpOwogICAgICAgIHRoaXMuJGVtaXQoJ2dldFBpYycsIHRoaXMuY2hlY2tQaWNMaXN0WzBdKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgbWF4TGVuZ3RoID0gdGhpcy4kcm91dGUucXVlcnkubWF4TGVuZ3RoOwogICAgICAgIGlmIChtYXhMZW5ndGggIT0gdW5kZWZpbmVkICYmIHRoaXMuY2hlY2tQaWNMaXN0Lmxlbmd0aCA+IE51bWJlcihtYXhMZW5ndGgpKSByZXR1cm4gdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfmnIDlpJrlj6rog73pgIknICsgbWF4TGVuZ3RoICsgJ+W8oOWbvueJhycpOwogICAgICAgIHRoaXMuJGVtaXQoJ2dldFBpY0QnLCB0aGlzLmNoZWNrUGljTGlzdCk7CiAgICAgICAgdGhpcy4kZW1pdCgnZ2V0UGljJywgdGhpcy5jaGVja1BpY0xpc3QpOwogICAgICB9CiAgICB9LAogICAgZWRpdE5hbWU6IGZ1bmN0aW9uIGVkaXROYW1lKGl0ZW0pIHsKICAgICAgdmFyIGl0ID0gaXRlbS5yZWFsX25hbWUuc3BsaXQoJy4nKTsKICAgICAgdmFyIGl0MSA9IGl0WzFdID09IHVuZGVmaW5lZCA/IFtdIDogaXRbMV07CiAgICAgIHZhciBsZW4gPSBpdFswXS5sZW5ndGggKyBpdDEubGVuZ3RoOwogICAgICBpdGVtLmVkaXROYW1lID0gbGVuIDwgMTAgPyBpdGVtLnJlYWxfbmFtZSA6IGl0ZW0ucmVhbF9uYW1lLnN1YnN0cigwLCA0KSArICcuLi4nICsgaXRlbS5yZWFsX25hbWUuc3Vic3RyKC01LCA1KTsKICAgIH0sCiAgICAvLyDkv67mlLnlm77niYfmloflrZfkuIrkvKAKICAgIGJpbmRUeHQ6IGZ1bmN0aW9uIGJpbmRUeHQoaXRlbSkgewogICAgICB2YXIgX3RoaXMxNCA9IHRoaXM7CiAgICAgIGlmIChpdGVtLnJlYWxfbmFtZSA9PSAnJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivt+Whq+WGmeWGheWuuScpOwogICAgICB9CiAgICAgIGZpbGVVcGRhdGVBcGkoaXRlbS5hdHRfaWQsIHsKICAgICAgICByZWFsX25hbWU6IGl0ZW0ucmVhbF9uYW1lCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMTQuZWRpdE5hbWUoaXRlbSk7CiAgICAgICAgaXRlbS5pc0VkaXQgPSBmYWxzZTsKICAgICAgICBfdGhpczE0LiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIF90aGlzMTQuJG1lc3NhZ2UuZXJyb3IoZXJyb3IubXNnKTsKICAgICAgfSk7CiAgICB9CiAgfQp9Ow=="},null]}