glin-profanity 2.3.8 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,65 +1,21 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __commonJS = (cb, mod) => function __require() {
25
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
26
- };
27
- var __copyProps = (to, from, except, desc) => {
28
- if (from && typeof from === "object" || typeof from === "function") {
29
- for (let key of __getOwnPropNames(from))
30
- if (!__hasOwnProp.call(to, key) && key !== except)
31
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
- }
33
- return to;
34
- };
35
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
36
- // If the importer is in node compatibility mode or this is not an ESM
37
- // file that has been converted to a CommonJS file using a Babel-
38
- // compatible transform (i.e. "__esModule" has not been set), then set
39
- // "default" to the CommonJS "module.exports" for node compatibility.
40
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
41
- mod
42
- ));
43
- var __async = (__this, __arguments, generator) => {
44
- return new Promise((resolve, reject) => {
45
- var fulfilled = (value) => {
46
- try {
47
- step(generator.next(value));
48
- } catch (e) {
49
- reject(e);
50
- }
51
- };
52
- var rejected = (value) => {
53
- try {
54
- step(generator.throw(value));
55
- } catch (e) {
56
- reject(e);
57
- }
58
- };
59
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
60
- step((generator = generator.apply(__this, __arguments)).next());
61
- });
62
- };
1
+ import {
2
+ Filter,
3
+ SeverityLevel,
4
+ __commonJS,
5
+ __toESM,
6
+ collapseRepeatedCharacters,
7
+ collapseSpacedCharacters,
8
+ containsLeetspeak,
9
+ containsUnicodeObfuscation,
10
+ convertFullWidth,
11
+ convertHomoglyphs,
12
+ detectCharacterSets,
13
+ generateLeetspeakVariants,
14
+ normalizeLeetspeak,
15
+ normalizeNFKD,
16
+ normalizeUnicode,
17
+ removeZeroWidthCharacters
18
+ } from "./chunk-KNHWF6MX.js";
63
19
 
64
20
  // ../../node_modules/react/cjs/react.production.min.js
