{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"PoC WhatsApp enumeration of phonenumbers, profile pics, about texts and online statuses (floated div) Raw","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/440 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"440\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.javascript .de1, .javascript .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.javascript  {font-family:monospace;}\n.javascript .imp {font-weight: bold; color: red;}\n.javascript li, .javascript .li1 {color: #DDD;}\n.javascript .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.javascript .kw1 {color: #000066; font-weight: bold;}\n.javascript .kw2 {color: #003366; font-weight: bold;}\n.javascript .kw3 {color: #000066;}\n.javascript .co1 {color: #006600; font-style: italic;}\n.javascript .co2 {color: #009966; font-style: italic;}\n.javascript .coMULTI {color: #006600; font-style: italic;}\n.javascript .es0 {color: #000099; font-weight: bold;}\n.javascript .br0 {color: #009900;}\n.javascript .sy0 {color: #339933;}\n.javascript .st0 {color: #3366CC;}\n.javascript .nu0 {color: #CC0000;}\n.javascript .me1 {color: #660066;}\n.javascript span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"javascript\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178\n179\n180\n181\n182\n183\n184\n185\n186\n187\n188\n189\n190\n191\n192\n193\n194\n195\n196\n197\n198\n199\n200\n201\n202\n203\n204\n205\n206\n207\n208\n209\n210\n211\n212\n213\n214\n215\n216\n217\n218\n219\n220\n221\n222\n223\n224\n225\n226\n227\n228\n229\n230\n231\n232\n233\n234\n235\n236\n237\n238\n239\n240\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"coMULTI\">\/****** I've created a Chrome extension from this script, take a look at https:\/\/github.com\/LoranKloeze\/WhatsAllApp ********\/<\/span>\n&#160;\n<span class=\"coMULTI\">\/*<\/span>\n<span class=\"coMULTI\">&#160;PoC WhatsApp enumeration of phonenumbers, profile pics, about texts and online statuses<\/span>\n<span class=\"coMULTI\">&#160;Floated div edition<\/span>\n<span class=\"coMULTI\">&#160;01-05-2017<\/span>\n<span class=\"coMULTI\">&#160;(c) 2017 - Loran Kloeze - loran@ralon.nl<\/span>\n<span class=\"coMULTI\">&#160;<\/span>\n<span class=\"coMULTI\">&#160;This script creates a UI on top of the WhatsApp Web interface. It enumerates certain kinds<\/span>\n<span class=\"coMULTI\">&#160;of information from a range of phonenumbers. It doesn't matter if these numbers are part<\/span>\n<span class=\"coMULTI\">&#160;of your contact list. At the end a table is displayed containing phonenumbers, profile pics, <\/span>\n<span class=\"coMULTI\">&#160;about texts and online statuses. The online statuses are being updated every<\/span>\n<span class=\"coMULTI\">&#160;10 seconds.<\/span>\n<span class=\"coMULTI\">&#160;<\/span>\n<span class=\"coMULTI\">&#160;Check for an explanation: https:\/\/www.lorankloeze.nl\/2017\/05\/07\/collecting-huge-amounts-of-data-with-whatsapp\/<\/span>\n<span class=\"coMULTI\">&#160;<\/span>\n<span class=\"coMULTI\">&#160;Instructions:<\/span>\n<span class=\"coMULTI\">&#160; - Open WhatsApp web<\/span>\n<span class=\"coMULTI\">&#160; - Make sure the phone is connected to the WhatsApp Web (past the QR-code screen)<\/span>\n<span class=\"coMULTI\">&#160; - Open up the console (F12) (Firefox users: type 'allow pasting' if you haven't done so yet)<\/span>\n<span class=\"coMULTI\">&#160; - Select the contents of this complete file and copy\/paste it to the console<\/span>\n<span class=\"coMULTI\">&#160; - Never, NEVER do something like this if you're not 100% sure this file is from a thrustworthy source! <\/span>\n<span class=\"coMULTI\">&#160; - You'll see a UI with 2 textboxes and a button<\/span>\n<span class=\"coMULTI\">&#160; - You may close the console now<\/span>\n<span class=\"coMULTI\">&#160; - Enter a range of phonenumbers you want to enumerate, more than 500 numbers is probably a little much <\/span>\n<span class=\"coMULTI\">&#160; - After a few sec you'll see a table of phonenumbers, profile pics, about texts and on\/offline statuses<\/span>\n<span class=\"coMULTI\">&#160; - Every 10 sec, the script checks if someone is online and places that number at the beginning of the table<\/span>\n<span class=\"coMULTI\">&#160; - If someone is currently online, the left border of the profile picture becomes green<\/span>\n<span class=\"coMULTI\">&#160; <\/span>\n<span class=\"coMULTI\">&#160; You can drop this script in Tampermonkey or something like that. It only depends on libraries<\/span>\n<span class=\"coMULTI\">&#160; provided by WhatsApp Web.<\/span>\n<span class=\"coMULTI\">*\/<\/span>\n&#160;\n<span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; <span class=\"st0\">'use strict'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Prevent huge traffic\/mem usage<\/span>\n&#160; &#160; <span class=\"kw2\">var<\/span> maxNrClients <span class=\"sy0\">=<\/span> <span class=\"nu0\">1500<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; \n&#160; &#160; <span class=\"co1\">\/\/ Standard phone numbers for the 2 text boxes in the UI<\/span>\n&#160; &#160; <span class=\"kw2\">var<\/span> firstNumberStd <span class=\"sy0\">=<\/span> <span class=\"nu0\">31642101000<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"kw2\">var<\/span> lastNumberStd <span class=\"sy0\">=<\/span> &#160;<span class=\"nu0\">31642101100<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160;\n&#160;\n&#160; &#160; <span class=\"kw2\">function<\/span> setupEventListeners<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> btnStartIndexer <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'btnStartIndexer'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; btnStartIndexer.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;click&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span> e <span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> firstNr <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'inpFirstNumber'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">value<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> lastNr <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'inpLastNumber'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">value<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> divClientBoxes <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'divClientBoxes'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; divClientBoxes.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; firstNr <span class=\"sy0\">=<\/span> parseInt<span class=\"br0\">&#40;<\/span>firstNr<span class=\"sy0\">,<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; lastNr <span class=\"sy0\">=<\/span> parseInt<span class=\"br0\">&#40;<\/span>lastNr<span class=\"sy0\">,<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>isNaN<span class=\"br0\">&#40;<\/span>firstNr<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> isNaN<span class=\"br0\">&#40;<\/span>lastNr<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Numbers should be integers'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>lastNr <span class=\"sy0\">-<\/span> firstNr <span class=\"sy0\">&gt;<\/span> maxNrClients<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Don<span class=\"es0\">\\'<\/span>t query more than '<\/span> <span class=\"sy0\">+<\/span> maxNrClients <span class=\"sy0\">+<\/span> <span class=\"st0\">' numbers right now'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientNr <span class=\"sy0\">=<\/span> firstNr<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; \n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientBoxCreateT <span class=\"sy0\">=<\/span> window.<span class=\"me1\">setInterval<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Next 100...'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> lastClientNrForLoop <span class=\"sy0\">=<\/span> clientNr <span class=\"sy0\">+<\/span> <span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"sy0\">;<\/span>clientNr <span class=\"sy0\">&lt;<\/span> lastClientNrForLoop <span class=\"sy0\">&amp;&amp;<\/span> clientNr <span class=\"sy0\">&lt;<\/span> lastNr<span class=\"sy0\">;<\/span> clientNr<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; divClientBoxes.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>createClientBox<span class=\"br0\">&#40;<\/span>clientNr<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;&quot;<\/span> <span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>clientNr <span class=\"sy0\">===<\/span> lastNr<span class=\"br0\">&#41;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; clearInterval<span class=\"br0\">&#40;<\/span>clientBoxCreateT<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">500<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ The UI that's added to the current DOM<\/span>\n&#160; &#160; <span class=\"kw2\">function<\/span> createDOM<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> body <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementsByTagName<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'body'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> containerDiv <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;div&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'statusIndexer'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> inputFirstNumberLabel <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;label&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputFirstNumberLabel.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'First phone number'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> inputFirstNumber <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;input&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputFirstNumber.<span class=\"me1\">type<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputFirstNumber.<span class=\"me1\">placeholder<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;31612345678&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputFirstNumber.<span class=\"me1\">value<\/span> <span class=\"sy0\">=<\/span> firstNumberStd<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputFirstNumber.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;inpFirstNumber&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> inputLastNumberLabel <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;label&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputLastNumberLabel.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'Last phone number'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> inputLastNumber <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;input&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputLastNumber.<span class=\"me1\">type<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputLastNumber.<span class=\"me1\">placeholder<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;31612345678&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputLastNumber.<span class=\"me1\">value<\/span> <span class=\"sy0\">=<\/span> lastNumberStd<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; inputLastNumber.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;inpLastNumber&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> btnStartIndexer <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;button&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; btnStartIndexer.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'btnStartIndexer'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; btnStartIndexer.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'Start indexer'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>inputFirstNumberLabel<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>inputFirstNumber<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>inputLastNumberLabel<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>inputLastNumber<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;br&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>btnStartIndexer<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;hr&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientBoxesDiv <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;div&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; clientBoxesDiv.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'divClientBoxes'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; containerDiv.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>clientBoxesDiv<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> style <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer {position: absolute; top: 0px; left: 0px; min-height: 50%; overflow: scroll; max-height: 95%; background-color: rgba(230,230,230,0.95); z-index: 99999999; width: 95vw; padding: 50px; border-bottom: solid 3px #58e870; box-shadow: black 0px 1px 62px 0px;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer label {margin: 0 15px 0 0;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer input {margin: 0 25px 0 0; padding: 5px;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer button {margin: 10px 0; border: solid 1px black; padding: 3px; border-radius: 3px; }&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer button:hover {background-color: #58e870;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer .indexerClientBox {float: left; width: 120px; text-align: center; margin: 15px; height: 65px;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer img {width: 32px; height: 32px;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer img.isOffline {border-left: solid 5px orange;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer img.isOnline {border-left: solid 5px green;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer .indexerPhone {font-size: 13px; margin: 2px; font-weight: bold;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; style <span class=\"sy0\">+=<\/span> <span class=\"st0\">&quot;#statusIndexer .indexerStatus {font-size: 11px; margin: 2px;}&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> styleEl <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;style&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; styleEl.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> style<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; body.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>styleEl<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; body.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>containerDiv<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; \n&#160; &#160; &#160; &#160; \n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Create a floated div per phonenumber and execute WhatsApp API queries<\/span>\n&#160; &#160; <span class=\"kw2\">function<\/span> createClientBox<span class=\"br0\">&#40;<\/span>phonenumber<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> divBox <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;div&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; divBox.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'indexerClientBox'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; divBox.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'p'<\/span><span class=\"sy0\">+<\/span>phonenumber<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> imgSrcNoneFound <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAIAAAC3LO29AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABDRJREFUeNrsmj1IW1EUgGMNWLBGUIigIlVoq4LUQqsuXerP4uLf4qDSLh1aaRehCk6CDl0q2qFDf6yDi1YXF0272EFLoQWLkQoKGgsKKZggjaCkX97Bx0s01qA2Uc4jhHd\/c757zj33nEuSgsGg7UI\/l2wX\/VFCJVRCJVRCJVRCJVRCJVRCJVRCJVRCJVRCJVRCJVTCUyDcGP3gnXJZi1uzX44e8uvN0PaC+9wQbo6Nux8+MiWmuDU7d\/SQ1f7Bf67C6T72k453OH52dN6anIioB3vX57c70lKLi6z1JSPvkx0OXuBMLS7cXliUPtI\/JTfncm6OdQZqdjzr9LQbo+JAmH2\/FbVge9kP2szKpY5OLDa9ogwAvotevTSblnt608vL8p62zze3ALbn8wU869ITVJBKJyeAtM6w6\/OVjAzzHjdPAxuQCGquPcJBhVhojI1K8dCBmdWVt2c+ZTU1oE\/ASg1D+D3lkhmM4cN5Tx7H35ciBMu\/0tMrRdlmmTVVfKMlPjv78BFPekU53yk52fRBb9gh1ojGWBSKojRnU338CZEsv7vLG1r7RYrJjjS+EVRao+GFz5AWMaFpEccZ\/j\/OQzTGR6jQDCKu9PQhJbuOSmdTQ0yzZdRUMQNbEXPAjcWTEOtK2Xd9qBG7Emd47Xkfx8bXu\/fYVGxI0z1ah9BZVEfR9LfSSn9GBTye1f6BK0ZThJJje4IJ+fxZ88jL+ut3M1evn2Qquy0hnx\/NLRybqA5DLejuOslUSYn5TwX2sPgYawxwoQg1t0hUwmjJBza5+mIgEH70SeX5ICT\/IAo9IvlgyxH3RRzuUhn\/3OJ40XmbGeKcAyvFcjjKP+ffQDPITXF5PyLFCKnEur7V1tGBbmKTnN1bc2HGSbwye\/MOH3NsKDl+OySVB42TbtGaTp+QsIOAg5wA6TdHx\/HmpE6iorX+QYlXSKnoQM+ljmdibxF5fUZ1JWkH8zDWvCVgaaghjo\/IkqEiNiLzoJWmWK8IYiYk2uLnJZMALNOIIY2w242IGKQcX2tGPhWIEjcDzxCCMsm2pLLAiPvIxWi1blfv9EcWbjPkpeaY3HpvciaE32vrvNMuZ2O9qAs8IHEhG2PjyIcELDlhd2pRYVZjfbTTnEm23YssR8QNwKGphlVp\/K7kXGdFiPaQj8WW9M\/8VeoxJKeBxJYjqbOm\/Ac9J8rH5FgRq\/8UEpqMfN9hTVwo5j1tl0+syb49xk0Yui\/BnRA0hgT1+8VuUd2uz29mvexPxI124yTKxxvthTtY9hjWAR4dWCPJNiXDnm9uxW\/JnQ0bMqY7m5ijNnRo7Idcfg8RxcyoNN9DO2fKhSowpx3jDsZsBZulYTlkEsmMJMKGh+VjoJi9qUzRmLyLAR9q2BqXKqESKqESKqESKqESKqESKqESKqESKqESKqESKqESKqHtrwADAMxLRItbnk5RAAAAAElFTkSuQmCC&quot;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientImgA <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;a&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientImg <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;img&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> profilePicRoutine <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>nr<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; Store.<span class=\"me1\">ProfilePicThumb<\/span>.<span class=\"me1\">find<\/span><span class=\"br0\">&#40;<\/span> nr <span class=\"sy0\">+<\/span> <span class=\"st0\">'@c.us'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">then<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>d<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> imgATag <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'p'<\/span><span class=\"sy0\">+<\/span>nr<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">getElementsByTagName<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'a'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> imgTag <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'p'<\/span><span class=\"sy0\">+<\/span>nr<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">getElementsByTagName<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'img'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>d.<span class=\"me1\">img<\/span> <span class=\"sy0\">===<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; profilePicRoutine<span class=\"br0\">&#40;<\/span>nr<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>d.<span class=\"me1\">img<\/span> <span class=\"sy0\">===<\/span> undefined<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgTag.<span class=\"me1\">src<\/span> <span class=\"sy0\">=<\/span> imgSrcNoneFound<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgATag.<span class=\"me1\">href<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgTag.<span class=\"me1\">src<\/span> <span class=\"sy0\">=<\/span> d.<span class=\"me1\">img<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgATag.<span class=\"me1\">href<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'#'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgATag.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'click'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgTag.<span class=\"me1\">src<\/span> <span class=\"sy0\">=<\/span> d.<span class=\"me1\">imgFull<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; window.<span class=\"kw3\">open<\/span><span class=\"br0\">&#40;<\/span>d.<span class=\"me1\">imgFull<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'_blank'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; imgATag.<span class=\"me1\">target<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'_blank'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>e<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Server is throttling\/rate limiting, we try it again<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; profilePicRoutine<span class=\"br0\">&#40;<\/span>nr<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; profilePicRoutine<span class=\"br0\">&#40;<\/span>phonenumber<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; clientImgA.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>clientImg<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientPhone <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;div&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; clientPhone.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'indexerPhone'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; clientPhone.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> phonenumber<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientStatus <span class=\"sy0\">=<\/span> document.<span class=\"me1\">createElement<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;div&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; clientStatus.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'indexerStatus'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> statusFindRoutine <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>nr<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; Store.<span class=\"me1\">Wap<\/span>.<span class=\"me1\">statusFind<\/span><span class=\"br0\">&#40;<\/span> nr <span class=\"sy0\">+<\/span> <span class=\"st0\">'@c.us'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">then<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>d<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'p'<\/span><span class=\"sy0\">+<\/span>nr<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">getElementsByClassName<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'indexerStatus'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span>.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> d.<span class=\"kw3\">status<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>e<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Server is throttling\/rate limiting, we try it again<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; statusFindRoutine<span class=\"br0\">&#40;<\/span>nr<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; statusFindRoutine<span class=\"br0\">&#40;<\/span>phonenumber<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160;\n&#160; &#160; &#160; &#160; Store.<span class=\"me1\">Presence<\/span>.<span class=\"me1\">find<\/span><span class=\"br0\">&#40;<\/span> phonenumber <span class=\"sy0\">+<\/span> <span class=\"st0\">'@c.us'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">then<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>d<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>d.<span class=\"me1\">isOnline<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; clientImg.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOnline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">else<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; clientImg.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOffline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; divBox.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>clientImgA<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; divBox.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>clientPhone<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; divBox.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>clientStatus<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> divBox<span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Check online\/offline status every 10 sec<\/span>\n&#160; &#160; window.<span class=\"me1\">setInterval<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">var<\/span> i<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> i <span class=\"sy0\">&lt;<\/span> Store.<span class=\"me1\">Presence<\/span>.<span class=\"me1\">models<\/span>.<span class=\"me1\">length<\/span><span class=\"sy0\">;<\/span> i<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> m <span class=\"sy0\">=<\/span> Store.<span class=\"me1\">Presence<\/span>.<span class=\"me1\">models<\/span><span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> id <span class=\"sy0\">=<\/span> <span class=\"st0\">'p'<\/span> <span class=\"sy0\">+<\/span> m.<span class=\"me1\">id<\/span>.<span class=\"me1\">slice<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">-<\/span><span class=\"nu0\">5<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> clientBox <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>clientBox <span class=\"sy0\">!==<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> img <span class=\"sy0\">=<\/span> clientBox.<span class=\"me1\">getElementsByTagName<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'img'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; img.<span class=\"me1\">classList<\/span>.<span class=\"me1\">remove<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOnline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>m.<span class=\"me1\">isOnline<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span>id <span class=\"sy0\">+<\/span> <span class=\"st0\">' is online'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; clientBox.<span class=\"me1\">parentNode<\/span>.<span class=\"me1\">prepend<\/span><span class=\"br0\">&#40;<\/span>clientBox<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; img.<span class=\"me1\">classList<\/span>.<span class=\"me1\">remove<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOffline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; img.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOnline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; img.<span class=\"me1\">classList<\/span>.<span class=\"me1\">remove<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOnline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; img.<span class=\"me1\">classList<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'isOffline'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">10000<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; \n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Let's setup the UI<\/span>\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ Small delay in case the script is executed from something like Tampermonkey<\/span>\n&#160; &#160; window.<span class=\"me1\">setTimeout<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; createDOM<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; setupEventListeners<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">500<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160;\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/440\/rev-raw\/f710ed2e54e7c2a75cd59197b74606821580fd48\/whatsapp_phone_enumerator_floated_div.js\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/440#whatsapp_phone_enumerator_floated_div.js\">whatsapp_phone_enumerator_floated_div.js<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
