Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / JU / ZipTools.js
index 478e320..5a5bc81 100644 (file)
-Clazz.declarePackage ("JU");\r
-Clazz.load (["javajs.api.GenericZipTools"], "JU.ZipTools", ["java.io.BufferedInputStream", "$.IOException", "java.lang.Boolean", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "$.ZipInputStream", "javajs.api.GenericZipInputStream", "$.ZInputStream", "JU.BArray", "$.Lst", "$.PT", "$.Rdr", "$.SB"], function () {\r
-c$ = Clazz.declareType (JU, "ZipTools", null, javajs.api.GenericZipTools);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "newZipInputStream", \r
-function (is) {\r
-return JU.ZipTools.newZIS (is);\r
-}, "java.io.InputStream");\r
-c$.newZIS = Clazz.defineMethod (c$, "newZIS", \r
- function (is) {\r
-return (Clazz.instanceOf (is, javajs.api.ZInputStream) ? is : Clazz.instanceOf (is, java.io.BufferedInputStream) ?  new javajs.api.GenericZipInputStream (is) :  new javajs.api.GenericZipInputStream ( new java.io.BufferedInputStream (is)));\r
-}, "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "getAllZipData", \r
-function (is, subfileList, name0, binaryFileList, fileData) {\r
-var zis = JU.ZipTools.newZIS (is);\r
-var ze;\r
-var listing =  new JU.SB ();\r
-binaryFileList = "|" + binaryFileList + "|";\r
-var prefix = JU.PT.join (subfileList, '/', 1);\r
-var prefixd = null;\r
-if (prefix != null) {\r
-prefixd = prefix.substring (0, prefix.indexOf ("/") + 1);\r
-if (prefixd.length == 0) prefixd = null;\r
-}try {\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (prefix != null && prefixd != null && !(name.equals (prefix) || name.startsWith (prefixd))) continue;\r
-listing.append (name).appendC ('\n');\r
-var sname = "|" + name.substring (name.lastIndexOf ("/") + 1) + "|";\r
-var asBinaryString = (binaryFileList.indexOf (sname) >= 0);\r
-var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());\r
-var str;\r
-if (asBinaryString) {\r
-str = this.getBinaryStringForBytes (bytes);\r
-name += ":asBinaryString";\r
-} else {\r
-str = JU.Rdr.fixUTF (bytes);\r
-}str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n";\r
-fileData.put (name0 + "|" + name, str);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-fileData.put ("#Directory_Listing", listing.toString ());\r
-}, "java.io.InputStream,~A,~S,~S,java.util.Map");\r
-Clazz.defineMethod (c$, "getBinaryStringForBytes", \r
- function (bytes) {\r
-var ret =  new JU.SB ();\r
-for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');\r
-\r
-return ret.toString ();\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "getZipFileDirectory", \r
-function (jzt, bis, list, listPtr, asBufferedInputStream) {\r
-var ret;\r
-if (list == null || listPtr >= list.length) return this.getZipDirectoryAsStringAndClose (bis);\r
-bis = JU.Rdr.getPngZipStream (bis, true);\r
-var fileName = list[listPtr];\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-try {\r
-var isAll = (fileName.equals ("."));\r
-if (isAll || fileName.lastIndexOf ("/") == fileName.length - 1) {\r
-ret =  new JU.SB ();\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (isAll || name.startsWith (fileName)) ret.append (name).appendC ('\n');\r
-}\r
-var str = ret.toString ();\r
-return (asBufferedInputStream ? JU.Rdr.getBIS (str.getBytes ()) : str);\r
-}var pt = fileName.indexOf (":asBinaryString");\r
-var asBinaryString = (pt > 0);\r
-if (asBinaryString) fileName = fileName.substring (0, pt);\r
-fileName = fileName.$replace ('\\', '/');\r
-while ((ze = zis.getNextEntry ()) != null && !fileName.equals (ze.getName ())) {\r
-}\r
-var bytes = (ze == null ? null : JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ()));\r
-ze = null;\r
-zis.close ();\r
-if (bytes == null) return "";\r
-if (JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) return this.getZipFileDirectory (jzt, JU.Rdr.getBIS (bytes), list, ++listPtr, asBufferedInputStream);\r
-if (asBufferedInputStream) return JU.Rdr.getBIS (bytes);\r
-if (asBinaryString) {\r
-ret =  new JU.SB ();\r
-for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');\r
-\r
-return ret.toString ();\r
-}if (JU.Rdr.isGzipB (bytes)) bytes = JU.Rdr.getLimitedStreamBytes (this.getUnGzippedInputStream (bytes), -1);\r
-return JU.Rdr.fixUTF (bytes);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return "";\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~A,~N,~B");\r
-Clazz.overrideMethod (c$, "getZipFileContentsAsBytes", \r
-function (bis, list, listPtr) {\r
-var ret =  Clazz.newByteArray (0, 0);\r
-var fileName = list[listPtr];\r
-if (fileName.lastIndexOf ("/") == fileName.length - 1) return ret;\r
-try {\r
-bis = JU.Rdr.getPngZipStream (bis, true);\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-if (!fileName.equals (ze.getName ())) continue;\r
-var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());\r
-return ((JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes (JU.Rdr.getBIS (bytes), list, listPtr) : bytes);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return ret;\r
-}, "java.io.BufferedInputStream,~A,~N");\r
-Clazz.overrideMethod (c$, "getZipDirectoryAsStringAndClose", \r
-function (bis) {\r
-var sb =  new JU.SB ();\r
-var s =  new Array (0);\r
-try {\r
-s = this.getZipDirectoryOrErrorAndClose (bis, null);\r
-bis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-for (var i = 0; i < s.length; i++) sb.append (s[i]).appendC ('\n');\r
-\r
-return sb.toString ();\r
-}, "java.io.BufferedInputStream");\r
-Clazz.overrideMethod (c$, "getZipDirectoryAndClose", \r
-function (bis, manifestID) {\r
-var s =  new Array (0);\r
-try {\r
-s = this.getZipDirectoryOrErrorAndClose (bis, manifestID);\r
-bis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return s;\r
-}, "java.io.BufferedInputStream,~S");\r
-Clazz.defineMethod (c$, "getZipDirectoryOrErrorAndClose", \r
- function (bis, manifestID) {\r
-bis = JU.Rdr.getPngZipStream (bis, true);\r
-var v =  new JU.Lst ();\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-var manifest = null;\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var fileName = ze.getName ();\r
-if (manifestID != null && fileName.startsWith (manifestID)) manifest = JU.ZipTools.getStreamAsString (zis);\r
- else if (!fileName.startsWith ("__MACOS")) v.addLast (fileName);\r
-}\r
-zis.close ();\r
-if (manifestID != null) v.add (0, manifest == null ? "" : manifest + "\n############\n");\r
-return v.toArray ( new Array (v.size ()));\r
-}, "java.io.BufferedInputStream,~S");\r
-c$.getStreamAsString = Clazz.defineMethod (c$, "getStreamAsString", \r
-function (is) {\r
-return JU.Rdr.fixUTF (JU.Rdr.getLimitedStreamBytes (is, -1));\r
-}, "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "newGZIPInputStream", \r
-function (is) {\r
-return  new java.io.BufferedInputStream ( new java.util.zip.GZIPInputStream (is, 512));\r
-}, "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "getUnGzippedInputStream", \r
-function (bytes) {\r
-try {\r
-return JU.Rdr.getUnzippedInputStream (this, JU.Rdr.getBIS (bytes));\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "addZipEntry", \r
-function (zos, fileName) {\r
-(zos).putNextEntry ( new java.util.zip.ZipEntry (fileName));\r
-}, "~O,~S");\r
-Clazz.overrideMethod (c$, "closeZipEntry", \r
-function (zos) {\r
-(zos).closeEntry ();\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "getZipOutputStream", \r
-function (bos) {\r
-{\r
-return javajs.api.Interface.getInterface(\r
-"java.util.zip.ZipOutputStream").setZOS(bos);\r
-}}, "~O");\r
-Clazz.overrideMethod (c$, "getCrcValue", \r
-function (bytes) {\r
-var crc =  new java.util.zip.CRC32 ();\r
-crc.update (bytes, 0, bytes.length);\r
-return crc.getValue ();\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "readFileAsMap", \r
-function (bis, bdata, name) {\r
-var pt = (name == null ? -1 : name.indexOf ("|"));\r
-name = (pt >= 0 ? name.substring (pt + 1) : null);\r
-try {\r
-if (JU.Rdr.isPngZipStream (bis)) {\r
-var isImage = "_IMAGE_".equals (name);\r
-if (name == null || isImage) bdata.put ((isImage ? "_DATA_" : "_IMAGE_"),  new JU.BArray (JU.ZipTools.getPngImageBytes (bis)));\r
-if (!isImage) this.cacheZipContents (bis, name, bdata, true);\r
-} else if (JU.Rdr.isZipS (bis)) {\r
-this.cacheZipContents (bis, name, bdata, true);\r
-} else if (name == null) {\r
-bdata.put ("_DATA_",  new JU.BArray (JU.Rdr.getLimitedStreamBytes (bis, -1)));\r
-} else {\r
-throw  new java.io.IOException ("ZIP file " + name + " not found");\r
-}bdata.put ("$_BINARY_$", Boolean.TRUE);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-bdata.clear ();\r
-bdata.put ("_ERROR_", e.getMessage ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "java.io.BufferedInputStream,java.util.Map,~S");\r
-Clazz.overrideMethod (c$, "cacheZipContents", \r
-function (bis, fileName, cache, asByteArray) {\r
-var zis = JU.ZipTools.newZIS (bis);\r
-var ze;\r
-var listing =  new JU.SB ();\r
-var n = 0;\r
-var oneFile = (asByteArray && fileName != null);\r
-var pt = (oneFile ? fileName.indexOf ("|") : -1);\r
-var file0 = (pt >= 0 ? fileName : null);\r
-if (pt >= 0) fileName = fileName.substring (0, pt);\r
-try {\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (fileName != null) {\r
-if (oneFile) {\r
-if (!name.equalsIgnoreCase (fileName)) continue;\r
-} else {\r
-listing.append (name).appendC ('\n');\r
-}}var nBytes = ze.getSize ();\r
-var bytes = JU.Rdr.getLimitedStreamBytes (zis, nBytes);\r
-if (file0 != null) {\r
-this.readFileAsMap (JU.Rdr.getBIS (bytes), cache, file0);\r
-return null;\r
-}n += bytes.length;\r
-var o = (asByteArray ?  new JU.BArray (bytes) : bytes);\r
-cache.put ((oneFile ? "_DATA_" : (fileName == null ? "" : fileName + "|") + name), o);\r
-if (oneFile) break;\r
-}\r
-zis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-try {\r
-zis.close ();\r
-} catch (e1) {\r
-if (Clazz.exceptionOf (e1, java.io.IOException)) {\r
-} else {\r
-throw e1;\r
-}\r
-}\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (n == 0 || fileName == null) return null;\r
-System.out.println ("ZipTools cached " + n + " bytes from " + fileName);\r
-return listing.toString ();\r
-}, "java.io.BufferedInputStream,~S,java.util.Map,~B");\r
-c$.getPngImageBytes = Clazz.defineMethod (c$, "getPngImageBytes", \r
- function (bis) {\r
-try {\r
-if (JU.Rdr.isPngZipStream (bis)) {\r
-var pt_count =  Clazz.newIntArray (2, 0);\r
-JU.Rdr.getPngZipPointAndCount (bis, pt_count);\r
-if (pt_count[1] != 0) return JU.ZipTools.deActivatePngZipB (JU.Rdr.getLimitedStreamBytes (bis, pt_count[0]));\r
-}return JU.Rdr.getLimitedStreamBytes (bis, -1);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "java.io.BufferedInputStream");\r
-c$.deActivatePngZipB = Clazz.defineMethod (c$, "deActivatePngZipB", \r
- function (bytes) {\r
-if (JU.Rdr.isPngZipB (bytes)) bytes[51] = 32;\r
-return bytes;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("JU");
+Clazz.load (["javajs.api.GenericZipTools"], "JU.ZipTools", ["java.io.BufferedInputStream", "$.IOException", "java.lang.Boolean", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "$.ZipInputStream", "javajs.api.GenericZipInputStream", "$.ZInputStream", "JU.BArray", "$.Lst", "$.PT", "$.Rdr", "$.SB"], function () {
+c$ = Clazz.declareType (JU, "ZipTools", null, javajs.api.GenericZipTools);
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.overrideMethod (c$, "newZipInputStream", 
+function (is) {
+return JU.ZipTools.newZIS (is);
+}, "java.io.InputStream");
+c$.newZIS = Clazz.defineMethod (c$, "newZIS", 
+ function (is) {
+return (Clazz.instanceOf (is, javajs.api.ZInputStream) ? is : Clazz.instanceOf (is, java.io.BufferedInputStream) ?  new javajs.api.GenericZipInputStream (is) :  new javajs.api.GenericZipInputStream ( new java.io.BufferedInputStream (is)));
+}, "java.io.InputStream");
+Clazz.overrideMethod (c$, "getAllZipData", 
+function (is, subfileList, name0, binaryFileList, fileData) {
+var zis = JU.ZipTools.newZIS (is);
+var ze;
+var listing =  new JU.SB ();
+binaryFileList = "|" + binaryFileList + "|";
+var prefix = JU.PT.join (subfileList, '/', 1);
+var prefixd = null;
+if (prefix != null) {
+prefixd = prefix.substring (0, prefix.indexOf ("/") + 1);
+if (prefixd.length == 0) prefixd = null;
+}try {
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (prefix != null && prefixd != null && !(name.equals (prefix) || name.startsWith (prefixd))) continue;
+listing.append (name).appendC ('\n');
+var sname = "|" + name.substring (name.lastIndexOf ("/") + 1) + "|";
+var asBinaryString = (binaryFileList.indexOf (sname) >= 0);
+var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
+var str;
+if (asBinaryString) {
+str = this.getBinaryStringForBytes (bytes);
+name += ":asBinaryString";
+} else {
+str = JU.Rdr.fixUTF (bytes);
+}str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n";
+fileData.put (name0 + "|" + name, str);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+fileData.put ("#Directory_Listing", listing.toString ());
+}, "java.io.InputStream,~A,~S,~S,java.util.Map");
+Clazz.defineMethod (c$, "getBinaryStringForBytes", 
+ function (bytes) {
+var ret =  new JU.SB ();
+for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
+
+return ret.toString ();
+}, "~A");
+Clazz.overrideMethod (c$, "getZipFileDirectory", 
+function (jzt, bis, list, listPtr, asBufferedInputStream) {
+var ret;
+if (list == null || listPtr >= list.length) return this.getZipDirectoryAsStringAndClose (bis);
+bis = JU.Rdr.getPngZipStream (bis, true);
+var fileName = list[listPtr];
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+try {
+var isAll = (fileName.equals ("."));
+if (isAll || fileName.lastIndexOf ("/") == fileName.length - 1) {
+ret =  new JU.SB ();
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (isAll || name.startsWith (fileName)) ret.append (name).appendC ('\n');
+}
+var str = ret.toString ();
+return (asBufferedInputStream ? JU.Rdr.getBIS (str.getBytes ()) : str);
+}var pt = fileName.indexOf (":asBinaryString");
+var asBinaryString = (pt > 0);
+if (asBinaryString) fileName = fileName.substring (0, pt);
+fileName = fileName.$replace ('\\', '/');
+while ((ze = zis.getNextEntry ()) != null && !fileName.equals (ze.getName ())) {
+}
+var bytes = (ze == null ? null : JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ()));
+ze = null;
+zis.close ();
+if (bytes == null) return "";
+if (JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) return this.getZipFileDirectory (jzt, JU.Rdr.getBIS (bytes), list, ++listPtr, asBufferedInputStream);
+if (asBufferedInputStream) return JU.Rdr.getBIS (bytes);
+if (asBinaryString) {
+ret =  new JU.SB ();
+for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
+
+return ret.toString ();
+}if (JU.Rdr.isGzipB (bytes)) bytes = JU.Rdr.getLimitedStreamBytes (this.getUnGzippedInputStream (bytes), -1);
+return JU.Rdr.fixUTF (bytes);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return "";
+} else {
+throw e;
+}
+}
+}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~A,~N,~B");
+Clazz.overrideMethod (c$, "getZipFileContentsAsBytes", 
+function (bis, list, listPtr) {
+var ret =  Clazz.newByteArray (0, 0);
+var fileName = list[listPtr];
+if (fileName.lastIndexOf ("/") == fileName.length - 1) return ret;
+try {
+bis = JU.Rdr.getPngZipStream (bis, true);
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+while ((ze = zis.getNextEntry ()) != null) {
+if (!fileName.equals (ze.getName ())) continue;
+var bytes = JU.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
+return ((JU.Rdr.isZipB (bytes) || JU.Rdr.isPngZipB (bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes (JU.Rdr.getBIS (bytes), list, listPtr) : bytes);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return ret;
+}, "java.io.BufferedInputStream,~A,~N");
+Clazz.overrideMethod (c$, "getZipDirectoryAsStringAndClose", 
+function (bis) {
+var sb =  new JU.SB ();
+var s =  new Array (0);
+try {
+s = this.getZipDirectoryOrErrorAndClose (bis, null);
+bis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+for (var i = 0; i < s.length; i++) sb.append (s[i]).appendC ('\n');
+
+return sb.toString ();
+}, "java.io.BufferedInputStream");
+Clazz.overrideMethod (c$, "getZipDirectoryAndClose", 
+function (bis, manifestID) {
+var s =  new Array (0);
+try {
+s = this.getZipDirectoryOrErrorAndClose (bis, manifestID);
+bis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+return s;
+}, "java.io.BufferedInputStream,~S");
+Clazz.defineMethod (c$, "getZipDirectoryOrErrorAndClose", 
+ function (bis, manifestID) {
+bis = JU.Rdr.getPngZipStream (bis, true);
+var v =  new JU.Lst ();
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+var manifest = null;
+while ((ze = zis.getNextEntry ()) != null) {
+var fileName = ze.getName ();
+if (manifestID != null && fileName.startsWith (manifestID)) manifest = JU.ZipTools.getStreamAsString (zis);
+ else if (!fileName.startsWith ("__MACOS")) v.addLast (fileName);
+}
+zis.close ();
+if (manifestID != null) v.add (0, manifest == null ? "" : manifest + "\n############\n");
+return v.toArray ( new Array (v.size ()));
+}, "java.io.BufferedInputStream,~S");
+c$.getStreamAsString = Clazz.defineMethod (c$, "getStreamAsString", 
+function (is) {
+return JU.Rdr.fixUTF (JU.Rdr.getLimitedStreamBytes (is, -1));
+}, "java.io.InputStream");
+Clazz.overrideMethod (c$, "newGZIPInputStream", 
+function (is) {
+return  new java.io.BufferedInputStream ( new java.util.zip.GZIPInputStream (is, 512));
+}, "java.io.InputStream");
+Clazz.overrideMethod (c$, "getUnGzippedInputStream", 
+function (bytes) {
+try {
+return JU.Rdr.getUnzippedInputStream (this, JU.Rdr.getBIS (bytes));
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return null;
+} else {
+throw e;
+}
+}
+}, "~A");
+Clazz.overrideMethod (c$, "addZipEntry", 
+function (zos, fileName) {
+(zos).putNextEntry ( new java.util.zip.ZipEntry (fileName));
+}, "~O,~S");
+Clazz.overrideMethod (c$, "closeZipEntry", 
+function (zos) {
+(zos).closeEntry ();
+}, "~O");
+Clazz.overrideMethod (c$, "getZipOutputStream", 
+function (bos) {
+{
+return javajs.api.Interface.getInterface(
+"java.util.zip.ZipOutputStream").setZOS(bos);
+}}, "~O");
+Clazz.overrideMethod (c$, "getCrcValue", 
+function (bytes) {
+var crc =  new java.util.zip.CRC32 ();
+crc.update (bytes, 0, bytes.length);
+return crc.getValue ();
+}, "~A");
+Clazz.overrideMethod (c$, "readFileAsMap", 
+function (bis, bdata, name) {
+var pt = (name == null ? -1 : name.indexOf ("|"));
+name = (pt >= 0 ? name.substring (pt + 1) : null);
+try {
+if (JU.Rdr.isPngZipStream (bis)) {
+var isImage = "_IMAGE_".equals (name);
+if (name == null || isImage) bdata.put ((isImage ? "_DATA_" : "_IMAGE_"),  new JU.BArray (JU.ZipTools.getPngImageBytes (bis)));
+if (!isImage) this.cacheZipContents (bis, name, bdata, true);
+} else if (JU.Rdr.isZipS (bis)) {
+this.cacheZipContents (bis, name, bdata, true);
+} else if (name == null) {
+bdata.put ("_DATA_",  new JU.BArray (JU.Rdr.getLimitedStreamBytes (bis, -1)));
+} else {
+throw  new java.io.IOException ("ZIP file " + name + " not found");
+}bdata.put ("$_BINARY_$", Boolean.TRUE);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+bdata.clear ();
+bdata.put ("_ERROR_", e.getMessage ());
+} else {
+throw e;
+}
+}
+}, "java.io.BufferedInputStream,java.util.Map,~S");
+Clazz.overrideMethod (c$, "cacheZipContents", 
+function (bis, fileName, cache, asByteArray) {
+var zis = JU.ZipTools.newZIS (bis);
+var ze;
+var listing =  new JU.SB ();
+var n = 0;
+var oneFile = (asByteArray && fileName != null);
+var pt = (oneFile ? fileName.indexOf ("|") : -1);
+var file0 = (pt >= 0 ? fileName : null);
+if (pt >= 0) fileName = fileName.substring (0, pt);
+try {
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (fileName != null) {
+if (oneFile) {
+if (!name.equalsIgnoreCase (fileName)) continue;
+} else {
+listing.append (name).appendC ('\n');
+}}var nBytes = ze.getSize ();
+var bytes = JU.Rdr.getLimitedStreamBytes (zis, nBytes);
+if (file0 != null) {
+this.readFileAsMap (JU.Rdr.getBIS (bytes), cache, file0);
+return null;
+}n += bytes.length;
+var o = (asByteArray ?  new JU.BArray (bytes) : bytes);
+cache.put ((oneFile ? "_DATA_" : (fileName == null ? "" : fileName + "|") + name), o);
+if (oneFile) break;
+}
+zis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+try {
+zis.close ();
+} catch (e1) {
+if (Clazz.exceptionOf (e1, java.io.IOException)) {
+} else {
+throw e1;
+}
+}
+return null;
+} else {
+throw e;
+}
+}
+if (n == 0 || fileName == null) return null;
+System.out.println ("ZipTools cached " + n + " bytes from " + fileName);
+return listing.toString ();
+}, "java.io.BufferedInputStream,~S,java.util.Map,~B");
+c$.getPngImageBytes = Clazz.defineMethod (c$, "getPngImageBytes", 
+ function (bis) {
+try {
+if (JU.Rdr.isPngZipStream (bis)) {
+var pt_count =  Clazz.newIntArray (2, 0);
+JU.Rdr.getPngZipPointAndCount (bis, pt_count);
+if (pt_count[1] != 0) return JU.ZipTools.deActivatePngZipB (JU.Rdr.getLimitedStreamBytes (bis, pt_count[0]));
+}return JU.Rdr.getLimitedStreamBytes (bis, -1);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+return null;
+} else {
+throw e;
+}
+}
+}, "java.io.BufferedInputStream");
+c$.deActivatePngZipB = Clazz.defineMethod (c$, "deActivatePngZipB", 
+ function (bytes) {
+if (JU.Rdr.isPngZipB (bytes)) bytes[51] = 32;
+return bytes;
+}, "~A");
+});