21fce2cf8dff4fe2e10f80420bf33c1e.json 100 KB

1
  1. {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js??ref--0-2!E:\\item\\newItem\\admin\\src\\pages\\user\\list\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\pages\\user\\list\\index.vue","mtime":1677828270254},{"path":"E:\\item\\newItem\\admin\\babel.config.js","mtime":1677828270071},{"path":"E:\\item\\newItem\\admin\\.babelrc","mtime":1677828270070},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\iview-loader\\index.js","mtime":1570440814000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRTovaXRlbS9uZXdJdGVtL2FkbWluL25vZGVfbW9kdWxlcy9AdnVlL2JhYmVsLXByZXNldC1hcHAvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMiOwppbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IHVzZXJMYWJlbCBmcm9tICdAL2NvbXBvbmVudHMvdXNlckxhYmVsJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKaW1wb3J0IGV4cGFuZFJvdyBmcm9tICcuL3RhYmxlRXhwYW5kLnZ1ZSc7CmltcG9ydCB1c2VyRWRpdCBmcm9tICcuL2hhbmRsZS91c2VyRWRpdC52dWUnOwppbXBvcnQgeyB1c2VyTGlzdCwgZ2V0VXNlckRhdGEsIGlzU2hvd0FwaSwgZWRpdE90aGVyQXBpLCBnaXZlTGV2ZWxBcGksIHVzZXJTZXRHcm91cCwgdXNlckdyb3VwQXBpLCBsZXZlbExpc3RBcGksIHVzZXJTZXRMYWJlbEFwaSwgdXNlckxhYmVsQXBpLCB1c2VyU3luY2hybywgZ2V0VXNlclNhdmVGb3JtLCBnaXZlTGV2ZWxUaW1lQXBpLCBnZXRVc2VySW5mbywgc2V0VXNlciBhcyBfc2V0VXNlciwgZWRpdFVzZXIsIHNhdmVTZXRMYWJlbCB9IGZyb20gJ0AvYXBpL3VzZXInOwppbXBvcnQgeyBhZ2VudFNwcmVhZEFwaSB9IGZyb20gJ0AvYXBpL2FnZW50JzsKaW1wb3J0IHsgZXhwb3J0VXNlckxpc3QgfSBmcm9tICdAL2FwaS9leHBvcnQnOwppbXBvcnQgZWRpdEZyb20gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9mcm9tL2Zyb20nOwppbXBvcnQgc2VuZEZyb20gZnJvbSAnQC9jb21wb25lbnRzL3NlbmRDb3Vwb25zL2luZGV4JzsKaW1wb3J0IHVzZXJEZXRhaWxzIGZyb20gJy4vaGFuZGxlL3VzZXJEZXRhaWxzJzsKaW1wb3J0IG5ld3NDYXRlZ29yeSBmcm9tICdAL2NvbXBvbmVudHMvbmV3c0NhdGVnb3J5L2luZGV4JzsKaW1wb3J0IGNpdHkgZnJvbSAnQC91dGlscy9jaXR5JzsKaW1wb3J0IGN1c3RvbWVySW5mbyBmcm9tICdAL2NvbXBvbmVudHMvY3VzdG9tZXJJbmZvJzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICd1c2VyX2xpc3QnLAogIGNvbXBvbmVudHM6IHsKICAgIGV4cGFuZFJvdzogZXhwYW5kUm93LAogICAgZWRpdEZyb206IGVkaXRGcm9tLAogICAgc2VuZEZyb206IHNlbmRGcm9tLAogICAgdXNlckRldGFpbHM6IHVzZXJEZXRhaWxzLAogICAgbmV3c0NhdGVnb3J5OiBuZXdzQ2F0ZWdvcnksCiAgICBjdXN0b21lckluZm86IGN1c3RvbWVySW5mbywKICAgIHVzZXJMYWJlbDogdXNlckxhYmVsLAogICAgdXNlckVkaXQ6IHVzZXJFZGl0CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgZGF0YUxhYmVsOiBbXSwKICAgICAgc2VsZWN0RGF0YUxhYmVsOiBbXSwKICAgICAgdXNlckRhdGE6IHt9LAogICAgICBtb2RhbHM6IGZhbHNlLAogICAgICBzZWxlY3RMYWJlbFNob3c6IGZhbHNlLAogICAgICBsYWJlbFNob3c6IGZhbHNlLAogICAgICBjdXN0b21lclNob3c6IGZhbHNlLAogICAgICBwcm9tb3RlclNob3c6IGZhbHNlLAogICAgICBsYWJlbEFjdGl2ZTogewogICAgICAgIHVpZDogMAogICAgICB9LAogICAgICBmb3JtSW5saW5lOiB7CiAgICAgICAgdWlkOiAwLAogICAgICAgIHNwcmVhZF91aWQ6IDAsCiAgICAgICAgaW1hZ2U6ICcnCiAgICAgIH0sCiAgICAgIG9wdGlvbnM6IHsKICAgICAgICBzaG9ydGN1dHM6IFt7CiAgICAgICAgICB0ZXh0OiAn5LuK5aSpJywKICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSgpIHsKICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgIHN0YXJ0LnNldFRpbWUobmV3IERhdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCBuZXcgRGF0ZSgpLmdldE1vbnRoKCksIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpKSk7CiAgICAgICAgICAgIHJldHVybiBbc3RhcnQsIGVuZF07CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgdGV4dDogJ+aYqOWkqScsCiAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7CiAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICBzdGFydC5zZXRUaW1lKHN0YXJ0LnNldFRpbWUobmV3IERhdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCBuZXcgRGF0ZSgpLmdldE1vbnRoKCksIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gMSkpKTsKICAgICAgICAgICAgZW5kLnNldFRpbWUoZW5kLnNldFRpbWUobmV3IERhdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCBuZXcgRGF0ZSgpLmdldE1vbnRoKCksIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gMSkpKTsKICAgICAgICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICB0ZXh0OiAn5pyA6L+RN+WkqScsCiAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoKSB7CiAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICBzdGFydC5zZXRUaW1lKHN0YXJ0LnNldFRpbWUobmV3IERhdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCBuZXcgRGF0ZSgpLmdldE1vbnRoKCksIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gNikpKTsKICAgICAgICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICB0ZXh0OiAn5pyA6L+RMzDlpKknLAogICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkgewogICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgc3RhcnQuc2V0VGltZShzdGFydC5zZXRUaW1lKG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgbmV3IERhdGUoKS5nZXRNb250aCgpLCBuZXcgRGF0ZSgpLmdldERhdGUoKSAtIDI5KSkpOwogICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIHRleHQ6ICfmnKzmnIgnLAogICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkgewogICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgc3RhcnQuc2V0VGltZShzdGFydC5zZXRUaW1lKG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgbmV3IERhdGUoKS5nZXRNb250aCgpLCAxKSkpOwogICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIHRleHQ6ICfmnKzlubQnLAogICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkgewogICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgc3RhcnQuc2V0VGltZShzdGFydC5zZXRUaW1lKG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgMCwgMSkpKTsKICAgICAgICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXTsKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9LAogICAgICBjb2xsYXBzZTogZmFsc2UsCiAgICAgIGhlYWRlTnVtOiBbewogICAgICAgIHR5cGU6ICcnLAogICAgICAgIG5hbWU6ICflhajpg6gnCiAgICAgIH0sIHsKICAgICAgICB0eXBlOiAnd2VjaGF0JywKICAgICAgICBuYW1lOiAn5b6u5L+h5YWs5LyX5Y+3JwogICAgICB9LCB7CiAgICAgICAgdHlwZTogJ3JvdXRpbmUnLAogICAgICAgIG5hbWU6ICflvq7kv6HlsI/nqIvluo8nCiAgICAgIH0sIHsKICAgICAgICB0eXBlOiAnaDUnLAogICAgICAgIG5hbWU6ICdINScKICAgICAgfSwgewogICAgICAgIHR5cGU6ICdwYycsCiAgICAgICAgbmFtZTogJ1BDJwogICAgICB9LCB7CiAgICAgICAgdHlwZTogJ2FwcCcsCiAgICAgICAgbmFtZTogJ0FQUCcKICAgICAgfV0sCiAgICAgIGFkZHJlc3M6IFtdLAogICAgICBhZGRyZXNEYXRhOiBjaXR5LAogICAgICBpc1Nob3dTZW5kOiB0cnVlLAogICAgICBtb2RhbDEzOiBmYWxzZSwKICAgICAgbWF4Q29sczogNCwKICAgICAgc2Nyb2xsZXJIZWlnaHQ6ICc2MDAnLAogICAgICBjb250ZW50VG9wOiAnMTMwJywKICAgICAgY29udGVudFdpZHRoOiAnOTglJywKICAgICAgZ3JpZDogewogICAgICAgIHhsOiA4LAogICAgICAgIGxnOiA4LAogICAgICAgIG1kOiAxMiwKICAgICAgICBzbTogMjQsCiAgICAgICAgeHM6IDI0CiAgICAgIH0sCiAgICAgIGdyaWQyOiB7CiAgICAgICAgeGw6IDE4LAogICAgICAgIGxnOiAxNiwKICAgICAgICBtZDogMTIsCiAgICAgICAgc206IDI0LAogICAgICAgIHhzOiAyNAogICAgICB9LAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgdG90YWw6IDAsCiAgICAgIHVzZXJGcm9tOiB7CiAgICAgICAgbGFiZWxfaWQ6ICcnLAogICAgICAgIHVzZXJfdHlwZTogJycsCiAgICAgICAgc3RhdHVzOiAnJywKICAgICAgICBzZXg6ICcnLAogICAgICAgIGlzX3Byb21vdGVyOiAnJywKICAgICAgICBjb3VudHJ5OiAnJywKICAgICAgICBpc01lbWJlcjogJycsCiAgICAgICAgcGF5X2NvdW50OiAnJywKICAgICAgICB1c2VyX3RpbWVfdHlwZTogJycsCiAgICAgICAgdXNlcl90aW1lOiAnJywKICAgICAgICBuaWNrbmFtZTogJycsCiAgICAgICAgcHJvdmluY2U6ICcnLAogICAgICAgIGNpdHk6ICcnLAogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgbGltaXQ6IDE1LAogICAgICAgIGxldmVsOiAnJywKICAgICAgICBncm91cF9pZDogJycsCiAgICAgICAgZmllbGRfa2V5OiAnJwogICAgICB9LAogICAgICBmaWVsZF9rZXk6ICcnLAogICAgICBsZXZlbDogJycsCiAgICAgIGdyb3VwX2lkOiAnJywKICAgICAgbGFiZWxfaWQ6ICcnLAogICAgICB1c2VyX3RpbWVfdHlwZTogJycsCiAgICAgIHBheV9jb3VudDogJycsCiAgICAgIGNvbHVtbnM6IFt7CiAgICAgICAgdHlwZTogJ2V4cGFuZCcsCiAgICAgICAgd2lkdGg6IDQwLAogICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIHBhcmFtcykgewogICAgICAgICAgcmV0dXJuIGgoZXhwYW5kUm93LCB7CiAgICAgICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgICAgcm93OiBwYXJhbXMucm93CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIHR5cGU6ICdzZWxlY3Rpb24nLAogICAgICAgIHdpZHRoOiA2MCwKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAnSUQnLAogICAgICAgIGtleTogJ3VpZCcsCiAgICAgICAgd2lkdGg6IDgwCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+WktOWDjycsCiAgICAgICAgc2xvdDogJ2F2YXRhcnMnLAogICAgICAgIG1pbldpZHRoOiA2MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICflp5PlkI0nLAogICAgICAgIHNsb3Q6ICduaWNrbmFtZScsCiAgICAgICAgbWluV2lkdGg6IDE1MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfku5jotLnkvJrlkZgnLAogICAgICAgIHNsb3Q6ICdpc01lbWJlcicsCiAgICAgICAgbWluV2lkdGg6IDkwCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+eUqOaIt+etiee6pycsCiAgICAgICAga2V5OiAnbGV2ZWwnLAogICAgICAgIG1pbldpZHRoOiA5MAogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfliIbnu4QnLAogICAgICAgIGtleTogJ2dyb3VwX2lkJywKICAgICAgICBtaW5XaWR0aDogMTAwCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+aJi+acuuWPtycsCiAgICAgICAga2V5OiAncGhvbmUnLAogICAgICAgIG1pbldpZHRoOiAxMDAKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn55So5oi357G75Z6LJywKICAgICAgICBrZXk6ICd1c2VyX3R5cGUnLAogICAgICAgIG1pbldpZHRoOiAxMDAKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn5L2Z6aKdJywKICAgICAgICBrZXk6ICdub3dfbW9uZXknLAogICAgICAgIHNvcnRhYmxlOiAnY3VzdG9tJywKICAgICAgICBtaW5XaWR0aDogMTAwCiAgICAgIH0sIC8vIHsKICAgICAgLy8gICAgIHRpdGxlOiAn54q25oCBJywKICAgICAgLy8gICAgIHNsb3Q6ICdzdGF0dXMnLAogICAgICAvLyAgICAgbWluV2lkdGg6IDEwMAogICAgICAvLyB9LAogICAgICB7CiAgICAgICAgdGl0bGU6ICfmk43kvZwnLAogICAgICAgIHNsb3Q6ICdhY3Rpb24nLAogICAgICAgIGZpeGVkOiAncmlnaHQnLAogICAgICAgIG1pbldpZHRoOiAxMjAKICAgICAgfV0sCiAgICAgIHVzZXJMaXN0czogW10sCiAgICAgIEZyb21EYXRhOiBudWxsLAogICAgICBzZWxlY3Rpb25MaXN0OiBbXSwKICAgICAgdXNlcl9pZHM6ICcnLAogICAgICBzZWxlY3RlZERhdGE6IFtdLAogICAgICB0aW1lVmFsOiBbXSwKICAgICAgZ3JvdXBMaXN0OiBbXSwKICAgICAgbGV2ZWxMaXN0OiBbXSwKICAgICAgbGFiZWxGcm9tOiB7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBsaW1pdDogJycKICAgICAgfSwKICAgICAgbGFiZWxMaXN0czogW10sCiAgICAgIHNlbGVjdGVkSWRzOiBuZXcgU2V0KCksCiAgICAgIC8v6YCJ5Lit5ZCI5bm26aG555qEaWQKICAgICAgaWRzOiBbXQogICAgfTsKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1hcFN0YXRlKCdtZWRpYScsIFsnaXNNb2JpbGUnXSkpLCB7fSwgewogICAgbGFiZWxXaWR0aDogZnVuY3Rpb24gbGFiZWxXaWR0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAxMDA7CiAgICB9LAogICAgbGFiZWxQb3NpdGlvbjogZnVuY3Rpb24gbGFiZWxQb3NpdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7CiAgICB9CiAgfSksCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0TGlzdCgpOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMudXNlckdyb3VwKCk7CiAgICB0aGlzLmxldmVsTGlzdHMoKTsgLy8gdGhpcy5ncm91cExpc3RzKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBzZXRVc2VyOiBmdW5jdGlvbiBzZXRVc2VyKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgdmFyIGRhdGEgPSB0aGlzLiRyZWZzLnVzZXJFZGl0LmZvcm1JdGVtOwogICAgICB2YXIgaWRzID0gW107CiAgICAgIHRoaXMuJHJlZnMudXNlckVkaXQuZGF0YUxhYmVsLm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgIGlkcy5wdXNoKGkuaWQpOwogICAgICB9KTsKICAgICAgZGF0YS5sYWJlbF9pZCA9IGlkczsgLy8gaWYgKCFkYXRhLnJlYWxfbmFtZSkgcmV0dXJuIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl55yf5a6e5aeT5ZCNIik7CiAgICAgIC8vIGlmICghZGF0YS5waG9uZSkgcmV0dXJuIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl5omL5py65Y+3Iik7CiAgICAgIC8vIGlmICghZGF0YS5wd2QpIHJldHVybiB0aGlzLiRNZXNzYWdlLndhcm5pbmcoIuivt+i+k+WFpeWvhueggSIpOwogICAgICAvLyBpZiAoIWRhdGEudHJ1ZV9wd2QpIHJldHVybiB0aGlzLiRNZXNzYWdlLndhcm5pbmcoIuivt+i+k+WFpeehruiupOWvhueggSIpOwoKICAgICAgaWYgKGRhdGEudWlkKSB7CiAgICAgICAgZWRpdFVzZXIoZGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICBfdGhpcy5tb2RhbHMgPSBmYWxzZTsKCiAgICAgICAgICBfdGhpcy4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICAgIF90aGlzLmdldExpc3QoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpcy4kTWVzc2FnZS5lcnJvcihlcnIubXNnKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfc2V0VXNlcihkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzLm1vZGFscyA9IGZhbHNlOwoKICAgICAgICAgIF90aGlzLiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CgogICAgICAgICAgX3RoaXMuZ2V0TGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgIF90aGlzLiRNZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgb25jZUdldExpc3Q6IGZ1bmN0aW9uIG9uY2VHZXRMaXN0KCkgewogICAgICB0aGlzLmxhYmVsQWN0aXZlLnVpZCA9IDA7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOagh+etvuW8ueeql+WFs+mXrQogICAgbGFiZWxDbG9zZTogZnVuY3Rpb24gbGFiZWxDbG9zZSgpIHsKICAgICAgdGhpcy5sYWJlbEFjdGl2ZS51aWQgPSAwOwogICAgICB0aGlzLmxhYmVsU2hvdyA9IGZhbHNlOwogICAgICB0aGlzLnNlbGVjdExhYmVsU2hvdyA9IGZhbHNlOwogICAgfSwKICAgIC8vIOaPkOS6pAogICAgcHV0U2VuZDogZnVuY3Rpb24gcHV0U2VuZChuYW1lKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgdGhpcy4kcmVmc1tuYW1lXS52YWxpZGF0ZShmdW5jdGlvbiAodmFsaWQpIHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIGlmICghX3RoaXMyLmZvcm1JbmxpbmUuc3ByZWFkX3VpZCkgewogICAgICAgICAgICByZXR1cm4gX3RoaXMyLiRNZXNzYWdlLmVycm9yKCfor7fkuIrkvKDnlKjmiLcnKTsKICAgICAgICAgIH0KCiAgICAgICAgICBhZ2VudFNwcmVhZEFwaShfdGhpczIuZm9ybUlubGluZSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgIF90aGlzMi5wcm9tb3RlclNob3cgPSBmYWxzZTsKCiAgICAgICAgICAgIF90aGlzMi4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICAgICAgX3RoaXMyLmdldExpc3QoKTsKCiAgICAgICAgICAgIF90aGlzMi4kcmVmc1tuYW1lXS5yZXNldEZpZWxkcygpOwogICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICBfdGhpczIuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIHNhdmU6IGZ1bmN0aW9uIHNhdmUoKSB7CiAgICAgIHRoaXMubW9kYWxzID0gdHJ1ZTsgLy8gdGhpcy4kbW9kYWxGb3JtKGdldFVzZXJTYXZlRm9ybSgpKQogICAgICAvLyAgIC50aGVuKCgpID0+IHsKICAgICAgLy8gICAgIHRoaXMudXNlckZyb20ucGFnZSA9IDE7CiAgICAgIC8vICAgICB0aGlzLmdldExpc3QoKTsKICAgICAgLy8gICB9KQogICAgICAvLyAgIC5jYXRjaCgocmVzKSA9PiB7CiAgICAgIC8vICAgICB0aGlzLiRNZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICAvLyAgIH0pOwogICAgfSwKICAgIHN5bmNocm86IGZ1bmN0aW9uIHN5bmNocm8oKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgICAgdXNlclN5bmNocm8oKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczMuJE1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMy4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5YiG57uE5YiX6KGoCiAgICBncm91cExpc3RzOiBmdW5jdGlvbiBncm91cExpc3RzKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHVzZXJMYWJlbEFwaSh0aGlzLmxhYmVsRnJvbSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShyZXMpIHsKICAgICAgICAgIHZhciBkYXRhOwogICAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBkYXRhID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgICAgIF90aGlzNC5sYWJlbExpc3RzID0gZGF0YS5saXN0OwoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgICB9KSk7CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHsKICAgICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKCiAgICAgICAgX3RoaXM0LiRNZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBvbkNsaWNrVGFiOiBmdW5jdGlvbiBvbkNsaWNrVGFiKHR5cGUpIHsKICAgICAgdGhpcy51c2VyRnJvbS5wYWdlID0gMTsKICAgICAgdGhpcy51c2VyRnJvbS51c2VyX3R5cGUgPSB0eXBlOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICB1c2VyR3JvdXA6IGZ1bmN0aW9uIHVzZXJHcm91cCgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CgogICAgICB2YXIgZGF0YSA9IHsKICAgICAgICBwYWdlOiAxLAogICAgICAgIGxpbWl0OiAnJwogICAgICB9OwogICAgICB1c2VyR3JvdXBBcGkoZGF0YSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXM1Lmdyb3VwTGlzdCA9IHJlcy5kYXRhLmxpc3Q7CiAgICAgIH0pOwogICAgfSwKICAgIGxldmVsTGlzdHM6IGZ1bmN0aW9uIGxldmVsTGlzdHMoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwoKICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBsaW1pdDogJycsCiAgICAgICAgdGl0bGU6ICcnLAogICAgICAgIGlzX3Nob3c6IDEKICAgICAgfTsKICAgICAgbGV2ZWxMaXN0QXBpKGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzNi5sZXZlbExpc3QgPSByZXMuZGF0YS5saXN0OwogICAgICB9KTsKICAgIH0sCiAgICAvLyDmibnph4/orr7nva7liIbnu4TvvJsKICAgIHNldEdyb3VwOiBmdW5jdGlvbiBzZXRHcm91cCgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CgogICAgICBpZiAodGhpcy5pZHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nopoHorr7nva7liIbnu4TnmoTnlKjmiLcnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgdWlkcyA9IHsKICAgICAgICAgIHVpZHM6IHRoaXMuaWRzCiAgICAgICAgfTsKICAgICAgICB0aGlzLiRtb2RhbEZvcm0odXNlclNldEdyb3VwKHVpZHMpKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiBfdGhpczcuJHJlZnMuc2VuZHMuZ2V0TGlzdCgpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLy8g5om56YeP6K6+572u5qCH562+77ybCiAgICBzZXRMYWJlbDogZnVuY3Rpb24gc2V0TGFiZWwoKSB7CiAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRNZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeiuvue9ruagh+etvueahOeUqOaItycpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciB1aWRzID0gewogICAgICAgICAgdWlkczogdGhpcy5pZHMKICAgICAgICB9OwogICAgICAgIHRoaXMubGFiZWxBY3RpdmUudWlkID0gMDsKICAgICAgICB0aGlzLmxhYmVsU2hvdyA9IHRydWU7IC8vIHRoaXMuJG1vZGFsRm9ybSh1c2VyU2V0TGFiZWxBcGkodWlkcykpLnRoZW4oKCkgPT4KICAgICAgICAvLyAgIHRoaXMuJHJlZnMuc2VuZHMuZ2V0TGlzdCgpCiAgICAgICAgLy8gKTsKICAgICAgfQogICAgfSwKICAgIGFjdGl2ZVNlbGVjdERhdGE6IGZ1bmN0aW9uIGFjdGl2ZVNlbGVjdERhdGEoZGF0YSkgewogICAgICAvLyBsZXQgbGFiZWxzID0gW107CiAgICAgIC8vIGlmICghZGF0YS5sZW5ndGgpIHJldHVybjsKICAgICAgLy8gZGF0YS5tYXAoKGkpID0+IHsKICAgICAgLy8gICBsYWJlbHMucHVzaChpLmlkKTsKICAgICAgLy8gfSk7CiAgICAgIHRoaXMuc2VsZWN0TGFiZWxTaG93ID0gZmFsc2U7CiAgICAgIHRoaXMuc2VsZWN0RGF0YUxhYmVsID0gZGF0YSB8fCBbXTsKICAgIH0sCiAgICAvLyDmibnph4/orr7nva7moIfnrb4KICAgIGFjdGl2ZURhdGE6IGZ1bmN0aW9uIGFjdGl2ZURhdGEoZGF0YSkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKCiAgICAgIHZhciBsYWJlbHMgPSBbXTsKICAgICAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuOwogICAgICBkYXRhLm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgIGxhYmVscy5wdXNoKGkuaWQpOwogICAgICB9KTsKICAgICAgc2F2ZVNldExhYmVsKHsKICAgICAgICB1aWRzOiB0aGlzLmlkcy5qb2luKCcsJyksCiAgICAgICAgbGFiZWxfaWQ6IGxhYmVscwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczgubGFiZWxTaG93ID0gZmFsc2U7CiAgICAgICAgX3RoaXM4LnNlbGVjdGVkSWRzID0gbmV3IFNldCgpOwoKICAgICAgICBfdGhpczguZ2V0TGlzdCgpOwoKICAgICAgICBfdGhpczguJE1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy/mmK/lkKbkuLrku5jotLnkvJrlkZjvvJsKICAgIGNoYW5nZU1lbWJlcjogZnVuY3Rpb24gY2hhbmdlTWVtYmVyKCkgewogICAgICB0aGlzLnVzZXJGcm9tLnBhZ2UgPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDpgInmi6nlm73lrrYKICAgIGNoYW5nZUNvdW50cnk6IGZ1bmN0aW9uIGNoYW5nZUNvdW50cnkoKSB7CiAgICAgIGlmICh0aGlzLnVzZXJGcm9tLmNvdW50cnkgPT09ICdhYnJvYWQnIHx8ICF0aGlzLnVzZXJGcm9tLmNvdW50cnkpIHsKICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdOwogICAgICAgIHRoaXMudXNlckZyb20ucHJvdmluY2UgPSAnJzsKICAgICAgICB0aGlzLnVzZXJGcm9tLmNpdHkgPSAnJzsKICAgICAgICB0aGlzLmFkZHJlc3MgPSBbXTsKICAgICAgfQogICAgfSwKICAgIC8vIOmAieaLqeWcsOWdgAogICAgaGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UodmFsdWUsIHNlbGVjdGVkRGF0YSkgewogICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHNlbGVjdGVkRGF0YS5tYXAoZnVuY3Rpb24gKG8pIHsKICAgICAgICByZXR1cm4gby5sYWJlbDsKICAgICAgfSk7CiAgICAgIHRoaXMudXNlckZyb20ucHJvdmluY2UgPSB0aGlzLnNlbGVjdGVkRGF0YVswXTsKICAgICAgdGhpcy51c2VyRnJvbS5jaXR5ID0gdGhpcy5zZWxlY3RlZERhdGFbMV07CiAgICB9LAogICAgLy8g5YW35L2T5pel5pyfCiAgICBvbmNoYW5nZVRpbWU6IGZ1bmN0aW9uIG9uY2hhbmdlVGltZShlKSB7CiAgICAgIHRoaXMudGltZVZhbCA9IGU7CiAgICAgIHRoaXMudXNlckZyb20udXNlcl90aW1lID0gdGhpcy50aW1lVmFsLmpvaW4oJy0nKTsKICAgIH0sCiAgICAvLyDmk43kvZwKICAgIGNoYW5nZU1lbnU6IGZ1bmN0aW9uIGNoYW5nZU1lbnUocm93LCBuYW1lLCBpbmRleCkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKCiAgICAgIHZhciB1aWQgPSBbXTsKICAgICAgdWlkLnB1c2gocm93LnVpZCk7CiAgICAgIHZhciB1aWRzID0gewogICAgICAgIHVpZHM6IHVpZAogICAgICB9OwoKICAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgICAgY2FzZSAnMSc6CiAgICAgICAgICB0aGlzLiRyZWZzLnVzZXJEZXRhaWxzLm1vZGFscyA9IHRydWU7CiAgICAgICAgICB0aGlzLiRyZWZzLnVzZXJEZXRhaWxzLmdldERldGFpbHMocm93LnVpZCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnMic6CiAgICAgICAgICB0aGlzLmdldE90aGVyRnJvbShyb3cudWlkKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICczJzoKICAgICAgICAgIHRoaXMuZ2l2ZUxldmVsVGltZShyb3cudWlkKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICc0JzoKICAgICAgICAgIHRoaXMuZGVsKHJvdywgJ+a4hemZpCDjgJAgJyArIHJvdy5uaWNrbmFtZSArICcg44CR55qE5Lya5ZGY562J57qnJywgaW5kZXgsICd1c2VyJyk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnNSc6CiAgICAgICAgICB0aGlzLiRtb2RhbEZvcm0odXNlclNldEdyb3VwKHVpZHMpKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIF90aGlzOS5nZXRMaXN0KCk7CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICc2JzoKICAgICAgICAgIHRoaXMub3BlbkxhYmVsKHJvdyk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnNyc6CiAgICAgICAgICB0aGlzLmVkaXRTKHJvdyk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRoaXMuZGVsKHJvdywgJ+ino+mZpOOAkCAnICsgcm93Lm5pY2tuYW1lICsgJyDjgJHnmoTkuIrnuqfmjqjlub/kuronLCBpbmRleCwgJ3R1aWd1YW5nJyk7CiAgICAgIH0KICAgIH0sCiAgICBvcGVuTGFiZWw6IGZ1bmN0aW9uIG9wZW5MYWJlbChyb3cpIHsKICAgICAgdGhpcy5sYWJlbFNob3cgPSB0cnVlOwogICAgICB0aGlzLmxhYmVsQWN0aXZlLnVpZCA9IHJvdy51aWQ7CiAgICB9LAogICAgb3BlblNlbGVjdExhYmVsOiBmdW5jdGlvbiBvcGVuU2VsZWN0TGFiZWwoKSB7CiAgICAgIHRoaXMuc2VsZWN0TGFiZWxTaG93ID0gdHJ1ZTsKICAgIH0sCiAgICBlZGl0UzogZnVuY3Rpb24gZWRpdFMocm93KSB7CiAgICAgIHRoaXMucHJvbW90ZXJTaG93ID0gdHJ1ZTsKICAgICAgdGhpcy5mb3JtSW5saW5lLnVpZCA9IHJvdy51aWQ7CiAgICB9LAogICAgY3VzdG9tZXI6IGZ1bmN0aW9uIGN1c3RvbWVyKCkgewogICAgICB0aGlzLmN1c3RvbWVyU2hvdyA9IHRydWU7CiAgICB9LAogICAgaW1hZ2VPYmplY3Q6IGZ1bmN0aW9uIGltYWdlT2JqZWN0KGUpIHsKICAgICAgdGhpcy5jdXN0b21lclNob3cgPSBmYWxzZTsKICAgICAgdGhpcy5mb3JtSW5saW5lLnNwcmVhZF91aWQgPSBlLnVpZDsKICAgICAgdGhpcy5mb3JtSW5saW5lLmltYWdlID0gZS5pbWFnZTsKICAgIH0sCiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbChuYW1lKSB7CiAgICAgIHRoaXMucHJvbW90ZXJTaG93ID0gZmFsc2U7CiAgICAgIHRoaXMuJHJlZnNbbmFtZV0ucmVzZXRGaWVsZHMoKTsKICAgIH0sCiAgICAvLyDotaDpgIHkvJrlkZjnrYnnuqcKICAgIGdpdmVMZXZlbDogZnVuY3Rpb24gZ2l2ZUxldmVsKGlkKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKCiAgICAgIGdpdmVMZXZlbEFwaShpZCkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKHJlcykgewogICAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgaWYgKCEocmVzLmRhdGEuc3RhdHVzID09PSBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KCJyZXR1cm4iLCBfdGhpczEwLiRhdXRoTGFwc2UocmVzLmRhdGEpKTsKCiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuRnJvbURhdGEgPSByZXMuZGF0YTsKICAgICAgICAgICAgICAgICAgX3RoaXMxMC4kcmVmcy5lZGl0cy5tb2RhbHMgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICAgIH0pKTsKCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMTAuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOi1oOmAgeS8muWRmOetiee6pwogICAgZ2l2ZUxldmVsVGltZTogZnVuY3Rpb24gZ2l2ZUxldmVsVGltZShpZCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CgogICAgICBnaXZlTGV2ZWxUaW1lQXBpKGlkKS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMyA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMocmVzKSB7CiAgICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBpZiAoIShyZXMuZGF0YS5zdGF0dXMgPT09IGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoInJldHVybiIsIF90aGlzMTEuJGF1dGhMYXBzZShyZXMuZGF0YSkpOwoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3RoaXMxMS5Gcm9tRGF0YSA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgICBfdGhpczExLiRyZWZzLmVkaXRzLm1vZGFscyA9IHRydWU7CgogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgICAgfSkpOwoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94MykgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMxMS4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5Yig6ZmkCiAgICBkZWw6IGZ1bmN0aW9uIGRlbChyb3csIHRpdCwgbnVtLCBuYW1lKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKCiAgICAgIHZhciBkZWxmcm9tRGF0YSA9IHsKICAgICAgICB0aXRsZTogdGl0LAogICAgICAgIG51bTogbnVtLAogICAgICAgIHVybDogbmFtZSA9PT0gJ3VzZXInID8gInVzZXIvZGVsX2xldmVsLyIuY29uY2F0KHJvdy51aWQpIDogImFnZW50L3N0YWlyL2RlbGV0ZV9zcHJlYWQvIi5jb25jYXQocm93LnVpZCksCiAgICAgICAgbWV0aG9kOiBuYW1lID09PSAndXNlcicgPyAnREVMRVRFJyA6ICdQVVQnLAogICAgICAgIGlkczogJycKICAgICAgfTsKICAgICAgdGhpcy4kbW9kYWxTdXJlKGRlbGZyb21EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEyLiRNZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CgogICAgICAgIF90aGlzMTIuZ2V0TGlzdCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMxMi4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5riF6Zmk5Lya5ZGY5Yig6Zmk5oiQ5YqfCiAgICBzdWJtaXRNb2RlbDogZnVuY3Rpb24gc3VibWl0TW9kZWwoKSB7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOS8muWRmOWIl+ihqAogICAgZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzMTMgPSB0aGlzOwoKICAgICAgaWYgKHRoaXMuc2VsZWN0RGF0YUxhYmVsLmxlbmd0aCkgewogICAgICAgIHZhciBhY3RpdmVJZHMgPSBbXTsKICAgICAgICB0aGlzLnNlbGVjdERhdGFMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBhY3RpdmVJZHMucHVzaChpdGVtLmlkKTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnVzZXJGcm9tLmxhYmVsX2lkID0gYWN0aXZlSWRzLmpvaW4oJywnKTsKICAgICAgfQoKICAgICAgdGhpcy51c2VyRnJvbS51c2VyX3R5cGUgPSB0aGlzLnVzZXJGcm9tLnVzZXJfdHlwZSB8fCAnJzsKICAgICAgdGhpcy51c2VyRnJvbS5zdGF0dXMgPSB0aGlzLnVzZXJGcm9tLnN0YXR1cyB8fCAnJzsKICAgICAgdGhpcy51c2VyRnJvbS5zZXggPSB0aGlzLnVzZXJGcm9tLnNleCB8fCAnJzsKICAgICAgdGhpcy51c2VyRnJvbS5pc19wcm9tb3RlciA9IHRoaXMudXNlckZyb20uaXNfcHJvbW90ZXIgfHwgJyc7CiAgICAgIHRoaXMudXNlckZyb20uY291bnRyeSA9IHRoaXMudXNlckZyb20uY291bnRyeSB8fCAnJzsKICAgICAgdGhpcy51c2VyRnJvbS5wYXlfY291bnQgPSB0aGlzLnBheV9jb3VudCA9PT0gJ2FsbCcgPyAnJyA6IHRoaXMucGF5X2NvdW50OwogICAgICB0aGlzLnVzZXJGcm9tLnVzZXJfdGltZV90eXBlID0gdGhpcy51c2VyX3RpbWVfdHlwZSA9PT0gJ2FsbCcgPyAnJyA6IHRoaXMudXNlcl90aW1lX3R5cGU7CiAgICAgIHRoaXMudXNlckZyb20uZmllbGRfa2V5ID0gdGhpcy5maWVsZF9rZXkgPT09ICdhbGwnID8gJycgOiB0aGlzLmZpZWxkX2tleTsKICAgICAgdGhpcy51c2VyRnJvbS5sZXZlbCA9IHRoaXMubGV2ZWwgPT09ICdhbGwnID8gJycgOiB0aGlzLmxldmVsOwogICAgICB0aGlzLnVzZXJGcm9tLmdyb3VwX2lkID0gdGhpcy5ncm91cF9pZCA9PT0gJ2FsbCcgPyAnJyA6IHRoaXMuZ3JvdXBfaWQ7CiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHVzZXJMaXN0KHRoaXMudXNlckZyb20pLnRoZW4oIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNChyZXMpIHsKICAgICAgICAgIHZhciBkYXRhOwogICAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgICBfdGhpczEzLnVzZXJMaXN0cyA9IGRhdGEubGlzdDsKICAgICAgICAgICAgICAgICAgX3RoaXMxMy50b3RhbCA9IGRhdGEuY291bnQ7CiAgICAgICAgICAgICAgICAgIF90aGlzMTMubG9hZGluZyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgX3RoaXMxMy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIF90aGlzMTMuc2V0Q2hlY2tlZCgpOwogICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgICB9KSk7CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g0KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczEzLmxvYWRpbmcgPSBmYWxzZTsKCiAgICAgICAgX3RoaXMxMy4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g55So5oi35a+85Ye6CiAgICBleHBvcnRMaXN0OiBmdW5jdGlvbiBleHBvcnRMaXN0KCkgewogICAgICB2YXIgX3RoaXMxNCA9IHRoaXM7CgogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgYWN0aXZlSWRzLCB0aCwgZmlsZWtleSwgZGF0YSwgZmlsZU5hbWUsIGV4Y2VsRGF0YSwgaSwgbGViRGF0YTsKICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKF90aGlzMTQuc2VsZWN0RGF0YUxhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICBhY3RpdmVJZHMgPSBbXTsKCiAgICAgICAgICAgICAgICAgIF90aGlzMTQuc2VsZWN0RGF0YUxhYmVsLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBhY3RpdmVJZHMucHVzaChpdGVtLmlkKTsKICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICBfdGhpczE0LnVzZXJGcm9tLmxhYmVsX2lkID0gYWN0aXZlSWRzLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBfdGhpczE0LnVzZXJGcm9tLnVzZXJfdHlwZSA9IF90aGlzMTQudXNlckZyb20udXNlcl90eXBlIHx8ICcnOwogICAgICAgICAgICAgICAgX3RoaXMxNC51c2VyRnJvbS5zdGF0dXMgPSBfdGhpczE0LnVzZXJGcm9tLnN0YXR1cyB8fCAnJzsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20uc2V4ID0gX3RoaXMxNC51c2VyRnJvbS5zZXggfHwgJyc7CiAgICAgICAgICAgICAgICBfdGhpczE0LnVzZXJGcm9tLmlzX3Byb21vdGVyID0gX3RoaXMxNC51c2VyRnJvbS5pc19wcm9tb3RlciB8fCAnJzsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20uY291bnRyeSA9IF90aGlzMTQudXNlckZyb20uY291bnRyeSB8fCAnJzsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20ucGF5X2NvdW50ID0gX3RoaXMxNC5wYXlfY291bnQgPT09ICdhbGwnID8gJycgOiBfdGhpczE0LnBheV9jb3VudDsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20udXNlcl90aW1lX3R5cGUgPSBfdGhpczE0LnVzZXJfdGltZV90eXBlID09PSAnYWxsJyA/ICcnIDogX3RoaXMxNC51c2VyX3RpbWVfdHlwZTsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20uZmllbGRfa2V5ID0gX3RoaXMxNC5maWVsZF9rZXkgPT09ICdhbGwnID8gJycgOiBfdGhpczE0LmZpZWxkX2tleTsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20ubGV2ZWwgPSBfdGhpczE0LmxldmVsID09PSAnYWxsJyA/ICcnIDogX3RoaXMxNC5sZXZlbDsKICAgICAgICAgICAgICAgIF90aGlzMTQudXNlckZyb20uZ3JvdXBfaWQgPSBfdGhpczE0Lmdyb3VwX2lkID09PSAnYWxsJyA/ICcnIDogX3RoaXMxNC5ncm91cF9pZDsKICAgICAgICAgICAgICAgIHRoID0gW10sIGZpbGVrZXkgPSBbXSwgZGF0YSA9IFtdLCBmaWxlTmFtZSA9ICcnOyAvLyAgIGxldCBmaWxlTmFtZSA9ICIiOwoKICAgICAgICAgICAgICAgIGV4Y2VsRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3RoaXMxNC51c2VyRnJvbSkpOwogICAgICAgICAgICAgICAgZXhjZWxEYXRhLnBhZ2UgPSAxOwogICAgICAgICAgICAgICAgaSA9IDA7CgogICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICBpZiAoIShpIDwgZXhjZWxEYXRhLnBhZ2UgKyAxKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDMyOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE4OwogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMTQuZ2V0RXhjZWxEYXRhKGV4Y2VsRGF0YSk7CgogICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICBsZWJEYXRhID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgICBpZiAoIWZpbGVOYW1lKSBmaWxlTmFtZSA9IGxlYkRhdGEuZmlsZW5hbWU7CgogICAgICAgICAgICAgICAgaWYgKCFmaWxla2V5Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICBmaWxla2V5ID0gbGViRGF0YS5maWxlS2V5OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghdGgubGVuZ3RoKSB0aCA9IGxlYkRhdGEuaGVhZGVyOwoKICAgICAgICAgICAgICAgIGlmICghbGViRGF0YS5leHBvcnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjc7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmNvbmNhdChsZWJEYXRhLmV4cG9ydCk7CiAgICAgICAgICAgICAgICBleGNlbERhdGEucGFnZSsrOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICBjYXNlIDI3OgogICAgICAgICAgICAgICAgX3RoaXMxNC4kZXhwb3J0RXhjZWwodGgsIGZpbGVrZXksIGZpbGVOYW1lLCBkYXRhKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LmFicnVwdCgicmV0dXJuIik7CgogICAgICAgICAgICAgIGNhc2UgMjk6CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE1OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgMzI6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXRFeGNlbERhdGE6IGZ1bmN0aW9uIGdldEV4Y2VsRGF0YShleGNlbERhdGEpIHsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICBleHBvcnRVc2VyTGlzdChleGNlbERhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIHBhZ2VDaGFuZ2U6IGZ1bmN0aW9uIHBhZ2VDaGFuZ2UoaW5kZXgpIHsKICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0ID0gW107CiAgICAgIHRoaXMudXNlckZyb20ucGFnZSA9IGluZGV4OwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDmkJzntKIKICAgIHVzZXJTZWFyY2hzOiBmdW5jdGlvbiB1c2VyU2VhcmNocygpIHsKICAgICAgdGhpcy51c2VyRnJvbS5wYWdlID0gMTsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LAogICAgLy8g6YeN572uCiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQobmFtZSkgewogICAgICB0aGlzLnVzZXJGcm9tID0gewogICAgICAgIHVzZXJfdHlwZTogdGhpcy51c2VyRnJvbS51c2VyX3R5cGUsCiAgICAgICAgc3RhdHVzOiAnJywKICAgICAgICBzZXg6ICcnLAogICAgICAgIGlzX3Byb21vdGVyOiAnJywKICAgICAgICBjb3VudHJ5OiAnJywKICAgICAgICBwYXlfY291bnQ6ICcnLAogICAgICAgIHVzZXJfdGltZV90eXBlOiAnJywKICAgICAgICB1c2VyX3RpbWU6ICcnLAogICAgICAgIG5pY2tuYW1lOiAnJywKICAgICAgICBmaWVsZF9rZXk6ICcnLAogICAgICAgIGxldmVsOiAnJywKICAgICAgICBncm91cF9pZDogJycsCiAgICAgICAgbGFiZWxfaWQ6ICcnLAogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgLy8g5b2T5YmN6aG1CiAgICAgICAgbGltaXQ6IDIwIC8vIOavj+mhteaYvuekuuadoeaVsAoKICAgICAgfTsKICAgICAgdGhpcy5maWVsZF9rZXkgPSAnJzsKICAgICAgdGhpcy5sZXZlbCA9ICcnOwogICAgICB0aGlzLmdyb3VwX2lkID0gJyc7CiAgICAgIHRoaXMuZGF0YUxhYmVsID0gW107CiAgICAgIHRoaXMuc2VsZWN0RGF0YUxhYmVsID0gW107CiAgICAgIHRoaXMudXNlcl90aW1lX3R5cGUgPSAnJzsKICAgICAgdGhpcy5wYXlfY291bnQgPSAnJzsKICAgICAgdGhpcy50aW1lVmFsID0gW107CiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KCk7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOiOt+WPlue8lui+keihqOWNleaVsOaNrgogICAgZ2V0VXNlckZyb206IGZ1bmN0aW9uIGdldFVzZXJGcm9tKGlkKSB7CiAgICAgIHZhciBfdGhpczE1ID0gdGhpczsKCiAgICAgIGdldFVzZXJJbmZvKGlkKS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmNSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYocmVzKSB7CiAgICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBfdGhpczE1Lm1vZGFscyA9IHRydWU7CiAgICAgICAgICAgICAgICAgIF90aGlzMTUudXNlckRhdGEgPSByZXMuZGF0YTsKCiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICB9KSk7CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3g1KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczE1LiRNZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyBnZXRVc2VyRnJvbShpZCkgewogICAgLy8gICBnZXRVc2VyRGF0YShpZCkKICAgIC8vICAgICAudGhlbihhc3luYyAocmVzKSA9PiB7CiAgICAvLyAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzID09PSBmYWxzZSkgewogICAgLy8gICAgICAgICByZXR1cm4gdGhpcy4kYXV0aExhcHNlKHJlcy5kYXRhKTsKICAgIC8vICAgICAgIH0KICAgIC8vICAgICAgIHRoaXMuRnJvbURhdGEgPSByZXMuZGF0YTsKICAgIC8vICAgICAgIHRoaXMuJHJlZnMuZWRpdHMubW9kYWxzID0gdHJ1ZTsKICAgIC8vICAgICB9KQogICAgLy8gICAgIC5jYXRjaCgocmVzKSA9PiB7CiAgICAvLyAgICAgICB0aGlzLiRNZXNzYWdlLmVycm9yKHJlcy5tc2cpOwogICAgLy8gICAgIH0pOwogICAgLy8gfSwKICAgIC8vIOiOt+WPluenr+WIhuS9memineihqOWNlQogICAgZ2V0T3RoZXJGcm9tOiBmdW5jdGlvbiBnZXRPdGhlckZyb20oaWQpIHsKICAgICAgdmFyIF90aGlzMTYgPSB0aGlzOwoKICAgICAgZWRpdE90aGVyQXBpKGlkKS50aGVuKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmNiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTcocmVzKSB7CiAgICAgICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBpZiAoIShyZXMuZGF0YS5zdGF0dXMgPT09IGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5hYnJ1cHQoInJldHVybiIsIF90aGlzMTYuJGF1dGhMYXBzZShyZXMuZGF0YSkpOwoKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3RoaXMxNi5Gcm9tRGF0YSA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgICBfdGhpczE2LiRyZWZzLmVkaXRzLm1vZGFscyA9IHRydWU7CgogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNyk7CiAgICAgICAgfSkpOwoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94NikgewogICAgICAgICAgcmV0dXJuIF9yZWY2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKS5jYXRjaChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMxNi4kTWVzc2FnZS5lcnJvcihyZXMubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5L+u5pS554q25oCBCiAgICBvbmNoYW5nZUlzU2hvdzogZnVuY3Rpb24gb25jaGFuZ2VJc1Nob3cocm93KSB7CiAgICAgIHZhciBfdGhpczE3ID0gdGhpczsKCiAgICAgIHZhciBkYXRhID0gewogICAgICAgIGlkOiByb3cudWlkLAogICAgICAgIHN0YXR1czogcm93LnN0YXR1cwogICAgICB9OwogICAgICBpc1Nob3dBcGkoZGF0YSkudGhlbiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KHJlcykgewogICAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgX3RoaXMxNy4kTWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwoKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguc3RvcCgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTgpOwogICAgICAgIH0pKTsKCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDcpIHsKICAgICAgICAgIHJldHVybiBfcmVmNy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSkuY2F0Y2goZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzMTcuJE1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOeCueWHu+WPkemAgeS8mOaDoOWIuAogICAgb25TZW5kOiBmdW5jdGlvbiBvblNlbmQoKSB7CiAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRNZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWPkemAgeS8mOaDoOWIuOeahOeUqOaItycpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJHJlZnMuc2VuZHMubW9kYWxzID0gdHJ1ZTsKICAgICAgICB0aGlzLiRyZWZzLnNlbmRzLmdldExpc3QoKTsKICAgICAgfQogICAgfSwKICAgIC8vIOWPkemAgeWbvuaWh+a2iOaBrwogICAgb25TZW5kUGljOiBmdW5jdGlvbiBvblNlbmRQaWMoKSB7CiAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRNZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeimgeWPkemAgeWbvuaWh+a2iOaBr+eahOeUqOaItycpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMubW9kYWwxMyA9IHRydWU7CiAgICAgIH0KICAgIH0sCiAgICAvLyDnvJbovpEKICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocm93KSB7CiAgICAgIHRoaXMuZ2V0VXNlckZyb20ocm93LnVpZCk7CiAgICB9LAogICAgLy8g5L+u5pS55oiQ5YqfCiAgICBzdWJtaXRGYWlsOiBmdW5jdGlvbiBzdWJtaXRGYWlsKCkgey8vIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOaOkuW6jwogICAgc29ydENoYW5nZWQ6IGZ1bmN0aW9uIHNvcnRDaGFuZ2VkKGUpIHsKICAgICAgdGhpcy51c2VyRnJvbVtlLmtleV0gPSBlLm9yZGVyOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvL+WFqOmAieWSjOWPlua2iOWFqOmAieaXtuinpuWPkQogICAgaGFuZGxlU2VsZWN0QWxsOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGwoc2VsZWN0aW9uKSB7CiAgICAgIHZhciBfdGhpczE4ID0gdGhpczsKCiAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoID09PSAwKSB7CiAgICAgICAgLy/ojrflj5Z0YWJsZeeahOaVsOaNru+8mwogICAgICAgIHZhciBkYXRhID0gdGhpcy4kcmVmcy50YWJsZS5kYXRhOwogICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaWYgKF90aGlzMTguc2VsZWN0ZWRJZHMuaGFzKGl0ZW0udWlkKSkgewogICAgICAgICAgICBfdGhpczE4LnNlbGVjdGVkSWRzLmRlbGV0ZShpdGVtLnVpZCk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc2VsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIF90aGlzMTguc2VsZWN0ZWRJZHMuYWRkKGl0ZW0udWlkKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgIC8v56Gu5L+dZG9t5Yqg6L295a6M5q+VCiAgICAgICAgX3RoaXMxOC5zZXRDaGVja2VkKCk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vICDpgInkuK3mn5DkuIDooYwKICAgIGhhbmRsZVNlbGVjdFJvdzogZnVuY3Rpb24gaGFuZGxlU2VsZWN0Um93KHNlbGVjdGlvbiwgcm93KSB7CiAgICAgIHZhciBfdGhpczE5ID0gdGhpczsKCiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMuYWRkKHJvdy51aWQpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgLy/noa7kv51kb23liqDovb3lrozmr5UKICAgICAgICBfdGhpczE5LnNldENoZWNrZWQoKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8gIOWPlua2iOafkOS4gOihjAogICAgaGFuZGxlQ2FuY2VsUm93OiBmdW5jdGlvbiBoYW5kbGVDYW5jZWxSb3coc2VsZWN0aW9uLCByb3cpIHsKICAgICAgdmFyIF90aGlzMjAgPSB0aGlzOwoKICAgICAgdGhpcy5zZWxlY3RlZElkcy5kZWxldGUocm93LnVpZCk7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAvL+ehruS/nWRvbeWKoOi9veWujOavlQogICAgICAgIF90aGlzMjAuc2V0Q2hlY2tlZCgpOwogICAgICB9KTsKICAgIH0sCiAgICBzZXRDaGVja2VkOiBmdW5jdGlvbiBzZXRDaGVja2VkKCkgewogICAgICAvL+Wwhm5ldyBTZXQoKei9rOWMluS4uuaVsOe7hAogICAgICB0aGlzLmlkcyA9IF90b0NvbnN1bWFibGVBcnJheSh0aGlzLnNlbGVjdGVkSWRzKTsgLy8g5om+5Yiw57uR5a6a55qEdGFibGXnmoRyZWblr7nlupTnmoRkb23vvIzmib7liLB0YWJsZeeahG9iakRhdGHlr7nosaHvvIxvYmpEYXRh5L+d5a2Y55qE5piv5b2T5YmN6aG155qE5pWw5o2uCgogICAgICB2YXIgb2JqRGF0YSA9IHRoaXMuJHJlZnMudGFibGUub2JqRGF0YTsKCiAgICAgIGZvciAodmFyIGluZGV4IGluIG9iakRhdGEpIHsKICAgICAgICBpZiAodGhpcy5zZWxlY3RlZElkcy5oYXMob2JqRGF0YVtpbmRleF0udWlkKSkgewogICAgICAgICAgb2JqRGF0YVtpbmRleF0uX2lzQ2hlY2tlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9Ow=="},{"version":3,"mappings":"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","names":["userList","getUserData","isShowApi","editOtherApi","giveLevelApi","userSetGroup","userGroupApi","levelListApi","userSetLabelApi","userLabelApi","userSynchro","getUserSaveForm","giveLevelTimeApi","getUserInfo","setUser","editUser","saveSetLabel","name","components","expandRow","editFrom","sendFrom","userDetails","newsCategory","customerInfo","userLabel","userEdit","data","dataLabel","selectDataLabel","userData","modals","selectLabelShow","labelShow","customerShow","promoterShow","labelActive","uid","formInline","spread_uid","image","options","shortcuts","text","value","start","end","collapse","headeNum","type","address","addresData","isShowSend","modal13","maxCols","scrollerHeight","contentTop","contentWidth","grid","xl","lg","md","sm","xs","grid2","loading","total","userFrom","label_id","user_type","status","sex","is_promoter","country","isMember","pay_count","user_time_type","user_time","nickname","province","city","page","limit","level","group_id","field_key","columns","width","render","props","row","align","title","key","slot","minWidth","sortable","fixed","userLists","FromData","selectionList","user_ids","selectedData","timeVal","groupList","levelList","labelFrom","labelLists","selectedIds","ids","computed","mapState","labelWidth","labelPosition","created","mounted","methods","then","catch","onceGetList","labelClose","putSend","agentSpreadApi","save","synchro","groupLists","res","onClickTab","userGroup","levelLists","is_show","setGroup","uids","setLabel","activeSelectData","activeData","labels","changeMember","changeCountry","handleChange","onchangeTime","e","changeMenu","index","openLabel","openSelectLabel","editS","customer","imageObject","cancel","giveLevel","id","giveLevelTime","del","tit","num","url","method","submitModel","getList","activeIds","exportList","th","filekey","fileName","excelData","JSON","i","lebData","getExcelData","exportUserList","resolve","pageChange","userSearchs","reset","getUserFrom","getOtherFrom","onchangeIsShow","onSend","onSendPic","edit","submitFail","sortChanged","handleSelectAll","selection","handleSelectRow","handleCancelRow","setChecked","objData"],"sourceRoot":"src/pages/user/list","sources":["index.vue"],"sourcesContent":["<template>\r\n <div>\r\n <Card :bordered=\"false\" dis-hover class=\"ivu-mt listbox\">\r\n <Tabs @on-click=\"onClickTab\" class=\"mb20\">\r\n <TabPane :label=\"item.name\" :name=\"item.type\" v-for=\"(item, index) in headeNum\" :key=\"index\" />\r\n </Tabs>\r\n <Form\r\n ref=\"userFrom\"\r\n :model=\"userFrom\"\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n @submit.native.prevent\r\n >\r\n <Row :gutter=\"16\">\r\n <Col span=\"18\">\r\n <Col span=\"24\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"用户搜索:\" label-for=\"nickname\">\r\n <Input v-model=\"userFrom.nickname\" placeholder=\"请输入用户\" element-id=\"nickname\" clearable>\r\n <Select v-model=\"field_key\" slot=\"prepend\" style=\"width: 80px\">\r\n <Option value=\"all\">全部</Option>\r\n <Option value=\"uid\">UID</Option>\r\n <Option value=\"phone\">手机号</Option>\r\n <Option value=\"nickname\">用户昵称</Option>\r\n </Select>\r\n </Input>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n </Col>\r\n <template v-if=\"collapse\">\r\n <Col span=\"18\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"用户等级:\" label-for=\"level\">\r\n <Select v-model=\"level\" placeholder=\"请选择用户等级\" element-id=\"level\" clearable>\r\n <Option value=\"all\">全部</Option>\r\n <Option :value=\"item.id\" v-for=\"(item, index) in levelList\" :key=\"index\">{{ item.name }}</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"用户分组:\" label-for=\"group_id\">\r\n <Select v-model=\"group_id\" placeholder=\"请选择用户分组\" element-id=\"group_id\" clearable>\r\n <Option value=\"all\">全部</Option>\r\n <Option :value=\"item.id\" v-for=\"(item, index) in groupList\" :key=\"index\">{{\r\n item.group_name\r\n }}</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"用户标签:\" label-for=\"label_id\">\r\n <div class=\"labelInput acea-row row-between-wrapper\" @click=\"openSelectLabel\">\r\n <div style=\"width: 90%\">\r\n <div v-if=\"selectDataLabel.length\">\r\n <Tag\r\n :closable=\"false\"\r\n v-for=\"(item, index) in selectDataLabel\"\r\n @on-close=\"closeLabel(item)\"\r\n :key=\"index\"\r\n >{{ item.label_name }}</Tag\r\n >\r\n </div>\r\n <span class=\"span\" v-else>选择用户关联标签</span>\r\n </div>\r\n <div class=\"ivu-icon ivu-icon-ios-arrow-down\"></div>\r\n </div>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n <Col span=\"18\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"付费会员:\" label-for=\"isMember\">\r\n <!-- <Select\r\n v-model=\"userFrom.isMember\"\r\n placeholder=\"请选择付费会员\"\r\n element-id=\"isMember\"\r\n clearable\r\n @on-change=\"changeMember\"\r\n >\r\n <Option :value=\"1\">是</Option>\r\n <Option :value=\"0\">否</Option>\r\n </Select> -->\r\n <RadioGroup v-model=\"userFrom.isMember\" type=\"button\">\r\n <Radio label=\"\">\r\n <span>全部</span>\r\n </Radio>\r\n <Radio label=\"1\">\r\n <span>是</span>\r\n </Radio>\r\n <Radio label=\"0\">\r\n <span>否</span>\r\n </Radio>\r\n </RadioGroup>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"国家:\" label-for=\"country\">\r\n <Select\r\n v-model=\"userFrom.country\"\r\n placeholder=\"请选择国家\"\r\n element-id=\"country\"\r\n clearable\r\n @on-change=\"changeCountry\"\r\n >\r\n <Option value=\"domestic\">中国</Option>\r\n <Option value=\"abroad\">外国</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\" v-if=\"userFrom.country === 'domestic'\">\r\n <FormItem label=\"省份:\">\r\n <Cascader :data=\"addresData\" :value=\"address\" v-model=\"address\" @on-change=\"handleChange\"></Cascader>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n <Col span=\"18\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"性别:\" label-for=\"sex\">\r\n <RadioGroup v-model=\"userFrom.sex\" type=\"button\">\r\n <Radio label=\"\">\r\n <span>全部</span>\r\n </Radio>\r\n <Radio label=\"1\">\r\n <span>男</span>\r\n </Radio>\r\n <Radio label=\"2\">\r\n <span>女</span>\r\n </Radio>\r\n <Radio label=\"0\">\r\n <span>保密</span>\r\n </Radio>\r\n </RadioGroup>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"身份:\" label-for=\"is_promoter\">\r\n <RadioGroup v-model=\"userFrom.is_promoter\" type=\"button\">\r\n <Radio label=\"\">\r\n <span>全部</span>\r\n </Radio>\r\n <Radio label=\"1\">\r\n <span>推广员</span>\r\n </Radio>\r\n <Radio label=\"0\">\r\n <span>普通用户</span>\r\n </Radio>\r\n </RadioGroup>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n <Col span=\"18\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"访问情况:\" label-for=\"user_time_type\">\r\n <Select v-model=\"user_time_type\" placeholder=\"请选择访问情况\" element-id=\"user_time_type\" clearable>\r\n <Option value=\"\">全部</Option>\r\n <Option value=\"visitno\">时间段未访问</Option>\r\n <Option value=\"visit\">时间段访问过</Option>\r\n <Option value=\"add_time\">首次访问</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n <Col v-bind=\"grid\" v-if=\"user_time_type\">\r\n <FormItem label=\"访问时间:\" label-for=\"user_time\">\r\n <!--<DatePicker clearable @on-change=\"onchangeTime\" v-model=\"timeVal\" :value=\"timeVal\" format=\"yyyy/MM/dd\" type=\"daterange\" placement=\"bottom-end\" placeholder=\"选择时间\" v-width=\"'100%'\"></DatePicker>-->\r\n <DatePicker\r\n :editable=\"false\"\r\n @on-change=\"onchangeTime\"\r\n :value=\"timeVal\"\r\n format=\"yyyy/MM/dd\"\r\n type=\"datetimerange\"\r\n placement=\"bottom-start\"\r\n placeholder=\"请选择访问时间\"\r\n style=\"width: 300px\"\r\n class=\"mr20\"\r\n :options=\"options\"\r\n ></DatePicker>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n <Col span=\"18\">\r\n <Col v-bind=\"grid\">\r\n <FormItem label=\"下单次数:\" label-for=\"pay_count\">\r\n <Select v-model=\"pay_count\" placeholder=\"请选择下单次数\" element-id=\"pay_count\" clearable>\r\n <Option value=\"all\">全部</Option>\r\n <Option value=\"-1\">0次</Option>\r\n <Option value=\"0\">1次以上</Option>\r\n <Option value=\"1\">2次以上</Option>\r\n <Option value=\"2\">3次以上</Option>\r\n <Option value=\"3\">4次以上</Option>\r\n <Option value=\"4\">5次以上</Option>\r\n </Select>\r\n </FormItem>\r\n </Col>\r\n </Col>\r\n </template>\r\n <Col span=\"6\" class=\"ivu-text-right userFrom\">\r\n <FormItem>\r\n <Button type=\"primary\" icon=\"ios-search\" label=\"default\" class=\"mr15\" @click=\"userSearchs\">搜索</Button>\r\n <Button class=\"ResetSearch\" @click=\"reset('userFrom')\">重置</Button>\r\n <a class=\"ivu-ml-8 font14 ml10\" @click=\"collapse = !collapse\">\r\n <template v-if=\"!collapse\"> 展开 <Icon type=\"ios-arrow-down\" /> </template>\r\n <template v-else> 收起 <Icon type=\"ios-arrow-up\" /> </template>\r\n </a>\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n </Form>\r\n <Divider dashed />\r\n <Row type=\"flex\" justify=\"space-between\" class=\"mt20\">\r\n <Col span=\"24\">\r\n <Button v-auth=\"['admin-user-save']\" type=\"primary\" class=\"mr20\" @click=\"edit({ uid: 0 })\">添加用户</Button>\r\n <Button v-auth=\"['admin-user-coupon']\" class=\"mr20\" @click=\"onSend\">发送优惠券</Button>\r\n <Button\r\n v-auth=\"['admin-wechat-news']\"\r\n class=\"greens mr20\"\r\n size=\"default\"\r\n @click=\"onSendPic\"\r\n v-if=\"userFrom.user_type === 'wechat'\"\r\n >\r\n <Icon type=\"md-list\"></Icon>\r\n 发送图文消息\r\n </Button>\r\n <Button v-auth=\"['admin-user-group_set']\" class=\"mr20\" @click=\"setGroup\">批量设置分组</Button>\r\n <Button v-auth=\"['admin-user-set_label']\" class=\"mr20\" @click=\"setLabel\">批量设置标签</Button>\r\n <Button class=\"mr20\" icon=\"ios-share-outline\" @click=\"exportList\">导出</Button>\r\n\r\n <!-- <Button v-auth=\"['admin-user-synchro']\" class=\"mr20\" @click=\"synchro\">同步公众号用户</Button> -->\r\n </Col>\r\n <Col span=\"24\" class=\"userAlert\" v-if=\"selectionList.length\">\r\n <Alert show-icon>\r\n 已选择<i class=\"userI\"> {{ selectionList.length }} </i>项</Alert\r\n >\r\n </Col>\r\n </Row>\r\n <Table\r\n :columns=\"columns\"\r\n :data=\"userLists\"\r\n class=\"mt25\"\r\n ref=\"table\"\r\n highlight-row\r\n :loading=\"loading\"\r\n no-userFrom-text=\"暂无数据\"\r\n no-filtered-userFrom-text=\"暂无筛选结果\"\r\n @on-sort-change=\"sortChanged\"\r\n @on-select=\"handleSelectRow\"\r\n @on-select-cancel=\"handleCancelRow\"\r\n @on-select-all=\"handleSelectAll\"\r\n @on-select-all-cancel=\"handleSelectAll\"\r\n >\r\n <template slot-scope=\"{ row, index }\" slot=\"avatars\">\r\n <div class=\"tabBox_img\" v-viewer>\r\n <img v-lazy=\"row.avatar\" />\r\n </div>\r\n </template>\r\n <template slot-scope=\"{ row, index }\" slot=\"nickname\">\r\n <div class=\"acea-row\">\r\n <Icon type=\"md-male\" v-show=\"row.sex === '男'\" color=\"#2db7f5\" size=\"15\" class=\"mr5\" />\r\n <Icon type=\"md-female\" v-show=\"row.sex === '女'\" color=\"#ed4014\" size=\"15\" class=\"mr5\" />\r\n <div v-text=\"row.nickname\"></div>\r\n </div>\r\n <div v-if=\"row.is_del == 1\" style=\"color: red\">用户已注销</div>\r\n <!-- <div v-show=\"row.vip_name\" class=\"vipName\">{{row.vip_name}}</div> -->\r\n </template>\r\n <template slot-scope=\"{ row, index }\" slot=\"isMember\">\r\n <div>{{ row.isMember ? '是' : '否' }}</div>\r\n </template>\r\n <!-- <template slot-scope=\"{ row, index }\" slot=\"status\">-->\r\n <!-- <i-switch v-model=\"row.status\" :value=\"row.status\" :true-value=\"1\" :false-value=\"0\" @on-change=\"onchangeIsShow(row)\" size=\"large\">-->\r\n <!-- <span slot=\"open\">显示</span>-->\r\n <!-- <span slot=\"close\">隐藏</span>-->\r\n <!-- </i-switch>-->\r\n <!-- </template>-->\r\n <template slot-scope=\"{ row, index }\" slot=\"action\">\r\n <template v-if=\"row.is_del != 1\">\r\n <a @click=\"edit(row)\">编辑</a>\r\n <Divider type=\"vertical\" />\r\n <Dropdown @on-click=\"changeMenu(row, $event, index)\" :transfer=\"true\">\r\n <a href=\"javascript:void(0)\">\r\n 更多\r\n <Icon type=\"ios-arrow-down\"></Icon>\r\n </a>\r\n <DropdownMenu slot=\"list\">\r\n <DropdownItem name=\"1\">账户详情</DropdownItem>\r\n <DropdownItem name=\"2\">积分余额</DropdownItem>\r\n <DropdownItem name=\"3\">赠送会员</DropdownItem>\r\n <!-- <DropdownItem name=\"4\" v-if=\"row.vip_name\">清除等级</DropdownItem>-->\r\n <DropdownItem name=\"5\">设置分组</DropdownItem>\r\n <DropdownItem name=\"6\">设置标签</DropdownItem>\r\n <DropdownItem name=\"7\">修改上级推广人</DropdownItem>\r\n <DropdownItem name=\"8\" v-if=\"row.spread_uid\">清除上级推广人</DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n </template>\r\n <template v-else>\r\n <div v-if=\"row.is_del == 1\" style=\"color: red\">已注销</div>\r\n </template>\r\n </template>\r\n </Table>\r\n\r\n <div class=\"acea-row row-right page\">\r\n <Page\r\n :total=\"total\"\r\n :current=\"userFrom.page\"\r\n show-elevator\r\n show-total\r\n @on-change=\"pageChange\"\r\n :page-size=\"userFrom.limit\"\r\n />\r\n </div>\r\n </Card>\r\n <!-- 编辑表单 积分余额-->\r\n <edit-from ref=\"edits\" :FromData=\"FromData\" @submitFail=\"submitFail\"></edit-from>\r\n <!-- 发送优惠券-->\r\n <send-from ref=\"sends\" :userIds=\"ids.toString()\"></send-from>\r\n <!-- 会员详情-->\r\n <user-details ref=\"userDetails\"></user-details>\r\n <!--发送图文消息 -->\r\n <Modal v-model=\"modal13\" scrollable title=\"发送消息\" width=\"1200\" height=\"800\" footer-hide class=\"modelBox\">\r\n <news-category\r\n v-if=\"modal13\"\r\n :isShowSend=\"isShowSend\"\r\n :userIds=\"ids.toString()\"\r\n :scrollerHeight=\"scrollerHeight\"\r\n :contentTop=\"contentTop\"\r\n :contentWidth=\"contentWidth\"\r\n :maxCols=\"maxCols\"\r\n ></news-category>\r\n </Modal>\r\n <!--修改推广人-->\r\n <Modal v-model=\"promoterShow\" scrollable title=\"修改推广人\" class=\"order_box\" :closable=\"false\">\r\n <Form ref=\"formInline\" :model=\"formInline\" :label-width=\"100\" @submit.native.prevent>\r\n <FormItem v-if=\"formInline\" label=\"选择推广人:\" prop=\"image\">\r\n <div class=\"picBox\" @click=\"customer\">\r\n <div class=\"pictrue\" v-if=\"formInline.image\">\r\n <img v-lazy=\"formInline.image\" />\r\n </div>\r\n <div class=\"upLoad acea-row row-center-wrapper\" v-else>\r\n <Icon type=\"ios-camera-outline\" size=\"26\" />\r\n </div>\r\n </div>\r\n </FormItem>\r\n </Form>\r\n <div slot=\"footer\">\r\n <Button type=\"primary\" @click=\"putSend('formInline')\">提交</Button>\r\n <Button @click=\"cancel('formInline')\">取消</Button>\r\n </div>\r\n </Modal>\r\n <Modal v-model=\"customerShow\" scrollable title=\"请选择商城用户\" :closable=\"false\" width=\"50%\">\r\n <customerInfo v-if=\"customerShow\" @imageObject=\"imageObject\"></customerInfo>\r\n </Modal>\r\n <Modal v-model=\"labelShow\" scrollable title=\"请选择用户标签\" :closable=\"false\" width=\"500\" :footer-hide=\"true\">\r\n <userLabel\r\n v-if=\"labelShow\"\r\n :uid=\"labelActive.uid\"\r\n :only_get=\"!labelActive.uid\"\r\n @close=\"labelClose\"\r\n @activeData=\"activeData\"\r\n @onceGetList=\"onceGetList\"\r\n ></userLabel>\r\n </Modal>\r\n <Drawer :closable=\"false\" width=\"700\" v-model=\"modals\" title=\"用户信息填写\">\r\n <userEdit ref=\"userEdit\" v-if=\"modals\" :userData=\"userData\"></userEdit>\r\n <div class=\"demo-drawer-footer\">\r\n <Button style=\"margin-right: 8px\" @click=\"modals = false\">取消</Button>\r\n <Button type=\"primary\" @click=\"setUser\">提交</Button>\r\n </div>\r\n </Drawer>\r\n <!-- 用户标签 -->\r\n <Modal\r\n v-model=\"selectLabelShow\"\r\n scrollable\r\n title=\"请选择用户标签\"\r\n :closable=\"false\"\r\n width=\"500\"\r\n :footer-hide=\"true\"\r\n :mask-closable=\"false\"\r\n >\r\n <userLabel\r\n v-if=\"selectLabelShow\"\r\n :uid=\"0\"\r\n ref=\"userLabel\"\r\n :only_get=\"true\"\r\n @activeData=\"activeSelectData\"\r\n @close=\"labelClose\"\r\n ></userLabel>\r\n </Modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport userLabel from '@/components/userLabel';\r\nimport { mapState } from 'vuex';\r\nimport expandRow from './tableExpand.vue';\r\nimport userEdit from './handle/userEdit.vue';\r\nimport {\r\n userList,\r\n getUserData,\r\n isShowApi,\r\n editOtherApi,\r\n giveLevelApi,\r\n userSetGroup,\r\n userGroupApi,\r\n levelListApi,\r\n userSetLabelApi,\r\n userLabelApi,\r\n userSynchro,\r\n getUserSaveForm,\r\n giveLevelTimeApi,\r\n getUserInfo,\r\n setUser,\r\n editUser,\r\n saveSetLabel,\r\n} from '@/api/user';\r\nimport { agentSpreadApi } from '@/api/agent';\r\nimport { exportUserList } from '@/api/export';\r\nimport editFrom from '../../../components/from/from';\r\nimport sendFrom from '@/components/sendCoupons/index';\r\nimport userDetails from './handle/userDetails';\r\nimport newsCategory from '@/components/newsCategory/index';\r\nimport city from '@/utils/city';\r\nimport customerInfo from '@/components/customerInfo';\r\nexport default {\r\n name: 'user_list',\r\n components: {\r\n expandRow,\r\n editFrom,\r\n sendFrom,\r\n userDetails,\r\n newsCategory,\r\n customerInfo,\r\n userLabel,\r\n userEdit,\r\n },\r\n data() {\r\n return {\r\n dataLabel: [],\r\n selectDataLabel: [],\r\n userData: {},\r\n modals: false,\r\n selectLabelShow: false,\r\n labelShow: false,\r\n customerShow: false,\r\n promoterShow: false,\r\n labelActive: {\r\n uid: 0,\r\n },\r\n formInline: {\r\n uid: 0,\r\n spread_uid: 0,\r\n image: '',\r\n },\r\n options: {\r\n shortcuts: [\r\n {\r\n text: '今天',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()));\r\n return [start, end];\r\n },\r\n },\r\n {\r\n text: '昨天',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(\r\n start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1)),\r\n );\r\n end.setTime(\r\n end.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1)),\r\n );\r\n return [start, end];\r\n },\r\n },\r\n {\r\n text: '最近7天',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(\r\n start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 6)),\r\n );\r\n return [start, end];\r\n },\r\n },\r\n {\r\n text: '最近30天',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(\r\n start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 29)),\r\n );\r\n return [start, end];\r\n },\r\n },\r\n {\r\n text: '本月',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), 1)));\r\n return [start, end];\r\n },\r\n },\r\n {\r\n text: '本年',\r\n value() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(start.setTime(new Date(new Date().getFullYear(), 0, 1)));\r\n return [start, end];\r\n },\r\n },\r\n ],\r\n },\r\n collapse: false,\r\n headeNum: [\r\n { type: '', name: '全部' },\r\n { type: 'wechat', name: '微信公众号' },\r\n { type: 'routine', name: '微信小程序' },\r\n { type: 'h5', name: 'H5' },\r\n { type: 'pc', name: 'PC' },\r\n { type: 'app', name: 'APP' },\r\n ],\r\n address: [],\r\n addresData: city,\r\n isShowSend: true,\r\n modal13: false,\r\n maxCols: 4,\r\n scrollerHeight: '600',\r\n contentTop: '130',\r\n contentWidth: '98%',\r\n grid: {\r\n xl: 8,\r\n lg: 8,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n grid2: {\r\n xl: 18,\r\n lg: 16,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n loading: false,\r\n total: 0,\r\n userFrom: {\r\n label_id: '',\r\n user_type: '',\r\n status: '',\r\n sex: '',\r\n is_promoter: '',\r\n country: '',\r\n isMember: '',\r\n pay_count: '',\r\n user_time_type: '',\r\n user_time: '',\r\n nickname: '',\r\n province: '',\r\n city: '',\r\n page: 1,\r\n limit: 15,\r\n level: '',\r\n group_id: '',\r\n field_key: '',\r\n },\r\n field_key: '',\r\n level: '',\r\n group_id: '',\r\n label_id: '',\r\n user_time_type: '',\r\n pay_count: '',\r\n columns: [\r\n {\r\n type: 'expand',\r\n width: 40,\r\n render: (h, params) => {\r\n return h(expandRow, {\r\n props: {\r\n row: params.row,\r\n },\r\n });\r\n },\r\n },\r\n {\r\n type: 'selection',\r\n width: 60,\r\n align: 'center',\r\n },\r\n {\r\n title: 'ID',\r\n key: 'uid',\r\n width: 80,\r\n },\r\n {\r\n title: '头像',\r\n slot: 'avatars',\r\n minWidth: 60,\r\n },\r\n {\r\n title: '姓名',\r\n slot: 'nickname',\r\n minWidth: 150,\r\n },\r\n {\r\n title: '付费会员',\r\n slot: 'isMember',\r\n minWidth: 90,\r\n },\r\n {\r\n title: '用户等级',\r\n key: 'level',\r\n minWidth: 90,\r\n },\r\n {\r\n title: '分组',\r\n key: 'group_id',\r\n minWidth: 100,\r\n },\r\n {\r\n title: '手机号',\r\n key: 'phone',\r\n minWidth: 100,\r\n },\r\n {\r\n title: '用户类型',\r\n key: 'user_type',\r\n minWidth: 100,\r\n },\r\n {\r\n title: '余额',\r\n key: 'now_money',\r\n sortable: 'custom',\r\n minWidth: 100,\r\n },\r\n // {\r\n // title: '状态',\r\n // slot: 'status',\r\n // minWidth: 100\r\n // },\r\n {\r\n title: '操作',\r\n slot: 'action',\r\n fixed: 'right',\r\n minWidth: 120,\r\n },\r\n ],\r\n userLists: [],\r\n FromData: null,\r\n selectionList: [],\r\n user_ids: '',\r\n selectedData: [],\r\n timeVal: [],\r\n groupList: [],\r\n levelList: [],\r\n labelFrom: {\r\n page: 1,\r\n limit: '',\r\n },\r\n labelLists: [],\r\n selectedIds: new Set(), //选中合并项的id\r\n ids: [],\r\n };\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : 100;\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n created() {\r\n this.getList();\r\n },\r\n mounted() {\r\n this.userGroup();\r\n this.levelLists();\r\n // this.groupLists();\r\n },\r\n methods: {\r\n setUser() {\r\n let data = this.$refs.userEdit.formItem;\r\n let ids = [];\r\n this.$refs.userEdit.dataLabel.map((i) => {\r\n ids.push(i.id);\r\n });\r\n data.label_id = ids;\r\n // if (!data.real_name) return this.$Message.warning(\"请输入真实姓名\");\r\n // if (!data.phone) return this.$Message.warning(\"请输入手机号\");\r\n // if (!data.pwd) return this.$Message.warning(\"请输入密码\");\r\n // if (!data.true_pwd) return this.$Message.warning(\"请输入确认密码\");\r\n if (data.uid) {\r\n editUser(data)\r\n .then((res) => {\r\n this.modals = false;\r\n this.$Message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err.msg);\r\n });\r\n } else {\r\n setUser(data)\r\n .then((res) => {\r\n this.modals = false;\r\n this.$Message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((err) => {\r\n this.$Message.error(err.msg);\r\n });\r\n }\r\n },\r\n onceGetList() {\r\n this.labelActive.uid = 0;\r\n this.getList();\r\n },\r\n // 标签弹窗关闭\r\n labelClose() {\r\n this.labelActive.uid = 0;\r\n this.labelShow = false;\r\n this.selectLabelShow = false;\r\n },\r\n // 提交\r\n putSend(name) {\r\n this.$refs[name].validate((valid) => {\r\n if (valid) {\r\n if (!this.formInline.spread_uid) {\r\n return this.$Message.error('请上传用户');\r\n }\r\n agentSpreadApi(this.formInline)\r\n .then((res) => {\r\n this.promoterShow = false;\r\n this.$Message.success(res.msg);\r\n this.getList();\r\n this.$refs[name].resetFields();\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n }\r\n });\r\n },\r\n\r\n save() {\r\n this.modals = true;\r\n\r\n // this.$modalForm(getUserSaveForm())\r\n // .then(() => {\r\n // this.userFrom.page = 1;\r\n // this.getList();\r\n // })\r\n // .catch((res) => {\r\n // this.$Message.error(res.msg);\r\n // });\r\n },\r\n synchro() {\r\n userSynchro()\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 分组列表\r\n groupLists() {\r\n this.loading = true;\r\n userLabelApi(this.labelFrom)\r\n .then(async (res) => {\r\n let data = res.data;\r\n this.labelLists = data.list;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n onClickTab(type) {\r\n this.userFrom.page = 1;\r\n this.userFrom.user_type = type;\r\n this.getList();\r\n },\r\n userGroup() {\r\n let data = {\r\n page: 1,\r\n limit: '',\r\n };\r\n userGroupApi(data).then((res) => {\r\n this.groupList = res.data.list;\r\n });\r\n },\r\n levelLists() {\r\n let data = {\r\n page: 1,\r\n limit: '',\r\n title: '',\r\n is_show: 1,\r\n };\r\n levelListApi(data).then((res) => {\r\n this.levelList = res.data.list;\r\n });\r\n },\r\n // 批量设置分组;\r\n setGroup() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要设置分组的用户');\r\n } else {\r\n let uids = { uids: this.ids };\r\n this.$modalForm(userSetGroup(uids)).then(() => this.$refs.sends.getList());\r\n }\r\n },\r\n // 批量设置标签;\r\n setLabel() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要设置标签的用户');\r\n } else {\r\n let uids = { uids: this.ids };\r\n this.labelActive.uid = 0;\r\n this.labelShow = true;\r\n // this.$modalForm(userSetLabelApi(uids)).then(() =>\r\n // this.$refs.sends.getList()\r\n // );\r\n }\r\n },\r\n activeSelectData(data) {\r\n // let labels = [];\r\n // if (!data.length) return;\r\n // data.map((i) => {\r\n // labels.push(i.id);\r\n // });\r\n this.selectLabelShow = false;\r\n this.selectDataLabel = data || [];\r\n },\r\n // 批量设置标签\r\n activeData(data) {\r\n let labels = [];\r\n if (!data.length) return;\r\n data.map((i) => {\r\n labels.push(i.id);\r\n });\r\n saveSetLabel({\r\n uids: this.ids.join(','),\r\n label_id: labels,\r\n }).then((res) => {\r\n this.labelShow = false;\r\n this.selectedIds = new Set();\r\n this.getList();\r\n this.$Message.success(res.msg);\r\n });\r\n },\r\n //是否为付费会员;\r\n changeMember() {\r\n this.userFrom.page = 1;\r\n this.getList();\r\n },\r\n // 选择国家\r\n changeCountry() {\r\n if (this.userFrom.country === 'abroad' || !this.userFrom.country) {\r\n this.selectedData = [];\r\n this.userFrom.province = '';\r\n this.userFrom.city = '';\r\n this.address = [];\r\n }\r\n },\r\n // 选择地址\r\n handleChange(value, selectedData) {\r\n this.selectedData = selectedData.map((o) => o.label);\r\n this.userFrom.province = this.selectedData[0];\r\n this.userFrom.city = this.selectedData[1];\r\n },\r\n // 具体日期\r\n onchangeTime(e) {\r\n this.timeVal = e;\r\n this.userFrom.user_time = this.timeVal.join('-');\r\n },\r\n // 操作\r\n changeMenu(row, name, index) {\r\n let uid = [];\r\n uid.push(row.uid);\r\n let uids = { uids: uid };\r\n switch (name) {\r\n case '1':\r\n this.$refs.userDetails.modals = true;\r\n this.$refs.userDetails.getDetails(row.uid);\r\n break;\r\n case '2':\r\n this.getOtherFrom(row.uid);\r\n break;\r\n case '3':\r\n this.giveLevelTime(row.uid);\r\n break;\r\n case '4':\r\n this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index, 'user');\r\n break;\r\n case '5':\r\n this.$modalForm(userSetGroup(uids)).then(() => this.getList());\r\n break;\r\n case '6':\r\n this.openLabel(row);\r\n break;\r\n case '7':\r\n this.editS(row);\r\n break;\r\n default:\r\n this.del(row, '解除【 ' + row.nickname + ' 】的上级推广人', index, 'tuiguang');\r\n }\r\n },\r\n openLabel(row) {\r\n this.labelShow = true;\r\n this.labelActive.uid = row.uid;\r\n },\r\n openSelectLabel() {\r\n this.selectLabelShow = true;\r\n },\r\n editS(row) {\r\n this.promoterShow = true;\r\n this.formInline.uid = row.uid;\r\n },\r\n customer() {\r\n this.customerShow = true;\r\n },\r\n imageObject(e) {\r\n this.customerShow = false;\r\n this.formInline.spread_uid = e.uid;\r\n this.formInline.image = e.image;\r\n },\r\n cancel(name) {\r\n this.promoterShow = false;\r\n this.$refs[name].resetFields();\r\n },\r\n // 赠送会员等级\r\n giveLevel(id) {\r\n giveLevelApi(id)\r\n .then(async (res) => {\r\n if (res.data.status === false) {\r\n return this.$authLapse(res.data);\r\n }\r\n this.FromData = res.data;\r\n this.$refs.edits.modals = true;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 赠送会员等级\r\n giveLevelTime(id) {\r\n giveLevelTimeApi(id)\r\n .then(async (res) => {\r\n if (res.data.status === false) {\r\n return this.$authLapse(res.data);\r\n }\r\n this.FromData = res.data;\r\n this.$refs.edits.modals = true;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 删除\r\n del(row, tit, num, name) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: name === 'user' ? `user/del_level/${row.uid}` : `agent/stair/delete_spread/${row.uid}`,\r\n method: name === 'user' ? 'DELETE' : 'PUT',\r\n ids: '',\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$Message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 清除会员删除成功\r\n submitModel() {\r\n this.getList();\r\n },\r\n // 会员列表\r\n getList() {\r\n if (this.selectDataLabel.length) {\r\n let activeIds = [];\r\n this.selectDataLabel.forEach((item) => {\r\n activeIds.push(item.id);\r\n });\r\n this.userFrom.label_id = activeIds.join(',');\r\n }\r\n this.userFrom.user_type = this.userFrom.user_type || '';\r\n this.userFrom.status = this.userFrom.status || '';\r\n this.userFrom.sex = this.userFrom.sex || '';\r\n this.userFrom.is_promoter = this.userFrom.is_promoter || '';\r\n this.userFrom.country = this.userFrom.country || '';\r\n this.userFrom.pay_count = this.pay_count === 'all' ? '' : this.pay_count;\r\n this.userFrom.user_time_type = this.user_time_type === 'all' ? '' : this.user_time_type;\r\n this.userFrom.field_key = this.field_key === 'all' ? '' : this.field_key;\r\n this.userFrom.level = this.level === 'all' ? '' : this.level;\r\n this.userFrom.group_id = this.group_id === 'all' ? '' : this.group_id;\r\n this.loading = true;\r\n userList(this.userFrom)\r\n .then(async (res) => {\r\n let data = res.data;\r\n this.userLists = data.list;\r\n this.total = data.count;\r\n this.loading = false;\r\n this.$nextTick(() => {\r\n this.setChecked();\r\n });\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 用户导出\r\n async exportList() {\r\n if (this.selectDataLabel.length) {\r\n let activeIds = [];\r\n this.selectDataLabel.forEach((item) => {\r\n activeIds.push(item.id);\r\n });\r\n this.userFrom.label_id = activeIds.join(',');\r\n }\r\n this.userFrom.user_type = this.userFrom.user_type || '';\r\n this.userFrom.status = this.userFrom.status || '';\r\n this.userFrom.sex = this.userFrom.sex || '';\r\n this.userFrom.is_promoter = this.userFrom.is_promoter || '';\r\n this.userFrom.country = this.userFrom.country || '';\r\n this.userFrom.pay_count = this.pay_count === 'all' ? '' : this.pay_count;\r\n this.userFrom.user_time_type = this.user_time_type === 'all' ? '' : this.user_time_type;\r\n this.userFrom.field_key = this.field_key === 'all' ? '' : this.field_key;\r\n this.userFrom.level = this.level === 'all' ? '' : this.level;\r\n this.userFrom.group_id = this.group_id === 'all' ? '' : this.group_id;\r\n let [th, filekey, data, fileName] = [[], [], [], ''];\r\n // let fileName = \"\";\r\n let excelData = JSON.parse(JSON.stringify(this.userFrom));\r\n excelData.page = 1;\r\n for (let i = 0; i < excelData.page + 1; i++) {\r\n let lebData = await this.getExcelData(excelData);\r\n if (!fileName) fileName = lebData.filename;\r\n if (!filekey.length) {\r\n filekey = lebData.fileKey;\r\n }\r\n if (!th.length) th = lebData.header;\r\n if (lebData.export.length) {\r\n data = data.concat(lebData.export);\r\n excelData.page++;\r\n } else {\r\n this.$exportExcel(th, filekey, fileName, data);\r\n return;\r\n }\r\n }\r\n },\r\n getExcelData(excelData) {\r\n return new Promise((resolve, reject) => {\r\n exportUserList(excelData).then((res) => {\r\n resolve(res.data);\r\n });\r\n });\r\n },\r\n pageChange(index) {\r\n this.selectionList = [];\r\n this.userFrom.page = index;\r\n this.getList();\r\n },\r\n // 搜索\r\n userSearchs() {\r\n this.userFrom.page = 1;\r\n this.getList();\r\n },\r\n // 重置\r\n reset(name) {\r\n this.userFrom = {\r\n user_type: this.userFrom.user_type,\r\n status: '',\r\n sex: '',\r\n is_promoter: '',\r\n country: '',\r\n pay_count: '',\r\n user_time_type: '',\r\n user_time: '',\r\n nickname: '',\r\n field_key: '',\r\n level: '',\r\n group_id: '',\r\n label_id: '',\r\n page: 1, // 当前页\r\n limit: 20, // 每页显示条数\r\n };\r\n this.field_key = '';\r\n this.level = '';\r\n this.group_id = '';\r\n this.dataLabel = [];\r\n this.selectDataLabel = [];\r\n this.user_time_type = '';\r\n this.pay_count = '';\r\n this.timeVal = [];\r\n this.selectedIds = new Set();\r\n this.getList();\r\n },\r\n // 获取编辑表单数据\r\n getUserFrom(id) {\r\n getUserInfo(id)\r\n .then(async (res) => {\r\n this.modals = true;\r\n this.userData = res.data;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // getUserFrom(id) {\r\n // getUserData(id)\r\n // .then(async (res) => {\r\n // if (res.data.status === false) {\r\n // return this.$authLapse(res.data);\r\n // }\r\n // this.FromData = res.data;\r\n // this.$refs.edits.modals = true;\r\n // })\r\n // .catch((res) => {\r\n // this.$Message.error(res.msg);\r\n // });\r\n // },\r\n // 获取积分余额表单\r\n getOtherFrom(id) {\r\n editOtherApi(id)\r\n .then(async (res) => {\r\n if (res.data.status === false) {\r\n return this.$authLapse(res.data);\r\n }\r\n this.FromData = res.data;\r\n this.$refs.edits.modals = true;\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 修改状态\r\n onchangeIsShow(row) {\r\n let data = {\r\n id: row.uid,\r\n status: row.status,\r\n };\r\n isShowApi(data)\r\n .then(async (res) => {\r\n this.$Message.success(res.msg);\r\n })\r\n .catch((res) => {\r\n this.$Message.error(res.msg);\r\n });\r\n },\r\n // 点击发送优惠券\r\n onSend() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要发送优惠券的用户');\r\n } else {\r\n this.$refs.sends.modals = true;\r\n this.$refs.sends.getList();\r\n }\r\n },\r\n // 发送图文消息\r\n onSendPic() {\r\n if (this.ids.length === 0) {\r\n this.$Message.warning('请选择要发送图文消息的用户');\r\n } else {\r\n this.modal13 = true;\r\n }\r\n },\r\n // 编辑\r\n edit(row) {\r\n this.getUserFrom(row.uid);\r\n },\r\n // 修改成功\r\n submitFail() {\r\n // this.getList();\r\n },\r\n // 排序\r\n sortChanged(e) {\r\n this.userFrom[e.key] = e.order;\r\n this.getList();\r\n },\r\n //全选和取消全选时触发\r\n handleSelectAll(selection) {\r\n if (selection.length === 0) {\r\n //获取table的数据;\r\n let data = this.$refs.table.data;\r\n data.forEach((item) => {\r\n if (this.selectedIds.has(item.uid)) {\r\n this.selectedIds.delete(item.uid);\r\n }\r\n });\r\n } else {\r\n selection.forEach((item) => {\r\n this.selectedIds.add(item.uid);\r\n });\r\n }\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n // 选中某一行\r\n handleSelectRow(selection, row) {\r\n this.selectedIds.add(row.uid);\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n // 取消某一行\r\n handleCancelRow(selection, row) {\r\n this.selectedIds.delete(row.uid);\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n this.setChecked();\r\n });\r\n },\r\n setChecked() {\r\n //将new Set()转化为数组\r\n this.ids = [...this.selectedIds];\r\n // 找到绑定的table的ref对应的dom,找到table的objData对象,objData保存的是当前页的数据\r\n let objData = this.$refs.table.objData;\r\n for (let index in objData) {\r\n if (this.selectedIds.has(objData[index].uid)) {\r\n objData[index]._isChecked = true;\r\n }\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"stylus\">\r\n.picBox {\r\n display: inline-block;\r\n cursor: pointer;\r\n\r\n .upLoad {\r\n width: 58px;\r\n height: 58px;\r\n line-height: 58px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n background: rgba(0, 0, 0, 0.02);\r\n }\r\n\r\n .pictrue {\r\n width: 60px;\r\n height: 60px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n margin-right: 10px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n\r\n.userFrom {\r\n >>> .ivu-form-item-content {\r\n margin-left: 0px !important;\r\n }\r\n}\r\n\r\n.userAlert {\r\n margin-top: 20px;\r\n}\r\n\r\n.userI {\r\n color: #1890FF;\r\n font-style: normal;\r\n}\r\n\r\nimg {\r\n height: 36px;\r\n display: block;\r\n}\r\n\r\n.tabBox_img {\r\n width: 36px;\r\n height: 36px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n\r\n.tabBox_tit {\r\n width: 60%;\r\n font-size: 12px !important;\r\n margin: 0 2px 0 10px;\r\n letter-spacing: 1px;\r\n padding: 5px 0;\r\n box-sizing: border-box;\r\n}\r\n\r\n.modelBox {\r\n >>> .ivu-modal-body {\r\n padding: 0 16px 16px 16px !important;\r\n }\r\n}\r\n\r\n.vipName {\r\n color: #dab176;\r\n}\r\n\r\n.listbox {\r\n >>>.ivu-divider-horizontal {\r\n margin: 0 !important;\r\n }\r\n}\r\n\r\n.labelInput {\r\n border: 1px solid #dcdee2;\r\n padding: 0 6px;\r\n border-radius: 5px;\r\n min-height: 30px;\r\n cursor: pointer;\r\n\r\n .span {\r\n color: #c5c8ce;\r\n }\r\n\r\n .ivu-icon-ios-arrow-down {\r\n font-size: 14px;\r\n color: #808695;\r\n }\r\n}\r\n.demo-drawer-footer{\r\n width: 100%;\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n border-top: 1px solid #e8e8e8;\r\n padding: 10px 16px;\r\n text-align: right;\r\n background: #fff;\r\n }\r\n</style>\r\n"]}]}