Clazz.declarePackage ("java.util.zip"); Clazz.load (["java.util.zip.DeflaterOutputStream", "$.ZipConstants", "java.util.Hashtable", "java.util.zip.CRC32", "JU.Lst"], "java.util.zip.ZipOutputStream", ["JU.ZStream", "java.io.IOException", "java.lang.Boolean", "$.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.Long", "java.util.zip.Deflater", "$.ZipException"], function () { c$ = Clazz.decorateAsClass (function () { this.current = null; this.xentries = null; this.names = null; this.crc = null; this.written = 0; this.locoff = 0; this.comment = null; this.method = 8; this.finished = false; this.$closed = false; Clazz.instantialize (this, arguments); }, java.util.zip, "ZipOutputStream", java.util.zip.DeflaterOutputStream, java.util.zip.ZipConstants); Clazz.prepareFields (c$, function () { this.xentries = new JU.Lst (); this.names = new java.util.Hashtable (); this.crc = new java.util.zip.CRC32 (); }); c$.version = Clazz.defineMethod (c$, "version", function (e) { switch (e.method) { case 8: return 20; case 0: return 10; default: throw new java.util.zip.ZipException ("unsupported compression method"); } }, "java.util.zip.ZipEntry"); Clazz.defineMethod (c$, "ensureOpen", function () { if (this.$closed) { throw new java.io.IOException ("Stream closed"); }}); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, java.util.zip.ZipOutputStream, []); }); Clazz.defineMethod (c$, "setZOS", function (out) { this.setDOS (out, java.util.zip.ZipOutputStream.newDeflater ()); return this; }, "java.io.OutputStream"); c$.newDeflater = Clazz.defineMethod (c$, "newDeflater", function () { return ( new java.util.zip.Deflater (2147483647)).init (-1, 0, true); }); Clazz.defineMethod (c$, "setComment", function (comment) { if (comment != null) { this.comment = JU.ZStream.getBytes (comment); if (this.comment.length > 0xffff) throw new IllegalArgumentException ("ZIP file comment too long."); }}, "~S"); Clazz.defineMethod (c$, "putNextEntry", function (e) { this.ensureOpen (); if (this.current != null) { this.closeEntry (); }if (e.time == -1) { e.setTime (System.currentTimeMillis ()); }if (e.method == -1) { e.method = this.method; }e.flag = 0; switch (e.method) { case 8: if (e.size == -1 || e.csize == -1 || e.crc == -1) e.flag = 8; break; case 0: if (e.size == -1) { e.size = e.csize; } else if (e.csize == -1) { e.csize = e.size; } else if (e.size != e.csize) { throw new java.util.zip.ZipException ("STORED entry where compressed != uncompressed size"); }if (e.size == -1 || e.crc == -1) { throw new java.util.zip.ZipException ("STORED entry missing size, compressed size, or crc-32"); }break; default: throw new java.util.zip.ZipException ("unsupported compression method"); } if (this.names.containsKey (e.name)) { throw new java.util.zip.ZipException ("duplicate entry: " + e.name); }this.names.put (e.name, Boolean.TRUE); e.flag |= 2048; this.current = e; this.current.offset = this.written; this.xentries.addLast (this.current); this.writeLOC (this.current); }, "java.util.zip.ZipEntry"); Clazz.defineMethod (c$, "closeEntry", function () { this.ensureOpen (); if (this.current != null) { var e = this.current; switch (e.method) { case 8: this.deflater.finish (); Clazz.superCall (this, java.util.zip.ZipOutputStream, "finish", []); if ((e.flag & 8) == 0) { if (e.size != this.deflater.getBytesRead ()) { throw new java.util.zip.ZipException ("invalid entry size (expected " + e.size + " but got " + this.deflater.getBytesRead () + " bytes)"); }if (e.csize != this.deflater.getBytesWritten ()) { throw new java.util.zip.ZipException ("invalid entry compressed size (expected " + e.csize + " but got " + this.deflater.getBytesWritten () + " bytes)"); }if (e.crc != this.crc.getValue ()) { throw new java.util.zip.ZipException ("invalid entry CRC-32 (expected 0x" + Long.toHexString (e.crc) + " but got 0x" + Long.toHexString (this.crc.getValue ()) + ")"); }} else { e.size = this.deflater.getBytesRead (); e.csize = this.deflater.getBytesWritten (); e.crc = this.crc.getValue (); this.writeEXT (e); }this.deflater = java.util.zip.ZipOutputStream.newDeflater (); this.written += e.csize; break; case 0: if (e.size != this.written - this.locoff) { throw new java.util.zip.ZipException ("invalid entry size (expected " + e.size + " but got " + (this.written - this.locoff) + " bytes)"); }if (e.crc != this.crc.getValue ()) { throw new java.util.zip.ZipException ("invalid entry crc-32 (expected 0x" + Long.toHexString (e.crc) + " but got 0x" + Long.toHexString (this.crc.getValue ()) + ")"); }break; default: throw new java.util.zip.ZipException ("invalid compression method"); } this.crc.reset (); this.current = null; }}); Clazz.defineMethod (c$, "write", function (b, off, len) { this.ensureOpen (); if (off < 0 || len < 0 || off > b.length - len) { throw new IndexOutOfBoundsException (); } else if (len == 0) { return; }if (this.current == null) { throw new java.util.zip.ZipException ("no current ZIP entry"); }var entry = this.current; switch (entry.method) { case 8: Clazz.superCall (this, java.util.zip.ZipOutputStream, "write", [b, off, len]); break; case 0: this.written += len; if (this.written - this.locoff > entry.size) { throw new java.util.zip.ZipException ("attempt to write past end of STORED entry"); }this.out.write (this.buffer, 0, len); break; default: throw new java.util.zip.ZipException ("invalid compression method"); } this.crc.update (b, off, len); }, "~A,~N,~N"); Clazz.defineMethod (c$, "finish", function () { this.ensureOpen (); if (this.finished) { return; }if (this.current != null) { this.closeEntry (); }var off = this.written; for (var xentry, $xentry = this.xentries.iterator (); $xentry.hasNext () && ((xentry = $xentry.next ()) || true);) this.writeCEN (xentry); this.writeEND (off, this.written - off); this.finished = true; }); Clazz.defineMethod (c$, "close", function () { if (!this.$closed) { Clazz.superCall (this, java.util.zip.ZipOutputStream, "close", []); this.$closed = true; }}); Clazz.defineMethod (c$, "writeLOC", function (entry) { var e = entry; var flag = e.flag; var elen = (e.extra != null) ? e.extra.length : 0; var hasZip64 = false; this.writeInt (67324752); if ((flag & 8) == 8) { this.writeShort (java.util.zip.ZipOutputStream.version (e)); this.writeShort (flag); this.writeShort (e.method); this.writeInt (e.time); this.writeInt (0); this.writeInt (0); this.writeInt (0); } else { if (e.csize >= 4294967295 || e.size >= 4294967295) { hasZip64 = true; this.writeShort (45); } else { this.writeShort (java.util.zip.ZipOutputStream.version (e)); }this.writeShort (flag); this.writeShort (e.method); this.writeInt (e.time); this.writeInt (e.crc); if (hasZip64) { this.writeInt (4294967295); this.writeInt (4294967295); elen += 20; } else { this.writeInt (e.csize); this.writeInt (e.size); }}var nameBytes = JU.ZStream.getBytes (e.name); this.writeShort (nameBytes.length); this.writeShort (elen); this.writeBytes (nameBytes, 0, nameBytes.length); if (hasZip64) { this.writeShort (1); this.writeShort (16); this.writeLong (e.size); this.writeLong (e.csize); }if (e.extra != null) { this.writeBytes (e.extra, 0, e.extra.length); }this.locoff = this.written; }, "java.util.zip.ZipEntry"); Clazz.defineMethod (c$, "writeEXT", function (e) { this.writeInt (134695760); this.writeInt (e.crc); if (e.csize >= 4294967295 || e.size >= 4294967295) { this.writeLong (e.csize); this.writeLong (e.size); } else { this.writeInt (e.csize); this.writeInt (e.size); }}, "java.util.zip.ZipEntry"); Clazz.defineMethod (c$, "writeCEN", function (entry) { var e = entry; var flag = e.flag; var version = java.util.zip.ZipOutputStream.version (e); var csize = e.csize; var size = e.size; var offset = entry.offset; var e64len = 0; var hasZip64 = false; if (e.csize >= 4294967295) { csize = 4294967295; e64len += 8; hasZip64 = true; }if (e.size >= 4294967295) { size = 4294967295; e64len += 8; hasZip64 = true; }if (entry.offset >= 4294967295) { offset = 4294967295; e64len += 8; hasZip64 = true; }this.writeInt (33639248); if (hasZip64) { this.writeShort (45); this.writeShort (45); } else { this.writeShort (version); this.writeShort (version); }this.writeShort (flag); this.writeShort (e.method); this.writeInt (e.time); this.writeInt (e.crc); this.writeInt (csize); this.writeInt (size); var nameBytes = JU.ZStream.getBytes (e.name); this.writeShort (nameBytes.length); if (hasZip64) { this.writeShort (e64len + 4 + (e.extra != null ? e.extra.length : 0)); } else { this.writeShort (e.extra != null ? e.extra.length : 0); }var commentBytes; if (e.comment != null) { commentBytes = JU.ZStream.getBytes (e.comment); this.writeShort (Math.min (commentBytes.length, 0xffff)); } else { commentBytes = null; this.writeShort (0); }this.writeShort (0); this.writeShort (0); this.writeInt (0); this.writeInt (offset); this.writeBytes (nameBytes, 0, nameBytes.length); if (hasZip64) { this.writeShort (1); this.writeShort (e64len); if (size == 4294967295) this.writeLong (e.size); if (csize == 4294967295) this.writeLong (e.csize); if (offset == 4294967295) this.writeLong (entry.offset); }if (e.extra != null) { this.writeBytes (e.extra, 0, e.extra.length); }if (commentBytes != null) { this.writeBytes (commentBytes, 0, Math.min (commentBytes.length, 0xffff)); }}, "java.util.zip.ZipEntry"); Clazz.defineMethod (c$, "writeEND", function (off, len) { var hasZip64 = false; var xlen = len; var xoff = off; if (xlen >= 4294967295) { xlen = 4294967295; hasZip64 = true; }if (xoff >= 4294967295) { xoff = 4294967295; hasZip64 = true; }var count = this.xentries.size (); if (count >= 65535) { count = 65535; hasZip64 = true; }if (hasZip64) { var off64 = this.written; this.writeInt (101075792); this.writeLong (44); this.writeShort (45); this.writeShort (45); this.writeInt (0); this.writeInt (0); this.writeLong (this.xentries.size ()); this.writeLong (this.xentries.size ()); this.writeLong (len); this.writeLong (off); this.writeInt (117853008); this.writeInt (0); this.writeLong (off64); this.writeInt (1); }this.writeInt (101010256); this.writeShort (0); this.writeShort (0); this.writeShort (count); this.writeShort (count); this.writeInt (xlen); this.writeInt (xoff); if (this.comment != null) { this.writeShort (this.comment.length); this.writeBytes (this.comment, 0, this.comment.length); } else { this.writeShort (0); }}, "~N,~N"); Clazz.defineMethod (c$, "writeShort", function (v) { var out = this.out; { out.writeByteAsInt((v >>> 0) & 0xff); out.writeByteAsInt((v >>> 8) & 0xff); }this.written += 2; }, "~N"); Clazz.defineMethod (c$, "writeInt", function (v) { var out = this.out; { out.writeByteAsInt((v >>> 0) & 0xff); out.writeByteAsInt((v >>> 8) & 0xff); out.writeByteAsInt((v >>> 16) & 0xff); out.writeByteAsInt((v >>> 24) & 0xff); }this.written += 4; }, "~N"); Clazz.defineMethod (c$, "writeLong", function (v) { var out = this.out; { out.writeByteAsInt((v >>> 0) & 0xff); out.writeByteAsInt((v >>> 8) & 0xff); out.writeByteAsInt((v >>> 16) & 0xff); out.writeByteAsInt((v >>> 24) & 0xff); out.writeByteAsInt(0); out.writeByteAsInt(0); out.writeByteAsInt(0); out.writeByteAsInt(0); }this.written += 8; }, "~N"); Clazz.defineMethod (c$, "writeBytes", function (b, off, len) { this.out.write (b, off, len); this.written += len; }, "~A,~N,~N"); Clazz.defineStatics (c$, "STORED", 0, "DEFLATED", 8); });