content: // Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
  // Jad home page: http://www.kpdus.com/jad.html
  // Decompiler options: packimports(3) 
  
  final class Censor {
  
  	public static void loadConfig(StreamLoader streamLoader) {
  		Stream stream = new Stream(streamLoader.getDataForName("fragmentsenc.txt"));
  		Stream stream_1 = new Stream(streamLoader.getDataForName("badenc.txt"));
  		Stream stream_2 = new Stream(streamLoader.getDataForName("domainenc.txt"));
  		Stream stream_3 = new Stream(streamLoader.getDataForName("tldlist.txt"));
  		readValues(stream, stream_1, stream_2, stream_3);
  	}
  
  	private static void readValues(Stream stream, Stream stream_1, Stream stream_2, Stream stream_3) {
  		readBadEnc(stream_1);
  		readDomainEnc(stream_2);
  		readFragmentsEnc(stream);
  		readTldList(stream_3);
  	}
  
  	private static void readTldList(Stream stream) {
  		int i = stream.readDWord();
  		aCharArrayArray624 = new char[i][];
  		anIntArray625 = new int[i];
  		for (int j = 0; j < i; j++) {
  			anIntArray625[j] = stream.readUnsignedByte();
  			char ac[] = new char[stream.readUnsignedByte()];
  			for (int k = 0; k < ac.length; k++) {
  				ac[k] = (char) stream.readUnsignedByte();
  			}
  
  			aCharArrayArray624[j] = ac;
  		}
  
  	}
  
  	private static void readBadEnc(Stream stream) {
  		int j = stream.readDWord();
  		aCharArrayArray621 = new char[j][];
  		aByteArrayArrayArray622 = new byte[j][][];
  		method493(stream, aCharArrayArray621, aByteArrayArrayArray622);
  	}
  
  	private static void readDomainEnc(Stream stream) {
  		int i = stream.readDWord();
  		aCharArrayArray623 = new char[i][];
  		method494(aCharArrayArray623, stream);
  	}
  
  	private static void readFragmentsEnc(Stream stream) {
  		anIntArray620 = new int[stream.readDWord()];
  		for (int i = 0; i < anIntArray620.length; i++) {
  			anIntArray620[i] = stream.readUnsignedWord();
  		}
  	}
  
  	private static void method493(Stream stream, char ac[][], byte abyte0[][][]) {
  		for (int j = 0; j < ac.length; j++) {
  			char ac1[] = new char[stream.readUnsignedByte()];
  			for (int k = 0; k < ac1.length; k++) {
  				ac1[k] = (char) stream.readUnsignedByte();
  			}
  
  			ac[j] = ac1;
  			byte abyte1[][] = new byte[stream.readUnsignedByte()][2];
  			for (int l = 0; l < abyte1.length; l++) {
  				abyte1[l][0] = (byte) stream.readUnsignedByte();
  				abyte1[l][1] = (byte) stream.readUnsignedByte();
  			}
  
  			if (abyte1.length > 0) {
  				abyte0[j] = abyte1;
  			}
  		}
  
  	}
  
  	private static void method494(char ac[][], Stream stream) {
  		for (int j = 0; j < ac.length; j++) {
  			char ac1[] = new char[stream.readUnsignedByte()];
  			for (int k = 0; k < ac1.length; k++) {
  				ac1[k] = (char) stream.readUnsignedByte();
  			}
  
  			ac[j] = ac1;
  		}
  
  	}
  
  	private static void method495(char ac[]) {
  		int i = 0;
  		for (int j = 0; j < ac.length; j++) {
  			if (method496(ac[j])) {
  				ac[i] = ac[j];
  			} else {
  				ac[i] = ' ';
  			}
  			if (i == 0 || ac[i] != ' ' || ac[i - 1] != ' ') {
  				i++;
  			}
  		}
  		for (int k = i; k < ac.length; k++) {
  			ac[k] = ' ';
  		}
  
  	}
  
  	private static boolean method496(char c) {
  		return c >= ' ' && c <= '\177' || c == ' ' || c == '\n' || c == '\t' || c == '\243' || c == '\u20AC';
  	}
  
  	public static String doCensor(String s) {
  		System.currentTimeMillis();
  		char ac[] = s.toCharArray();
  		method495(ac);
  		String s1 = new String(ac).trim();
  		ac = s1.toLowerCase().toCharArray();
  		String s2 = s1.toLowerCase();
  		method505(ac);
  		method500(ac);
  		method501(ac);
  		method514(ac);
  		for (String exception : exceptions) {
  			for (int k = -1; (k = s2.indexOf(exception, k + 1)) != -1;) {
  				char ac1[] = exception.toCharArray();
  				System.arraycopy(ac1, 0, ac, k, ac1.length);
  
  			}
  
  		}
  		method498(s1.toCharArray(), ac);
  		method499(ac);
  		System.currentTimeMillis();
  		return s; // xxx chat filter, return s to avoid new String(ac).trim()
  	}
  
  	private static void method498(char ac[], char ac1[]) {
  		for (int j = 0; j < ac.length; j++) {
  			if (ac1[j] != '*' && isUpperCaseLetter(ac[j])) {
  				ac1[j] = ac[j];
  			}
  		}
  	}
  
  	private static void method499(char ac[]) {
  		boolean flag = true;
  		for (int j = 0; j < ac.length; j++) {
  			char c = ac[j];
  			if (isLetter(c)) {
  				if (flag) {
  					if (isLowerCaseLetter(c)) {
  						flag = false;
  					}
  				} else if (isUpperCaseLetter(c)) {
  					ac[j] = (char) (c + 97 - 65);
  				}
  			} else {
  				flag = true;
  			}
  		}
  	}
  
  	private static void method500(char ac[]) {
  		for (int i = 0; i < 2; i++) {
  			for (int j = aCharArrayArray621.length - 1; j >= 0; j--) {
  				method509(aByteArrayArrayArray622[j], ac, aCharArrayArray621[j]);
  			}
  
  		}
  	}
  
  	private static void method501(char ac[]) {
  		char ac1[] = ac.clone();
  		char ac2[] = {'(', 'a', ')'};
  		method509(null, ac1, ac2);
  		char ac3[] = ac.clone();
  		char ac4[] = {'d', 'o', 't'};
  		method509(null, ac3, ac4);
  		for (int i = aCharArrayArray623.length - 1; i >= 0; i--) {
  			method502(ac, aCharArrayArray623[i], ac3, ac1);
  		}
  	}
  
  	private static void method502(char ac[], char ac1[], char ac2[], char ac3[]) {
  		if (ac1.length > ac.length) {
  			return;
  		}
  		int j;
  		for (int k = 0; k <= ac.length - ac1.length; k += j) {
  			int l = k;
  			int i1 = 0;
  			j = 1;
  			while (l < ac.length) {
  				int j1;
  				char c = ac[l];
  				char c1 = '\0';
  				if (l + 1 < ac.length) {
  					c1 = ac[l + 1];
  				}
  				if (i1 < ac1.length && (j1 = method511(c, ac1[i1], c1)) > 0) {
  					l += j1;
  					i1++;
  					continue;
  				}
  				if (i1 == 0) {
  					break;
  				}
  				if ((j1 = method511(c, ac1[i1 - 1], c1)) > 0) {
  					l += j1;
  					if (i1 == 1) {
  						j++;
  					}
  					continue;
  				}
  				if (i1 >= ac1.length || !method517(c)) {
  					break;
  				}
  				l++;
  			}
  			if (i1 >= ac1.length) {
  				boolean flag1 = false;
  				int k1 = method503(ac, ac3, k);
  				int l1 = method504(ac2, l - 1, ac);
  				if (k1 > 2 || l1 > 2) {
  					flag1 = true;
  				}
  				if (flag1) {
  					for (int i2 = k; i2 < l; i2++) {
  						ac[i2] = '*';
  					}
  
  				}
  			}
  		}
  
  	}
  
  	private static int method503(char ac[], char ac1[], int j) {
  		if (j == 0) {
  			return 2;
  		}
  		for (int k = j - 1; k >= 0; k--) {
  			if (!method517(ac[k])) {
  				break;
  			}
  			if (ac[k] == '@') {
  				return 3;
  			}
  		}
  
  		int l = 0;
  		for (int i1 = j - 1; i1 >= 0; i1--) {
  			if (!method517(ac1[i1])) {
  				break;
  			}
  			if (ac1[i1] == '*') {
  				l++;
  			}
  		}
  
  		if (l >= 3) {
  			return 4;
  		}
  		return !method517(ac[j - 1]) ? 0 : 1;
  	}
  
  	private static int method504(char ac[], int i, char ac1[]) {
  		if (i + 1 == ac1.length) {
  			return 2;
  		}
  		for (int j = i + 1; j < ac1.length; j++) {
  			if (!method517(ac1[j])) {
  				break;
  			}
  			if (ac1[j] == '.' || ac1[j] == ',') {
  				return 3;
  			}
  		}
  		int k = 0;
  		for (int l = i + 1; l < ac1.length; l++) {
  			if (!method517(ac[l])) {
  				break;
  			}
  			if (ac[l] == '*') {
  				k++;
  			}
  		}
  
  		if (k >= 3) {
  			return 4;
  		}
  		return !method517(ac1[i + 1]) ? 0 : 1;
  	}
  
  	private static void method505(char ac[]) {
  		char ac1[] = ac.clone();
  		char ac2[] = {'d', 'o', 't'};
  		method509(null, ac1, ac2);
  		char ac3[] = ac.clone();
  		char ac4[] = {'s', 'l', 'a', 's', 'h'};
  		method509(null, ac3, ac4);
  		for (int i = 0; i < aCharArrayArray624.length; i++) {
  			method506(ac3, aCharArrayArray624[i], anIntArray625[i], ac1, ac);
  		}
  
  	}
  
  	private static void method506(char ac[], char ac1[], int i, char ac2[], char ac3[]) {
  		if (ac1.length > ac3.length) {
  			return;
  		}
  		int j;
  		for (int k = 0; k <= ac3.length - ac1.length; k += j) {
  			int l = k;
  			int i1 = 0;
  			j = 1;
  			while (l < ac3.length) {
  				int j1;
  				char c = ac3[l];
  				char c1 = '\0';
  				if (l + 1 < ac3.length) {
  					c1 = ac3[l + 1];
  				}
  				if (i1 < ac1.length && (j1 = method511(c, ac1[i1], c1)) > 0) {
  					l += j1;
  					i1++;
  					continue;
  				}
  				if (i1 == 0) {
  					break;
  				}
  				if ((j1 = method511(c, ac1[i1 - 1], c1)) > 0) {
  					l += j1;
  					if (i1 == 1) {
  						j++;
  					}
  					continue;
  				}
  				if (i1 >= ac1.length || !method517(c)) {
  					break;
  				}
  				l++;
  			}
  			if (i1 >= ac1.length) {
  				boolean flag1 = false;
  				int k1 = method507(ac3, k, ac2);
  				int l1 = method508(ac3, ac, l - 1);
  				if (i == 1 && k1 > 0 && l1 > 0) {
  					flag1 = true;
  				}
  				if (i == 2 && (k1 > 2 && l1 > 0 || k1 > 0 && l1 > 2)) {
  					flag1 = true;
  				}
  				if (i == 3 && k1 > 0 && l1 > 2) {
  					flag1 = true;
  				}
  				if (flag1) {
  					int i2 = k;
  					int j2 = l - 1;
  					if (k1 > 2) {
  						if (k1 == 4) {
  							boolean flag2 = false;
  							for (int l2 = i2 - 1; l2 >= 0; l2--) {
  								if (flag2) {
  									if (ac2[l2] != '*') {
  										break;
  									}
  									i2 = l2;
  								} else if (ac2[l2] == '*') {
  									i2 = l2;
  									flag2 = true;
  								}
  							}
  
  						}
  						boolean flag3 = false;
  						for (int i3 = i2 - 1; i3 >= 0; i3--) {
  							if (flag3) {
  								if (method517(ac3[i3])) {
  									break;
  								}
  								i2 = i3;
  							} else if (!method517(ac3[i3])) {
  								flag3 = true;
  								i2 = i3;
  							}
  						}
  
  					}
  					if (l1 > 2) {
  						if (l1 == 4) {
  							boolean flag4 = false;
  							for (int j3 = j2 + 1; j3 < ac3.length; j3++) {
  								if (flag4) {
  									if (ac[j3] != '*') {
  										break;
  									}
  									j2 = j3;
  								} else if (ac[j3] == '*') {
  									j2 = j3;
  									flag4 = true;
  								}
  							}
  
  						}
  						boolean flag5 = false;
  						for (int k3 = j2 + 1; k3 < ac3.length; k3++) {
  							if (flag5) {
  								if (method517(ac3[k3])) {
  									break;
  								}
  								j2 = k3;
  							} else if (!method517(ac3[k3])) {
  								flag5 = true;
  								j2 = k3;
  							}
  						}
  
  					}
  					for (int k2 = i2; k2 <= j2; k2++) {
  						ac3[k2] = '*';
  					}
  
  				}
  			}
  		}
  	}
  
  	private static int method507(char ac[], int j, char ac1[]) {
  		if (j == 0) {
  			return 2;
  		}
  		for (int k = j - 1; k >= 0; k--) {
  			if (!method517(ac[k])) {
  				break;
  			}
  			if (ac[k] == ',' || ac[k] == '.') {
  				return 3;
  			}
  		}
  
  		int l = 0;
  		for (int i1 = j - 1; i1 >= 0; i1--) {
  			if (!method517(ac1[i1])) {
  				break;
  			}
  			if (ac1[i1] == '*') {
  				l++;
  			}
  		}
  		if (l >= 3) {
  			return 4;
  		}
  		return !method517(ac[j - 1]) ? 0 : 1;
  	}
  
  	private static int method508(char ac[], char ac1[], int i) {
  		if (i + 1 == ac.length) {
  			return 2;
  		}
  		for (int j = i + 1; j < ac.length; j++) {
  			if (!method517(ac[j])) {
  				break;
  			}
  			if (ac[j] == '\\' || ac[j] == '/') {
  				return 3;
  			}
  		}
  
  		int k = 0;
  		for (int l = i + 1; l < ac.length; l++) {
  			if (!method517(ac1[l])) {
  				break;
  			}
  			if (ac1[l] == '*') {
  				k++;
  			}
  		}
  
  		if (k >= 5) {
  			return 4;
  		}
  		return !method517(ac[i + 1]) ? 0 : 1;
  	}
  
  	private static void method509(byte abyte0[][], char ac[], char ac1[]) {
  		if (ac1.length > ac.length) {
  			return;
  		}
  		int j;
  		for (int k = 0; k <= ac.length - ac1.length; k += j) {
  			int l = k;
  			int i1 = 0;
  			int j1 = 0;
  			j = 1;
  			boolean flag1 = false;
  			boolean flag2 = false;
  			boolean flag3 = false;
  			while (l < ac.length && (!flag2 || !flag3)) {
  				int k1;
  				char c = ac[l];
  				char c2 = '\0';
  				if (l + 1 < ac.length) {
  					c2 = ac[l + 1];
  				}
  				if (i1 < ac1.length && (k1 = method512(c2, c, ac1[i1])) > 0) {
  					if (k1 == 1 && isDigit(c)) {
  						flag2 = true;
  					}
  					if (k1 == 2 && (isDigit(c) || isDigit(c2))) {
  						flag2 = true;
  					}
  					l += k1;
  					i1++;
  					continue;
  				}
  				if (i1 == 0) {
  					break;
  				}
  				if ((k1 = method512(c2, c, ac1[i1 - 1])) > 0) {
  					l += k1;
  					if (i1 == 1) {
  						j++;
  					}
  					continue;
  				}
  				if (i1 >= ac1.length || !method518(c)) {
  					break;
  				}
  				if (method517(c) && c != '\'') {
  					flag1 = true;
  				}
  				if (isDigit(c)) {
  					flag3 = true;
  				}
  				l++;
  				if (++j1 * 100 / (l - k) > 90) {
  					break;
  				}
  			}
  			if (i1 >= ac1.length && (!flag2 || !flag3)) {
  				boolean flag4 = true;
  				if (!flag1) {
  					char c1 = ' ';
  					if (k - 1 >= 0) {
  						c1 = ac[k - 1];
  					}
  					char c3 = ' ';
  					if (l < ac.length) {
  						c3 = ac[l];
  					}
  					byte byte0 = method513(c1);
  					byte byte1 = method513(c3);
  					if (abyte0 != null && method510(byte0, abyte0, byte1)) {
  						flag4 = false;
  					}
  				} else {
  					boolean flag5 = false;
  					boolean flag6 = false;
  					if (k - 1 < 0 || method517(ac[k - 1]) && ac[k - 1] != '\'') {
  						flag5 = true;
  					}
  					if (l >= ac.length || method517(ac[l]) && ac[l] != '\'') {
  						flag6 = true;
  					}
  					if (!flag5 || !flag6) {
  						boolean flag7 = false;
  						int k2 = k - 2;
  						if (flag5) {
  							k2 = k;
  						}
  						for (; !flag7 && k2 < l; k2++) {
  							if (k2 >= 0 && (!method517(ac[k2]) || ac[k2] == '\'')) {
  								char ac2[] = new char[3];
  								int j3;
  								for (j3 = 0; j3 < 3; j3++) {
  									if (k2 + j3 >= ac.length || method517(ac[k2 + j3]) && ac[k2 + j3] != '\'') {
  										break;
  									}
  									ac2[j3] = ac[k2 + j3];
  								}
  
  								boolean flag8 = true;
  								if (j3 == 0) {
  									flag8 = false;
  								}
  								if (j3 < 3 && k2 - 1 >= 0 && (!method517(ac[k2 - 1]) || ac[k2 - 1] == '\'')) {
  									flag8 = false;
  								}
  								if (flag8 && !method523(ac2)) {
  									flag7 = true;
  								}
  							}
  						}
  
  						if (!flag7) {
  							flag4 = false;
  						}
  					}
  				}
  				if (flag4) {
  					int l1 = 0;
  					int i2 = 0;
  					int j2 = -1;
  					for (int l2 = k; l2 < l; l2++) {
  						if (isDigit(ac[l2])) {
  							l1++;
  						} else if (isLetter(ac[l2])) {
  							i2++;
  							j2 = l2;
  						}
  					}
  
  					if (j2 > -1) {
  						l1 -= l - 1 - j2;
  					}
  					if (l1 <= i2) {
  						for (int i3 = k; i3 < l; i3++) {
  							ac[i3] = '*';
  						}
  
  					} else {
  						j = 1;
  					}
  				}
  			}
  		}
  
  	}
  
  	private static boolean method510(byte byte0, byte abyte0[][], byte byte2) {
  		int i = 0;
  		if (abyte0[i][0] == byte0 && abyte0[i][1] == byte2) {
  			return true;
  		}
  		int j = abyte0.length - 1;
  		if (abyte0[j][0] == byte0 && abyte0[j][1] == byte2) {
  			return true;
  		}
  		do {
  			int k = (i + j) / 2;
  			if (abyte0[k][0] == byte0 && abyte0[k][1] == byte2) {
  				return true;
  			}
  			if (byte0 < abyte0[k][0] || byte0 == abyte0[k][0] && byte2 < abyte0[k][1]) {
  				j = k;
  			} else {
  				i = k;
  			}
  		} while (i != j && i + 1 != j);
  		return false;
  	}
  
  	private static int method511(char c, char c1, char c2) {
  		if (c1 == c) {
  			return 1;
  		}
  		if (c1 == 'o' && c == '0') {
  			return 1;
  		}
  		if (c1 == 'o' && c == '(' && c2 == ')') {
  			return 2;
  		}
  		if (c1 == 'c' && (c == '(' || c == '<' || c == '[')) {
  			return 1;
  		}
  		if (c1 == 'e' && c == '\u20AC') {
  			return 1;
  		}
  		if (c1 == 's' && c == '$') {
  			return 1;
  		}
  		return c1 != 'l' || c != 'i' ? 0 : 1;
  	}
  
  	private static int method512(char c, char c1, char c2) {
  		if (c2 == c1) {
  			return 1;
  		}
  		if (c2 >= 'a' && c2 <= 'm') {
  			if (c2 == 'a') {
  				if (c1 == '4' || c1 == '@' || c1 == '^') {
  					return 1;
  				}
  				return c1 != '/' || c != '\\' ? 0 : 2;
  			}
  			if (c2 == 'b') {
  				if (c1 == '6' || c1 == '8') {
  					return 1;
  				}
  				return (c1 != '1' || c != '3') && (c1 != 'i' || c != '3') ? 0 : 2;
  			}
  			if (c2 == 'c') {
  				return c1 != '(' && c1 != '<' && c1 != '{' && c1 != '[' ? 0 : 1;
  			}
  			if (c2 == 'd') {
  				return (c1 != '[' || c != ')') && (c1 != 'i' || c != ')') ? 0 : 2;
  			}
  			if (c2 == 'e') {
  				return c1 != '3' && c1 != '\u20AC' ? 0 : 1;
  			}
  			if (c2 == 'f') {
  				if (c1 == 'p' && c == 'h') {
  					return 2;
  				}
  				return c1 != '\243' ? 0 : 1;
  			}
  			if (c2 == 'g') {
  				return c1 != '9' && c1 != '6' && c1 != 'q' ? 0 : 1;
  			}
  			if (c2 == 'h') {
  				return c1 != '#' ? 0 : 1;
  			}
  			if (c2 == 'i') {
  				return c1 != 'y' && c1 != 'l' && c1 != 'j' && c1 != '1' && c1 != '!' && c1 != ':' && c1 != ';' && c1 != '|' ? 0 : 1;
  			}
  			if (c2 == 'j') {
  				return 0;
  			}
  			if (c2 == 'k') {
  				return 0;
  			}
  			if (c2 == 'l') {
  				return c1 != '1' && c1 != '|' && c1 != 'i' ? 0 : 1;
  			}
  			if (c2 == 'm') {
  				return 0;
  			}
  		}
  		if (c2 >= 'n' && c2 <= 'z') {
  			if (c2 == 'n') {
  				return 0;
  			}
  			if (c2 == 'o') {
  				if (c1 == '0' || c1 == '*') {
  					return 1;
  				}
  				return (c1 != '(' || c != ')') && (c1 != '[' || c != ']') && (c1 != '{' || c != '}') && (c1 != '<' || c != '>') ? 0 : 2;
  			}
  			if (c2 == 'p') {
  				return 0;
  			}
  			if (c2 == 'q') {
  				return 0;
  			}
  			if (c2 == 'r') {
  				return 0;
  			}
  			if (c2 == 's') {
  				return c1 != '5' && c1 != 'z' && c1 != '$' && c1 != '2' ? 0 : 1;
  			}
  			if (c2 == 't') {
  				return c1 != '7' && c1 != '+' ? 0 : 1;
  			}
  			if (c2 == 'u') {
  				if (c1 == 'v') {
  					return 1;
  				}
  				return (c1 != '\\' || c != '/') && (c1 != '\\' || c != '|') && (c1 != '|' || c != '/') ? 0 : 2;
  			}
  			if (c2 == 'v') {
  				return (c1 != '\\' || c != '/') && (c1 != '\\' || c != '|') && (c1 != '|' || c != '/') ? 0 : 2;
  			}
  			if (c2 == 'w') {
  				return c1 != 'v' || c != 'v' ? 0 : 2;
  			}
  			if (c2 == 'x') {
  				return (c1 != ')' || c != '(') && (c1 != '}' || c != '{') && (c1 != ']' || c != '[') && (c1 != '>' || c != '<') ? 0 : 2;
  			}
  			if (c2 == 'y') {
  				return 0;
  			}
  			if (c2 == 'z') {
  				return 0;
  			}
  		}
  		if (c2 >= '0' && c2 <= '9') {
  			if (c2 == '0') {
  				if (c1 == 'o' || c1 == 'O') {
  					return 1;
  				}
  				return (c1 != '(' || c != ')') && (c1 != '{' || c != '}') && (c1 != '[' || c != ']') ? 0 : 2;
  			}
  			if (c2 == '1') {
  				return c1 != 'l' ? 0 : 1;
  			} else {
  				return 0;
  			}
  		}
  		if (c2 == ',') {
  			return c1 != '.' ? 0 : 1;
  		}
  		if (c2 == '.') {
  			return c1 != ',' ? 0 : 1;
  		}
  		if (c2 == '!') {
  			return c1 != 'i' ? 0 : 1;
  		} else {
  			return 0;
  		}
  	}
  
  	private static byte method513(char c) {
  		if (c >= 'a' && c <= 'z') {
  			return (byte) (c - 97 + 1);
  		}
  		if (c == '\'') {
  			return 28;
  		}
  		if (c >= '0' && c <= '9') {
  			return (byte) (c - 48 + 29);
  		} else {
  			return 27;
  		}
  	}
  
  	private static void method514(char ac[]) {
  		int j;
  		int k = 0;
  		int l = 0;
  		int i1 = 0;
  		while ((j = method515(ac, k)) != -1) {
  			boolean flag = false;
  			for (int j1 = k; j1 >= 0 && j1 < j && !flag; j1++) {
  				if (!method517(ac[j1]) && !method518(ac[j1])) {
  					flag = true;
  				}
  			}
  
  			if (flag) {
  				l = 0;
  			}
  			if (l == 0) {
  				i1 = j;
  			}
  			k = method516(ac, j);
  			int k1 = 0;
  			for (int l1 = j; l1 < k; l1++) {
  				k1 = k1 * 10 + ac[l1] - 48;
  			}
  
  			if (k1 > 255 || k - j > 8) {
  				l = 0;
  			} else {
  				l++;
  			}
  			if (l == 4) {
  				for (int i2 = i1; i2 < k; i2++) {
  					ac[i2] = '*';
  				}
  
  				l = 0;
  			}
  		}
  	}
  
  	private static int method515(char ac[], int i) {
  		for (int k = i; k < ac.length && k >= 0; k++) {
  			if (ac[k] >= '0' && ac[k] <= '9') {
  				return k;
  			}
  		}
  
  		return -1;
  	}
  
  	private static int method516(char ac[], int j) {
  		for (int k = j; k < ac.length && k >= 0; k++) {
  			if (ac[k] < '0' || ac[k] > '9') {
  				return k;
  			}
  		}
  		return ac.length;
  	}
  
  	private static boolean method517(char c) {
  		return !isLetter(c) && !isDigit(c);
  	}
  
  	private static boolean method518(char c) {
  		return c < 'a' || c > 'z' || c == 'v' || c == 'x' || c == 'j' || c == 'q' || c == 'z';
  	}
  
  	private static boolean isLetter(char c) {
  		return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
  	}
  
  	private static boolean isDigit(char c) {
  		return c >= '0' && c <= '9';
  	}
  
  	private static boolean isLowerCaseLetter(char c) {
  		return c >= 'a' && c <= 'z';
  	}
  
  	private static boolean isUpperCaseLetter(char c) {
  		return c >= 'A' && c <= 'Z';
  	}
  
  	private static boolean method523(char ac[]) {
  		boolean flag = true;
  		for (int i = 0; i < ac.length; i++) {
  			if (!isDigit(ac[i]) && ac[i] != 0) {
  				flag = false;
  			}
  		}
  
  		if (flag) {
  			return true;
  		}
  		int j = method524(ac);
  		int k = 0;
  		int l = anIntArray620.length - 1;
  		if (j == anIntArray620[k] || j == anIntArray620[l]) {
  			return true;
  		}
  		do {
  			int i1 = (k + l) / 2;
  			if (j == anIntArray620[i1]) {
  				return true;
  			}
  			if (j < anIntArray620[i1]) {
  				l = i1;
  			} else {
  				k = i1;
  			}
  		} while (k != l && k + 1 != l);
  		return false;
  	}
  
  	private static int method524(char ac[]) {
  		if (ac.length > 6) {
  			return 0;
  		}
  		int k = 0;
  		for (int l = 0; l < ac.length; l++) {
  			char c = ac[ac.length - l - 1];
  			if (c >= 'a' && c <= 'z') {
  				k = k * 38 + c - 97 + 1;
  			} else if (c == '\'') {
  				k = k * 38 + 27;
  			} else if (c >= '0' && c <= '9') {
  				k = k * 38 + c - 48 + 28;
  			} else if (c != 0) {
  				return 0;
  			}
  		}
  
  		return k;
  	}
  
  	private static int[] anIntArray620;
  	private static char[][] aCharArrayArray621;
  	private static byte[][][] aByteArrayArrayArray622;
  	private static char[][] aCharArrayArray623;
  	private static char[][] aCharArrayArray624;
  	private static int[] anIntArray625;
  	private static final String[] exceptions = {"cook", "cook's", "cooks", "seeks", "sheet", "woop", "woops", "faq", "noob", "noobs"};
  
  }
  