vue-element-admin/node_modules/.cache/babel-loader/740f8a1701b39e278ab74b081026e35b.json
2025-08-05 23:51:42 +08:00

1 line
89 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"remainingRequest":"/Users/kang/Gitea/vue-element-admin-i18n/node_modules/babel-loader/lib/index.js!/Users/kang/Gitea/vue-element-admin-i18n/node_modules/cache-loader/dist/cjs.js??ref--0-0!/Users/kang/Gitea/vue-element-admin-i18n/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/kang/Gitea/vue-element-admin-i18n/src/components/ImageCropper/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/kang/Gitea/vue-element-admin-i18n/src/components/ImageCropper/index.vue","mtime":1599486365000},{"path":"/Users/kang/Gitea/vue-element-admin-i18n/babel.config.js","mtime":1599486365000},{"path":"/Users/kang/Gitea/vue-element-admin-i18n/node_modules/cache-loader/dist/cjs.js","mtime":1754408227855},{"path":"/Users/kang/Gitea/vue-element-admin-i18n/node_modules/babel-loader/lib/index.js","mtime":1754408228132},{"path":"/Users/kang/Gitea/vue-element-admin-i18n/node_modules/cache-loader/dist/cjs.js","mtime":1754408227855},{"path":"/Users/kang/Gitea/vue-element-admin-i18n/node_modules/vue-loader/lib/index.js","mtime":1754408228175}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCid1c2Ugc3RyaWN0JzsKCmltcG9ydCBfdHlwZW9mIGZyb20gIi9Vc2Vycy9rYW5nL0dpdGVhL3Z1ZS1lbGVtZW50LWFkbWluLWkxOG4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwppbXBvcnQgcmVxdWVzdCBmcm9tICdAL3V0aWxzL3JlcXVlc3QnOwppbXBvcnQgbGFuZ3VhZ2UgZnJvbSAnLi91dGlscy9sYW5ndWFnZS5qcyc7CmltcG9ydCBtaW1lcyBmcm9tICcuL3V0aWxzL21pbWVzLmpzJzsKaW1wb3J0IGRhdGEyYmxvYiBmcm9tICcuL3V0aWxzL2RhdGEyYmxvYi5qcyc7CmltcG9ydCBlZmZlY3RSaXBwbGUgZnJvbSAnLi91dGlscy9lZmZlY3RSaXBwbGUuanMnOwpleHBvcnQgZGVmYXVsdCB7CiAgcHJvcHM6IHsKICAgIC8vIOWfn++8jOS4iuS8oOaWh+S7tm5hbWXvvIzop6blj5Hkuovku7bkvJrluKbkuIrvvIjlpoLmnpzkuIDkuKrpobXpnaLlpJrkuKrlm77niYfkuIrkvKDmjqfku7bvvIzlj6/ku6XlgZrljLrliIYKICAgIGZpZWxkOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJ2F2YXRhcicKICAgIH0sCiAgICAvLyDljp/lkI1rZXnvvIznsbvkvLzkuo5pZO+8jOinpuWPkeS6i+S7tuS8muW4puS4iu+8iOWmguaenOS4gOS4qumhtemdouWkmuS4quWbvueJh+S4iuS8oOaOp+S7tu+8jOWPr+S7peWBmuWMuuWIhgogICAga2k6IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiAwCiAgICB9LAogICAgLy8g5pi+56S66K+l5o6n5Lu25LiO5ZCmCiAgICB2YWx1ZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLy8g5LiK5Lyg5Zyw5Z2ACiAgICB1cmw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAnJwogICAgfSwKICAgIC8vIOWFtuS7luimgeS4iuS8oOaWh+S7tumZhOW4pueahOaVsOaNru+8jOWvueixoeagvOW8jwogICAgcGFyYW1zOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogbnVsbAogICAgfSwKICAgIC8vIEFkZCBjdXN0b20gaGVhZGVycwogICAgaGVhZGVyczogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IG51bGwKICAgIH0sCiAgICAvLyDliaroo4Hlm77niYfnmoTlrr0KICAgIHdpZHRoOiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogMjAwCiAgICB9LAogICAgLy8g5Ymq6KOB5Zu+54mH55qE6auYCiAgICBoZWlnaHQ6IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiAyMDAKICAgIH0sCiAgICAvLyDkuI3mmL7npLrml4vovazlip/og70KICAgIG5vUm90YXRlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvLyDkuI3pooTop4jlnIblvaLlm77niYcKICAgIG5vQ2lyY2xlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLy8g5LiN6aKE6KeI5pa55b2i5Zu+54mHCiAgICBub1NxdWFyZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8vIOWNleaWh+S7tuWkp+Wwj+mZkOWItgogICAgbWF4U2l6ZTogewogICAgICB0eXBlOiBOdW1iZXIsCiAgICAgIGRlZmF1bHQ6IDEwMjQwCiAgICB9LAogICAgLy8g6K+t6KiA57G75Z6LCiAgICBsYW5nVHlwZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICd6aCcKICAgIH0sCiAgICAvLyDor63oqIDljIUKICAgIGxhbmdFeHQ6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBudWxsCiAgICB9LAogICAgLy8g5Zu+54mH5LiK5Lyg5qC85byPCiAgICBpbWdGb3JtYXQ6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAncG5nJwogICAgfSwKICAgIC8vIOaYr+WQpuaUr+aMgei3qOWfnwogICAgd2l0aENyZWRlbnRpYWxzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIGltZ0Zvcm1hdCA9IHRoaXMuaW1nRm9ybWF0LAogICAgICBsYW5nVHlwZSA9IHRoaXMubGFuZ1R5cGUsCiAgICAgIGxhbmdFeHQgPSB0aGlzLmxhbmdFeHQsCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCwKICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CiAgICB2YXIgaXNTdXBwb3J0ZWQgPSB0cnVlOwogICAgdmFyIGFsbG93SW1nRm9ybWF0ID0gWydqcGcnLCAncG5nJ107CiAgICB2YXIgdGVtcEltZ0Zvcm1hdCA9IGFsbG93SW1nRm9ybWF0LmluZGV4T2YoaW1nRm9ybWF0KSA9PT0gLTEgPyAnanBnJyA6IGltZ0Zvcm1hdDsKICAgIHZhciBsYW5nID0gbGFuZ3VhZ2VbbGFuZ1R5cGVdID8gbGFuZ3VhZ2VbbGFuZ1R5cGVdIDogbGFuZ3VhZ2VbJ2VuJ107CiAgICB2YXIgbWltZSA9IG1pbWVzW3RlbXBJbWdGb3JtYXRdOwogICAgLy8g6KeE6IyD5Zu+54mH5qC85byPCiAgICB0aGlzLmltZ0Zvcm1hdCA9IHRlbXBJbWdGb3JtYXQ7CiAgICBpZiAobGFuZ0V4dCkgewogICAgICBPYmplY3QuYXNzaWduKGxhbmcsIGxhbmdFeHQpOwogICAgfQogICAgaWYgKHR5cGVvZiBGb3JtRGF0YSAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBpc1N1cHBvcnRlZCA9IGZhbHNlOwogICAgfQogICAgcmV0dXJuIHsKICAgICAgLy8g5Zu+54mH55qEbWltZQogICAgICBtaW1lOiBtaW1lLAogICAgICAvLyDor63oqIDljIUKICAgICAgbGFuZzogbGFuZywKICAgICAgLy8g5rWP6KeI5Zmo5piv5ZCm5pSv5oyB6K+l5o6n5Lu2CiAgICAgIGlzU3VwcG9ydGVkOiBpc1N1cHBvcnRlZCwKICAgICAgLy8g5rWP6KeI5Zmo5piv5ZCm5pSv5oyB6Kem5bGP5LqL5Lu2CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMKICAgICAgaXNTdXBwb3J0VG91Y2g6IGRvY3VtZW50Lmhhc093blByb3BlcnR5KCdvbnRvdWNoc3RhcnQnKSwKICAgICAgLy8g5q2l6aqkCiAgICAgIHN0ZXA6IDEsCiAgICAgIC8vIDHpgInmi6nmlofku7YgMuWJquijgSAz5LiK5LygCiAgICAgIC8vIOS4iuS8oOeKtuaAgeWPiui/m+W6pgogICAgICBsb2FkaW5nOiAwLAogICAgICAvLyAw5pyq5byA5aeLIDHmraPlnKggMuaIkOWKnyAz6ZSZ6K+vCiAgICAgIHByb2dyZXNzOiAwLAogICAgICAvLyDmmK/lkKbmnInplJnor6/lj4rplJnor6/kv6Hmga8KICAgICAgaGFzRXJyb3I6IGZhbHNlLAogICAgICBlcnJvck1zZzogJycsCiAgICAgIC8vIOmcgOaxguWbvuWuvemrmOavlAogICAgICByYXRpbzogd2lkdGggLyBoZWlnaHQsCiAgICAgIC8vIOWOn+WbvuWcsOWdgOOAgeeUn+aIkOWbvueJh+WcsOWdgAogICAgICBzb3VyY2VJbWc6IG51bGwsCiAgICAgIHNvdXJjZUltZ1VybDogJycsCiAgICAgIGNyZWF0ZUltZ1VybDogJycsCiAgICAgIC8vIOWOn+WbvueJh+aLluWKqOS6i+S7tuWIneWni+WAvAogICAgICBzb3VyY2VJbWdNb3VzZURvd246IHsKICAgICAgICBvbjogZmFsc2UsCiAgICAgICAgbVg6IDAsCiAgICAgICAgLy8g6byg5qCH5oyJ5LiL55qE5Z2Q5qCHCiAgICAgICAgbVk6IDAsCiAgICAgICAgeDogMCwKICAgICAgICAvLyBzY2FsZeWOn+WbvuWdkOaghwogICAgICAgIHk6IDAKICAgICAgfSwKICAgICAgLy8g55Sf5oiQ5Zu+54mH6aKE6KeI55qE5a655Zmo5aSn5bCPCiAgICAgIHByZXZpZXdDb250YWluZXI6IHsKICAgICAgICB3aWR0aDogMTAwLAogICAgICAgIGhlaWdodDogMTAwCiAgICAgIH0sCiAgICAgIC8vIOWOn+WbvuWuueWZqOWuvemrmAogICAgICBzb3VyY2VJbWdDb250YWluZXI6IHsKICAgICAgICAvLyBzaWMKICAgICAgICB3aWR0aDogMjQwLAogICAgICAgIGhlaWdodDogMTg0IC8vIOWmguaenOeUn+aIkOWbvuavlOS+i+S4juatpOS4gOiHtOS8muWHuueOsGJ1Z++8jOWFiOaUueaIkOeJueauiueahOagvOW8j+WQp++8jOWTiOWTiOWTiAogICAgICB9LAogICAgICAvLyDljp/lm77lsZXnpLrlsZ7mgKcKICAgICAgc2NhbGU6IHsKICAgICAgICB6b29tQWRkT246IGZhbHNlLAogICAgICAgIC8vIOaMiemSrue8qeaUvuS6i+S7tuW8gOWQrwogICAgICAgIHpvb21TdWJPbjogZmFsc2UsCiAgICAgICAgLy8g5oyJ6ZKu57yp5pS+5LqL5Lu25byA5ZCvCiAgICAgICAgcmFuZ2U6IDEsCiAgICAgICAgLy8g5pyA5aSnMTAwCiAgICAgICAgcm90YXRlTGVmdDogZmFsc2UsCiAgICAgICAgLy8g5oyJ6ZKu5ZCR5bem5peL6L2s5LqL5Lu25byA5ZCvCiAgICAgICAgcm90YXRlUmlnaHQ6IGZhbHNlLAogICAgICAgIC8vIOaMiemSruWQkeWPs+aXi+i9rOS6i+S7tuW8gOWQrwogICAgICAgIGRlZ3JlZTogMCwKICAgICAgICAvLyDml4vovazluqbmlbAKICAgICAgICB4OiAwLAogICAgICAgIHk6IDAsCiAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgIG1heFdpZHRoOiAwLAogICAgICAgIG1heEhlaWdodDogMCwKICAgICAgICBtaW5XaWR0aDogMCwKICAgICAgICAvLyDmnIDlrr0KICAgICAgICBtaW5IZWlnaHQ6IDAsCiAgICAgICAgbmF0dXJhbFdpZHRoOiAwLAogICAgICAgIC8vIOWOn+WuvQogICAgICAgIG5hdHVyYWxIZWlnaHQ6IDAKICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICAvLyDov5vluqbmnaHmoLflvI8KICAgIHByb2dyZXNzU3R5bGU6IGZ1bmN0aW9uIHByb2dyZXNzU3R5bGUoKSB7CiAgICAgIHZhciBwcm9ncmVzcyA9IHRoaXMucHJvZ3Jlc3M7CiAgICAgIHJldHVybiB7CiAgICAgICAgd2lkdGg6IHByb2dyZXNzICsgJyUnCiAgICAgIH07CiAgICB9LAogICAgLy8g5Y6f5Zu+5qC35byPCiAgICBzb3VyY2VJbWdTdHlsZTogZnVuY3Rpb24gc291cmNlSW1nU3R5bGUoKSB7CiAgICAgIHZhciBzY2FsZSA9IHRoaXMuc2NhbGUsCiAgICAgICAgc291cmNlSW1nTWFza2luZyA9IHRoaXMuc291cmNlSW1nTWFza2luZzsKICAgICAgdmFyIHRvcCA9IHNjYWxlLnkgKyBzb3VyY2VJbWdNYXNraW5nLnkgKyAncHgnOwogICAgICB2YXIgbGVmdCA9IHNjYWxlLnggKyBzb3VyY2VJbWdNYXNraW5nLnggKyAncHgnOwogICAgICByZXR1cm4gewogICAgICAgIHRvcDogdG9wLAogICAgICAgIGxlZnQ6IGxlZnQsCiAgICAgICAgd2lkdGg6IHNjYWxlLndpZHRoICsgJ3B4JywKICAgICAgICBoZWlnaHQ6IHNjYWxlLmhlaWdodCArICdweCcsCiAgICAgICAgdHJhbnNmb3JtOiAncm90YXRlKCcgKyBzY2FsZS5kZWdyZWUgKyAnZGVnKScsCiAgICAgICAgLy8g5peL6L2s5pe2IOW3puS+p+WOn+Wni+WbvuaXi+i9rOagt+W8jwogICAgICAgICctbXMtdHJhbnNmb3JtJzogJ3JvdGF0ZSgnICsgc2NhbGUuZGVncmVlICsgJ2RlZyknLAogICAgICAgIC8vIOWFvOWuuUlFOQogICAgICAgICctbW96LXRyYW5zZm9ybSc6ICdyb3RhdGUoJyArIHNjYWxlLmRlZ3JlZSArICdkZWcpJywKICAgICAgICAvLyDlhbzlrrlGaXJlRm94CiAgICAgICAgJy13ZWJraXQtdHJhbnNmb3JtJzogJ3JvdGF0ZSgnICsgc2NhbGUuZGVncmVlICsgJ2RlZyknLAogICAgICAgIC8vIOWFvOWuuVNhZmFyaSDlkowgY2hyb21lCiAgICAgICAgJy1vLXRyYW5zZm9ybSc6ICdyb3RhdGUoJyArIHNjYWxlLmRlZ3JlZSArICdkZWcpJyAvLyDlhbzlrrkgT3BlcmEKICAgICAgfTsKICAgIH0sCiAgICAvLyDljp/lm77okpnniYjlsZ7mgKcKICAgIHNvdXJjZUltZ01hc2tpbmc6IGZ1bmN0aW9uIHNvdXJjZUltZ01hc2tpbmcoKSB7CiAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgsCiAgICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQsCiAgICAgICAgcmF0aW8gPSB0aGlzLnJhdGlvLAogICAgICAgIHNvdXJjZUltZ0NvbnRhaW5lciA9IHRoaXMuc291cmNlSW1nQ29udGFpbmVyOwogICAgICB2YXIgc2ljID0gc291cmNlSW1nQ29udGFpbmVyOwogICAgICB2YXIgc2ljUmF0aW8gPSBzaWMud2lkdGggLyBzaWMuaGVpZ2h0OyAvLyDljp/lm77lrrnlmajlrr3pq5jmr5QKICAgICAgdmFyIHggPSAwOwogICAgICB2YXIgeSA9IDA7CiAgICAgIHZhciB3ID0gc2ljLndpZHRoOwogICAgICB2YXIgaCA9IHNpYy5oZWlnaHQ7CiAgICAgIHZhciBzY2FsZSA9IDE7CiAgICAgIGlmIChyYXRpbyA8IHNpY1JhdGlvKSB7CiAgICAgICAgc2NhbGUgPSBzaWMuaGVpZ2h0IC8gaGVpZ2h0OwogICAgICAgIHcgPSBzaWMuaGVpZ2h0ICogcmF0aW87CiAgICAgICAgeCA9IChzaWMud2lkdGggLSB3KSAvIDI7CiAgICAgIH0KICAgICAgaWYgKHJhdGlvID4gc2ljUmF0aW8pIHsKICAgICAgICBzY2FsZSA9IHNpYy53aWR0aCAvIHdpZHRoOwogICAgICAgIGggPSBzaWMud2lkdGggLyByYXRpbzsKICAgICAgICB5ID0gKHNpYy5oZWlnaHQgLSBoKSAvIDI7CiAgICAgIH0KICAgICAgcmV0dXJuIHsKICAgICAgICBzY2FsZTogc2NhbGUsCiAgICAgICAgLy8g6JKZ54mI55u45a+56ZyA5rGC5a696auY55qE57yp5pS+CiAgICAgICAgeDogeCwKICAgICAgICB5OiB5LAogICAgICAgIHdpZHRoOiB3LAogICAgICAgIGhlaWdodDogaAogICAgICB9OwogICAgfSwKICAgIC8vIOWOn+WbvumBrue9qeagt+W8jwogICAgc291cmNlSW1nU2hhZGVTdHlsZTogZnVuY3Rpb24gc291cmNlSW1nU2hhZGVTdHlsZSgpIHsKICAgICAgdmFyIHNvdXJjZUltZ01hc2tpbmcgPSB0aGlzLnNvdXJjZUltZ01hc2tpbmcsCiAgICAgICAgc291cmNlSW1nQ29udGFpbmVyID0gdGhpcy5zb3VyY2VJbWdDb250YWluZXI7CiAgICAgIHZhciBzaWMgPSBzb3VyY2VJbWdDb250YWluZXI7CiAgICAgIHZhciBzaW0gPSBzb3VyY2VJbWdNYXNraW5nOwogICAgICB2YXIgdyA9IHNpbS53aWR0aCA9PT0gc2ljLndpZHRoID8gc2ltLndpZHRoIDogKHNpYy53aWR0aCAtIHNpbS53aWR0aCkgLyAyOwogICAgICB2YXIgaCA9IHNpbS5oZWlnaHQgPT09IHNpYy5oZWlnaHQgPyBzaW0uaGVpZ2h0IDogKHNpYy5oZWlnaHQgLSBzaW0uaGVpZ2h0KSAvIDI7CiAgICAgIHJldHVybiB7CiAgICAgICAgd2lkdGg6IHcgKyAncHgnLAogICAgICAgIGhlaWdodDogaCArICdweCcKICAgICAgfTsKICAgIH0sCiAgICBwcmV2aWV3U3R5bGU6IGZ1bmN0aW9uIHByZXZpZXdTdHlsZSgpIHsKICAgICAgdmFyIHJhdGlvID0gdGhpcy5yYXRpbywKICAgICAgICBwcmV2aWV3Q29udGFpbmVyID0gdGhpcy5wcmV2aWV3Q29udGFpbmVyOwogICAgICB2YXIgcGMgPSBwcmV2aWV3Q29udGFpbmVyOwogICAgICB2YXIgdyA9IHBjLndpZHRoOwogICAgICB2YXIgaCA9IHBjLmhlaWdodDsKICAgICAgdmFyIHBjUmF0aW8gPSB3IC8gaDsKICAgICAgaWYgKHJhdGlvIDwgcGNSYXRpbykgewogICAgICAgIHcgPSBwYy5oZWlnaHQgKiByYXRpbzsKICAgICAgfQogICAgICBpZiAocmF0aW8gPiBwY1JhdGlvKSB7CiAgICAgICAgaCA9IHBjLndpZHRoIC8gcmF0aW87CiAgICAgIH0KICAgICAgcmV0dXJuIHsKICAgICAgICB3aWR0aDogdyArICdweCcsCiAgICAgICAgaGVpZ2h0OiBoICsgJ3B4JwogICAgICB9OwogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWx1ZSkgewogICAgICBpZiAobmV3VmFsdWUgJiYgdGhpcy5sb2FkaW5nICE9PSAxKSB7CiAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICB9CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgLy8g57uR5a6a5oyJ6ZSuZXNj6ZqQ6JeP5q2k5o+S5Lu25LqL5Lu2CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuY2xvc2VIYW5kbGVyKTsKICB9LAogIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkgewogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmNsb3NlSGFuZGxlcik7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyDngrnlh7vms6LnurnmlYjmnpwKICAgIHJpcHBsZTogZnVuY3Rpb24gcmlwcGxlKGUpIHsKICAgICAgZWZmZWN0UmlwcGxlKGUpOwogICAgfSwKICAgIC8vIOWFs+mXreaOp+S7tgogICAgb2ZmOiBmdW5jdGlvbiBvZmYoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzLiRlbWl0KCdpbnB1dCcsIGZhbHNlKTsKICAgICAgICBfdGhpcy4kZW1pdCgnY2xvc2UnKTsKICAgICAgICBpZiAoX3RoaXMuc3RlcCA9PT0gMyAmJiBfdGhpcy5sb2FkaW5nID09PSAyKSB7CiAgICAgICAgICBfdGhpcy5zZXRTdGVwKDEpOwogICAgICAgIH0KICAgICAgfSwgMjAwKTsKICAgIH0sCiAgICAvLyDorr7nva7mraXpqqQKICAgIHNldFN0ZXA6IGZ1bmN0aW9uIHNldFN0ZXAobm8pIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIC8vIOW7tuaXtuaYr+S4uuS6huaYvuekuuWKqOeUu+aViOaenOWRou+8jOWTiOWTiOWTiAogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczIuc3RlcCA9IG5vOwogICAgICB9LCAyMDApOwogICAgfSwKICAgIC8qIOWbvueJh+mAieaLqeWMuuWfn+WHveaVsOe7keWumgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICBoYW5kbGVDbGljazogZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSkgewogICAgICBpZiAodGhpcy5sb2FkaW5nICE9PSAxKSB7CiAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzLiRyZWZzLmZpbGVpbnB1dCkgewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRoaXMuJHJlZnMpIHsKICAgICAgICAgICAgdGhpcy4kcmVmcy5maWxlaW5wdXQuY2xpY2soKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgaWYgKHRoaXMubG9hZGluZyAhPT0gMSkgewogICAgICAgIHZhciBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzIHx8IGUuZGF0YVRyYW5zZmVyLmZpbGVzOwogICAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgICBpZiAodGhpcy5jaGVja0ZpbGUoZmlsZXNbMF0pKSB7CiAgICAgICAgICB0aGlzLnNldFNvdXJjZUltZyhmaWxlc1swXSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgIC8vIOajgOa1i+mAieaLqeeahOaWh+S7tuaYr+WQpuWQiOmAggogICAgY2hlY2tGaWxlOiBmdW5jdGlvbiBjaGVja0ZpbGUoZmlsZSkgewogICAgICB2YXIgbGFuZyA9IHRoaXMubGFuZywKICAgICAgICBtYXhTaXplID0gdGhpcy5tYXhTaXplOwogICAgICAvLyDku4XpmZDlm77niYcKICAgICAgaWYgKGZpbGUudHlwZS5pbmRleE9mKCdpbWFnZScpID09PSAtMSkgewogICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlOwogICAgICAgIHRoaXMuZXJyb3JNc2cgPSBsYW5nLmVycm9yLm9ubHlJbWc7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIC8vIOi2heWHuuWkp+WwjwogICAgICBpZiAoZmlsZS5zaXplIC8gMTAyNCA+IG1heFNpemUpIHsKICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICB0aGlzLmVycm9yTXNnID0gbGFuZy5lcnJvci5vdXRPZlNpemUgKyBtYXhTaXplICsgJ2tiJzsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAogICAgLy8g6YeN572u5o6n5Lu2CiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7CiAgICAgIHRoaXMubG9hZGluZyA9IDA7CiAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTsKICAgICAgdGhpcy5lcnJvck1zZyA9ICcnOwogICAgICB0aGlzLnByb2dyZXNzID0gMDsKICAgIH0sCiAgICAvLyDorr7nva7lm77niYfmupAKICAgIHNldFNvdXJjZUltZzogZnVuY3Rpb24gc2V0U291cmNlSW1nKGZpbGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHZhciBmciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIGZyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgX3RoaXMzLnNvdXJjZUltZ1VybCA9IGZyLnJlc3VsdDsKICAgICAgICBfdGhpczMuc3RhcnRDcm9wKCk7CiAgICAgIH07CiAgICAgIGZyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CiAgICB9LAogICAgLy8g5Ymq6KOB5YmN5YeG5aSH5bel5L2cCiAgICBzdGFydENyb3A6IGZ1bmN0aW9uIHN0YXJ0Q3JvcCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgsCiAgICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQsCiAgICAgICAgcmF0aW8gPSB0aGlzLnJhdGlvLAogICAgICAgIHNjYWxlID0gdGhpcy5zY2FsZSwKICAgICAgICBzb3VyY2VJbWdVcmwgPSB0aGlzLnNvdXJjZUltZ1VybCwKICAgICAgICBzb3VyY2VJbWdNYXNraW5nID0gdGhpcy5zb3VyY2VJbWdNYXNraW5nLAogICAgICAgIGxhbmcgPSB0aGlzLmxhbmc7CiAgICAgIHZhciBzaW0gPSBzb3VyY2VJbWdNYXNraW5nOwogICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7CiAgICAgIGltZy5zcmMgPSBzb3VyY2VJbWdVcmw7CiAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIG5XaWR0aCA9IGltZy5uYXR1cmFsV2lkdGg7CiAgICAgICAgdmFyIG5IZWlnaHQgPSBpbWcubmF0dXJhbEhlaWdodDsKICAgICAgICB2YXIgblJhdGlvID0gbldpZHRoIC8gbkhlaWdodDsKICAgICAgICB2YXIgdyA9IHNpbS53aWR0aDsKICAgICAgICB2YXIgaCA9IHNpbS5oZWlnaHQ7CiAgICAgICAgdmFyIHggPSAwOwogICAgICAgIHZhciB5ID0gMDsKICAgICAgICAvLyDlm77niYflg4/ntKDkuI3ovr7moIcKICAgICAgICBpZiAobldpZHRoIDwgd2lkdGggfHwgbkhlaWdodCA8IGhlaWdodCkgewogICAgICAgICAgX3RoaXM0Lmhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICAgIF90aGlzNC5lcnJvck1zZyA9IGxhbmcuZXJyb3IubG93ZXN0UHggKyB3aWR0aCArICcqJyArIGhlaWdodDsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKHJhdGlvID4gblJhdGlvKSB7CiAgICAgICAgICBoID0gdyAvIG5SYXRpbzsKICAgICAgICAgIHkgPSAoc2ltLmhlaWdodCAtIGgpIC8gMjsKICAgICAgICB9CiAgICAgICAgaWYgKHJhdGlvIDwgblJhdGlvKSB7CiAgICAgICAgICB3ID0gaCAqIG5SYXRpbzsKICAgICAgICAgIHggPSAoc2ltLndpZHRoIC0gdykgLyAyOwogICAgICAgIH0KICAgICAgICBzY2FsZS5yYW5nZSA9IDA7CiAgICAgICAgc2NhbGUueCA9IHg7CiAgICAgICAgc2NhbGUueSA9IHk7CiAgICAgICAgc2NhbGUud2lkdGggPSB3OwogICAgICAgIHNjYWxlLmhlaWdodCA9IGg7CiAgICAgICAgc2NhbGUuZGVncmVlID0gMDsKICAgICAgICBzY2FsZS5taW5XaWR0aCA9IHc7CiAgICAgICAgc2NhbGUubWluSGVpZ2h0ID0gaDsKICAgICAgICBzY2FsZS5tYXhXaWR0aCA9IG5XaWR0aCAqIHNpbS5zY2FsZTsKICAgICAgICBzY2FsZS5tYXhIZWlnaHQgPSBuSGVpZ2h0ICogc2ltLnNjYWxlOwogICAgICAgIHNjYWxlLm5hdHVyYWxXaWR0aCA9IG5XaWR0aDsKICAgICAgICBzY2FsZS5uYXR1cmFsSGVpZ2h0ID0gbkhlaWdodDsKICAgICAgICBfdGhpczQuc291cmNlSW1nID0gaW1nOwogICAgICAgIF90aGlzNC5jcmVhdGVJbWcoKTsKICAgICAgICBfdGhpczQuc2V0U3RlcCgyKTsKICAgICAgfTsKICAgIH0sCiAgICAvLyDpvKDmoIfmjInkuIvlm77niYflh4blpIfnp7vliqgKICAgIGltZ1N0YXJ0TW92ZTogZnVuY3Rpb24gaW1nU3RhcnRNb3ZlKGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAvLyDmlK/mjIHop6bmkbjkuovku7bvvIzliJnpvKDmoIfkuovku7bml6DmlYgKICAgICAgaWYgKHRoaXMuaXNTdXBwb3J0VG91Y2ggJiYgIWUudGFyZ2V0VG91Y2hlcykgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB2YXIgZXQgPSBlLnRhcmdldFRvdWNoZXMgPyBlLnRhcmdldFRvdWNoZXNbMF0gOiBlOwogICAgICB2YXIgc291cmNlSW1nTW91c2VEb3duID0gdGhpcy5zb3VyY2VJbWdNb3VzZURvd24sCiAgICAgICAgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICB2YXIgc2ltZCA9IHNvdXJjZUltZ01vdXNlRG93bjsKICAgICAgc2ltZC5tWCA9IGV0LnNjcmVlblg7CiAgICAgIHNpbWQubVkgPSBldC5zY3JlZW5ZOwogICAgICBzaW1kLnggPSBzY2FsZS54OwogICAgICBzaW1kLnkgPSBzY2FsZS55OwogICAgICBzaW1kLm9uID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDpvKDmoIfmjInkuIvnirbmgIHkuIvnp7vliqjvvIzlm77niYfnp7vliqgKICAgIGltZ01vdmU6IGZ1bmN0aW9uIGltZ01vdmUoZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIC8vIOaUr+aMgeinpuaRuOS6i+S7tu+8jOWImem8oOagh+S6i+S7tuaXoOaViAogICAgICBpZiAodGhpcy5pc1N1cHBvcnRUb3VjaCAmJiAhZS50YXJnZXRUb3VjaGVzKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHZhciBldCA9IGUudGFyZ2V0VG91Y2hlcyA/IGUudGFyZ2V0VG91Y2hlc1swXSA6IGU7CiAgICAgIHZhciBfdGhpcyRzb3VyY2VJbWdNb3VzZUQgPSB0aGlzLnNvdXJjZUltZ01vdXNlRG93biwKICAgICAgICBvbiA9IF90aGlzJHNvdXJjZUltZ01vdXNlRC5vbiwKICAgICAgICBtWCA9IF90aGlzJHNvdXJjZUltZ01vdXNlRC5tWCwKICAgICAgICBtWSA9IF90aGlzJHNvdXJjZUltZ01vdXNlRC5tWSwKICAgICAgICB4ID0gX3RoaXMkc291cmNlSW1nTW91c2VELngsCiAgICAgICAgeSA9IF90aGlzJHNvdXJjZUltZ01vdXNlRC55LAogICAgICAgIHNjYWxlID0gdGhpcy5zY2FsZSwKICAgICAgICBzb3VyY2VJbWdNYXNraW5nID0gdGhpcy5zb3VyY2VJbWdNYXNraW5nOwogICAgICB2YXIgc2ltID0gc291cmNlSW1nTWFza2luZzsKICAgICAgdmFyIG5YID0gZXQuc2NyZWVuWDsKICAgICAgdmFyIG5ZID0gZXQuc2NyZWVuWTsKICAgICAgdmFyIGRYID0gblggLSBtWDsKICAgICAgdmFyIGRZID0gblkgLSBtWTsKICAgICAgdmFyIHJYID0geCArIGRYOwogICAgICB2YXIgclkgPSB5ICsgZFk7CiAgICAgIGlmICghb24pIHJldHVybjsKICAgICAgaWYgKHJYID4gMCkgewogICAgICAgIHJYID0gMDsKICAgICAgfQogICAgICBpZiAoclkgPiAwKSB7CiAgICAgICAgclkgPSAwOwogICAgICB9CiAgICAgIGlmIChyWCA8IHNpbS53aWR0aCAtIHNjYWxlLndpZHRoKSB7CiAgICAgICAgclggPSBzaW0ud2lkdGggLSBzY2FsZS53aWR0aDsKICAgICAgfQogICAgICBpZiAoclkgPCBzaW0uaGVpZ2h0IC0gc2NhbGUuaGVpZ2h0KSB7CiAgICAgICAgclkgPSBzaW0uaGVpZ2h0IC0gc2NhbGUuaGVpZ2h0OwogICAgICB9CiAgICAgIHNjYWxlLnggPSByWDsKICAgICAgc2NhbGUueSA9IHJZOwogICAgfSwKICAgIC8vIOaMiemSruaMieS4i+W8gOWni+WQkeWPs+aXi+i9rAogICAgc3RhcnRSb3RhdGVSaWdodDogZnVuY3Rpb24gc3RhcnRSb3RhdGVSaWdodChlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS5yb3RhdGVSaWdodCA9IHRydWU7CiAgICAgIHZhciBfcm90YXRlID0gZnVuY3Rpb24gcm90YXRlKCkgewogICAgICAgIGlmIChzY2FsZS5yb3RhdGVSaWdodCkgewogICAgICAgICAgdmFyIGRlZ3JlZSA9ICsrc2NhbGUuZGVncmVlOwogICAgICAgICAgX3RoaXM1LmNyZWF0ZUltZyhkZWdyZWUpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF9yb3RhdGUoKTsKICAgICAgICAgIH0sIDYwKTsKICAgICAgICB9CiAgICAgIH07CiAgICAgIF9yb3RhdGUoKTsKICAgIH0sCiAgICAvLyDmjInpkq7mjInkuIvlvIDlp4vlkJHlt6bml4vovawKICAgIHN0YXJ0Um90YXRlTGVmdDogZnVuY3Rpb24gc3RhcnRSb3RhdGVMZWZ0KGUpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHZhciBzY2FsZSA9IHRoaXMuc2NhbGU7CiAgICAgIHNjYWxlLnJvdGF0ZUxlZnQgPSB0cnVlOwogICAgICB2YXIgX3JvdGF0ZTIgPSBmdW5jdGlvbiByb3RhdGUoKSB7CiAgICAgICAgaWYgKHNjYWxlLnJvdGF0ZUxlZnQpIHsKICAgICAgICAgIHZhciBkZWdyZWUgPSAtLXNjYWxlLmRlZ3JlZTsKICAgICAgICAgIF90aGlzNi5jcmVhdGVJbWcoZGVncmVlKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfcm90YXRlMigpOwogICAgICAgICAgfSwgNjApOwogICAgICAgIH0KICAgICAgfTsKICAgICAgX3JvdGF0ZTIoKTsKICAgIH0sCiAgICAvLyDlgZzmraLml4vovawKICAgIGVuZFJvdGF0ZTogZnVuY3Rpb24gZW5kUm90YXRlKCkgewogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS5yb3RhdGVMZWZ0ID0gZmFsc2U7CiAgICAgIHNjYWxlLnJvdGF0ZVJpZ2h0ID0gZmFsc2U7CiAgICB9LAogICAgLy8g5oyJ6ZKu5oyJ5LiL5byA5aeL5pS+5aSnCiAgICBzdGFydFpvb21BZGQ6IGZ1bmN0aW9uIHN0YXJ0Wm9vbUFkZChlKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB2YXIgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICBzY2FsZS56b29tQWRkT24gPSB0cnVlOwogICAgICB2YXIgX3pvb20gPSBmdW5jdGlvbiB6b29tKCkgewogICAgICAgIGlmIChzY2FsZS56b29tQWRkT24pIHsKICAgICAgICAgIHZhciByYW5nZSA9IHNjYWxlLnJhbmdlID49IDEwMCA/IDEwMCA6ICsrc2NhbGUucmFuZ2U7CiAgICAgICAgICBfdGhpczcuem9vbUltZyhyYW5nZSk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3pvb20oKTsKICAgICAgICAgIH0sIDYwKTsKICAgICAgICB9CiAgICAgIH07CiAgICAgIF96b29tKCk7CiAgICB9LAogICAgLy8g5oyJ6ZKu5p2+5byA5oiW56e75byA5Y+W5raI5pS+5aSnCiAgICBlbmRab29tQWRkOiBmdW5jdGlvbiBlbmRab29tQWRkKGUpIHsKICAgICAgdGhpcy5zY2FsZS56b29tQWRkT24gPSBmYWxzZTsKICAgIH0sCiAgICAvLyDmjInpkq7mjInkuIvlvIDlp4vnvKnlsI8KICAgIHN0YXJ0Wm9vbVN1YjogZnVuY3Rpb24gc3RhcnRab29tU3ViKGUpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHZhciBzY2FsZSA9IHRoaXMuc2NhbGU7CiAgICAgIHNjYWxlLnpvb21TdWJPbiA9IHRydWU7CiAgICAgIHZhciBfem9vbTIgPSBmdW5jdGlvbiB6b29tKCkgewogICAgICAgIGlmIChzY2FsZS56b29tU3ViT24pIHsKICAgICAgICAgIHZhciByYW5nZSA9IHNjYWxlLnJhbmdlIDw9IDAgPyAwIDogLS1zY2FsZS5yYW5nZTsKICAgICAgICAgIF90aGlzOC56b29tSW1nKHJhbmdlKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfem9vbTIoKTsKICAgICAgICAgIH0sIDYwKTsKICAgICAgICB9CiAgICAgIH07CiAgICAgIF96b29tMigpOwogICAgfSwKICAgIC8vIOaMiemSruadvuW8gOaIluenu+W8gOWPlua2iOe8qeWwjwogICAgZW5kWm9vbVN1YjogZnVuY3Rpb24gZW5kWm9vbVN1YihlKSB7CiAgICAgIHZhciBzY2FsZSA9IHRoaXMuc2NhbGU7CiAgICAgIHNjYWxlLnpvb21TdWJPbiA9IGZhbHNlOwogICAgfSwKICAgIHpvb21DaGFuZ2U6IGZ1bmN0aW9uIHpvb21DaGFuZ2UoZSkgewogICAgICB0aGlzLnpvb21JbWcoZS50YXJnZXQudmFsdWUpOwogICAgfSwKICAgIC8vIOe8qeaUvuWOn+WbvgogICAgem9vbUltZzogZnVuY3Rpb24gem9vbUltZyhuZXdSYW5nZSkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgdmFyIHNvdXJjZUltZ01hc2tpbmcgPSB0aGlzLnNvdXJjZUltZ01hc2tpbmcsCiAgICAgICAgc2NhbGUgPSB0aGlzLnNjYWxlOwogICAgICB2YXIgbWF4V2lkdGggPSBzY2FsZS5tYXhXaWR0aCwKICAgICAgICBtYXhIZWlnaHQgPSBzY2FsZS5tYXhIZWlnaHQsCiAgICAgICAgbWluV2lkdGggPSBzY2FsZS5taW5XaWR0aCwKICAgICAgICBtaW5IZWlnaHQgPSBzY2FsZS5taW5IZWlnaHQsCiAgICAgICAgd2lkdGggPSBzY2FsZS53aWR0aCwKICAgICAgICBoZWlnaHQgPSBzY2FsZS5oZWlnaHQsCiAgICAgICAgeCA9IHNjYWxlLngsCiAgICAgICAgeSA9IHNjYWxlLnk7CiAgICAgIHZhciBzaW0gPSBzb3VyY2VJbWdNYXNraW5nOwogICAgICAvLyDokpnniYjlrr3pq5gKICAgICAgdmFyIHNXaWR0aCA9IHNpbS53aWR0aDsKICAgICAgdmFyIHNIZWlnaHQgPSBzaW0uaGVpZ2h0OwogICAgICAvLyDmlrDlrr3pq5gKICAgICAgdmFyIG5XaWR0aCA9IG1pbldpZHRoICsgKG1heFdpZHRoIC0gbWluV2lkdGgpICogbmV3UmFuZ2UgLyAxMDA7CiAgICAgIHZhciBuSGVpZ2h0ID0gbWluSGVpZ2h0ICsgKG1heEhlaWdodCAtIG1pbkhlaWdodCkgKiBuZXdSYW5nZSAvIDEwMDsKICAgICAgLy8g5paw5Z2Q5qCH77yI5qC55o2u6JKZ54mI5Lit5b+D54K557yp5pS+77yJCiAgICAgIHZhciBuWCA9IHNXaWR0aCAvIDIgLSBuV2lkdGggLyB3aWR0aCAqIChzV2lkdGggLyAyIC0geCk7CiAgICAgIHZhciBuWSA9IHNIZWlnaHQgLyAyIC0gbkhlaWdodCAvIGhlaWdodCAqIChzSGVpZ2h0IC8gMiAtIHkpOwogICAgICAvLyDliKTmlq3mlrDlnZDmoIfmmK/lkKbotoXov4fokpnniYjpmZDliLYKICAgICAgaWYgKG5YID4gMCkgewogICAgICAgIG5YID0gMDsKICAgICAgfQogICAgICBpZiAoblkgPiAwKSB7CiAgICAgICAgblkgPSAwOwogICAgICB9CiAgICAgIGlmIChuWCA8IHNXaWR0aCAtIG5XaWR0aCkgewogICAgICAgIG5YID0gc1dpZHRoIC0gbldpZHRoOwogICAgICB9CiAgICAgIGlmIChuWSA8IHNIZWlnaHQgLSBuSGVpZ2h0KSB7CiAgICAgICAgblkgPSBzSGVpZ2h0IC0gbkhlaWdodDsKICAgICAgfQogICAgICAvLyDotYvlgLzlpITnkIYKICAgICAgc2NhbGUueCA9IG5YOwogICAgICBzY2FsZS55ID0gblk7CiAgICAgIHNjYWxlLndpZHRoID0gbldpZHRoOwogICAgICBzY2FsZS5oZWlnaHQgPSBuSGVpZ2h0OwogICAgICBzY2FsZS5yYW5nZSA9IG5ld1JhbmdlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoc2NhbGUucmFuZ2UgPT09IG5ld1JhbmdlKSB7CiAgICAgICAgICBfdGhpczkuY3JlYXRlSW1nKCk7CiAgICAgICAgfQogICAgICB9LCAzMDApOwogICAgfSwKICAgIC8vIOeUn+aIkOmcgOaxguWbvueJhwogICAgY3JlYXRlSW1nOiBmdW5jdGlvbiBjcmVhdGVJbWcoZSkgewogICAgICB2YXIgbWltZSA9IHRoaXMubWltZSwKICAgICAgICBzb3VyY2VJbWcgPSB0aGlzLnNvdXJjZUltZywKICAgICAgICBfdGhpcyRzY2FsZSA9IHRoaXMuc2NhbGUsCiAgICAgICAgeCA9IF90aGlzJHNjYWxlLngsCiAgICAgICAgeSA9IF90aGlzJHNjYWxlLnksCiAgICAgICAgd2lkdGggPSBfdGhpcyRzY2FsZS53aWR0aCwKICAgICAgICBoZWlnaHQgPSBfdGhpcyRzY2FsZS5oZWlnaHQsCiAgICAgICAgZGVncmVlID0gX3RoaXMkc2NhbGUuZGVncmVlLAogICAgICAgIHNjYWxlID0gdGhpcy5zb3VyY2VJbWdNYXNraW5nLnNjYWxlOwogICAgICB2YXIgY2FudmFzID0gdGhpcy4kcmVmcy5jYW52YXM7CiAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgaWYgKGUpIHsKICAgICAgICAvLyDlj5bmtojpvKDmoIfmjInkuIvnp7vliqjnirbmgIEKICAgICAgICB0aGlzLnNvdXJjZUltZ01vdXNlRG93bi5vbiA9IGZhbHNlOwogICAgICB9CiAgICAgIGNhbnZhcy53aWR0aCA9IHRoaXMud2lkdGg7CiAgICAgIGNhbnZhcy5oZWlnaHQgPSB0aGlzLmhlaWdodDsKICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7CiAgICAgIC8vIOWwhumAj+aYjuWMuuWfn+iuvue9ruS4uueZveiJsuW6lei+uQogICAgICBjdHguZmlsbFN0eWxlID0gJyNmZmYnOwogICAgICBjdHguZmlsbFJlY3QoMCwgMCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwogICAgICBjdHgudHJhbnNsYXRlKHRoaXMud2lkdGggKiAwLjUsIHRoaXMuaGVpZ2h0ICogMC41KTsKICAgICAgY3R4LnJvdGF0ZShNYXRoLlBJICogZGVncmVlIC8gMTgwKTsKICAgICAgY3R4LnRyYW5zbGF0ZSgtdGhpcy53aWR0aCAqIDAuNSwgLXRoaXMuaGVpZ2h0ICogMC41KTsKICAgICAgY3R4LmRyYXdJbWFnZShzb3VyY2VJbWcsIHggLyBzY2FsZSwgeSAvIHNjYWxlLCB3aWR0aCAvIHNjYWxlLCBoZWlnaHQgLyBzY2FsZSk7CiAgICAgIHRoaXMuY3JlYXRlSW1nVXJsID0gY2FudmFzLnRvRGF0YVVSTChtaW1lKTsKICAgIH0sCiAgICBwcmVwYXJlVXBsb2FkOiBmdW5jdGlvbiBwcmVwYXJlVXBsb2FkKCkgewogICAgICB2YXIgdXJsID0gdGhpcy51cmwsCiAgICAgICAgY3JlYXRlSW1nVXJsID0gdGhpcy5jcmVhdGVJbWdVcmwsCiAgICAgICAgZmllbGQgPSB0aGlzLmZpZWxkLAogICAgICAgIGtpID0gdGhpcy5raTsKICAgICAgdGhpcy4kZW1pdCgnY3JvcC1zdWNjZXNzJywgY3JlYXRlSW1nVXJsLCBmaWVsZCwga2kpOwogICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycgJiYgdXJsKSB7CiAgICAgICAgdGhpcy51cGxvYWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm9mZigpOwogICAgICB9CiAgICB9LAogICAgLy8g5LiK5Lyg5Zu+54mHCiAgICB1cGxvYWQ6IGZ1bmN0aW9uIHVwbG9hZCgpIHsKICAgICAgdmFyIF90aGlzMCA9IHRoaXM7CiAgICAgIHZhciBsYW5nID0gdGhpcy5sYW5nLAogICAgICAgIGltZ0Zvcm1hdCA9IHRoaXMuaW1nRm9ybWF0LAogICAgICAgIG1pbWUgPSB0aGlzLm1pbWUsCiAgICAgICAgdXJsID0gdGhpcy51cmwsCiAgICAgICAgcGFyYW1zID0gdGhpcy5wYXJhbXMsCiAgICAgICAgZmllbGQgPSB0aGlzLmZpZWxkLAogICAgICAgIGtpID0gdGhpcy5raSwKICAgICAgICBjcmVhdGVJbWdVcmwgPSB0aGlzLmNyZWF0ZUltZ1VybDsKICAgICAgdmFyIGZtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOwogICAgICBmbURhdGEuYXBwZW5kKGZpZWxkLCBkYXRhMmJsb2IoY3JlYXRlSW1nVXJsLCBtaW1lKSwgZmllbGQgKyAnLicgKyBpbWdGb3JtYXQpOwogICAgICAvLyDmt7vliqDlhbbku5blj4LmlbAKICAgICAgaWYgKF90eXBlb2YocGFyYW1zKSA9PT0gJ29iamVjdCcgJiYgcGFyYW1zKSB7CiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7CiAgICAgICAgICBmbURhdGEuYXBwZW5kKGssIHBhcmFtc1trXSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLy8g55uR5ZCs6L+b5bqm5Zue6LCDCiAgICAgIC8vIGNvbnN0IHVwbG9hZFByb2dyZXNzID0gKGV2ZW50KSA9PiB7CiAgICAgIC8vICAgaWYgKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUpIHsKICAgICAgLy8gICAgIHRoaXMucHJvZ3Jlc3MgPSAxMDAgKiBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbAogICAgICAvLyAgIH0KICAgICAgLy8gfQogICAgICAvLyDkuIrkvKDmlofku7YKICAgICAgdGhpcy5yZXNldCgpOwogICAgICB0aGlzLmxvYWRpbmcgPSAxOwogICAgICB0aGlzLnNldFN0ZXAoMyk7CiAgICAgIHJlcXVlc3QoewogICAgICAgIHVybDogdXJsLAogICAgICAgIG1ldGhvZDogJ3Bvc3QnLAogICAgICAgIGRhdGE6IGZtRGF0YQogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNEYXRhKSB7CiAgICAgICAgX3RoaXMwLmxvYWRpbmcgPSAyOwogICAgICAgIF90aGlzMC4kZW1pdCgnY3JvcC11cGxvYWQtc3VjY2VzcycsIHJlc0RhdGEuZGF0YSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBpZiAoX3RoaXMwLnZhbHVlKSB7CiAgICAgICAgICBfdGhpczAubG9hZGluZyA9IDM7CiAgICAgICAgICBfdGhpczAuaGFzRXJyb3IgPSB0cnVlOwogICAgICAgICAgX3RoaXMwLmVycm9yTXNnID0gbGFuZy5mYWlsOwogICAgICAgICAgX3RoaXMwLiRlbWl0KCdjcm9wLXVwbG9hZC1mYWlsJywgZXJyLCBmaWVsZCwga2kpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgY2xvc2VIYW5kbGVyOiBmdW5jdGlvbiBjbG9zZUhhbmRsZXIoZSkgewogICAgICBpZiAodGhpcy52YWx1ZSAmJiAoZS5rZXkgPT09ICdFc2NhcGUnIHx8IGUua2V5Q29kZSA9PT0gMjcpKSB7CiAgICAgICAgdGhpcy5vZmYoKTsKICAgICAgfQogICAgfQogIH0KfTs="},{"version":3,"names":["_typeof","request","language","mimes","data2blob","effectRipple","props","field","type","String","default","ki","Number","value","Boolean","url","params","Object","headers","width","height","noRotate","noCircle","noSquare","maxSize","langType","langExt","imgFormat","withCredentials","data","isSupported","allowImgFormat","tempImgFormat","indexOf","lang","mime","assign","FormData","isSupportTouch","document","hasOwnProperty","step","loading","progress","hasError","errorMsg","ratio","sourceImg","sourceImgUrl","createImgUrl","sourceImgMouseDown","on","mX","mY","x","y","previewContainer","sourceImgContainer","scale","zoomAddOn","zoomSubOn","range","rotateLeft","rotateRight","degree","maxWidth","maxHeight","minWidth","minHeight","naturalWidth","naturalHeight","computed","progressStyle","sourceImgStyle","sourceImgMasking","top","left","transform","sic","sicRatio","w","h","sourceImgShadeStyle","sim","previewStyle","pc","pcRatio","watch","newValue","reset","created","addEventListener","closeHandler","destroyed","removeEventListener","methods","ripple","e","off","_this","setTimeout","$emit","setStep","no","_this2","preventDefault","handleClick","target","$refs","fileinput","activeElement","click","handleChange","files","dataTransfer","checkFile","setSourceImg","file","error","onlyImg","size","outOfSize","_this3","fr","FileReader","onload","result","startCrop","readAsDataURL","_this4","img","Image","src","nWidth","nHeight","nRatio","lowestPx","createImg","imgStartMove","targetTouches","et","simd","screenX","screenY","imgMove","_this$sourceImgMouseD","nX","nY","dX","dY","rX","rY","startRotateRight","_this5","rotate","startRotateLeft","_this6","endRotate","startZoomAdd","_this7","zoom","zoomImg","endZoomAdd","startZoomSub","_this8","endZoomSub","zoomChange","newRange","_this9","sWidth","sHeight","_this$scale","canvas","ctx","getContext","clearRect","fillStyle","fillRect","translate","Math","PI","drawImage","toDataURL","prepareUpload","upload","_this0","fmData","append","keys","forEach","k","method","then","resData","catch","err","fail","key","keyCode"],"sources":["src/components/ImageCropper/index.vue"],"sourcesContent":["<template>\n <div v-show=\"value\" class=\"vue-image-crop-upload\">\n <div class=\"vicp-wrap\">\n <div class=\"vicp-close\" @click=\"off\">\n <i class=\"vicp-icon4\" />\n </div>\n\n <div v-show=\"step == 1\" class=\"vicp-step1\">\n <div\n class=\"vicp-drop-area\"\n @dragleave=\"preventDefault\"\n @dragover=\"preventDefault\"\n @dragenter=\"preventDefault\"\n @click=\"handleClick\"\n @drop=\"handleChange\"\n >\n <i v-show=\"loading != 1\" class=\"vicp-icon1\">\n <i class=\"vicp-icon1-arrow\" />\n <i class=\"vicp-icon1-body\" />\n <i class=\"vicp-icon1-bottom\" />\n </i>\n <span v-show=\"loading !== 1\" class=\"vicp-hint\">{{ lang.hint }}</span>\n <span v-show=\"!isSupported\" class=\"vicp-no-supported-hint\">{{ lang.noSupported }}</span>\n <input v-show=\"false\" v-if=\"step == 1\" ref=\"fileinput\" type=\"file\" @change=\"handleChange\">\n </div>\n <div v-show=\"hasError\" class=\"vicp-error\">\n <i class=\"vicp-icon2\" />\n {{ errorMsg }}\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"off\" @mousedown=\"ripple\">{{ lang.btn.off }}</a>\n </div>\n </div>\n\n <div v-if=\"step == 2\" class=\"vicp-step2\">\n <div class=\"vicp-crop\">\n <div v-show=\"true\" class=\"vicp-crop-left\">\n <div class=\"vicp-img-container\">\n <img\n ref=\"img\"\n :src=\"sourceImgUrl\"\n :style=\"sourceImgStyle\"\n class=\"vicp-img\"\n draggable=\"false\"\n @drag=\"preventDefault\"\n @dragstart=\"preventDefault\"\n @dragend=\"preventDefault\"\n @dragleave=\"preventDefault\"\n @dragover=\"preventDefault\"\n @dragenter=\"preventDefault\"\n @drop=\"preventDefault\"\n @touchstart=\"imgStartMove\"\n @touchmove=\"imgMove\"\n @touchend=\"createImg\"\n @touchcancel=\"createImg\"\n @mousedown=\"imgStartMove\"\n @mousemove=\"imgMove\"\n @mouseup=\"createImg\"\n @mouseout=\"createImg\"\n >\n <div :style=\"sourceImgShadeStyle\" class=\"vicp-img-shade vicp-img-shade-1\" />\n <div :style=\"sourceImgShadeStyle\" class=\"vicp-img-shade vicp-img-shade-2\" />\n </div>\n\n <div class=\"vicp-range\">\n <input\n :value=\"scale.range\"\n type=\"range\"\n step=\"1\"\n min=\"0\"\n max=\"100\"\n @input=\"zoomChange\"\n >\n <i\n class=\"vicp-icon5\"\n @mousedown=\"startZoomSub\"\n @mouseout=\"endZoomSub\"\n @mouseup=\"endZoomSub\"\n />\n <i\n class=\"vicp-icon6\"\n @mousedown=\"startZoomAdd\"\n @mouseout=\"endZoomAdd\"\n @mouseup=\"endZoomAdd\"\n />\n </div>\n\n <div v-if=\"!noRotate\" class=\"vicp-rotate\">\n <i @mousedown=\"startRotateLeft\" @mouseout=\"endRotate\" @mouseup=\"endRotate\">↺</i>\n <i @mousedown=\"startRotateRight\" @mouseout=\"endRotate\" @mouseup=\"endRotate\">↻</i>\n </div>\n </div>\n <div v-show=\"true\" class=\"vicp-crop-right\">\n <div class=\"vicp-preview\">\n <div v-if=\"!noSquare\" class=\"vicp-preview-item\">\n <img :src=\"createImgUrl\" :style=\"previewStyle\">\n <span>{{ lang.preview }}</span>\n </div>\n <div v-if=\"!noCircle\" class=\"vicp-preview-item vicp-preview-item-circle\">\n <img :src=\"createImgUrl\" :style=\"previewStyle\">\n <span>{{ lang.preview }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"setStep(1)\" @mousedown=\"ripple\">{{ lang.btn.back }}</a>\n <a class=\"vicp-operate-btn\" @click=\"prepareUpload\" @mousedown=\"ripple\">{{ lang.btn.save }}</a>\n </div>\n </div>\n\n <div v-if=\"step == 3\" class=\"vicp-step3\">\n <div class=\"vicp-upload\">\n <span v-show=\"loading === 1\" class=\"vicp-loading\">{{ lang.loading }}</span>\n <div class=\"vicp-progress-wrap\">\n <span v-show=\"loading === 1\" :style=\"progressStyle\" class=\"vicp-progress\" />\n </div>\n <div v-show=\"hasError\" class=\"vicp-error\">\n <i class=\"vicp-icon2\" />\n {{ errorMsg }}\n </div>\n <div v-show=\"loading === 2\" class=\"vicp-success\">\n <i class=\"vicp-icon3\" />\n {{ lang.success }}\n </div>\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"setStep(2)\" @mousedown=\"ripple\">{{ lang.btn.back }}</a>\n <a @click=\"off\" @mousedown=\"ripple\">{{ lang.btn.close }}</a>\n </div>\n </div>\n <canvas v-show=\"false\" ref=\"canvas\" :width=\"width\" :height=\"height\" />\n </div>\n </div>\n</template>\n\n<script>\n'use strict'\nimport request from '@/utils/request'\nimport language from './utils/language.js'\nimport mimes from './utils/mimes.js'\nimport data2blob from './utils/data2blob.js'\nimport effectRipple from './utils/effectRipple.js'\nexport default {\n props: {\n // 域上传文件name触发事件会带上如果一个页面多个图片上传控件可以做区分\n field: {\n type: String,\n default: 'avatar'\n },\n // 原名key类似于id触发事件会带上如果一个页面多个图片上传控件可以做区分\n ki: {\n type: Number,\n default: 0\n },\n // 显示该控件与否\n value: {\n type: Boolean,\n default: true\n },\n // 上传地址\n url: {\n type: String,\n default: ''\n },\n // 其他要上传文件附带的数据,对象格式\n params: {\n type: Object,\n default: null\n },\n // Add custom headers\n headers: {\n type: Object,\n default: null\n },\n // 剪裁图片的宽\n width: {\n type: Number,\n default: 200\n },\n // 剪裁图片的高\n height: {\n type: Number,\n default: 200\n },\n // 不显示旋转功能\n noRotate: {\n type: Boolean,\n default: true\n },\n // 不预览圆形图片\n noCircle: {\n type: Boolean,\n default: false\n },\n // 不预览方形图片\n noSquare: {\n type: Boolean,\n default: false\n },\n // 单文件大小限制\n maxSize: {\n type: Number,\n default: 10240\n },\n // 语言类型\n langType: {\n type: String,\n default: 'zh'\n },\n // 语言包\n langExt: {\n type: Object,\n default: null\n },\n // 图片上传格式\n imgFormat: {\n type: String,\n default: 'png'\n },\n // 是否支持跨域\n withCredentials: {\n type: Boolean,\n default: false\n }\n },\n data() {\n const { imgFormat, langType, langExt, width, height } = this\n let isSupported = true\n const allowImgFormat = ['jpg', 'png']\n const tempImgFormat =\n allowImgFormat.indexOf(imgFormat) === -1 ? 'jpg' : imgFormat\n const lang = language[langType] ? language[langType] : language['en']\n const mime = mimes[tempImgFormat]\n // 规范图片格式\n this.imgFormat = tempImgFormat\n if (langExt) {\n Object.assign(lang, langExt)\n }\n if (typeof FormData !== 'function') {\n isSupported = false\n }\n return {\n // 图片的mime\n mime,\n // 语言包\n lang,\n // 浏览器是否支持该控件\n isSupported,\n // 浏览器是否支持触屏事件\n // eslint-disable-next-line no-prototype-builtins\n isSupportTouch: document.hasOwnProperty('ontouchstart'),\n // 步骤\n step: 1, // 1选择文件 2剪裁 3上传\n // 上传状态及进度\n loading: 0, // 0未开始 1正在 2成功 3错误\n progress: 0,\n // 是否有错误及错误信息\n hasError: false,\n errorMsg: '',\n // 需求图宽高比\n ratio: width / height,\n // 原图地址、生成图片地址\n sourceImg: null,\n sourceImgUrl: '',\n createImgUrl: '',\n // 原图片拖动事件初始值\n sourceImgMouseDown: {\n on: false,\n mX: 0, // 鼠标按下的坐标\n mY: 0,\n x: 0, // scale原图坐标\n y: 0\n },\n // 生成图片预览的容器大小\n previewContainer: {\n width: 100,\n height: 100\n },\n // 原图容器宽高\n sourceImgContainer: {\n // sic\n width: 240,\n height: 184 // 如果生成图比例与此一致会出现bug先改成特殊的格式吧哈哈哈\n },\n // 原图展示属性\n scale: {\n zoomAddOn: false, // 按钮缩放事件开启\n zoomSubOn: false, // 按钮缩放事件开启\n range: 1, // 最大100\n rotateLeft: false, // 按钮向左旋转事件开启\n rotateRight: false, // 按钮向右旋转事件开启\n degree: 0, // 旋转度数\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n maxWidth: 0,\n maxHeight: 0,\n minWidth: 0, // 最宽\n minHeight: 0,\n naturalWidth: 0, // 原宽\n naturalHeight: 0\n }\n }\n },\n computed: {\n // 进度条样式\n progressStyle() {\n const { progress } = this\n return {\n width: progress + '%'\n }\n },\n // 原图样式\n sourceImgStyle() {\n const { scale, sourceImgMasking } = this\n const top = scale.y + sourceImgMasking.y + 'px'\n const left = scale.x + sourceImgMasking.x + 'px'\n return {\n top,\n left,\n width: scale.width + 'px',\n height: scale.height + 'px',\n transform: 'rotate(' + scale.degree + 'deg)', // 旋转时 左侧原始图旋转样式\n '-ms-transform': 'rotate(' + scale.degree + 'deg)', // 兼容IE9\n '-moz-transform': 'rotate(' + scale.degree + 'deg)', // 兼容FireFox\n '-webkit-transform': 'rotate(' + scale.degree + 'deg)', // 兼容Safari 和 chrome\n '-o-transform': 'rotate(' + scale.degree + 'deg)' // 兼容 Opera\n }\n },\n // 原图蒙版属性\n sourceImgMasking() {\n const { width, height, ratio, sourceImgContainer } = this\n const sic = sourceImgContainer\n const sicRatio = sic.width / sic.height // 原图容器宽高比\n let x = 0\n let y = 0\n let w = sic.width\n let h = sic.height\n let scale = 1\n if (ratio < sicRatio) {\n scale = sic.height / height\n w = sic.height * ratio\n x = (sic.width - w) / 2\n }\n if (ratio > sicRatio) {\n scale = sic.width / width\n h = sic.width / ratio\n y = (sic.height - h) / 2\n }\n return {\n scale, // 蒙版相对需求宽高的缩放\n x,\n y,\n width: w,\n height: h\n }\n },\n // 原图遮罩样式\n sourceImgShadeStyle() {\n const { sourceImgMasking, sourceImgContainer } = this\n const sic = sourceImgContainer\n const sim = sourceImgMasking\n const w =\n sim.width === sic.width ? sim.width : (sic.width - sim.width) / 2\n const h =\n sim.height === sic.height ? sim.height : (sic.height - sim.height) / 2\n return {\n width: w + 'px',\n height: h + 'px'\n }\n },\n previewStyle() {\n const { ratio, previewContainer } = this\n const pc = previewContainer\n let w = pc.width\n let h = pc.height\n const pcRatio = w / h\n if (ratio < pcRatio) {\n w = pc.height * ratio\n }\n if (ratio > pcRatio) {\n h = pc.width / ratio\n }\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n },\n watch: {\n value(newValue) {\n if (newValue && this.loading !== 1) {\n this.reset()\n }\n }\n },\n created() {\n // 绑定按键esc隐藏此插件事件\n document.addEventListener('keyup', this.closeHandler)\n },\n destroyed() {\n document.removeEventListener('keyup', this.closeHandler)\n },\n methods: {\n // 点击波纹效果\n ripple(e) {\n effectRipple(e)\n },\n // 关闭控件\n off() {\n setTimeout(() => {\n this.$emit('input', false)\n this.$emit('close')\n if (this.step === 3 && this.loading === 2) {\n this.setStep(1)\n }\n }, 200)\n },\n // 设置步骤\n setStep(no) {\n // 延时是为了显示动画效果呢,哈哈哈\n setTimeout(() => {\n this.step = no\n }, 200)\n },\n /* 图片选择区域函数绑定\n ---------------------------------------------------------------*/\n preventDefault(e) {\n e.preventDefault()\n return false\n },\n handleClick(e) {\n if (this.loading !== 1) {\n if (e.target !== this.$refs.fileinput) {\n e.preventDefault()\n if (document.activeElement !== this.$refs) {\n this.$refs.fileinput.click()\n }\n }\n }\n },\n handleChange(e) {\n e.preventDefault()\n if (this.loading !== 1) {\n const files = e.target.files || e.dataTransfer.files\n this.reset()\n if (this.checkFile(files[0])) {\n this.setSourceImg(files[0])\n }\n }\n },\n /* ---------------------------------------------------------------*/\n // 检测选择的文件是否合适\n checkFile(file) {\n const { lang, maxSize } = this\n // 仅限图片\n if (file.type.indexOf('image') === -1) {\n this.hasError = true\n this.errorMsg = lang.error.onlyImg\n return false\n }\n // 超出大小\n if (file.size / 1024 > maxSize) {\n this.hasError = true\n this.errorMsg = lang.error.outOfSize + maxSize + 'kb'\n return false\n }\n return true\n },\n // 重置控件\n reset() {\n this.loading = 0\n this.hasError = false\n this.errorMsg = ''\n this.progress = 0\n },\n // 设置图片源\n setSourceImg(file) {\n const fr = new FileReader()\n fr.onload = e => {\n this.sourceImgUrl = fr.result\n this.startCrop()\n }\n fr.readAsDataURL(file)\n },\n // 剪裁前准备工作\n startCrop() {\n const {\n width,\n height,\n ratio,\n scale,\n sourceImgUrl,\n sourceImgMasking,\n lang\n } = this\n const sim = sourceImgMasking\n const img = new Image()\n img.src = sourceImgUrl\n img.onload = () => {\n const nWidth = img.naturalWidth\n const nHeight = img.naturalHeight\n const nRatio = nWidth / nHeight\n let w = sim.width\n let h = sim.height\n let x = 0\n let y = 0\n // 图片像素不达标\n if (nWidth < width || nHeight < height) {\n this.hasError = true\n this.errorMsg = lang.error.lowestPx + width + '*' + height\n return false\n }\n if (ratio > nRatio) {\n h = w / nRatio\n y = (sim.height - h) / 2\n }\n if (ratio < nRatio) {\n w = h * nRatio\n x = (sim.width - w) / 2\n }\n scale.range = 0\n scale.x = x\n scale.y = y\n scale.width = w\n scale.height = h\n scale.degree = 0\n scale.minWidth = w\n scale.minHeight = h\n scale.maxWidth = nWidth * sim.scale\n scale.maxHeight = nHeight * sim.scale\n scale.naturalWidth = nWidth\n scale.naturalHeight = nHeight\n this.sourceImg = img\n this.createImg()\n this.setStep(2)\n }\n },\n // 鼠标按下图片准备移动\n imgStartMove(e) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const { sourceImgMouseDown, scale } = this\n const simd = sourceImgMouseDown\n simd.mX = et.screenX\n simd.mY = et.screenY\n simd.x = scale.x\n simd.y = scale.y\n simd.on = true\n },\n // 鼠标按下状态下移动,图片移动\n imgMove(e) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown: { on, mX, mY, x, y },\n scale,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const nX = et.screenX\n const nY = et.screenY\n const dX = nX - mX\n const dY = nY - mY\n let rX = x + dX\n let rY = y + dY\n if (!on) return\n if (rX > 0) {\n rX = 0\n }\n if (rY > 0) {\n rY = 0\n }\n if (rX < sim.width - scale.width) {\n rX = sim.width - scale.width\n }\n if (rY < sim.height - scale.height) {\n rY = sim.height - scale.height\n }\n scale.x = rX\n scale.y = rY\n },\n // 按钮按下开始向右旋转\n startRotateRight(e) {\n const { scale } = this\n scale.rotateRight = true\n const rotate = () => {\n if (scale.rotateRight) {\n const degree = ++scale.degree\n this.createImg(degree)\n setTimeout(function() {\n rotate()\n }, 60)\n }\n }\n rotate()\n },\n // 按钮按下开始向左旋转\n startRotateLeft(e) {\n const { scale } = this\n scale.rotateLeft = true\n const rotate = () => {\n if (scale.rotateLeft) {\n const degree = --scale.degree\n this.createImg(degree)\n setTimeout(function() {\n rotate()\n }, 60)\n }\n }\n rotate()\n },\n // 停止旋转\n endRotate() {\n const { scale } = this\n scale.rotateLeft = false\n scale.rotateRight = false\n },\n // 按钮按下开始放大\n startZoomAdd(e) {\n const { scale } = this\n scale.zoomAddOn = true\n const zoom = () => {\n if (scale.zoomAddOn) {\n const range = scale.range >= 100 ? 100 : ++scale.range\n this.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n zoom()\n },\n // 按钮松开或移开取消放大\n endZoomAdd(e) {\n this.scale.zoomAddOn = false\n },\n // 按钮按下开始缩小\n startZoomSub(e) {\n const { scale } = this\n scale.zoomSubOn = true\n const zoom = () => {\n if (scale.zoomSubOn) {\n const range = scale.range <= 0 ? 0 : --scale.range\n this.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n zoom()\n },\n // 按钮松开或移开取消缩小\n endZoomSub(e) {\n const { scale } = this\n scale.zoomSubOn = false\n },\n zoomChange(e) {\n this.zoomImg(e.target.value)\n },\n // 缩放原图\n zoomImg(newRange) {\n const { sourceImgMasking, scale } = this\n const {\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n width,\n height,\n x,\n y\n } = scale\n const sim = sourceImgMasking\n // 蒙版宽高\n const sWidth = sim.width\n const sHeight = sim.height\n // 新宽高\n const nWidth = minWidth + ((maxWidth - minWidth) * newRange) / 100\n const nHeight = minHeight + ((maxHeight - minHeight) * newRange) / 100\n // 新坐标(根据蒙版中心点缩放)\n let nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x)\n let nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y)\n // 判断新坐标是否超过蒙版限制\n if (nX > 0) {\n nX = 0\n }\n if (nY > 0) {\n nY = 0\n }\n if (nX < sWidth - nWidth) {\n nX = sWidth - nWidth\n }\n if (nY < sHeight - nHeight) {\n nY = sHeight - nHeight\n }\n // 赋值处理\n scale.x = nX\n scale.y = nY\n scale.width = nWidth\n scale.height = nHeight\n scale.range = newRange\n setTimeout(() => {\n if (scale.range === newRange) {\n this.createImg()\n }\n }, 300)\n },\n // 生成需求图片\n createImg(e) {\n const {\n mime,\n sourceImg,\n scale: { x, y, width, height, degree },\n sourceImgMasking: { scale }\n } = this\n const canvas = this.$refs.canvas\n const ctx = canvas.getContext('2d')\n if (e) {\n // 取消鼠标按下移动状态\n this.sourceImgMouseDown.on = false\n }\n canvas.width = this.width\n canvas.height = this.height\n ctx.clearRect(0, 0, this.width, this.height)\n // 将透明区域设置为白色底边\n ctx.fillStyle = '#fff'\n ctx.fillRect(0, 0, this.width, this.height)\n ctx.translate(this.width * 0.5, this.height * 0.5)\n ctx.rotate((Math.PI * degree) / 180)\n ctx.translate(-this.width * 0.5, -this.height * 0.5)\n ctx.drawImage(\n sourceImg,\n x / scale,\n y / scale,\n width / scale,\n height / scale\n )\n this.createImgUrl = canvas.toDataURL(mime)\n },\n prepareUpload() {\n const { url, createImgUrl, field, ki } = this\n this.$emit('crop-success', createImgUrl, field, ki)\n if (typeof url === 'string' && url) {\n this.upload()\n } else {\n this.off()\n }\n },\n // 上传图片\n upload() {\n const {\n lang,\n imgFormat,\n mime,\n url,\n params,\n field,\n ki,\n createImgUrl\n } = this\n const fmData = new FormData()\n fmData.append(\n field,\n data2blob(createImgUrl, mime),\n field + '.' + imgFormat\n )\n // 添加其他参数\n if (typeof params === 'object' && params) {\n Object.keys(params).forEach(k => {\n fmData.append(k, params[k])\n })\n }\n // 监听进度回调\n // const uploadProgress = (event) => {\n // if (event.lengthComputable) {\n // this.progress = 100 * Math.round(event.loaded) / event.total\n // }\n // }\n // 上传文件\n this.reset()\n this.loading = 1\n this.setStep(3)\n request({\n url,\n method: 'post',\n data: fmData\n })\n .then(resData => {\n this.loading = 2\n this.$emit('crop-upload-success', resData.data)\n })\n .catch(err => {\n if (this.value) {\n this.loading = 3\n this.hasError = true\n this.errorMsg = lang.fail\n this.$emit('crop-upload-fail', err, field, ki)\n }\n })\n },\n closeHandler(e) {\n if (this.value && (e.key === 'Escape' || e.keyCode === 27)) {\n this.off()\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@charset \"UTF-8\";\n@-webkit-keyframes vicp_progress {\n 0% {\n background-position-y: 0;\n }\n 100% {\n background-position-y: 40px;\n }\n}\n@keyframes vicp_progress {\n 0% {\n background-position-y: 0;\n }\n 100% {\n background-position-y: 40px;\n }\n}\n@-webkit-keyframes vicp {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0) translatey(-60px);\n transform: scale(0) translatey(-60px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: scale(1) translatey(0);\n transform: scale(1) translatey(0);\n }\n}\n@keyframes vicp {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0) translatey(-60px);\n transform: scale(0) translatey(-60px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: scale(1) translatey(0);\n transform: scale(1) translatey(0);\n }\n}\n.vue-image-crop-upload {\n position: fixed;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n z-index: 10000;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.65);\n -webkit-tap-highlight-color: transparent;\n -moz-tap-highlight-color: transparent;\n}\n.vue-image-crop-upload .vicp-wrap {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n position: fixed;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n z-index: 10000;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n width: 600px;\n height: 330px;\n padding: 25px;\n background-color: #fff;\n border-radius: 2px;\n -webkit-animation: vicp 0.12s ease-in;\n animation: vicp 0.12s ease-in;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close {\n position: absolute;\n right: -30px;\n top: -30px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4 {\n position: relative;\n display: block;\n width: 30px;\n height: 30px;\n cursor: pointer;\n -webkit-transition: -webkit-transform 0.18s;\n transition: -webkit-transform 0.18s;\n transition: transform 0.18s;\n transition: transform 0.18s, -webkit-transform 0.18s;\n -webkit-transform: rotate(0);\n -ms-transform: rotate(0);\n transform: rotate(0);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after,\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::before {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n content: \"\";\n position: absolute;\n top: 12px;\n left: 4px;\n width: 20px;\n height: 3px;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n background-color: #fff;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after {\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4:hover {\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 35px;\n height: 170px;\n background-color: rgba(0, 0, 0, 0.03);\n text-align: center;\n border: 1px dashed rgba(0, 0, 0, 0.08);\n overflow: hidden;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 {\n display: block;\n margin: 0 auto 6px;\n width: 42px;\n height: 42px;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-arrow {\n display: block;\n margin: 0 auto;\n width: 0;\n height: 0;\n border-bottom: 14.7px solid rgba(0, 0, 0, 0.3);\n border-left: 14.7px solid transparent;\n border-right: 14.7px solid transparent;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-body {\n display: block;\n width: 12.6px;\n height: 14.7px;\n margin: 0 auto;\n background-color: rgba(0, 0, 0, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-bottom {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n display: block;\n height: 12.6px;\n border: 6px solid rgba(0, 0, 0, 0.3);\n border-top: none;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-hint {\n display: block;\n padding: 15px;\n font-size: 14px;\n color: #666;\n line-height: 30px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-no-supported-hint {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n padding: 30px;\n width: 100%;\n height: 60px;\n line-height: 30px;\n background-color: #eee;\n text-align: center;\n color: #666;\n font-size: 14px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area:hover {\n cursor: pointer;\n border-color: rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.05);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop {\n overflow: hidden;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left {\n float: left;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container {\n position: relative;\n display: block;\n width: 240px;\n height: 180px;\n background-color: #e5e5e0;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img {\n position: absolute;\n display: block;\n cursor: move;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade {\n -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n position: absolute;\n background-color: rgba(241, 242, 243, 0.8);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade.vicp-img-shade-1 {\n top: 0;\n left: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade.vicp-img-shade-2 {\n bottom: 0;\n right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate {\n position: relative;\n width: 240px;\n height: 18px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i {\n display: block;\n width: 18px;\n height: 18px;\n border-radius: 100%;\n line-height: 18px;\n text-align: center;\n font-size: 12px;\n font-weight: bold;\n background-color: rgba(0, 0, 0, 0.08);\n color: #fff;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:hover {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.14);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:first-child {\n float: left;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:last-child {\n float: right;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range {\n position: relative;\n margin: 30px 0 10px 0;\n width: 240px;\n height: 18px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5,\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6 {\n position: absolute;\n top: 0;\n width: 18px;\n height: 18px;\n border-radius: 100%;\n background-color: rgba(0, 0, 0, 0.08);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5:hover,\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6:hover {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.14);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5 {\n left: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5::before {\n position: absolute;\n content: \"\";\n display: block;\n left: 3px;\n top: 8px;\n width: 12px;\n height: 2px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6 {\n right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6::before {\n position: absolute;\n content: \"\";\n display: block;\n left: 3px;\n top: 8px;\n width: 12px;\n height: 2px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6::after {\n position: absolute;\n content: \"\";\n display: block;\n top: 3px;\n left: 8px;\n width: 2px;\n height: 12px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"] {\n display: block;\n padding-top: 5px;\n margin: 0 auto;\n width: 180px;\n height: 8px;\n vertical-align: top;\n background: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n cursor: pointer;\n /* 滑块\n ---------------------------------------------------------------*/\n /* 轨道\n ---------------------------------------------------------------*/\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus {\n outline: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n -webkit-appearance: none;\n appearance: none;\n margin-top: -3px;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border-radius: 100%;\n border: none;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-moz-range-thumb {\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n -moz-appearance: none;\n appearance: none;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border-radius: 100%;\n border: none;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-thumb {\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n appearance: none;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border: none;\n border-radius: 100%;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-moz-range-thumb {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-ms-thumb {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-webkit-slider-thumb {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n margin-top: -4px;\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-webkit-slider-runnable-track {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n height: 6px;\n cursor: pointer;\n border-radius: 2px;\n border: none;\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-moz-range-track {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n height: 6px;\n cursor: pointer;\n border-radius: 2px;\n border: none;\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-track {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n height: 6px;\n border-radius: 2px;\n border: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-fill-lower {\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-fill-upper {\n background-color: rgba(68, 170, 119, 0.15);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background-color: rgba(68, 170, 119, 0.5);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-moz-range-track {\n background-color: rgba(68, 170, 119, 0.5);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-ms-fill-lower {\n background-color: rgba(68, 170, 119, 0.45);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-ms-fill-upper {\n background-color: rgba(68, 170, 119, 0.25);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right {\n float: right;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview {\n height: 150px;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item {\n position: relative;\n padding: 5px;\n width: 100px;\n height: 100px;\n float: left;\n margin-right: 16px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item\n span {\n position: absolute;\n bottom: -30px;\n width: 100%;\n font-size: 14px;\n color: #bbb;\n display: block;\n text-align: center;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item\n img {\n position: absolute;\n display: block;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n padding: 3px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n overflow: hidden;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item.vicp-preview-item-circle {\n margin-right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item.vicp-preview-item-circle\n img {\n border-radius: 100%;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 35px;\n height: 170px;\n background-color: rgba(0, 0, 0, 0.03);\n text-align: center;\n border: 1px dashed #ddd;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-loading {\n display: block;\n padding: 15px;\n font-size: 16px;\n color: #999;\n line-height: 30px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap {\n margin-top: 12px;\n background-color: rgba(0, 0, 0, 0.08);\n border-radius: 3px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step3\n .vicp-upload\n .vicp-progress-wrap\n .vicp-progress {\n position: relative;\n display: block;\n height: 5px;\n border-radius: 3px;\n background-color: #4a7;\n -webkit-box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3);\n box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3);\n -webkit-transition: width 0.15s linear;\n transition: width 0.15s linear;\n background-image: -webkit-linear-gradient(\n 135deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n -45deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-size: 40px 40px;\n -webkit-animation: vicp_progress 0.5s linear infinite;\n animation: vicp_progress 0.5s linear infinite;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step3\n .vicp-upload\n .vicp-progress-wrap\n .vicp-progress::after {\n content: \"\";\n position: absolute;\n display: block;\n top: -3px;\n right: -3px;\n width: 9px;\n height: 9px;\n border: 1px solid rgba(245, 246, 247, 0.7);\n -webkit-box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7);\n box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7);\n border-radius: 100%;\n background-color: #4a7;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-error,\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-success {\n height: 100px;\n line-height: 100px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate {\n position: absolute;\n right: 20px;\n bottom: 20px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate a {\n position: relative;\n float: left;\n display: block;\n margin-left: 10px;\n width: 100px;\n height: 36px;\n line-height: 36px;\n text-align: center;\n cursor: pointer;\n font-size: 14px;\n color: #4a7;\n border-radius: 2px;\n overflow: hidden;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate a:hover {\n background-color: rgba(0, 0, 0, 0.03);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-error,\n.vue-image-crop-upload .vicp-wrap .vicp-success {\n display: block;\n font-size: 14px;\n line-height: 24px;\n height: 24px;\n color: #d10;\n text-align: center;\n vertical-align: top;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-success {\n color: #4a7;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon3 {\n position: relative;\n display: inline-block;\n width: 20px;\n height: 20px;\n top: 4px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon3::after {\n position: absolute;\n top: 3px;\n left: 6px;\n width: 6px;\n height: 10px;\n border-width: 0 2px 2px 0;\n border-color: #4a7;\n border-style: solid;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n content: \"\";\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2 {\n position: relative;\n display: inline-block;\n width: 20px;\n height: 20px;\n top: 4px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::after,\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::before {\n content: \"\";\n position: absolute;\n top: 9px;\n left: 4px;\n width: 13px;\n height: 2px;\n background-color: #d10;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::after {\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.e-ripple {\n position: absolute;\n border-radius: 100%;\n background-color: rgba(0, 0, 0, 0.15);\n background-clip: padding-box;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-transform: scale(0);\n -ms-transform: scale(0);\n transform: scale(0);\n opacity: 1;\n}\n.e-ripple.z-active {\n opacity: 0;\n -webkit-transform: scale(2);\n -ms-transform: scale(2);\n transform: scale(2);\n -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, transform 0.6s ease-out,\n -webkit-transform 0.6s ease-out;\n}\n</style>\n"],"mappings":"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","ignoreList":[]}]}