{"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\front\\item\\zyAdmin\\src\\libs\\tools.js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\libs\\tools.js","mtime":1761614939003},{"path":"D:\\front\\item\\zyAdmin\\babel.config.js","mtime":1761614925168},{"path":"D:\\front\\item\\zyAdmin\\.babelrc","mtime":1761614925165},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICJEOi9mcm9udC9pdGVtL3p5QWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnNvbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuZGlmZmVyZW5jZS52Mi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pbnRlcnNlY3Rpb24udjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52Mi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdWJzZXQtb2YudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtc3VwZXJzZXQtb2YudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zZXQudW5pb24udjIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIHwgQ1JNRUIgWyBDUk1FQui1i+iDveW8gOWPkeiAhe+8jOWKqeWKm+S8geS4muWPkeWxlSBdCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gfCBDb3B5cmlnaHQgKGMpIDIwMTZ+MjAyMyBodHRwczovL3d3dy5jcm1lYi5jb20gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyB8IExpY2Vuc2VkIENSTUVC5bm25LiN5piv6Ieq55Sx6L2v5Lu277yM5pyq57uP6K645Y+v5LiN6IO95Y675o6JQ1JNRULnm7jlhbPniYjmnYMKLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyB8IEF1dGhvcjogQ1JNRUIgVGVhbSA8YWRtaW5AY3JtZWIuY29tPgovLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHBvcnQgdmFyIGZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGFyciwgZm4pIHsKICBpZiAoIWFyci5sZW5ndGggfHwgIWZuKSByZXR1cm47CiAgdmFyIGkgPSAtMTsKICB2YXIgbGVuID0gYXJyLmxlbmd0aDsKICB3aGlsZSAoKytpIDwgbGVuKSB7CiAgICB2YXIgaXRlbSA9IGFycltpXTsKICAgIGZuKGl0ZW0sIGksIGFycik7CiAgfQp9OwoKLyoqDQogKiBAcGFyYW0ge0FycmF5fSBhcnIxDQogKiBAcGFyYW0ge0FycmF5fSBhcnIyDQogKiBAZGVzY3JpcHRpb24g5b6X5Yiw5Lik5Liq5pWw57uE55qE5Lqk6ZuGLCDkuKTkuKrmlbDnu4TnmoTlhYPntKDkuLrmlbDlgLzmiJblrZfnrKbkuLINCiAqLwpleHBvcnQgdmFyIGdldEludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIGdldEludGVyc2VjdGlvbihhcnIxLCBhcnIyKSB7CiAgdmFyIGxlbiA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7CiAgdmFyIGkgPSAtMTsKICB2YXIgcmVzID0gW107CiAgd2hpbGUgKCsraSA8IGxlbikgewogICAgdmFyIGl0ZW0gPSBhcnIyW2ldOwogICAgaWYgKGFycjEuaW5kZXhPZihpdGVtKSA+IC0xKSByZXMucHVzaChpdGVtKTsKICB9CiAgcmV0dXJuIHJlczsKfTsKCi8qKg0KICogQHBhcmFtIHtBcnJheX0gYXJyMQ0KICogQHBhcmFtIHtBcnJheX0gYXJyMg0KICogQGRlc2NyaXB0aW9uIOW+l+WIsOS4pOS4quaVsOe7hOeahOW5tumbhiwg5Lik5Liq5pWw57uE55qE5YWD57Sg5Li65pWw5YC85oiW5a2X56ym5LiyDQogKi8KZXhwb3J0IHZhciBnZXRVbmlvbiA9IGZ1bmN0aW9uIGdldFVuaW9uKGFycjEsIGFycjIpIHsKICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYXJyMSksIF90b0NvbnN1bWFibGVBcnJheShhcnIyKSkpKTsKfTsKCi8qKg0KICogQHBhcmFtIHtBcnJheX0gdGFyZ2V0IOebruagh+aVsOe7hA0KICogQHBhcmFtIHtBcnJheX0gYXJyIOmcgOimgeafpeivoueahOaVsOe7hA0KICogQGRlc2NyaXB0aW9uIOWIpOaWreimgeafpeivoueahOaVsOe7hOaYr+WQpuiHs+WwkeacieS4gOS4quWFg+e0oOWMheWQq+WcqOebruagh+aVsOe7hOS4rQ0KICovCmV4cG9ydCB2YXIgaGFzT25lT2YgPSBmdW5jdGlvbiBoYXNPbmVPZih0YXJnZXRhcnIsIGFycikgewogIHJldHVybiB0YXJnZXRhcnIuc29tZShmdW5jdGlvbiAoXykgewogICAgcmV0dXJuIGFyci5pbmRleE9mKF8pID4gLTE7CiAgfSk7Cn07CgovKioNCiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsdWUg6KaB6aqM6K+B55qE5a2X56ym5Liy5oiW5pWw5YC8DQogKiBAcGFyYW0geyp9IHZhbGlkTGlzdCDnlKjmnaXpqozor4HnmoTliJfooagNCiAqLwpleHBvcnQgZnVuY3Rpb24gb25lT2YodmFsdWUsIHZhbGlkTGlzdCkgewogIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsaWRMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICBpZiAodmFsdWUgPT09IHZhbGlkTGlzdFtpXSkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CiAgcmV0dXJuIGZhbHNlOwp9CgovKioNCiAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lU3RhbXAg5Yik5pat5pe26Ze05oiz5qC85byP5piv5ZCm5piv5q+r56eSDQogKiBAcmV0dXJucyB7Qm9vbGVhbn0NCiAqLwp2YXIgaXNNaWxsaXNlY29uZCA9IGZ1bmN0aW9uIGlzTWlsbGlzZWNvbmQodGltZVN0YW1wKSB7CiAgdmFyIHRpbWVTdHIgPSBTdHJpbmcodGltZVN0YW1wKTsKICByZXR1cm4gdGltZVN0ci5sZW5ndGggPiAxMDsKfTsKCi8qKg0KICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVTdGFtcCDkvKDlhaXnmoTml7bpl7TmiLMNCiAqIEBwYXJhbSB7TnVtYmVyfSBjdXJyZW50VGltZSDlvZPliY3ml7bpl7Tml7bpl7TmiLMNCiAqIEByZXR1cm5zIHtCb29sZWFufSDkvKDlhaXnmoTml7bpl7TmiLPmmK/lkKbml6nkuo7lvZPliY3ml7bpl7TmiLMNCiAqLwp2YXIgaXNFYXJseSA9IGZ1bmN0aW9uIGlzRWFybHkodGltZVN0YW1wLCBjdXJyZW50VGltZSkgewogIHJldHVybiB0aW1lU3RhbXAgPCBjdXJyZW50VGltZTsKfTsKCi8qKg0KICogQHBhcmFtIHtOdW1iZXJ9IG51bSDmlbDlgLwNCiAqIEByZXR1cm5zIHtTdHJpbmd9IOWkhOeQhuWQjueahOWtl+espuS4sg0KICogQGRlc2NyaXB0aW9uIOWmguaenOS8oOWFpeeahOaVsOWAvOWwj+S6jjEw77yM5Y2z5L2N5pWw5Y+q5pyJMeS9je+8jOWImeWcqOWJjemdouihpeWFhTANCiAqLwp2YXIgZ2V0SGFuZGxlZFZhbHVlID0gZnVuY3Rpb24gZ2V0SGFuZGxlZFZhbHVlKG51bSkgewogIHJldHVybiBudW0gPCAxMCA/ICcwJyArIG51bSA6IG51bTsKfTsKCi8qKg0KICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVTdGFtcCDkvKDlhaXnmoTml7bpl7TmiLMNCiAqIEBwYXJhbSB7TnVtYmVyfSBzdGFydFR5cGUg6KaB6L+U5Zue55qE5pe26Ze05a2X56ym5Liy55qE5qC85byP57G75Z6L77yM5Lyg5YWlJ3llYXIn5YiZ6L+U5Zue5bm05byA5aS055qE5a6M5pW05pe26Ze0DQogKi8KdmFyIGdldERhdGUgPSBmdW5jdGlvbiBnZXREYXRlKHRpbWVTdGFtcCwgc3RhcnRUeXBlKSB7CiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lU3RhbXAgKiAxMDAwKTsKICB2YXIgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTsKICB2YXIgbW9udGggPSBnZXRIYW5kbGVkVmFsdWUoZC5nZXRNb250aCgpICsgMSk7CiAgdmFyIGRhdGUgPSBnZXRIYW5kbGVkVmFsdWUoZC5nZXREYXRlKCkpOwogIHZhciBob3VycyA9IGdldEhhbmRsZWRWYWx1ZShkLmdldEhvdXJzKCkpOwogIHZhciBtaW51dGVzID0gZ2V0SGFuZGxlZFZhbHVlKGQuZ2V0TWludXRlcygpKTsKICB2YXIgc2Vjb25kID0gZ2V0SGFuZGxlZFZhbHVlKGQuZ2V0U2Vjb25kcygpKTsKICB2YXIgcmVzU3RyID0gJyc7CiAgaWYgKHN0YXJ0VHlwZSA9PT0gJ3llYXInKSByZXNTdHIgPSB5ZWFyICsgJy0nICsgbW9udGggKyAnLScgKyBkYXRlICsgJyAnICsgaG91cnMgKyAnOicgKyBtaW51dGVzICsgJzonICsgc2Vjb25kO2Vsc2UgcmVzU3RyID0gbW9udGggKyAnLScgKyBkYXRlICsgJyAnICsgaG91cnMgKyAnOicgKyBtaW51dGVzOwogIHJldHVybiByZXNTdHI7Cn07CgovKioNCiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdGltZVN0YW1wIOaXtumXtOaIsw0KICogQHJldHVybnMge1N0cmluZ30g55u45a+55pe26Ze05a2X56ym5LiyDQogKi8KZXhwb3J0IHZhciBnZXRSZWxhdGl2ZVRpbWUgPSBmdW5jdGlvbiBnZXRSZWxhdGl2ZVRpbWUodGltZVN0YW1wKSB7CiAgLy8g5Yik5pat5b2T5YmN5Lyg5YWl55qE5pe26Ze05oiz5piv56eS5qC85byP6L+Y5piv5q+r56eSCiAgdmFyIElTX01JTExJU0VDT05EID0gaXNNaWxsaXNlY29uZCh0aW1lU3RhbXApOwogIC8vIOWmguaenOaYr+avq+enkuagvOW8j+WImei9rOS4uuenkuagvOW8jwogIGlmIChJU19NSUxMSVNFQ09ORCkgTWF0aC5mbG9vcih0aW1lU3RhbXAgLz0gMTAwMCk7CiAgLy8g5Lyg5YWl55qE5pe26Ze05oiz5Y+v5Lul5piv5pWw5YC85oiW5a2X56ym5Liy57G75Z6L77yM6L+Z6YeM57uf5LiA6L2s5Li65pWw5YC857G75Z6LCiAgdGltZVN0YW1wID0gTnVtYmVyKHRpbWVTdGFtcCk7CiAgLy8g6I635Y+W5b2T5YmN5pe26Ze05pe26Ze05oizCiAgdmFyIGN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcihEYXRlLnBhcnNlKG5ldyBEYXRlKCkpIC8gMTAwMCk7CiAgLy8g5Yik5pat5Lyg5YWl5pe26Ze05oiz5piv5ZCm5pep5LqO5b2T5YmN5pe26Ze05oizCiAgdmFyIElTX0VBUkxZID0gaXNFYXJseSh0aW1lU3RhbXAsIGN1cnJlbnRUaW1lKTsKICAvLyDojrflj5bkuKTkuKrml7bpl7TmiLPlt67lgLwKICB2YXIgZGlmZiA9IGN1cnJlbnRUaW1lIC0gdGltZVN0YW1wOwogIC8vIOWmguaenElTX0VBUkxZ5Li6ZmFsc2XliJnlt67lgLzlj5blj40KICBpZiAoIUlTX0VBUkxZKSBkaWZmID0gLWRpZmY7CiAgdmFyIHJlc1N0ciA9ICcnOwogIHZhciBkaXJTdHIgPSBJU19FQVJMWSA/ICfliY0nIDogJ+WQjic7CiAgLy8g5bCR5LqO562J5LqONTnnp5IKICBpZiAoZGlmZiA8PSA1OSkgcmVzU3RyID0gZGlmZiArICfnp5InICsgZGlyU3RyOwogIC8vIOWkmuS6jjU556eS77yM5bCR5LqO562J5LqONTnliIbpkp81OeenkgogIGVsc2UgaWYgKGRpZmYgPiA1OSAmJiBkaWZmIDw9IDM1OTkpIHJlc1N0ciA9IE1hdGguZmxvb3IoZGlmZiAvIDYwKSArICfliIbpkp8nICsgZGlyU3RyOwogIC8vIOWkmuS6jjU55YiG6ZKfNTnnp5LvvIzlsJHkuo7nrYnkuo4yM+Wwj+aXtjU55YiG6ZKfNTnnp5IKICBlbHNlIGlmIChkaWZmID4gMzU5OSAmJiBkaWZmIDw9IDg2Mzk5KSByZXNTdHIgPSBNYXRoLmZsb29yKGRpZmYgLyAzNjAwKSArICflsI/ml7YnICsgZGlyU3RyOwogIC8vIOWkmuS6jjIz5bCP5pe2NTnliIbpkp81Oeenku+8jOWwkeS6juetieS6jjI55aSpNTnliIbpkp81OeenkgogIGVsc2UgaWYgKGRpZmYgPiA4NjM5OSAmJiBkaWZmIDw9IDI2MjM4NTkpIHJlc1N0ciA9IE1hdGguZmxvb3IoZGlmZiAvIDg2NDAwKSArICflpKknICsgZGlyU3RyOwogIC8vIOWkmuS6jjI55aSpNTnliIbpkp81Oeenku+8jOWwkeS6jjM2NOWkqTIz5bCP5pe2NTnliIbpkp81Oeenku+8jOS4lOS8oOWFpeeahOaXtumXtOaIs+aXqeS6juW9k+WJjQogIGVsc2UgaWYgKGRpZmYgPiAyNjIzODU5ICYmIGRpZmYgPD0gMzE1Njc4NTkgJiYgSVNfRUFSTFkpIHJlc1N0ciA9IGdldERhdGUodGltZVN0YW1wKTtlbHNlIHJlc1N0ciA9IGdldERhdGUodGltZVN0YW1wLCAneWVhcicpOwogIHJldHVybiByZXNTdHI7Cn07CgovKioNCiAqIEByZXR1cm5zIHtTdHJpbmd9IOW9k+WJjea1j+iniOWZqOWQjeensA0KICovCmV4cG9ydCB2YXIgZ2V0RXhwbG9yZXIgPSBmdW5jdGlvbiBnZXRFeHBsb3JlcigpIHsKICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDsKICB2YXIgaXNFeHBsb3JlciA9IGZ1bmN0aW9uIGlzRXhwbG9yZXIoZXhwKSB7CiAgICByZXR1cm4gdWEuaW5kZXhPZihleHApID4gLTE7CiAgfTsKICBpZiAoaXNFeHBsb3JlcignTVNJRScpKSByZXR1cm4gJ0lFJztlbHNlIGlmIChpc0V4cGxvcmVyKCdGaXJlZm94JykpIHJldHVybiAnRmlyZWZveCc7ZWxzZSBpZiAoaXNFeHBsb3JlcignQ2hyb21lJykpIHJldHVybiAnQ2hyb21lJztlbHNlIGlmIChpc0V4cGxvcmVyKCdPcGVyYScpKSByZXR1cm4gJ09wZXJhJztlbHNlIGlmIChpc0V4cGxvcmVyKCdTYWZhcmknKSkgcmV0dXJuICdTYWZhcmknOwp9OwoKLyoqDQogKiBAZGVzY3JpcHRpb24g57uR5a6a5LqL5Lu2IG9uKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKQ0KICovCmV4cG9ydCB2YXIgb24gPSBmdW5jdGlvbiAoKSB7CiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpIHsKICAgICAgaWYgKGVsZW1lbnQgJiYgZXZlbnQgJiYgaGFuZGxlcikgewogICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgZmFsc2UpOwogICAgICB9CiAgICB9OwogIH0gZWxzZSB7CiAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKSB7CiAgICAgIGlmIChlbGVtZW50ICYmIGV2ZW50ICYmIGhhbmRsZXIpIHsKICAgICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudCwgaGFuZGxlcik7CiAgICAgIH0KICAgIH07CiAgfQp9KCk7CgovKioNCiAqIEBkZXNjcmlwdGlvbiDop6Pnu5Hkuovku7Ygb2ZmKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKQ0KICovCmV4cG9ydCB2YXIgb2ZmID0gZnVuY3Rpb24gKCkgewogIGlmIChkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7CiAgICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKSB7CiAgICAgIGlmIChlbGVtZW50ICYmIGV2ZW50KSB7CiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBmYWxzZSk7CiAgICAgIH0KICAgIH07CiAgfSBlbHNlIHsKICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpIHsKICAgICAgaWYgKGVsZW1lbnQgJiYgZXZlbnQpIHsKICAgICAgICBlbGVtZW50LmRldGFjaEV2ZW50KCdvbicgKyBldmVudCwgaGFuZGxlcik7CiAgICAgIH0KICAgIH07CiAgfQp9KCk7CgovKioNCiAqIOWIpOaWreS4gOS4quWvueixoeaYr+WQpuWtmOWcqGtlee+8jOWmguaenOS8oOWFpeesrOS6jOS4quWPguaVsGtlee+8jOWImeaYr+WIpOaWrei/meS4qm9iauWvueixoeaYr+WQpuWtmOWcqGtleei/meS4quWxnuaApw0KICog5aaC5p6c5rKh5pyJ5Lyg5YWla2V56L+Z5Liq5Y+C5pWw77yM5YiZ5Yik5patb2Jq5a+56LGh5piv5ZCm5pyJ6ZSu5YC85a+5DQogKi8KZXhwb3J0IHZhciBoYXNLZXkgPSBmdW5jdGlvbiBoYXNLZXkob2JqLCBrZXkpIHsKICBpZiAoa2V5KSByZXR1cm4ga2V5IGluIG9iajtlbHNlIHsKICAgIHZhciBrZXlzQXJyID0gT2JqZWN0LmtleXMob2JqKTsKICAgIHJldHVybiBrZXlzQXJyLmxlbmd0aDsKICB9Cn07CgovKioNCiAqIEBwYXJhbSB7Kn0gb2JqMSDlr7nosaENCiAqIEBwYXJhbSB7Kn0gb2JqMiDlr7nosaENCiAqIEBkZXNjcmlwdGlvbiDliKTmlq3kuKTkuKrlr7nosaHmmK/lkKbnm7jnrYnvvIzov5nkuKTkuKrlr7nosaHnmoTlgLzlj6rog73mmK/mlbDlrZfmiJblrZfnrKbkuLINCiAqLwpleHBvcnQgdmFyIG9iakVxdWFsID0gZnVuY3Rpb24gb2JqRXF1YWwob2JqMSwgb2JqMikgewogIHZhciBrZXlzQXJyMSA9IE9iamVjdC5rZXlzKG9iajEpOwogIHZhciBrZXlzQXJyMiA9IE9iamVjdC5rZXlzKG9iajIpOwogIGlmIChrZXlzQXJyMS5sZW5ndGggIT09IGtleXNBcnIyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO2Vsc2UgaWYgKGtleXNBcnIxLmxlbmd0aCA9PT0gMCAmJiBrZXlzQXJyMi5sZW5ndGggPT09IDApIHJldHVybiB0cnVlOwogIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqL2Vsc2UgcmV0dXJuICFrZXlzQXJyMS5zb21lKGZ1bmN0aW9uIChrZXkpIHsKICAgIHJldHVybiBvYmoxW2tleV0gIT0gb2JqMltrZXldOwogIH0pOwp9OwoKLyoqDQogKiDljrvpmaTkuZjms5XorqHnrpflh7rnjrDlpJrkvY3lsI/mlbANCiAqIEBwYXJhbSBhcmcx6L+U5Zue5YC877yMYXJnMuS5mOS7peeahOWPguaVsA0KICovCmV4cG9ydCB2YXIgYWNjTXVsID0gZnVuY3Rpb24gYWNjTXVsKGFyZzEsIGFyZzIpIHsKICB2YXIgbSA9IDAsCiAgICBzMSA9IGFyZzEudG9TdHJpbmcoKSwKICAgIHMyID0gYXJnMi50b1N0cmluZygpOwogIHRyeSB7CiAgICBtICs9IHMxLnNwbGl0KCcuJylbMV0ubGVuZ3RoOwogIH0gY2F0Y2ggKGUpIHt9CiAgdHJ5IHsKICAgIG0gKz0gczIuc3BsaXQoJy4nKVsxXS5sZW5ndGg7CiAgfSBjYXRjaCAoZSkge30KICByZXR1cm4gTnVtYmVyKHMxLnJlcGxhY2UoJy4nLCAnJykpICogTnVtYmVyKHMyLnJlcGxhY2UoJy4nLCAnJykpIC8gTWF0aC5wb3coMTAsIG0pOwp9Ow=="},{"version":3,"names":["forEach","arr","fn","length","i","len","item","getIntersection","arr1","arr2","Math","min","res","indexOf","push","getUnion","Array","from","Set","concat","_toConsumableArray","hasOneOf","targetarr","some","_","oneOf","value","validList","isMillisecond","timeStamp","timeStr","String","isEarly","currentTime","getHandledValue","num","getDate","startType","d","Date","year","getFullYear","month","getMonth","date","hours","getHours","minutes","getMinutes","second","getSeconds","resStr","getRelativeTime","IS_MILLISECOND","floor","Number","parse","IS_EARLY","diff","dirStr","getExplorer","ua","window","navigator","userAgent","isExplorer","exp","on","document","addEventListener","element","event","handler","attachEvent","off","removeEventListener","detachEvent","hasKey","obj","key","keysArr","Object","keys","objEqual","obj1","obj2","keysArr1","keysArr2","accMul","arg1","arg2","m","s1","toString","s2","split","e","replace","pow"],"sources":["D:/front/item/zyAdmin/src/libs/tools.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 \r\n// +---------------------------------------------------------------------\r\n\r\nexport const forEach = (arr, fn) => {\r\n if (!arr.length || !fn) return;\r\n let i = -1;\r\n let len = arr.length;\r\n while (++i < len) {\r\n let item = arr[i];\r\n fn(item, i, arr);\r\n }\r\n};\r\n\r\n/**\r\n * @param {Array} arr1\r\n * @param {Array} arr2\r\n * @description 得到两个数组的交集, 两个数组的元素为数值或字符串\r\n */\r\nexport const getIntersection = (arr1, arr2) => {\r\n let len = Math.min(arr1.length, arr2.length);\r\n let i = -1;\r\n let res = [];\r\n while (++i < len) {\r\n const item = arr2[i];\r\n if (arr1.indexOf(item) > -1) res.push(item);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * @param {Array} arr1\r\n * @param {Array} arr2\r\n * @description 得到两个数组的并集, 两个数组的元素为数值或字符串\r\n */\r\nexport const getUnion = (arr1, arr2) => {\r\n return Array.from(new Set([...arr1, ...arr2]));\r\n};\r\n\r\n/**\r\n * @param {Array} target 目标数组\r\n * @param {Array} arr 需要查询的数组\r\n * @description 判断要查询的数组是否至少有一个元素包含在目标数组中\r\n */\r\nexport const hasOneOf = (targetarr, arr) => {\r\n return targetarr.some((_) => arr.indexOf(_) > -1);\r\n};\r\n\r\n/**\r\n * @param {String|Number} value 要验证的字符串或数值\r\n * @param {*} validList 用来验证的列表\r\n */\r\nexport function oneOf(value, validList) {\r\n for (let i = 0; i < validList.length; i++) {\r\n if (value === validList[i]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * @param {Number} timeStamp 判断时间戳格式是否是毫秒\r\n * @returns {Boolean}\r\n */\r\nconst isMillisecond = (timeStamp) => {\r\n const timeStr = String(timeStamp);\r\n return timeStr.length > 10;\r\n};\r\n\r\n/**\r\n * @param {Number} timeStamp 传入的时间戳\r\n * @param {Number} currentTime 当前时间时间戳\r\n * @returns {Boolean} 传入的时间戳是否早于当前时间戳\r\n */\r\nconst isEarly = (timeStamp, currentTime) => {\r\n return timeStamp < currentTime;\r\n};\r\n\r\n/**\r\n * @param {Number} num 数值\r\n * @returns {String} 处理后的字符串\r\n * @description 如果传入的数值小于10,即位数只有1位,则在前面补充0\r\n */\r\nconst getHandledValue = (num) => {\r\n return num < 10 ? '0' + num : num;\r\n};\r\n\r\n/**\r\n * @param {Number} timeStamp 传入的时间戳\r\n * @param {Number} startType 要返回的时间字符串的格式类型,传入'year'则返回年开头的完整时间\r\n */\r\nconst getDate = (timeStamp, startType) => {\r\n const d = new Date(timeStamp * 1000);\r\n const year = d.getFullYear();\r\n const month = getHandledValue(d.getMonth() + 1);\r\n const date = getHandledValue(d.getDate());\r\n const hours = getHandledValue(d.getHours());\r\n const minutes = getHandledValue(d.getMinutes());\r\n const second = getHandledValue(d.getSeconds());\r\n let resStr = '';\r\n if (startType === 'year') resStr = year + '-' + month + '-' + date + ' ' + hours + ':' + minutes + ':' + second;\r\n else resStr = month + '-' + date + ' ' + hours + ':' + minutes;\r\n return resStr;\r\n};\r\n\r\n/**\r\n * @param {String|Number} timeStamp 时间戳\r\n * @returns {String} 相对时间字符串\r\n */\r\nexport const getRelativeTime = (timeStamp) => {\r\n // 判断当前传入的时间戳是秒格式还是毫秒\r\n const IS_MILLISECOND = isMillisecond(timeStamp);\r\n // 如果是毫秒格式则转为秒格式\r\n if (IS_MILLISECOND) Math.floor((timeStamp /= 1000));\r\n // 传入的时间戳可以是数值或字符串类型,这里统一转为数值类型\r\n timeStamp = Number(timeStamp);\r\n // 获取当前时间时间戳\r\n const currentTime = Math.floor(Date.parse(new Date()) / 1000);\r\n // 判断传入时间戳是否早于当前时间戳\r\n const IS_EARLY = isEarly(timeStamp, currentTime);\r\n // 获取两个时间戳差值\r\n let diff = currentTime - timeStamp;\r\n // 如果IS_EARLY为false则差值取反\r\n if (!IS_EARLY) diff = -diff;\r\n let resStr = '';\r\n const dirStr = IS_EARLY ? '前' : '后';\r\n // 少于等于59秒\r\n if (diff <= 59) resStr = diff + '秒' + dirStr;\r\n // 多于59秒,少于等于59分钟59秒\r\n else if (diff > 59 && diff <= 3599) resStr = Math.floor(diff / 60) + '分钟' + dirStr;\r\n // 多于59分钟59秒,少于等于23小时59分钟59秒\r\n else if (diff > 3599 && diff <= 86399) resStr = Math.floor(diff / 3600) + '小时' + dirStr;\r\n // 多于23小时59分钟59秒,少于等于29天59分钟59秒\r\n else if (diff > 86399 && diff <= 2623859) resStr = Math.floor(diff / 86400) + '天' + dirStr;\r\n // 多于29天59分钟59秒,少于364天23小时59分钟59秒,且传入的时间戳早于当前\r\n else if (diff > 2623859 && diff <= 31567859 && IS_EARLY) resStr = getDate(timeStamp);\r\n else resStr = getDate(timeStamp, 'year');\r\n return resStr;\r\n};\r\n\r\n/**\r\n * @returns {String} 当前浏览器名称\r\n */\r\nexport const getExplorer = () => {\r\n const ua = window.navigator.userAgent;\r\n const isExplorer = (exp) => {\r\n return ua.indexOf(exp) > -1;\r\n };\r\n if (isExplorer('MSIE')) return 'IE';\r\n else if (isExplorer('Firefox')) return 'Firefox';\r\n else if (isExplorer('Chrome')) return 'Chrome';\r\n else if (isExplorer('Opera')) return 'Opera';\r\n else if (isExplorer('Safari')) return 'Safari';\r\n};\r\n\r\n/**\r\n * @description 绑定事件 on(element, event, handler)\r\n */\r\nexport const on = (function () {\r\n if (document.addEventListener) {\r\n return function (element, event, handler) {\r\n if (element && event && handler) {\r\n element.addEventListener(event, handler, false);\r\n }\r\n };\r\n } else {\r\n return function (element, event, handler) {\r\n if (element && event && handler) {\r\n element.attachEvent('on' + event, handler);\r\n }\r\n };\r\n }\r\n})();\r\n\r\n/**\r\n * @description 解绑事件 off(element, event, handler)\r\n */\r\nexport const off = (function () {\r\n if (document.removeEventListener) {\r\n return function (element, event, handler) {\r\n if (element && event) {\r\n element.removeEventListener(event, handler, false);\r\n }\r\n };\r\n } else {\r\n return function (element, event, handler) {\r\n if (element && event) {\r\n element.detachEvent('on' + event, handler);\r\n }\r\n };\r\n }\r\n})();\r\n\r\n/**\r\n * 判断一个对象是否存在key,如果传入第二个参数key,则是判断这个obj对象是否存在key这个属性\r\n * 如果没有传入key这个参数,则判断obj对象是否有键值对\r\n */\r\nexport const hasKey = (obj, key) => {\r\n if (key) return key in obj;\r\n else {\r\n let keysArr = Object.keys(obj);\r\n return keysArr.length;\r\n }\r\n};\r\n\r\n/**\r\n * @param {*} obj1 对象\r\n * @param {*} obj2 对象\r\n * @description 判断两个对象是否相等,这两个对象的值只能是数字或字符串\r\n */\r\nexport const objEqual = (obj1, obj2) => {\r\n const keysArr1 = Object.keys(obj1);\r\n const keysArr2 = Object.keys(obj2);\r\n if (keysArr1.length !== keysArr2.length) return false;\r\n else if (keysArr1.length === 0 && keysArr2.length === 0) return true;\r\n /* eslint-disable-next-line */ else return !keysArr1.some((key) => obj1[key] != obj2[key]);\r\n};\r\n\r\n/**\r\n * 去除乘法计算出现多位小数\r\n * @param arg1返回值,arg2乘以的参数\r\n */\r\nexport const accMul = (arg1, arg2) => {\r\n var m = 0,\r\n s1 = arg1.toString(),\r\n s2 = arg2.toString();\r\n try {\r\n m += s1.split('.')[1].length;\r\n } catch (e) {}\r\n try {\r\n m += s2.split('.')[1].length;\r\n } catch (e) {}\r\n return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m);\r\n};\r\n"],"mappings":"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","ignoreList":[]}]}