# decompyle3 version 3.9.0 # Python bytecode version base 3.8.0 (3413) # Decompiled from: Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] # Embedded file name: L_Setup.py import os, traceback, webview, threading, time from tobbew import Tobbew import TL_Setup, util, w32, win32gui, aF12Single, requests from urllib.parse import urlencode import json, random, base64 from datetime import datetime FOLDER_NAME = os.path.basename(os.getcwd()) CLIENT_CODE_REVERT = util.cfgR('DEFAULT', 'CLIENT_CODE') CLIENT_CODE = util.ccFromReverted(CLIENT_CODE_REVERT) PROJECT_NAME = 'L_SETUP' API_ENDPOINT = util.cfgR(PROJECT_NAME, 'API_ENDPOINT') API_ENDPOINT = API_ENDPOINT.replace('*****.yyy.zzz', 'www.yek21f.xyz') SHARE_MONEY_SETUP = str(util.cfgR(PROJECT_NAME, 'SHARE_MONEY_SETUP')) MAX_CREATEROOM = util.cfgR(PROJECT_NAME, 'MAX_CREATEROOM') ROOM_0_FIX_AFTER = util.cfgR(PROJECT_NAME, 'ROOM_0_FIX_AFTER') ROOM_0_STOP_AFTER = util.cfgR(PROJECT_NAME, 'ROOM_0_STOP_AFTER') EXT_DIRS = util.cfgR(PROJECT_NAME, 'EXT_DIRS') CROOM_WAIT = util.cfgR(PROJECT_NAME, 'CROOM_WAIT') CHAT_ID = util.cfgR(PROJECT_NAME, 'CHAT_ID') SAVED_FILE = util.cfgR('DEFAULT', 'SAVED_FILE') ROOM_PASS = util.cfgR(PROJECT_NAME, 'ROOM_PASS') END_GAME_DELAY = 6 F12_ADMIN_MCODE = 'fegle' F12_ADMIN2_MCODE = 'quy' DEV_SUN = str(util.cfgR(PROJECT_NAME, 'DEV_SUN')) == '1' class L_SETUP(aF12Single.AppF12Single): _destroyed = False def __init__(self): super().__init__() self._loadSaved() self.bot = L_SETUP_Bot(self) self.bot.app = self UI_HTML = self.getUIFile(PROJECT_NAME) w = 500 h = 220 wvw = webview.create_window(FOLDER_NAME, UI_HTML, width=w, height=h, js_api=self, text_select=True, resizable=False, on_top=True, x=(self._saved['x']), y=(self._saved['y'])) wvw.events.loaded += self.uiOnLoaded wvw.events.closed += self.uiOnClosed self.wvw = self.bot.wvw = wvw util.log('#===== L_SETUP STARTED =====#') def hotSetting(self, data): if data['p_name'] == 'share_money': self.bot.share_money = data['p_value'] if self.bot.share_money: self.bot._jsAll(' window.f12_share_money_playnsave = 1;') util.logY('Bật share tiền khi copy') else: self.bot._jsAll(' window.f12_share_money_playnsave = 0;') util.logY('Tắt share tiền khi copy') if data['p_name'] == 'max_copy': self.bot.max_copy = int(data['p_value']) util.logY('Giới hạn COPY: ' + str(self.bot.max_copy)) class L_SETUP_Bot(TL_Setup.TL_SETUP_Bot): WIN_X_BACK = 100 WIN_X_BACK_S = 40 BROWSER_WIDTH_S = 510 BROWSER_HEIGHT_S = 320 GROUP_SLOT = 0 profs_idx = [] prof_count = 0 HOST_1_IDX = '' HOST_MAIN_IDX = '' _runAutoPlayNSave = False _gMain_rid = '0' _gMain_bet = '100' _runSetupDelay = 0 _arrHostIdx = [] def openProfiles(self, data): if 'slot' not in data: data['slot'] = 5 if 'uc' not in data: data['uc'] = 0 use_uc = data['uc'] == 1 self.GROUP_SLOT = int(data['slot']) if DEV_SUN: self.GROUP_SLOT = 2 self.HOST_1_IDX = '1' self.HOST_MAIN_IDX = str(self.GROUP_SLOT + 1) self._arrHostIdx = [self.HOST_1_IDX, self.HOST_MAIN_IDX] self.profs_idx = [] if use_uc: self.profs_idx = [ self.HOST_1_IDX, self.HOST_MAIN_IDX] else: pass for x in range(self.GROUP_SLOT + 2): self.profs_idx.append(str(x + 1)) else: self.prof_count = len(self.profs_idx) util.logY('Closing opening profiles...') for idx in self.profs_idx: w = self._W(idx) if w is not None: att_name = 'w' + str(idx) self._webQuitByThread(w=w, remove_att_name=att_name) all_closed = False all_closed or time.sleep(1) all_closed = True for idx in self.profs_idx: w = self._W(idx) if w is not None: all_closed = False else: util.logG('Opening profiles...') self._setSite(data['site']) self._countOpenProfileDone = 0 for idx in self.profs_idx: self._initWebGroup(idx) else: while True: if self._countOpenProfileDone < self.prof_count: time.sleep(1) return {'load': 'done'} def _initWebGroup(self, idx, use_uc=False): def __readF12Msg(msg): self._hdlBotWarnLogForL(idx, msg) def __fnc(idx): self.app.uiAddLogInfo('Load Profile: ' + idx) dev_prof = {'name':PROJECT_NAME + '_' + idx, 'cors':1, 'loggingPrefs':'1'} if use_uc: dev_prof['uc'] = '1' if len(EXT_DIRS) > 0: dev_prof['ext_dirs'] = EXT_DIRS w = Tobbew(profile=dev_prof) att_name = 'w' + idx setattr(self, att_name, w) time.sleep(5) dt_string = datetime.now().strftime('%d/%m/%Y%H:%M:%S') title = 'F12-' + str(dt_string) + '_' + idx self._js("document.title ='" + title + "'", w) time.sleep(1) hwnd = w32.findChrome(title) att_name += 'hwnd' if hwnd != 0: setattr(self, att_name, hwnd) self.app.uiAddLogInfo('Load Profile ' + idx + ' DONE') else: util.logR('CANNOT GET hwnd!!!' + idx) time.sleep(1) self.app.uiAddLogInfo('Web ' + idx + ' open PLAY URL') w.open_url(self.play_url) time.sleep(2) self.app.uiAddLogInfo('Web ' + idx + ' init done') self._countOpenProfileDone += 1 w.startListenF12Msg(_L_SETUP_Bot__readF12Msg) thr = threading.Thread(target=_L_SETUP_Bot__fnc, args=(idx,), daemon=True) thr.start() def setBrowserViewMode(self, data): mode = str(data['mode']) def __fnc(idx): x = int(idx) - 1 if 'arrage' in mode: if self.prof_count == 7: if idx == self.HOST_1_IDX or idx == '2' or idx == '3' or idx == '4': loc_x = x * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = 0 else: if idx == '5': loc_x = 3 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = self.BROWSER_HEIGHT_S else: if idx == self.HOST_MAIN_IDX or idx == '7' or idx == '8' or idx == '9': loc_x = x % 5 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = self.BROWSER_HEIGHT_S else: if self.prof_count == 11: if x < 8: loc_x = x % 4 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = int(x / 4) * self.BROWSER_HEIGHT_S else: if idx == '9': loc_x = 3 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = 2 * self.BROWSER_HEIGHT_S else: if x >= 9: loc_x = x % 9 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = 2 * self.BROWSER_HEIGHT_S else: if self.prof_count == 18: self.WIN_X_BACK_S = 125 if x < 9: loc_x = -10 + x % 9 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = 0 else: loc_x = -10 + (x - 9) % 5 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = (1 + int((x - 9) / 5)) * self.BROWSER_HEIGHT_S else: loc_x = x % 2 * (self.BROWSER_WIDTH_S - self.WIN_X_BACK_S) loc_y = int(x / 2) * self.BROWSER_HEIGHT_S w_hwnd = getattr(self, 'w' + idx + 'hwnd') x0, y0, x1, y1 = win32gui.GetWindowRect(w_hwnd) w_width = self.BROWSER_WIDTH_S w_height = self.BROWSER_HEIGHT_S win32gui.MoveWindow(w_hwnd, loc_x, loc_y, w_width, w_height, True) if mode == 'resize': w_hwnd = getattr(self, 'w' + idx + 'hwnd') x0, y0, x1, y1 = win32gui.GetWindowRect(w_hwnd) w_width = self.BROWSER_WIDTH_S w_height = self.BROWSER_HEIGHT_S win32gui.MoveWindow(w_hwnd, x0, y0, w_width, w_height, True) for idx in self.profs_idx: _L_SETUP_Bot__fnc(idx) def createRoomNFind(self, data): self.main_money = data['main_money'] if 'share_money' in data: self.share_money = data['share_money'] if 'max_copy' in data: self.max_copy = int(data['max_copy']) self._runAutoCreateNFind = True def __findHostThr(idxh, arr_idxc): def __f(): if self.stepFindHost_done: util.logP('> > Time is over or host is out... skip!') else: rid = self._b52GetRoomID(idxh) buy_in_money = 30 * int(self.min_money) if idxh == self.HOST_MAIN_IDX or self.selected_site == 'rik': buy_in_money = 30 * int(self.main_money) for idxc in arr_idxc: rpass = ROOM_PASS if int(idxh) > self.GROUP_SLOT or self.selected_site == '52': rpass = '' else: js_code = 'f12FindRoomIDLieng(' + str(rid) + ',' + str(buy_in_money) + ",'" + rpass + "');" self._W(idxc)._js(js_code) thr = threading.Thread(target=_L_SETUP_Bot__f, args=(), daemon=True) thr.start() def __hdlErrRoom(idxh): time.sleep(1) self._W(idxh)._js(' joinRoomBet(500,107); ') time.sleep(1) self._W(idxh)._js(' sendLeaveRoom(); ') time.sleep(1) self._jsAll(' window.f12_setup_mode = "1";') self._jsAll(' window.f12_auto_start_game = "0";') self._jsAll(" f12SetTurboMode('1'); f12SetPreventLogout('1'); ") self._jsAll(' window.fSkpSvccMn = 1;') self._jsAll(' window.f12_share_money_setup = ' + SHARE_MONEY_SETUP + ';') if self.share_money: self._jsAll(' window.f12_share_money_playnsave = 1;') else: self._jsAll(' window.f12_share_money_playnsave = 0;') self._host_list_enemy_dn = {self.HOST_1_IDX: [], self.HOST_MAIN_IDX: []} host_1_dn = self._b52GetDisplayName(self.HOST_1_IDX) list_enemy_dn = [] arr_enemy_idx = ['2'] if self.prof_count == 7 or self.prof_count == 10: arr_enemy_idx = [ '2', '3', '4', '5'] else: if self.prof_count == 11 or self.prof_count == 18: arr_enemy_idx = [ '2','3','4','5','6','7','8','9'] for idx in arr_enemy_idx: list_enemy_dn.append(self._b52GetDisplayName(idx)) self._W(idx)._js(' window.f12_setup_mode_enemy_dn = "' + host_1_dn + '"; ') else: self._host_list_enemy_dn[self.HOST_1_IDX] = list_enemy_dn self._W(self.HOST_1_IDX)._js(' window.f12_setup_mode_enemy_dns = ["' + '","'.join(list_enemy_dn) + '"]; ') host_MAIN_dn = self._b52GetDisplayName(self.HOST_MAIN_IDX) list_enemy_dn = [] arr_enemy_idx = ['4'] if self.prof_count == 7: arr_enemy_idx = [ '7'] else: if self.prof_count == 10: arr_enemy_idx = [ '7', '8', '9', '10'] else: if self.prof_count == 11: arr_enemy_idx = [ '11'] else: if self.prof_count == 18: arr_enemy_idx = [ '11','12','13','14','15','16','17','18'] for idx in arr_enemy_idx: list_enemy_dn.append(self._b52GetDisplayName(idx)) self._W(idx)._js(' window.f12_setup_mode_enemy_dn = "' + host_MAIN_dn + '"; ') else: self._host_list_enemy_dn[self.HOST_MAIN_IDX] = list_enemy_dn self._W(self.HOST_MAIN_IDX)._js(' window.f12_setup_mode_enemy_dns = ["' + '","'.join(list_enemy_dn) + '"]; ') success = False count_createRoom = 0 count_roomError = 0 while self._runAutoCreateNFind and not success: if self._runSetupDelay > 0: util.logY('Setup delay:' + str(self._runSetupDelay) + ' sec') time.sleep(self._runSetupDelay) self._runSetupDelay = 0 util.log('Setup delay done!') time.sleep(1) else: util.logG('> > > 1 Loop START < < < ') util.logY('Step 1: Create Room and check >') step_done = False rID = {self.HOST_1_IDX: -10, self.HOST_MAIN_IDX: -20} chk_room_failed_count = {self.HOST_1_IDX: 0, self.HOST_MAIN_IDX: 0} while True: while not step_done: count_createRoom += 1 util.logY('Count createRoom:' + str(count_createRoom)) if count_createRoom > MAX_CREATEROOM: self._runAutoCreateNFind = False else: rID = {self.HOST_1_IDX: -10, self.HOST_MAIN_IDX: -20} for idx in self._arrHostIdx: self._b52OutRoom(idx) time.sleep(1) for idx in self._arrHostIdx: if idx == self.HOST_MAIN_IDX or self.selected_site == 'rik': money = self.main_money else: money = self.min_money thrCR = threading.Thread(target=(self._b52L_CreateRoom), args=(idx, money), daemon=True) thrCR.start() else: time.sleep(CROOM_WAIT) if self._runAutoCreateNFind: rID_merged_str = '' for idx in self._arrHostIdx: rID[idx] = self._b52GetRoomID(idx) rID_merged_str += ' ' + str(rID[idx]) else: if rID[self.HOST_MAIN_IDX] - 1 == rID[self.HOST_1_IDX] or rID[self.HOST_MAIN_IDX] + 1 == rID[self.HOST_1_IDX]: util.logG('ROOM OK >>> ' + rID_merged_str) step_done = True count_roomError = 0 else: util.log('ROOM Fail: ' + rID_merged_str) if self._runAutoCreateNFind: hasErrRoom = False for idx in self._arrHostIdx: self._b52OutRoom(idx) if rID[idx] == 0: hasErrRoom = True chk_room_failed_count[idx] += 1 if chk_room_failed_count[idx] >= ROOM_0_FIX_AFTER: thrErrR = threading.Thread(target=_L_SETUP_Bot__hdlErrRoom, args=idx, daemon=True) thrErrR.start() else: time.sleep(3) if hasErrRoom: count_roomError += 1 if count_roomError >= ROOM_0_STOP_AFTER: util.logY('Room Error ' + str(count_roomError) + ' times -> Stop!!!') self.terminateThreadFind() time.sleep(1) self.allOutRoom() time.sleep(1) else: time.sleep(5) if self._runSetupDelay > 0: util.logY('Setup delay:' + str(self._runSetupDelay) + ' sec') time.sleep(self._runSetupDelay) self._runSetupDelay = 0 util.log('Setup delay done!') time.sleep(1) if not self._runAutoCreateNFind: step_done = True util.logG('*** Step 1 DONE') if not self._runAutoCreateNFind: self.terminateThreadFind() else: util.logY('Step 2: find host >') self.stepFindHost_done = False if self.prof_count == 4: _L_SETUP_Bot__findHostThr(self.HOST_1_IDX, ['2']) _L_SETUP_Bot__findHostThr(self.HOST_MAIN_IDX, ['4']) else: if self.prof_count == 7: _L_SETUP_Bot__findHostThr(self.HOST_1_IDX, ['2', '3', '4', '5']) _L_SETUP_Bot__findHostThr(self.HOST_MAIN_IDX, ['7']) else: _L_SETUP_Bot__findHostThr(self.HOST_1_IDX, ['2','3','4','5','6','7','8','9']) if self.prof_count == 11: _L_SETUP_Bot__findHostThr(self.HOST_MAIN_IDX, ['11']) else: _L_SETUP_Bot__findHostThr(self.HOST_MAIN_IDX, ['11','12','13','14','15','16','17','18']) time.sleep(3) count = 0 all_matched = False self.stepFindHost_done or count += 1 all_matched = True for idx in self._arrHostIdx: host_arr_enemy_dn = self._b52GetEnemyJoinRoomDN(idx) if len(host_arr_enemy_dn) == len(self._host_list_enemy_dn[idx]): for enemy_dn in host_arr_enemy_dn: if enemy_dn not in self._host_list_enemy_dn[idx]: self.stepFindHost_done = True continue else: while len(host_arr_enemy_dn) > len(self._host_list_enemy_dn[idx]): all_matched = False self.stepFindHost_done = True continue all_matched = False else: if all_matched: self.stepFindHost_done = True else: util.log('not match, wait..') time.sleep(1) if self._runAutoCreateNFind and not count > 2: while not self._b52GetRoomID(self.HOST_1_IDX) == 0: if self._b52GetRoomID(self.HOST_MAIN_IDX) == 0: pass util.log('end step 2') self.stepFindHost_done = True util.logG('*** stepFindHost_done: ' + str(all_matched)) if not self._runAutoCreateNFind: self.terminateThreadFind() else: while all_matched: util.log('All Host-Client is Matched!!') util.logY('Step 3: startRoomNCheck >') success = self.startRoomNCheck() if not success: end_all_game = False arr_done_idx = [] while self._runAutoCreateNFind: while not end_all_game: end_all_game = True for idx in self._arrHostIdx: if self._b52CheckIsAutoFight(idx): end_all_game = False else: if idx not in arr_done_idx: arr_done_idx.append(idx) util.logY('Autofight ' + idx + ' done') thr = threading.Thread(target=(self._b52GroupOutRoom), args=(idx, True), daemon=True) thr.start() time.sleep(1) else: time.sleep(END_GAME_DELAY) util.logG('*** Auto Play done!!') self.allOutRoom() time.sleep(1) delay = random.randint(5, 10) util.log('wait ' + str(delay) + 's..') for i in range(delay * 2): time.sleep(0.5) if not self._runAutoCreateNFind: break else: self.stopFind() time.sleep(1) util.log('Not Match All Host-Client, skip') self._b52GroupOutRoom(self.HOST_1_IDX) self._b52GroupOutRoom(self.HOST_MAIN_IDX) time.sleep(1) self._jsAllClient('f12StopFindHostAccOrRoomID();') time.sleep(1) self._b52GroupOutRoom(self.HOST_1_IDX) self._b52GroupOutRoom(self.HOST_MAIN_IDX) if self._runSetupDelay > 0: util.logY('Setup delay:' + str(self._runSetupDelay) + ' sec') time.sleep(self._runSetupDelay) self._runSetupDelay = 0 util.log('Setup delay done!') time.sleep(1) self._runAutoCreateNFind = False util.logG('_runAutoCreateNFind DONE !!') def startRoomNCheck--- This code section failed: --- L. 638 0 LOAD_FAST 'self' 2 LOAD_METHOD _jsAll 4 LOAD_STR ' window.f12_last_3cards = [];' 6 CALL_METHOD_1 1 '' 8 POP_TOP L. 640 10 LOAD_CONST 0 12 STORE_FAST 'count_wait' 14_0 COME_FROM 74 '74' L. 641 14 LOAD_FAST 'self' 16 LOAD_ATTR _runAutoCreateNFind 18 POP_JUMP_IF_FALSE 76 'to 76' 20 LOAD_FAST 'count_wait' 22 LOAD_CONST 10 24 COMPARE_OP < 26 POP_JUMP_IF_FALSE 76 'to 76' L. 642 28 LOAD_FAST 'self' 30 LOAD_METHOD _b52TableBtnIsActive 32 LOAD_FAST 'self' 34 LOAD_ATTR HOST_1_IDX 36 LOAD_STR 'startBtn' 38 CALL_METHOD_2 2 '' L. 641 40 POP_JUMP_IF_FALSE 56 'to 56' L. 643 42 LOAD_FAST 'self' 44 LOAD_METHOD _b52TableBtnIsActive 46 LOAD_FAST 'self' 48 LOAD_ATTR HOST_MAIN_IDX 50 LOAD_STR 'startBtn' 52 CALL_METHOD_2 2 '' L. 641 54 POP_JUMP_IF_TRUE 76 'to 76' 56_0 COME_FROM 40 '40' L. 644 56 LOAD_GLOBAL time 58 LOAD_METHOD sleep 60 LOAD_CONST 0.5 62 CALL_METHOD_1 1 '' 64 POP_TOP L. 645 66 LOAD_FAST 'count_wait' 68 LOAD_CONST 1 70 INPLACE_ADD 72 STORE_FAST 'count_wait' 74 JUMP_LOOP 14 'to 14' 76_0 COME_FROM 54 '54' 76_1 COME_FROM 26 '26' 76_2 COME_FROM 18 '18' L. 647 76 LOAD_FAST 'self' 78 LOAD_ATTR _runAutoCreateNFind 80 POP_JUMP_IF_TRUE 86 'to 86' L. 648 82 LOAD_CONST False 84 RETURN_VALUE 86_0 COME_FROM 80 '80' L. 650 86 LOAD_GLOBAL util 88 LOAD_METHOD logY 90 LOAD_STR "All host has START BUTTON!! Let's go" 92 CALL_METHOD_1 1 '' 94 POP_TOP L. 652 96 LOAD_FAST 'self' 98 LOAD_METHOD _b52L_SendStart 100 LOAD_FAST 'self' 102 LOAD_ATTR HOST_1_IDX 104 CALL_METHOD_1 1 '' 106 POP_TOP L. 653 108 LOAD_FAST 'self' 110 LOAD_METHOD _b52L_SendStart 112 LOAD_FAST 'self' 114 LOAD_ATTR HOST_MAIN_IDX 116 CALL_METHOD_1 1 '' 118 POP_TOP L. 655 120 LOAD_CONST 0 122 STORE_FAST 'count' L. 656 124 BUILD_MAP_0 0 126 STORE_FAST 'cs_all' L. 657 128 LOAD_CONST 0 130 STORE_FAST 'count_has_cs' L. 658 132 LOAD_GLOBAL util 134 LOAD_METHOD logG 136 LOAD_STR 'Wait for cards..' 138 CALL_METHOD_1 1 '' 140 POP_TOP 142_0 COME_FROM 270 '270' L. 659 142 LOAD_FAST 'self' 144 LOAD_ATTR _runAutoCreateNFind 146_148 POP_JUMP_IF_FALSE 272 'to 272' 150 LOAD_FAST 'count' 152 LOAD_CONST 10 154 COMPARE_OP < 156_158 POP_JUMP_IF_FALSE 272 'to 272' 160 LOAD_FAST 'count_has_cs' 162 LOAD_FAST 'self' 164 LOAD_ATTR prof_count 166 COMPARE_OP < 168_170 POP_JUMP_IF_FALSE 272 'to 272' L. 660 172 LOAD_GLOBAL time 174 LOAD_METHOD sleep 176 LOAD_CONST 1 178 CALL_METHOD_1 1 '' 180 POP_TOP L. 661 182 LOAD_FAST 'count' 184 LOAD_CONST 1 186 INPLACE_ADD 188 STORE_FAST 'count' L. 663 190 LOAD_CONST 0 192 STORE_FAST 'count_has_cs' L. 664 194 LOAD_GLOBAL range 196 LOAD_FAST 'self' 198 LOAD_ATTR prof_count 200 CALL_FUNCTION_1 1 '' 202 GET_ITER 204_0 COME_FROM 268 '268' 204_1 COME_FROM 244 '244' 204_2 COME_FROM 236 '236' 204 FOR_ITER 270 'to 270' 206 STORE_FAST 'x' L. 665 208 LOAD_GLOBAL str 210 LOAD_FAST 'x' 212 LOAD_CONST 1 214 BINARY_ADD 216 CALL_FUNCTION_1 1 '' 218 STORE_FAST 'idx' L. 666 220 LOAD_FAST 'self' 222 LOAD_METHOD _b52GetLast3Cards 224 LOAD_FAST 'idx' 226 CALL_METHOD_1 1 '' 228 STORE_FAST 'last3_cs' L. 667 230 LOAD_FAST 'last3_cs' 232 LOAD_STR '' 234 COMPARE_OP != 236 POP_JUMP_IF_FALSE_LOOP 204 'to 204' 238 LOAD_FAST 'last3_cs' 240 LOAD_STR 'None' 242 COMPARE_OP != 244 POP_JUMP_IF_FALSE_LOOP 204 'to 204' L. 668 246 LOAD_FAST 'last3_cs' 248 LOAD_METHOD split 250 LOAD_STR ',' 252 CALL_METHOD_1 1 '' 254 LOAD_FAST 'cs_all' 256 LOAD_FAST 'idx' 258 STORE_SUBSCR L. 669 260 LOAD_FAST 'count_has_cs' 262 LOAD_CONST 1 264 INPLACE_ADD 266 STORE_FAST 'count_has_cs' 268 JUMP_LOOP 204 'to 204' 270_0 COME_FROM 204 '204' 270 JUMP_LOOP 142 'to 142' 272_0 COME_FROM 168 '168' 272_1 COME_FROM 156 '156' 272_2 COME_FROM 146 '146' L. 673 272 LOAD_FAST 'self' 274 LOAD_ATTR _runAutoCreateNFind 276_278 POP_JUMP_IF_TRUE 284 'to 284' L. 674 280 LOAD_CONST True 282 RETURN_VALUE 284_0 COME_FROM 276 '276' L. 678 284 LOAD_FAST 'self' 286 LOAD_METHOD _b52_saveUserIDForAllProfiles 288 CALL_METHOD_0 0 '' 290 POP_TOP L. 681 292 LOAD_FAST 'self' 294 LOAD_METHOD _b52_getPlayersPlaying 296 LOAD_FAST 'self' 298 LOAD_ATTR HOST_1_IDX 300 CALL_METHOD_1 1 '' 302 STORE_FAST 'g_1_uids' L. 682 304 LOAD_FAST 'self' 306 LOAD_METHOD _b52_getPlayersPlaying 308 LOAD_FAST 'self' 310 LOAD_ATTR HOST_MAIN_IDX 312 CALL_METHOD_1 1 '' 314 STORE_FAST 'g_MAIN_uids' L. 683 316 LOAD_CONST 0 318 STORE_FAST 'count' 320_0 COME_FROM 428 '428' L. 684 320 LOAD_FAST 'count' 322 LOAD_CONST 10 324 COMPARE_OP < 326_328 POP_JUMP_IF_FALSE 432 'to 432' 330 LOAD_GLOBAL len 332 LOAD_FAST 'g_1_uids' 334 CALL_FUNCTION_1 1 '' 336 LOAD_CONST 0 338 COMPARE_OP == 340_342 POP_JUMP_IF_TRUE 358 'to 358' 344 LOAD_GLOBAL len 346 LOAD_FAST 'g_MAIN_uids' 348 CALL_FUNCTION_1 1 '' 350 LOAD_CONST 0 352 COMPARE_OP == 354_356 POP_JUMP_IF_FALSE 432 'to 432' 358_0 COME_FROM 340 '340' L. 685 358 LOAD_GLOBAL len 360 LOAD_FAST 'g_1_uids' 362 CALL_FUNCTION_1 1 '' 364 LOAD_CONST 0 366 COMPARE_OP == 368_370 POP_JUMP_IF_FALSE 384 'to 384' L. 686 372 LOAD_FAST 'self' 374 LOAD_METHOD _b52_getPlayersPlaying 376 LOAD_FAST 'self' 378 LOAD_ATTR HOST_1_IDX 380 CALL_METHOD_1 1 '' 382 STORE_FAST 'g_1_uids' 384_0 COME_FROM 368 '368' L. 687 384 LOAD_GLOBAL len 386 LOAD_FAST 'g_MAIN_uids' 388 CALL_FUNCTION_1 1 '' 390 LOAD_CONST 0 392 COMPARE_OP == 394_396 POP_JUMP_IF_FALSE 410 'to 410' L. 688 398 LOAD_FAST 'self' 400 LOAD_METHOD _b52_getPlayersPlaying 402 LOAD_FAST 'self' 404 LOAD_ATTR HOST_MAIN_IDX 406 CALL_METHOD_1 1 '' 408 STORE_FAST 'g_MAIN_uids' 410_0 COME_FROM 394 '394' L. 689 410 LOAD_GLOBAL time 412 LOAD_METHOD sleep 414 LOAD_CONST 0.5 416 CALL_METHOD_1 1 '' 418 POP_TOP L. 690 420 LOAD_FAST 'count' 422 LOAD_CONST 1 424 INPLACE_ADD 426 STORE_FAST 'count' 428_430 JUMP_LOOP 320 'to 320' 432_0 COME_FROM 354 '354' 432_1 COME_FROM 326 '326' L. 693 432 BUILD_LIST_0 0 434 STORE_FAST 'g_1_sorted_idx' L. 694 436 LOAD_FAST 'g_1_uids' 438 GET_ITER 440_0 COME_FROM 484 '484' 440_1 COME_FROM 470 '470' 440_2 COME_FROM 460 '460' 440 FOR_ITER 488 'to 488' 442 STORE_FAST 'uid' L. 695 444 LOAD_FAST 'self' 446 LOAD_METHOD _b52_getIdxOfUserID 448 LOAD_FAST 'uid' 450 CALL_METHOD_1 1 '' 452 STORE_FAST 'sorted_idx' L. 696 454 LOAD_FAST 'sorted_idx' 456 LOAD_STR 'None' 458 COMPARE_OP != 460_462 POP_JUMP_IF_FALSE_LOOP 440 'to 440' 464 LOAD_FAST 'sorted_idx' 466 LOAD_FAST 'g_1_sorted_idx' 468 COMPARE_OP not-in 470_472 POP_JUMP_IF_FALSE_LOOP 440 'to 440' L. 697 474 LOAD_FAST 'g_1_sorted_idx' 476 LOAD_METHOD append 478 LOAD_FAST 'sorted_idx' 480 CALL_METHOD_1 1 '' 482 POP_TOP 484_486 JUMP_LOOP 440 'to 440' 488_0 COME_FROM 440 '440' L. 700 488 BUILD_LIST_0 0 490 STORE_FAST 'g_1_cs' L. 701 492 LOAD_FAST 'g_1_sorted_idx' 494 GET_ITER 496_0 COME_FROM 514 '514' 496 FOR_ITER 518 'to 518' 498 STORE_FAST 'sorted_idx' L. 702 500 LOAD_FAST 'g_1_cs' 502 LOAD_METHOD append 504 LOAD_FAST 'cs_all' 506 LOAD_FAST 'sorted_idx' 508 BINARY_SUBSCR 510 CALL_METHOD_1 1 '' 512 POP_TOP 514_516 JUMP_LOOP 496 'to 496' 518_0 COME_FROM 496 '496' L. 703 518 LOAD_GLOBAL len 520 LOAD_FAST 'g_1_cs' 522 CALL_FUNCTION_1 1 '' 524 LOAD_FAST 'self' 526 LOAD_ATTR GROUP_SLOT 528 COMPARE_OP != 530_532 POP_JUMP_IF_FALSE 556 'to 556' L. 704 534 LOAD_GLOBAL util 536 LOAD_METHOD log 538 LOAD_STR 'Join error -> do auto play and quit..' 540 CALL_METHOD_1 1 '' 542 POP_TOP L. 705 544 LOAD_FAST 'self' 546 LOAD_METHOD allPlay1Round 548 CALL_METHOD_0 0 '' 550 POP_TOP L. 706 552 LOAD_CONST False 554 RETURN_VALUE 556_0 COME_FROM 530 '530' L. 710 556 LOAD_CONST False 558 STORE_FAST 'success' L. 712 560 SETUP_FINALLY 602 'to 602' L. 713 562 LOAD_FAST 'cs_all' 564 LOAD_FAST 'self' 566 LOAD_ATTR HOST_MAIN_IDX 568 BINARY_SUBSCR 570 STORE_FAST 'm_cs' L. 714 572 LOAD_GLOBAL str 574 LOAD_GLOBAL int 576 LOAD_FAST 'self' 578 LOAD_ATTR HOST_MAIN_IDX 580 CALL_FUNCTION_1 1 '' 582 LOAD_CONST 1 584 BINARY_ADD 586 CALL_FUNCTION_1 1 '' 588 STORE_FAST 'm_p_idx' L. 715 590 LOAD_FAST 'cs_all' 592 LOAD_FAST 'm_p_idx' 594 BINARY_SUBSCR 596 STORE_FAST 'm_p_cs' 598 POP_BLOCK 600 JUMP_FORWARD 662 'to 662' 602_0 COME_FROM_FINALLY 560 '560' L. 716 602 DUP_TOP 604 LOAD_GLOBAL Exception 606 COMPARE_OP exception-match 608_610 POP_JUMP_IF_FALSE 660 'to 660' 612 POP_TOP 614 STORE_FAST 'e' 616 POP_TOP 618 SETUP_FINALLY 648 'to 648' L. 717 620 LOAD_GLOBAL util 622 LOAD_METHOD log 624 LOAD_STR 'Join error -> do auto play and quit..' 626 CALL_METHOD_1 1 '' 628 POP_TOP L. 718 630 LOAD_FAST 'self' 632 LOAD_METHOD allPlay1Round 634 CALL_METHOD_0 0 '' 636 POP_TOP L. 719 638 POP_BLOCK 640 POP_EXCEPT 642 CALL_FINALLY 648 'to 648' 644 LOAD_CONST False 646 RETURN_VALUE 648_0 COME_FROM 642 '642' 648_1 COME_FROM_FINALLY 618 '618' 648 LOAD_CONST None 650 STORE_FAST 'e' 652 DELETE_FAST 'e' 654 END_FINALLY 656 POP_EXCEPT 658 JUMP_FORWARD 662 'to 662' 660_0 COME_FROM 608 '608' 660 END_FINALLY 662_0 COME_FROM 658 '658' 662_1 COME_FROM 600 '600' L. 723 662 LOAD_GLOBAL DEV_SUN 664_666 POP_JUMP_IF_FALSE 750 'to 750' L. 724 668 LOAD_FAST 'm_cs' 670 LOAD_CONST 0 672 BINARY_SUBSCR 674 LOAD_FAST 'g_1_cs' 676 LOAD_CONST 0 678 BINARY_SUBSCR 680 LOAD_CONST 0 682 BINARY_SUBSCR 684 COMPARE_OP == 686_688 POP_JUMP_IF_FALSE 982 'to 982' L. 725 690 LOAD_FAST 'm_cs' 692 LOAD_CONST 1 694 BINARY_SUBSCR 696 LOAD_FAST 'g_1_cs' 698 LOAD_CONST 0 700 BINARY_SUBSCR 702 LOAD_CONST 1 704 BINARY_SUBSCR 706 COMPARE_OP == L. 724 708_710 POP_JUMP_IF_FALSE 982 'to 982' L. 726 712 LOAD_FAST 'm_cs' 714 LOAD_CONST 2 716 BINARY_SUBSCR 718 LOAD_FAST 'g_1_cs' 720 LOAD_CONST 0 722 BINARY_SUBSCR 724 LOAD_CONST 2 726 BINARY_SUBSCR 728 COMPARE_OP == L. 724 730_732 POP_JUMP_IF_FALSE 982 'to 982' L. 727 734 LOAD_CONST True 736 STORE_FAST 'success' L. 728 738 LOAD_GLOBAL util 740 LOAD_METHOD logC 742 LOAD_STR 'Success' 744 CALL_METHOD_1 1 '' 746 POP_TOP 748 JUMP_FORWARD 982 'to 982' 750_0 COME_FROM 664 '664' L. 730 750 LOAD_FAST 'm_cs' 752 LOAD_CONST 0 754 BINARY_SUBSCR 756 LOAD_FAST 'g_1_cs' 758 LOAD_CONST 0 760 BINARY_SUBSCR 762 LOAD_CONST 0 764 BINARY_SUBSCR 766 COMPARE_OP == 768_770 POP_JUMP_IF_FALSE 982 'to 982' L. 731 772 LOAD_FAST 'm_cs' 774 LOAD_CONST 1 776 BINARY_SUBSCR 778 LOAD_FAST 'g_1_cs' 780 LOAD_CONST 2 782 BINARY_SUBSCR 784 LOAD_CONST 0 786 BINARY_SUBSCR 788 COMPARE_OP == L. 730 790_792 POP_JUMP_IF_FALSE 982 'to 982' L. 732 794 LOAD_FAST 'm_cs' 796 LOAD_CONST 2 798 BINARY_SUBSCR 800 LOAD_FAST 'g_1_cs' 802 LOAD_CONST 4 804 BINARY_SUBSCR 806 LOAD_CONST 0 808 BINARY_SUBSCR 810 COMPARE_OP == L. 730 812_814 POP_JUMP_IF_FALSE 982 'to 982' L. 734 816 LOAD_FAST 'self' 818 LOAD_ATTR prof_count 820 LOAD_CONST 7 822 COMPARE_OP == 824_826 POP_JUMP_IF_FALSE 900 'to 900' L. 735 828 LOAD_FAST 'm_p_cs' 830 LOAD_CONST 0 832 BINARY_SUBSCR 834 LOAD_FAST 'g_1_cs' 836 LOAD_CONST 1 838 BINARY_SUBSCR 840 LOAD_CONST 0 842 BINARY_SUBSCR 844 COMPARE_OP == L. 734 846_848 POP_JUMP_IF_FALSE 900 'to 900' L. 736 850 LOAD_FAST 'm_p_cs' 852 LOAD_CONST 1 854 BINARY_SUBSCR 856 LOAD_FAST 'g_1_cs' 858 LOAD_CONST 3 860 BINARY_SUBSCR 862 LOAD_CONST 0 864 BINARY_SUBSCR 866 COMPARE_OP == L. 734 868_870 POP_JUMP_IF_FALSE 900 'to 900' L. 737 872 LOAD_FAST 'm_p_cs' 874 LOAD_CONST 2 876 BINARY_SUBSCR 878 LOAD_FAST 'g_1_cs' 880 LOAD_CONST 0 882 BINARY_SUBSCR 884 LOAD_CONST 1 886 BINARY_SUBSCR 888 COMPARE_OP == L. 734 890_892 POP_JUMP_IF_FALSE 900 'to 900' L. 738 894 LOAD_CONST True 896 STORE_FAST 'success' 898 JUMP_FORWARD 982 'to 982' 900_0 COME_FROM 890 '890' 900_1 COME_FROM 868 '868' 900_2 COME_FROM 846 '846' 900_3 COME_FROM 824 '824' L. 739 900 LOAD_FAST 'self' 902 LOAD_ATTR prof_count 904 LOAD_CONST 11 906 COMPARE_OP == 908_910 POP_JUMP_IF_FALSE 982 'to 982' L. 740 912 LOAD_FAST 'm_p_cs' 914 LOAD_CONST 0 916 BINARY_SUBSCR 918 LOAD_FAST 'g_1_cs' 920 LOAD_CONST 1 922 BINARY_SUBSCR 924 LOAD_CONST 0 926 BINARY_SUBSCR 928 COMPARE_OP == L. 739 930_932 POP_JUMP_IF_FALSE 982 'to 982' L. 741 934 LOAD_FAST 'm_p_cs' 936 LOAD_CONST 1 938 BINARY_SUBSCR 940 LOAD_FAST 'g_1_cs' 942 LOAD_CONST 3 944 BINARY_SUBSCR 946 LOAD_CONST 0 948 BINARY_SUBSCR 950 COMPARE_OP == L. 739 952_954 POP_JUMP_IF_FALSE 982 'to 982' L. 742 956 LOAD_FAST 'm_p_cs' 958 LOAD_CONST 2 960 BINARY_SUBSCR 962 LOAD_FAST 'g_1_cs' 964 LOAD_CONST 5 966 BINARY_SUBSCR 968 LOAD_CONST 0 970 BINARY_SUBSCR 972 COMPARE_OP == L. 739 974_976 POP_JUMP_IF_FALSE 982 'to 982' L. 743 978 LOAD_CONST True 980 STORE_FAST 'success' 982_0 COME_FROM 974 '974' 982_1 COME_FROM 952 '952' 982_2 COME_FROM 930 '930' 982_3 COME_FROM 908 '908' 982_4 COME_FROM 898 '898' 982_5 COME_FROM 812 '812' 982_6 COME_FROM 790 '790' 982_7 COME_FROM 768 '768' 982_8 COME_FROM 748 '748' 982_9 COME_FROM 730 '730' 982_10 COME_FROM 708 '708' 982_11 COME_FROM 686 '686' L. 749 982 LOAD_FAST 'success' 984_986 POP_JUMP_IF_FALSE 1332 'to 1332' L. 750 988 LOAD_GLOBAL util 990 LOAD_METHOD logC 992 LOAD_STR 'Success' 994 CALL_METHOD_1 1 '' 996 POP_TOP L. 751 998 LOAD_GLOBAL util 1000 LOAD_METHOD soundDone 1002 CALL_METHOD_0 0 '' 1004 POP_TOP L. 753 1006 LOAD_GLOBAL util 1008 LOAD_METHOD log 1010 LOAD_STR 'Sorted idx: ' 1012 LOAD_STR ' ' 1014 LOAD_METHOD join 1016 LOAD_FAST 'g_1_sorted_idx' 1018 CALL_METHOD_1 1 '' 1020 BINARY_ADD 1022 CALL_METHOD_1 1 '' 1024 POP_TOP L. 756 1026 LOAD_FAST 'self' 1028 LOAD_METHOD runGroup1AutoPlayNSave 1030 CALL_METHOD_0 0 '' 1032 POP_TOP L. 759 1034 LOAD_FAST 'self' 1036 LOAD_METHOD _W 1038 LOAD_FAST 'self' 1040 LOAD_ATTR HOST_1_IDX 1042 CALL_METHOD_1 1 '' 1044 LOAD_METHOD _js 1046 LOAD_STR ' showGameConfirm("Đang đánh chụp", "Tạo Bàn Thành Công"); ' 1048 CALL_METHOD_1 1 '' 1050 POP_TOP L. 760 1052 LOAD_FAST 'self' 1054 LOAD_METHOD _W 1056 LOAD_FAST 'self' 1058 LOAD_ATTR HOST_MAIN_IDX 1060 CALL_METHOD_1 1 '' 1062 LOAD_METHOD _js 1064 LOAD_STR ' showGameConfirm("Vào đánh đi đại ca ơi", "Tạo Bàn Thành Công"); ' 1066 CALL_METHOD_1 1 '' 1068 POP_TOP L. 761 1070 LOAD_FAST 'self' 1072 LOAD_METHOD _W 1074 LOAD_FAST 'self' 1076 LOAD_ATTR HOST_MAIN_IDX 1078 CALL_METHOD_1 1 '' 1080 LOAD_METHOD _js 1082 LOAD_STR ' f12SaveLastRoomID(); ' 1084 CALL_METHOD_1 1 '' 1086 POP_TOP L. 763 1088 LOAD_FAST 'self' 1090 LOAD_METHOD _b52GetRoomMoney 1092 LOAD_FAST 'self' 1094 LOAD_ATTR HOST_MAIN_IDX 1096 CALL_METHOD_1 1 '' 1098 LOAD_FAST 'self' 1100 STORE_ATTR _gMain_bet L. 764 1102 LOAD_FAST 'self' 1104 LOAD_METHOD _b52GetRoomID 1106 LOAD_FAST 'self' 1108 LOAD_ATTR HOST_MAIN_IDX 1110 CALL_METHOD_1 1 '' 1112 LOAD_FAST 'self' 1114 STORE_ATTR _gMain_rid L. 765 1116 LOAD_GLOBAL str 1118 LOAD_FAST 'self' 1120 LOAD_METHOD _b52GetMCode 1122 LOAD_FAST 'self' 1124 LOAD_ATTR HOST_MAIN_IDX 1126 CALL_METHOD_1 1 '' 1128 CALL_FUNCTION_1 1 '' 1130 STORE_FAST 'mcode' L. 766 1132 LOAD_GLOBAL base64 1134 LOAD_METHOD b64decode 1136 LOAD_FAST 'mcode' 1138 CALL_METHOD_1 1 '' 1140 LOAD_METHOD decode 1142 LOAD_STR 'utf-8' 1144 CALL_METHOD_1 1 '' 1146 LOAD_FAST 'self' 1148 STORE_ATTR mcode_dec L. 768 1150 LOAD_STR 'Site: ' 1152 LOAD_FAST 'self' 1154 LOAD_ATTR selected_site 1156 BINARY_ADD 1158 LOAD_STR ' - Cược: ' 1160 BINARY_ADD 1162 LOAD_GLOBAL str 1164 LOAD_FAST 'self' 1166 LOAD_ATTR _gMain_bet 1168 CALL_FUNCTION_1 1 '' 1170 BINARY_ADD 1172 STORE_FAST 'tele_msg_text' L. 769 1174 LOAD_FAST 'tele_msg_text' 1176 LOAD_STR '\nLiêng Room: ' 1178 LOAD_GLOBAL str 1180 LOAD_FAST 'self' 1182 LOAD_ATTR _gMain_rid 1184 CALL_FUNCTION_1 1 '' 1186 BINARY_ADD 1188 INPLACE_ADD 1190 STORE_FAST 'tele_msg_text' L. 770 1192 LOAD_FAST 'tele_msg_text' 1194 LOAD_STR '\n' 1196 LOAD_FAST 'self' 1198 LOAD_ATTR mcode_dec 1200 BINARY_ADD 1202 INPLACE_ADD 1204 STORE_FAST 'tele_msg_text' L. 772 1206 LOAD_FAST 'self' 1208 LOAD_ATTR _f12_tl_text 1210 LOAD_GLOBAL CHAT_ID 1212 LOAD_FAST 'tele_msg_text' 1214 LOAD_CONST ('chat_id', 'text') 1216 CALL_FUNCTION_KW_2 2 '2 total positional and keyword args' 1218 POP_TOP L. 775 1220 LOAD_GLOBAL str 1222 LOAD_CONST 30000 1224 CALL_FUNCTION_1 1 '' 1226 STORE_FAST 'one_match_timeout' L. 776 1228 LOAD_FAST 'self' 1230 LOAD_METHOD _W 1232 LOAD_FAST 'self' 1234 LOAD_ATTR HOST_MAIN_IDX 1236 CALL_METHOD_1 1 '' 1238 LOAD_METHOD _js 1240 LOAD_STR " f12SetViewEnemy('1'); f12SetAutoPvP('1'); " 1242 CALL_METHOD_1 1 '' 1244 POP_TOP L. 780 1246 LOAD_FAST 'self' 1248 LOAD_METHOD _jsAll 1250 LOAD_STR " window.f12_setup_mode = '0'; f12SetPreventLogout('0'); " 1252 CALL_METHOD_1 1 '' 1254 POP_TOP L. 782 1256 LOAD_FAST 'self' 1258 LOAD_METHOD _jsAllGroup1 1260 LOAD_STR ' disableRoomUpdate(1); ' 1262 CALL_METHOD_1 1 '' 1264 POP_TOP L. 783 1266 LOAD_FAST 'self' 1268 LOAD_METHOD _jsAllGroup1 1270 LOAD_STR " f12SetTurboMode('1'); " 1272 CALL_METHOD_1 1 '' 1274 POP_TOP L. 785 1276 LOAD_FAST 'self' 1278 LOAD_METHOD _jsAllGroupMain 1280 LOAD_STR " f12SetTurboMode('0'); " 1282 CALL_METHOD_1 1 '' 1284 POP_TOP L. 787 1286 LOAD_FAST 'self' 1288 LOAD_METHOD _jsAllGroupMain 1290 LOAD_STR ' setTimeout( function(){ window.fSkpSvccMn = 0; }, ' 1292 LOAD_FAST 'one_match_timeout' 1294 BINARY_ADD 1296 LOAD_STR ' ); ' 1298 BINARY_ADD 1300 CALL_METHOD_1 1 '' 1302 POP_TOP L. 790 1304 LOAD_FAST 'self' 1306 LOAD_METHOD _W 1308 LOAD_FAST 'm_p_idx' 1310 CALL_METHOD_1 1 '' 1312 LOAD_METHOD _js 1314 LOAD_STR " __require('GameConfigManager').default.getInstance().autoReady = 0; setTimeout( function(){ sendLeaveRoomWCheck(); }, " 1316 LOAD_FAST 'one_match_timeout' 1318 BINARY_ADD 1320 LOAD_STR ' ); ' 1322 BINARY_ADD 1324 CALL_METHOD_1 1 '' 1326 POP_TOP L. 792 1328 LOAD_CONST True 1330 RETURN_VALUE 1332_0 COME_FROM 984 '984' L. 794 1332 LOAD_GLOBAL util 1334 LOAD_METHOD log 1336 LOAD_STR 'Cards not matched -> do auto play and quit..' 1338 CALL_METHOD_1 1 '' 1340 POP_TOP L. 795 1342 LOAD_FAST 'self' 1344 LOAD_METHOD allPlay1Round 1346 CALL_METHOD_0 0 '' 1348 POP_TOP L. 796 1350 LOAD_CONST False 1352 RETURN_VALUE Parse error at or near `LOAD_CONST' instruction at offset 644 def allOutRoom(self): for x in range(self.prof_count): idx = str(x + 1) self._b52OutRoom(idx) def allPlay1Round(self): for x in range(self.prof_count): idx = str(x + 1) w = self._W(idx) w._js(' f12AutoPlay1Round(); ') def allStopAutoPlayNSave(self): for x in range(self.prof_count): idx = str(x + 1) w = self._W(idx) w._js(' f12StopAutoPlayNSave(); ') def group1StopAutoPlayNSave(self): if self._runAutoPlayNSave: self._runAutoPlayNSave = False GROUP_1_SLOT = self.GROUP_SLOT for x in range(GROUP_1_SLOT): idx = str(x + 1) w = self._W(idx) w._js(' f12StopAutoPlayNSave(); ') else: util.logR('group1AutoPlayNSave END!') def group1StopLeaveAlert(self, reach_max=False): self.group1StopAutoPlayNSave() tele_msg_text = '' if reach_max: tele_msg_text += '📢<b><i> Hoàn Thành Copy (' + str(self.max_copy) + ')</i></b>' else: tele_msg_text += '⚠<b><i> Báo Dừng Copy </i></b>' tele_msg_text += '\nSite: ' + self.selected_site + ' - Cược: ' + str(self._gMain_bet) tele_msg_text += '\nLiêng Room: ' + str(self._gMain_rid) tele_msg_text += '\n' + self.mcode_dec self._f12_tl_text(chat_id=CHAT_ID, text=tele_msg_text) self._jsAllGroup1(' sendLeaveRoom(); ') time.sleep(1) self._jsAllGroup1(' location.reload(); ') def stopAll(self): self.stopFind({'stop': '1'}) self.group1StopAutoPlayNSave() def _hdlBotWarnLogForL(self, idx, msg): util.log('Profile ' + idx + ': ' + msg) if msg.startswith('NEW GAME READY|'): self._new_gid = msg.replace('NEW GAME READY|', '') else: if msg.startswith('PLAYNSAVE ROOM OUT|'): uid = msg.replace('PLAYNSAVE ROOM OUT|', '') util.logC('Handle ROOM OUT for: ' + idx + ' - ' + uid) self.group1StopLeaveAlert() else: if msg.startswith('PLAYNSAVE ROOM DESTROY|'): uid = msg.replace('PLAYNSAVE ROOM DESTROY|', '') util.logC('Handle ROOM DESTROY for: ' + idx + ' - ' + uid) self.group1StopLeaveAlert() else: if msg.startswith('PLAYNSAVE REJOIN FAILED|'): uid = msg.replace('PLAYNSAVE REJOIN FAILED|', '') util.logC('Handle REJOIN FAILED for: ' + idx + ' - ' + uid) self.group1StopLeaveAlert() else: if msg.startswith('SETUP_DELAY|'): print(msg.replace('SETUP_DELAY|', '')) sec = int('0' + msg.replace('SETUP_DELAY|', '')) self._runSetupDelay = sec util.logC('Handle SETUP_DELAY for: ' + idx + ' - ' + str(sec)) def runGroup1AutoPlayNSave(self): util.log('Thread Play & Save for group 1 is running..') self._runAutoPlayNSave = False thr = threading.Thread(target=(self.group1AutoPlayNSave), args=(), daemon=True) thr.start() def group1AutoPlayNSave(self): if self._runAutoPlayNSave: util.log('Already running _runAutoPlayNSave..') return util.logY('group1AutoPlayNSave START!') GROUP_1_SLOT = self.GROUP_SLOT for x in range(GROUP_1_SLOT): idx = str(x + 1) w = self._W(idx) w._js(' f12AutoPlayNSave(); ') else: rID = str(self._b52GetRoomID(self.HOST_MAIN_IDX)) if rID == '0': rID = self._gMain_rid util.log('RoomID:' + rID) mcode = str(self._b52GetMCode(self.HOST_MAIN_IDX)) self.mcode_dec = base64.b64decode(mcode).decode('utf-8') self._g1_rid = str(self._b52GetRoomID(self.HOST_1_IDX)) self._gid = '' self._new_gid = '' self.count_copy = 0 self._runAutoPlayNSave = True self._g1_need_resort_idx = True self._g1_count_failed = 0 self._g1_last_game_cs = {} while True: if self._runAutoPlayNSave: if self._gid != self._new_gid: self.count_copy += 1 self._gid = self._new_gid if self._g1_need_resort_idx: resort_done = self.group1ResortIdx() if not resort_done: self.group1StopLeaveAlert() else: self._g1_need_resort_idx = False count = 0 cs_all = {} count_has_cs = 0 util.logG('Wait for cards..') while self._runAutoPlayNSave: while count < 10: while count_has_cs < GROUP_1_SLOT: time.sleep(1) count += 1 count_has_cs = 0 for x in range(GROUP_1_SLOT): idx = str(x + 1) last3_cs = self._b52GetLast3Cards(idx) if last3_cs != '': if last3_cs != 'None': cs_all[idx] = last3_cs.split(',') count_has_cs += 1 if not self._runAutoPlayNSave: pass else: if count_has_cs == GROUP_1_SLOT: g_1_cs = [] util.logY(rID + ' - ' + self._gid + ' - (' + str(self.count_copy) + '/' + str(self.max_copy) + ') ') tmp = 0 for sorted_idx in self.g_1_sorted_idx: tmp += 1 g_1_cs = g_1_cs + cs_all[sorted_idx] str_idx_cs = ','.join(cs_all[sorted_idx]) chk_idx = str(tmp) if chk_idx in self._g1_last_game_cs: while self._g1_last_game_cs[chk_idx]['cs'] == str_idx_cs: util.logY('>>> Acc ' + chk_idx + ' not have new cards') self._g1_last_game_cs[chk_idx]['count_failed'] += 1 while self._g1_last_game_cs[chk_idx]['count_failed'] > 3: self.group1StopLeaveAlert() break self._g1_last_game_cs[chk_idx] = {'cs':str_idx_cs, 'count_failed':0} else: all_cs = ','.join(g_1_cs) thr = threading.Thread(target=(self.saveMatch), args=(rID, self._gid, all_cs, mcode, 3), daemon=True) thr.start() else: util.logR('Not enough card -> skip this round') self._g1_count_failed += 1 if self._g1_count_failed >= 3: self.group1StopLeaveAlert() if self.max_copy > 0: if self.count_copy >= self.max_copy: time.sleep(5) util.logY('STOP COPY (Reach Max: ' + str(self.max_copy) + ')') self.group1StopLeaveAlert(reach_max=True) time.sleep(1) def saveMatch(self, roomid, gid, all_cs, mcode, max_try=3): done = False tmp = 0 while not done: while tmp < max_try: tmp += 1 try: params = { 'act': 'saveMatch', 'roomid': roomid, 'gid': gid, 'all_cs': all_cs, 'mcode': mcode} api_url = API_ENDPOINT.replace('sss', self.selected_site) + urlencode(params) req = requests.get(url=api_url) self._g1_count_failed = 0 done = True util.log('Save Match ok') except Exception as e: try: util.logR('Save Match API Failed!!') finally: e = None del e else: time.sleep(1) if not done: self._g1_count_failed += 1 return done def group1RejoinRoom(self, idx): w = self._W(idx) buy_in_money = 15 * int(self.min_money) rpass = ROOM_PASS if self.selected_site == '52': rpass = '' js_code = 'f12FindRoomIDLieng(' + self._g1_rid + ',' + str(buy_in_money) + ",'" + rpass + "');" w._js(js_code) joined = False while True: if self._runAutoPlayNSave: joined or util.log('wait for rejoin..') time.sleep(1) rID = str(self._b52GetRoomID(idx)) if rID == self._g1_rid: joined = True if joined: w._js(' f12AutoPlayNSave(); ') util.logG('Profile [' + idx + '] rejoined successful') return joined def group1ResortIdx--- This code section failed: --- L.1090 0 LOAD_GLOBAL util 2 LOAD_METHOD logY 4 LOAD_STR '>>> Need to sort slot index for group1' 6 CALL_METHOD_1 1 '' 8 POP_TOP L.1091 10 LOAD_FAST 'self' 12 LOAD_ATTR GROUP_SLOT 14 STORE_FAST 'GROUP_1_SLOT' L.1093 16 LOAD_FAST 'self' 18 LOAD_METHOD _b52_saveUserIDForAllProfiles 20 CALL_METHOD_0 0 '' 22 POP_TOP L.1095 24 BUILD_LIST_0 0 26 STORE_FAST 'g_1_uids' L.1097 28 LOAD_CONST 0 30 STORE_FAST 'c_wait' 32_0 COME_FROM 110 '110' L.1098 32 LOAD_FAST 'self' 34 LOAD_ATTR _runAutoPlayNSave 36 POP_JUMP_IF_FALSE 112 'to 112' 38 LOAD_GLOBAL len 40 LOAD_FAST 'g_1_uids' 42 CALL_FUNCTION_1 1 '' 44 LOAD_FAST 'GROUP_1_SLOT' 46 COMPARE_OP < 48 POP_JUMP_IF_FALSE 112 'to 112' 50 LOAD_FAST 'c_wait' 52 LOAD_CONST 90 54 COMPARE_OP < 56 POP_JUMP_IF_FALSE 112 'to 112' L.1099 58 LOAD_GLOBAL util 60 LOAD_METHOD log 62 LOAD_STR 'Wait for game start all of ' 64 LOAD_GLOBAL str 66 LOAD_FAST 'GROUP_1_SLOT' 68 CALL_FUNCTION_1 1 '' 70 BINARY_ADD 72 LOAD_STR ' players..' 74 BINARY_ADD 76 CALL_METHOD_1 1 '' 78 POP_TOP L.1100 80 LOAD_GLOBAL time 82 LOAD_METHOD sleep 84 LOAD_CONST 1 86 CALL_METHOD_1 1 '' 88 POP_TOP L.1101 90 LOAD_FAST 'self' 92 LOAD_METHOD _b52_getPlayersPlaying 94 LOAD_FAST 'self' 96 LOAD_ATTR HOST_1_IDX 98 CALL_METHOD_1 1 '' 100 STORE_FAST 'g_1_uids' L.1102 102 LOAD_FAST 'c_wait' 104 LOAD_CONST 1 106 INPLACE_ADD 108 STORE_FAST 'c_wait' 110 JUMP_LOOP 32 'to 32' 112_0 COME_FROM 56 '56' 112_1 COME_FROM 48 '48' 112_2 COME_FROM 36 '36' L.1105 112 SETUP_FINALLY 222 'to 222' L.1106 114 BUILD_LIST_0 0 116 LOAD_FAST 'self' 118 STORE_ATTR g_1_sorted_idx L.1107 120 LOAD_GLOBAL len 122 LOAD_FAST 'g_1_uids' 124 CALL_FUNCTION_1 1 '' 126 LOAD_FAST 'GROUP_1_SLOT' 128 COMPARE_OP == 130 POP_JUMP_IF_FALSE 202 'to 202' L.1108 132 LOAD_FAST 'g_1_uids' 134 GET_ITER 136_0 COME_FROM 172 '172' 136_1 COME_FROM 158 '158' 136 FOR_ITER 174 'to 174' 138 STORE_FAST 'uid' L.1109 140 LOAD_FAST 'self' 142 LOAD_METHOD _b52_getIdxOfUserID 144 LOAD_FAST 'uid' 146 CALL_METHOD_1 1 '' 148 STORE_FAST 'sorted_idx' L.1110 150 LOAD_FAST 'sorted_idx' 152 LOAD_FAST 'self' 154 LOAD_ATTR g_1_sorted_idx 156 COMPARE_OP not-in 158 POP_JUMP_IF_FALSE_LOOP 136 'to 136' L.1111 160 LOAD_FAST 'self' 162 LOAD_ATTR g_1_sorted_idx 164 LOAD_METHOD append 166 LOAD_FAST 'sorted_idx' 168 CALL_METHOD_1 1 '' 170 POP_TOP 172 JUMP_LOOP 136 'to 136' 174_0 COME_FROM 136 '136' L.1112 174 LOAD_GLOBAL util 176 LOAD_METHOD logC 178 LOAD_STR 'Sorted idx: ' 180 LOAD_STR ' ' 182 LOAD_METHOD join 184 LOAD_FAST 'self' 186 LOAD_ATTR g_1_sorted_idx 188 CALL_METHOD_1 1 '' 190 BINARY_ADD 192 CALL_METHOD_1 1 '' 194 POP_TOP L.1113 196 POP_BLOCK 198 LOAD_CONST True 200 RETURN_VALUE 202_0 COME_FROM 130 '130' L.1115 202 LOAD_GLOBAL util 204 LOAD_METHOD logR 206 LOAD_STR 'group1ResortIdx FAILED ' 208 CALL_METHOD_1 1 '' 210 POP_TOP L.1116 212 POP_BLOCK 214 LOAD_CONST False 216 RETURN_VALUE 218 POP_BLOCK 220 JUMP_FORWARD 274 'to 274' 222_0 COME_FROM_FINALLY 112 '112' L.1117 222 DUP_TOP 224 LOAD_GLOBAL Exception 226 COMPARE_OP exception-match 228_230 POP_JUMP_IF_FALSE 272 'to 272' 232 POP_TOP 234 STORE_FAST 'e' 236 POP_TOP 238 SETUP_FINALLY 260 'to 260' L.1118 240 LOAD_GLOBAL util 242 LOAD_METHOD logR 244 LOAD_STR 'group1ResortIdx FAILED ' 246 CALL_METHOD_1 1 '' 248 POP_TOP L.1119 250 POP_BLOCK 252 POP_EXCEPT 254 CALL_FINALLY 260 'to 260' 256 LOAD_CONST False 258 RETURN_VALUE 260_0 COME_FROM 254 '254' 260_1 COME_FROM_FINALLY 238 '238' 260 LOAD_CONST None 262 STORE_FAST 'e' 264 DELETE_FAST 'e' 266 END_FINALLY 268 POP_EXCEPT 270 JUMP_FORWARD 274 'to 274' 272_0 COME_FROM 228 '228' 272 END_FINALLY 274_0 COME_FROM 270 '270' 274_1 COME_FROM 220 '220' Parse error at or near `POP_BLOCK' instruction at offset 218 def _b52GroupOutRoom(self, idx, wait_end=False): if wait_end: time.sleep(END_GAME_DELAY) if DEV_SUN: if idx == self.HOST_1_IDX: self._b52OutRoom(self.HOST_1_IDX) self._b52OutRoom('2') else: if idx == self.HOST_MAIN_IDX: self._b52OutRoom(self.HOST_MAIN_IDX) self._b52OutRoom('4') else: if idx == self.HOST_1_IDX: self._b52OutRoom(self.HOST_1_IDX) self._b52OutRoom('2') self._b52OutRoom('3') self._b52OutRoom('4') self._b52OutRoom('5') if self.prof_count > 7: self._b52OutRoom('6') self._b52OutRoom('7') self._b52OutRoom('8') self._b52OutRoom('9') else: if idx == self.HOST_MAIN_IDX: self._b52OutRoom(self.HOST_MAIN_IDX) if self.prof_count == 7: self._b52OutRoom('7') else: self._b52OutRoom('11') if self.prof_count > 11: self._b52OutRoom('12') self._b52OutRoom('13') self._b52OutRoom('14') self._b52OutRoom('15') self._b52OutRoom('16') self._b52OutRoom('17') self._b52OutRoom('18') def _b52GetEnemyJoinRoomDN(self, idx): w = self._W(idx) arr_enemy_dn = [] try: js_code = 'return f12GetInGameAllEnemyDN();' arr_enemy_dn = w._js(js_code) except: pass else: return arr_enemy_dn def _b52GetLast3Cards(self, idx): w = self._W(idx) str_cards = '' try: js_code = "return window.f12_last_3cards.join(',');" str_cards = str(w._js(js_code)) except: pass else: return str_cards def _b52_getPlayersPlaying(self, idx): w = self._W(idx) arr_user_id = [] try: js_code = 'return window.f12L_getPlayersPlaying(); ' arr_user_id = w._js(js_code) except: pass else: return arr_user_id def _b52_saveUserIDForAllProfiles(self): self.profiles_uid = {} for x in range(self.prof_count): idx = str(x + 1) self.profiles_uid[idx] = self._b52GetUserID(idx) def _b52_getIdxOfUserID(self, uid): matched_idx = None for x in range(self.prof_count): idx = str(x + 1) if uid == self.profiles_uid[idx]: matched_idx = idx break else: return matched_idx def _b52L_SendStart(self, idx): w = self._W(idx) w._js(' f12_game_instance.sendStart(); ') def _b52L_CreateRoom(self, idx, money): w = self._W(idx) buy_in = 50 * int(money) lobby_lieng = 5 slot = self.GROUP_SLOT if DEV_SUN: slot = 5 rpass = ROOM_PASS if idx == self.HOST_MAIN_IDX or self.selected_site == '52': rpass = '' js_code = ' createRoomBetLieng(' + str(money) + ',' + str(slot) + ",'" + rpass + "');" w._js(js_code) def _b52OutRoom(self, idx): w = self._W(idx) w._js(' if ( f12_gm.roomID ) { sendLeaveRoom(); } ') w._js(" f12_gm.roomID = 0; f12_gm.enemy_dn = ''; ") def _jsAllGroup1(self, js_code): GROUP_1_SLOT = self.GROUP_SLOT for x in range(GROUP_1_SLOT): idx = str(x + 1) w = self._W(idx) w._js(js_code) def _jsAllGroupMain(self, js_code): idx_gMain = [self.HOST_MAIN_IDX] if self.prof_count == 7: idx_gMain = [ self.HOST_MAIN_IDX, '7'] else: if self.prof_count == 10: idx_gMain = [ self.HOST_MAIN_IDX, '7', '8', '9', '10'] else: if self.prof_count == 11: idx_gMain = [ self.HOST_MAIN_IDX, '11'] else: if self.prof_count == 18: idx_gMain = [ self.HOST_MAIN_IDX, '11', '12', '13', '14', '15', '16', '17', '18'] for idx in idx_gMain: w = self._W(idx) w._js(js_code) if __name__ == '__main__': app = L_SETUP() if util.cfgR('DEFAULT', 'DEV_MOD'): thrDevCode = threading.Thread(target=(app.bot._devCodeMod), args=(), daemon=True) thrDevCode.start() webview.start() app.bot.__del__() app.__del__()
Write, Run & Share Python code online using OneCompiler's Python online compiler for free. It's one of the robust, feature-rich online compilers for python language, supporting both the versions which are Python 3 and Python 2.7. Getting started with the OneCompiler's Python editor is easy and fast. The editor shows sample boilerplate code when you choose language as Python or Python2 and start coding.
OneCompiler's python online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample python program which takes name as input and print your name with hello.
import sys
name = sys.stdin.readline()
print("Hello "+ name)
Python is a very popular general-purpose programming language which was created by Guido van Rossum, and released in 1991. It is very popular for web development and you can build almost anything like mobile apps, web apps, tools, data analytics, machine learning etc. It is designed to be simple and easy like english language. It's is highly productive and efficient making it a very popular language.
When ever you want to perform a set of operations based on a condition IF-ELSE is used.
if conditional-expression
#code
elif conditional-expression
#code
else:
#code
Indentation is very important in Python, make sure the indentation is followed correctly
For loop is used to iterate over arrays(list, tuple, set, dictionary) or strings.
mylist=("Iphone","Pixel","Samsung")
for i in mylist:
print(i)
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while condition
#code
There are four types of collections in Python.
List is a collection which is ordered and can be changed. Lists are specified in square brackets.
mylist=["iPhone","Pixel","Samsung"]
print(mylist)
Tuple is a collection which is ordered and can not be changed. Tuples are specified in round brackets.
myTuple=("iPhone","Pixel","Samsung")
print(myTuple)
Below throws an error if you assign another value to tuple again.
myTuple=("iPhone","Pixel","Samsung")
print(myTuple)
myTuple[1]="onePlus"
print(myTuple)
Set is a collection which is unordered and unindexed. Sets are specified in curly brackets.
myset = {"iPhone","Pixel","Samsung"}
print(myset)
Dictionary is a collection of key value pairs which is unordered, can be changed, and indexed. They are written in curly brackets with key - value pairs.
mydict = {
"brand" :"iPhone",
"model": "iPhone 11"
}
print(mydict)
Following are the libraries supported by OneCompiler's Python compiler
Name | Description |
---|---|
NumPy | NumPy python library helps users to work on arrays with ease |
SciPy | SciPy is a scientific computation library which depends on NumPy for convenient and fast N-dimensional array manipulation |
SKLearn/Scikit-learn | Scikit-learn or Scikit-learn is the most useful library for machine learning in Python |
Pandas | Pandas is the most efficient Python library for data manipulation and analysis |
DOcplex | DOcplex is IBM Decision Optimization CPLEX Modeling for Python, is a library composed of Mathematical Programming Modeling and Constraint Programming Modeling |