Compare commits
43 Commits
62516825d1
...
v0.0.12
Author | SHA1 | Date | |
---|---|---|---|
311794c37e | |||
dfa178ba19 | |||
a16d18edfe | |||
2b60287448 | |||
0a9ac59676 | |||
e3a77ed773 | |||
cdf9a8a7b0 | |||
305dfdd52f | |||
7261c91492 | |||
f11720f5ae | |||
e2b7298af5 | |||
8e1e344f4b | |||
3634b6a59b | |||
a3cc14c807 | |||
55b3275434 | |||
3a5b86ed9e | |||
159f2eef74 | |||
2952abe811 | |||
ce54746a4a | |||
b15959d62c | |||
b009de1c2b | |||
55a230c75e | |||
0711ec3831 | |||
0280bd77e5 | |||
359f6f0042 | |||
aa8504ddba | |||
fb7cf18f9b | |||
b808b97940 | |||
e480f66846 | |||
d5bc9221a0 | |||
9d23b81d6f | |||
0740dcad43 | |||
176df61321 | |||
0a850f22e9 | |||
479b39d055 | |||
482408d725 | |||
45995e3307 | |||
359b0b29ff | |||
54e47ebd40 | |||
1c9dda68a6 | |||
142455dd28 | |||
567d385fbd | |||
8a44055533 |
@@ -276,9 +276,15 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
|
||||
|
||||
find_program(VALGRIND_EXE valgrind)
|
||||
if(VALGRIND_EXE AND NOT CMAKE_CROSSCOMPILING)
|
||||
add_test(NAME conflict_set_blackbox_valgrind
|
||||
COMMAND ${VALGRIND_EXE} --error-exitcode=99 --
|
||||
$<TARGET_FILE:driver> ${CORPUS_TESTS})
|
||||
list(LENGTH CORPUS_TESTS len)
|
||||
math(EXPR last "${len} - 1")
|
||||
set(partition_size 100)
|
||||
foreach(i RANGE 0 ${last} ${partition_size})
|
||||
list(SUBLIST CORPUS_TESTS ${i} ${partition_size} partition)
|
||||
add_test(NAME conflict_set_blackbox_valgrind_${i}
|
||||
COMMAND ${VALGRIND_EXE} --error-exitcode=99 --
|
||||
$<TARGET_FILE:driver> ${partition})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# api smoke tests
|
||||
|
990
ConflictSet.cpp
990
ConflictSet.cpp
File diff suppressed because it is too large
Load Diff
13
Internal.h
13
Internal.h
@@ -273,6 +273,16 @@ template <class T> struct Vector {
|
||||
size_ += slice.size();
|
||||
}
|
||||
|
||||
// Caller must write to the returned slice
|
||||
std::span<T> unsafePrepareAppend(int appendSize) {
|
||||
if (size_ + appendSize > capacity) {
|
||||
grow(std::max<int>(size_ + appendSize, capacity * 2));
|
||||
}
|
||||
auto result = std::span<T>(t + size_, appendSize);
|
||||
size_ += appendSize;
|
||||
return result;
|
||||
}
|
||||
|
||||
void push_back(const T &t) { append(std::span<const T>(&t, 1)); }
|
||||
|
||||
T *begin() { return t; }
|
||||
@@ -738,7 +748,10 @@ struct TestDriver {
|
||||
fprintf(stderr, "%p Set oldest version: %" PRId64 "\n", this,
|
||||
oldestVersion);
|
||||
#endif
|
||||
CALLGRIND_START_INSTRUMENTATION;
|
||||
cs.setOldestVersion(oldestVersion);
|
||||
CALLGRIND_STOP_INSTRUMENTATION;
|
||||
|
||||
if constexpr (kEnableAssertions) {
|
||||
refImpl.setOldestVersion(oldestVersion);
|
||||
}
|
||||
|
@@ -11,6 +11,14 @@
|
||||
#include <arm_neon.h>
|
||||
#endif
|
||||
|
||||
#ifndef __SANITIZE_THREAD__
|
||||
#if defined(__has_feature)
|
||||
#if __has_feature(thread_sanitizer)
|
||||
#define __SANITIZE_THREAD__
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(HAS_AVX) || defined(HAS_ARM_NEON)
|
||||
constexpr int kStride = 64;
|
||||
#else
|
||||
@@ -117,7 +125,7 @@ __attribute__((target("default")))
|
||||
inline int
|
||||
longestCommonPrefix(const uint8_t *ap, const uint8_t *bp, int cl) {
|
||||
if (!(cl >= 0)) {
|
||||
__builtin_unreachable();
|
||||
__builtin_unreachable(); // GCOVR_EXCL_LINE
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
20
README.md
20
README.md
@@ -24,15 +24,15 @@ Hardware for all benchmarks is an AMD Ryzen 9 7900 with (2x32GB) 5600MT/s CL28-3
|
||||
|
||||
| ns/op | op/s | err% | ins/op | cyc/op | IPC | bra/op | miss% | total | benchmark
|
||||
|--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:----------
|
||||
| 12.42 | 80,500,398.66 | 0.8% | 180.38 | 61.57 | 2.930 | 41.51 | 0.4% | 0.01 | `point reads`
|
||||
| 15.17 | 65,917,580.99 | 0.2% | 279.47 | 74.95 | 3.729 | 55.54 | 0.3% | 0.01 | `prefix reads`
|
||||
| 38.16 | 26,202,393.91 | 0.1% | 803.07 | 189.13 | 4.246 | 141.68 | 0.2% | 0.01 | `range reads`
|
||||
| 20.20 | 49,504,615.44 | 0.4% | 363.00 | 100.35 | 3.617 | 49.81 | 0.3% | 0.01 | `point writes`
|
||||
| 41.99 | 23,816,559.99 | 0.3% | 799.27 | 209.63 | 3.813 | 154.32 | 0.1% | 0.01 | `prefix writes`
|
||||
| 46.28 | 21,607,605.88 | 1.5% | 953.79 | 231.47 | 4.121 | 168.34 | 0.0% | 0.01 | `range writes`
|
||||
| 80.99 | 12,347,449.98 | 0.9% | 1,501.97 | 406.50 | 3.695 | 281.89 | 0.1% | 0.01 | `monotonic increasing point writes`
|
||||
| 318,010.00 | 3,144.56 | 1.0% | 3,994,511.50 | 1,657,831.50 | 2.409 | 805,969.50 | 0.0% | 0.01 | `worst case for radix tree`
|
||||
| 75.85 | 13,183,612.56 | 0.5% | 1,590.01 | 385.64 | 4.123 | 258.00 | 0.0% | 0.01 | `create and destroy`
|
||||
| 11.18 | 89,455,125.34 | 0.6% | 185.37 | 57.08 | 3.248 | 41.51 | 0.4% | 0.01 | `point reads`
|
||||
| 14.53 | 68,800,688.89 | 0.4% | 282.41 | 74.80 | 3.776 | 55.06 | 0.3% | 0.01 | `prefix reads`
|
||||
| 36.54 | 27,367,576.87 | 0.2% | 798.06 | 188.90 | 4.225 | 141.69 | 0.2% | 0.01 | `range reads`
|
||||
| 16.69 | 59,912,106.02 | 0.6% | 314.57 | 86.29 | 3.645 | 39.84 | 0.4% | 0.01 | `point writes`
|
||||
| 30.09 | 33,235,744.07 | 0.5% | 591.33 | 155.92 | 3.793 | 82.69 | 0.2% | 0.01 | `prefix writes`
|
||||
| 35.77 | 27,956,388.03 | 1.4% | 682.25 | 187.63 | 3.636 | 96.12 | 0.1% | 0.01 | `range writes`
|
||||
| 74.04 | 13,505,408.41 | 2.7% | 1,448.95 | 392.10 | 3.695 | 260.53 | 0.1% | 0.01 | `monotonic increasing point writes`
|
||||
| 330,984.50 | 3,021.29 | 1.9% | 3,994,153.50 | 1,667,309.00 | 2.396 | 806,019.50 | 0.0% | 0.01 | `worst case for radix tree`
|
||||
| 92.46 | 10,814,961.65 | 0.5% | 1,800.00 | 463.41 | 3.884 | 297.00 | 0.0% | 0.01 | `create and destroy`
|
||||
|
||||
# "Real data" test
|
||||
|
||||
@@ -47,7 +47,7 @@ Check: 4.47891 seconds, 364.05 MB/s, Add: 4.55599 seconds, 123.058 MB/s, Gc rati
|
||||
## radix tree
|
||||
|
||||
```
|
||||
Check: 0.963721 seconds, 1691.93 MB/s, Add: 1.3288 seconds, 421.924 MB/s, Gc ratio: 42.8819%
|
||||
Check: 0.953012 seconds, 1710.94 MB/s, Add: 1.30025 seconds, 431.188 MB/s, Gc ratio: 43.9816%, Peak idle memory: 2.28375e+06
|
||||
```
|
||||
|
||||
## hash table
|
||||
|
144
ServerBench.cpp
144
ServerBench.cpp
@@ -6,11 +6,15 @@
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <thread>
|
||||
#include <unistd.h>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "ConflictSet.h"
|
||||
#include "third_party/nadeau.h"
|
||||
@@ -20,8 +24,8 @@ std::atomic<int64_t> transactions;
|
||||
constexpr int kBaseSearchDepth = 32;
|
||||
constexpr int kWindowSize = 10000000;
|
||||
|
||||
std::basic_string<uint8_t> numToKey(int64_t num) {
|
||||
std::basic_string<uint8_t> result;
|
||||
std::string numToKey(int64_t num) {
|
||||
std::string result;
|
||||
result.resize(kBaseSearchDepth + sizeof(int64_t));
|
||||
memset(result.data(), 0, kBaseSearchDepth);
|
||||
int64_t be = __builtin_bswap64(num);
|
||||
@@ -41,13 +45,13 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
auto pointK = numToKey(pointRv);
|
||||
weaselab::ConflictSet::ReadRange reads[] = {
|
||||
{
|
||||
{pointK.data(), int(pointK.size())},
|
||||
{(const uint8_t *)pointK.data(), int(pointK.size())},
|
||||
{nullptr, 0},
|
||||
pointRv,
|
||||
},
|
||||
{
|
||||
{beginK.data(), int(beginK.size())},
|
||||
{endK.data(), int(endK.size())},
|
||||
{(const uint8_t *)beginK.data(), int(beginK.size())},
|
||||
{(const uint8_t *)endK.data(), int(endK.size())},
|
||||
version - 2,
|
||||
},
|
||||
};
|
||||
@@ -66,7 +70,7 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
{
|
||||
weaselab::ConflictSet::WriteRange w;
|
||||
auto k = numToKey(version);
|
||||
w.begin.p = k.data();
|
||||
w.begin.p = (const uint8_t *)k.data();
|
||||
w.end.len = 0;
|
||||
if (version % (kWindowSize / 2) == 0) {
|
||||
for (int l = 0; l <= k.size(); ++l) {
|
||||
@@ -79,9 +83,9 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
int64_t beginN = version - kWindowSize + rand() % kWindowSize;
|
||||
auto b = numToKey(beginN);
|
||||
auto e = numToKey(beginN + 1000);
|
||||
w.begin.p = b.data();
|
||||
w.begin.p = (const uint8_t *)b.data();
|
||||
w.begin.len = b.size();
|
||||
w.end.p = e.data();
|
||||
w.end.p = (const uint8_t *)e.data();
|
||||
w.end.len = e.size();
|
||||
cs->addWrites(&w, 1, version);
|
||||
}
|
||||
@@ -164,6 +168,68 @@ double toSeconds(timeval t) {
|
||||
return double(t.tv_sec) + double(t.tv_usec) * 1e-6;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
#include <linux/perf_event.h>
|
||||
struct PerfCounter {
|
||||
PerfCounter(int type, int config, const std::string &labels = {},
|
||||
int groupLeaderFd = -1)
|
||||
: labels(labels) {
|
||||
struct perf_event_attr pe;
|
||||
|
||||
memset(&pe, 0, sizeof(pe));
|
||||
pe.type = type;
|
||||
pe.size = sizeof(pe);
|
||||
pe.config = config;
|
||||
pe.inherit = 1;
|
||||
pe.exclude_kernel = 1;
|
||||
pe.exclude_hv = 1;
|
||||
|
||||
fd = perf_event_open(&pe, 0, -1, groupLeaderFd, 0);
|
||||
if (fd < 0 && errno != ENOENT && errno != EINVAL) {
|
||||
perror(labels.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
int64_t total() const {
|
||||
int64_t count;
|
||||
if (read(fd, &count, sizeof(count)) != sizeof(count)) {
|
||||
perror("read instructions from perf");
|
||||
abort();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
PerfCounter(PerfCounter &&other)
|
||||
: fd(std::exchange(other.fd, -1)), labels(std::move(other.labels)) {}
|
||||
PerfCounter &operator=(PerfCounter &&other) {
|
||||
fd = std::exchange(other.fd, -1);
|
||||
labels = std::move(other.labels);
|
||||
return *this;
|
||||
}
|
||||
|
||||
~PerfCounter() {
|
||||
if (fd >= 0) {
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
bool ok() const { return fd >= 0; }
|
||||
const std::string &getLabels() const { return labels; }
|
||||
int getFd() const { return fd; }
|
||||
|
||||
private:
|
||||
int fd;
|
||||
std::string labels;
|
||||
static long perf_event_open(struct perf_event_attr *hw_event, pid_t pid,
|
||||
int cpu, int group_fd, unsigned long flags) {
|
||||
int ret;
|
||||
|
||||
ret = syscall(SYS_perf_event_open, hw_event, pid, cpu, group_fd, flags);
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc != 3) {
|
||||
goto fail;
|
||||
@@ -176,6 +242,50 @@ int main(int argc, char **argv) {
|
||||
int metricsCount;
|
||||
cs.getMetricsV1(&metrics, &metricsCount);
|
||||
|
||||
#ifdef __linux__
|
||||
PerfCounter instructions{PERF_TYPE_HARDWARE, PERF_COUNT_HW_INSTRUCTIONS};
|
||||
PerfCounter cycles{PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, "",
|
||||
instructions.getFd()};
|
||||
|
||||
std::vector<PerfCounter> cacheCounters;
|
||||
for (auto [id, idStr] : std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_L1D, "l1d"},
|
||||
{PERF_COUNT_HW_CACHE_L1I, "l1i"},
|
||||
{PERF_COUNT_HW_CACHE_LL, "ll"},
|
||||
{PERF_COUNT_HW_CACHE_DTLB, "dtlb"},
|
||||
{PERF_COUNT_HW_CACHE_ITLB, "itlb"},
|
||||
{PERF_COUNT_HW_CACHE_BPU, "bpu"},
|
||||
{PERF_COUNT_HW_CACHE_NODE, "node"},
|
||||
}) {
|
||||
for (auto [op, opStr] :
|
||||
std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_OP_READ, "read"},
|
||||
{PERF_COUNT_HW_CACHE_OP_WRITE, "write"},
|
||||
{PERF_COUNT_HW_CACHE_OP_PREFETCH, "prefetch"},
|
||||
}) {
|
||||
int groupLeaderFd = -1;
|
||||
for (auto [result, resultStr] :
|
||||
std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_RESULT_MISS, "miss"},
|
||||
{PERF_COUNT_HW_CACHE_RESULT_ACCESS, "access"},
|
||||
}) {
|
||||
auto labels = "{id=\"" + idStr + "\", op=\"" + opStr +
|
||||
"\", result=\"" + resultStr + "\"}";
|
||||
cacheCounters.emplace_back(PERF_TYPE_HW_CACHE,
|
||||
id | (op << 8) | (result << 16), labels,
|
||||
groupLeaderFd);
|
||||
if (!cacheCounters.back().ok()) {
|
||||
cacheCounters.pop_back();
|
||||
} else {
|
||||
if (groupLeaderFd == -1) {
|
||||
groupLeaderFd = cacheCounters.back().getFd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
auto w = std::thread{workload, &cs};
|
||||
|
||||
for (;;) {
|
||||
@@ -203,6 +313,24 @@ int main(int argc, char **argv) {
|
||||
"transactions_total ";
|
||||
body += std::to_string(transactions.load(std::memory_order_relaxed));
|
||||
body += "\n";
|
||||
#ifdef __linux__
|
||||
body += "# HELP instructions_total Total number of instructions\n"
|
||||
"# TYPE instructions_total counter\n"
|
||||
"instructions_total ";
|
||||
body += std::to_string(instructions.total());
|
||||
body += "\n";
|
||||
body += "# HELP cycles_total Total number of cycles\n"
|
||||
"# TYPE cycles_total counter\n"
|
||||
"cycles_total ";
|
||||
body += std::to_string(cycles.total());
|
||||
body += "\n";
|
||||
body += "# HELP cache_event_total Total number of cache events\n"
|
||||
"# TYPE cache_event_total counter\n";
|
||||
for (const auto &counter : cacheCounters) {
|
||||
body += "cache_event_total" + counter.getLabels() + " " +
|
||||
std::to_string(counter.total()) + "\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < metricsCount; ++i) {
|
||||
body += "# HELP ";
|
||||
|
BIN
corpus/00c9af5b41b4ae33c12623b6683b5a0315a6a4d4
Normal file
BIN
corpus/00c9af5b41b4ae33c12623b6683b5a0315a6a4d4
Normal file
Binary file not shown.
BIN
corpus/0164e1ae452d063faa26b90d924f52189f268011
Normal file
BIN
corpus/0164e1ae452d063faa26b90d924f52189f268011
Normal file
Binary file not shown.
BIN
corpus/0325e533cf35c1e7ac95326c9b189911deffb27e
Normal file
BIN
corpus/0325e533cf35c1e7ac95326c9b189911deffb27e
Normal file
Binary file not shown.
BIN
corpus/04239a60051c9a1779d9a896b84eff01f272f191
Normal file
BIN
corpus/04239a60051c9a1779d9a896b84eff01f272f191
Normal file
Binary file not shown.
BIN
corpus/04aae30fd4c1fa9678360ee983a87c11b2d687b4
Normal file
BIN
corpus/04aae30fd4c1fa9678360ee983a87c11b2d687b4
Normal file
Binary file not shown.
BIN
corpus/05a091a7d5e921098504585a4201967860d310c6
Normal file
BIN
corpus/05a091a7d5e921098504585a4201967860d310c6
Normal file
Binary file not shown.
BIN
corpus/0b724429644597a0c8feb3d95dced0c2a48e5ed0
Normal file
BIN
corpus/0b724429644597a0c8feb3d95dced0c2a48e5ed0
Normal file
Binary file not shown.
BIN
corpus/0c7354a5cee7966f239e458621f9b264f4b6f30e
Normal file
BIN
corpus/0c7354a5cee7966f239e458621f9b264f4b6f30e
Normal file
Binary file not shown.
BIN
corpus/0da7d6000805c1f25907f3a2e8499ee119673f28
Normal file
BIN
corpus/0da7d6000805c1f25907f3a2e8499ee119673f28
Normal file
Binary file not shown.
BIN
corpus/10838bd79f36f824c41afa600c86f176f213ff79
Normal file
BIN
corpus/10838bd79f36f824c41afa600c86f176f213ff79
Normal file
Binary file not shown.
BIN
corpus/134be17afe8ab5ca62ce76cfafd523b581e90bb9
Normal file
BIN
corpus/134be17afe8ab5ca62ce76cfafd523b581e90bb9
Normal file
Binary file not shown.
BIN
corpus/158d2f871afe1bf811833d07a03415d89a868efe
Normal file
BIN
corpus/158d2f871afe1bf811833d07a03415d89a868efe
Normal file
Binary file not shown.
BIN
corpus/15f6e61dd6edef971d7c79bef0d14069b0a75c77
Normal file
BIN
corpus/15f6e61dd6edef971d7c79bef0d14069b0a75c77
Normal file
Binary file not shown.
BIN
corpus/16946b8d264a686b091def79de1bfb866a76b167
Normal file
BIN
corpus/16946b8d264a686b091def79de1bfb866a76b167
Normal file
Binary file not shown.
BIN
corpus/1a591c014514af4b723cc6f5f0753319fa57b925
Normal file
BIN
corpus/1a591c014514af4b723cc6f5f0753319fa57b925
Normal file
Binary file not shown.
BIN
corpus/1ab0a409dbf44496ea9d7027ba8898805f396140
Normal file
BIN
corpus/1ab0a409dbf44496ea9d7027ba8898805f396140
Normal file
Binary file not shown.
BIN
corpus/1ac23fb78ff1d7ea8b6ca0e63184fbbc9199e68c
Normal file
BIN
corpus/1ac23fb78ff1d7ea8b6ca0e63184fbbc9199e68c
Normal file
Binary file not shown.
BIN
corpus/1ce3c082d69e7b494e648186d23562d60808c096
Normal file
BIN
corpus/1ce3c082d69e7b494e648186d23562d60808c096
Normal file
Binary file not shown.
BIN
corpus/1e656ebd6c39b9fd6bea8c1bdaf12fe92642d507
Normal file
BIN
corpus/1e656ebd6c39b9fd6bea8c1bdaf12fe92642d507
Normal file
Binary file not shown.
BIN
corpus/1e7430360594743dae681f79880d275d6178b76a
Normal file
BIN
corpus/1e7430360594743dae681f79880d275d6178b76a
Normal file
Binary file not shown.
BIN
corpus/2141828fbf5049e21a703dac83d5726fdf32aaaf
Normal file
BIN
corpus/2141828fbf5049e21a703dac83d5726fdf32aaaf
Normal file
Binary file not shown.
BIN
corpus/21540fec17d78467a6fe450592da42ca03e8e268
Normal file
BIN
corpus/21540fec17d78467a6fe450592da42ca03e8e268
Normal file
Binary file not shown.
BIN
corpus/233112524bdcd6f77d4d51c080039bf1e1358bc2
Normal file
BIN
corpus/233112524bdcd6f77d4d51c080039bf1e1358bc2
Normal file
Binary file not shown.
BIN
corpus/236aae2fbf5a1c6716650bdc0187aadebd0fd4eb
Normal file
BIN
corpus/236aae2fbf5a1c6716650bdc0187aadebd0fd4eb
Normal file
Binary file not shown.
BIN
corpus/29ae192a6404273b14be44d0f06d354e9eb5084b
Normal file
BIN
corpus/29ae192a6404273b14be44d0f06d354e9eb5084b
Normal file
Binary file not shown.
BIN
corpus/2a32a3d39a663771bda1be99ecfbe55ff780d2b2
Normal file
BIN
corpus/2a32a3d39a663771bda1be99ecfbe55ff780d2b2
Normal file
Binary file not shown.
BIN
corpus/2aa2ab713a18bc86e886777cf6008a871e590688
Normal file
BIN
corpus/2aa2ab713a18bc86e886777cf6008a871e590688
Normal file
Binary file not shown.
BIN
corpus/2e28e709dc7a313255964e2c21d3c8c9b6c3ef1d
Normal file
BIN
corpus/2e28e709dc7a313255964e2c21d3c8c9b6c3ef1d
Normal file
Binary file not shown.
BIN
corpus/31bf521be5d9f9e7d99e1384b9ffe26197324c37
Normal file
BIN
corpus/31bf521be5d9f9e7d99e1384b9ffe26197324c37
Normal file
Binary file not shown.
BIN
corpus/3276a649b804693762b06581bf459b2f2accc03e
Normal file
BIN
corpus/3276a649b804693762b06581bf459b2f2accc03e
Normal file
Binary file not shown.
BIN
corpus/34a4d2436527e903d806a63c002cea88522f3a5e
Normal file
BIN
corpus/34a4d2436527e903d806a63c002cea88522f3a5e
Normal file
Binary file not shown.
BIN
corpus/351af0b05e0c3f3c74954de9f5aa64d292d1dcab
Normal file
BIN
corpus/351af0b05e0c3f3c74954de9f5aa64d292d1dcab
Normal file
Binary file not shown.
BIN
corpus/35df5d1e51e37343461d1246ea693ea55ae46413
Normal file
BIN
corpus/35df5d1e51e37343461d1246ea693ea55ae46413
Normal file
Binary file not shown.
BIN
corpus/35e6c44a434a927dbd99a1bb6ddecbd0ecb45754
Normal file
BIN
corpus/35e6c44a434a927dbd99a1bb6ddecbd0ecb45754
Normal file
Binary file not shown.
BIN
corpus/36ae24ff8ae3dae3302e12bcb2acbb7e2574a148
Normal file
BIN
corpus/36ae24ff8ae3dae3302e12bcb2acbb7e2574a148
Normal file
Binary file not shown.
BIN
corpus/3a5cb027cf0d324ad95683dd26c4fee6bfa322c3
Normal file
BIN
corpus/3a5cb027cf0d324ad95683dd26c4fee6bfa322c3
Normal file
Binary file not shown.
BIN
corpus/3ba58d43a24139a702c6d5c83ce3cc9f82bac804
Normal file
BIN
corpus/3ba58d43a24139a702c6d5c83ce3cc9f82bac804
Normal file
Binary file not shown.
BIN
corpus/3bed999a619dbe2eedee03ad5a2d2e8cdbef62f8
Normal file
BIN
corpus/3bed999a619dbe2eedee03ad5a2d2e8cdbef62f8
Normal file
Binary file not shown.
BIN
corpus/3c07b3837fed49692b1fe1b9c1f878d135f3ecda
Normal file
BIN
corpus/3c07b3837fed49692b1fe1b9c1f878d135f3ecda
Normal file
Binary file not shown.
BIN
corpus/3c74b098773c633bb593dc139aaef296e59bd766
Normal file
BIN
corpus/3c74b098773c633bb593dc139aaef296e59bd766
Normal file
Binary file not shown.
BIN
corpus/3d931de827b1030b3e1d35b36a35395b332d80a9
Normal file
BIN
corpus/3d931de827b1030b3e1d35b36a35395b332d80a9
Normal file
Binary file not shown.
BIN
corpus/3e0b0439c9bd2b077379f35731c86f15d1ad67e6
Normal file
BIN
corpus/3e0b0439c9bd2b077379f35731c86f15d1ad67e6
Normal file
Binary file not shown.
BIN
corpus/3f2da99062acb638cb5036c847d1cf3edaafc787
Normal file
BIN
corpus/3f2da99062acb638cb5036c847d1cf3edaafc787
Normal file
Binary file not shown.
BIN
corpus/4151500a97ee02841d558a8d5a366a2a8ba679b2
Normal file
BIN
corpus/4151500a97ee02841d558a8d5a366a2a8ba679b2
Normal file
Binary file not shown.
BIN
corpus/41539eb8863f7459144f13a027c931229d744349
Normal file
BIN
corpus/41539eb8863f7459144f13a027c931229d744349
Normal file
Binary file not shown.
BIN
corpus/46e31ef9b45b3ad66b33b2ff28b6357b7c9836d2
Normal file
BIN
corpus/46e31ef9b45b3ad66b33b2ff28b6357b7c9836d2
Normal file
Binary file not shown.
BIN
corpus/48330eecab1796945467ce1bc5896e96c6ee0cd6
Normal file
BIN
corpus/48330eecab1796945467ce1bc5896e96c6ee0cd6
Normal file
Binary file not shown.
BIN
corpus/484197fdd1b45c22e42042bb7bd4b2eb8475eeab
Normal file
BIN
corpus/484197fdd1b45c22e42042bb7bd4b2eb8475eeab
Normal file
Binary file not shown.
BIN
corpus/494bfcf88bc305649d5296dcd44a79b55e63f199
Normal file
BIN
corpus/494bfcf88bc305649d5296dcd44a79b55e63f199
Normal file
Binary file not shown.
BIN
corpus/4a31e09cd8d98f2f1b5485a6e9448b3d0f18dd41
Normal file
BIN
corpus/4a31e09cd8d98f2f1b5485a6e9448b3d0f18dd41
Normal file
Binary file not shown.
BIN
corpus/4ad43b5c18088e5f1aedca8ebaddeb509dc5e268
Normal file
BIN
corpus/4ad43b5c18088e5f1aedca8ebaddeb509dc5e268
Normal file
Binary file not shown.
BIN
corpus/4cd1d2a53abe09e67d764ad05991fc0c49261eb3
Normal file
BIN
corpus/4cd1d2a53abe09e67d764ad05991fc0c49261eb3
Normal file
Binary file not shown.
BIN
corpus/4d8ad2784eaf3d6a3ddeb2424d5c75a95e417252
Normal file
BIN
corpus/4d8ad2784eaf3d6a3ddeb2424d5c75a95e417252
Normal file
Binary file not shown.
BIN
corpus/4e6104dac785c753c166da59ea1a1646217bfc6e
Normal file
BIN
corpus/4e6104dac785c753c166da59ea1a1646217bfc6e
Normal file
Binary file not shown.
BIN
corpus/52cadbafc428ca921e6053b5e82867417337c92b
Normal file
BIN
corpus/52cadbafc428ca921e6053b5e82867417337c92b
Normal file
Binary file not shown.
BIN
corpus/54807c2d37bb3e47f6042beee1b508bb022699ca
Normal file
BIN
corpus/54807c2d37bb3e47f6042beee1b508bb022699ca
Normal file
Binary file not shown.
BIN
corpus/561bd20b55c4467ba932999b8a5a7a73ebb77b09
Normal file
BIN
corpus/561bd20b55c4467ba932999b8a5a7a73ebb77b09
Normal file
Binary file not shown.
BIN
corpus/572de429bbad5360c133ee2eb609d19db2d62e9c
Normal file
BIN
corpus/572de429bbad5360c133ee2eb609d19db2d62e9c
Normal file
Binary file not shown.
BIN
corpus/5954b3b4be666cc702277edb0e50d0f2bcfef42f
Normal file
BIN
corpus/5954b3b4be666cc702277edb0e50d0f2bcfef42f
Normal file
Binary file not shown.
BIN
corpus/5d24680a1a0033cc3201d0662b2ee27f3f5fef71
Normal file
BIN
corpus/5d24680a1a0033cc3201d0662b2ee27f3f5fef71
Normal file
Binary file not shown.
BIN
corpus/5e0c4292ae5deebeddb5dfafbca8910de4d47f4c
Normal file
BIN
corpus/5e0c4292ae5deebeddb5dfafbca8910de4d47f4c
Normal file
Binary file not shown.
BIN
corpus/5e9f11a3626a4fffc92c226f41bb16745f91708c
Normal file
BIN
corpus/5e9f11a3626a4fffc92c226f41bb16745f91708c
Normal file
Binary file not shown.
BIN
corpus/6383fbe0cd35f501116fa8325165a7f8e2c06ee1
Normal file
BIN
corpus/6383fbe0cd35f501116fa8325165a7f8e2c06ee1
Normal file
Binary file not shown.
BIN
corpus/655fb2b824e340200fd4d07474edd006a4c652bb
Normal file
BIN
corpus/655fb2b824e340200fd4d07474edd006a4c652bb
Normal file
Binary file not shown.
BIN
corpus/66412d9a19faa194559619f741d7a5d889c09bcb
Normal file
BIN
corpus/66412d9a19faa194559619f741d7a5d889c09bcb
Normal file
Binary file not shown.
1
corpus/66dd4e8dcb924609d0befb8846f1a0ed77891d80
Normal file
1
corpus/66dd4e8dcb924609d0befb8846f1a0ed77891d80
Normal file
@@ -0,0 +1 @@
|
||||
n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2nn<EFBFBD><EFBFBD><EFBFBD>
|
BIN
corpus/692b1f55a7228b3a49c6d0588fb32c228105b680
Normal file
BIN
corpus/692b1f55a7228b3a49c6d0588fb32c228105b680
Normal file
Binary file not shown.
BIN
corpus/6bfe56396c580d3af96fabf0a10e579b2efa17f1
Normal file
BIN
corpus/6bfe56396c580d3af96fabf0a10e579b2efa17f1
Normal file
Binary file not shown.
BIN
corpus/6ea4c6f98ac399c0df7adf15f0f988f316c87743
Normal file
BIN
corpus/6ea4c6f98ac399c0df7adf15f0f988f316c87743
Normal file
Binary file not shown.
BIN
corpus/6f264e10a7118afa70bf09c4c41eeba3a7ca8830
Normal file
BIN
corpus/6f264e10a7118afa70bf09c4c41eeba3a7ca8830
Normal file
Binary file not shown.
BIN
corpus/6f5d60d25770f597a46853f7b851c93b6b07817b
Normal file
BIN
corpus/6f5d60d25770f597a46853f7b851c93b6b07817b
Normal file
Binary file not shown.
BIN
corpus/71cf9feba09ecb14c67769b79af7a3e17db96fc7
Normal file
BIN
corpus/71cf9feba09ecb14c67769b79af7a3e17db96fc7
Normal file
Binary file not shown.
BIN
corpus/741499f04b663d651df0969791c1b9d84f8257a0
Normal file
BIN
corpus/741499f04b663d651df0969791c1b9d84f8257a0
Normal file
Binary file not shown.
BIN
corpus/787c062d8bc33ebfa4b713a15c40c112e645388b
Normal file
BIN
corpus/787c062d8bc33ebfa4b713a15c40c112e645388b
Normal file
Binary file not shown.
BIN
corpus/7a7e83fe9786d524affcd89b11b999a895ed41e2
Normal file
BIN
corpus/7a7e83fe9786d524affcd89b11b999a895ed41e2
Normal file
Binary file not shown.
BIN
corpus/7b521af42edcb97bf09e40f9c773cce413303d3d
Normal file
BIN
corpus/7b521af42edcb97bf09e40f9c773cce413303d3d
Normal file
Binary file not shown.
BIN
corpus/7d30c505fa35817155c05a28865f0b717d5dafbb
Normal file
BIN
corpus/7d30c505fa35817155c05a28865f0b717d5dafbb
Normal file
Binary file not shown.
BIN
corpus/7f8c814a9018ab9d468594964d6e7cae361a417d
Normal file
BIN
corpus/7f8c814a9018ab9d468594964d6e7cae361a417d
Normal file
Binary file not shown.
BIN
corpus/83b156a1226eb956277c17866de80aa445c1a957
Normal file
BIN
corpus/83b156a1226eb956277c17866de80aa445c1a957
Normal file
Binary file not shown.
BIN
corpus/85071ebfc498d2efef56ddab909c7b620150f06f
Normal file
BIN
corpus/85071ebfc498d2efef56ddab909c7b620150f06f
Normal file
Binary file not shown.
BIN
corpus/8536fc6a83a01ddf77b6b9ed3c42c43068ab9bce
Normal file
BIN
corpus/8536fc6a83a01ddf77b6b9ed3c42c43068ab9bce
Normal file
Binary file not shown.
BIN
corpus/8a424a8152063157d97fbccf0caa08170ce54cef
Normal file
BIN
corpus/8a424a8152063157d97fbccf0caa08170ce54cef
Normal file
Binary file not shown.
BIN
corpus/8c2d3625dd46e54bf7a6b17a1ba52c7a61aa5c34
Normal file
BIN
corpus/8c2d3625dd46e54bf7a6b17a1ba52c7a61aa5c34
Normal file
Binary file not shown.
BIN
corpus/8db6490863a8b4287d702480d565aabe9789b971
Normal file
BIN
corpus/8db6490863a8b4287d702480d565aabe9789b971
Normal file
Binary file not shown.
BIN
corpus/8e871f447604dcdd1b52711d91de8f886c6e005f
Normal file
BIN
corpus/8e871f447604dcdd1b52711d91de8f886c6e005f
Normal file
Binary file not shown.
BIN
corpus/91c838cb372d5023474bc9c15ea5aa3e48a30414
Normal file
BIN
corpus/91c838cb372d5023474bc9c15ea5aa3e48a30414
Normal file
Binary file not shown.
BIN
corpus/948ad422bf8ada9dd219e01f173f566589ce86a3
Normal file
BIN
corpus/948ad422bf8ada9dd219e01f173f566589ce86a3
Normal file
Binary file not shown.
BIN
corpus/9629a746347892fe0f16a97b283b1d83dd2f0baf
Normal file
BIN
corpus/9629a746347892fe0f16a97b283b1d83dd2f0baf
Normal file
Binary file not shown.
BIN
corpus/974691442cb6e115ed5ee5f60de93252e61ab501
Normal file
BIN
corpus/974691442cb6e115ed5ee5f60de93252e61ab501
Normal file
Binary file not shown.
BIN
corpus/9761f34f6b55d26b9d1de6411aa88a40d8a623a8
Normal file
BIN
corpus/9761f34f6b55d26b9d1de6411aa88a40d8a623a8
Normal file
Binary file not shown.
BIN
corpus/97b7b08317abc0847ff8bc24df5dca33a553b805
Normal file
BIN
corpus/97b7b08317abc0847ff8bc24df5dca33a553b805
Normal file
Binary file not shown.
BIN
corpus/9d3024f064aea96bf7392ca3f71e01ac5493453e
Normal file
BIN
corpus/9d3024f064aea96bf7392ca3f71e01ac5493453e
Normal file
Binary file not shown.
BIN
corpus/9f01be2faa897171ddb18c00a9233b6cd50c8d3e
Normal file
BIN
corpus/9f01be2faa897171ddb18c00a9233b6cd50c8d3e
Normal file
Binary file not shown.
BIN
corpus/a1f3e17c5c4b73fab0c8c1e3f72ae566f70910ab
Normal file
BIN
corpus/a1f3e17c5c4b73fab0c8c1e3f72ae566f70910ab
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user