jsdecryptor 4.0.3 → 4.0.4
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/Database/database.js +1 -446
- package/Database/migration.js +1 -327
- package/Database/pgSync.js +1 -229
- package/Database/settingsStore.js +1 -305
- package/config.js +1 -32
- package/dave.js +1 -3063
- package/davelib/botConfig.js +1 -71
- package/davelib/greetings.js +1 -47
- package/davelib/id.js +1 -11
- package/davelib/index.js +1 -577
- package/davelib/isAdmin.js +1 -32
- package/davelib/isBanned.js +1 -12
- package/davelib/isOwner.js +1 -15
- package/davelib/messageConfig.js +1 -15
- package/davelib/messageHandler.js +1 -87
- package/davelib/reactions.js +1 -180
- package/davelib/welcome.js +1 -100
- package/daveset.js +1 -16
- package/davexcore/anti/antiaudio.js +1 -106
- package/davexcore/anti/antibadword.js +1 -313
- package/davexcore/anti/antibug.js +1 -156
- package/davexcore/anti/anticall.js +1 -219
- package/davexcore/anti/antichart.js +1 -280
- package/davexcore/anti/antidelete.js +1 -673
- package/davexcore/anti/antideletestatus.js +1 -535
- package/davexcore/anti/antidemote.js +1 -352
- package/davexcore/anti/antidocument.js +1 -105
- package/davexcore/anti/antiedit.js +1 -410
- package/davexcore/anti/antifiles.js +1 -109
- package/davexcore/anti/antigroupmention.js +1 -206
- package/davexcore/anti/antiimage.js +1 -105
- package/davexcore/anti/antikick.js +1 -125
- package/davexcore/anti/antilink.js +1 -237
- package/davexcore/anti/antimention.js +1 -143
- package/davexcore/anti/antipromote.js +1 -320
- package/davexcore/anti/antisticker.js +1 -105
- package/davexcore/anti/antitag.js +1 -191
- package/davexcore/anti/antivideo.js +1 -105
- package/davexcore/anti/antiviewonce.js +1 -396
- package/davexcore/anti/groupanticall.js +1 -262
- package/davexcore/anti/mention.js +1 -242
- package/davexcore/automation/alwaysonline.js +1 -226
- package/davexcore/automation/autoReadReciepts.js +1 -96
- package/davexcore/automation/autoread.js +1 -104
- package/davexcore/automation/autorecording.js +1 -197
- package/davexcore/automation/autostatus.js +1 -317
- package/davexcore/automation/autotyping.js +1 -197
- package/davexcore/automation/chatbot.js +1 -444
- package/davexcore/automation/chatmanage.js +1 -199
- package/davexcore/automation/devReact.js +1 -43
- package/davexcore/automation/goodbye.js +1 -181
- package/davexcore/automation/greetings.js +1 -154
- package/davexcore/automation/welcome.js +1 -187
- package/davexcore/group/addmember.js +1 -101
- package/davexcore/group/ban.js +1 -63
- package/davexcore/group/blockUnblock.js +1 -177
- package/davexcore/group/clear.js +1 -196
- package/davexcore/group/creategroup.js +1 -43
- package/davexcore/group/demote.js +1 -115
- package/davexcore/group/disappear.js +1 -67
- package/davexcore/group/groupinfo.js +1 -167
- package/davexcore/group/groupmanage.js +1 -133
- package/davexcore/group/hidetag.js +1 -108
- package/davexcore/group/joinrequests.js +1 -145
- package/davexcore/group/kick.js +1 -92
- package/davexcore/group/kickall.js +1 -63
- package/davexcore/group/leave.js +1 -38
- package/davexcore/group/linkgroup.js +1 -63
- package/davexcore/group/mute.js +1 -57
- package/davexcore/group/online.js +1 -117
- package/davexcore/group/pmblocker.js +1 -65
- package/davexcore/group/promote.js +1 -93
- package/davexcore/group/resetlink.js +1 -57
- package/davexcore/group/staff.js +1 -99
- package/davexcore/group/tag.js +1 -111
- package/davexcore/group/tagadmins.js +1 -88
- package/davexcore/group/tagall.js +1 -99
- package/davexcore/group/tagnotadmin.js +1 -92
- package/davexcore/group/topmembers.js +1 -202
- package/davexcore/group/unban.js +1 -64
- package/davexcore/group/unmute.js +1 -45
- package/davexcore/group/warn.js +1 -83
- package/davexcore/group/warnings.js +1 -26
- package/davexcore/owner/alive.js +1 -67
- package/davexcore/owner/bio.js +1 -49
- package/davexcore/owner/broadcast.js +1 -74
- package/davexcore/owner/chanel.js +1 -79
- package/davexcore/owner/channelid.js +1 -50
- package/davexcore/owner/clearsession.js +1 -86
- package/davexcore/owner/help.js +1 -649
- package/davexcore/owner/hijack.js +1 -69
- package/davexcore/owner/menuManage.js +1 -173
- package/davexcore/owner/menuSettings.js +1 -1
- package/davexcore/owner/owner.js +1 -17
- package/davexcore/owner/pair.js +1 -160
- package/davexcore/owner/pinchat.js +1 -44
- package/davexcore/owner/ping.js +1 -65
- package/davexcore/owner/profilepic.js +1 -61
- package/davexcore/owner/resetmenuimage.js +1 -16
- package/davexcore/owner/setGroupStatus.js +1 -315
- package/davexcore/owner/setbotconfig.js +1 -306
- package/davexcore/owner/setfont.js +1 -79
- package/davexcore/owner/setowner.js +1 -144
- package/davexcore/owner/setprefix.js +1 -131
- package/davexcore/owner/settings.js +1 -98
- package/davexcore/owner/startupwelcome.js +1 -94
- package/davexcore/owner/sudo.js +1 -138
- package/davexcore/owner/update.js +1 -282
- package/davexcore/utility/bible.js +1 -239
- package/davexcore/utility/encrypt.js +1 -99
- package/davexcore/utility/sports.js +1 -403
- package/index.js +1 -994
- package/package.json +1 -1
package/Database/database.js
CHANGED
|
@@ -1,446 +1 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const pg = require('./pgSync');
|
|
4
|
-
|
|
5
|
-
const DB_DIR = path.join(__dirname, '..', 'persistent_data');
|
|
6
|
-
if (!fs.existsSync(DB_DIR)) {
|
|
7
|
-
fs.mkdirSync(DB_DIR, { recursive: true });
|
|
8
|
-
}
|
|
9
|
-
const DB_PATH = path.join(DB_DIR, 'davex.db');
|
|
10
|
-
|
|
11
|
-
let db = null;
|
|
12
|
-
|
|
13
|
-
const SQLITE_TABLE_SQL = `
|
|
14
|
-
CREATE TABLE IF NOT EXISTS owner_settings (
|
|
15
|
-
setting_key TEXT PRIMARY KEY,
|
|
16
|
-
setting_value TEXT NOT NULL,
|
|
17
|
-
updated_at INTEGER DEFAULT (strftime('%s', 'now'))
|
|
18
|
-
);
|
|
19
|
-
CREATE TABLE IF NOT EXISTS group_settings (
|
|
20
|
-
group_jid TEXT NOT NULL,
|
|
21
|
-
setting_key TEXT NOT NULL,
|
|
22
|
-
setting_value TEXT NOT NULL,
|
|
23
|
-
updated_at INTEGER DEFAULT (strftime('%s', 'now')),
|
|
24
|
-
PRIMARY KEY (group_jid, setting_key)
|
|
25
|
-
);
|
|
26
|
-
CREATE TABLE IF NOT EXISTS warnings (
|
|
27
|
-
group_jid TEXT NOT NULL,
|
|
28
|
-
user_jid TEXT NOT NULL,
|
|
29
|
-
count INTEGER DEFAULT 0,
|
|
30
|
-
updated_at INTEGER DEFAULT (strftime('%s', 'now')),
|
|
31
|
-
PRIMARY KEY (group_jid, user_jid)
|
|
32
|
-
);
|
|
33
|
-
CREATE TABLE IF NOT EXISTS banned_users (
|
|
34
|
-
user_jid TEXT PRIMARY KEY,
|
|
35
|
-
reason TEXT,
|
|
36
|
-
banned_at INTEGER DEFAULT (strftime('%s', 'now'))
|
|
37
|
-
);
|
|
38
|
-
CREATE TABLE IF NOT EXISTS sudo_users (
|
|
39
|
-
user_jid TEXT PRIMARY KEY,
|
|
40
|
-
added_at INTEGER DEFAULT (strftime('%s', 'now'))
|
|
41
|
-
);
|
|
42
|
-
CREATE TABLE IF NOT EXISTS premium_users (
|
|
43
|
-
user_jid TEXT PRIMARY KEY,
|
|
44
|
-
expires_at INTEGER,
|
|
45
|
-
added_at INTEGER DEFAULT (strftime('%s', 'now'))
|
|
46
|
-
);
|
|
47
|
-
CREATE TABLE IF NOT EXISTS message_store (
|
|
48
|
-
message_id TEXT PRIMARY KEY,
|
|
49
|
-
chat_jid TEXT NOT NULL,
|
|
50
|
-
sender_jid TEXT NOT NULL,
|
|
51
|
-
content TEXT,
|
|
52
|
-
media_type TEXT,
|
|
53
|
-
media_path TEXT,
|
|
54
|
-
is_view_once INTEGER DEFAULT 0,
|
|
55
|
-
push_name TEXT,
|
|
56
|
-
timestamp INTEGER DEFAULT (strftime('%s', 'now'))
|
|
57
|
-
);
|
|
58
|
-
CREATE TABLE IF NOT EXISTS message_counts (
|
|
59
|
-
group_jid TEXT NOT NULL,
|
|
60
|
-
user_jid TEXT NOT NULL,
|
|
61
|
-
count INTEGER DEFAULT 0,
|
|
62
|
-
PRIMARY KEY (group_jid, user_jid)
|
|
63
|
-
);
|
|
64
|
-
CREATE INDEX IF NOT EXISTS idx_group_settings_jid ON group_settings(group_jid);
|
|
65
|
-
CREATE INDEX IF NOT EXISTS idx_message_store_chat ON message_store(chat_jid);
|
|
66
|
-
CREATE INDEX IF NOT EXISTS idx_message_store_timestamp ON message_store(timestamp);
|
|
67
|
-
CREATE INDEX IF NOT EXISTS idx_msg_counts_group ON message_counts(group_jid);
|
|
68
|
-
`;
|
|
69
|
-
|
|
70
|
-
let checkpointInterval = null;
|
|
71
|
-
|
|
72
|
-
function initSQLite() {
|
|
73
|
-
const Database = require('better-sqlite3');
|
|
74
|
-
db = new Database(DB_PATH);
|
|
75
|
-
db.pragma('journal_mode = WAL');
|
|
76
|
-
db.pragma('synchronous = FULL');
|
|
77
|
-
db.pragma('cache_size = -2000');
|
|
78
|
-
db.exec(SQLITE_TABLE_SQL);
|
|
79
|
-
try {
|
|
80
|
-
db.exec(`ALTER TABLE message_store ADD COLUMN push_name TEXT`);
|
|
81
|
-
} catch {}
|
|
82
|
-
|
|
83
|
-
checkpointInterval = setInterval(() => {
|
|
84
|
-
try {
|
|
85
|
-
if (db) db.pragma('wal_checkpoint(TRUNCATE)');
|
|
86
|
-
} catch {}
|
|
87
|
-
}, 30000);
|
|
88
|
-
|
|
89
|
-
const settingsCount = db.prepare('SELECT COUNT(*) as c FROM owner_settings').get().c;
|
|
90
|
-
const groupCount = db.prepare('SELECT COUNT(DISTINCT group_jid) as c FROM group_settings').get().c;
|
|
91
|
-
console.log(`[ DAVE-X ] SQLite database initialized (WAL + FULL sync) | ${settingsCount} owner settings, ${groupCount} groups`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function getDb() {
|
|
95
|
-
if (!db) {
|
|
96
|
-
initSQLite();
|
|
97
|
-
}
|
|
98
|
-
return db;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async function initDatabase() {
|
|
102
|
-
initSQLite();
|
|
103
|
-
const pgReady = await pg.initPg();
|
|
104
|
-
if (pgReady) {
|
|
105
|
-
await pg.loadFromPg(db);
|
|
106
|
-
console.log('[ DAVE-X ] Database ready (SQLite + PostgreSQL)');
|
|
107
|
-
} else {
|
|
108
|
-
console.log('[ DAVE-X ] Database ready (SQLite only)');
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
initDatabase().catch(e => {
|
|
113
|
-
console.error('[ DAVE-X ] Database init error:', e.message);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
function setOwnerSetting(key, value) {
|
|
117
|
-
const val = JSON.stringify(value);
|
|
118
|
-
const database = getDb();
|
|
119
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO owner_settings (setting_key, setting_value, updated_at) VALUES (?, ?, strftime('%s', 'now'))`);
|
|
120
|
-
stmt.run(key, val);
|
|
121
|
-
pg.pgSetOwnerSetting(key, value);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function getOwnerSetting(key, defaultValue = null) {
|
|
125
|
-
const database = getDb();
|
|
126
|
-
const stmt = database.prepare('SELECT setting_value FROM owner_settings WHERE setting_key = ?');
|
|
127
|
-
const row = stmt.get(key);
|
|
128
|
-
if (row) {
|
|
129
|
-
try { return JSON.parse(row.setting_value); } catch { return row.setting_value; }
|
|
130
|
-
}
|
|
131
|
-
return defaultValue;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function getAllOwnerSettings() {
|
|
135
|
-
const database = getDb();
|
|
136
|
-
const stmt = database.prepare('SELECT setting_key, setting_value FROM owner_settings');
|
|
137
|
-
const rows = stmt.all();
|
|
138
|
-
const settings = {};
|
|
139
|
-
for (const row of rows) {
|
|
140
|
-
try { settings[row.setting_key] = JSON.parse(row.setting_value); } catch { settings[row.setting_key] = row.setting_value; }
|
|
141
|
-
}
|
|
142
|
-
return settings;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function setGroupSetting(groupJid, key, value) {
|
|
146
|
-
const val = JSON.stringify(value);
|
|
147
|
-
const database = getDb();
|
|
148
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO group_settings (group_jid, setting_key, setting_value, updated_at) VALUES (?, ?, ?, strftime('%s', 'now'))`);
|
|
149
|
-
stmt.run(groupJid, key, val);
|
|
150
|
-
pg.pgSetGroupSetting(groupJid, key, value);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function getGroupSetting(groupJid, key, defaultValue = null) {
|
|
154
|
-
const database = getDb();
|
|
155
|
-
const stmt = database.prepare('SELECT setting_value FROM group_settings WHERE group_jid = ? AND setting_key = ?');
|
|
156
|
-
const row = stmt.get(groupJid, key);
|
|
157
|
-
if (row) {
|
|
158
|
-
try { return JSON.parse(row.setting_value); } catch { return row.setting_value; }
|
|
159
|
-
}
|
|
160
|
-
return defaultValue;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function getAllGroupSettings(groupJid) {
|
|
164
|
-
const database = getDb();
|
|
165
|
-
const stmt = database.prepare('SELECT setting_key, setting_value FROM group_settings WHERE group_jid = ?');
|
|
166
|
-
const rows = stmt.all(groupJid);
|
|
167
|
-
const settings = {};
|
|
168
|
-
for (const row of rows) {
|
|
169
|
-
try { settings[row.setting_key] = JSON.parse(row.setting_value); } catch { settings[row.setting_key] = row.setting_value; }
|
|
170
|
-
}
|
|
171
|
-
return settings;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
function getAllGroupJids() {
|
|
175
|
-
const database = getDb();
|
|
176
|
-
try {
|
|
177
|
-
const rows = database.prepare('SELECT DISTINCT group_jid FROM group_settings').all();
|
|
178
|
-
return rows.map(r => r.group_jid);
|
|
179
|
-
} catch { return []; }
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
function deleteGroupSetting(groupJid, key) {
|
|
183
|
-
const database = getDb();
|
|
184
|
-
const stmt = database.prepare('DELETE FROM group_settings WHERE group_jid = ? AND setting_key = ?');
|
|
185
|
-
stmt.run(groupJid, key);
|
|
186
|
-
pg.pgDeleteGroupSetting(groupJid, key);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function getWarningCount(groupJid, userJid) {
|
|
190
|
-
const database = getDb();
|
|
191
|
-
const stmt = database.prepare('SELECT count FROM warnings WHERE group_jid = ? AND user_jid = ?');
|
|
192
|
-
const row = stmt.get(groupJid, userJid);
|
|
193
|
-
return row ? row.count : 0;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
function incrementWarning(groupJid, userJid) {
|
|
197
|
-
const database = getDb();
|
|
198
|
-
const current = getWarningCount(groupJid, userJid);
|
|
199
|
-
const newCount = current + 1;
|
|
200
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO warnings (group_jid, user_jid, count, updated_at) VALUES (?, ?, ?, strftime('%s', 'now'))`);
|
|
201
|
-
stmt.run(groupJid, userJid, newCount);
|
|
202
|
-
pg.pgSetWarning(groupJid, userJid, newCount);
|
|
203
|
-
return newCount;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
function resetWarning(groupJid, userJid) {
|
|
207
|
-
const database = getDb();
|
|
208
|
-
const stmt = database.prepare('DELETE FROM warnings WHERE group_jid = ? AND user_jid = ?');
|
|
209
|
-
stmt.run(groupJid, userJid);
|
|
210
|
-
pg.pgResetWarning(groupJid, userJid);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
function setWarningCount(groupJid, userJid, count) {
|
|
214
|
-
if (count <= 0) {
|
|
215
|
-
resetWarning(groupJid, userJid);
|
|
216
|
-
return 0;
|
|
217
|
-
}
|
|
218
|
-
const database = getDb();
|
|
219
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO warnings (group_jid, user_jid, count, updated_at) VALUES (?, ?, ?, strftime('%s', 'now'))`);
|
|
220
|
-
stmt.run(groupJid, userJid, count);
|
|
221
|
-
pg.pgSetWarning(groupJid, userJid, count);
|
|
222
|
-
return count;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
function getAllWarnings() {
|
|
226
|
-
const warnings = {};
|
|
227
|
-
const database = getDb();
|
|
228
|
-
const stmt = database.prepare('SELECT group_jid, user_jid, count FROM warnings');
|
|
229
|
-
const rows = stmt.all();
|
|
230
|
-
for (const row of rows) {
|
|
231
|
-
if (!warnings[row.group_jid]) warnings[row.group_jid] = {};
|
|
232
|
-
warnings[row.group_jid][row.user_jid] = row.count;
|
|
233
|
-
}
|
|
234
|
-
return warnings;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
function addBannedUser(userJid, reason = '') {
|
|
238
|
-
const database = getDb();
|
|
239
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO banned_users (user_jid, reason, banned_at) VALUES (?, ?, strftime('%s', 'now'))`);
|
|
240
|
-
stmt.run(userJid, reason);
|
|
241
|
-
pg.pgAddBannedUser(userJid, reason);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
function removeBannedUser(userJid) {
|
|
245
|
-
const database = getDb();
|
|
246
|
-
const stmt = database.prepare('DELETE FROM banned_users WHERE user_jid = ?');
|
|
247
|
-
stmt.run(userJid);
|
|
248
|
-
pg.pgRemoveBannedUser(userJid);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
function isBanned(userJid) {
|
|
252
|
-
const database = getDb();
|
|
253
|
-
const stmt = database.prepare('SELECT 1 FROM banned_users WHERE user_jid = ?');
|
|
254
|
-
return !!stmt.get(userJid);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function getAllBannedUsers() {
|
|
258
|
-
const database = getDb();
|
|
259
|
-
const stmt = database.prepare('SELECT user_jid, reason, banned_at FROM banned_users');
|
|
260
|
-
return stmt.all();
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function addSudoUser(userJid) {
|
|
264
|
-
const database = getDb();
|
|
265
|
-
const stmt = database.prepare(`INSERT OR IGNORE INTO sudo_users (user_jid, added_at) VALUES (?, strftime('%s', 'now'))`);
|
|
266
|
-
stmt.run(userJid);
|
|
267
|
-
pg.pgAddSudoUser(userJid);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function removeSudoUser(userJid) {
|
|
271
|
-
const database = getDb();
|
|
272
|
-
const stmt = database.prepare('DELETE FROM sudo_users WHERE user_jid = ?');
|
|
273
|
-
stmt.run(userJid);
|
|
274
|
-
pg.pgRemoveSudoUser(userJid);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
function isSudo(userJid) {
|
|
278
|
-
const database = getDb();
|
|
279
|
-
const stmt = database.prepare('SELECT 1 FROM sudo_users WHERE user_jid = ?');
|
|
280
|
-
return !!stmt.get(userJid);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
function getAllSudoUsers() {
|
|
284
|
-
const database = getDb();
|
|
285
|
-
const stmt = database.prepare('SELECT user_jid FROM sudo_users');
|
|
286
|
-
return stmt.all().map(row => row.user_jid);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
function storeMessage(messageId, chatJid, senderJid, content, mediaType = null, mediaPath = null, isViewOnce = false, pushName = null) {
|
|
290
|
-
const database = getDb();
|
|
291
|
-
const stmt = database.prepare(`INSERT OR REPLACE INTO message_store (message_id, chat_jid, sender_jid, content, media_type, media_path, is_view_once, push_name, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, strftime('%s', 'now'))`);
|
|
292
|
-
stmt.run(messageId, chatJid, senderJid, content, mediaType, mediaPath, isViewOnce ? 1 : 0, pushName);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
function getMessage(messageId) {
|
|
296
|
-
const database = getDb();
|
|
297
|
-
const stmt = database.prepare('SELECT * FROM message_store WHERE message_id = ?');
|
|
298
|
-
return stmt.get(messageId);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
function deleteMessage(messageId) {
|
|
302
|
-
const database = getDb();
|
|
303
|
-
const stmt = database.prepare('DELETE FROM message_store WHERE message_id = ?');
|
|
304
|
-
stmt.run(messageId);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
function cleanOldMessages(maxAgeSeconds = 86400) {
|
|
308
|
-
const cutoff = Math.floor(Date.now() / 1000) - maxAgeSeconds;
|
|
309
|
-
const database = getDb();
|
|
310
|
-
const stmt = database.prepare('DELETE FROM message_store WHERE timestamp < ?');
|
|
311
|
-
const result = stmt.run(cutoff);
|
|
312
|
-
return result.changes;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
function getMessageCount() {
|
|
316
|
-
const database = getDb();
|
|
317
|
-
const stmt = database.prepare('SELECT COUNT(*) as count FROM message_store');
|
|
318
|
-
return stmt.get().count;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
function hasGroupSetting(groupJid, key) {
|
|
322
|
-
const database = getDb();
|
|
323
|
-
const stmt = database.prepare('SELECT 1 FROM group_settings WHERE group_jid = ? AND setting_key = ?');
|
|
324
|
-
return !!stmt.get(groupJid, key);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
function getMessagesByChat(chatJid, limit = 100) {
|
|
328
|
-
const database = getDb();
|
|
329
|
-
const stmt = database.prepare('SELECT * FROM message_store WHERE chat_jid = ? ORDER BY timestamp DESC LIMIT ?');
|
|
330
|
-
return stmt.all(chatJid, limit);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
function incrementMsgCount(groupJid, userJid) {
|
|
334
|
-
const database = getDb();
|
|
335
|
-
database.prepare(`
|
|
336
|
-
INSERT INTO message_counts (group_jid, user_jid, count) VALUES (?, ?, 1)
|
|
337
|
-
ON CONFLICT(group_jid, user_jid) DO UPDATE SET count = count + 1
|
|
338
|
-
`).run(groupJid, userJid);
|
|
339
|
-
pg.pgIncrementMsgCount(groupJid, userJid);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
function getGroupMsgCounts(groupJid) {
|
|
343
|
-
const database = getDb();
|
|
344
|
-
const rows = database.prepare('SELECT user_jid, count FROM message_counts WHERE group_jid = ? ORDER BY count DESC').all(groupJid);
|
|
345
|
-
const result = {};
|
|
346
|
-
for (const row of rows) result[row.user_jid] = row.count;
|
|
347
|
-
return result;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
function getAllGroupMsgCountJids() {
|
|
351
|
-
const database = getDb();
|
|
352
|
-
const rows = database.prepare('SELECT DISTINCT group_jid FROM message_counts').all();
|
|
353
|
-
return rows.map(r => r.group_jid);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
function resetGroupMsgCounts(groupJid) {
|
|
357
|
-
const database = getDb();
|
|
358
|
-
database.prepare('DELETE FROM message_counts WHERE group_jid = ?').run(groupJid);
|
|
359
|
-
pg.pgResetGroupMsgCounts(groupJid);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
function getGroupTotalMsgCount(groupJid) {
|
|
363
|
-
const database = getDb();
|
|
364
|
-
const row = database.prepare('SELECT SUM(count) as total FROM message_counts WHERE group_jid = ?').get(groupJid);
|
|
365
|
-
return row?.total || 0;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
function getUserMsgCount(groupJid, userJid) {
|
|
369
|
-
const database = getDb();
|
|
370
|
-
const row = database.prepare('SELECT count FROM message_counts WHERE group_jid = ? AND user_jid = ?').get(groupJid, userJid);
|
|
371
|
-
return row?.count || 0;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
function getBotMode() {
|
|
375
|
-
return getOwnerSetting('bot_mode', 'public');
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
function setBotMode(mode) {
|
|
379
|
-
setOwnerSetting('bot_mode', mode);
|
|
380
|
-
setOwnerSetting('bot_mode_is_public', mode === 'public');
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
function closeDb() {
|
|
384
|
-
if (checkpointInterval) {
|
|
385
|
-
clearInterval(checkpointInterval);
|
|
386
|
-
checkpointInterval = null;
|
|
387
|
-
}
|
|
388
|
-
if (db) {
|
|
389
|
-
try {
|
|
390
|
-
db.pragma('wal_checkpoint(TRUNCATE)');
|
|
391
|
-
} catch {}
|
|
392
|
-
try {
|
|
393
|
-
db.close();
|
|
394
|
-
} catch {}
|
|
395
|
-
db = null;
|
|
396
|
-
console.log('[ DAVE-X ] Database closed safely');
|
|
397
|
-
}
|
|
398
|
-
pg.closePg().catch(() => {});
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
process.on('exit', closeDb);
|
|
402
|
-
process.on('SIGINT', () => { closeDb(); process.exit(); });
|
|
403
|
-
process.on('SIGTERM', () => { closeDb(); process.exit(); });
|
|
404
|
-
process.on('SIGHUP', () => { closeDb(); process.exit(); });
|
|
405
|
-
|
|
406
|
-
module.exports = {
|
|
407
|
-
getDb,
|
|
408
|
-
initDatabase,
|
|
409
|
-
setOwnerSetting,
|
|
410
|
-
getOwnerSetting,
|
|
411
|
-
getAllOwnerSettings,
|
|
412
|
-
setGroupSetting,
|
|
413
|
-
getGroupSetting,
|
|
414
|
-
getAllGroupSettings,
|
|
415
|
-
getAllGroupJids,
|
|
416
|
-
deleteGroupSetting,
|
|
417
|
-
hasGroupSetting,
|
|
418
|
-
getWarningCount,
|
|
419
|
-
incrementWarning,
|
|
420
|
-
resetWarning,
|
|
421
|
-
setWarningCount,
|
|
422
|
-
getAllWarnings,
|
|
423
|
-
addBannedUser,
|
|
424
|
-
removeBannedUser,
|
|
425
|
-
isBanned,
|
|
426
|
-
getAllBannedUsers,
|
|
427
|
-
addSudoUser,
|
|
428
|
-
removeSudoUser,
|
|
429
|
-
isSudo,
|
|
430
|
-
getAllSudoUsers,
|
|
431
|
-
storeMessage,
|
|
432
|
-
getMessage,
|
|
433
|
-
getMessagesByChat,
|
|
434
|
-
deleteMessage,
|
|
435
|
-
cleanOldMessages,
|
|
436
|
-
getMessageCount,
|
|
437
|
-
incrementMsgCount,
|
|
438
|
-
getGroupMsgCounts,
|
|
439
|
-
getAllGroupMsgCountJids,
|
|
440
|
-
resetGroupMsgCounts,
|
|
441
|
-
getGroupTotalMsgCount,
|
|
442
|
-
getUserMsgCount,
|
|
443
|
-
getBotMode,
|
|
444
|
-
setBotMode,
|
|
445
|
-
closeDb
|
|
446
|
-
};
|
|
1
|
+
function _0x1274(_0x25d514,_0x442d80){_0x25d514=_0x25d514-(-0x97*-0x19+0x1211+-0x86*0x3d);const _0x20cdee=_0x4eaf();let _0x15cf8c=_0x20cdee[_0x25d514];if(_0x1274['hRQMSb']===undefined){var _0x4e6ba6=function(_0x12a2c5){const _0x20de4a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b6328='',_0x5b0ce2='';for(let _0x22a74d=0x35*-0x1+0x39*-0x4b+0x10e8,_0x2c536e,_0x16a73c,_0x33a0ba=-0x2*0xb9f+0x10fd*0x2+0x2*-0x55e;_0x16a73c=_0x12a2c5['charAt'](_0x33a0ba++);~_0x16a73c&&(_0x2c536e=_0x22a74d%(0x1dd+-0x1a*0xa1+-0x1*-0xe81)?_0x2c536e*(0x1eb6*0x1+0x1a+-0x1e90)+_0x16a73c:_0x16a73c,_0x22a74d++%(0xc2f+0x626+-0x1251))?_0x3b6328+=String['fromCharCode'](-0x59*-0x59+0x1*0x3f5+-0x21e7&_0x2c536e>>(-(-0x2*0x7ca+0x1186+-0x1f0)*_0x22a74d&-0x1*-0x75f+0x1*-0x569+-0x1f0)):0x185d+-0x1*0x6e2+-0x117b*0x1){_0x16a73c=_0x20de4a['indexOf'](_0x16a73c);}for(let _0xa067b=0x2134+0x19d*-0x15+0xad*0x1,_0x29d9ec=_0x3b6328['length'];_0xa067b<_0x29d9ec;_0xa067b++){_0x5b0ce2+='%'+('00'+_0x3b6328['charCodeAt'](_0xa067b)['toString'](-0x592+-0xbc2+0x1164))['slice'](-(-0x176f+0x1398+0x3d9));}return decodeURIComponent(_0x5b0ce2);};_0x1274['YGSSLQ']=_0x4e6ba6,_0x1274['aCufBe']={},_0x1274['hRQMSb']=!![];}const _0x23a362=_0x20cdee[0x5a0+-0x1c7e+0x16de],_0x1ae0ea=_0x25d514+_0x23a362,_0x158393=_0x1274['aCufBe'][_0x1ae0ea];return!_0x158393?(_0x15cf8c=_0x1274['YGSSLQ'](_0x15cf8c),_0x1274['aCufBe'][_0x1ae0ea]=_0x15cf8c):_0x15cf8c=_0x158393,_0x15cf8c;}const _0x34ff10=_0x1274;(function(_0xc09680,_0x5d0dcd){const _0x1fb27c=_0x1274,_0x4dcef7=_0xc09680();while(!![]){try{const _0x375095=parseInt(_0x1fb27c(0x174))/(0x1628+0x828+0x1e4f*-0x1)*(-parseInt(_0x1fb27c(0x256))/(-0x67*-0x17+0x10b*-0x17+0xebe))+parseInt(_0x1fb27c(0x121))/(0xdbd+-0x1a13+-0x6d*-0x1d)*(-parseInt(_0x1fb27c(0x23d))/(-0x2*0x225+-0x13d4+-0xc11*-0x2))+parseInt(_0x1fb27c(0x1e1))/(-0x4f+-0x5*0xbf+0x40f)*(-parseInt(_0x1fb27c(0x102))/(0x2d9+0x5cf*-0x5+0xd1c*0x2))+-parseInt(_0x1fb27c(0x1ca))/(0x1a00+0x45c+-0x1e55)*(parseInt(_0x1fb27c(0x1a0))/(0x23b*-0x8+-0x1*0x3a0+0x2*0xac0))+-parseInt(_0x1fb27c(0x12e))/(0xd85+0x2439+-0x31b5)*(-parseInt(_0x1fb27c(0x13b))/(-0xd3d+-0x250b+0x3252))+-parseInt(_0x1fb27c(0x239))/(0x5fb*-0x5+-0x8f1*0x2+-0x2fd4*-0x1)*(parseInt(_0x1fb27c(0x202))/(0xb34*-0x2+0x476*0x2+0x1*0xd88))+parseInt(_0x1fb27c(0x111))/(-0xf61*-0x1+0x75b+-0x16af);if(_0x375095===_0x5d0dcd)break;else _0x4dcef7['push'](_0x4dcef7['shift']());}catch(_0x3a14ba){_0x4dcef7['push'](_0x4dcef7['shift']());}}}(_0x4eaf,-0xdda1e+0x6d340+0xecdfa));const path=require(_0x34ff10(0x228)),fs=require('fs'),pg=require(_0x34ff10(0x21a)),DB_DIR=path[_0x34ff10(0x1ae)](__dirname,'..','persistent'+_0x34ff10(0x108));!fs[_0x34ff10(0x250)](DB_DIR)&&fs['mkdirSync'](DB_DIR,{'recursive':!![]});const DB_PATH=path['join'](DB_DIR,_0x34ff10(0x133));let db=null;const SQLITE_TABLE_SQL=_0x34ff10(0x221)+_0x34ff10(0x143)+_0x34ff10(0x128)+_0x34ff10(0x127)+_0x34ff10(0x1a8)+'\x20\x20\x20\x20\x20\x20\x20set'+_0x34ff10(0x165)+_0x34ff10(0x13d)+_0x34ff10(0x18c)+_0x34ff10(0x1dc)+_0x34ff10(0x172)+_0x34ff10(0x1ab)+'LL,\x0a\x20\x20\x20\x20\x20\x20'+_0x34ff10(0x23f)+_0x34ff10(0x20e)+'\x20DEFAULT\x20('+'strftime(\x27'+_0x34ff10(0x199)+_0x34ff10(0x1f8)+'\x20\x20\x20\x20CREATE'+_0x34ff10(0x1ec)+_0x34ff10(0x23b)+_0x34ff10(0x131)+_0x34ff10(0xf7)+_0x34ff10(0x150)+'p_jid\x20TEXT'+_0x34ff10(0x191)+_0x34ff10(0x1de)+_0x34ff10(0x204)+'\x20TEXT\x20NOT\x20'+_0x34ff10(0x105)+'\x20\x20\x20\x20settin'+_0x34ff10(0x1c4)+_0x34ff10(0x14e)+_0x34ff10(0x1fe)+_0x34ff10(0x1a2)+_0x34ff10(0x25d)+'DEFAULT\x20(s'+_0x34ff10(0x15f)+_0x34ff10(0xe3)+'),\x0a\x20\x20\x20\x20\x20\x20\x20'+_0x34ff10(0x224)+_0x34ff10(0x147)+_0x34ff10(0x25c)+_0x34ff10(0xe8)+_0x34ff10(0x255)+_0x34ff10(0x183)+_0x34ff10(0x22e)+_0x34ff10(0x1ad)+'ings\x20(\x0a\x20\x20\x20'+'\x20\x20\x20\x20\x20group'+_0x34ff10(0x235)+_0x34ff10(0x1be)+_0x34ff10(0x179)+_0x34ff10(0x12b)+'T\x20NOT\x20NULL'+_0x34ff10(0x1e2)+_0x34ff10(0x18f)+'GER\x20DEFAUL'+_0x34ff10(0x18b)+_0x34ff10(0x137)+'_at\x20INTEGE'+_0x34ff10(0x16f)+_0x34ff10(0x1c8)+_0x34ff10(0x1d3)+_0x34ff10(0x15b)+_0x34ff10(0x22c)+_0x34ff10(0xe7)+_0x34ff10(0x104)+_0x34ff10(0x1fa)+_0x34ff10(0x1dd)+_0x34ff10(0x1ba)+_0x34ff10(0x253)+_0x34ff10(0x126)+_0x34ff10(0x245)+_0x34ff10(0x179)+_0x34ff10(0x12b)+_0x34ff10(0x103)+_0x34ff10(0x156)+_0x34ff10(0x1c3)+'TEXT,\x0a\x20\x20\x20\x20'+_0x34ff10(0xf3)+'_at\x20INTEGE'+_0x34ff10(0x16f)+'(strftime('+_0x34ff10(0x1d3)+_0x34ff10(0x219)+_0x34ff10(0x221)+_0x34ff10(0x143)+_0x34ff10(0x128)+_0x34ff10(0xfc)+_0x34ff10(0x20d)+_0x34ff10(0x12a)+_0x34ff10(0x101)+_0x34ff10(0x185)+_0x34ff10(0x178)+_0x34ff10(0xfd)+'EGER\x20DEFAU'+_0x34ff10(0xff)+_0x34ff10(0x242)+(_0x34ff10(0x230)+'\x20);\x0a\x20\x20\x20\x20CR'+'EATE\x20TABLE'+_0x34ff10(0x253)+'ISTS\x20premi'+_0x34ff10(0x1e5)+_0x34ff10(0x1fc)+_0x34ff10(0x12c)+_0x34ff10(0x1cb)+_0x34ff10(0x148)+_0x34ff10(0x231)+_0x34ff10(0x1a5)+_0x34ff10(0x21f)+_0x34ff10(0x23a)+'\x20INTEGER\x20D'+'EFAULT\x20(st'+_0x34ff10(0x18e)+'\x27,\x20\x27now\x27))'+'\x0a\x20\x20\x20\x20);\x0a\x20\x20'+'\x20\x20CREATE\x20T'+_0x34ff10(0x181)+_0x34ff10(0x1df)+_0x34ff10(0x1ea)+_0x34ff10(0x1b0)+'\x20\x20\x20message'+_0x34ff10(0x19c)+_0x34ff10(0x23e)+_0x34ff10(0x1e2)+'chat_jid\x20T'+_0x34ff10(0x1ab)+_0x34ff10(0xe6)+_0x34ff10(0x1c2)+_0x34ff10(0xef)+_0x34ff10(0x23c)+_0x34ff10(0x188)+_0x34ff10(0x257)+_0x34ff10(0x1d9)+_0x34ff10(0x254)+_0x34ff10(0x169)+'\x20\x20\x20media_p'+_0x34ff10(0x1e3)+_0x34ff10(0x229)+_0x34ff10(0x1b5)+'\x20INTEGER\x20D'+_0x34ff10(0x149)+_0x34ff10(0x207)+_0x34ff10(0x1ac)+_0x34ff10(0x1e9)+_0x34ff10(0x160)+_0x34ff10(0x146)+_0x34ff10(0x1d7)+_0x34ff10(0x15f)+_0x34ff10(0xe3)+')\x0a\x20\x20\x20\x20);\x0a\x20'+_0x34ff10(0x212)+'TABLE\x20IF\x20N'+_0x34ff10(0x11e)+'message_co'+_0x34ff10(0x1f3)+_0x34ff10(0x1cf)+'_jid\x20TEXT\x20'+_0x34ff10(0x1be)+_0x34ff10(0x179)+'er_jid\x20TEX'+'T\x20NOT\x20NULL'+_0x34ff10(0x1e2)+'count\x20INTE'+'GER\x20DEFAUL'+_0x34ff10(0x18b)+_0x34ff10(0x22c)+'\x20KEY\x20(grou'+_0x34ff10(0x104)+'r_jid)\x0a\x20\x20\x20'+_0x34ff10(0x1dd)+_0x34ff10(0x10b)+_0x34ff10(0x253)+'ISTS\x20idx_g'+_0x34ff10(0x1bc)+'ngs_jid\x20ON'+_0x34ff10(0x131)+_0x34ff10(0x1d1)+_0x34ff10(0x213)+'\x20\x20CREATE\x20I'+_0x34ff10(0x14b)+_0x34ff10(0x206)+_0x34ff10(0x1d2)+'_store_cha'+_0x34ff10(0x12d)+_0x34ff10(0x1ee)+_0x34ff10(0xe2)+'\x20\x20\x20\x20CREATE'+_0x34ff10(0x198)+_0x34ff10(0x23b)+_0x34ff10(0x1c9)+_0x34ff10(0x1fb)+'imestamp\x20O'+_0x34ff10(0x258)+_0x34ff10(0x17b)+_0x34ff10(0x182)+_0x34ff10(0x124))+('NDEX\x20IF\x20NO'+_0x34ff10(0x206)+_0x34ff10(0x13c)+'nts_group\x20'+'ON\x20message'+_0x34ff10(0x18d)+'oup_jid);\x0a');let checkpointInterval=null;function initSQLite(){const _0x550eb3=_0x1274,_0x23ed0f=require(_0x550eb3(0x1ef)+_0x550eb3(0x1f6));db=new _0x23ed0f(DB_PATH),db[_0x550eb3(0xf8)](_0x550eb3(0x170)+'de\x20=\x20WAL'),db[_0x550eb3(0xf8)]('synchronou'+_0x550eb3(0x21c)),db[_0x550eb3(0xf8)]('cache_size'+_0x550eb3(0x1d6)),db[_0x550eb3(0x25a)](SQLITE_TABLE_SQL);try{db[_0x550eb3(0x25a)](_0x550eb3(0x17e)+_0x550eb3(0x16d)+'store\x20ADD\x20'+_0x550eb3(0x24c)+_0x550eb3(0x167)+'T');}catch{}checkpointInterval=setInterval(()=>{const _0x38f55a=_0x1274;try{if(db)db[_0x38f55a(0xf8)]('wal_checkp'+_0x38f55a(0x233)+_0x38f55a(0x1da));}catch{}},-0x695c*-0x2+0x2cbc+0x1*-0x8a44);const _0x25d514=db[_0x550eb3(0x189)](_0x550eb3(0x1b8)+'NT(*)\x20as\x20c'+_0x550eb3(0x15a)+'r_settings')[_0x550eb3(0x1b7)]()['c'],_0x442d80=db[_0x550eb3(0x189)](_0x550eb3(0x1b8)+_0x550eb3(0xf0)+_0x550eb3(0x223)+_0x550eb3(0x1c7)+_0x550eb3(0x194)+_0x550eb3(0x1db))['get']()['c'];console[_0x550eb3(0x123)](_0x550eb3(0x1ce)+_0x550eb3(0x22d)+_0x550eb3(0x20f)+'tialized\x20('+_0x550eb3(0x13e)+'\x20sync)\x20|\x20'+_0x25d514+(_0x550eb3(0x10f)+_0x550eb3(0xf2))+_0x442d80+_0x550eb3(0xea));}function getDb(){return!db&&initSQLite(),db;}async function initDatabase(){const _0x5cacde=_0x1274;initSQLite();const _0x20cdee=await pg[_0x5cacde(0x20c)]();_0x20cdee?(await pg[_0x5cacde(0x109)](db),console[_0x5cacde(0x123)]('[\x20DAVE-X\x20]'+_0x5cacde(0x17d)+'ready\x20(SQL'+_0x5cacde(0x177)+_0x5cacde(0x203))):console[_0x5cacde(0x123)]('[\x20DAVE-X\x20]'+_0x5cacde(0x17d)+_0x5cacde(0x1e0)+_0x5cacde(0x132));}initDatabase()[_0x34ff10(0x247)](_0x15cf8c=>{const _0x554b3a=_0x1274;console[_0x554b3a(0x10d)]('[\x20DAVE-X\x20]'+_0x554b3a(0x17d)+_0x554b3a(0x184)+':',_0x15cf8c[_0x554b3a(0x1ed)]);});function setOwnerSetting(_0x4e6ba6,_0x23a362){const _0x2e2b75=_0x1274,_0x1ae0ea=JSON[_0x2e2b75(0x142)](_0x23a362),_0x158393=getDb(),_0x12a2c5=_0x158393['prepare']('INSERT\x20OR\x20'+_0x2e2b75(0x238)+'TO\x20owner_s'+_0x2e2b75(0xe4)+_0x2e2b75(0x204)+_0x2e2b75(0xf5)+'value,\x20upd'+'ated_at)\x20V'+_0x2e2b75(0x113)+'?,\x20strftim'+_0x2e2b75(0x1ff)+_0x2e2b75(0x21b));_0x12a2c5[_0x2e2b75(0x234)](_0x4e6ba6,_0x1ae0ea),pg[_0x2e2b75(0xe9)+_0x2e2b75(0x210)](_0x4e6ba6,_0x23a362);}function getOwnerSetting(_0x20de4a,_0x3b6328=null){const _0x4979b3=_0x1274,_0x5b0ce2=getDb(),_0x22a74d=_0x5b0ce2[_0x4979b3(0x189)](_0x4979b3(0xf6)+_0x4979b3(0x115)+_0x4979b3(0x15a)+_0x4979b3(0x249)+_0x4979b3(0x21d)+'ting_key\x20='+'\x20?'),_0x2c536e=_0x22a74d[_0x4979b3(0x1b7)](_0x20de4a);if(_0x2c536e)try{return JSON[_0x4979b3(0x200)](_0x2c536e[_0x4979b3(0x192)+_0x4979b3(0x14d)]);}catch{return _0x2c536e[_0x4979b3(0x192)+'lue'];}return _0x3b6328;}function getAllOwnerSettings(){const _0x4c9e96=_0x1274,_0x16a73c=getDb(),_0x33a0ba=_0x16a73c['prepare']('SELECT\x20set'+'ting_key,\x20'+_0x4c9e96(0x192)+_0x4c9e96(0xed)+_0x4c9e96(0x1d5)+_0x4c9e96(0x211)),_0xa067b=_0x33a0ba[_0x4c9e96(0x22a)](),_0x29d9ec={};for(const _0x19345a of _0xa067b){try{_0x29d9ec[_0x19345a[_0x4c9e96(0x155)+'y']]=JSON[_0x4c9e96(0x200)](_0x19345a[_0x4c9e96(0x192)+_0x4c9e96(0x14d)]);}catch{_0x29d9ec[_0x19345a[_0x4c9e96(0x155)+'y']]=_0x19345a[_0x4c9e96(0x192)+'lue'];}}return _0x29d9ec;}function setGroupSetting(_0xb24641,_0x37f020,_0x5d7c7f){const _0x5dc17d=_0x1274,_0x397c63=JSON[_0x5dc17d(0x142)](_0x5d7c7f),_0x137d2d=getDb(),_0x400250=_0x137d2d['prepare'](_0x5dc17d(0x14a)+_0x5dc17d(0x238)+_0x5dc17d(0x117)+_0x5dc17d(0x1a7)+_0x5dc17d(0x176)+_0x5dc17d(0x155)+_0x5dc17d(0x1eb)+_0x5dc17d(0x1f5)+_0x5dc17d(0x125)+'VALUES\x20(?,'+_0x5dc17d(0x218)+_0x5dc17d(0x16a)+_0x5dc17d(0x1a4));_0x400250['run'](_0xb24641,_0x37f020,_0x397c63),pg[_0x5dc17d(0x145)+'Setting'](_0xb24641,_0x37f020,_0x5d7c7f);}function getGroupSetting(_0x338b23,_0x327d72,_0x584028=null){const _0x148261=_0x1274,_0x5b0412=getDb(),_0x2c2df7=_0x5b0412[_0x148261(0x189)](_0x148261(0xf6)+_0x148261(0x115)+_0x148261(0x1bd)+_0x148261(0x251)+_0x148261(0x17a)+'up_jid\x20=\x20?'+_0x148261(0x225)+_0x148261(0x158)),_0x4e3622=_0x2c2df7['get'](_0x338b23,_0x327d72);if(_0x4e3622)try{return JSON[_0x148261(0x200)](_0x4e3622[_0x148261(0x192)+_0x148261(0x14d)]);}catch{return _0x4e3622[_0x148261(0x192)+_0x148261(0x14d)];}return _0x584028;}function getAllGroupSettings(_0x170755){const _0x4db217=_0x1274,_0x4d2384=getDb(),_0x5d1b3d=_0x4d2384[_0x4db217(0x189)](_0x4db217(0xf6)+_0x4db217(0x186)+_0x4db217(0x192)+_0x4db217(0x216)+_0x4db217(0x1bc)+_0x4db217(0x1f2)+_0x4db217(0x13f)+_0x4db217(0x141)),_0x2f6a78=_0x5d1b3d[_0x4db217(0x22a)](_0x170755),_0x2f5009={};for(const _0x13a1c5 of _0x2f6a78){try{_0x2f5009[_0x13a1c5[_0x4db217(0x155)+'y']]=JSON[_0x4db217(0x200)](_0x13a1c5[_0x4db217(0x192)+_0x4db217(0x14d)]);}catch{_0x2f5009[_0x13a1c5[_0x4db217(0x155)+'y']]=_0x13a1c5[_0x4db217(0x192)+_0x4db217(0x14d)];}}return _0x2f5009;}function getAllGroupJids(){const _0x453194=_0x1274,_0x5c351e=getDb();try{const _0x55b05f=_0x5c351e['prepare'](_0x453194(0x168)+_0x453194(0x205)+_0x453194(0x1a9)+'\x20group_set'+_0x453194(0x19e))[_0x453194(0x22a)]();return _0x55b05f['map'](_0xcfd55f=>_0xcfd55f[_0x453194(0xec)]);}catch{return[];}}function deleteGroupSetting(_0x8f84c1,_0x3d49d9){const _0x307627=_0x1274,_0x50fdc2=getDb(),_0x283395=_0x50fdc2[_0x307627(0x189)](_0x307627(0x208)+'M\x20group_se'+_0x307627(0x1f1)+_0x307627(0x195)+'id\x20=\x20?\x20AND'+_0x307627(0x1d4)+_0x307627(0x139));_0x283395[_0x307627(0x234)](_0x8f84c1,_0x3d49d9),pg[_0x307627(0x129)+'oupSetting'](_0x8f84c1,_0x3d49d9);}function getWarningCount(_0x583362,_0x4f2c4b){const _0x376b9c=_0x1274,_0x824e7c=getDb(),_0x206cb1=_0x824e7c[_0x376b9c(0x189)](_0x376b9c(0x1a3)+_0x376b9c(0x1fd)+_0x376b9c(0x1c5)+_0x376b9c(0x195)+_0x376b9c(0x19a)+'\x20user_jid\x20'+_0x376b9c(0x141)),_0x390da6=_0x206cb1['get'](_0x583362,_0x4f2c4b);return _0x390da6?_0x390da6[_0x376b9c(0x15e)]:0xa*-0x2d+0x3*0x5a0+-0xf1e;}function incrementWarning(_0x21ec70,_0x2c039b){const _0x29273f=_0x1274,_0x20e98c=getDb(),_0x4c5940=getWarningCount(_0x21ec70,_0x2c039b),_0x198fb6=_0x4c5940+(-0x190c+-0x3*-0x356+0x1*0xf0b),_0x119657=_0x20e98c[_0x29273f(0x189)]('INSERT\x20OR\x20'+_0x29273f(0x238)+'TO\x20warning'+_0x29273f(0x20b)+_0x29273f(0x1cc)+_0x29273f(0x13a)+_0x29273f(0x1a2)+_0x29273f(0x1b3)+_0x29273f(0x1a1)+'strftime(\x27'+_0x29273f(0x199)+'))');return _0x119657[_0x29273f(0x234)](_0x21ec70,_0x2c039b,_0x198fb6),pg['pgSetWarni'+'ng'](_0x21ec70,_0x2c039b,_0x198fb6),_0x198fb6;}function resetWarning(_0x20ef02,_0x2318e6){const _0x4415eb=_0x1274,_0x54fe51=getDb(),_0x501900=_0x54fe51['prepare'](_0x4415eb(0x208)+_0x4415eb(0x10a)+_0x4415eb(0x17a)+_0x4415eb(0x220)+'\x20AND\x20user_'+_0x4415eb(0x100));_0x501900['run'](_0x20ef02,_0x2318e6),pg['pgResetWar'+_0x4415eb(0xf1)](_0x20ef02,_0x2318e6);}function setWarningCount(_0x4c81ac,_0x1fc9a6,_0x502ffa){const _0x57499a=_0x1274;if(_0x502ffa<=0x15f5+0x1ff0+0x7*-0x7b3)return resetWarning(_0x4c81ac,_0x1fc9a6),-0x1be+0x1*-0x1c77+-0x25*-0xd1;const _0x5405f2=getDb(),_0x3d3e68=_0x5405f2['prepare'](_0x57499a(0x14a)+_0x57499a(0x238)+'TO\x20warning'+'s\x20(group_j'+_0x57499a(0x1cc)+'id,\x20count,'+_0x57499a(0x1a2)+_0x57499a(0x1b3)+_0x57499a(0x1a1)+_0x57499a(0x22b)+'%s\x27,\x20\x27now\x27'+'))');return _0x3d3e68[_0x57499a(0x234)](_0x4c81ac,_0x1fc9a6,_0x502ffa),pg['pgSetWarni'+'ng'](_0x4c81ac,_0x1fc9a6,_0x502ffa),_0x502ffa;}function getAllWarnings(){const _0x237540=_0x1274,_0x123cc9={},_0x21d48b=getDb(),_0x80702e=_0x21d48b[_0x237540(0x189)](_0x237540(0x151)+'up_jid,\x20us'+_0x237540(0x222)+'unt\x20FROM\x20w'+_0x237540(0x22f)),_0x1c4fc4=_0x80702e[_0x237540(0x22a)]();for(const _0x29ee6f of _0x1c4fc4){if(!_0x123cc9[_0x29ee6f[_0x237540(0xec)]])_0x123cc9[_0x29ee6f[_0x237540(0xec)]]={};_0x123cc9[_0x29ee6f['group_jid']][_0x29ee6f[_0x237540(0x19b)]]=_0x29ee6f[_0x237540(0x15e)];}return _0x123cc9;}function addBannedUser(_0x37d651,_0x5dae69=''){const _0x5ac8d9=_0x1274,_0x352414=getDb(),_0x28d2b5=_0x352414['prepare']('INSERT\x20OR\x20'+'REPLACE\x20IN'+_0x5ac8d9(0x16b)+_0x5ac8d9(0x119)+_0x5ac8d9(0x154)+_0x5ac8d9(0x120)+_0x5ac8d9(0x1bf)+_0x5ac8d9(0x25b)+_0x5ac8d9(0x22b)+'%s\x27,\x20\x27now\x27'+'))');_0x28d2b5[_0x5ac8d9(0x234)](_0x37d651,_0x5dae69),pg['pgAddBanne'+_0x5ac8d9(0x190)](_0x37d651,_0x5dae69);}function removeBannedUser(_0x2d1e6c){const _0x3483dc=_0x1274,_0x19b056=getDb(),_0x5c6df6=_0x19b056[_0x3483dc(0x189)](_0x3483dc(0x208)+_0x3483dc(0x1f9)+_0x3483dc(0xfa)+_0x3483dc(0x114)+'=\x20?');_0x5c6df6[_0x3483dc(0x234)](_0x2d1e6c),pg[_0x3483dc(0x106)+_0x3483dc(0x240)](_0x2d1e6c);}function isBanned(_0x3d415b){const _0x25f757=_0x1274,_0x222982=getDb(),_0xeab8c7=_0x222982[_0x25f757(0x189)](_0x25f757(0x1d8)+_0x25f757(0x112)+_0x25f757(0x180)+_0x25f757(0x215)+_0x25f757(0x144));return!!_0xeab8c7[_0x25f757(0x1b7)](_0x3d415b);}function getAllBannedUsers(){const _0x50aa0f=_0x1274,_0x34fbff=getDb(),_0x10a1f4=_0x34fbff['prepare'](_0x50aa0f(0x246)+_0x50aa0f(0x154)+_0x50aa0f(0x120)+_0x50aa0f(0x122)+_0x50aa0f(0x15c)+'rs');return _0x10a1f4[_0x50aa0f(0x22a)]();}function addSudoUser(_0xc7494b){const _0xb44a1e=_0x1274,_0x4ce775=getDb(),_0x55c98f=_0x4ce775[_0xb44a1e(0x189)]('INSERT\x20OR\x20'+_0xb44a1e(0x161)+_0xb44a1e(0x1e7)+_0xb44a1e(0x226)+_0xb44a1e(0x236)+_0xb44a1e(0x1f4)+_0xb44a1e(0x14f)+_0xb44a1e(0x152)+_0xb44a1e(0x107));_0x55c98f[_0xb44a1e(0x234)](_0xc7494b),pg['pgAddSudoU'+_0xb44a1e(0x118)](_0xc7494b);}function removeSudoUser(_0x44d04e){const _0x42ee22=_0x1274,_0x5114e9=getDb(),_0x42ee10=_0x5114e9['prepare'](_0x42ee22(0x208)+'M\x20sudo_use'+_0x42ee22(0x130)+_0x42ee22(0x175)+'?');_0x42ee10[_0x42ee22(0x234)](_0x44d04e),pg[_0x42ee22(0x1bb)+_0x42ee22(0x1b2)](_0x44d04e);}function isSudo(_0x32a047){const _0x5992f0=_0x1274,_0x7f255f=getDb(),_0x5489e2=_0x7f255f['prepare'](_0x5992f0(0x1d8)+_0x5992f0(0x11c)+'sers\x20WHERE'+_0x5992f0(0x114)+_0x5992f0(0x141));return!!_0x5489e2['get'](_0x32a047);}function getAllSudoUsers(){const _0x4b73ba=_0x1274,_0x134291=getDb(),_0x3d5e42=_0x134291['prepare'](_0x4b73ba(0x246)+_0x4b73ba(0x1f7)+_0x4b73ba(0x259)+'s');return _0x3d5e42[_0x4b73ba(0x22a)]()[_0x4b73ba(0x134)](_0x40e826=>_0x40e826[_0x4b73ba(0x19b)]);}function storeMessage(_0x414eb5,_0x80b48f,_0xc30afa,_0x21a24e,_0x14b6fb=null,_0x112c06=null,_0x5749ce=![],_0x7e597f=null){const _0x1c33e2=_0x1274,_0x20e1c2=getDb(),_0x1171af=_0x20e1c2['prepare']('INSERT\x20OR\x20'+'REPLACE\x20IN'+_0x1c33e2(0x241)+'_store\x20(me'+_0x1c33e2(0x166)+_0x1c33e2(0x209)+'sender_jid'+_0x1c33e2(0x138)+_0x1c33e2(0x157)+_0x1c33e2(0x1e6)+_0x1c33e2(0x1e4)+_0x1c33e2(0xfe)+_0x1c33e2(0x252)+_0x1c33e2(0x19f)+_0x1c33e2(0x24e)+_0x1c33e2(0x20a)+_0x1c33e2(0x173)+_0x1c33e2(0x243)+'e(\x27%s\x27,\x20\x27n'+_0x1c33e2(0x21b));_0x1171af[_0x1c33e2(0x234)](_0x414eb5,_0x80b48f,_0xc30afa,_0x21a24e,_0x14b6fb,_0x112c06,_0x5749ce?0x1cbc+0x1076+0x1f7*-0x17:-0x910+-0x1*0x1c79+-0x1*-0x2589,_0x7e597f);}function getMessage(_0x20841c){const _0x3f97de=_0x1274,_0x5a1f96=getDb(),_0x522021=_0x5a1f96[_0x3f97de(0x189)](_0x3f97de(0x187)+_0x3f97de(0x232)+_0x3f97de(0x116)+_0x3f97de(0x1a6)+'e_id\x20=\x20?');return _0x522021[_0x3f97de(0x1b7)](_0x20841c);}function deleteMessage(_0x5c1725){const _0x969253=_0x1274,_0x3b8a38=getDb(),_0x463ec4=_0x3b8a38[_0x969253(0x189)](_0x969253(0x208)+_0x969253(0x16c)+_0x969253(0x19d)+_0x969253(0x16d)+_0x969253(0x10c));_0x463ec4[_0x969253(0x234)](_0x5c1725);}function cleanOldMessages(_0x25c627=0x65a9+-0x2*-0x2689+0x9ec5){const _0x4a5aa9=_0x1274,_0x2a6b12=Math[_0x4a5aa9(0x1aa)](Date[_0x4a5aa9(0x201)]()/(-0xce2*-0x1+-0x147*0x2+-0x66c))-_0x25c627,_0x4cd31a=getDb(),_0x286b6f=_0x4cd31a[_0x4a5aa9(0x189)](_0x4a5aa9(0x208)+_0x4a5aa9(0x16c)+_0x4a5aa9(0x19d)+_0x4a5aa9(0x164)+_0x4a5aa9(0x214)),_0x58cd7c=_0x286b6f[_0x4a5aa9(0x234)](_0x2a6b12);return _0x58cd7c[_0x4a5aa9(0x196)];}function getMessageCount(){const _0x159768=_0x1274,_0x355492=getDb(),_0x2b55e5=_0x355492[_0x159768(0x189)](_0x159768(0x1b8)+'NT(*)\x20as\x20c'+_0x159768(0xfb)+'message_st'+_0x159768(0x24b));return _0x2b55e5['get']()[_0x159768(0x15e)];}function hasGroupSetting(_0x40824c,_0x4d7b6a){const _0x546acb=_0x1274,_0xbc2fb8=getDb(),_0x45b634=_0xbc2fb8[_0x546acb(0x189)](_0x546acb(0x1d8)+_0x546acb(0x1af)+_0x546acb(0x193)+'HERE\x20group'+'_jid\x20=\x20?\x20A'+_0x546acb(0x159)+_0x546acb(0x197));return!!_0x45b634[_0x546acb(0x1b7)](_0x40824c,_0x4d7b6a);}function getMessagesByChat(_0x46cc60,_0x46e16a=0xe0*0x16+0x1b57+-0x2e33){const _0x4e8ef1=_0x1274,_0x2e5514=getDb(),_0x1fee0f=_0x2e5514['prepare'](_0x4e8ef1(0x187)+_0x4e8ef1(0x232)+_0x4e8ef1(0x116)+_0x4e8ef1(0x237)+'id\x20=\x20?\x20ORD'+'ER\x20BY\x20time'+_0x4e8ef1(0xf4)+_0x4e8ef1(0x24f));return _0x1fee0f['all'](_0x46cc60,_0x46e16a);}function incrementMsgCount(_0x3bc4a4,_0x4516a2){const _0x1d3cab=_0x1274,_0x55f9f0=getDb();_0x55f9f0[_0x1d3cab(0x189)](_0x1d3cab(0x1b4)+_0x1d3cab(0x1c1)+_0x1d3cab(0x17f)+_0x1d3cab(0x1c0)+_0x1d3cab(0xf9)+'er_jid,\x20co'+_0x1d3cab(0x248)+'S\x20(?,\x20?,\x201'+_0x1d3cab(0x1b6)+_0x1d3cab(0x153)+_0x1d3cab(0x24d)+_0x1d3cab(0x136)+'d)\x20DO\x20UPDA'+_0x1d3cab(0x15d)+_0x1d3cab(0x244)+'\x20+\x201\x0a\x20\x20\x20\x20')[_0x1d3cab(0x234)](_0x3bc4a4,_0x4516a2),pg[_0x1d3cab(0xee)+_0x1d3cab(0x1f0)](_0x3bc4a4,_0x4516a2);}function getGroupMsgCounts(_0x2d65d1){const _0x2c5123=_0x1274,_0x2162d3=getDb(),_0x287065=_0x2162d3['prepare']('SELECT\x20use'+_0x2c5123(0x21e)+_0x2c5123(0x135)+_0x2c5123(0x12f)+_0x2c5123(0x1e8)+'roup_jid\x20='+_0x2c5123(0x110)+_0x2c5123(0x11f)+'SC')['all'](_0x2d65d1),_0x3fd80b={};for(const _0x2d850d of _0x287065)_0x3fd80b[_0x2d850d[_0x2c5123(0x19b)]]=_0x2d850d[_0x2c5123(0x15e)];return _0x3fd80b;}function getAllGroupMsgCountJids(){const _0x3f97fc=_0x1274,_0x46237d=getDb(),_0x36c69b=_0x46237d['prepare'](_0x3f97fc(0x168)+_0x3f97fc(0x205)+_0x3f97fc(0x1a9)+_0x3f97fc(0x17f)+_0x3f97fc(0x171))[_0x3f97fc(0x22a)]();return _0x36c69b[_0x3f97fc(0x134)](_0x348e5b=>_0x348e5b[_0x3f97fc(0xec)]);}function resetGroupMsgCounts(_0x146ce0){const _0x4050c5=_0x1274,_0x2269d8=getDb();_0x2269d8['prepare']('DELETE\x20FRO'+_0x4050c5(0x16c)+_0x4050c5(0x17c)+_0x4050c5(0x195)+'id\x20=\x20?')['run'](_0x146ce0),pg[_0x4050c5(0x140)+_0x4050c5(0x1cd)+'s'](_0x146ce0);}function getGroupTotalMsgCount(_0x18d7e0){const _0x36880d=_0x1274,_0x51905b=getDb(),_0xd7a629=_0x51905b['prepare'](_0x36880d(0x10e)+_0x36880d(0x18a)+_0x36880d(0x24a)+'M\x20message_'+_0x36880d(0x17c)+_0x36880d(0x195)+_0x36880d(0x10c))[_0x36880d(0x1b7)](_0x18d7e0);return _0xd7a629?.[_0x36880d(0x11b)]||-0x1f14+-0xcc8+-0x322*-0xe;}function getUserMsgCount(_0x32f617,_0x39f54d){const _0x44954f=_0x1274,_0x37a0a2=getDb(),_0x16e492=_0x37a0a2['prepare'](_0x44954f(0x1a3)+_0x44954f(0x135)+_0x44954f(0x12f)+_0x44954f(0x1e8)+'roup_jid\x20='+_0x44954f(0xeb)+_0x44954f(0x11a))[_0x44954f(0x1b7)](_0x32f617,_0x39f54d);return _0x16e492?.[_0x44954f(0x15e)]||-0x23d*0xb+-0xc2a+0x24c9;}function getBotMode(){const _0x39b722=_0x1274;return getOwnerSetting(_0x39b722(0x163),_0x39b722(0x217));}function setBotMode(_0x302a0e){const _0x532e97=_0x1274;setOwnerSetting('bot_mode',_0x302a0e),setOwnerSetting(_0x532e97(0x1c6)+'s_public',_0x302a0e===_0x532e97(0x217));}function closeDb(){const _0x1861b4=_0x1274;checkpointInterval&&(clearInterval(checkpointInterval),checkpointInterval=null);if(db){try{db['pragma'](_0x1861b4(0x227)+_0x1861b4(0x233)+_0x1861b4(0x1da));}catch{}try{db['close']();}catch{}db=null,console[_0x1861b4(0x123)](_0x1861b4(0x1ce)+'\x20Database\x20'+_0x1861b4(0x1d0)+_0x1861b4(0x162));}pg[_0x1861b4(0x1b1)]()['catch'](()=>{});}process['on'](_0x34ff10(0x16e),closeDb),process['on'](_0x34ff10(0x14c),()=>{const _0xd26ee8=_0x1274;closeDb(),process[_0xd26ee8(0x16e)]();}),process['on'](_0x34ff10(0xe5),()=>{closeDb(),process['exit']();}),process['on'](_0x34ff10(0x11d),()=>{const _0x11740d=_0x1274;closeDb(),process[_0x11740d(0x16e)]();}),module[_0x34ff10(0x1b9)]={'getDb':getDb,'initDatabase':initDatabase,'setOwnerSetting':setOwnerSetting,'getOwnerSetting':getOwnerSetting,'getAllOwnerSettings':getAllOwnerSettings,'setGroupSetting':setGroupSetting,'getGroupSetting':getGroupSetting,'getAllGroupSettings':getAllGroupSettings,'getAllGroupJids':getAllGroupJids,'deleteGroupSetting':deleteGroupSetting,'hasGroupSetting':hasGroupSetting,'getWarningCount':getWarningCount,'incrementWarning':incrementWarning,'resetWarning':resetWarning,'setWarningCount':setWarningCount,'getAllWarnings':getAllWarnings,'addBannedUser':addBannedUser,'removeBannedUser':removeBannedUser,'isBanned':isBanned,'getAllBannedUsers':getAllBannedUsers,'addSudoUser':addSudoUser,'removeSudoUser':removeSudoUser,'isSudo':isSudo,'getAllSudoUsers':getAllSudoUsers,'storeMessage':storeMessage,'getMessage':getMessage,'getMessagesByChat':getMessagesByChat,'deleteMessage':deleteMessage,'cleanOldMessages':cleanOldMessages,'getMessageCount':getMessageCount,'incrementMsgCount':incrementMsgCount,'getGroupMsgCounts':getGroupMsgCounts,'getAllGroupMsgCountJids':getAllGroupMsgCountJids,'resetGroupMsgCounts':resetGroupMsgCounts,'getGroupTotalMsgCount':getGroupTotalMsgCount,'getUserMsgCount':getUserMsgCount,'getBotMode':getBotMode,'setBotMode':setBotMode,'closeDb':closeDb};function _0x4eaf(){const _0x29f513=['mNvOsfP3uq','zw50ifrfwfqScG','tIbTzxnZywDLxW','ihn1zg9FDxnLCG','zxHLyW','rvmGkd8Sid8Sia','AMLKlcbZzxr0Aq','DcbjtLrfr0vsia','Agf0x2PPzcK7cG','CYCSicDUB3CNkq','zxr0Aw5NCYaOCW','u0Lhvevstq','teWScIaGicaGia','ieTfwsaOz3jVDq','BMDFA2v5kqOGia','CgDtzxrpD25LCG','igDYB3vWCW','id8Gqu5eihvZzq','z3jVDxbFAMLK','BhvLiezst00GBW','CgDjBMnYzw1LBG','AwqGvevyvcbotW','tLqOreLtveLoqW','BMLUzW','DgLUz3mSia','icaGigjHBM5Lza','C3rHBxaGrevtqW','lcbZzxr0Aw5NxW','u0vmrunuihnLDa','DgLUz3mGkaOGia','ChjHz21H','DxbFAMLKlcb1CW','C2vYCYbxsevsrq','B3vUDcbguK9nia','uYbZDwrVx3vZzq','zgvKx2f0ieLova','zxDFB25JzsWGCa','tfqGkhn0CMz0Aq','AMLKid0GpW','zcburvHuifbssq','nJeYnNDjA1vTvq','vcbquKLnqvjzia','Cf9QAwqSihvZzq','tLvmtcWkicaGia','CgDszw1VDMvcyq','j25VDYCPkq','x2rHDge','Bg9HzezYB21qzW','tsb3yxjUAw5NCW','rufursbjtKrfwa','AwqGpsa/','zxjYB3i','u0vmrunuifnvtq','ig93BMvYihnLDa','id8Gt1jerviGqG','mJe4nJu5mZvguwjgBeS','uK9nigjHBM5Lza','quXvrvmGkd8Sia','ihvZzxjFAMLKia','DgLUz192ywX1zq','zv9ZDg9Yzsbxsa','ve8Gz3jVDxbFCW','C2vY','DxnLCNmGkhvZzq','CL9QAwqGpsa/','Dg90ywW','uK9nihn1zg9FDq','u0Lhsfvq','t1qGrvHju1rtia','wsbJB3vUDcberq','C29UlcbIyw5Uzq','m0Hdru9KtG','zf9HDcbguK9nia','Bg9N','icbduKvbveuGsq','zgf0zwrFyxqPia','svnuuYbIyw5Uzq','uYbVD25LCL9Zzq','ie5pvcbfweLtva','CgDezwXLDgvhCG','icaGDxnLCL9QAq','zxjFAMLKifrfwa','C2vYx2PPzcburq','DcbptIbTzxnZyq','nJa1mdK1mMfVqLzRAW','C3nHz2vFy291BG','CNmGv0HfuKuGDq','igDYB3vWx3nLDa','AxrLig9UBhKP','zgf2zxGUzgi','BwfW','BNqGrLjptsbTzq','zcWGDxnLCL9QAq','icaGDxbKyxrLza','lcbJB250zw50la','zxKGpsa/','AwqSignVDw50la','mtbZvNPxuva','zhHFBxnNx2nVDq','rvHuifbssu1buG','v0fmicSGrLvmta','z3jVDxbFAMLKia','CgDszxnLDeDYBW','psa/','C3rYAw5NAwz5','rsbuqujmrsbjrG','zca9id8','CgDtzxrhCM91Ca','CcbjtLrfr0vsia','rvKGkgDYB3vWxW','ieTfwsWkicaGia','ruzbvuXuidaScG','su5trvjuie9sia','tKrfwcbjrIbotW','u0Lhsu5u','BhvL','wfqGtK9uie5vta','icG/lcbZDhjMDa','icaGicaGz3jVDq','u0vmrunuigDYBW','Aw1LkcCLCYCSia','t04Gq09orKXjqW','CL9QAwqSihjLyq','C2v0DgLUz19Rzq','s0vzlaOGicaGia','ig1LzgLHx3r5Ca','BMDFA2v5id0GpW','tKqGC2v0DgLUzW','iezst00GB3DUzq','jYKPlaOGicaGia','yMfUBMvKx3vZzq','veuGu0vuignVDq','y291BNq','DhjMDgLTzsGNjq','icb0Aw1LC3rHBq','suDot1jfieLova','zwX5','yM90x21Vzgu','rsb0Aw1LC3rHBq','DgLUz19RzxKGva','C3nHz2vFAwqSia','Af9Uyw1Lifrfwa','u0vmrunuierjuW','rvHulaOGicaGia','zNrPBwuOjYvZjW','ve8GyMfUBMvKxW','tsbTzxnZywDLxW','rsbTzxnZywDLxW','zxHPDa','uIberuzbvuXuia','AM91CM5HBf9TBW','B3vUDhm','BMDFDMfSDwuGva','id8Sid8Sid8Sia','ndG1otC1ELfXChnR','C2vYx2PPzca9ia','CM91Cf9QAwqSia','AxrLicSGug9ZDa','icaGicaGicbHza','icaGicaGicb1CW','ifDirvjfigDYBW','C3rVCMuODgLTzq','y291BNrZifDirq','ierHDgfIyxnLia','quXurviGvefcta','ig1LC3nHz2vFyW','x3vZzxjZifDirq','qujmrsbjrIbotW','C3rHBxaPoWOGia','uKvbveuGvefcta','Aw5PDcbLCNjVCG','tufswsblrvKScG','DgLUz19RzxKSia','u0vmrunuicOGrG','icaGicaGy29UDa','ChjLCgfYzq','kgnVDw50ksbHCW','vcaWlaOGicaGia','wsblrvKScIaGia','x2nVDw50CYHNCG','CMz0Aw1LkcCLCW','y291BNqGsu5urq','zfvZzxi','ie5pvcbovuXmla','C2v0DgLUz192yq','C2v0DgLUz3mGvW','t00Gz3jVDxbFCW','uKuGz3jVDxbFAG','y2HHBMDLCW','x2TLEsa9id8','ieLorevyieLgia','jxmNlcaNBM93jW','AwqGpsa/iefora','DxnLCL9QAwq','x2LKifrfwfqGua','C3rVCMuGv0HfuG','DgLUz3m','DgLTzxn0yw1Wkq','ndC1mtjXBxvXsxO','kd8Sid8Sid8Sia','ihvWzgf0zwrFyq','u0vmrunuignVDq','lcaNBM93jYKP','C19HDcbjtLrfrW','rvjfig1LC3nHzW','zxr0Aw5NCYaOzW','DhrPBMDZicGkia','Cf9QAwqGrLjptq','zMXVB3i','rvHuie5pvcbovq','C2HFBMfTzsburq','weLtvfmGD2fYBG','AM9PBG','uK9nigDYB3vWxW','CMuGkaOGicaGia','y2XVC2vqzW','zg9vC2vY','DcKGvKfmvuvtia','cIaGicaGicaGsq','x3zPzxDFB25Jzq','kqOGicaGicaGia','z2v0','u0vmrunuienpvq','zxHWB3j0CW','rufursbuqujmrq','CgDszw1VDMvtDq','CM91Cf9Zzxr0Aq','iezst00Gz3jVDq','tK9uie5vteWScG','zf9HDcKGvKfmvq','B3vUDhmGkgDYBW','tLnfuLqGsu5utW','icbZzw5KzxjFAG','icaGCMvHC29Uia','z192ywX1zsburq','CM5PBMDZifDirq','yM90x21VzgvFAq','zcKGyxmGyYbguG','khn0CMz0Aw1Lka','igLKEf9TzxnZyq','mJuYwNP2C1rv','wfqGufjjtufswq','AwqSihvZzxjFAG','DxbnC2DdB3vUDa','wYbeqvzflvGGxq','icaGicbNCM91Ca','y2XVC2vKihnHzG','DgLUz3mOz3jVDq','zhHFBwvZC2fNzq','jYvZjYWGj25VDW','ihnLDhrPBMDFAW','D25LCL9Zzxr0Aq','id0GltiWmda','revgqvvmvcaOCW','u0vmrunuideGrG','icaGicaGicbTzq','qvrfkq','zxr0Aw5NCW','icaGicbZzxr0Aq','icK7cIaGicbduG','cIaGicaGicaGCW','vcbfweLtvfmGBq','CMvHzhKGkfnrta','odiWCvrmC0ni','laOGicaGicaGia','yxrOifrfwfqScG','yxrOlcbPC192Aq','Dw1FDxnLCNmGka','zsWGBwvKAwfFCa','tYbZDwrVx3vZzq','DhmGv0HfuKuGzW','wfqScIaGicaGia','zxnZywDLx3n0BW','EsWGC2v0DgLUzW','ifrbqKXfieLgia','BwvZC2fNzq','z2vFC3rVCMuOyW','yMv0DgvYlxnXBa','De1Zz0nVDw50','DhrPBMDZifDirq','BMDZifDirvjfia','Dw50CYaOcIaGia','yxqPifzbtfvfuW','x3zHBhvLlcb1Ca','AxrLmW','CL9QAwqGrLjptq','ksKkicaGicK7cG','tsbIyw5UzwrFDq','CL9QAwqPcIaGia','z2vFC3rVCMvFDa','cIaGicaGicaGDq','BNqGrLjptsb3yq','tcWkicaGicaGia','zsGNjxmNlcaNBG','CgfYC2u','BM93','mtiZnZjZuunuB2G','z3jLu1fmkq','zxr0Aw5Nx2TLEq','veLoq1qGz3jVDq','vcbfweLtvfmGAq','icaGicaGicbWDq','revmrvrfiezstW','y2HHDf9QAwqSia','lca/lca/lca/la','CYaOz3jVDxbFAG','Aw5PDfbN','CNmGkaOGicaGia','yxqGsu5uruDfuG','DgfIyxnLigLUAq','u2v0DgLUzW','BMDZ','icaGq1jfqvrfia','Cf9QAwqPoWOGia','Cca8id8','uKuGDxnLCL9QAq','BhvLiezst00GzW','ChvIBgLJ','id8Sid8Sihn0CG','jYKPcIaGicaPoW','lI9Wz1n5BMm','B3CNksK','CYa9iezvteW','ifDirvjfihnLDa','CL9QAwqSignVDq','rviScIaGicaGia','DxbFAMLKid0GpW','cIaGicbduKvbva','zxjFAMLKlcbJBW','vcbNCM91Cf9QAq','ifbssu1buLKGsW','ieforcbZzxr0Aq','CNmGkhvZzxjFAG','D2fSx2nOzwnRCa','Cgf0Aa','icaGicaGicbPCW','ywXS','C3rYzNrPBwuOjW','icaGufjjtufswq','ifnrtgL0zsbKyq','rsbjrIbot1qGrq','yxjUAw5NCW','BM93jYKPcIaGia','icaGigv4CgLYzq','uK9nig1LC3nHzW','B2LUDcHuuLvoqW','CNvU','x2PPzcburvHuia','AwqSigfKzgvKxW','rvjfignOyxrFAG','uKvqtefdrsbjtG','nJeYn0rHq0DdrW','icbHzgrLzf9HDa','tK9uievysvnuuW','vcbovuXmlaOGia','mtyXmJqZnKXeDfnTEG','uKLnqvjzieTfwq','icb1CgrHDgvKxW','BM5LzfvZzxi','ve8GBwvZC2fNzq','BwuOjYvZjYWGjW','pYWGC3rYzNrPBq','BNqGpsbJB3vUDa','zf91C2vYCYaOcG','u0vmrunuihvZzq','y2f0y2G','Dw50ksbwquXvrq','CL9Zzxr0Aw5NCW','ihrVDgfSiezstW','B3jL','q09mvu1oihb1CW','vcHNCM91Cf9QAq','ifzbtfvfuYaOpW','ieXjtuLuid8','zxHPC3rZu3LUyW','Cf9Zzxr0Aw5NCW','DxnOx25HBwuSia','ieLgie5pvcbfwa','zgLHx3r5CguGva','icaPoWOGicaGqW'];_0x4eaf=function(){return _0x29f513;};return _0x4eaf();}
|