DannyB commited on
Commit ·
f2f541d
1
Parent(s): 8bdd9a5
Upgrade pipeline to include cross-language decoders, specifications, dependencies, and database offline in LLM capsule transmission via 67 packets
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- Language-U-Browser.LLM +0 -0
- VerifyLanguageU.java +347 -342
- frameworks_metadata.json +3 -3
- packets/packet_00.bin +1 -1
- packets/packet_01.bin +1 -1
- packets/packet_02.bin +3 -0
- packets/packet_03.bin +3 -0
- packets/packet_04.bin +3 -0
- packets/packet_05.bin +3 -0
- packets/packet_06.bin +3 -0
- packets/packet_07.bin +3 -0
- packets/packet_08.bin +3 -0
- packets/packet_09.bin +3 -0
- packets/packet_10.bin +3 -0
- packets/packet_11.bin +3 -0
- packets/packet_12.bin +3 -0
- packets/packet_13.bin +3 -0
- packets/packet_14.bin +3 -0
- packets/packet_15.bin +3 -0
- packets/packet_16.bin +3 -0
- packets/packet_17.bin +3 -0
- packets/packet_18.bin +3 -0
- packets/packet_19.bin +3 -0
- packets/packet_20.bin +3 -0
- packets/packet_21.bin +3 -0
- packets/packet_22.bin +3 -0
- packets/packet_23.bin +3 -0
- packets/packet_24.bin +3 -0
- packets/packet_25.bin +3 -0
- packets/packet_26.bin +3 -0
- packets/packet_27.bin +3 -0
- packets/packet_28.bin +3 -0
- packets/packet_29.bin +3 -0
- packets/packet_30.bin +3 -0
- packets/packet_31.bin +3 -0
- packets/packet_32.bin +3 -0
- packets/packet_33.bin +3 -0
- packets/packet_34.bin +3 -0
- packets/packet_35.bin +3 -0
- packets/packet_36.bin +3 -0
- packets/packet_37.bin +3 -0
- packets/packet_38.bin +3 -0
- packets/packet_39.bin +3 -0
- packets/packet_40.bin +3 -0
- packets/packet_41.bin +3 -0
- packets/packet_42.bin +3 -0
- packets/packet_43.bin +3 -0
- packets/packet_44.bin +3 -0
- packets/packet_45.bin +3 -0
- packets/packet_46.bin +3 -0
Language-U-Browser.LLM
CHANGED
|
Binary files a/Language-U-Browser.LLM and b/Language-U-Browser.LLM differ
|
|
|
VerifyLanguageU.java
CHANGED
|
@@ -1,342 +1,347 @@
|
|
| 1 |
-
// ZYMATICA | Language-U Cross-Language Verification Engine (Java)
|
| 2 |
-
// Watermark: ip zymatica.space | astronautshe.com
|
| 3 |
-
|
| 4 |
-
import java.io.File;
|
| 5 |
-
import java.io.FileInputStream;
|
| 6 |
-
import java.io.IOException;
|
| 7 |
-
import java.util.ArrayList;
|
| 8 |
-
import java.util.List;
|
| 9 |
-
|
| 10 |
-
public class VerifyLanguageU {
|
| 11 |
-
|
| 12 |
-
static class SparseTransition {
|
| 13 |
-
long key;
|
| 14 |
-
int sym;
|
| 15 |
-
long count;
|
| 16 |
-
SparseTransition(long key, int sym, long count) {
|
| 17 |
-
this.key = key;
|
| 18 |
-
this.sym = sym;
|
| 19 |
-
this.count = count;
|
| 20 |
-
}
|
| 21 |
-
}
|
| 22 |
-
|
| 23 |
-
static class RadicalPredictor {
|
| 24 |
-
long alpha;
|
| 25 |
-
long weight;
|
| 26 |
-
List<SparseTransition> transRC = new ArrayList<>();
|
| 27 |
-
List<SparseTransition> transRF = new ArrayList<>();
|
| 28 |
-
List<SparseTransition> transRA = new ArrayList<>();
|
| 29 |
-
int prevRC = 0;
|
| 30 |
-
int prevRF = 0;
|
| 31 |
-
int prevRA = 0;
|
| 32 |
-
|
| 33 |
-
RadicalPredictor(long alpha, long weight) {
|
| 34 |
-
this.alpha = alpha;
|
| 35 |
-
this.weight = weight;
|
| 36 |
-
}
|
| 37 |
-
|
| 38 |
-
void observe(int rc, int rf, int ra) {
|
| 39 |
-
long keyRC = prevRC;
|
| 40 |
-
boolean found = false;
|
| 41 |
-
for (SparseTransition entry : transRC) {
|
| 42 |
-
if (entry.key == keyRC && entry.sym == rc) {
|
| 43 |
-
entry.count += weight;
|
| 44 |
-
found = true;
|
| 45 |
-
break;
|
| 46 |
-
}
|
| 47 |
-
}
|
| 48 |
-
if (!found && transRC.size() < 256) {
|
| 49 |
-
transRC.add(new SparseTransition(keyRC, rc, weight));
|
| 50 |
-
}
|
| 51 |
-
|
| 52 |
-
long keyRF = ((long)rc << 8) | prevRF;
|
| 53 |
-
found = false;
|
| 54 |
-
for (SparseTransition entry : transRF) {
|
| 55 |
-
if (entry.key == keyRF && entry.sym == rf) {
|
| 56 |
-
entry.count += weight;
|
| 57 |
-
found = true;
|
| 58 |
-
break;
|
| 59 |
-
}
|
| 60 |
-
}
|
| 61 |
-
if (!found && transRF.size() < 256) {
|
| 62 |
-
transRF.add(new SparseTransition(keyRF, rf, weight));
|
| 63 |
-
}
|
| 64 |
-
|
| 65 |
-
long keyRA = ((long)rc << 16) | ((long)rf << 8) | prevRA;
|
| 66 |
-
found = false;
|
| 67 |
-
for (SparseTransition entry : transRA) {
|
| 68 |
-
if (entry.key == keyRA && entry.sym == ra) {
|
| 69 |
-
entry.count += weight;
|
| 70 |
-
found = true;
|
| 71 |
-
break;
|
| 72 |
-
}
|
| 73 |
-
}
|
| 74 |
-
if (!found && transRA.size() < 256) {
|
| 75 |
-
transRA.add(new SparseTransition(keyRA, ra, weight));
|
| 76 |
-
}
|
| 77 |
-
|
| 78 |
-
prevRC = rc;
|
| 79 |
-
prevRF = rf;
|
| 80 |
-
prevRA = ra;
|
| 81 |
-
}
|
| 82 |
-
|
| 83 |
-
long[] getCumFreqsRC(int prevRC) {
|
| 84 |
-
long[] freqs = new long[256];
|
| 85 |
-
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 86 |
-
for (SparseTransition entry : transRC) {
|
| 87 |
-
if (entry.key == prevRC) {
|
| 88 |
-
freqs[entry.sym] += entry.count;
|
| 89 |
-
}
|
| 90 |
-
}
|
| 91 |
-
long[] cumFreqs = new long[257];
|
| 92 |
-
for (int i = 0; i < 256; i++) {
|
| 93 |
-
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 94 |
-
}
|
| 95 |
-
return cumFreqs;
|
| 96 |
-
}
|
| 97 |
-
|
| 98 |
-
long[] getCumFreqsRF(int currRC, int prevRF) {
|
| 99 |
-
long[] freqs = new long[256];
|
| 100 |
-
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 101 |
-
long key = ((long)currRC << 8) | prevRF;
|
| 102 |
-
for (SparseTransition entry : transRF) {
|
| 103 |
-
if (entry.key == key) {
|
| 104 |
-
freqs[entry.sym] += entry.count;
|
| 105 |
-
}
|
| 106 |
-
}
|
| 107 |
-
long[] cumFreqs = new long[257];
|
| 108 |
-
for (int i = 0; i < 256; i++) {
|
| 109 |
-
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 110 |
-
}
|
| 111 |
-
return cumFreqs;
|
| 112 |
-
}
|
| 113 |
-
|
| 114 |
-
long[] getCumFreqsRA(int currRC, int currRF, int prevRA) {
|
| 115 |
-
long[] freqs = new long[256];
|
| 116 |
-
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 117 |
-
long key = ((long)currRC << 16) | ((long)currRF << 8) | prevRA;
|
| 118 |
-
for (SparseTransition entry : transRA) {
|
| 119 |
-
if (entry.key == key) {
|
| 120 |
-
freqs[entry.sym] += entry.count;
|
| 121 |
-
}
|
| 122 |
-
}
|
| 123 |
-
long[] cumFreqs = new long[257];
|
| 124 |
-
for (int i = 0; i < 256; i++) {
|
| 125 |
-
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 126 |
-
}
|
| 127 |
-
return cumFreqs;
|
| 128 |
-
}
|
| 129 |
-
}
|
| 130 |
-
|
| 131 |
-
static class BitReader {
|
| 132 |
-
byte[] buffer;
|
| 133 |
-
int bitIndex = 0;
|
| 134 |
-
int totalBits;
|
| 135 |
-
|
| 136 |
-
BitReader(byte[] buffer) {
|
| 137 |
-
this.buffer = buffer;
|
| 138 |
-
this.totalBits = buffer.length * 8;
|
| 139 |
-
}
|
| 140 |
-
|
| 141 |
-
int readBit() {
|
| 142 |
-
if (bitIndex >= totalBits) return 0;
|
| 143 |
-
int bytePos = bitIndex / 8;
|
| 144 |
-
int bitPos = 7 - (bitIndex % 8);
|
| 145 |
-
int bit = (buffer[bytePos] >> bitPos) & 1;
|
| 146 |
-
bitIndex++;
|
| 147 |
-
return bit;
|
| 148 |
-
}
|
| 149 |
-
}
|
| 150 |
-
|
| 151 |
-
static class ConceptRadicals {
|
| 152 |
-
int rc, rf, ra;
|
| 153 |
-
ConceptRadicals(int rc, int rf, int ra) {
|
| 154 |
-
this.rc = rc; this.rf = rf; this.ra = ra;
|
| 155 |
-
}
|
| 156 |
-
}
|
| 157 |
-
|
| 158 |
-
static int readVarint(byte[] data, int[] state) {
|
| 159 |
-
int val = 0;
|
| 160 |
-
int shift = 0;
|
| 161 |
-
while (true) {
|
| 162 |
-
if (state[0] >= data.length) break;
|
| 163 |
-
int b = data[state[0]] & 0xFF;
|
| 164 |
-
state[0]++;
|
| 165 |
-
val |= (b & 0x7F) << shift;
|
| 166 |
-
if ((b & 0x80) == 0) break;
|
| 167 |
-
shift += 7;
|
| 168 |
-
}
|
| 169 |
-
return val;
|
| 170 |
-
}
|
| 171 |
-
|
| 172 |
-
static List<String> decompressVocab(byte[] data, int numTokens) {
|
| 173 |
-
List<String> tokens = new ArrayList<>();
|
| 174 |
-
int[] state = {0};
|
| 175 |
-
String prev = "";
|
| 176 |
-
for (int i = 0; i < numTokens; i++) {
|
| 177 |
-
if (state[0] >= data.length) break;
|
| 178 |
-
int common = readVarint(data, state);
|
| 179 |
-
int suffixLen = readVarint(data, state);
|
| 180 |
-
byte[] suffixBytes = new byte[suffixLen];
|
| 181 |
-
System.arraycopy(data, state[0], suffixBytes, 0, suffixLen);
|
| 182 |
-
state[0] += suffixLen;
|
| 183 |
-
|
| 184 |
-
String suffix = new String(suffixBytes);
|
| 185 |
-
String token = prev.substring(0, Math.min(common, prev.length())) + suffix;
|
| 186 |
-
tokens.add(token);
|
| 187 |
-
prev = token;
|
| 188 |
-
}
|
| 189 |
-
return tokens;
|
| 190 |
-
}
|
| 191 |
-
|
| 192 |
-
static List<ConceptRadicals> decode(byte[] encodedBytes, int numConcepts, long alpha, long weight) {
|
| 193 |
-
RadicalPredictor pred = new RadicalPredictor(alpha, weight);
|
| 194 |
-
BitReader r = new BitReader(encodedBytes);
|
| 195 |
-
|
| 196 |
-
long value = 0;
|
| 197 |
-
for (int i = 0; i < 32; i++) {
|
| 198 |
-
value = (value << 1) | r.readBit();
|
| 199 |
-
}
|
| 200 |
-
|
| 201 |
-
long low = 0;
|
| 202 |
-
long high = 0xFFFFFFFFL;
|
| 203 |
-
List<ConceptRadicals> decoded = new ArrayList<>();
|
| 204 |
-
|
| 205 |
-
for (int cIdx = 0; cIdx < numConcepts; cIdx++) {
|
| 206 |
-
int prevRC = pred.prevRC;
|
| 207 |
-
int prevRF = pred.prevRF;
|
| 208 |
-
int prevRA = pred.prevRA;
|
| 209 |
-
int[] symbols = new int[3];
|
| 210 |
-
|
| 211 |
-
for (int step = 0; step < 3; step++) {
|
| 212 |
-
long[] cumFreqs;
|
| 213 |
-
if (step == 0) {
|
| 214 |
-
cumFreqs = pred.getCumFreqsRC(prevRC);
|
| 215 |
-
} else if (step == 1) {
|
| 216 |
-
cumFreqs = pred.getCumFreqsRF(symbols[0], prevRF);
|
| 217 |
-
} else {
|
| 218 |
-
cumFreqs = pred.getCumFreqsRA(symbols[0], symbols[1], prevRA);
|
| 219 |
-
}
|
| 220 |
-
|
| 221 |
-
long total = cumFreqs[256];
|
| 222 |
-
long rangeWidth = high - low + 1;
|
| 223 |
-
long scaledVal = (((value - low) + 1) * total - 1) / rangeWidth;
|
| 224 |
-
|
| 225 |
-
int sym = 0;
|
| 226 |
-
int lIdx = 0, rIdx = 255;
|
| 227 |
-
while (lIdx <= rIdx) {
|
| 228 |
-
int mIdx = (lIdx + rIdx) / 2;
|
| 229 |
-
if (cumFreqs[mIdx] <= scaledVal && scaledVal < cumFreqs[mIdx + 1]) {
|
| 230 |
-
sym = mIdx;
|
| 231 |
-
break;
|
| 232 |
-
} else if (scaledVal >= cumFreqs[mIdx + 1]) {
|
| 233 |
-
lIdx = mIdx + 1;
|
| 234 |
-
} else {
|
| 235 |
-
rIdx = mIdx - 1;
|
| 236 |
-
}
|
| 237 |
-
}
|
| 238 |
-
|
| 239 |
-
symbols[step] = sym;
|
| 240 |
-
long cumLow = cumFreqs[sym];
|
| 241 |
-
long cumHigh = cumFreqs[sym + 1];
|
| 242 |
-
|
| 243 |
-
high = low + (rangeWidth * cumHigh) / total - 1;
|
| 244 |
-
low = low + (rangeWidth * cumLow) / total;
|
| 245 |
-
|
| 246 |
-
while (true) {
|
| 247 |
-
if (high < 0x80000000L) {
|
| 248 |
-
low <<= 1;
|
| 249 |
-
high = (high << 1) | 1;
|
| 250 |
-
value = (value << 1) | r.readBit();
|
| 251 |
-
} else if (low >= 0x80000000L) {
|
| 252 |
-
low = (low - 0x80000000L) << 1;
|
| 253 |
-
high = ((high - 0x80000000L) << 1) | 1;
|
| 254 |
-
value = ((value - 0x80000000L) << 1) | r.readBit();
|
| 255 |
-
} else if (low >= 0x40000000L && high < 0xC0000000L) {
|
| 256 |
-
low = (low - 0x40000000L) << 1;
|
| 257 |
-
high = ((high - 0x40000000L) << 1) | 1;
|
| 258 |
-
value = ((value - 0x40000000L) << 1) | r.readBit();
|
| 259 |
-
} else {
|
| 260 |
-
break;
|
| 261 |
-
}
|
| 262 |
-
low &= 0xFFFFFFFFL;
|
| 263 |
-
high &= 0xFFFFFFFFL;
|
| 264 |
-
value &= 0xFFFFFFFFL;
|
| 265 |
-
}
|
| 266 |
-
}
|
| 267 |
-
|
| 268 |
-
decoded.add(new ConceptRadicals(symbols[0], symbols[1], symbols[2]));
|
| 269 |
-
pred.observe(symbols[0], symbols[1], symbols[2]);
|
| 270 |
-
}
|
| 271 |
-
return decoded;
|
| 272 |
-
}
|
| 273 |
-
|
| 274 |
-
public static void main(String[] args) throws IOException {
|
| 275 |
-
System.out.println("======================================================================");
|
| 276 |
-
System.out.println("ZYMATICA | Cross-Language Java Decompressor & Range-Decoder");
|
| 277 |
-
System.out.println("======================================================================\n");
|
| 278 |
-
|
| 279 |
-
File namesFile = new File("frameworks_names.bin");
|
| 280 |
-
File coordsFile = new File("frameworks_coordinates.bin");
|
| 281 |
-
|
| 282 |
-
if (!namesFile.exists() || !coordsFile.exists()) {
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
}
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
|
| 299 |
-
|
| 300 |
-
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
| 313 |
-
|
| 314 |
-
|
| 315 |
-
|
| 316 |
-
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// ZYMATICA | Language-U Cross-Language Verification Engine (Java)
|
| 2 |
+
// Watermark: ip zymatica.space | astronautshe.com
|
| 3 |
+
|
| 4 |
+
import java.io.File;
|
| 5 |
+
import java.io.FileInputStream;
|
| 6 |
+
import java.io.IOException;
|
| 7 |
+
import java.util.ArrayList;
|
| 8 |
+
import java.util.List;
|
| 9 |
+
|
| 10 |
+
public class VerifyLanguageU {
|
| 11 |
+
|
| 12 |
+
static class SparseTransition {
|
| 13 |
+
long key;
|
| 14 |
+
int sym;
|
| 15 |
+
long count;
|
| 16 |
+
SparseTransition(long key, int sym, long count) {
|
| 17 |
+
this.key = key;
|
| 18 |
+
this.sym = sym;
|
| 19 |
+
this.count = count;
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
static class RadicalPredictor {
|
| 24 |
+
long alpha;
|
| 25 |
+
long weight;
|
| 26 |
+
List<SparseTransition> transRC = new ArrayList<>();
|
| 27 |
+
List<SparseTransition> transRF = new ArrayList<>();
|
| 28 |
+
List<SparseTransition> transRA = new ArrayList<>();
|
| 29 |
+
int prevRC = 0;
|
| 30 |
+
int prevRF = 0;
|
| 31 |
+
int prevRA = 0;
|
| 32 |
+
|
| 33 |
+
RadicalPredictor(long alpha, long weight) {
|
| 34 |
+
this.alpha = alpha;
|
| 35 |
+
this.weight = weight;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
void observe(int rc, int rf, int ra) {
|
| 39 |
+
long keyRC = prevRC;
|
| 40 |
+
boolean found = false;
|
| 41 |
+
for (SparseTransition entry : transRC) {
|
| 42 |
+
if (entry.key == keyRC && entry.sym == rc) {
|
| 43 |
+
entry.count += weight;
|
| 44 |
+
found = true;
|
| 45 |
+
break;
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
if (!found && transRC.size() < 256) {
|
| 49 |
+
transRC.add(new SparseTransition(keyRC, rc, weight));
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
long keyRF = ((long)rc << 8) | prevRF;
|
| 53 |
+
found = false;
|
| 54 |
+
for (SparseTransition entry : transRF) {
|
| 55 |
+
if (entry.key == keyRF && entry.sym == rf) {
|
| 56 |
+
entry.count += weight;
|
| 57 |
+
found = true;
|
| 58 |
+
break;
|
| 59 |
+
}
|
| 60 |
+
}
|
| 61 |
+
if (!found && transRF.size() < 256) {
|
| 62 |
+
transRF.add(new SparseTransition(keyRF, rf, weight));
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
long keyRA = ((long)rc << 16) | ((long)rf << 8) | prevRA;
|
| 66 |
+
found = false;
|
| 67 |
+
for (SparseTransition entry : transRA) {
|
| 68 |
+
if (entry.key == keyRA && entry.sym == ra) {
|
| 69 |
+
entry.count += weight;
|
| 70 |
+
found = true;
|
| 71 |
+
break;
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
if (!found && transRA.size() < 256) {
|
| 75 |
+
transRA.add(new SparseTransition(keyRA, ra, weight));
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
prevRC = rc;
|
| 79 |
+
prevRF = rf;
|
| 80 |
+
prevRA = ra;
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
long[] getCumFreqsRC(int prevRC) {
|
| 84 |
+
long[] freqs = new long[256];
|
| 85 |
+
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 86 |
+
for (SparseTransition entry : transRC) {
|
| 87 |
+
if (entry.key == prevRC) {
|
| 88 |
+
freqs[entry.sym] += entry.count;
|
| 89 |
+
}
|
| 90 |
+
}
|
| 91 |
+
long[] cumFreqs = new long[257];
|
| 92 |
+
for (int i = 0; i < 256; i++) {
|
| 93 |
+
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 94 |
+
}
|
| 95 |
+
return cumFreqs;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
long[] getCumFreqsRF(int currRC, int prevRF) {
|
| 99 |
+
long[] freqs = new long[256];
|
| 100 |
+
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 101 |
+
long key = ((long)currRC << 8) | prevRF;
|
| 102 |
+
for (SparseTransition entry : transRF) {
|
| 103 |
+
if (entry.key == key) {
|
| 104 |
+
freqs[entry.sym] += entry.count;
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
long[] cumFreqs = new long[257];
|
| 108 |
+
for (int i = 0; i < 256; i++) {
|
| 109 |
+
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 110 |
+
}
|
| 111 |
+
return cumFreqs;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
long[] getCumFreqsRA(int currRC, int currRF, int prevRA) {
|
| 115 |
+
long[] freqs = new long[256];
|
| 116 |
+
for (int i = 0; i < 256; i++) freqs[i] = alpha;
|
| 117 |
+
long key = ((long)currRC << 16) | ((long)currRF << 8) | prevRA;
|
| 118 |
+
for (SparseTransition entry : transRA) {
|
| 119 |
+
if (entry.key == key) {
|
| 120 |
+
freqs[entry.sym] += entry.count;
|
| 121 |
+
}
|
| 122 |
+
}
|
| 123 |
+
long[] cumFreqs = new long[257];
|
| 124 |
+
for (int i = 0; i < 256; i++) {
|
| 125 |
+
cumFreqs[i + 1] = cumFreqs[i] + freqs[i];
|
| 126 |
+
}
|
| 127 |
+
return cumFreqs;
|
| 128 |
+
}
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
static class BitReader {
|
| 132 |
+
byte[] buffer;
|
| 133 |
+
int bitIndex = 0;
|
| 134 |
+
int totalBits;
|
| 135 |
+
|
| 136 |
+
BitReader(byte[] buffer) {
|
| 137 |
+
this.buffer = buffer;
|
| 138 |
+
this.totalBits = buffer.length * 8;
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
int readBit() {
|
| 142 |
+
if (bitIndex >= totalBits) return 0;
|
| 143 |
+
int bytePos = bitIndex / 8;
|
| 144 |
+
int bitPos = 7 - (bitIndex % 8);
|
| 145 |
+
int bit = (buffer[bytePos] >> bitPos) & 1;
|
| 146 |
+
bitIndex++;
|
| 147 |
+
return bit;
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
static class ConceptRadicals {
|
| 152 |
+
int rc, rf, ra;
|
| 153 |
+
ConceptRadicals(int rc, int rf, int ra) {
|
| 154 |
+
this.rc = rc; this.rf = rf; this.ra = ra;
|
| 155 |
+
}
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
static int readVarint(byte[] data, int[] state) {
|
| 159 |
+
int val = 0;
|
| 160 |
+
int shift = 0;
|
| 161 |
+
while (true) {
|
| 162 |
+
if (state[0] >= data.length) break;
|
| 163 |
+
int b = data[state[0]] & 0xFF;
|
| 164 |
+
state[0]++;
|
| 165 |
+
val |= (b & 0x7F) << shift;
|
| 166 |
+
if ((b & 0x80) == 0) break;
|
| 167 |
+
shift += 7;
|
| 168 |
+
}
|
| 169 |
+
return val;
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
static List<String> decompressVocab(byte[] data, int numTokens) {
|
| 173 |
+
List<String> tokens = new ArrayList<>();
|
| 174 |
+
int[] state = {0};
|
| 175 |
+
String prev = "";
|
| 176 |
+
for (int i = 0; i < numTokens; i++) {
|
| 177 |
+
if (state[0] >= data.length) break;
|
| 178 |
+
int common = readVarint(data, state);
|
| 179 |
+
int suffixLen = readVarint(data, state);
|
| 180 |
+
byte[] suffixBytes = new byte[suffixLen];
|
| 181 |
+
System.arraycopy(data, state[0], suffixBytes, 0, suffixLen);
|
| 182 |
+
state[0] += suffixLen;
|
| 183 |
+
|
| 184 |
+
String suffix = new String(suffixBytes);
|
| 185 |
+
String token = prev.substring(0, Math.min(common, prev.length())) + suffix;
|
| 186 |
+
tokens.add(token);
|
| 187 |
+
prev = token;
|
| 188 |
+
}
|
| 189 |
+
return tokens;
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
static List<ConceptRadicals> decode(byte[] encodedBytes, int numConcepts, long alpha, long weight) {
|
| 193 |
+
RadicalPredictor pred = new RadicalPredictor(alpha, weight);
|
| 194 |
+
BitReader r = new BitReader(encodedBytes);
|
| 195 |
+
|
| 196 |
+
long value = 0;
|
| 197 |
+
for (int i = 0; i < 32; i++) {
|
| 198 |
+
value = (value << 1) | r.readBit();
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
long low = 0;
|
| 202 |
+
long high = 0xFFFFFFFFL;
|
| 203 |
+
List<ConceptRadicals> decoded = new ArrayList<>();
|
| 204 |
+
|
| 205 |
+
for (int cIdx = 0; cIdx < numConcepts; cIdx++) {
|
| 206 |
+
int prevRC = pred.prevRC;
|
| 207 |
+
int prevRF = pred.prevRF;
|
| 208 |
+
int prevRA = pred.prevRA;
|
| 209 |
+
int[] symbols = new int[3];
|
| 210 |
+
|
| 211 |
+
for (int step = 0; step < 3; step++) {
|
| 212 |
+
long[] cumFreqs;
|
| 213 |
+
if (step == 0) {
|
| 214 |
+
cumFreqs = pred.getCumFreqsRC(prevRC);
|
| 215 |
+
} else if (step == 1) {
|
| 216 |
+
cumFreqs = pred.getCumFreqsRF(symbols[0], prevRF);
|
| 217 |
+
} else {
|
| 218 |
+
cumFreqs = pred.getCumFreqsRA(symbols[0], symbols[1], prevRA);
|
| 219 |
+
}
|
| 220 |
+
|
| 221 |
+
long total = cumFreqs[256];
|
| 222 |
+
long rangeWidth = high - low + 1;
|
| 223 |
+
long scaledVal = (((value - low) + 1) * total - 1) / rangeWidth;
|
| 224 |
+
|
| 225 |
+
int sym = 0;
|
| 226 |
+
int lIdx = 0, rIdx = 255;
|
| 227 |
+
while (lIdx <= rIdx) {
|
| 228 |
+
int mIdx = (lIdx + rIdx) / 2;
|
| 229 |
+
if (cumFreqs[mIdx] <= scaledVal && scaledVal < cumFreqs[mIdx + 1]) {
|
| 230 |
+
sym = mIdx;
|
| 231 |
+
break;
|
| 232 |
+
} else if (scaledVal >= cumFreqs[mIdx + 1]) {
|
| 233 |
+
lIdx = mIdx + 1;
|
| 234 |
+
} else {
|
| 235 |
+
rIdx = mIdx - 1;
|
| 236 |
+
}
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
symbols[step] = sym;
|
| 240 |
+
long cumLow = cumFreqs[sym];
|
| 241 |
+
long cumHigh = cumFreqs[sym + 1];
|
| 242 |
+
|
| 243 |
+
high = low + (rangeWidth * cumHigh) / total - 1;
|
| 244 |
+
low = low + (rangeWidth * cumLow) / total;
|
| 245 |
+
|
| 246 |
+
while (true) {
|
| 247 |
+
if (high < 0x80000000L) {
|
| 248 |
+
low <<= 1;
|
| 249 |
+
high = (high << 1) | 1;
|
| 250 |
+
value = (value << 1) | r.readBit();
|
| 251 |
+
} else if (low >= 0x80000000L) {
|
| 252 |
+
low = (low - 0x80000000L) << 1;
|
| 253 |
+
high = ((high - 0x80000000L) << 1) | 1;
|
| 254 |
+
value = ((value - 0x80000000L) << 1) | r.readBit();
|
| 255 |
+
} else if (low >= 0x40000000L && high < 0xC0000000L) {
|
| 256 |
+
low = (low - 0x40000000L) << 1;
|
| 257 |
+
high = ((high - 0x40000000L) << 1) | 1;
|
| 258 |
+
value = ((value - 0x40000000L) << 1) | r.readBit();
|
| 259 |
+
} else {
|
| 260 |
+
break;
|
| 261 |
+
}
|
| 262 |
+
low &= 0xFFFFFFFFL;
|
| 263 |
+
high &= 0xFFFFFFFFL;
|
| 264 |
+
value &= 0xFFFFFFFFL;
|
| 265 |
+
}
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
decoded.add(new ConceptRadicals(symbols[0], symbols[1], symbols[2]));
|
| 269 |
+
pred.observe(symbols[0], symbols[1], symbols[2]);
|
| 270 |
+
}
|
| 271 |
+
return decoded;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
public static void main(String[] args) throws IOException {
|
| 275 |
+
System.out.println("======================================================================");
|
| 276 |
+
System.out.println("ZYMATICA | Cross-Language Java Decompressor & Range-Decoder");
|
| 277 |
+
System.out.println("======================================================================\n");
|
| 278 |
+
|
| 279 |
+
File namesFile = new File("Language-U-Browser/frameworks_names.bin");
|
| 280 |
+
File coordsFile = new File("Language-U-Browser/frameworks_coordinates.bin");
|
| 281 |
+
|
| 282 |
+
if (!namesFile.exists() || !coordsFile.exists()) {
|
| 283 |
+
namesFile = new File("frameworks_names.bin");
|
| 284 |
+
coordsFile = new File("frameworks_coordinates.bin");
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
if (!namesFile.exists() || !coordsFile.exists()) {
|
| 288 |
+
System.err.println("[!] Error: Binary transport files not found. Run run_ultimate_pipeline.py first.");
|
| 289 |
+
System.exit(1);
|
| 290 |
+
}
|
| 291 |
+
|
| 292 |
+
// 1. Read names binary
|
| 293 |
+
byte[] namesBytes = new byte[(int) namesFile.length()];
|
| 294 |
+
try (FileInputStream fis = new FileInputStream(namesFile)) {
|
| 295 |
+
fis.read(namesBytes);
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
// 2. Read coordinates binary
|
| 299 |
+
byte[] coordsBytes = new byte[(int) coordsFile.length()];
|
| 300 |
+
try (FileInputStream fis = new FileInputStream(coordsFile)) {
|
| 301 |
+
fis.read(coordsBytes);
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
// 3. Decompress vocabulary names
|
| 305 |
+
List<String> names = decompressVocab(namesBytes, 49);
|
| 306 |
+
System.out.println("[1] Java Vocab Decompression: SUCCESS (" + names.size() + " names restored).");
|
| 307 |
+
|
| 308 |
+
// 4. Formulate expected radicals based on the same rules
|
| 309 |
+
List<ConceptRadicals> expected = new ArrayList<>();
|
| 310 |
+
for (String name : names) {
|
| 311 |
+
int domain = 1;
|
| 312 |
+
String lower = name.toLowerCase();
|
| 313 |
+
if (lower.contains("pixi") || lower.contains("phaser") || lower.contains("away") || lower.contains("p5")) {
|
| 314 |
+
domain = 2;
|
| 315 |
+
} else if (lower.contains("scenejs") || lower.contains("glam") || lower.contains("deck") || lower.contains("cesium") || lower.contains("luma") || lower.contains("philo")) {
|
| 316 |
+
domain = 7;
|
| 317 |
+
}
|
| 318 |
+
int rc = (domain << 4) | 2;
|
| 319 |
+
int rf = (1 << 4) | 2;
|
| 320 |
+
int ra = (15 << 4) | 12;
|
| 321 |
+
expected.add(new ConceptRadicals(rc, rf, ra));
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
// 5. Decode radicals using Yang range decoder in Java
|
| 325 |
+
List<ConceptRadicals> decoded = decode(coordsBytes, 49, 1, 128);
|
| 326 |
+
System.out.println("[2] Java Yang Range Decoder execution: SUCCESS.");
|
| 327 |
+
|
| 328 |
+
// 6. Assert exact equivalence (dynamic validation)
|
| 329 |
+
boolean match = true;
|
| 330 |
+
for (int i = 0; i < 49; i++) {
|
| 331 |
+
ConceptRadicals exp = expected.get(i);
|
| 332 |
+
ConceptRadicals dec = decoded.get(i);
|
| 333 |
+
if (exp.rc != dec.rc || exp.rf != dec.rf || exp.ra != dec.ra) {
|
| 334 |
+
System.err.println("[!] Mismatch at index " + i + " (" + names.get(i) + "): Expected RC=" + exp.rc + ", RF=" + exp.rf + ", RA=" + exp.ra + " | Decoded RC=" + dec.rc + ", RF=" + dec.rf + ", RA=" + dec.ra);
|
| 335 |
+
match = false;
|
| 336 |
+
break;
|
| 337 |
+
}
|
| 338 |
+
}
|
| 339 |
+
|
| 340 |
+
if (match) {
|
| 341 |
+
System.out.println("\n[SUCCESS] Java range-decoder verification: 100% MATCH!");
|
| 342 |
+
} else {
|
| 343 |
+
System.err.println("\n[ERROR] Java dynamic coordinate check failed!");
|
| 344 |
+
System.exit(1);
|
| 345 |
+
}
|
| 346 |
+
}
|
| 347 |
+
}
|
frameworks_metadata.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
{
|
| 2 |
"frameworks_count": 49,
|
| 3 |
-
"compressed_size":
|
| 4 |
-
"sha256": "
|
| 5 |
-
"packets_count":
|
| 6 |
"svd_rank": 2,
|
| 7 |
"dct_coefficients": 0,
|
| 8 |
"singular_values": [
|
|
|
|
| 1 |
{
|
| 2 |
"frameworks_count": 49,
|
| 3 |
+
"compressed_size": 16601,
|
| 4 |
+
"sha256": "6015f0909358ae8674503b876b196e6744132dd2735e41c502f8443c6c36a83a",
|
| 5 |
+
"packets_count": 67,
|
| 6 |
"svd_rank": 2,
|
| 7 |
"dct_coefficients": 0,
|
| 8 |
"singular_values": [
|
packets/packet_00.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 255
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9865468f6352981c201ebe855ab38109467a3fe9f2654b753e1c2450cc8dd04a
|
| 3 |
size 255
|
packets/packet_01.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 255
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bc7d5c973e819713fc38515e459c8bc9fcfc50eb959bc17c3e87a97298cc9a2e
|
| 3 |
size 255
|
packets/packet_02.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8abe2c3eb2961144a5831b5c6afae2288164f61be31f277ed6af05eb0fa58567
|
| 3 |
+
size 255
|
packets/packet_03.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a19b2da3b0fb5edd8d677591d7d1b156c04f13b4c267734733b5e78a0127a100
|
| 3 |
+
size 255
|
packets/packet_04.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7c93c5d20df2c3fdca02c75c869f5dad97a48362284881c66ebaf76df2c16aee
|
| 3 |
+
size 255
|
packets/packet_05.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e6af21cd23f59f3d8b209444fca03c4242aa3304a44905a9311041e28e61f789
|
| 3 |
+
size 255
|
packets/packet_06.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:53fc619f934f35b2a2e7d66eb7092b48c4ba3e32c0ef394116f606d1c05e5dd1
|
| 3 |
+
size 255
|
packets/packet_07.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e9bc511bb3a98185ef654310d99199526ec421e3666e32ef8757bc948059857b
|
| 3 |
+
size 255
|
packets/packet_08.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d8b55d01afe2ac5ebbbc6af6ba736888647a50eda592dcaf123a5698b9735b12
|
| 3 |
+
size 255
|
packets/packet_09.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5fa5843e769c2297a3f09dd914680f6424b6e6ff8c8896ac05709bf30c3c29b4
|
| 3 |
+
size 255
|
packets/packet_10.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:90b9df312be6be62cb798481da1639a3d0c2d98f68e5d983a2e69933ed647856
|
| 3 |
+
size 255
|
packets/packet_11.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d893da3ad44d19a1e73f9ca60c7a4ab2a8e34487124016db943f692a95fdbff0
|
| 3 |
+
size 255
|
packets/packet_12.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ed27f4f9991619f48df26c2c0ee0185dd1d29770634fec53cbeb6dae4f19f8b0
|
| 3 |
+
size 255
|
packets/packet_13.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c711fe350c5f85fdabe82f4db38159e6112b03089f8f84c99d810130be8b8cbf
|
| 3 |
+
size 255
|
packets/packet_14.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9c4f7998fc277751aba24481ec442a028a094c83222f725a2f86b736ec76cdfd
|
| 3 |
+
size 255
|
packets/packet_15.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1d0539d8eb86137704c522fbb212004646f802820c34aa2dc3942f7a84b87b25
|
| 3 |
+
size 255
|
packets/packet_16.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4975b9e3380cd1f61b00d3fdd37cb2772065e55d76f3e745a96e0be2cf17546a
|
| 3 |
+
size 255
|
packets/packet_17.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ba2d6865e150dc469051351e3f0807d0676f85eadfb978674111f443c04021e2
|
| 3 |
+
size 255
|
packets/packet_18.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dd7fd24c3fd2dbf397def70ae71752e3c8f6b6f8e115ebebd7076bf807dd6d82
|
| 3 |
+
size 255
|
packets/packet_19.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5db3b8cea4883918b02a659a0aba14ee46d67e935d992433dfcf5c8358dc2519
|
| 3 |
+
size 255
|
packets/packet_20.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d0b61b1ea681c3af0d8953f0a12ca04a0ad818242717157fab171c672b7b27ff
|
| 3 |
+
size 255
|
packets/packet_21.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a57255aa10f48749160ec424d70d9f4a9d696a51d542a64c1712773f288b74bc
|
| 3 |
+
size 255
|
packets/packet_22.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8af1488bf223c9e90f683c5b892bea11938822aa9d71f4e2409c11aa9cdde9ef
|
| 3 |
+
size 255
|
packets/packet_23.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0c214831f9cba0d92b0f0d567939c67c6253e74aaf22561c03b6688bc75c5779
|
| 3 |
+
size 255
|
packets/packet_24.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dae02a139580943f140a5309b43666e7de87d1d05ba29144377c15ba3fad23bc
|
| 3 |
+
size 255
|
packets/packet_25.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5aee1cffa54f434ddc84a8604e38123aba706d8def6b21f75c1009b8e1cfce6d
|
| 3 |
+
size 255
|
packets/packet_26.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:25dc6cf840a5d2833a1800d1a80d57fde8d74d7e30c93cccbce4f4afc9525c73
|
| 3 |
+
size 255
|
packets/packet_27.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dd59d13ba8c09741d3ab2bd5726a62a9e86c24356ab7cf3bbaf101619c47cbaa
|
| 3 |
+
size 255
|
packets/packet_28.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:aeb6b93c827197812f470f6cb6dc8dd4743c8b1a1e4388bec135f3fae99a798d
|
| 3 |
+
size 255
|
packets/packet_29.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a94983e8ea278c8ea103ec77d75d9bbbb8a8c78ede87988be0846aa69e455ee8
|
| 3 |
+
size 255
|
packets/packet_30.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:80aaf26754e37927f1ec027e4750285668eba98b7a774443fda2f302b134c908
|
| 3 |
+
size 255
|
packets/packet_31.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b052a459f43f34276817e9e4836ed3d33f2aaf76a79dc1ab673e632890456bac
|
| 3 |
+
size 255
|
packets/packet_32.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:27f0b00a1d665fdb4f0b6ed511284b79fab9c759e790e355ad11942fff1dc812
|
| 3 |
+
size 255
|
packets/packet_33.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d7e0ae2b5a15cd7e27b5eb0057a83ee6972f23b2ede2ed84007ade21ac519fbd
|
| 3 |
+
size 255
|
packets/packet_34.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bb7c6809f2cc6567c1953cf9372d4f48414d681c16a78a732daadd18c46661ae
|
| 3 |
+
size 255
|
packets/packet_35.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a37a1c3e95dae869f93fc5eecdce4bcbbe3fe71341586d7cc339effe88a13f1c
|
| 3 |
+
size 255
|
packets/packet_36.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:183100806dea1cb4a7f753b936dcfbaefda1c09f823cc2dde79406b9bb8ca834
|
| 3 |
+
size 255
|
packets/packet_37.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8ba7b4eff08fb9da13c630994591cf85810dde28c4d71fa5aff56a468f1d2f48
|
| 3 |
+
size 255
|
packets/packet_38.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a4afe8e57592936cfb15380d3b891cb4b939419884a14123fc263b2c9d85025e
|
| 3 |
+
size 255
|
packets/packet_39.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:423bd4f613700701bfae2199bfab5d80d7a5356ac93224d9baefa7f3cbfd4abf
|
| 3 |
+
size 255
|
packets/packet_40.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:66cb31901fe1b294e77506a25e5c2e3ccd5ccbd077ca43735c9ec02d5c2d3d15
|
| 3 |
+
size 255
|
packets/packet_41.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:27acd49ed0d7d5210b0791bc279fe2936c66b8a35d61764e54847e669aa296eb
|
| 3 |
+
size 255
|
packets/packet_42.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4fda7d876b3e065af1209fbdff931911c861046eac3a121f8241d5ae37beae36
|
| 3 |
+
size 255
|
packets/packet_43.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4197ac636eeaf9eeed8f3321ca9eaa9a0b110d6271aa03cc8a95284d26b86871
|
| 3 |
+
size 255
|
packets/packet_44.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2c64157f30ff4cf1d15110dc92c011baa4687b2148c81b0141247b9880da1423
|
| 3 |
+
size 255
|
packets/packet_45.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68eccfe75c683345986ef88626fe76b1a0c4b4f31966e1031261d48a62d651dd
|
| 3 |
+
size 255
|
packets/packet_46.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:679d96982d298d96bddc10ce26b0faee6fd4e8b8b6e11f9b027b8b3475eff394
|
| 3 |
+
size 255
|