65
21
  var require_react_production_min = __commonJS({
@@ -2220,3230 +2176,6 @@ var require_react = __commonJS({
2220
2176
  }
2221
2177
  });
2222
2178
 
2223
- // ../../shared/dictionaries/arabic.json
2224
- var arabic_default = {
2225
- words: [
2226
- "\u0633\u0643\u0633",
2227
- "\u0637\u064A\u0632",
2228
- "\u0634\u0631\u062C",
2229
- "\u0644\u0639\u0642",
2230
- "\u0644\u062D\u0633",
2231
- "\u062A\u0645\u0635",
2232
- "\u0628\u064A\u0636\u0627\u0646",
2233
- "\u062B\u062F\u064A",
2234
- "\u0628\u0632",
2235
- "\u062D\u0644\u0645\u0629",
2236
- "\u0645\u0641\u0644\u0642\u0633\u0629",
2237
- "\u0628\u0638\u0631",
2238
- "\u0643\u0633",
2239
- "\u0645\u0628\u0627\u062F\u0644",
2240
- "\u0639\u0627\u0647\u0631\u0629",
2241
- "\u062C\u0645\u0627\u0639",
2242
- "\u0642\u0636\u064A\u0628",
2243
- "\u0632\u0628",
2244
- "\u0644\u0648\u0637\u064A",
2245
- "\u0644\u0648\u0627\u0637",
2246
- "\u0633\u062D\u0627\u0642",
2247
- "\u0627\u063A\u062A\u0635\u0627\u0628",
2248
- "\u062E\u0646\u062B\u064A",
2249
- "\u0627\u062D\u062A\u0644\u0627\u0645",
2250
- "\u0646\u064A\u0643",
2251
- "\u0645\u062A\u0646\u0627\u0643",
2252
- "\u0634\u0631\u0645\u0648\u0637\u0629",
2253
- "\u0639\u0631\u0635",
2254
- "\u062E\u0648\u0644",
2255
- "\u0642\u062D\u0628\u0629",
2256
- "\u0644\u0628\u0648\u0629",
2257
- "\u0648\u0633\u062E",
2258
- "\u0639\u0644\u0642",
2259
- "\u0646\u0627\u0643",
2260
- "\u0645\u0646\u064A\u0643",
2261
- "\u0634\u0631\u0645\u0637",
2262
- "\u0642\u062D\u0628",
2263
- "\u0634\u0631\u0645\u0648\u0637",
2264
- "\u062E\u0648\u0644",
2265
- "\u0647\u0646\u064A\u0643",
2266
- "\u0641\u062D\u0644",
2267
- "\u062F\u064A\u0648\u062B",
2268
- "\u0645\u062A\u0646\u0627\u0643",
2269
- "\u0647\u0627\u064A\u062C",
2270
- "\u0632\u0628\u0631",
2271
- "bdsm",
2272
- "\u0632\u0627\u0646",
2273
- "\u0633\u0627\u062F\u064A",
2274
- "\u0633\u0627\u062F\u0649",
2275
- "\u0643\u0633\u0647\u0627",
2276
- "\u0643\u0633\u064A",
2277
- "\u0643\u0633\u0643",
2278
- "\u0643\u0633\u0645",
2279
- "\u0628\u0646\u062A\u0627\u0643",
2280
- "\u0628\u062A\u0646\u0627\u0643",
2281
- "\u0646\u064A\u0643\u0646\u064A",
2282
- "\u062F\u064A\u0648\u062B",
2283
- "\u0646\u064A\u0627\u0643",
2284
- "\u0641\u0634\u0627\u062E",
2285
- "\u0641\u0634\u062E",
2286
- "\u0647\u0641\u0634\u062E\u0643",
2287
- "\u0634\u0630\u0648\u0630",
2288
- "\u0644\u0648\u0627\u0637",
2289
- "\u0644\u0648\u0637\u064A",
2290
- "\u0644\u0648\u0637\u0649",
2291
- "\u0639\u0627\u0647\u0631",
2292
- "\u0644\u062D\u0633",
2293
- "\u0645\u062A\u0639",
2294
- "\u062D\u0645\u0627\u0645",
2295
- "\u0647\u0631\u0628\u0637",
2296
- "\u062F\u064A\u0627\u062B",
2297
- "\u0633\u062D\u0627\u0642",
2298
- "\u062C\u0646\u0633",
2299
- "\u062C\u0646\u0633",
2300
- "\u062C\u0648\u0632\u064A",
2301
- "\u0645\u0631\u0627\u062A\u064A",
2302
- "\u0645\u0631\u0627\u062A\u0649",
2303
- "\u0645\u0631\u0627\u062A",
2304
- "\u0648\u0631\u0627",
2305
- "\u0634\u0639\u0631",
2306
- "\u0645\u0634\u0639\u0631",
2307
- "\u0627\u0631\u0643\u0628",
2308
- "\u0641\u0631\u0633",
2309
- "\u062C\u0627\u062F",
2310
- "\u0645\u0646\u064A\u0648\u0643",
2311
- "\u0632\u0648\u0628\u0631",
2312
- "\u0637\u064A\u0627\u0632",
2313
- "\u0634\u0631\u0627\u0645\u064A\u0637",
2314
- "\u0641\u0627\u062C\u0631",
2315
- "\u0645\u062D\u0631\u0648\u0645",
2316
- "\u0648\u0627\u0642\u0641",
2317
- "\u0628\u064A\u062D\u0643",
2318
- "\u0645\u0645\u062D\u0648\u0646\u0629",
2319
- "\u0644\u0628\u0646",
2320
- "\u0644\u0628\u0648",
2321
- "\u0648\u0627\u0642\u0641",
2322
- "\u0634\u0631\u0642\u0627\u0646",
2323
- "\u0627\u0641\u0636\u064A",
2324
- "\u062F\u0647\u0648\u0644\u062A",
2325
- "bzaz",
2326
- "nek",
2327
- "nik",
2328
- "mtnak",
2329
- "zeb",
2330
- "zep",
2331
- "zobr",
2332
- "zopr",
2333
- "kos",
2334
- "a7a",
2335
- "hayg",
2336
- "\u0644\u0628\u0648\u0647",
2337
- "\u0644\u0628\u0648\u0629",
2338
- "\u0644\u0628\u0648\u062A",
2339
- "sharma",
2340
- "banoty",
2341
- "\u0628\u0646\u0648\u062A\u064A",
2342
- "\u0628\u0646\u0648\u062A\u0649",
2343
- "\u0633\u0644\u0628",
2344
- "\u0639\u0627\u064A\u0632",
2345
- "\u062F\u0643\u0631",
2346
- "\u0646\u062A\u0627\u064A\u0629",
2347
- "\u0646\u062A\u0627\u064A\u0647",
2348
- "\u0632\u0646\u062C",
2349
- "\u0645\u0645\u062D\u0648\u0646",
2350
- "\u062A\u0639\u0628\u0627\u0646",
2351
- "\u0627\u0642\u0639\u062F",
2352
- "\u0628\u0632\u0627\u0632",
2353
- "\u0647\u064A\u062C\u0627\u0646",
2354
- "\u0633\u0627\u0641\u0644",
2355
- "\u0645\u0635\u064A\u0647\u0648\u0644\u064A",
2356
- "\u0647\u062A\u0645\u0635",
2357
- "\u0645\u0635\u064A",
2358
- "\u0628\u0632",
2359
- "hayg",
2360
- "\u0643\u0644\u0648\u062A",
2361
- "\u0627\u0646\u062F\u0631",
2362
- "\u0633\u0646\u062A\u064A\u0627",
2363
- "\u0628\u0648\u0643\u0633\u0631",
2364
- "\u0628\u062A\u0627\u0639",
2365
- "\u0645\u0634\u062A\u0647\u064A",
2366
- "\u0632\u0628\u0649",
2367
- "\u0646\u0643\u062A\u0647",
2368
- "\u0627\u062A\u0646\u0627\u0643",
2369
- "nayak",
2370
- "nyak",
2371
- "neeek",
2372
- "\u0627\u063A\u062A\u0635\u0627",
2373
- "\u0632\u0628",
2374
- "\u0643\u0633",
2375
- "\u0628\u0644\u0643\u064A\u0634\u0646",
2376
- "\u0643\u064A\u0634\u0646",
2377
- "\u0644\u064A\u0633\u0628\u064A\u0627\u0646",
2378
- "\u0633\u0628\u064A\u0627\u0646"
2379
- ]
2380
- };
2381
-
2382
- // ../../shared/dictionaries/chinese.json
2383
- var chinese_default = {
2384
- words: [
2385
- "13.",
2386
- "13\u70B9",
2387
- "\u4E09\u7EA7\u7247",
2388
- "\u4E0B\u4E09\u70C2",
2389
- "\u4E0B\u8D31",
2390
- "\u4E2A\u8001\u5B50\u7684",
2391
- "\u4E5D\u6E38",
2392
- "\u4E73",
2393
- "\u4E73\u4EA4",
2394
- "\u4E73\u5934",
2395
- "\u4E73\u623F",
2396
- "\u4E73\u6CE2\u81C0\u6D6A",
2397
- "\u4EA4\u914D",
2398
- "\u4EC6\u8857",
2399
- "\u4ED6\u5976\u5976",
2400
- "\u4ED6\u5976\u5976\u7684",
2401
- "\u4ED6\u5976\u5A18\u7684",
2402
- "\u4ED6\u5988",
2403
- "\u4ED6\u5988\u3109\u738B\u516B\u86CB",
2404
- "\u4ED6\u5988\u5730",
2405
- "\u4ED6\u5988\u7684",
2406
- "\u4ED6\u5A18",
2407
- "\u4ED6\u9A6C\u7684",
2408
- "\u4F60\u4E2A\u50BB\u6BD4",
2409
- "\u4F60\u4ED6\u9A6C\u7684",
2410
- "\u4F60\u5168\u5BB6",
2411
- "\u4F60\u5976\u5976\u7684",
2412
- "\u4F60\u5979\u9A6C\u7684",
2413
- "\u4F60\u5988",
2414
- "\u4F60\u5988\u7684",
2415
- "\u4F60\u5A18",
2416
- "\u4F60\u5A18\u5361\u597D",
2417
- "\u4F60\u5A18\u54A7",
2418
- "\u4F60\u5B83\u5988\u7684",
2419
- "\u4F60\u5B83\u9A6C\u7684",
2420
- "\u4F60\u662F\u9E21",
2421
- "\u4F60\u662F\u9E2D",
2422
- "\u4F60\u9A6C\u7684",
2423
- "\u505A\u7231",
2424
- "\u50BB\u6BD4",
2425
- "\u50BB\u903C",
2426
- "\u518C\u90A3",
2427
- "\u519B\u5993",
2428
- "\u51E0\u516B",
2429
- "\u51E0\u53ED",
2430
- "\u51E0\u5DF4",
2431
- "\u51E0\u82AD",
2432
- "\u521A\u5EA6",
2433
- "\u521A\u762A\u4E09",
2434
- "\u5305\u76AE",
2435
- "\u5341\u4E09\u70B9",
2436
- "\u5356B",
2437
- "\u5356\u6BD4",
2438
- "\u5356\u6DEB",
2439
- "\u5375",
2440
- "\u5375\u5B50",
2441
- "\u53CC\u5CF0\u5FAE\u98A4",
2442
- "\u53E3\u4EA4",
2443
- "\u53E3\u80AF",
2444
- "\u53EB\u5E8A",
2445
- "\u5403\u5C4E",
2446
- "\u540E\u5EAD",
2447
- "\u5439\u7BAB",
2448
- "\u585E\u4F60\u516C",
2449
- "\u585E\u4F60\u5A18",
2450
- "\u585E\u4F60\u6BCD",
2451
- "\u585E\u4F60\u7238",
2452
- "\u585E\u4F60\u8001\u5E08",
2453
- "\u585E\u4F60\u8001\u6BCD",
2454
- "\u5904\u5973",
2455
- "\u5916\u9634",
2456
- "\u5927\u5375\u5B50",
2457
- "\u5927\u5375\u6CE1",
2458
- "\u5927\u9E21\u5DF4",
2459
- "\u5976",
2460
- "\u5976\u5976\u7684\u718A",
2461
- "\u5976\u5B50",
2462
- "\u5978",
2463
- "\u5978\u4F60",
2464
- "\u5979\u5988\u5730",
2465
- "\u5979\u5988\u7684",
2466
- "\u5979\u9A6C\u7684",
2467
- "\u5988B",
2468
- "\u5988\u4E2AB",
2469
- "\u5988\u4E2A\u6BD4",
2470
- "\u5988\u4E2A\u8001\u6BD4",
2471
- "\u5988\u5988\u7684",
2472
- "\u5988\u6BD4",
2473
- "\u5988\u7684",
2474
- "\u5988\u7684B",
2475
- "\u5988\u903C",
2476
- "\u5993",
2477
- "\u5993\u5973",
2478
- "\u5993\u9662",
2479
- "\u59B3\u5979\u5988\u7684",
2480
- "\u59B3\u5988\u7684",
2481
- "\u59B3\u5A18\u7684",
2482
- "\u59B3\u8001\u6BCD\u7684",
2483
- "\u59B3\u9A6C\u7684",
2484
- "\u59D8\u5934",
2485
- "\u59E3\u897F",
2486
- "\u59E6",
2487
- "\u5A18\u4E2A\u6BD4",
2488
- "\u5A18\u7684",
2489
- "\u5A4A\u5B50",
2490
- "\u5A4A\u5B50\u517B\u7684",
2491
- "\u5AD6\u5A3C",
2492
- "\u5AD6\u5BA2",
2493
- "\u5B83\u5988\u5730",
2494
- "\u5B83\u5988\u7684",
2495
- "\u5BC6\u6D1E",
2496
- "\u5C04\u4F60",
2497
- "\u5C04\u7CBE",
2498
- "\u5C0F\u4E73\u5934",
2499
- "\u5C0F\u5375\u5B50",
2500
- "\u5C0F\u5375\u6CE1",
2501
- "\u5C0F\u762A\u4E09",
2502
- "\u5C0F\u8089\u7C92",
2503
- "\u5C0F\u9A9A\u6BD4",
2504
- "\u5C0F\u9A9A\u8D27",
2505
- "\u5C0F\u9E21\u5DF4",
2506
- "\u5C0F\u9E21\u9E21",
2507
- "\u5C41\u773C",
2508
- "\u5C41\u80A1",
2509
- "\u5C44",
2510
- "\u5C4C",
2511
- "\u5DE8\u4E73",
2512
- "\u5E72x\u5A18",
2513
- "\u5E72\u4E03\u516B",
2514
- "\u5E72\u4F60",
2515
- "\u5E72\u4F60\u5988",
2516
- "\u5E72\u4F60\u5A18",
2517
- "\u5E72\u4F60\u8001\u6BCD",
2518
- "\u5E72\u4F60\u826F",
2519
- "\u5E72\u59B3\u5988",
2520
- "\u5E72\u59B3\u5A18",
2521
- "\u5E72\u59B3\u8001\u6BCD",
2522
- "\u5E72\u59B3\u9A6C",
2523
- "\u5E72\u60A8\u5A18",
2524
- "\u5E72\u673A\u63B0",
2525
- "\u5E72\u6B7BCS",
2526
- "\u5E72\u6B7BGM",
2527
- "\u5E72\u6B7B\u4F60",
2528
- "\u5E72\u6B7B\u5BA2\u670D",
2529
- "\u5E79",
2530
- "\u5F3A\u5978",
2531
- "\u5F3A\u5978\u4F60",
2532
- "\u6027",
2533
- "\u6027\u4EA4",
2534
- "\u6027\u5668",
2535
- "\u6027\u65E0\u80FD",
2536
- "\u6027\u7231",
2537
- "\u60C5\u8272",
2538
- "\u60F3\u4E0A\u4F60",
2539
- "\u61C6\u60A8\u5988",
2540
- "\u61C6\u60A8\u5A18",
2541
- "\u61D28",
2542
- "\u61D2\u516B",
2543
- "\u61D2\u53EB",
2544
- "\u61D2\u6559",
2545
- "\u6210\u4EBA",
2546
- "\u6211\u64CD\u4F60\u7956\u5B97\u5341\u516B\u4EE3",
2547
- "\u6252\u5149",
2548
- "\u6253\u70AE",
2549
- "\u6253\u98DE\u673A",
2550
- "\u62BD\u63D2",
2551
- "\u62DB\u5993",
2552
- "\u63D2\u4F60",
2553
- "\u63D2\u6B7B\u4F60",
2554
- "\u6492\u5C3F",
2555
- "\u64CD\u4F60",
2556
- "\u64CD\u4F60\u5168\u5BB6",
2557
- "\u64CD\u4F60\u5976\u5976",
2558
- "\u64CD\u4F60\u5988",
2559
- "\u64CD\u4F60\u5A18",
2560
- "\u64CD\u4F60\u7956\u5B97",
2561
- "\u64CD\u4F60\u8001\u5988",
2562
- "\u64CD\u4F60\u8001\u6BCD",
2563
- "\u64CD\u59B3",
2564
- "\u64CD\u59B3\u5168\u5BB6",
2565
- "\u64CD\u59B3\u5988",
2566
- "\u64CD\u59B3\u5A18",
2567
- "\u64CD\u59B3\u7956\u5B97",
2568
- "\u64CD\u673A\u63B0",
2569
- "\u64CD\u6BD4",
2570
- "\u64CD\u903C",
2571
- "\u653E\u8361",
2572
- "\u65E5\u4ED6\u5A18",
2573
- "\u65E5\u4F60",
2574
- "\u65E5\u4F60\u5988",
2575
- "\u65E5\u4F60\u8001\u5A18",
2576
- "\u65E5\u4F60\u8001\u6BCD",
2577
- "\u65E5\u6279",
2578
- "\u6708\u7ECF",
2579
- "\u673A\u516B",
2580
- "\u673A\u5DF4",
2581
- "\u673A\u673A\u6B6A\u6B6A",
2582
- "\u6742\u79CD",
2583
- "\u6D6A\u53EB",
2584
- "\u6DEB",
2585
- "\u6DEB\u4E71",
2586
- "\u6DEB\u5987",
2587
- "\u6DEB\u68CD",
2588
- "\u6DEB\u6C34",
2589
- "\u6DEB\u79FD",
2590
- "\u6DEB\u8361",
2591
- "\u6DEB\u897F",
2592
- "\u6E7F\u900F\u7684\u5185\u88E4",
2593
- "\u6FC0\u60C5",
2594
- "\u7068\u4F60\u5A18",
2595
- "\u70C2\u8D27",
2596
- "\u70C2\u903C",
2597
- "\u721B",
2598
- "\u72D7\u5C41",
2599
- "\u72D7\u65E5",
2600
- "\u72D7\u72FC\u517B\u7684",
2601
- "\u7389\u6775",
2602
- "\u738B\u516B\u86CB",
2603
- "\u74DC\u5A03\u5B50",
2604
- "\u74DC\u5A46\u5A18",
2605
- "\u74DC\u6279",
2606
- "\u762A\u4E09",
2607
- "\u767D\u70C2",
2608
- "\u767D\u75F4",
2609
- "\u767D\u7661",
2610
- "\u7956\u5B97",
2611
- "\u79C1\u670D",
2612
- "\u7B28\u86CB",
2613
- "\u7CBE\u5B50",
2614
- "\u8001\u4E8C",
2615
- "\u8001\u5473",
2616
- "\u8001\u6BCD",
2617
- "\u8001\u762A\u4E09",
2618
- "\u8001\u9A9A\u6BD4",
2619
- "\u8001\u9A9A\u8D27",
2620
- "\u8089\u58C1",
2621
- "\u8089\u68CD\u5B50",
2622
- "\u8089\u68D2",
2623
- "\u8089\u7F1D",
2624
- "\u808F",
2625
- "\u809B\u4EA4",
2626
- "\u80A5\u897F",
2627
- "\u8272\u60C5",
2628
- "\u82B1\u67F3",
2629
- "\u8361\u5987",
2630
- "\u8CE4",
2631
- "\u8D1D\u8089",
2632
- "\u8D31B",
2633
- "\u8D31\u4EBA",
2634
- "\u8D31\u8D27",
2635
- "\u8D3C\u4F60\u5988",
2636
- "\u8D5B\u4F60\u8001\u6BCD",
2637
- "\u8D5B\u59B3\u963F\u6BCD",
2638
- "\u8D63\u60A8\u5A18",
2639
- "\u8F6E\u5978",
2640
- "\u8FF7\u836F",
2641
- "\u903C",
2642
- "\u903C\u6837",
2643
- "\u91CE\u9E21",
2644
- "\u9633\u5177",
2645
- "\u9633\u840E",
2646
- "\u9634\u5507",
2647
- "\u9634\u6237",
2648
- "\u9634\u6838",
2649
- "\u9634\u6BDB",
2650
- "\u9634\u830E",
2651
- "\u9634\u9053",
2652
- "\u9634\u90E8",
2653
- "\u96DE\u5DF4",
2654
- "\u9760\u5317",
2655
- "\u9760\u6BCD",
2656
- "\u9760\u7238",
2657
- "\u9760\u80CC",
2658
- "\u9760\u8170",
2659
- "\u9A76\u4F60\u516C",
2660
- "\u9A76\u4F60\u5A18",
2661
- "\u9A76\u4F60\u6BCD",
2662
- "\u9A76\u4F60\u7238",
2663
- "\u9A76\u4F60\u8001\u5E08",
2664
- "\u9A76\u4F60\u8001\u6BCD",
2665
- "\u9A9A\u6BD4",
2666
- "\u9A9A\u8D27",
2667
- "\u9A9A\u903C",
2668
- "\u9B3C\u516C",
2669
- "\u9E218",
2670
- "\u9E21\u516B",
2671
- "\u9E21\u53ED",
2672
- "\u9E21\u5427",
2673
- "\u9E21\u5978",
2674
- "\u9E21\u5DF4",
2675
- "\u9E21\u82AD",
2676
- "\u9E21\u9E21",
2677
- "\u9F9F\u513F\u5B50",
2678
- "\u9F9F\u5934"
2679
- ]
2680
- };
2681
-
2682
- // ../../shared/dictionaries/czech.json
2683
- var czech_default = {
2684
- words: [
2685
- "bordel",
2686
- "buzna",
2687
- "\u010Dum\u011Bt",
2688
- "\u010Dur\xE1k",
2689
- "debil",
2690
- "do pi\u010De",
2691
- "do prdele",
2692
- "dr\u0161\u0165ka",
2693
- "dr\u017Eka",
2694
- "flundra",
2695
- "hajzl",
2696
- "hovno",
2697
- "chcanky",
2698
- "chuj",
2699
- "jebat",
2700
- "kokot",
2701
- "kokotina",
2702
- "ko\u0148omrd",
2703
- "kunda",
2704
- "kurva",
2705
- "mamrd",
2706
- "mrdat",
2707
- "mrdka",
2708
- "mrdn\xEDk",
2709
- "oslo\u0161oust",
2710
- "pi\u010Da",
2711
- "p\xED\u010Dus",
2712
- "p\xEDchat",
2713
- "pizda",
2714
- "prcat",
2715
- "prdel",
2716
- "prdelka",
2717
- "sra\u010Dka",
2718
- "sr\xE1t",
2719
- "\u0161oustat",
2720
- "\u0161ulin",
2721
- "vyp\xED\u010Denec",
2722
- "zkurvit",
2723
- "zkurvysyn",
2724
- "zmrd",
2725
- "\u017Er\xE1t"
2726
- ]
2727
- };
2728
-
2729
- // ../../shared/dictionaries/danish.json
2730
- var danish_default = {
2731
- words: [
2732
- "anus",
2733
- "b\xF8sser\xF8v",
2734
- "cock",
2735
- "fisse",
2736
- "fisseh\xE5r",
2737
- "fuck",
2738
- "hestepik",
2739
- "kussekryller",
2740
- "lort",
2741
- "luder",
2742
- "pik",
2743
- "pikh\xE5r",
2744
- "pikslugeri",
2745
- "piksutteri",
2746
- "pis",
2747
- "r\xF8v",
2748
- "r\xF8vhul",
2749
- "r\xF8vsk\xE6g",
2750
- "r\xF8vspr\xE6ke",
2751
- "shit"
2752
- ]
2753
- };
2754
-
2755
- // ../../shared/dictionaries/esperanto.json
2756
- var esperanto_default = {
2757
- words: [
2758
- "bugren",
2759
- "bugri",
2760
- "bugru",
2761
- "\u0109iesulino",
2762
- "\u0109iesulo",
2763
- "diofek",
2764
- "diofeka",
2765
- "fek",
2766
- "feken",
2767
- "fekfikanto",
2768
- "feklekulo",
2769
- "fekulo",
2770
- "fik",
2771
- "fikado",
2772
- "fikema",
2773
- "fikfek",
2774
- "fiki",
2775
- "fiki\u011Di",
2776
- "fiki\u011Du",
2777
- "fikilo",
2778
- "fikkla\u016Dno",
2779
- "fikota",
2780
- "fiku",
2781
- "forfiki",
2782
- "forfiki\u011Du",
2783
- "forfiku",
2784
- "forfurzu",
2785
- "forpisi",
2786
- "forpisu",
2787
- "furzulo",
2788
- "kacen",
2789
- "kaco",
2790
- "kacsu\u0109ulo",
2791
- "kojono",
2792
- "pi\u0109en",
2793
- "pi\u0109o",
2794
- "zamenfek"
2795
- ]
2796
- };
2797
-
2798
- // ../../shared/dictionaries/english.json
2799
- var english_default = {
2800
- words: [
2801
- "2 girls 1 cup",
2802
- "2g1c",
2803
- "a$$",
2804
- "acrotomophilia",
2805
- "alabama hot pocket",
2806
- "alaskan pipeline",
2807
- "anal",
2808
- "anilingus",
2809
- "anus",
2810
- "apeshit",
2811
- "arsehole",
2812
- "ass",
2813
- "asshat",
2814
- "asshole",
2815
- "assmunch",
2816
- "asswipe",
2817
- "auto erotic",
2818
- "autoerotic",
2819
- "b!tch",
2820
- "babeland",
2821
- "baby batter",
2822
- "baby juice",
2823
- "ball gag",
2824
- "ball gravy",
2825
- "ball kicking",
2826
- "ball licking",
2827
- "ball sack",
2828
- "ball sucking",
2829
- "bangbros",
2830
- "bareback",
2831
- "barely legal",
2832
- "barenaked",
2833
- "bastard",
2834
- "bastardized",
2835
- "bastardo",
2836
- "bastinado",
2837
- "bbw",
2838
- "bdsm",
2839
- "beaner",
2840
- "beaners",
2841
- "beaver cleaver",
2842
- "beaver lips",
2843
- "bestiality",
2844
- "big black",
2845
- "big breasts",
2846
- "big knockers",
2847
- "big tits",
2848
- "bimbos",
2849
- "birdlock",
2850
- "bitch",
2851
- "bitches",
2852
- "black cock",
2853
- "blonde action",
2854
- "blonde on blonde action",
2855
- "blow job",
2856
- "blow your load",
2857
- "blowjob",
2858
- "blue waffle",
2859
- "blumpkin",
2860
- "bollocks",
2861
- "bondage",
2862
- "boner",
2863
- "boob",
2864
- "boobs",
2865
- "booty call",
2866
- "brown showers",
2867
- "brunette action",
2868
- "bs",
2869
- "bukkake",
2870
- "bulldyke",
2871
- "bullet vibe",
2872
- "bullshit",
2873
- "bung hole",
2874
- "bunghole",
2875
- "busty",
2876
- "butt",
2877
- "buttcheeks",
2878
- "butthole",
2879
- "camel toe",
2880
- "camgirl",
2881
- "camslut",
2882
- "camwhore",
2883
- "carpet muncher",
2884
- "carpetmuncher",
2885
- "chocolate rosebuds",
2886
- "circlejerk",
2887
- "cleveland steamer",
2888
- "clit",
2889
- "clitoris",
2890
- "clover clamps",
2891
- "clusterfuck",
2892
- "cock",
2893
- "cocks",
2894
- "cocksucker",
2895
- "coon",
2896
- "coons",
2897
- "coprolagnia",
2898
- "coprophilia",
2899
- "cornhole",
2900
- "creampie",
2901
- "cum",
2902
- "cumming",
2903
- "cunnilingus",
2904
- "cunt",
2905
- "darkie",
2906
- "date rape",
2907
- "daterape",
2908
- "deep throat",
2909
- "deepthroat",
2910
- "dendrophilia",
2911
- "dick",
2912
- "dildo",
2913
- "dingleberries",
2914
- "dingleberry",
2915
- "dipshit",
2916
- "dirty pillows",
2917
- "dirty sanchez",
2918
- "dog style",
2919
- "doggie style",
2920
- "doggiestyle",
2921
- "doggy style",
2922
- "doggystyle",
2923
- "dolcett",
2924
- "domination",
2925
- "dominatrix",
2926
- "dommes",
2927
- "donkey punch",
2928
- "double dong",
2929
- "double penetration",
2930
- "dp action",
2931
- "dry hump",
2932
- "dumbass",
2933
- "dvda",
2934
- "eat my ass",
2935
- "ecchi",
2936
- "ejaculation",
2937
- "erotic",
2938
- "erotism",
2939
- "escort",
2940
- "eunuch",
2941
- "f*ck",
2942
- "f@ck",
2943
- "faggot",
2944
- "fecal",
2945
- "felch",
2946
- "fellatio",
2947
- "feltch",
2948
- "female squirting",
2949
- "femdom",
2950
- "figging",
2951
- "fingerbang",
2952
- "fingering",
2953
- "fisting",
2954
- "foot fetish",
2955
- "footjob",
2956
- "frotting",
2957
- "fuck",
2958
- "fuck buttons",
2959
- "fucker",
2960
- "fuckface",
2961
- "fuckin",
2962
- "fucking",
2963
- "fucktards",
2964
- "fudge packer",
2965
- "fudgepacker",
2966
- "fuq",
2967
- "futanari",
2968
- "g-spot",
2969
- "gang bang",
2970
- "gay sex",
2971
- "genitals",
2972
- "giant cock",
2973
- "girl on",
2974
- "girl on top",
2975
- "girls gone wild",
2976
- "goatcx",
2977
- "goatse",
2978
- "god damn",
2979
- "gokkun",
2980
- "golden shower",
2981
- "goo girl",
2982
- "goodpoop",
2983
- "goregasm",
2984
- "grope",
2985
- "group sex",
2986
- "guro",
2987
- "hand job",
2988
- "handjob",
2989
- "hard core",
2990
- "hardcore",
2991
- "hentai",
2992
- "hoe",
2993
- "homoerotic",
2994
- "honkey",
2995
- "hooker",
2996
- "hot carl",
2997
- "hot chick",
2998
- "how to kill",
2999
- "how to murder",
3000
- "huge fat",
3001
- "humping",
3002
- "incest",
3003
- "intercourse",
3004
- "jack off",
3005
- "jackass",
3006
- "jail bait",
3007
- "jailbait",
3008
- "jelly donut",
3009
- "jerk off",
3010
- "jigaboo",
3011
- "jiggaboo",
3012
- "jiggerboo",
3013
- "jizz",
3014
- "juggs",
3015
- "kike",
3016
- "kinbaku",
3017
- "kinkster",
3018
- "kinky",
3019
- "knobbing",
3020
- "leather restraint",
3021
- "leather straight jacket",
3022
- "lemon party",
3023
- "lmfao",
3024
- "lolita",
3025
- "lovemaking",
3026
- "make me come",
3027
- "male squirting",
3028
- "masturbate",
3029
- "menage a trois",
3030
- "mf",
3031
- "milf",
3032
- "missionary position",
3033
- "motherfucker",
3034
- "mound of venus",
3035
- "mr hands",
3036
- "muff diver",
3037
- "muffdiving",
3038
- "nambla",
3039
- "nawashi",
3040
- "negro",
3041
- "neonazi",
3042
- "nig nog",
3043
- "nigga",
3044
- "nigger",
3045
- "nimphomania",
3046
- "nipple",
3047
- "nipples",
3048
- "nsfw images",
3049
- "nude",
3050
- "nudity",
3051
- "nympho",
3052
- "nymphomania",
3053
- "octopussy",
3054
- "omfg",
3055
- "omorashi",
3056
- "one cup two girls",
3057
- "one guy one jar",
3058
- "orgasm",
3059
- "orgy",
3060
- "paedophile",
3061
- "paki",
3062
- "panties",
3063
- "panty",
3064
- "pedobear",
3065
- "pedophile",
3066
- "pegging",
3067
- "penis",
3068
- "phone sex",
3069
- "piece of shit",
3070
- "piss pig",
3071
- "pissed",
3072
- "pissing",
3073
- "pisspig",
3074
- "playboy",
3075
- "pleasure chest",
3076
- "pole smoker",
3077
- "ponyplay",
3078
- "poof",
3079
- "poon",
3080
- "poontang",
3081
- "poop chute",
3082
- "poopchute",
3083
- "porn",
3084
- "porno",
3085
- "pornography",
3086
- "prince albert piercing",
3087
- "pthc",
3088
- "pubes",
3089
- "punany",
3090
- "pussy",
3091
- "queaf",
3092
- "queef",
3093
- "quim",
3094
- "raghead",
3095
- "raging boner",
3096
- "rape",
3097
- "raping",
3098
- "rapist",
3099
- "rectum",
3100
- "retard",
3101
- "retarded",
3102
- "reverse cowgirl",
3103
- "rimjob",
3104
- "rimming",
3105
- "rosy palm",
3106
- "rosy palm and her 5 sisters",
3107
- "rusty trombone",
3108
- "s&m",
3109
- "sadism",
3110
- "santorum",
3111
- "scat",
3112
- "schlong",
3113
- "scissoring",
3114
- "semen",
3115
- "sex",
3116
- "sexo",
3117
- "sexy",
3118
- "sh!t",
3119
- "shaved beaver",
3120
- "shaved pussy",
3121
- "shemale",
3122
- "shibari",
3123
- "shit",
3124
- "shitblimp",
3125
- "shithead",
3126
- "shitshow",
3127
- "shitty",
3128
- "shota",
3129
- "shrimping",
3130
- "simp",
3131
- "skeet",
3132
- "slanteye",
3133
- "slut",
3134
- "smut",
3135
- "snatch",
3136
- "snowballing",
3137
- "sodomize",
3138
- "sodomy",
3139
- "spic",
3140
- "splooge",
3141
- "splooge moose",
3142
- "spooge",
3143
- "spread legs",
3144
- "spunk",
3145
- "stfu",
3146
- "strap on",
3147
- "strapon",
3148
- "strappado",
3149
- "strip club",
3150
- "style doggy",
3151
- "suck",
3152
- "sucks",
3153
- "suicide girls",
3154
- "sultry women",
3155
- "swastika",
3156
- "swinger",
3157
- "tainted love",
3158
- "taste my",
3159
- "tea bagging",
3160
- "testbad01",
3161
- "threesome",
3162
- "throating",
3163
- "tied up",
3164
- "tight white",
3165
- "tit",
3166
- "tits",
3167
- "titties",
3168
- "titty",
3169
- "tongue in a",
3170
- "topless",
3171
- "tosser",
3172
- "towelhead",
3173
- "tranny",
3174
- "tribadism",
3175
- "tub girl",
3176
- "tubgirl",
3177
- "tushy",
3178
- "twat",
3179
- "twink",
3180
- "twinkie",
3181
- "two girls one cup",
3182
- "undressing",
3183
- "upskirt",
3184
- "urethra play",
3185
- "urophilia",
3186
- "vagina",
3187
- "venus mound",
3188
- "vibrator",
3189
- "violet wand",
3190
- "vorarephilia",
3191
- "voyeur",
3192
- "vulva",
3193
- "wank",
3194
- "wet dream",
3195
- "wetback",
3196
- "white power",
3197
- "wrapping men",
3198
- "wrinkled starfish",
3199
- "wtf",
3200
- "xx",
3201
- "xxx",
3202
- "yaoi",
3203
- "yellow showers",
3204
- "yiffy",
3205
- "zoophilia",
3206
- "\u{1F595}"
3207
- ]
3208
- };
3209
-
3210
- // ../../shared/dictionaries/finnish.json
3211
- var finnish_default = {
3212
- words: [
3213
- "alfred nussi",
3214
- "bylsi\xE4",
3215
- "haahka",
3216
- "haista paska",
3217
- "haista vittu",
3218
- "hatullinen",
3219
- "helvetisti",
3220
- "hevonkuusi",
3221
- "hevonpaska",
3222
- "hevonperse",
3223
- "hevonvittu",
3224
- "hevonvitunperse",
3225
- "hitosti",
3226
- "hitto",
3227
- "huorata",
3228
- "h\xE4ssi\xE4",
3229
- "juosten kustu",
3230
- "jutku",
3231
- "jutsku",
3232
- "j\xE4tk\xE4",
3233
- "kananpaska",
3234
- "koiranpaska",
3235
- "kuin esterin perseest\xE4",
3236
- "kulli",
3237
- "kullinluikaus",
3238
- "kuppainen",
3239
- "kusaista",
3240
- "kuseksia",
3241
- "kusettaa",
3242
- "kusi",
3243
- "kusip\xE4\xE4",
3244
- "kusta",
3245
- "kyrpiintynyt",
3246
- "kyrpiinty\xE4",
3247
- "kyrpi\xE4",
3248
- "kyrp\xE4",
3249
- "kyrp\xE4naama",
3250
- "kyrvitys",
3251
- "lahtari",
3252
- "lutka",
3253
- "molo",
3254
- "molop\xE4\xE4",
3255
- "mulkero",
3256
- "mulkku",
3257
- "mulkvisti",
3258
- "muna",
3259
- "munap\xE4\xE4",
3260
- "munaton",
3261
- "mutakuono",
3262
- "mutiainen",
3263
- "naida",
3264
- "nainti",
3265
- "narttu",
3266
- "neekeri",
3267
- "nekru",
3268
- "nuolla persett\xE4",
3269
- "nussia",
3270
- "nussija",
3271
- "nussinta",
3272
- "paljaalla",
3273
- "palli",
3274
- "pallit",
3275
- "paneskella",
3276
- "panettaa",
3277
- "panna",
3278
- "pano",
3279
- "pantava",
3280
- "paska",
3281
- "paskainen",
3282
- "paskamainen",
3283
- "paskanmarjat",
3284
- "paskantaa",
3285
- "paskapuhe",
3286
- "paskap\xE4\xE4",
3287
- "paskattaa",
3288
- "paskiainen",
3289
- "paskoa",
3290
- "pehko",
3291
- "pentele",
3292
- "perkele",
3293
- "perkeleesti",
3294
- "persaukinen",
3295
- "perse",
3296
- "perseennuolija",
3297
- "perseet olalla",
3298
- "persereik\xE4",
3299
- "perse\xE4\xE4li\xF6",
3300
- "persl\xE4pi",
3301
- "perspano",
3302
- "persvako",
3303
- "pilkunnussija",
3304
- "pillu",
3305
- "pillut",
3306
- "pipari",
3307
- "piru",
3308
- "pist\xE4\xE4",
3309
- "pyllyvako",
3310
- "reik\xE4",
3311
- "reva",
3312
- "ripsipiirakka",
3313
- "runkata",
3314
- "runkkari",
3315
- "runkkaus",
3316
- "runkku",
3317
- "ryss\xE4",
3318
- "r\xE4ttip\xE4\xE4",
3319
- "saatanasti",
3320
- "suklaaosasto",
3321
- "tavara",
3322
- "toosa",
3323
- "tuhkaluukku",
3324
- "tumputtaa",
3325
- "turpasauna",
3326
- "tussu",
3327
- "tussukka",
3328
- "tussut",
3329
- "vakipano",
3330
- "vet\xE4\xE4 k\xE4teen",
3331
- "viiksi",
3332
- "vittu",
3333
- "vittuilla",
3334
- "vittuilu",
3335
- "vittumainen",
3336
- "vittuuntua",
3337
- "vittuuntunut",
3338
- "vitun",
3339
- "vitusti",
3340
- "vituttaa",
3341
- "vitutus",
3342
- "\xE4p\xE4r\xE4"
3343
- ]
3344
- };
3345
-
3346
- // ../../shared/dictionaries/german.json
3347
- var german_default = {
3348
- words: [
3349
- "analritter",
3350
- "arsch",
3351
- "arschficker",
3352
- "arschlecker",
3353
- "arschloch",
3354
- "bimbo",
3355
- "bratze",
3356
- "bumsen",
3357
- "bonze",
3358
- "d\xF6del",
3359
- "fick",
3360
- "ficken",
3361
- "flittchen",
3362
- "fotze",
3363
- "fratze",
3364
- "hackfresse",
3365
- "hure",
3366
- "hurensohn",
3367
- "ische",
3368
- "kackbratze",
3369
- "kacke",
3370
- "kacken",
3371
- "kackwurst",
3372
- "kampflesbe",
3373
- "kanake",
3374
- "kimme",
3375
- "l\xFCmmel",
3376
- "MILF",
3377
- "m\xF6pse",
3378
- "morgenlatte",
3379
- "m\xF6se",
3380
- "mufti",
3381
- "muschi",
3382
- "nackt",
3383
- "neger",
3384
- "nigger",
3385
- "nippel",
3386
- "nutte",
3387
- "onanieren",
3388
- "orgasmus",
3389
- "pimmel",
3390
- "pimpern",
3391
- "pinkeln",
3392
- "pissen",
3393
- "pisser",
3394
- "popel",
3395
- "poppen",
3396
- "porno",
3397
- "reudig",
3398
- "rosette",
3399
- "schabracke",
3400
- "schlampe",
3401
- "schei\xDFe",
3402
- "scheisser",
3403
- "schiesser",
3404
- "schnackeln",
3405
- "schwanzlutscher",
3406
- "schwuchtel",
3407
- "tittchen",
3408
- "titten",
3409
- "v\xF6geln",
3410
- "vollpfosten",
3411
- "wichse",
3412
- "wichsen",
3413
- "wichser"
3414
- ]
3415
- };
3416
-
3417
- // ../../shared/dictionaries/hindi.json
3418
- var hindi_default = {
3419
- words: [
3420
- "aand",
3421
- "aandu",
3422
- "balatkar",
3423
- "beti chod",
3424
- "bhadva",
3425
- "bhadve",
3426
- "bhandve",
3427
- "bhootni ke",
3428
- "bhosad",
3429
- "bhosadi ke",
3430
- "boobe",
3431
- "chakke",
3432
- "chinaal",
3433
- "chinki",
3434
- "chod",
3435
- "chodu",
3436
- "chodu bhagat",
3437
- "chooche",
3438
- "choochi",
3439
- "choot",
3440
- "choot ke baal",
3441
- "chootia",
3442
- "chootiya",
3443
- "chuche",
3444
- "chuchi",
3445
- "chudai khanaa",
3446
- "chudan chudai",
3447
- "chut",
3448
- "chut ke baal",
3449
- "chut ke dhakkan",
3450
- "chut maarli",
3451
- "chutad",
3452
- "chutadd",
3453
- "chutan",
3454
- "chutia",
3455
- "chutiya",
3456
- "gaand",
3457
- "gaandfat",
3458
- "gaandmasti",
3459
- "gaandufad",
3460
- "gandu",
3461
- "gashti",
3462
- "gasti",
3463
- "ghassa",
3464
- "ghasti",
3465
- "harami",
3466
- "haramzade",
3467
- "hawas",
3468
- "hawas ke pujari",
3469
- "hijda",
3470
- "hijra",
3471
- "jhant",
3472
- "jhant chaatu",
3473
- "jhant ke baal",
3474
- "jhantu",
3475
- "kamine",
3476
- "kaminey",
3477
- "kanjar",
3478
- "kutta",
3479
- "kutta kamina",
3480
- "kutte ki aulad",
3481
- "kutte ki jat",
3482
- "kuttiya",
3483
- "loda",
3484
- "lodu",
3485
- "lund",
3486
- "lund choos",
3487
- "lund khajoor",
3488
- "lundtopi",
3489
- "lundure",
3490
- "maa ki chut",
3491
- "maal",
3492
- "madar chod",
3493
- "mooh mein le",
3494
- "mutth",
3495
- "najayaz",
3496
- "najayaz aulaad",
3497
- "najayaz paidaish",
3498
- "paki",
3499
- "pataka",
3500
- "patakha",
3501
- "raand",
3502
- "randi",
3503
- "saala",
3504
- "saala kutta",
3505
- "saali kutti",
3506
- "saali randi",
3507
- "suar",
3508
- "suar ki aulad",
3509
- "tatte",
3510
- "tatti",
3511
- "teri maa ka bhosada",
3512
- "teri maa ka boba chusu",
3513
- "teri maa ki chut",
3514
- "tharak",
3515
- "tharki"
3516
- ]
3517
- };
3518
-
3519
- // ../../shared/dictionaries/hungarian.json
3520
- var hungarian_default = {
3521
- words: [
3522
- "balfasz",
3523
- "balfaszok",
3524
- "balfaszokat",
3525
- "balfaszt",
3526
- "barmok",
3527
- "barmokat",
3528
- "barmot",
3529
- "barom",
3530
- "baszik",
3531
- "bazmeg",
3532
- "buksza",
3533
- "buksz\xE1k",
3534
- "buksz\xE1kat",
3535
- "buksz\xE1t",
3536
- "b\xFAr",
3537
- "b\xFArok",
3538
- "cs\xF6cs",
3539
- "cs\xF6cs\xF6k",
3540
- "cs\xF6cs\xF6ket",
3541
- "cs\xF6cs\xF6t",
3542
- "fasz",
3543
- "faszfej",
3544
- "faszfejek",
3545
- "faszfejeket",
3546
- "faszfejet",
3547
- "faszok",
3548
- "faszokat",
3549
- "faszt",
3550
- "fing",
3551
- "fingok",
3552
- "fingokat",
3553
- "fingot",
3554
- "franc",
3555
- "francok",
3556
- "francokat",
3557
- "francot",
3558
- "geci",
3559
- "gecibb",
3560
- "gecik",
3561
- "geciket",
3562
- "gecit",
3563
- "kibaszott",
3564
- "kibaszottabb",
3565
- "k\xFAr",
3566
- "kurafi",
3567
- "kurafik",
3568
- "kurafikat",
3569
- "kurafit",
3570
- "kurva",
3571
- "kurv\xE1k",
3572
- "kurv\xE1kat",
3573
- "kurv\xE1t",
3574
- "leggecibb",
3575
- "legkibaszottabb",
3576
- "legszarabb",
3577
- "marha",
3578
- "marh\xE1k",
3579
- "marh\xE1kat",
3580
- "marh\xE1t",
3581
- "megd\xF6glik",
3582
- "pele",
3583
- "pel\xE9k",
3584
- "picsa",
3585
- "pics\xE1kat",
3586
- "pics\xE1t",
3587
- "pina",
3588
- "pin\xE1k",
3589
- "pin\xE1kat",
3590
- "pin\xE1t",
3591
- "pofa",
3592
- "pof\xE1kat",
3593
- "pof\xE1t",
3594
- "p\xF6cs",
3595
- "p\xF6cs\xF6k",
3596
- "p\xF6cs\xF6ket",
3597
- "p\xF6cs\xF6t",
3598
- "punci",
3599
- "puncik",
3600
- "segg",
3601
- "seggek",
3602
- "seggeket",
3603
- "segget",
3604
- "seggfej",
3605
- "seggfejek",
3606
- "seggfejeket",
3607
- "seggfejet",
3608
- "szajha",
3609
- "szajh\xE1k",
3610
- "szajh\xE1kat",
3611
- "szajh\xE1t",
3612
- "szar",
3613
- "szarabb",
3614
- "szarik",
3615
- "szarok",
3616
- "szarokat",
3617
- "szart"
3618
- ]
3619
- };
3620
-
3621
- // ../../shared/dictionaries/korean.json
3622
- var korean_default = {
3623
- words: [
3624
- "\uAC15\uAC04",
3625
- "\uAC1C\uC0C8\uB07C",
3626
- "\uAC1C\uC790\uC2DD",
3627
- "\uAC1C\uC886",
3628
- "\uAC1C\uCC28\uBC18",
3629
- "\uAC70\uC720",
3630
- "\uACC4\uC9D1\uB144",
3631
- "\uACE0\uC790",
3632
- "\uADFC\uCE5C",
3633
- "\uB178\uBAA8",
3634
- "\uB2C8\uAE30\uBBF8",
3635
- "\uB4A4\uC9C8\uB798",
3636
- "\uB538\uB538\uC774",
3637
- "\uB54C\uC539",
3638
- "\uB610\uB77C\uC774",
3639
- "\uB664\uB188",
3640
- "\uB85C\uB9AC\uD0C0",
3641
- "\uB9DD\uAC00",
3642
- "\uBAB0\uCE74",
3643
- "\uBBF8\uCE5C",
3644
- "\uBBF8\uCE5C\uC0C8\uB07C",
3645
- "\uBC14\uBC14\uB9AC\uB9E8",
3646
- "\uBCC0\uD0DC",
3647
- "\uBCD1\uC2E0",
3648
- "\uBCF4\uC9C0",
3649
- "\uBD88\uC54C",
3650
- "\uBE60\uAD6C\uB9AC",
3651
- "\uC0AC\uAE4C\uC2DC",
3652
- "\uC139\uC2A4",
3653
- "\uC2A4\uC640\uD551",
3654
- "\uC30D\uB188",
3655
- "\uC528\uBC1C",
3656
- "\uC528\uBC1C\uB188",
3657
- "\uC528\uD314",
3658
- "\uC539",
3659
- "\uC539\uBB3C",
3660
- "\uC539\uBE68",
3661
- "\uC539\uC0C8\uB07C",
3662
- "\uC539\uC54C",
3663
- "\uC539\uCC3D",
3664
- "\uC539\uD314",
3665
- "\uC554\uCE90",
3666
- "\uC560\uC790",
3667
- "\uC57C\uB3D9",
3668
- "\uC57C\uC0AC",
3669
- "\uC57C\uC560\uB2C8",
3670
- "\uC5C4\uCC3D",
3671
- "\uC5D0\uB85C",
3672
- "\uC5FC\uBCD1",
3673
- "\uC618\uBCD1",
3674
- "\uC720\uBAA8",
3675
- "\uC721\uAC11",
3676
- "\uC740\uAF34",
3677
- "\uC790\uC704",
3678
- "\uC790\uC9C0",
3679
- "\uC7A1\uB144",
3680
- "\uC885\uAC04\uB098",
3681
- "\uC886",
3682
- "\uC886\uB9CC",
3683
- "\uC8FD\uC77C\uB144",
3684
- "\uC950\uC886",
3685
- "\uC9C1\uCD2C",
3686
- "\uC9F1\uAE68",
3687
- "\uCABD\uBC14\uB9AC",
3688
- "\uCC3D\uB140",
3689
- "\uD3EC\uB974\uB178",
3690
- "\uD558\uB4DC\uCF54\uC5B4",
3691
- "\uD638\uB85C",
3692
- "\uD654\uB0E5\uB144",
3693
- "\uD6C4\uB808\uC544\uB4E4",
3694
- "\uD6C4\uC7A5",
3695
- "\uD76C\uCB48\uADF8\uB9AC"
3696
- ]
3697
- };
3698
-
3699
- // ../../shared/dictionaries/Norwegian.json
3700
- var Norwegian_default = {
3701
- words: [
3702
- "drittsekk",
3703
- "faen i helvete",
3704
- "fitte",
3705
- "j\xE6vla",
3706
- "kuk",
3707
- "kukene",
3708
- "kuker",
3709
- "nigger",
3710
- "pikk",
3711
- "sotr\xF8r",
3712
- "st\xE5pikk",
3713
- "st\xE5pikkene",
3714
- "st\xE5pikker"
3715
- ]
3716
- };
3717
-
3718
- // ../../shared/dictionaries/persian.json
3719
- var persian_default = {
3720
- words: [
3721
- "\u0622\u0628 \u06A9\u06CC\u0631",
3722
- "\u0627\u0631\u06AF\u0627\u0633\u0645",
3723
- "\u0628\u0631\u0647\u0646\u0647",
3724
- "\u067E\u0648\u0631\u0646",
3725
- "\u067E\u0648\u0631\u0646\u0648",
3726
- "\u062A\u062C\u0627\u0648\u0632",
3727
- "\u062A\u062E\u0645\u06CC",
3728
- "\u062C\u0642",
3729
- "\u062C\u0642\u06CC",
3730
- "\u062C\u0644\u0642",
3731
- "\u062C\u0646\u062F\u0647",
3732
- "\u0686\u0648\u0686\u0648\u0644",
3733
- "\u062D\u0634\u0631",
3734
- "\u062D\u0634\u0631\u06CC",
3735
- "\u062F\u0627\u0641",
3736
- "\u062F\u0648\u062F\u0648\u0644",
3737
- "\u0633\u0627\u06A9 \u0632\u062F\u0646",
3738
- "\u0633\u06A9\u0633",
3739
- "\u0633\u06A9\u0633 \u06A9\u0631\u062F\u0646",
3740
- "\u0633\u06A9\u0633\u06CC",
3741
- "\u0633\u0648\u067E\u0631",
3742
- "\u0634\u0642 \u06A9\u0631\u062F\u0646",
3743
- "\u0634\u0647\u0648\u062A",
3744
- "\u0634\u0647\u0648\u062A\u06CC",
3745
- "\u0634\u0648\u0646\u0628\u0648\u0644",
3746
- "\u0641\u06CC\u0644\u0645 \u0633\u0648\u067E\u0631",
3747
- "\u06A9\u0633",
3748
- "\u06A9\u0633 \u062F\u0627\u062F\u0646",
3749
- "\u06A9\u0633 \u06A9\u0631\u062F\u0646",
3750
- "\u06A9\u0633\u06A9\u0634",
3751
- "\u06A9\u0648\u0633",
3752
- "\u06A9\u0648\u0646",
3753
- "\u06A9\u0648\u0646 \u062F\u0627\u062F\u0646",
3754
- "\u06A9\u0648\u0646 \u06A9\u0631\u062F\u0646",
3755
- "\u06A9\u0648\u0646\u06A9\u0634",
3756
- "\u06A9\u0648\u0646\u06CC",
3757
- "\u06A9\u06CC\u0631",
3758
- "\u06A9\u06CC\u0631\u06CC",
3759
- "\u0644\u0627\u067E\u0627",
3760
- "\u0644\u0627\u067E\u0627\u06CC\u06CC",
3761
- "\u0644\u0627\u0634\u06CC",
3762
- "\u0644\u062E\u062A",
3763
- "\u0644\u0634",
3764
- "\u0645\u0646\u06CC",
3765
- "\u0647\u0631\u0632\u0647"
3766
- ]
3767
- };
3768
-
3769
- // ../../shared/dictionaries/polish.json
3770
- var polish_default = {
3771
- words: [
3772
- "burdel",
3773
- "burdelmama",
3774
- "chuj",
3775
- "chujnia",
3776
- "ciota",
3777
- "cipa",
3778
- "cyc",
3779
- "debil",
3780
- "dmucha\u0107",
3781
- "do kurwy n\u0119dzy",
3782
- "dupa",
3783
- "dupek",
3784
- "duperele",
3785
- "dziwka",
3786
- "fiut",
3787
- "g\xF3wno",
3788
- "g\xF3wno prawda",
3789
- "huj",
3790
- "jajco",
3791
- "jajeczko",
3792
- "jajko",
3793
- "jajo",
3794
- "ja pierdol\u0119",
3795
- "jeba\u0107",
3796
- "jebany",
3797
- "kurwa",
3798
- "kurwy",
3799
- "kutafon",
3800
- "kutas",
3801
- "liza\u0107 pa\u0142\u0119",
3802
- "obci\u0105ga\u0107 chuja",
3803
- "obci\u0105ga\u0107 fiuta",
3804
- "obci\u0105ga\u0107 loda",
3805
- "pieprzy\u0107",
3806
- "pierdolec",
3807
- "pierdoli\u0107",
3808
- "pierdolni\u0119ty",
3809
- "pierdo\u0142a",
3810
- "pierdzie\u0107",
3811
- "pizda",
3812
- "pojeb",
3813
- "popierdolony",
3814
- "robic loda",
3815
- "robi\u0107 loda",
3816
- "rucha\u0107",
3817
- "rzyga\u0107",
3818
- "skurwysyn",
3819
- "sraczka",
3820
- "sra\u0107",
3821
- "suka",
3822
- "syf",
3823
- "wkurwia\u0107",
3824
- "zajebisty"
3825
- ]
3826
- };
3827
-
3828
- // ../../shared/dictionaries/portuguese.json
3829
- var portuguese_default = {
3830
- words: [
3831
- "aborto",
3832
- "amador",
3833
- "\xE2nus",
3834
- "aranha",
3835
- "ariano",
3836
- "balalao",
3837
- "bastardo",
3838
- "bicha",
3839
- "biscate",
3840
- "bissexual",
3841
- "boceta",
3842
- "boob",
3843
- "bosta",
3844
- "braulio de borracha",
3845
- "bumbum",
3846
- "burro",
3847
- "cabrao",
3848
- "cacete",
3849
- "cagar",
3850
- "camisinha",
3851
- "caralho",
3852
- "cerveja",
3853
- "chochota",
3854
- "chupar",
3855
- "clitoris",
3856
- "coca\xEDna",
3857
- "colhoes",
3858
- "comer",
3859
- "cona",
3860
- "consolo",
3861
- "corno",
3862
- "cu",
3863
- "dar o rabo",
3864
- "dum raio",
3865
- "esporra",
3866
- "fecal",
3867
- "filho da puta",
3868
- "foda",
3869
- "foda-se",
3870
- "foder",
3871
- "frango assado",
3872
- "gozar",
3873
- "grelho",
3874
- "hero\xEDna",
3875
- "heterosexual",
3876
- "homem gay",
3877
- "homoer\xF3tico",
3878
- "homosexual",
3879
- "inferno",
3880
- "l\xE9sbica",
3881
- "lolita",
3882
- "mama",
3883
- "merda",
3884
- "paneleiro",
3885
- "passar um cheque",
3886
- "pau",
3887
- "peidar",
3888
- "p\xEAnis",
3889
- "pinto",
3890
- "porra",
3891
- "puta",
3892
- "puta que pariu",
3893
- "puta que te pariu",
3894
- "queca",
3895
- "sacanagem",
3896
- "saco",
3897
- "torneira",
3898
- "transar",
3899
- "vai-te foder",
3900
- "vai tomar no cu",
3901
- "veado",
3902
- "vibrador",
3903
- "xana",
3904
- "xochota"
3905
- ]
3906
- };
3907
-
3908
- // ../../shared/dictionaries/russian.json
3909
- var russian_default = {
3910
- words: [
3911
- "bychara",
3912
- "byk",
3913
- "chernozhopyi",
3914
- "dolboy'eb",
3915
- "ebalnik",
3916
- "ebalo",
3917
- "ebalom sch'elkat",
3918
- "gol",
3919
- "mudack",
3920
- "opizdenet",
3921
- "osto'eblo",
3922
- "ostokhuitel'no",
3923
- "ot'ebis",
3924
- "otmudohat",
3925
- "otpizdit",
3926
- "otsosi",
3927
- "padlo",
3928
- "pedik",
3929
- "perdet",
3930
- "petuh",
3931
- "pidar gnoinyj",
3932
- "pizda",
3933
- "pizdato",
3934
- "pizdatyi",
3935
- "piz'det",
3936
- "pizdetc",
3937
- "pizdoi nakryt'sja",
3938
- "pizd'uk",
3939
- "piz`dyulina",
3940
- "podi ku'evo",
3941
- "poeben",
3942
- "po'imat' na konchik",
3943
- "po'iti posrat",
3944
- "po khuy",
3945
- "poluchit pizdy",
3946
- "pososi moyu konfetku",
3947
- "prissat",
3948
- "proebat",
3949
- "promudobl'adsksya pizdopro'ebina",
3950
- "propezdoloch",
3951
- "prosrat",
3952
- "raspeezdeyi",
3953
- "raspizdatyi",
3954
- "raz'yebuy",
3955
- "raz'yoba",
3956
- "s'ebat'sya",
3957
- "shalava",
3958
- "styervo",
3959
- "sukin syn",
3960
- "svodit posrat",
3961
- "svoloch",
3962
- "trakhat'sya",
3963
- "trimandoblydskiy pizdoproyob",
3964
- "ubl'yudok",
3965
- "uboy",
3966
- "u'ebitsche",
3967
- "vafl'a",
3968
- "vafli lovit",
3969
- "v pizdu",
3970
- "vyperdysh",
3971
- "vzdrochennyi",
3972
- "yeb vas",
3973
- "za'ebat",
3974
- "zaebis",
3975
- "zalupa",
3976
- "zalupat",
3977
- "zasranetc",
3978
- "zassat",
3979
- "zlo'ebuchy",
3980
- "\u0431\u0430\u0440\u0434\u0430\u043A",
3981
- "\u0431\u0437\u0434\u0451\u043D\u043E\u043A",
3982
- "\u0431\u043B\u044F\u0434\u043A\u0438",
3983
- "\u0431\u043B\u044F\u0434\u043E\u0432\u0430\u0442\u044C",
3984
- "\u0431\u043B\u044F\u0434\u0441\u0442\u0432\u043E",
3985
- "\u0431\u043B\u044F\u0434\u044C",
3986
- "\u0431\u0443\u0433\u043E\u0440",
3987
- "\u0432\u043E \u043F\u0438\u0437\u0434\u0443",
3988
- "\u0432\u0441\u0442\u0430\u0442\u044C \u0440\u0430\u043A\u043E\u043C",
3989
- "\u0432\u044B\u0451\u0431\u044B\u0432\u0430\u0442\u044C\u0441\u044F",
3990
- "\u0433\u0430\u043D\u0434\u043E\u043D",
3991
- "\u0433\u043E\u0432\u043D\u043E",
3992
- "\u0433\u043E\u0432\u043D\u044E\u043A",
3993
- "\u0433\u043E\u043B\u044B\u0439",
3994
- "\u0434\u0430\u0442\u044C \u043F\u0438\u0437\u0434\u044B",
3995
- "\u0434\u0435\u0440\u044C\u043C\u043E",
3996
- "\u0434\u0440\u043E\u0447\u0438\u0442\u044C",
3997
- "\u0434\u0440\u0443\u0433\u043E\u0439 \u0434\u0440\u0430\u0437\u043D\u0438\u0442\u0441\u044F",
3998
- "\u0451\u0431\u0430\u0440\u044C",
3999
- "\u0435\u0431\u0430\u0442\u044C",
4000
- "\u0435\u0431\u0430\u0442\u044C-\u043A\u043E\u043F\u0430\u0442\u044C",
4001
- "\u0435\u0431\u043B\u043E",
4002
- "\u0435\u0431\u043D\u0443\u0442\u044C",
4003
- "\u0451\u0431 \u0442\u0432\u043E\u044E \u043C\u0430\u0442\u044C",
4004
- "\u0436\u043E\u043F\u0430",
4005
- "\u0436\u043E\u043F\u043E\u043B\u0438\u0437",
4006
- "\u0438\u0433\u0440\u0430\u0442\u044C \u043D\u0430 \u043A\u043E\u0436\u0430\u043D\u043E\u0439 \u0444\u043B\u0435\u0439\u0442\u0435",
4007
- "\u0438\u0437\u043C\u0443\u0434\u043E\u0445\u0430\u0442\u044C",
4008
- "\u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0440\u043E\u0447\u0438\u0442 \u043A\u0430\u043A \u043E\u043D \u0445\u043E\u0447\u0435\u0442",
4009
- "\u043A\u0430\u043A\u0430\u044F \u0440\u0430\u0437\u043D\u0438\u0446\u0430",
4010
- "\u043A\u0430\u043A \u0434\u0432\u0430 \u043F\u0430\u043B\u044C\u0446\u0430 \u043E\u0431\u043E\u0441\u0441\u0430\u0442\u044C",
4011
- "\u043A\u0443\u0440\u0438\u0442\u0435 \u043C\u043E\u044E \u0442\u0440\u0443\u0431\u043A\u0443",
4012
- "\u043B\u044B\u0441\u043E\u0433\u043E \u0432 \u043A\u0443\u043B\u0430\u043A\u0435 \u0433\u043E\u043D\u044F\u0442\u044C",
4013
- "\u043C\u0430\u043B\u043E\u0444\u044F",
4014
- "\u043C\u0430\u043D\u0434\u0430",
4015
- "\u043C\u0430\u043D\u0434\u0430\u0432\u043E\u0448\u043A\u0430",
4016
- "\u043C\u0435\u043D\u0442",
4017
- "\u043C\u0443\u0434\u0430",
4018
- "\u043C\u0443\u0434\u0438\u043B\u043E",
4019
- "\u043C\u0443\u0434\u043E\u0437\u043C\u043E\u043D",
4020
- "\u043D\u0430\u0435\u0431\u0430\u0442\u044C",
4021
- "\u043D\u0430\u0435\u0431\u0435\u043D\u0438\u0442\u044C\u0441\u044F",
4022
- "\u043D\u0430\u0435\u0431\u043D\u0443\u0442\u044C\u0441\u044F",
4023
- "\u043D\u0430 \u0444\u0438\u0433",
4024
- "\u043D\u0430 \u0445\u0443\u0439",
4025
- "\u043D\u0430 \u0445\u0443\u044E \u0432\u0435\u0440\u0442\u0435\u0442\u044C",
4026
- "\u043D\u0430 \u0445\u0443\u044F",
4027
- "\u043D\u0430\u0445\u0443\u044F\u0447\u0438\u0442\u044C\u0441\u044F",
4028
- "\u043D\u0435\u0432\u0435\u0431\u0435\u043D\u043D\u044B\u0439",
4029
- "\u043D\u0435 \u0435\u0431\u0435\u0442",
4030
- "\u043D\u0438 \u0437\u0430 \u0445\u0443\u0439 \u0441\u043E\u0431\u0430\u0447\u0443",
4031
- "\u043D\u0438 \u0445\u0443\u044F",
4032
- "\u043E\u0431\u043D\u0430\u0436\u0435\u043D\u043D\u044B\u0439",
4033
- "\u043E\u0431\u043E\u0441\u0441\u0430\u0442\u044C\u0441\u044F \u043C\u043E\u0436\u043D\u043E",
4034
- "\u043E\u0434\u0438\u043D \u0435\u0431\u0451\u0442\u0441\u044F",
4035
- "\u043E\u043F\u0435\u0441\u0434\u043E\u043B",
4036
- "\u043E\u0444\u0438\u0433\u0435\u0442\u044C",
4037
- "\u043E\u0445\u0443\u0435\u0442\u044C",
4038
- "\u043E\u0445\u0443\u0439\u0442\u0435\u043B\u044C\u043D\u043E",
4039
- "\u043F\u043E\u043B\u043E\u0432\u043E\u0435 \u0441\u043D\u043E\u0448\u0435\u043D\u0438\u0435",
4040
- "\u0441\u0435\u043A\u0441",
4041
- "\u0441\u0438\u0441\u043A\u0438",
4042
- "\u0441\u043F\u0438\u0437\u0434\u0438\u0442\u044C",
4043
- "\u0441\u0440\u0430\u0442\u044C",
4044
- "\u0441\u0441\u0430\u0442\u044C",
4045
- "\u0442\u0440\u0430x\u0430\u0442\u044C",
4046
- "\u0442\u044B \u043C\u043D\u0435 \u0432\u0430\u043D\u044C\u043A\u0443 \u043D\u0435 \u0432\u0430\u043B\u044F\u0439",
4047
- "\u0444\u0438\u0433\u0430",
4048
- "\u0445\u0430\u043F\u0430\u0442\u044C",
4049
- "\u0445\u0435\u0440 \u0441 \u043D\u0435\u0439",
4050
- "\u0445\u0435\u0440 \u0441 \u043D\u0438\u043C",
4051
- "\u0445\u043E\u0445\u043E\u043B",
4052
- "\u0445\u0440\u0435\u043D",
4053
- "\u0445\u0443\u0451\u0432\u043E",
4054
- "\u0445\u0443\u0451\u0432\u044B\u0439",
4055
- "\u0445\u0443\u0435\u043C \u0433\u0440\u0443\u0448\u0438 \u043E\u043A\u043E\u043B\u0430\u0447\u0438\u0432\u0430\u0442\u044C",
4056
- "\u0445\u0443\u0435\u043F\u043B\u0435\u0442",
4057
- "\u0445\u0443\u0438\u043B\u043E",
4058
- "\u0445\u0443\u0438\u043D\u0435\u0439 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044C",
4059
- "\u0445\u0443\u0438\u043D\u044F",
4060
- "\u0445\u0443\u0439",
4061
- "\u0445\u0443\u0439\u043D\u0443\u0442\u044C",
4062
- "\u0445\u0443\u0439 \u043F\u0438\u043D\u0430\u0442\u044C"
4063
- ]
4064
- };
4065
-
4066
- // ../../shared/dictionaries/french.json
4067
- var french_default = {
4068
- words: [
4069
- "baiser",
4070
- "bander",
4071
- "bigornette",
4072
- "bite",
4073
- "bitte",
4074
- "bloblos",
4075
- "bordel",
4076
- "bosser",
4077
- "bourr\xE9",
4078
- "bourr\xE9e",
4079
- "brackmard",
4080
- "branlage",
4081
- "branler",
4082
- "branlette",
4083
- "branleur",
4084
- "branleuse",
4085
- "brouter le cresson",
4086
- "caca",
4087
- "cailler",
4088
- "chatte",
4089
- "chiasse",
4090
- "chier",
4091
- "chiottes",
4092
- "clito",
4093
- "clitoris",
4094
- "con",
4095
- "connard",
4096
- "connasse",
4097
- "conne",
4098
- "couilles",
4099
- "cramouille",
4100
- "cul",
4101
- "d\xE9conne",
4102
- "d\xE9conner",
4103
- "drague",
4104
- "emmerdant",
4105
- "emmerder",
4106
- "emmerdeur",
4107
- "emmerdeuse",
4108
- "encul\xE9",
4109
- "encul\xE9e",
4110
- "enculeur",
4111
- "enculeurs",
4112
- "enfoir\xE9",
4113
- "enfoir\xE9e",
4114
- "\xE9tron",
4115
- "fille de pute",
4116
- "fils de pute",
4117
- "folle",
4118
- "foutre",
4119
- "gerbe",
4120
- "gerber",
4121
- "gouine",
4122
- "grande folle",
4123
- "grogniasse",
4124
- "gueule",
4125
- "jouir",
4126
- "la putain de ta m\xE8re",
4127
- "MALPT",
4128
- "m\xE9nage \xE0 trois",
4129
- "merde",
4130
- "merdeuse",
4131
- "merdeux",
4132
- "meuf",
4133
- "n\xE8gre",
4134
- "nique ta m\xE8re",
4135
- "nique ta race",
4136
- "palucher",
4137
- "p\xE9dale",
4138
- "p\xE9d\xE9",
4139
- "p\xE9ter",
4140
- "pipi",
4141
- "pisser",
4142
- "pouffiasse",
4143
- "pousse-crotte",
4144
- "putain",
4145
- "pute",
4146
- "ramoner",
4147
- "sac \xE0 foutre",
4148
- "sac \xE0 merde",
4149
- "salaud",
4150
- "salope",
4151
- "suce",
4152
- "tapette",
4153
- "tanche",
4154
- "teuch",
4155
- "teuf",
4156
- "tringler",
4157
- "trique",
4158
- "troncher",
4159
- "trou du cul",
4160
- "turlute",
4161
- "veuve",
4162
- "zigounette",
4163
- "zizi"
4164
- ]
4165
- };
4166
-
4167
- // ../../shared/dictionaries/italian.json
4168
- var italian_default = {
4169
- words: [
4170
- "allupato",
4171
- "ammucchiata",
4172
- "anale",
4173
- "arrapato",
4174
- "arrusa",
4175
- "arruso",
4176
- "assatanato",
4177
- "bagascia",
4178
- "bagassa",
4179
- "bagnarsi",
4180
- "baldracca",
4181
- "balle",
4182
- "battere",
4183
- "battona",
4184
- "belino",
4185
- "biga",
4186
- "bocchinara",
4187
- "bocchino",
4188
- "bofilo",
4189
- "boiata",
4190
- "bordello",
4191
- "brinca",
4192
- "bucaiolo",
4193
- "budi\xF9lo",
4194
- "buona donna",
4195
- "busone",
4196
- "cacca",
4197
- "caccati in mano e prenditi a schiaffi",
4198
- "caciocappella",
4199
- "cadavere",
4200
- "cagare",
4201
- "cagata",
4202
- "cagna",
4203
- "cammello",
4204
- "cappella",
4205
- "carciofo",
4206
- "carit\xE0",
4207
- "casci",
4208
- "cazzata",
4209
- "cazzimma",
4210
- "cazzo",
4211
- "checca",
4212
- "chiappa",
4213
- "chiavare",
4214
- "chiavata",
4215
- "ciospo",
4216
- "ciucciami il cazzo",
4217
- "coglione",
4218
- "coglioni",
4219
- "cornuto",
4220
- "cozza",
4221
- "culattina",
4222
- "culattone",
4223
- "culo",
4224
- "di merda",
4225
- "ditalino",
4226
- "duro",
4227
- "fare una\u0160",
4228
- "fava",
4229
- "femminuccia",
4230
- "fica",
4231
- "figa",
4232
- "figlio di buona donna",
4233
- "figlio di puttana",
4234
- "figone",
4235
- "finocchio",
4236
- "fottere",
4237
- "fottersi",
4238
- "fracicone",
4239
- "fregna",
4240
- "frocio",
4241
- "froscio",
4242
- "fuori come un balcone",
4243
- "goldone",
4244
- "grilletto",
4245
- "guanto",
4246
- "guardone",
4247
- "incazzarsi",
4248
- "incoglionirsi",
4249
- "ingoio",
4250
- "l'arte bolognese",
4251
- "leccaculo",
4252
- "lecchino",
4253
- "lofare",
4254
- "loffa",
4255
- "loffare",
4256
- "lumaca",
4257
- "manico",
4258
- "mannaggia",
4259
- "merda",
4260
- "merdata",
4261
- "merdoso",
4262
- "mignotta",
4263
- "minchia",
4264
- "minchione",
4265
- "mona",
4266
- "monta",
4267
- "montare",
4268
- "mussa",
4269
- "nave scuola",
4270
- "nerchia",
4271
- "nudo",
4272
- "padulo",
4273
- "palle",
4274
- "palloso",
4275
- "patacca",
4276
- "patonza",
4277
- "pecorina",
4278
- "pesce",
4279
- "picio",
4280
- "pincare",
4281
- "pipa",
4282
- "pip\xEC",
4283
- "pippone",
4284
- "pirla",
4285
- "pisciare",
4286
- "piscio",
4287
- "pisello",
4288
- "pistola",
4289
- "pistolotto",
4290
- "pomiciare",
4291
- "pompa",
4292
- "pompino",
4293
- "porca",
4294
- "porca madonna",
4295
- "porca miseria",
4296
- "porca puttana",
4297
- "porco due",
4298
- "porco zio",
4299
- "potta",
4300
- "puppami",
4301
- "puttana",
4302
- "quaglia",
4303
- "recchione",
4304
- "regina",
4305
- "rincoglionire",
4306
- "rizzarsi",
4307
- "rompiballe",
4308
- "ruffiano",
4309
- "sbattere",
4310
- "sbattersi",
4311
- "sborra",
4312
- "sborrata",
4313
- "sborrone",
4314
- "sbrodolata",
4315
- "scopare",
4316
- "scopata",
4317
- "scorreggiare",
4318
- "sega",
4319
- "slinguare",
4320
- "slinguata",
4321
- "smandrappata",
4322
- "soccia",
4323
- "socmel",
4324
- "sorca",
4325
- "spagnola",
4326
- "spompinare",
4327
- "sticchio",
4328
- "stronza",
4329
- "stronzata",
4330
- "stronzo",
4331
- "succhiami",
4332
- "sveltina",
4333
- "sverginare",
4334
- "tarzanello",
4335
- "terrone",
4336
- "testa di cazzo",
4337
- "tette",
4338
- "tirare",
4339
- "topa",
4340
- "troia",
4341
- "trombare",
4342
- "uccello",
4343
- "vacca",
4344
- "vaffanculo",
4345
- "vangare",
4346
- "venire",
4347
- "zinne",
4348
- "zio cantante",
4349
- "zoccola"
4350
- ]
4351
- };
4352
-
4353
- // ../../shared/dictionaries/japanese.json
4354
- var japanese_default = {
4355
- words: [
4356
- "3p",
4357
- "g \u30B9\u30DD\u30C3\u30C8",
4358
- "s \uFF06 m",
4359
- "sm",
4360
- "sm\u5973\u738B",
4361
- "xx",
4362
- "\u30A2\u30B8\u30A2\u306E\u304B\u308F\u3044\u3044\u5973\u306E\u5B50",
4363
- "\u30A2\u30B9\u30DB\u30FC\u30EB",
4364
- "\u30A2\u30CA\u30EA\u30F3\u30B0\u30B9",
4365
- "\u30A2\u30CA\u30EB",
4366
- "\u3044\u305F\u305A\u3089",
4367
- "\u30A4\u30E9\u30DE\u30C1\u30AA",
4368
- "\u30A6\u30A7\u30D6\u30AB\u30E1\u30E9",
4369
- "\u30A8\u30AF\u30B9\u30BF\u30B7\u30FC",
4370
- "\u30A8\u30B9\u30B3\u30FC\u30C8",
4371
- "\u30A8\u30C3\u30C1",
4372
- "\u30A8\u30ED\u30C6\u30A3\u30BA\u30E0",
4373
- "\u30A8\u30ED\u30C6\u30A3\u30C3\u30AF",
4374
- "\u30AA\u30FC\u30AC\u30BA\u30E0",
4375
- "\u30AA\u30AB\u30DE",
4376
- "\u304A\u3057\u3063\u3053",
4377
- "\u304A\u3057\u308A",
4378
- "\u30AA\u30B7\u30EA",
4379
- "\u304A\u3057\u308A\u306E\u3042\u306A",
4380
- "\u304A\u3063\u3071\u3044",
4381
- "\u30AA\u30C3\u30D1\u30A4",
4382
- "\u30AA\u30CA\u30CB\u30FC",
4383
- "\u30AA\u30DE\u30F3\u30B3",
4384
- "\u304A\u3082\u3089\u3057",
4385
- "\u304A\u5C3B",
4386
- "\u30AB\u30FC\u30DE\u30B9\u30FC\u30C8\u30E9",
4387
- "\u30AB\u30F3\u30C8",
4388
- "\u30AF\u30EA\u30C8\u30EA\u30B9",
4389
- "\u30B0\u30EB\u30FC\u30D7\u30FB\u30BB\u30C3\u30AF\u30B9",
4390
- "\u30B0\u30ED",
4391
- "\u30AF\u30F3\u30CB\u30EA\u30F3\u30B0\u30B9",
4392
- "\u30B2\u30A4\u30FB\u30BB\u30C3\u30AF\u30B9",
4393
- "\u30B2\u30A4\u306E\u7537\u6027",
4394
- "\u30B2\u30A4\u30DC\u30FC\u30A4",
4395
- "\u30B4\u30FC\u30EB\u30C7\u30F3\u30B7\u30E3\u30EF\u30FC",
4396
- "\u30B3\u30AB\u30A4\u30F3",
4397
- "\u30B4\u30C3\u30AF\u30F3",
4398
- "\u30B5\u30C7\u30A3\u30BA\u30E0",
4399
- "\u3057\u3070\u308A",
4400
- "\u30B9\u30A6\u30A3\u30F3\u30AC\u30FC",
4401
- "\u30B9\u30AB\u30FC\u30C8\u306E\u4E2D",
4402
- "\u30B9\u30AB\u30C8\u30ED",
4403
- "\u30B9\u30C8\u30E9\u30C3\u30D7\u30AA\u30F3",
4404
- "\u30B9\u30C8\u30EA\u30C3\u30D7\u5287\u5834",
4405
- "\u30B9\u30E9\u30C3\u30C8",
4406
- "\u30B9\u30EA\u30C3\u30C8",
4407
- "\u30BB\u30AF\u30B7\u30FC\u306A",
4408
- "\u30BB\u30AF\u30B7\u30FC\u306A 10 \u4EE3",
4409
- "\u30BB\u30C3\u30AF\u30B9",
4410
- "\u30BD\u30C9\u30DF\u30FC",
4411
- "\u3061\u3093\u3053",
4412
- "\u30C7\u30A3\u30FC\u30D7\u30FB\u30B9\u30ED\u30FC\u30C8",
4413
- "\u30C7\u30A3\u30C3\u30AF",
4414
- "\u30C7\u30A3\u30EB\u30C9",
4415
- "\u30C7\u30FC\u30C8\u30EC\u30A4\u30D7",
4416
- "\u30C7\u30D6",
4417
- "\u30C6\u30EC\u30D5\u30A9\u30F3\u30BB\u30C3\u30AF\u30B9",
4418
- "\u30C9\u30C3\u30B0\u30B9\u30BF\u30A4\u30EB",
4419
- "\u30C8\u30C3\u30D7\u30EC\u30B9",
4420
- "\u306A\u3081",
4421
- "\u30CB\u30AC\u30FC",
4422
- "\u30CC\u30FC\u30C9",
4423
- "\u30CD\u30AA\u30FB\u30CA\u30C1",
4424
- "\u30CF\u30FC\u30C9\u30B3\u30A2",
4425
- "\u30D1\u30A4\u30D1\u30F3",
4426
- "\u30D0\u30A4\u30D6\u30EC\u30FC\u30BF\u30FC",
4427
- "\u30D0\u30C3\u30AF\u30FB\u30B9\u30BF\u30A4\u30EB",
4428
- "\u30D1\u30F3\u30C6\u30A3\u30FC",
4429
- "\u30D3\u30C3\u30C1",
4430
- "\u30D5\u30A1\u30C3\u30AF",
4431
- "\u30D5\u30A1\u30F3\u30BF\u30B8\u30FC",
4432
- "\u30D5\u30A3\u30B9\u30C8",
4433
- "\u30D5\u30A7\u30C6\u30A3\u30C3\u30B7\u30E5",
4434
- "\u30D5\u30A7\u30E9\u30C1\u30AA",
4435
- "\u3075\u305F\u306A\u308A",
4436
- "\u3076\u3063\u304B\u3051",
4437
- "\u30D5\u30C3\u30AF",
4438
- "\u30D7\u30EA\u30F3\u30B9 \u30A2\u30EB\u30D0\u30FC\u30C8 \u30D4\u30A2\u30B9",
4439
- "\u30D7\u30EC\u30A4\u30DC\u30FC\u30A4",
4440
- "\u30D9\u30A2\u30D0\u30C3\u30AF",
4441
- "\u30DA\u30CB\u30B9",
4442
- "\u30DA\u30CB\u30B9\u30D0\u30F3\u30C9",
4443
- "\u30DC\u30FC\u30A4\u30BA\u30E9\u30D6",
4444
- "\u30DC\u30FC\u30EB\u30AE\u30E3\u30B0",
4445
- "\u30DC\u30FC\u30EB\u3092\u8E74\u308B",
4446
- "\u307D\u3063\u3061\u3083\u308A",
4447
- "\u30DB\u30E2",
4448
- "\u30DD\u30EB\u30CE",
4449
- "\u30DD\u30EB\u30CE\u30B0\u30E9\u30D5\u30A3\u30FC",
4450
- "\u30DC\u30F3\u30C6\u30FC\u30B8",
4451
- "\u30DE\u30B6\u30FC\u30FB\u30D5\u30A1\u30C3\u30AB\u30FC",
4452
- "\u30DE\u30B9\u30BF\u30FC\u30D9\u30FC\u30B7\u30E7\u30F3",
4453
- "\u307E\u3093\u3053",
4454
- "\u3084\u304A\u3044",
4455
- "\u3084\u308A\u307E\u3093",
4456
- "\u30E6\u30C0\u30E4\u4EBA",
4457
- "\u30E9\u30C6\u30A3\u30FC\u30CA",
4458
- "\u30E9\u30D0\u30FC",
4459
- "\u30E9\u30F3\u30B8\u30A7\u30EA\u30FC",
4460
- "\u30EC\u30A4\u30D7",
4461
- "\u30EC\u30BA\u30D3\u30A2\u30F3",
4462
- "\u30ED\u30FC\u30BF\u30FC",
4463
- "\u30ED\u30EA\u30FC\u30BF",
4464
- "\u6DEB\u4E71",
4465
- "\u9670\u6BDB",
4466
- "\u9769\u6291\u5236",
4467
- "\u9A0E\u4E0A\u4F4D",
4468
- "\u5DE8\u6839",
4469
- "\u5DE8\u4E73",
4470
- "\u5F37\u59E6\u72AF",
4471
- "\u7389\u306A\u3081",
4472
- "\u7389\u8210\u3081",
4473
- "\u7DCA\u7E1B",
4474
- "\u8FD1\u89AA\u76F8\u59E6",
4475
- "\u5ACC\u3044",
4476
- "\u5F8C\u80CC\u4F4D",
4477
- "\u5408\u610F\u306E\u6027\u4EA4",
4478
- "\u62F7\u554F",
4479
- "\u6BBA\u3057\u65B9",
4480
- "\u6BBA\u4EBA\u4E8B\u4EF6",
4481
- "\u6BBA\u4EBA\u65B9\u6CD5",
4482
- "\u652F\u914D",
4483
- "\u5150\u7AE5\u6027\u8650\u5F85",
4484
- "\u81EA\u5DF1\u611B\u6027",
4485
- "\u5C04\u7CBE",
4486
- "\u624B\u30B3\u30AD",
4487
- "\u7363\u59E6",
4488
- "\u5973\u306E\u5B50",
4489
- "\u5973\u738B\u69D8",
4490
- "\u5973\u5B50\u9AD8\u751F",
4491
- "\u5973\u88C5",
4492
- "\u65B0\u3057\u3044\u30DD\u30EB\u30CE",
4493
- "\u4EBA\u59BB",
4494
- "\u4EBA\u7A2E",
4495
- "\u6027\u4EA4",
4496
- "\u6B63\u5E38\u4F4D",
4497
- "\u751F\u6B96\u5668",
4498
- "\u7CBE\u6DB2",
4499
- "\u633F\u5165",
4500
- "\u8DB3\u30D5\u30A7\u30C1",
4501
- "\u8DB3\u3092\u5E83\u3052\u308B",
4502
- "\u5927\u9670\u5507",
4503
- "\u8131\u8863",
4504
- "\u8336\u8272\u306E\u30B7\u30E3\u30EF\u30FC",
4505
- "\u4E2D\u51FA\u3057",
4506
- "\u6F6E\u5439\u304D\u5973",
4507
- "\u6F6E\u5439\u304D\u7537\u6027",
4508
- "\u76F4\u8178",
4509
- "\u5243\u6BDB",
4510
- "\u8C9E\u64CD\u5E2F",
4511
- "\u5974\u96B7",
4512
- "\u4E8C\u7A74",
4513
- "\u4E73\u9996",
4514
- "\u5C3F\u9053\u30D7\u30EC\u30A4",
4515
- "\u8997\u304D",
4516
- "\u58F2\u6625\u5A66",
4517
- "\u7E1B\u308A",
4518
- "\u5674\u51FA",
4519
- "\u7CDE",
4520
- "\u7CDE\u5C3F\u611B\u597D\u75C7",
4521
- "\u7CDE\u4FBF",
4522
- "\u5E73\u624B\u6253\u3061",
4523
- "\u5909\u614B",
4524
- "\u52C3\u8D77\u3059\u308B",
4525
- "\u5922\u7CBE",
4526
- "\u6BDB\u6DF1\u3044",
4527
- "\u8A98\u60D1",
4528
- "\u5E7C\u5150",
4529
- "\u5E7C\u5150\u6027\u611B\u8005",
4530
- "\u88F8",
4531
- "\u88F8\u306E\u5973\u6027",
4532
- "\u4E71\u4EA4",
4533
- "\u4E21\u6027",
4534
- "\u4E21\u6027\u5177\u6709",
4535
- "\u4E21\u5200",
4536
- "\u8F2A\u59E6",
4537
- "\u534D",
4538
- "\u5BA6\u5B98",
4539
- "\u809B\u9580",
4540
- "\u81A3"
4541
- ]
4542
- };
4543
-
4544
- // ../../shared/dictionaries/turkish.json
4545
- var turkish_default = {
4546
- words: [
4547
- "aardappels afgieteng",
4548
- "achter het raam zitten",
4549
- "afberen",
4550
- "aflebberen",
4551
- "afrossen",
4552
- "afrukken",
4553
- "aftrekken",
4554
- "afwerkplaats",
4555
- "afzeiken",
4556
- "afzuigen",
4557
- "anderhalve man en een paardekop",
4558
- "anita",
4559
- "asbak",
4560
- "aso",
4561
- "bagger schijten",
4562
- "balen",
4563
- "bedonderen",
4564
- "befborstelg",
4565
- "beffen",
4566
- "bekken",
4567
- "belazeren",
4568
- "besodemieterd zijn",
4569
- "besodemieteren",
4570
- "beurt",
4571
- "boemelen",
4572
- "boerelul",
4573
- "boerenpummelg",
4574
- "bokkelul",
4575
- "botergeil",
4576
- "broekhoesten",
4577
- "brugpieperg",
4578
- "buffelen",
4579
- "buiten de pot piesen",
4580
- "da's kloten van de bok",
4581
- "de ballen",
4582
- "de hoer spelen",
4583
- "de hond uitlaten",
4584
- "de koffer induiken",
4585
- "delg",
4586
- "de pijp aan maarten geven",
4587
- "de pijp uitgaan",
4588
- "dombo",
4589
- "draaikontg",
4590
- "driehoog achter wonen",
4591
- "drolg",
4592
- "drooggeiler",
4593
- "droogkloot",
4594
- "een beurt geven",
4595
- "een nummertje maken",
4596
- "een wip maken",
4597
- "eikel",
4598
- "engerd",
4599
- "flamoes",
4600
- "flikken",
4601
- "flikker",
4602
- "gadverdamme",
4603
- "galbak",
4604
- "gat",
4605
- "gedoogzone",
4606
- "geilneef",
4607
- "gesodemieter",
4608
- "godverdomme",
4609
- "graftak",
4610
- "gras maaien",
4611
- "gratenkutg",
4612
- "greppeldel",
4613
- "griet",
4614
- "hoempert",
4615
- "hoer",
4616
- "hoerenbuurt",
4617
- "hoerenloper",
4618
- "hoerig",
4619
- "hol",
4620
- "hufter",
4621
- "huisdealer",
4622
- "johny",
4623
- "kanen",
4624
- "kettingzeugg",
4625
- "klaarkomen",
4626
- "klerebeer",
4627
- "klojo",
4628
- "klooien",
4629
- "klootjesvolk",
4630
- "klootoog",
4631
- "klootzak",
4632
- "kloten",
4633
- "knor",
4634
- "kontg",
4635
- "kontneuken",
4636
- "krentekakker",
4637
- "kut",
4638
- "kuttelikkertje",
4639
- "kwakkieg",
4640
- "liefdesgrot",
4641
- "lul",
4642
- "lul-de-behanger",
4643
- "lulhannes",
4644
- "lummel",
4645
- "mafketel",
4646
- "matennaaierg",
4647
- "matje",
4648
- "mof",
4649
- "mutsg",
4650
- "naaien",
4651
- "naakt",
4652
- "neuken",
4653
- "neukstier",
4654
- "nicht",
4655
- "oetlul",
4656
- "opgeilen",
4657
- "opkankeren",
4658
- "oprotten",
4659
- "opsodemieteren",
4660
- "op z'n hondjes",
4661
- "op z'n sodemieter geven",
4662
- "opzouten",
4663
- "ouwehoer",
4664
- "ouwehoeren",
4665
- "ouwe rukker",
4666
- "paal",
4667
- "paardelul",
4668
- "palen",
4669
- "penozeg",
4670
- "piesen",
4671
- "pijpbekkieg",
4672
- "pijpen",
4673
- "pik",
4674
- "pleurislaaier",
4675
- "poep",
4676
- "poepen",
4677
- "poot",
4678
- "portiekslet",
4679
- "pot",
4680
- "potverdorie",
4681
- "publiciteitsgeil",
4682
- "raaskallen",
4683
- "reet",
4684
- "reetridder",
4685
- "reet trappen, voor zijn",
4686
- "remsporeng",
4687
- "reutelen",
4688
- "rothoer",
4689
- "rotzak",
4690
- "rukhond",
4691
- "rukken",
4692
- "schatje",
4693
- "schijt",
4694
- "schijten",
4695
- "schoft",
4696
- "schuinsmarcheerder",
4697
- "shit",
4698
- "slempen",
4699
- "sletg",
4700
- "sletterig",
4701
- "slik mijn zaad",
4702
- "snolg",
4703
- "spuiten",
4704
- "standje",
4705
- "standje-69g",
4706
- "stoephoer",
4707
- "stootje",
4708
- "strontg",
4709
- "sufferdg",
4710
- "tapijtnek",
4711
- "teefg",
4712
- "temeier",
4713
- "teringlijer",
4714
- "toeter",
4715
- "tongzoeng",
4716
- "triootjeg",
4717
- "trottoir prostitu\xE9e",
4718
- "trottoirteef",
4719
- "vergallen",
4720
- "verkloten",
4721
- "verneuken",
4722
- "viespeuk",
4723
- "vingeren",
4724
- "vleesroos",
4725
- "voor jan lul",
4726
- "voor jan-met-de-korte-achternaam",
4727
- "watje",
4728
- "welzijnsmafia",
4729
- "wijf",
4730
- "wippen",
4731
- "wuftje",
4732
- "zaadje",
4733
- "zakkenwasser",
4734
- "zeiken",
4735
- "zeiker",
4736
- "zuigen",
4737
- "zuiplap"
4738
- ]
4739
- };
4740
-
4741
- // ../../shared/dictionaries/spanish.json
4742
- var spanish_default = {
4743
- words: [
4744
- "sesinato",
4745
- "asno",
4746
- "bastardo",
4747
- "Bollera",
4748
- "Cabron",
4749
- "Cabr\xF3n",
4750
- "Caca",
4751
- "Chupada",
4752
- "Chupapollas",
4753
- "Chupet\xF3n",
4754
- "concha",
4755
- "Concha de tu madre",
4756
- "Co\xF1o",
4757
- "Coprofag\xEDa",
4758
- "Culo",
4759
- "Drogas",
4760
- "Esperma",
4761
- "Fiesta de salchichas",
4762
- "Follador",
4763
- "Follar",
4764
- "Gilipichis",
4765
- "Gilipollas",
4766
- "Hacer una paja",
4767
- "Haciendo el amor",
4768
- "Hero\xEDna",
4769
- "Hija de puta",
4770
- "Hijaputa",
4771
- "Hijo de puta",
4772
- "Hijoputa",
4773
- "Idiota",
4774
- "Imb\xE9cil",
4775
- "infierno",
4776
- "Jilipollas",
4777
- "Kapullo",
4778
- "Lameculos",
4779
- "Maciza",
4780
- "Macizorra",
4781
- "maldito",
4782
- "Mamada",
4783
- "Marica",
4784
- "Maric\xF3n",
4785
- "Mariconazo",
4786
- "martillo",
4787
- "Mierda",
4788
- "Nazi",
4789
- "Orina",
4790
- "Pedo",
4791
- "Pervertido",
4792
- "Pez\xF3n",
4793
- "Pinche",
4794
- "Pis",
4795
- "Prostituta",
4796
- "Puta",
4797
- "Racista",
4798
- "Ramera",
4799
- "S\xE1dico",
4800
- "Semen",
4801
- "Sexo",
4802
- "Sexo oral",
4803
- "Soplagaitas",
4804
- "Soplapollas",
4805
- "Tetas grandes",
4806
- "T\xEDa buena",
4807
- "Travesti",
4808
- "Trio",
4809
- "Verga",
4810
- "vete a la mierda",
4811
- "Vulva"
4812
- ]
4813
- };
4814
-
4815
- // ../../shared/dictionaries/swedish.json
4816
- var swedish_default = {
4817
- words: [
4818
- "arsle",
4819
- "brutta",
4820
- "discofitta",
4821
- "dra \xE5t helvete",
4822
- "fan",
4823
- "fitta",
4824
- "fittig",
4825
- "f\xF6r helvete",
4826
- "helvete",
4827
- "h\xE5rd",
4828
- "j\xE4vlar",
4829
- "knulla",
4830
- "kuk",
4831
- "kuks\xE5s",
4832
- "k\xF6tthuvud",
4833
- "k\xF6ttnacke",
4834
- "moona",
4835
- "moonade",
4836
- "moonar",
4837
- "moonat",
4838
- "mutta",
4839
- "nigger",
4840
- "neger",
4841
- "olla",
4842
- "pippa",
4843
- "pitt",
4844
- "prutt",
4845
- "p\xF6k",
4846
- "runka",
4847
- "r\xF6v",
4848
- "r\xF6vh\xE5l",
4849
- "r\xF6vknulla",
4850
- "satan",
4851
- "skita",
4852
- "skit ner dig",
4853
- "sk\xE4ggbiff",
4854
- "snedfitta",
4855
- "snefitta",
4856
- "stake",
4857
- "subba",
4858
- "s\xE5s",
4859
- "s\xE4tta p\xE5",
4860
- "tusan"
4861
- ]
4862
- };
4863
-
4864
- // ../../shared/dictionaries/thai.json
4865
- var thai_default = {
4866
- words: [
4867
- "\u0E01\u0E23\u0E30\u0E14\u0E2D",
4868
- "\u0E01\u0E23\u0E30\u0E40\u0E14\u0E49\u0E32",
4869
- "\u0E01\u0E23\u0E30\u0E2B\u0E23\u0E35\u0E48",
4870
- "\u0E01\u0E30\u0E1B\u0E34",
4871
- "\u0E01\u0E39",
4872
- "\u0E02\u0E35\u0E49",
4873
- "\u0E04\u0E27\u0E22",
4874
- "\u0E08\u0E34\u0E4B\u0E21",
4875
- "\u0E08\u0E39\u0E4B",
4876
- "\u0E40\u0E08\u0E4A\u0E01",
4877
- "\u0E40\u0E08\u0E35\u0E4A\u0E22\u0E27",
4878
- "\u0E14\u0E2D\u0E01\u0E17\u0E2D\u0E07",
4879
- "\u0E15\u0E2D\u0E41\u0E2B\u0E25",
4880
- "\u0E15\u0E39\u0E14",
4881
- "\u0E19\u0E49\u0E4D\u0E32\u0E41\u0E15\u0E01",
4882
- "\u0E21\u0E36\u0E07",
4883
- "\u0E41\u0E21\u0E48\u0E07",
4884
- "\u0E40\u0E22\u0E47\u0E14",
4885
- "\u0E23\u0E39\u0E15\u0E39\u0E14",
4886
- "\u0E25\u0E49\u0E32\u0E07\u0E15\u0E39\u0E49\u0E40\u0E22\u0E47\u0E19",
4887
- "\u0E2A\u0E49\u0E19\u0E15\u0E35\u0E19",
4888
- "\u0E2A\u0E31\u0E14",
4889
- "\u0E40\u0E2A\u0E37\u0E2D\u0E01",
4890
- "\u0E2B\u0E0D\u0E34\u0E07\u0E0A\u0E32\u0E15\u0E34\u0E0A\u0E31\u0E48\u0E27",
4891
- "\u0E2B\u0E25\u0E31\u0E48\u0E07",
4892
- "\u0E2B\u0E48\u0E32",
4893
- "\u0E2B\u0E4D\u0E32",
4894
- "\u0E2B\u0E35",
4895
- "\u0E40\u0E2B\u0E35\u0E49\u0E22",
4896
- "\u0E2D\u0E21\u0E19\u0E01\u0E40\u0E02\u0E32",
4897
- "\u0E44\u0E2D\u0E49\u0E04\u0E27\u0E32\u0E22"
4898
- ]
4899
- };
4900
-
4901
- // src/data/dictionary.ts
4902
- var dictionary_default = {
4903
- arabic: arabic_default.words,
4904
- chinese: chinese_default.words,
4905
- czech: czech_default.words,
4906
- danish: danish_default.words,
4907
- english: english_default.words,
4908
- esperanto: esperanto_default.words,
4909
- finnish: finnish_default.words,
4910
- french: french_default.words,
4911
- german: german_default.words,
4912
- hindi: hindi_default.words,
4913
- hungarian: hungarian_default.words,
4914
- italian: italian_default.words,
4915
- japanese: japanese_default.words,
4916
- korean: korean_default.words,
4917
- norwegian: Norwegian_default.words,
4918
- persian: persian_default.words,
4919
- polish: polish_default.words,
4920
- portuguese: portuguese_default.words,
4921
- russian: russian_default.words,
4922
- spanish: spanish_default.words,
4923
- turkish: turkish_default.words,
4924
- swedish: swedish_default.words,
4925
- thai: thai_default.words
4926
- };
4927
-
4928
- // src/types/types.ts
4929
- var SeverityLevel = /* @__PURE__ */ ((SeverityLevel2) => {
4930
- SeverityLevel2[SeverityLevel2["EXACT"] = 1] = "EXACT";
4931
- SeverityLevel2[SeverityLevel2["FUZZY"] = 2] = "FUZZY";
4932
- return SeverityLevel2;
4933
- })(SeverityLevel || {});
4934
-
4935
- // src/nlp/contextAnalyzer.ts
4936
- var POSITIVE_INDICATORS = /* @__PURE__ */ new Set([
4937
- "amazing",
4938
- "awesome",
4939
- "excellent",
4940
- "fantastic",
4941
- "great",
4942
- "love",
4943
- "wonderful",
4944
- "brilliant",
4945
- "perfect",
4946
- "incredible",
4947
- "outstanding",
4948
- "superb",
4949
- "magnificent",
4950
- "marvelous",
4951
- "spectacular",
4952
- "phenomenal",
4953
- "terrific",
4954
- "fabulous",
4955
- "divine",
4956
- "best",
4957
- "good",
4958
- "nice",
4959
- "cool",
4960
- "sweet",
4961
- "rad",
4962
- "sick",
4963
- "dope",
4964
- "fire",
4965
- "lit",
4966
- "epic",
4967
- "legendary",
4968
- "godlike",
4969
- "insane",
4970
- "crazy",
4971
- "wild",
4972
- "beast",
4973
- "movie",
4974
- "film",
4975
- "show",
4976
- "song",
4977
- "music",
4978
- "game",
4979
- "book",
4980
- "restaurant",
4981
- "food",
4982
- "dish",
4983
- "meal",
4984
- "place",
4985
- "spot",
4986
- "location",
4987
- "experience"
4988
- ]);
4989
- var NEGATIVE_INDICATORS = /* @__PURE__ */ new Set([
4990
- "hate",
4991
- "terrible",
4992
- "awful",
4993
- "horrible",
4994
- "disgusting",
4995
- "pathetic",
4996
- "stupid",
4997
- "idiot",
4998
- "moron",
4999
- "loser",
5000
- "worthless",
5001
- "useless",
5002
- "garbage",
5003
- "trash",
5004
- "suck",
5005
- "sucks",
5006
- "worst",
5007
- "bad",
5008
- "ugly",
5009
- "gross",
5010
- "nasty",
5011
- "annoying",
5012
- "irritating",
5013
- "frustrating",
5014
- "disappointing",
5015
- "lame",
5016
- "weak",
5017
- "fail",
5018
- "you",
5019
- "your",
5020
- "yourself",
5021
- "u",
5022
- "ur",
5023
- "ure",
5024
- "youre"
5025
- ]);
5026
- var GAMING_POSITIVE = /* @__PURE__ */ new Set([
5027
- "player",
5028
- "gamer",
5029
- "team",
5030
- "squad",
5031
- "clan",
5032
- "guild",
5033
- "match",
5034
- "game",
5035
- "round",
5036
- "level",
5037
- "boss",
5038
- "raid",
5039
- "quest",
5040
- "achievement",
5041
- "skill",
5042
- "build",
5043
- "loadout",
5044
- "strategy",
5045
- "tactic",
5046
- "play",
5047
- "move",
5048
- "combo"
5049
- ]);
5050
- var POSITIVE_PHRASES = /* @__PURE__ */ new Map([
5051
- ["the bomb", 0.9],
5052
- // "this movie is the bomb"
5053
- ["da bomb", 0.9],
5054
- // slang for "the best"
5055
- ["bomb.com", 0.9],
5056
- // website reference
5057
- ["bomb diggity", 0.9],
5058
- // slang for excellent
5059
- ["photo bomb", 0.8],
5060
- // photography term
5061
- ["bath bomb", 0.8],
5062
- // cosmetic product
5063
- ["bomb squad", 0.7]
5064
- // could be neutral/positive in gaming
5065
- ]);
5066
- var NEGATIVE_PHRASES = /* @__PURE__ */ new Map([
5067
- ["you are", 0.1],
5068
- // "you are [profanity]"
5069
- ["ur a", 0.1],
5070
- // "ur a [profanity]"
5071
- ["such a", 0.2],
5072
- // "such a [profanity]"
5073
- ["fucking", 0.1],
5074
- // intensifier, usually negative
5075
- ["damn", 0.2]
5076
- // mild profanity, context dependent
5077
- ]);
5078
- var ContextAnalyzer = class {
5079
- constructor(config) {
5080
- this.contextWindow = config.contextWindow;
5081
- this.language = config.language;
5082
- this.domainWhitelists = new Set(config.domainWhitelists || []);
5083
- }
5084
- /**
5085
- * Analyzes the context around a profanity match to determine if it should be flagged
5086
- */
5087
- analyzeContext(text, matchWord, matchIndex) {
5088
- const words = this.tokenize(text);
5089
- const matchWordIndex = this.findWordIndex(words, matchIndex);
5090
- if (matchWordIndex === -1) {
5091
- return {
5092
- contextScore: 0.5,
5093
- reason: "Could not locate match in tokenized text",
5094
- isWhitelisted: false
5095
- };
5096
- }
5097
- const startIndex = Math.max(0, matchWordIndex - this.contextWindow);
5098
- const endIndex = Math.min(words.length, matchWordIndex + this.contextWindow + 1);
5099
- const contextWords = words.slice(startIndex, endIndex);
5100
- const contextText = contextWords.join(" ").toLowerCase();
5101
- const phraseResult = this.checkPhraseContext(contextText, matchWord);
5102
- if (phraseResult) {
5103
- return phraseResult;
5104
- }
5105
- if (this.isDomainWhitelisted(contextWords, matchWord)) {
5106
- return {
5107
- contextScore: 0.8,
5108
- reason: "Domain-specific whitelist match",
5109
- isWhitelisted: true
5110
- };
5111
- }
5112
- const sentimentScore = this.calculateSentimentScore(contextWords, matchWordIndex - startIndex);
5113
- return {
5114
- contextScore: sentimentScore,
5115
- reason: this.generateReason(sentimentScore, contextWords),
5116
- isWhitelisted: false
5117
- };
5118
- }
5119
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5120
- checkPhraseContext(contextText, matchWord) {
5121
- for (const [phrase, score] of POSITIVE_PHRASES.entries()) {
5122
- if (contextText.includes(phrase)) {
5123
- return {
5124
- contextScore: score,
5125
- reason: `Positive phrase detected: "${phrase}"`,
5126
- isWhitelisted: true
5127
- };
5128
- }
5129
- }
5130
- for (const [phrase, score] of NEGATIVE_PHRASES.entries()) {
5131
- if (contextText.includes(phrase)) {
5132
- return {
5133
- contextScore: score,
5134
- reason: `Negative phrase detected: "${phrase}"`,
5135
- isWhitelisted: false
5136
- };
5137
- }
5138
- }
5139
- return null;
5140
- }
5141
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5142
- isDomainWhitelisted(contextWords, matchWord) {
5143
- for (const word of contextWords) {
5144
- if (this.domainWhitelists.has(word) || GAMING_POSITIVE.has(word)) {
5145
- return true;
5146
- }
5147
- }
5148
- return false;
5149
- }
5150
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5151
- generateReason(score, contextWords) {
5152
- if (score >= 0.7) {
5153
- return "Positive context detected - likely not profanity";
5154
- } else if (score <= 0.3) {
5155
- return "Negative context detected - likely profanity";
5156
- } else {
5157
- return "Neutral context - uncertain classification";
5158
- }
5159
- }
5160
- tokenize(text) {
5161
- return text.toLowerCase().replace(/[^\w\s]/g, " ").split(/\s+/).filter((word) => word.length > 0);
5162
- }
5163
- findWordIndex(words, charIndex) {
5164
- let currentPos = 0;
5165
- for (let i = 0; i < words.length; i++) {
5166
- if (currentPos >= charIndex) {
5167
- return Math.max(0, i - 1);
5168
- }
5169
- currentPos += words[i].length + 1;
5170
- }
5171
- return words.length - 1;
5172
- }
5173
- calculateSentimentScore(contextWords, matchPosition) {
5174
- let positiveCount = 0;
5175
- let negativeCount = 0;
5176
- const totalWords = contextWords.length;
5177
- for (let i = 0; i < contextWords.length; i++) {
5178
- const word = contextWords[i];
5179
- const distance = Math.abs(i - matchPosition);
5180
- const weight = Math.max(0.1, 1 - distance * 0.2);
5181
- if (POSITIVE_INDICATORS.has(word)) {
5182
- positiveCount += weight;
5183
- } else if (NEGATIVE_INDICATORS.has(word)) {
5184
- negativeCount += weight;
5185
- }
5186
- }
5187
- const totalSentiment = positiveCount + negativeCount;
5188
- if (totalSentiment === 0) {
5189
- return 0.5;
5190
- }
5191
- const rawScore = positiveCount / totalSentiment;
5192
- let adjustedScore = rawScore;
5193
- const confidenceMultiplier = Math.min(1, totalWords / 5);
5194
- adjustedScore = 0.5 + (adjustedScore - 0.5) * confidenceMultiplier;
5195
- const hasPersonalPronouns = contextWords.some(
5196
- (word) => ["you", "your", "u", "ur"].includes(word)
5197
- );
5198
- if (hasPersonalPronouns && rawScore < 0.7) {
5199
- adjustedScore *= 0.7;
5200
- }
5201
- const hasObjectReferences = contextWords.some(
5202
- (word) => ["movie", "song", "game", "book", "show", "this", "that", "it"].includes(word)
5203
- );
5204
- if (hasObjectReferences && rawScore > 0.3) {
5205
- adjustedScore = Math.min(1, adjustedScore * 1.3);
5206
- }
5207
- return Math.max(0, Math.min(1, adjustedScore));
5208
- }
5209
- /**
5210
- * Updates the domain whitelist for this analyzer instance
5211
- */
5212
- updateDomainWhitelist(newWhitelist) {
5213
- this.domainWhitelists = new Set(newWhitelist);
5214
- }
5215
- /**
5216
- * Adds words to the domain whitelist
5217
- */
5218
- addToDomainWhitelist(words) {
5219
- words.forEach((word) => this.domainWhitelists.add(word.toLowerCase()));
5220
- }
5221
- };
5222
-
5223
- // src/filters/Filter.ts
5224
- var Filter = class {
5225
- constructor(config) {
5226
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
5227
- const defaultLanguage = "english";
5228
- this.enableContextAware = (_a = config == null ? void 0 : config.enableContextAware) != null ? _a : false;
5229
- this.contextWindow = (_b = config == null ? void 0 : config.contextWindow) != null ? _b : 3;
5230
- this.confidenceThreshold = (_c = config == null ? void 0 : config.confidenceThreshold) != null ? _c : 0.7;
5231
- this.primaryLanguage = ((_d = config == null ? void 0 : config.languages) == null ? void 0 : _d[0]) || defaultLanguage;
5232
- if (this.enableContextAware) {
5233
- this.contextAnalyzer = new ContextAnalyzer({
5234
- contextWindow: this.contextWindow,
5235
- language: this.primaryLanguage,
5236
- domainWhitelists: ((_e = config == null ? void 0 : config.domainWhitelists) == null ? void 0 : _e[this.primaryLanguage]) || []
5237
- });
5238
- }
5239
- let words = [];
5240
- this.caseSensitive = (_f = config == null ? void 0 : config.caseSensitive) != null ? _f : false;
5241
- this.allowObfuscatedMatch = (_g = config == null ? void 0 : config.allowObfuscatedMatch) != null ? _g : false;
5242
- this.wordBoundaries = (_h = config == null ? void 0 : config.wordBoundaries) != null ? _h : !this.allowObfuscatedMatch;
5243
- this.replaceWith = config == null ? void 0 : config.replaceWith;
5244
- this.severityLevels = (_i = config == null ? void 0 : config.severityLevels) != null ? _i : false;
5245
- this.ignoreWords = new Set(
5246
- ((_j = config == null ? void 0 : config.ignoreWords) == null ? void 0 : _j.map((word) => word.toLowerCase())) || []
5247
- );
5248
- this.logProfanity = (_k = config == null ? void 0 : config.logProfanity) != null ? _k : false;
5249
- this.fuzzyToleranceLevel = (_l = config == null ? void 0 : config.fuzzyToleranceLevel) != null ? _l : 0.8;
5250
- if (config == null ? void 0 : config.allLanguages) {
5251
- for (const lang in dictionary_default) {
5252
- if (Object.prototype.hasOwnProperty.call(dictionary_default, lang)) {
5253
- words = [...words, ...dictionary_default[lang]];
5254
- }
5255
- }
5256
- } else {
5257
- const languages = (config == null ? void 0 : config.languages) || ["english"];
5258
- const languagesChecks = new Set(languages);
5259
- languagesChecks.forEach((lang) => {
5260
- words = [...words, ...dictionary_default[lang]];
5261
- });
5262
- }
5263
- if (config == null ? void 0 : config.customWords) {
5264
- words = [...words, ...config.customWords];
5265
- }
5266
- this.words = new Map(words.map((word) => [word.toLowerCase(), 1]));
5267
- }
5268
- debugLog(...args) {
5269
- if (this.logProfanity) {
5270
- console.log("[glin-profanity]", ...args);
5271
- }
5272
- }
5273
- normalizeObfuscated(text) {
5274
- let normalized = text.replace(/([a-zA-Z])\1{1,}/g, "$1$1");
5275
- const charMap = {
5276
- "@": "a",
5277
- $: "s",
5278
- "!": "i",
5279
- "1": "i",
5280
- "*": ""
5281
- };
5282
- normalized = normalized.replace(/[@$!1*]/g, (m) => charMap[m] || m);
5283
- return normalized;
5284
- }
5285
- getRegex(word) {
5286
- const flags = this.caseSensitive ? "g" : "gi";
5287
- const escapedWord = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5288
- const boundary = this.wordBoundaries ? "\\b" : "";
5289
- return new RegExp(`${boundary}${escapedWord}${boundary}`, flags);
5290
- }
5291
- isFuzzyToleranceMatch(word, text) {
5292
- const simplifiedText = text.toLowerCase().replace(/[^a-z]/g, "");
5293
- const simplifiedWord = word.toLowerCase();
5294
- let matchCount = 0;
5295
- let index = 0;
5296
- for (let i = 0; i < simplifiedText.length; i++) {
5297
- if (simplifiedText[i] === simplifiedWord[index]) {
5298
- matchCount++;
5299
- index++;
5300
- if (index === simplifiedWord.length) break;
5301
- }
5302
- }
5303
- const score = matchCount / simplifiedWord.length;
5304
- return score >= this.fuzzyToleranceLevel;
5305
- }
5306
- evaluateSeverity(word, text) {
5307
- if (this.wordBoundaries && this.getRegex(word).test(text)) {
5308
- return 1 /* EXACT */;
5309
- }
5310
- if (this.getRegex(word).test(text)) return 1 /* EXACT */;
5311
- if (this.isFuzzyToleranceMatch(word, text)) return 2 /* FUZZY */;
5312
- return void 0;
5313
- }
5314
- isProfane(value) {
5315
- const input = this.allowObfuscatedMatch ? this.normalizeObfuscated(value) : value;
5316
- for (const word of this.words.keys()) {
5317
- if (!this.ignoreWords.has(word.toLowerCase()) && this.evaluateSeverity(word, input) !== void 0) {
5318
- return true;
5319
- }
5320
- }
5321
- return false;
5322
- }
5323
- matches(word) {
5324
- return this.isProfane(word);
5325
- }
5326
- checkProfanity(text) {
5327
- if (!this.enableContextAware) {
5328
- let input2 = this.allowObfuscatedMatch ? this.normalizeObfuscated(text) : text;
5329
- input2 = input2.toLowerCase();
5330
- const profaneWords2 = [];
5331
- const severityMap2 = {};
5332
- for (const dictWord of this.words.keys()) {
5333
- if (this.ignoreWords.has(dictWord.toLowerCase())) continue;
5334
- const severity = this.evaluateSeverity(dictWord, input2);
5335
- if (severity !== void 0) {
5336
- const regex = this.getRegex(dictWord);
5337
- let match;
5338
- while ((match = regex.exec(input2)) !== null) {
5339
- profaneWords2.push(match[0]);
5340
- if (severityMap2[match[0]] === void 0) {
5341
- severityMap2[match[0]] = severity;
5342
- }
5343
- }
5344
- }
5345
- }
5346
- let processedText2 = text;
5347
- if (this.replaceWith && profaneWords2.length > 0) {
5348
- const uniqueWords = Array.from(new Set(profaneWords2));
5349
- for (const word of uniqueWords) {
5350
- const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5351
- const replacementRegex = this.wordBoundaries ? new RegExp(`\\b${escaped}\\b`, "gi") : new RegExp(escaped, "gi");
5352
- processedText2 = processedText2.replace(
5353
- replacementRegex,
5354
- this.replaceWith
5355
- );
5356
- }
5357
- }
5358
- return {
5359
- containsProfanity: profaneWords2.length > 0,
5360
- profaneWords: Array.from(new Set(profaneWords2)),
5361
- processedText: this.replaceWith ? processedText2 : void 0,
5362
- severityMap: this.severityLevels && Object.keys(severityMap2).length > 0 ? severityMap2 : void 0
5363
- };
5364
- }
5365
- let input = this.allowObfuscatedMatch ? this.normalizeObfuscated(text) : text;
5366
- input = input.toLowerCase();
5367
- const originalText = text;
5368
- const profaneWords = [];
5369
- const severityMap = {};
5370
- const matches = [];
5371
- for (const dictWord of this.words.keys()) {
5372
- if (this.ignoreWords.has(dictWord.toLowerCase())) continue;
5373
- const severity = this.evaluateSeverity(dictWord, input);
5374
- if (severity !== void 0) {
5375
- const regex = this.getRegex(dictWord);
5376
- let match;
5377
- while ((match = regex.exec(input)) !== null) {
5378
- const matchedWord = match[0];
5379
- const matchIndex = match.index;
5380
- const matchObj = {
5381
- word: matchedWord,
5382
- index: matchIndex,
5383
- severity
5384
- };
5385
- if (this.enableContextAware && this.contextAnalyzer) {
5386
- const contextResult = this.contextAnalyzer.analyzeContext(
5387
- originalText,
5388
- matchedWord,
5389
- matchIndex
5390
- );
5391
- matchObj.contextScore = contextResult.contextScore;
5392
- matchObj.reason = contextResult.reason;
5393
- matchObj.isWhitelisted = contextResult.isWhitelisted;
5394
- if (contextResult.isWhitelisted || contextResult.contextScore > this.confidenceThreshold) {
5395
- continue;
5396
- }
5397
- }
5398
- profaneWords.push(matchedWord);
5399
- if (severityMap[matchedWord] === void 0) {
5400
- severityMap[matchedWord] = severity;
5401
- }
5402
- matches.push(matchObj);
5403
- }
5404
- }
5405
- }
5406
- if (profaneWords.length > 0) {
5407
- this.debugLog("Detected:", profaneWords);
5408
- }
5409
- let processedText = text;
5410
- if (this.replaceWith && profaneWords.length > 0) {
5411
- const uniqueWords = Array.from(new Set(profaneWords));
5412
- for (const word of uniqueWords) {
5413
- const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5414
- const replacementRegex = this.wordBoundaries ? new RegExp(`\\b${escaped}\\b`, "gi") : new RegExp(escaped, "gi");
5415
- processedText = processedText.replace(
5416
- replacementRegex,
5417
- this.replaceWith
5418
- );
5419
- }
5420
- }
5421
- let contextScore;
5422
- if (this.enableContextAware && matches.length > 0) {
5423
- const totalScore = matches.reduce((sum, match) => sum + (match.contextScore || 0.5), 0);
5424
- contextScore = totalScore / matches.length;
5425
- }
5426
- return {
5427
- containsProfanity: profaneWords.length > 0,
5428
- profaneWords: Array.from(new Set(profaneWords)),
5429
- processedText: this.replaceWith ? processedText : void 0,
5430
- severityMap: this.severityLevels && Object.keys(severityMap).length > 0 ? severityMap : void 0,
5431
- matches: matches.length > 0 ? matches : void 0,
5432
- contextScore,
5433
- reason: matches.length > 0 ? `Found ${matches.length} potential profanity matches` : "No profanity detected"
5434
- };
5435
- }
5436
- checkProfanityWithMinSeverity(text, minSeverity = 1 /* EXACT */) {
5437
- const result = this.checkProfanity(text);
5438
- const filteredWords = result.severityMap && result.profaneWords.length > 0 ? result.profaneWords.filter((word) => {
5439
- var _a;
5440
- const severity = (_a = result.severityMap) == null ? void 0 : _a[word];
5441
- return typeof severity === "number" && severity >= minSeverity;
5442
- }) : [];
5443
- return { filteredWords, result };
5444
- }
5445
- };
5446
-
5447
2179
  // ../../shared/dictionaries/globalWhitelist.json
5448
2180
  var globalWhitelist_default = {
5449
2181
  whitelist: [
@@ -5479,11 +2211,14 @@ var globalWhitelist_default = {
5479
2211
 
5480
2212
  // src/core/index.ts
5481
2213
  function createFilterConfig(config) {
5482
- var _a;
5483
- const effective = __spreadProps(__spreadValues({}, config != null ? config : {}), {
5484
- ignoreWords: globalWhitelist_default.whitelist,
5485
- fuzzyToleranceLevel: (_a = config == null ? void 0 : config.fuzzyToleranceLevel) != null ? _a : 0.8
5486
- });
2214
+ const effective = {
2215
+ ...config ?? {},
2216
+ ignoreWords: [
2217
+ ...globalWhitelist_default.whitelist,
2218
+ ...config?.ignoreWords ?? []
2219
+ ],
2220
+ fuzzyToleranceLevel: config?.fuzzyToleranceLevel ?? 0.8
2221
+ };
5487
2222
  if (effective.allowObfuscatedMatch && effective.wordBoundaries) {
5488
2223
  console.warn(
5489
2224
  "[Glin-Profanity] Obfuscated match enabled \u2192 wordBoundaries will be ignored internally."
@@ -5492,24 +2227,22 @@ function createFilterConfig(config) {
5492
2227
  return effective;
5493
2228
  }
5494
2229
  function checkProfanity(text, config) {
5495
- var _a;
5496
2230
  const filterConfig = createFilterConfig(config);
5497
2231
  const filter = new Filter(filterConfig);
5498
2232
  const checkResult = filter.checkProfanity(text);
5499
- const filteredWords = (config == null ? void 0 : config.minSeverity) && checkResult.severityMap ? checkResult.profaneWords.filter(
2233
+ const filteredWords = config?.minSeverity && checkResult.severityMap ? checkResult.profaneWords.filter(
5500
2234
  (word) => checkResult.severityMap && checkResult.severityMap[word] >= config.minSeverity
5501
2235
  ) : checkResult.profaneWords;
5502
- const autoReplaced = (config == null ? void 0 : config.autoReplace) && checkResult.processedText ? checkResult.processedText : text;
5503
- (_a = config == null ? void 0 : config.customActions) == null ? void 0 : _a.call(config, checkResult);
5504
- return __spreadProps(__spreadValues({}, checkResult), {
2236
+ const autoReplaced = config?.autoReplace && checkResult.processedText ? checkResult.processedText : text;
2237
+ config?.customActions?.(checkResult);
2238
+ return {
2239
+ ...checkResult,
5505
2240
  filteredWords,
5506
2241
  autoReplaced
5507
- });
2242
+ };
5508
2243
  }
5509
- function checkProfanityAsync(text, config) {
5510
- return __async(this, null, function* () {
5511
- return Promise.resolve(checkProfanity(text, config));
5512
- });
2244
+ async function checkProfanityAsync(text, config) {
2245
+ return Promise.resolve(checkProfanity(text, config));
5513
2246
  }
5514
2247
  function isWordProfane(word, config) {
5515
2248
  return checkProfanity(word, config).containsProfanity;
@@ -5518,18 +2251,17 @@ function isWordProfane(word, config) {
5518
2251
  // src/hooks/useProfanityChecker.ts
5519
2252
  var import_react = __toESM(require_react(), 1);
5520
2253
  var useProfanityChecker = (config) => {
5521
- var _a;
5522
2254
  const [result, setResult] = (0, import_react.useState)(null);
5523
2255
  const checkText = (0, import_react.useCallback)((text) => {
5524
2256
  const checkResult = checkProfanity(text, config);
5525
2257
  setResult(checkResult);
5526
2258
  return checkResult;
5527
2259
  }, [config]);
5528
- const checkTextAsync = (0, import_react.useCallback)((text) => __async(null, null, function* () {
5529
- const checkResult = yield checkProfanityAsync(text, config);
2260
+ const checkTextAsync = (0, import_react.useCallback)(async (text) => {
2261
+ const checkResult = await checkProfanityAsync(text, config);
5530
2262
  setResult(checkResult);
5531
2263
  return checkResult;
5532
- }), [config]);
2264
+ }, [config]);
5533
2265
  const isWordProfaneCallback = (0, import_react.useCallback)((word) => {
5534
2266
  return isWordProfane(word, config);
5535
2267
  }, [config]);
@@ -5539,7 +2271,7 @@ var useProfanityChecker = (config) => {
5539
2271
  checkText,
5540
2272
  checkTextAsync,
5541
2273
  reset,
5542
- isDirty: (_a = result == null ? void 0 : result.containsProfanity) != null ? _a : false,
2274
+ isDirty: result?.containsProfanity ?? false,
5543
2275
  isWordProfane: isWordProfaneCallback
5544
2276
  };
5545
2277
  };
@@ -5549,7 +2281,19 @@ export {
5549
2281
  SeverityLevel,
5550
2282
  checkProfanity,
5551
2283
  checkProfanityAsync,
2284
+ collapseRepeatedCharacters,
2285
+ collapseSpacedCharacters,
2286
+ containsLeetspeak,
2287
+ containsUnicodeObfuscation,
2288
+ convertFullWidth,
2289
+ convertHomoglyphs,
2290
+ detectCharacterSets,
2291
+ generateLeetspeakVariants,
5552
2292
  isWordProfane,
2293
+ normalizeLeetspeak,
2294
+ normalizeNFKD,
2295
+ normalizeUnicode,
2296
+ removeZeroWidthCharacters,
5553
2297
  useProfanityChecker
5554
2298
  };
5555
2299
  /*! Bundled license information: