| 1 |
- {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\src\\libs\\util.js","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\libs\\util.js","mtime":1677828270182},{"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}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanMiOwppbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICJFOi9pdGVtL25ld0l0ZW0vYWRtaW4vbm9kZV9tb2R1bGVzL0B2dWUvYmFiZWwtcHJlc2V0LWFwcC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbmQtaW5kZXguanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIjsKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyB8IENSTUVCIFsgQ1JNRULotYvog73lvIDlj5HogIXvvIzliqnlipvkvIHkuJrlj5HlsZUgXQovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIHwgQ29weXJpZ2h0IChjKSAyMDE2fjIwMjMgaHR0cHM6Ly93d3cuY3JtZWIuY29tIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gfCBMaWNlbnNlZCBDUk1FQuW5tuS4jeaYr+iHqueUsei9r+S7tu+8jOacque7j+iuuOWPr+S4jeiDveWOu+aOiUNSTUVC55u45YWz54mI5p2DCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gfCBBdXRob3I6IENSTUVCIFRlYW0gPGFkbWluQGNybWViLmNvbT4KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppbXBvcnQgQ29va2llcyBmcm9tICdqcy1jb29raWUnOyAvLyBjb29raWXkv53lrZjnmoTlpKnmlbAKCmltcG9ydCBjb25maWcgZnJvbSAnQC9jb25maWcnOwppbXBvcnQgeyBmb3JFYWNoLCBoYXNPbmVPZiwgb2JqRXF1YWwgfSBmcm9tICdAL2xpYnMvdG9vbHMnOwppbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnOwp2YXIgdGl0bGUgPSBjb25maWcudGl0bGUsCiAgICB1c2VJMThuID0gY29uZmlnLnVzZUkxOG47IC8vIOiuvue9rnNldENvb2tpZXPvvJsKLy8gc2V0VG9rZW4KCmV4cG9ydCB2YXIgc2V0Q29va2llcyA9IGZ1bmN0aW9uIHNldENvb2tpZXMoa2V5LCB2YWwsIGNvb2tpZUV4cGlyZXMpIHsKICBDb29raWVzLnNldChrZXksIHZhbCwgewogICAgZXhwaXJlczogY29va2llRXhwaXJlcyB8fCAxCiAgfSk7Cn07IC8vIOiOt+WPlmdldENvb2tpZXPvvJsKLy8gZ2V0VG9rZW4KCmV4cG9ydCB2YXIgZ2V0Q29va2llcyA9IGZ1bmN0aW9uIGdldENvb2tpZXMoa2V5KSB7CiAgcmV0dXJuIENvb2tpZXMuZ2V0KGtleSk7Cn07CmV4cG9ydCB2YXIgcmVtb3ZlQ29va2llcyA9IGZ1bmN0aW9uIHJlbW92ZUNvb2tpZXMoa2V5KSB7CiAgcmV0dXJuIENvb2tpZXMucmVtb3ZlKGtleSk7Cn07CmV4cG9ydCB2YXIgaGFzQ2hpbGQgPSBmdW5jdGlvbiBoYXNDaGlsZChpdGVtKSB7CiAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggIT09IDA7Cn07Cgp2YXIgc2hvd1RoaXNNZW51RWxlID0gZnVuY3Rpb24gc2hvd1RoaXNNZW51RWxlKGl0ZW0sIGFjY2VzcykgewogIGlmIChpdGVtLm1ldGEgJiYgaXRlbS5tZXRhLmFjY2VzcyAmJiBpdGVtLm1ldGEuYWNjZXNzLmxlbmd0aCkgewogICAgaWYgKGhhc09uZU9mKGl0ZW0ubWV0YS5hY2Nlc3MsIGFjY2VzcykpIHJldHVybiB0cnVlO2Vsc2UgcmV0dXJuIGZhbHNlOwogIH0gZWxzZSByZXR1cm4gdHJ1ZTsKfTsKLyoqDQogKiBAcGFyYW0ge0FycmF5fSBsaXN0IOmAmui/h+i3r+eUseWIl+ihqOW+l+WIsOiPnOWNleWIl+ihqA0KICogQHJldHVybnMge0FycmF5fQ0KICovCgoKZXhwb3J0IHZhciBnZXRNZW51QnlSb3V0ZXIgPSBmdW5jdGlvbiBnZXRNZW51QnlSb3V0ZXIobGlzdCwgYWNjZXNzKSB7CiAgdmFyIHJlcyA9IFtdOwogIGZvckVhY2gobGlzdCwgZnVuY3Rpb24gKGl0ZW0pIHsKICAgIGlmICghaXRlbS5tZXRhIHx8IGl0ZW0ubWV0YSAmJiAhaXRlbS5tZXRhLmhpZGVJbk1lbnUpIHsKICAgICAgdmFyIG9iaiA9IHsKICAgICAgICBpY29uOiBpdGVtLm1ldGEgJiYgaXRlbS5tZXRhLmljb24gfHwgJycsCiAgICAgICAgbmFtZTogaXRlbS5uYW1lLAogICAgICAgIG1ldGE6IGl0ZW0ubWV0YQogICAgICB9OwoKICAgICAgaWYgKChoYXNDaGlsZChpdGVtKSB8fCBpdGVtLm1ldGEgJiYgaXRlbS5tZXRhLnNob3dBbHdheXMpICYmIHNob3dUaGlzTWVudUVsZShpdGVtLCBhY2Nlc3MpKSB7CiAgICAgICAgb2JqLmNoaWxkcmVuID0gZ2V0TWVudUJ5Um91dGVyKGl0ZW0uY2hpbGRyZW4sIGFjY2Vzcyk7CiAgICAgIH0KCiAgICAgIGlmIChpdGVtLm1ldGEgJiYgaXRlbS5tZXRhLmhyZWYpIG9iai5ocmVmID0gaXRlbS5tZXRhLmhyZWY7CiAgICAgIGlmIChzaG93VGhpc01lbnVFbGUoaXRlbSwgYWNjZXNzKSkgcmVzLnB1c2gob2JqKTsKICAgIH0KICB9KTsKICByZXR1cm4gcmVzOwp9OwovKioNCiAqIEBwYXJhbSB7QXJyYXl9IHJvdXRlTWV0Y2hlZCDlvZPliY3ot6/nlLFtZXRjaGVkDQogKiBAcmV0dXJucyB7QXJyYXl9DQogKi8KCmV4cG9ydCB2YXIgZ2V0QnJlYWRDcnVtYkxpc3QgPSBmdW5jdGlvbiBnZXRCcmVhZENydW1iTGlzdChyb3V0ZSwgaG9tZVJvdXRlKSB7CiAgdmFyIGhvbWVJdGVtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBob21lUm91dGUpLCB7fSwgewogICAgaWNvbjogaG9tZVJvdXRlLm1ldGEuaWNvbgogIH0pOwoKICB2YXIgcm91dGVNZXRjaGVkID0gcm91dGUubWF0Y2hlZDsKICBpZiAocm91dGVNZXRjaGVkLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHsKICAgIHJldHVybiBpdGVtLm5hbWUgPT09IGhvbWVSb3V0ZS5uYW1lOwogIH0pKSByZXR1cm4gW2hvbWVJdGVtXTsKICB2YXIgcmVzID0gcm91dGVNZXRjaGVkLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgcmV0dXJuIGl0ZW0ubWV0YSA9PT0gdW5kZWZpbmVkIHx8ICFpdGVtLm1ldGEuaGlkZUluQnJlYWQ7CiAgfSkubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICB2YXIgbWV0YSA9IF9vYmplY3RTcHJlYWQoe30sIGl0ZW0ubWV0YSk7CgogICAgaWYgKG1ldGEudGl0bGUgJiYgdHlwZW9mIG1ldGEudGl0bGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgbWV0YS5fX3RpdGxlSXNGdW5jdGlvbl9fID0gdHJ1ZTsKICAgICAgbWV0YS50aXRsZSA9IG1ldGEudGl0bGUocm91dGUpOwogICAgfQoKICAgIHZhciBvYmogPSB7CiAgICAgIGljb246IGl0ZW0ubWV0YSAmJiBpdGVtLm1ldGEuaWNvbiB8fCAnJywKICAgICAgbmFtZTogaXRlbS5uYW1lLAogICAgICBtZXRhOiBtZXRhCiAgICB9OwogICAgcmV0dXJuIG9iajsKICB9KTsKICByZXMgPSByZXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICByZXR1cm4gIWl0ZW0ubWV0YS5oaWRlSW5NZW51OwogIH0pOwogIHJldHVybiBbX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBob21lSXRlbSksIHt9LCB7CiAgICB0bzogaG9tZVJvdXRlLnBhdGgKICB9KV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMpKTsKfTsKZXhwb3J0IHZhciBnZXRSb3V0ZVRpdGxlSGFuZGxlZCA9IGZ1bmN0aW9uIGdldFJvdXRlVGl0bGVIYW5kbGVkKHJvdXRlKSB7CiAgdmFyIHJvdXRlciA9IF9vYmplY3RTcHJlYWQoe30sIHJvdXRlKTsKCiAgdmFyIG1ldGEgPSBfb2JqZWN0U3ByZWFkKHt9LCByb3V0ZS5tZXRhKTsKCiAgdmFyIHRpdGxlID0gJyc7CgogIGlmIChtZXRhLnRpdGxlKSB7CiAgICBpZiAodHlwZW9mIG1ldGEudGl0bGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgbWV0YS5fX3RpdGxlSXNGdW5jdGlvbl9fID0gdHJ1ZTsKICAgICAgdGl0bGUgPSBtZXRhLnRpdGxlKHJvdXRlcik7CiAgICB9IGVsc2UgdGl0bGUgPSBtZXRhLnRpdGxlOwogIH0KCiAgbWV0YS50aXRsZSA9IHRpdGxlOwogIHJvdXRlci5tZXRhID0gbWV0YTsKICByZXR1cm4gcm91dGVyOwp9OwpleHBvcnQgdmFyIHNob3dUaXRsZSA9IGZ1bmN0aW9uIHNob3dUaXRsZShpdGVtLCB2bSkgewogIHZhciBfaXRlbSRtZXRhID0gaXRlbS5tZXRhLAogICAgICB0aXRsZSA9IF9pdGVtJG1ldGEudGl0bGUsCiAgICAgIF9fdGl0bGVJc0Z1bmN0aW9uX18gPSBfaXRlbSRtZXRhLl9fdGl0bGVJc0Z1bmN0aW9uX187CiAgaWYgKCF0aXRsZSkgcmV0dXJuOwoKICBpZiAodXNlSTE4bikgewogICAgaWYgKHRpdGxlLmluY2x1ZGVzKCd7eycpICYmIHRpdGxlLmluY2x1ZGVzKCd9fScpICYmIHVzZUkxOG4pIHRpdGxlID0gdGl0bGUucmVwbGFjZSgvKHt7W1xzXFNdKz99fSkvLCBmdW5jdGlvbiAobSwgc3RyKSB7CiAgICAgIHJldHVybiBzdHIucmVwbGFjZSgve3soW1xzXFNdKil9fS8sIGZ1bmN0aW9uIChtLCBfKSB7CiAgICAgICAgcmV0dXJuIHZtLiR0KF8udHJpbSgpKTsKICAgICAgfSk7CiAgICB9KTtlbHNlIGlmIChfX3RpdGxlSXNGdW5jdGlvbl9fKSB0aXRsZSA9IGl0ZW0ubWV0YS50aXRsZTtlbHNlIHRpdGxlID0gdm0uJHQoaXRlbS5uYW1lKTsKICB9IGVsc2UgdGl0bGUgPSBpdGVtLm1ldGEgJiYgaXRlbS5tZXRhLnRpdGxlIHx8IGl0ZW0ubmFtZTsKCiAgcmV0dXJuIHRpdGxlOwp9OwovKioNCiAqIEBkZXNjcmlwdGlvbiDmnKzlnLDlrZjlgqjlkozojrflj5bmoIfnrb7lr7zoiKrliJfooagNCiAqLwoKZXhwb3J0IHZhciBzZXRUYWdOYXZMaXN0SW5Mb2NhbHN0b3JhZ2UgPSBmdW5jdGlvbiBzZXRUYWdOYXZMaXN0SW5Mb2NhbHN0b3JhZ2UobGlzdCkgewogIGxvY2FsU3RvcmFnZS50YWdOYXZlTGlzdCA9IEpTT04uc3RyaW5naWZ5KGxpc3QpOwp9OwovKioNCiAqIEByZXR1cm5zIHtBcnJheX0g5YW25Lit55qE5q+P5Liq5YWD57Sg5Y+q5YyF5ZCr6Lev55Sx5Y6f5L+h5oGv5Lit55qEbmFtZSwgcGF0aCwgbWV0YeS4iemhuQ0KICovCgpleHBvcnQgdmFyIGdldFRhZ05hdkxpc3RGcm9tTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gZ2V0VGFnTmF2TGlzdEZyb21Mb2NhbHN0b3JhZ2UoKSB7CiAgdmFyIGxpc3QgPSBsb2NhbFN0b3JhZ2UudGFnTmF2ZUxpc3Q7CiAgcmV0dXJuIGxpc3QgPyBKU09OLnBhcnNlKGxpc3QpIDogW107Cn07Ci8qKg0KICogQHBhcmFtIHtBcnJheX0gcm91dGVycyDot6/nlLHliJfooajmlbDnu4QNCiAqIEBkZXNjcmlwdGlvbiDnlKjkuo7mib7liLDot6/nlLHliJfooajkuK1uYW1l5Li6aG9tZeeahOWvueixoQ0KICovCgpleHBvcnQgdmFyIGdldEhvbWVSb3V0ZSA9IGZ1bmN0aW9uIGdldEhvbWVSb3V0ZShyb3V0ZXJzKSB7CiAgdmFyIGhvbWVOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnaG9tZSc7CiAgdmFyIGkgPSAtMTsKICB2YXIgbGVuID0gcm91dGVycy5sZW5ndGg7CiAgdmFyIGhvbWVSb3V0ZSA9IHt9OwoKICB3aGlsZSAoKytpIDwgbGVuKSB7CiAgICB2YXIgaXRlbSA9IHJvdXRlcnNbaV07CgogICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgdmFyIHJlcyA9IGdldEhvbWVSb3V0ZShpdGVtLmNoaWxkcmVuLCBob21lTmFtZSk7CiAgICAgIGlmIChyZXMubmFtZSkgcmV0dXJuIHJlczsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChpdGVtLm5hbWUgPT09IGhvbWVOYW1lKSBob21lUm91dGUgPSBpdGVtOwogICAgfQogIH0KCiAgcmV0dXJuIGhvbWVSb3V0ZTsKfTsKLyoqDQogKiBAcGFyYW0geyp9IGxpc3Qg546w5pyJ5qCH562+5a+86Iiq5YiX6KGoDQogKiBAcGFyYW0geyp9IG5ld1JvdXRlIOaWsOa3u+WKoOeahOi3r+eUseWOn+S/oeaBr+WvueixoQ0KICogQGRlc2NyaXB0aW9uIOWmguaenOivpW5ld1JvdXRl5bey57uP5a2Y5Zyo5YiZ5LiN5YaN5re75YqgDQogKi8KCmV4cG9ydCB2YXIgZ2V0TmV3VGFnTGlzdCA9IGZ1bmN0aW9uIGdldE5ld1RhZ0xpc3QobGlzdCwgbmV3Um91dGUpIHsKICB2YXIgbmFtZSA9IG5ld1JvdXRlLm5hbWUsCiAgICAgIHBhdGggPSBuZXdSb3V0ZS5wYXRoLAogICAgICBtZXRhID0gbmV3Um91dGUubWV0YTsKCiAgdmFyIG5ld0xpc3QgPSBfdG9Db25zdW1hYmxlQXJyYXkobGlzdCk7CgogIGlmIChuZXdMaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoaXRlbSkgewogICAgcmV0dXJuIGl0ZW0ubmFtZSA9PT0gbmFtZTsKICB9KSA+PSAwKSByZXR1cm4gbmV3TGlzdDtlbHNlIG5ld0xpc3QucHVzaCh7CiAgICBuYW1lOiBuYW1lLAogICAgcGF0aDogcGF0aCwKICAgIG1ldGE6IG1ldGEKICB9KTsKICByZXR1cm4gbmV3TGlzdDsKfTsKLyoqDQogKiBAcGFyYW0geyp9IGFjY2VzcyDnlKjmiLfmnYPpmZDmlbDnu4TvvIzlpoIgWydzdXBlcl9hZG1pbicsICdhZG1pbiddDQogKiBAcGFyYW0geyp9IHJvdXRlIOi3r+eUseWIl+ihqA0KICovCgp2YXIgaGFzQWNjZXNzID0gZnVuY3Rpb24gaGFzQWNjZXNzKGFjY2Vzcywgcm91dGUpIHsKICBpZiAocm91dGUubWV0YSAmJiByb3V0ZS5tZXRhLmFjY2VzcykgcmV0dXJuIGhhc09uZU9mKGFjY2Vzcywgcm91dGUubWV0YS5hY2Nlc3MpO2Vsc2UgcmV0dXJuIHRydWU7Cn07Ci8qKg0KICog5p2D6Ym0DQogKiBAcGFyYW0geyp9IG5hbWUg5Y2z5bCG6Lez6L2s55qE6Lev55SxbmFtZQ0KICogQHBhcmFtIHsqfSBhY2Nlc3Mg55So5oi35p2D6ZmQ5pWw57uEDQogKiBAcGFyYW0geyp9IHJvdXRlcyDot6/nlLHliJfooagNCiAqIEBkZXNjcmlwdGlvbiDnlKjmiLfmmK/lkKblj6/ot7PovazliLDor6XpobUNCiAqLwoKCmV4cG9ydCB2YXIgY2FuVHVyblRvID0gZnVuY3Rpb24gY2FuVHVyblRvKG5hbWUsIGFjY2Vzcywgcm91dGVzKSB7CiAgdmFyIHJvdXRlUGVybWlzc2lvbkp1ZGdlID0gZnVuY3Rpb24gcm91dGVQZXJtaXNzaW9uSnVkZ2UobGlzdCkgewogICAgcmV0dXJuIGxpc3Quc29tZShmdW5jdGlvbiAoaXRlbSkgewogICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkgewogICAgICAgIHJldHVybiByb3V0ZVBlcm1pc3Npb25KdWRnZShpdGVtLmNoaWxkcmVuKTsKICAgICAgfSBlbHNlIGlmIChpdGVtLm5hbWUgPT09IG5hbWUpIHsKICAgICAgICByZXR1cm4gaGFzQWNjZXNzKGFjY2VzcywgaXRlbSk7CiAgICAgIH0KICAgIH0pOwogIH07CgogIHJldHVybiByb3V0ZVBlcm1pc3Npb25KdWRnZShyb3V0ZXMpOwp9OwovKioNCiAqIEBwYXJhbSB7U3RyaW5nfSB1cmwNCiAqIEBkZXNjcmlwdGlvbiDku45VUkzkuK3op6PmnpDlj4LmlbANCiAqLwoKZXhwb3J0IHZhciBnZXRQYXJhbXMgPSBmdW5jdGlvbiBnZXRQYXJhbXModXJsKSB7CiAgdmFyIGtleVZhbHVlQXJyID0gdXJsLnNwbGl0KCc/JylbMV0uc3BsaXQoJyYnKTsKICB2YXIgcGFyYW1PYmogPSB7fTsKICBrZXlWYWx1ZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICB2YXIga2V5VmFsdWUgPSBpdGVtLnNwbGl0KCc9Jyk7CiAgICBwYXJhbU9ialtrZXlWYWx1ZVswXV0gPSBrZXlWYWx1ZVsxXTsKICB9KTsKICByZXR1cm4gcGFyYW1PYmo7Cn07Ci8qKg0KICogQHBhcmFtIHtBcnJheX0gbGlzdCDmoIfnrb7liJfooagNCiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIOW9k+WJjeWFs+mXreeahOagh+etvueahG5hbWUNCiAqLwoKZXhwb3J0IHZhciBnZXROZXh0Um91dGUgPSBmdW5jdGlvbiBnZXROZXh0Um91dGUobGlzdCwgcm91dGUpIHsKICB2YXIgcmVzID0ge307CgogIGlmIChsaXN0Lmxlbmd0aCA9PT0gMikgewogICAgcmVzID0gZ2V0SG9tZVJvdXRlKGxpc3QpOwogIH0gZWxzZSB7CiAgICB2YXIgaW5kZXggPSBsaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoaXRlbSkgewogICAgICByZXR1cm4gcm91dGVFcXVhbChpdGVtLCByb3V0ZSk7CiAgICB9KTsKICAgIGlmIChpbmRleCA9PT0gbGlzdC5sZW5ndGggLSAxKSByZXMgPSBsaXN0W2xpc3QubGVuZ3RoIC0gMl07ZWxzZSByZXMgPSBsaXN0W2luZGV4ICsgMV07CiAgfQoKICByZXR1cm4gcmVzOwp9OwovKioNCiAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lcyDlm57osIPlh73mlbDpnIDopoHmiafooYznmoTmrKHmlbANCiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIOWbnuiwg+WHveaVsA0KICovCgpleHBvcnQgdmFyIGRvQ3VzdG9tVGltZXMgPSBmdW5jdGlvbiBkb0N1c3RvbVRpbWVzKHRpbWVzLCBjYWxsYmFjaykgewogIHZhciBpID0gLTE7CgogIHdoaWxlICgrK2kgPCB0aW1lcykgewogICAgY2FsbGJhY2soaSk7CiAgfQp9OwovKioNCiAqIEBwYXJhbSB7T2JqZWN0fSBmaWxlIOS7juS4iuS8oOe7hOS7tuW+l+WIsOeahOaWh+S7tuWvueixoQ0KICogQHJldHVybnMge1Byb21pc2V9IHJlc29sdmXlj4LmlbDmmK/op6PmnpDlkI7nmoTkuoznu7TmlbDnu4QNCiAqIEBkZXNjcmlwdGlvbiDku45Dc3bmlofku7bkuK3op6PmnpDlh7rooajmoLzvvIzop6PmnpDmiJDkuoznu7TmlbDnu4QNCiAqLwoKZXhwb3J0IHZhciBnZXRBcnJheUZyb21GaWxlID0gZnVuY3Rpb24gZ2V0QXJyYXlGcm9tRmlsZShmaWxlKSB7CiAgdmFyIG5hbWVTcGxpdCA9IGZpbGUubmFtZS5zcGxpdCgnLicpOwogIHZhciBmb3JtYXQgPSBuYW1lU3BsaXRbbmFtZVNwbGl0Lmxlbmd0aCAtIDFdOwogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpOyAvLyDku6XmlofmnKzmoLzlvI/or7vlj5YKCiAgICB2YXIgYXJyID0gW107CgogICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChldnQpIHsKICAgICAgdmFyIGRhdGEgPSBldnQudGFyZ2V0LnJlc3VsdDsgLy8g6K+75Yiw55qE5pWw5o2uCgogICAgICB2YXIgcGFzdGVEYXRhID0gZGF0YS50cmltKCk7CiAgICAgIGFyciA9IHBhc3RlRGF0YS5zcGxpdCgvW1xuXHUwMDg1XHUyMDI4XHUyMDI5XXxcclxuPy9nKS5tYXAoZnVuY3Rpb24gKHJvdykgewogICAgICAgIHJldHVybiByb3cuc3BsaXQoJ1x0Jyk7CiAgICAgIH0pLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtWzBdLnNwbGl0KCcsJyk7CiAgICAgIH0pOwogICAgICBpZiAoZm9ybWF0ID09PSAnY3N2JykgcmVzb2x2ZShhcnIpO2Vsc2UgcmVqZWN0KG5ldyBFcnJvcignW0Zvcm1hdCBFcnJvcl065L2g5LiK5Lyg55qE5LiN5pivQ3N25paH5Lu2JykpOwogICAgfTsKICB9KTsKfTsKLyoqDQogKiBAcGFyYW0ge0FycmF5fSBhcnJheSDooajmoLzmlbDmja7kuoznu7TmlbDnu4QNCiAqIEByZXR1cm5zIHtPYmplY3R9IHsgY29sdW1ucywgdGFibGVEYXRhIH0NCiAqIEBkZXNjcmlwdGlvbiDku47kuoznu7TmlbDnu4TkuK3ojrflj5booajlpLTlkozooajmoLzmlbDmja7vvIzlsIbnrKzkuIDooYzkvZzkuLrooajlpLTvvIznlKjkuo7lnKhpVmlld+eahOihqOagvOS4reWxleekuuaVsOaNrg0KICovCgpleHBvcnQgdmFyIGdldFRhYmxlRGF0YUZyb21BcnJheSA9IGZ1bmN0aW9uIGdldFRhYmxlRGF0YUZyb21BcnJheShhcnJheSkgewogIHZhciBjb2x1bW5zID0gW107CiAgdmFyIHRhYmxlRGF0YSA9IFtdOwoKICBpZiAoYXJyYXkubGVuZ3RoID4gMSkgewogICAgdmFyIHRpdGxlcyA9IGFycmF5LnNoaWZ0KCk7CiAgICBjb2x1bW5zID0gdGl0bGVzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICByZXR1cm4gewogICAgICAgIHRpdGxlOiBpdGVtLAogICAgICAgIGtleTogaXRlbQogICAgICB9OwogICAgfSk7CiAgICB0YWJsZURhdGEgPSBhcnJheS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgdmFyIHJlcyA9IHt9OwogICAgICBpdGVtLmZvckVhY2goZnVuY3Rpb24gKGNvbCwgaSkgewogICAgICAgIHJlc1t0aXRsZXNbaV1dID0gY29sOwogICAgICB9KTsKICAgICAgcmV0dXJuIHJlczsKICAgIH0pOwogIH0KCiAgcmV0dXJuIHsKICAgIGNvbHVtbnM6IGNvbHVtbnMsCiAgICB0YWJsZURhdGE6IHRhYmxlRGF0YQogIH07Cn07CmV4cG9ydCB2YXIgZmluZE5vZGVVcHBlciA9IGZ1bmN0aW9uIGZpbmROb2RlVXBwZXIoZWxlLCB0YWcpIHsKICBpZiAoZWxlLnBhcmVudE5vZGUpIHsKICAgIGlmIChlbGUucGFyZW50Tm9kZS50YWdOYW1lID09PSB0YWcudG9VcHBlckNhc2UoKSkgewogICAgICByZXR1cm4gZWxlLnBhcmVudE5vZGU7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZmluZE5vZGVVcHBlcihlbGUucGFyZW50Tm9kZSwgdGFnKTsKICAgIH0KICB9Cn07CmV4cG9ydCB2YXIgZmluZE5vZGVVcHBlckJ5Q2xhc3NlcyA9IGZ1bmN0aW9uIGZpbmROb2RlVXBwZXJCeUNsYXNzZXMoZWxlLCBjbGFzc2VzKSB7CiAgdmFyIHBhcmVudE5vZGUgPSBlbGUucGFyZW50Tm9kZTsKCiAgaWYgKHBhcmVudE5vZGUpIHsKICAgIHZhciBjbGFzc0xpc3QgPSBwYXJlbnROb2RlLmNsYXNzTGlzdDsKCiAgICBpZiAoY2xhc3NMaXN0ICYmIGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGNsYXNzTmFtZSkgewogICAgICByZXR1cm4gY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSk7CiAgICB9KSkgewogICAgICByZXR1cm4gcGFyZW50Tm9kZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBmaW5kTm9kZVVwcGVyQnlDbGFzc2VzKHBhcmVudE5vZGUsIGNsYXNzZXMpOwogICAgfQogIH0KfTsKZXhwb3J0IHZhciBmaW5kTm9kZURvd253YXJkID0gZnVuY3Rpb24gZmluZE5vZGVEb3dud2FyZChlbGUsIHRhZykgewogIHZhciB0YWdOYW1lID0gdGFnLnRvVXBwZXJDYXNlKCk7CgogIGlmIChlbGUuY2hpbGROb2Rlcy5sZW5ndGgpIHsKICAgIHZhciBpID0gLTE7CiAgICB2YXIgbGVuID0gZWxlLmNoaWxkTm9kZXMubGVuZ3RoOwoKICAgIHdoaWxlICgrK2kgPCBsZW4pIHsKICAgICAgdmFyIGNoaWxkID0gZWxlLmNoaWxkTm9kZXNbaV07CiAgICAgIGlmIChjaGlsZC50YWdOYW1lID09PSB0YWdOYW1lKSByZXR1cm4gY2hpbGQ7ZWxzZSByZXR1cm4gZmluZE5vZGVEb3dud2FyZChjaGlsZCwgdGFnKTsKICAgIH0KICB9Cn07CmV4cG9ydCB2YXIgc2hvd0J5QWNjZXNzID0gZnVuY3Rpb24gc2hvd0J5QWNjZXNzKGFjY2VzcywgY2FuVmlld0FjY2VzcykgewogIHJldHVybiBoYXNPbmVPZihjYW5WaWV3QWNjZXNzLCBhY2Nlc3MpOwp9OwovKioNCiAqIEBkZXNjcmlwdGlvbiDmoLnmja5uYW1lL3BhcmFtcy9xdWVyeeWIpOaWreS4pOS4qui3r+eUseWvueixoeaYr+WQpuebuOetiQ0KICogQHBhcmFtIHsqfSByb3V0ZTEg6Lev55Sx5a+56LGhDQogKiBAcGFyYW0geyp9IHJvdXRlMiDot6/nlLHlr7nosaENCiAqLwoKZXhwb3J0IHZhciByb3V0ZUVxdWFsID0gZnVuY3Rpb24gcm91dGVFcXVhbChyb3V0ZTEsIHJvdXRlMikgewogIHZhciBwYXJhbXMxID0gcm91dGUxLnBhcmFtcyB8fCB7fTsKICB2YXIgcGFyYW1zMiA9IHJvdXRlMi5wYXJhbXMgfHwge307CiAgdmFyIHF1ZXJ5MSA9IHJvdXRlMS5xdWVyeSB8fCB7fTsKICB2YXIgcXVlcnkyID0gcm91dGUyLnF1ZXJ5IHx8IHt9OwogIHJldHVybiByb3V0ZTEubmFtZSA9PT0gcm91dGUyLm5hbWUgJiYgb2JqRXF1YWwocGFyYW1zMSwgcGFyYW1zMikgJiYgb2JqRXF1YWwocXVlcnkxLCBxdWVyeTIpOwp9OwovKioNCiAqIOWIpOaWreaJk+W8gOeahOagh+etvuWIl+ihqOmHjOaYr+WQpuW3suWtmOWcqOi/meS4quaWsOa3u+WKoOeahOi3r+eUseWvueixoQ0KICovCgpleHBvcnQgdmFyIHJvdXRlSGFzRXhpc3QgPSBmdW5jdGlvbiByb3V0ZUhhc0V4aXN0KHRhZ05hdkxpc3QsIHJvdXRlSXRlbSkgewogIHZhciBsZW4gPSB0YWdOYXZMaXN0Lmxlbmd0aDsKICB2YXIgcmVzID0gZmFsc2U7CiAgZG9DdXN0b21UaW1lcyhsZW4sIGZ1bmN0aW9uIChpbmRleCkgewogICAgaWYgKHJvdXRlRXF1YWwodGFnTmF2TGlzdFtpbmRleF0sIHJvdXRlSXRlbSkpIHJlcyA9IHRydWU7CiAgfSk7CiAgcmV0dXJuIHJlczsKfTsKZXhwb3J0IHZhciBsb2NhbFNhdmUgPSBmdW5jdGlvbiBsb2NhbFNhdmUoa2V5LCB2YWx1ZSkgewogIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpOwp9OwpleHBvcnQgdmFyIGxvY2FsUmVhZCA9IGZ1bmN0aW9uIGxvY2FsUmVhZChrZXkpIHsKICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAnJzsKfTsgLy8gc2Nyb2xsVG9wIGFuaW1hdGlvbgoKZXhwb3J0IHZhciBzY3JvbGxUb3AgPSBmdW5jdGlvbiBzY3JvbGxUb3AoZWwpIHsKICB2YXIgZnJvbSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDsKICB2YXIgdG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDsKICB2YXIgZHVyYXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IDUwMDsKICB2YXIgZW5kQ2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gNCA/IGFyZ3VtZW50c1s0XSA6IHVuZGVmaW5lZDsKCiAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7CiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwogICAgfTsKICB9CgogIHZhciBkaWZmZXJlbmNlID0gTWF0aC5hYnMoZnJvbSAtIHRvKTsKICB2YXIgc3RlcCA9IE1hdGguY2VpbChkaWZmZXJlbmNlIC8gZHVyYXRpb24gKiA1MCk7CgogIHZhciBzY3JvbGwgPSBmdW5jdGlvbiBzY3JvbGwoc3RhcnQsIGVuZCwgc3RlcCkgewogICAgaWYgKHN0YXJ0ID09PSBlbmQpIHsKICAgICAgZW5kQ2FsbGJhY2sgJiYgZW5kQ2FsbGJhY2soKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBkID0gc3RhcnQgKyBzdGVwID4gZW5kID8gZW5kIDogc3RhcnQgKyBzdGVwOwoKICAgIGlmIChzdGFydCA+IGVuZCkgewogICAgICBkID0gc3RhcnQgLSBzdGVwIDwgZW5kID8gZW5kIDogc3RhcnQgLSBzdGVwOwogICAgfQoKICAgIGlmIChlbCA9PT0gd2luZG93KSB7CiAgICAgIHdpbmRvdy5zY3JvbGxUbyhkLCBkKTsKICAgIH0gZWxzZSB7CiAgICAgIGVsLnNjcm9sbFRvcCA9IGQ7CiAgICB9CgogICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBzY3JvbGwoZCwgZW5kLCBzdGVwKTsKICAgIH0pOwogIH07CgogIHNjcm9sbChmcm9tLCB0bywgc3RlcCk7Cn07Ci8qKg0KICogQGRlc2NyaXB0aW9uIOagueaNruW9k+WJjei3s+i9rOeahOi3r+eUseiuvue9ruaYvuekuuWcqOa1j+iniOWZqOagh+etvueahHRpdGxlDQogKiBAcGFyYW0ge09iamVjdH0gcm91dGVJdGVtIOi3r+eUseWvueixoQ0KICogQHBhcmFtIHtPYmplY3R9IHZtIFZ1ZeWunuS+iw0KICovCgpleHBvcnQgdmFyIHNldFRpdGxlID0gZnVuY3Rpb24gc2V0VGl0bGUocm91dGVJdGVtLCB2bSkgewogIHZhciBoYW5kbGVkUm91dGUgPSBnZXRSb3V0ZVRpdGxlSGFuZGxlZChyb3V0ZUl0ZW0pOwogIHZhciBwYWdlVGl0bGUgPSBzaG93VGl0bGUoaGFuZGxlZFJvdXRlLCB2bSk7CiAgdmFyIHJlc1RpdGxlID0gcGFnZVRpdGxlID8gIiIuY29uY2F0KHRpdGxlLCAiIC0gIikuY29uY2F0KHBhZ2VUaXRsZSkgOiB0aXRsZTsKICB3aW5kb3cuZG9jdW1lbnQudGl0bGUgPSByZXNUaXRsZTsKfTsKZXhwb3J0IHZhciBSID0gZnVuY3Rpb24gUihtZW51TGlzdCwgbmV3T3Blbk1lbnVzKSB7CiAgbWVudUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgdmFyIG5ld01lbnUgPSB7fTsKCiAgICBmb3IgKHZhciBpIGluIGl0ZW0pIHsKICAgICAgaWYgKGkgIT09ICdjaGlsZHJlbicpIG5ld01lbnVbaV0gPSBjbG9uZURlZXAoaXRlbVtpXSk7CiAgICB9CgogICAgbmV3T3Blbk1lbnVzLnB1c2gobmV3TWVudSk7CiAgICBpdGVtLmNoaWxkcmVuICYmIFIoaXRlbS5jaGlsZHJlbiwgbmV3T3Blbk1lbnVzKTsKICB9KTsKICByZXR1cm4gbmV3T3Blbk1lbnVzOwp9OwpleHBvcnQgZnVuY3Rpb24gZ2V0TWVudW9wZW4odG8sIG1lbnVMaXN0KSB7CiAgdmFyIGFsbE1lbnVzID0gW107CiAgbWVudUxpc3QuZm9yRWFjaChmdW5jdGlvbiAobWVudSkgewogICAgdmFyIG1lbnVzID0gdHJhbnNNZW51KG1lbnUsIFtdKTsKICAgIGFsbE1lbnVzLnB1c2goewogICAgICBwYXRoOiBtZW51LnBhdGgsCiAgICAgIG9wZW5OYW1lczogW10KICAgIH0pOwogICAgbWVudXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICByZXR1cm4gYWxsTWVudXMucHVzaChpdGVtKTsKICAgIH0pOwogIH0pOwogIHZhciBjdXJyZW50TWVudSA9IGFsbE1lbnVzLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgIHJldHVybiBpdGVtLnBhdGggPT09IHRvLnBhdGg7CiAgfSk7CiAgcmV0dXJuIGN1cnJlbnRNZW51ID8gY3VycmVudE1lbnUub3Blbk5hbWVzIDogW107Cn0KCmZ1bmN0aW9uIHRyYW5zTWVudShtZW51LCBvcGVuTmFtZXMpIHsKICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCkgewogICAgdmFyIGl0ZW1PcGVuTmFtZXMgPSBvcGVuTmFtZXMuY29uY2F0KFttZW51LnBhdGhdKTsKICAgIHJldHVybiBtZW51LmNoaWxkcmVuLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBpdGVtKSB7CiAgICAgIGFsbC5wdXNoKHsKICAgICAgICBwYXRoOiBpdGVtLnBhdGgsCiAgICAgICAgb3Blbk5hbWVzOiBpdGVtT3Blbk5hbWVzCiAgICAgIH0pOwogICAgICB2YXIgZm91bmRDaGlsZHJlbiA9IHRyYW5zTWVudShpdGVtLCBpdGVtT3Blbk5hbWVzKTsKICAgICAgcmV0dXJuIGFsbC5jb25jYXQoZm91bmRDaGlsZHJlbik7CiAgICB9LCBbXSk7CiAgfSBlbHNlIHsKICAgIHJldHVybiBbbWVudV0ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgcGF0aDogaXRlbS5wYXRoLAogICAgICAgIG9wZW5OYW1lczogb3Blbk5hbWVzCiAgICAgIH07CiAgICB9KTsKICB9Cn0KCmV4cG9ydCBmdW5jdGlvbiB3c3Mod3NTb2NrZXRVcmwpIHsKICB2YXIgaXNodHRwcyA9IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonOwoKICBpZiAoaXNodHRwcykgewogICAgcmV0dXJuIHdzU29ja2V0VXJsLnJlcGxhY2UoJ3dzOicsICd3c3M6Jyk7CiAgfSBlbHNlIHsKICAgIHJldHVybiB3c1NvY2tldFVybC5yZXBsYWNlKCd3c3M6JywgJ3dzOicpOwogIH0KfQ=="},{"version":3,"names":["Cookies","config","forEach","hasOneOf","objEqual","cloneDeep","title","useI18n","setCookies","key","val","cookieExpires","set","expires","getCookies","get","removeCookies","remove","hasChild","item","children","length","showThisMenuEle","access","meta","getMenuByRouter","list","res","hideInMenu","obj","icon","name","showAlways","href","push","getBreadCrumbList","route","homeRoute","homeItem","routeMetched","matched","some","filter","undefined","hideInBread","map","__titleIsFunction__","to","path","getRouteTitleHandled","router","showTitle","vm","includes","replace","m","str","_","$t","trim","setTagNavListInLocalstorage","localStorage","tagNaveList","JSON","stringify","getTagNavListFromLocalstorage","parse","getHomeRoute","routers","homeName","i","len","getNewTagList","newRoute","newList","findIndex","hasAccess","canTurnTo","routes","routePermissionJudge","getParams","url","keyValueArr","split","paramObj","keyValue","getNextRoute","index","routeEqual","doCustomTimes","times","callback","getArrayFromFile","file","nameSplit","format","Promise","resolve","reject","reader","FileReader","readAsText","arr","onload","evt","data","target","result","pasteData","row","Error","getTableDataFromArray","array","columns","tableData","titles","shift","col","findNodeUpper","ele","tag","parentNode","tagName","toUpperCase","findNodeUpperByClasses","classes","classList","every","className","contains","findNodeDownward","childNodes","child","showByAccess","canViewAccess","route1","route2","params1","params","params2","query1","query","query2","routeHasExist","tagNavList","routeItem","localSave","value","setItem","localRead","getItem","scrollTop","el","from","duration","endCallback","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","setTimeout","difference","Math","abs","step","ceil","scroll","start","end","d","scrollTo","setTitle","handledRoute","pageTitle","resTitle","document","R","menuList","newOpenMenus","newMenu","getMenuopen","allMenus","menu","menus","transMenu","openNames","currentMenu","find","itemOpenNames","concat","reduce","all","foundChildren","wss","wsSocketUrl","ishttps","location","protocol"],"sources":["E:/item/newItem/admin/src/libs/util.js"],"sourcesContent":["// +---------------------------------------------------------------------\r\n// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]\r\n// +---------------------------------------------------------------------\r\n// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.\r\n// +---------------------------------------------------------------------\r\n// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权\r\n// +---------------------------------------------------------------------\r\n// | Author: CRMEB Team <admin@crmeb.com>\r\n// +---------------------------------------------------------------------\r\n\r\nimport Cookies from 'js-cookie';\r\n// cookie保存的天数\r\nimport config from '@/config';\r\nimport { forEach, hasOneOf, objEqual } from '@/libs/tools';\r\nimport { cloneDeep } from 'lodash';\r\nconst { title, useI18n } = config;\r\n\r\n// 设置setCookies;\r\n// setToken\r\nexport const setCookies = (key, val, cookieExpires) => {\r\n Cookies.set(key, val, { expires: cookieExpires || 1 });\r\n};\r\n// 获取getCookies;\r\n// getToken\r\nexport const getCookies = (key) => {\r\n return Cookies.get(key);\r\n};\r\n\r\nexport const removeCookies = (key) => {\r\n return Cookies.remove(key);\r\n};\r\n\r\nexport const hasChild = (item) => {\r\n return item.children && item.children.length !== 0;\r\n};\r\n\r\nconst showThisMenuEle = (item, access) => {\r\n if (item.meta && item.meta.access && item.meta.access.length) {\r\n if (hasOneOf(item.meta.access, access)) return true;\r\n else return false;\r\n } else return true;\r\n};\r\n/**\r\n * @param {Array} list 通过路由列表得到菜单列表\r\n * @returns {Array}\r\n */\r\nexport const getMenuByRouter = (list, access) => {\r\n let res = [];\r\n forEach(list, (item) => {\r\n if (!item.meta || (item.meta && !item.meta.hideInMenu)) {\r\n let obj = {\r\n icon: (item.meta && item.meta.icon) || '',\r\n name: item.name,\r\n meta: item.meta,\r\n };\r\n if ((hasChild(item) || (item.meta && item.meta.showAlways)) && showThisMenuEle(item, access)) {\r\n obj.children = getMenuByRouter(item.children, access);\r\n }\r\n if (item.meta && item.meta.href) obj.href = item.meta.href;\r\n if (showThisMenuEle(item, access)) res.push(obj);\r\n }\r\n });\r\n return res;\r\n};\r\n\r\n/**\r\n * @param {Array} routeMetched 当前路由metched\r\n * @returns {Array}\r\n */\r\nexport const getBreadCrumbList = (route, homeRoute) => {\r\n let homeItem = { ...homeRoute, icon: homeRoute.meta.icon };\r\n let routeMetched = route.matched;\r\n if (routeMetched.some((item) => item.name === homeRoute.name)) return [homeItem];\r\n let res = routeMetched\r\n .filter((item) => {\r\n return item.meta === undefined || !item.meta.hideInBread;\r\n })\r\n .map((item) => {\r\n let meta = { ...item.meta };\r\n if (meta.title && typeof meta.title === 'function') {\r\n meta.__titleIsFunction__ = true;\r\n meta.title = meta.title(route);\r\n }\r\n let obj = {\r\n icon: (item.meta && item.meta.icon) || '',\r\n name: item.name,\r\n meta: meta,\r\n };\r\n return obj;\r\n });\r\n res = res.filter((item) => {\r\n return !item.meta.hideInMenu;\r\n });\r\n return [{ ...homeItem, to: homeRoute.path }, ...res];\r\n};\r\n\r\nexport const getRouteTitleHandled = (route) => {\r\n let router = { ...route };\r\n let meta = { ...route.meta };\r\n let title = '';\r\n if (meta.title) {\r\n if (typeof meta.title === 'function') {\r\n meta.__titleIsFunction__ = true;\r\n title = meta.title(router);\r\n } else title = meta.title;\r\n }\r\n meta.title = title;\r\n router.meta = meta;\r\n return router;\r\n};\r\n\r\nexport const showTitle = (item, vm) => {\r\n let { title, __titleIsFunction__ } = item.meta;\r\n if (!title) return;\r\n if (useI18n) {\r\n if (title.includes('{{') && title.includes('}}') && useI18n)\r\n title = title.replace(/({{[\\s\\S]+?}})/, (m, str) => str.replace(/{{([\\s\\S]*)}}/, (m, _) => vm.$t(_.trim())));\r\n else if (__titleIsFunction__) title = item.meta.title;\r\n else title = vm.$t(item.name);\r\n } else title = (item.meta && item.meta.title) || item.name;\r\n return title;\r\n};\r\n\r\n/**\r\n * @description 本地存储和获取标签导航列表\r\n */\r\nexport const setTagNavListInLocalstorage = (list) => {\r\n localStorage.tagNaveList = JSON.stringify(list);\r\n};\r\n/**\r\n * @returns {Array} 其中的每个元素只包含路由原信息中的name, path, meta三项\r\n */\r\nexport const getTagNavListFromLocalstorage = () => {\r\n const list = localStorage.tagNaveList;\r\n return list ? JSON.parse(list) : [];\r\n};\r\n\r\n/**\r\n * @param {Array} routers 路由列表数组\r\n * @description 用于找到路由列表中name为home的对象\r\n */\r\nexport const getHomeRoute = (routers, homeName = 'home') => {\r\n let i = -1;\r\n let len = routers.length;\r\n let homeRoute = {};\r\n while (++i < len) {\r\n let item = routers[i];\r\n if (item.children && item.children.length) {\r\n let res = getHomeRoute(item.children, homeName);\r\n if (res.name) return res;\r\n } else {\r\n if (item.name === homeName) homeRoute = item;\r\n }\r\n }\r\n return homeRoute;\r\n};\r\n\r\n/**\r\n * @param {*} list 现有标签导航列表\r\n * @param {*} newRoute 新添加的路由原信息对象\r\n * @description 如果该newRoute已经存在则不再添加\r\n */\r\nexport const getNewTagList = (list, newRoute) => {\r\n const { name, path, meta } = newRoute;\r\n let newList = [...list];\r\n if (newList.findIndex((item) => item.name === name) >= 0) return newList;\r\n else newList.push({ name, path, meta });\r\n return newList;\r\n};\r\n\r\n/**\r\n * @param {*} access 用户权限数组,如 ['super_admin', 'admin']\r\n * @param {*} route 路由列表\r\n */\r\nconst hasAccess = (access, route) => {\r\n if (route.meta && route.meta.access) return hasOneOf(access, route.meta.access);\r\n else return true;\r\n};\r\n\r\n/**\r\n * 权鉴\r\n * @param {*} name 即将跳转的路由name\r\n * @param {*} access 用户权限数组\r\n * @param {*} routes 路由列表\r\n * @description 用户是否可跳转到该页\r\n */\r\nexport const canTurnTo = (name, access, routes) => {\r\n const routePermissionJudge = (list) => {\r\n return list.some((item) => {\r\n if (item.children && item.children.length) {\r\n return routePermissionJudge(item.children);\r\n } else if (item.name === name) {\r\n return hasAccess(access, item);\r\n }\r\n });\r\n };\r\n\r\n return routePermissionJudge(routes);\r\n};\r\n\r\n/**\r\n * @param {String} url\r\n * @description 从URL中解析参数\r\n */\r\nexport const getParams = (url) => {\r\n const keyValueArr = url.split('?')[1].split('&');\r\n let paramObj = {};\r\n keyValueArr.forEach((item) => {\r\n const keyValue = item.split('=');\r\n paramObj[keyValue[0]] = keyValue[1];\r\n });\r\n return paramObj;\r\n};\r\n\r\n/**\r\n * @param {Array} list 标签列表\r\n * @param {String} name 当前关闭的标签的name\r\n */\r\nexport const getNextRoute = (list, route) => {\r\n let res = {};\r\n if (list.length === 2) {\r\n res = getHomeRoute(list);\r\n } else {\r\n const index = list.findIndex((item) => routeEqual(item, route));\r\n if (index === list.length - 1) res = list[list.length - 2];\r\n else res = list[index + 1];\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * @param {Number} times 回调函数需要执行的次数\r\n * @param {Function} callback 回调函数\r\n */\r\nexport const doCustomTimes = (times, callback) => {\r\n let i = -1;\r\n while (++i < times) {\r\n callback(i);\r\n }\r\n};\r\n\r\n/**\r\n * @param {Object} file 从上传组件得到的文件对象\r\n * @returns {Promise} resolve参数是解析后的二维数组\r\n * @description 从Csv文件中解析出表格,解析成二维数组\r\n */\r\nexport const getArrayFromFile = (file) => {\r\n let nameSplit = file.name.split('.');\r\n let format = nameSplit[nameSplit.length - 1];\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n reader.readAsText(file); // 以文本格式读取\r\n let arr = [];\r\n reader.onload = function (evt) {\r\n let data = evt.target.result; // 读到的数据\r\n let pasteData = data.trim();\r\n arr = pasteData\r\n .split(/[\\n\\u0085\\u2028\\u2029]|\\r\\n?/g)\r\n .map((row) => {\r\n return row.split('\\t');\r\n })\r\n .map((item) => {\r\n return item[0].split(',');\r\n });\r\n if (format === 'csv') resolve(arr);\r\n else reject(new Error('[Format Error]:你上传的不是Csv文件'));\r\n };\r\n });\r\n};\r\n\r\n/**\r\n * @param {Array} array 表格数据二维数组\r\n * @returns {Object} { columns, tableData }\r\n * @description 从二维数组中获取表头和表格数据,将第一行作为表头,用于在iView的表格中展示数据\r\n */\r\nexport const getTableDataFromArray = (array) => {\r\n let columns = [];\r\n let tableData = [];\r\n if (array.length > 1) {\r\n let titles = array.shift();\r\n columns = titles.map((item) => {\r\n return {\r\n title: item,\r\n key: item,\r\n };\r\n });\r\n tableData = array.map((item) => {\r\n let res = {};\r\n item.forEach((col, i) => {\r\n res[titles[i]] = col;\r\n });\r\n return res;\r\n });\r\n }\r\n return {\r\n columns,\r\n tableData,\r\n };\r\n};\r\n\r\nexport const findNodeUpper = (ele, tag) => {\r\n if (ele.parentNode) {\r\n if (ele.parentNode.tagName === tag.toUpperCase()) {\r\n return ele.parentNode;\r\n } else {\r\n return findNodeUpper(ele.parentNode, tag);\r\n }\r\n }\r\n};\r\n\r\nexport const findNodeUpperByClasses = (ele, classes) => {\r\n let parentNode = ele.parentNode;\r\n if (parentNode) {\r\n let classList = parentNode.classList;\r\n if (classList && classes.every((className) => classList.contains(className))) {\r\n return parentNode;\r\n } else {\r\n return findNodeUpperByClasses(parentNode, classes);\r\n }\r\n }\r\n};\r\n\r\nexport const findNodeDownward = (ele, tag) => {\r\n const tagName = tag.toUpperCase();\r\n if (ele.childNodes.length) {\r\n let i = -1;\r\n let len = ele.childNodes.length;\r\n while (++i < len) {\r\n let child = ele.childNodes[i];\r\n if (child.tagName === tagName) return child;\r\n else return findNodeDownward(child, tag);\r\n }\r\n }\r\n};\r\n\r\nexport const showByAccess = (access, canViewAccess) => {\r\n return hasOneOf(canViewAccess, access);\r\n};\r\n\r\n/**\r\n * @description 根据name/params/query判断两个路由对象是否相等\r\n * @param {*} route1 路由对象\r\n * @param {*} route2 路由对象\r\n */\r\nexport const routeEqual = (route1, route2) => {\r\n const params1 = route1.params || {};\r\n const params2 = route2.params || {};\r\n const query1 = route1.query || {};\r\n const query2 = route2.query || {};\r\n return route1.name === route2.name && objEqual(params1, params2) && objEqual(query1, query2);\r\n};\r\n\r\n/**\r\n * 判断打开的标签列表里是否已存在这个新添加的路由对象\r\n */\r\nexport const routeHasExist = (tagNavList, routeItem) => {\r\n let len = tagNavList.length;\r\n let res = false;\r\n doCustomTimes(len, (index) => {\r\n if (routeEqual(tagNavList[index], routeItem)) res = true;\r\n });\r\n return res;\r\n};\r\n\r\nexport const localSave = (key, value) => {\r\n localStorage.setItem(key, value);\r\n};\r\n\r\nexport const localRead = (key) => {\r\n return localStorage.getItem(key) || '';\r\n};\r\n\r\n// scrollTop animation\r\nexport const scrollTop = (el, from = 0, to, duration = 500, endCallback) => {\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame =\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n };\r\n }\r\n const difference = Math.abs(from - to);\r\n const step = Math.ceil((difference / duration) * 50);\r\n\r\n const scroll = (start, end, step) => {\r\n if (start === end) {\r\n endCallback && endCallback();\r\n return;\r\n }\r\n\r\n let d = start + step > end ? end : start + step;\r\n if (start > end) {\r\n d = start - step < end ? end : start - step;\r\n }\r\n\r\n if (el === window) {\r\n window.scrollTo(d, d);\r\n } else {\r\n el.scrollTop = d;\r\n }\r\n window.requestAnimationFrame(() => scroll(d, end, step));\r\n };\r\n scroll(from, to, step);\r\n};\r\n\r\n/**\r\n * @description 根据当前跳转的路由设置显示在浏览器标签的title\r\n * @param {Object} routeItem 路由对象\r\n * @param {Object} vm Vue实例\r\n */\r\nexport const setTitle = (routeItem, vm) => {\r\n const handledRoute = getRouteTitleHandled(routeItem);\r\n const pageTitle = showTitle(handledRoute, vm);\r\n const resTitle = pageTitle ? `${title} - ${pageTitle}` : title;\r\n window.document.title = resTitle;\r\n};\r\n\r\nexport const R = (menuList, newOpenMenus) => {\r\n menuList.forEach((item) => {\r\n let newMenu = {};\r\n for (let i in item) {\r\n if (i !== 'children') newMenu[i] = cloneDeep(item[i]);\r\n }\r\n newOpenMenus.push(newMenu);\r\n item.children && R(item.children, newOpenMenus);\r\n });\r\n return newOpenMenus;\r\n};\r\n\r\nexport function getMenuopen(to, menuList) {\r\n const allMenus = [];\r\n menuList.forEach((menu) => {\r\n const menus = transMenu(menu, []);\r\n allMenus.push({\r\n path: menu.path,\r\n openNames: [],\r\n });\r\n menus.forEach((item) => allMenus.push(item));\r\n });\r\n const currentMenu = allMenus.find((item) => item.path === to.path);\r\n return currentMenu ? currentMenu.openNames : [];\r\n}\r\n\r\nfunction transMenu(menu, openNames) {\r\n if (menu.children && menu.children.length) {\r\n const itemOpenNames = openNames.concat([menu.path]);\r\n return menu.children.reduce((all, item) => {\r\n all.push({\r\n path: item.path,\r\n openNames: itemOpenNames,\r\n });\r\n const foundChildren = transMenu(item, itemOpenNames);\r\n return all.concat(foundChildren);\r\n }, []);\r\n } else {\r\n return [menu].map((item) => {\r\n return {\r\n path: item.path,\r\n openNames: openNames,\r\n };\r\n });\r\n }\r\n}\r\n\r\nexport function wss(wsSocketUrl) {\r\n let ishttps = document.location.protocol == 'https:';\r\n if (ishttps) {\r\n return wsSocketUrl.replace('ws:', 'wss:');\r\n } else {\r\n return wsSocketUrl.replace('wss:', 'ws:');\r\n }\r\n}\r\n"],"mappings":"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"}]}
|