{"injectedCode":"","isolatedCode":"/**\n * This file is part of Adblock Plus <https://adblockplus.org/>,\n * Copyright (C) 2006-present eyeo GmbH\n *\n * Adblock Plus is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * Adblock Plus is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n\"use strict\";function querySelector(e){return document.querySelector(e)}function evalXPath(e){return document.evaluate(e,document,null,XPathResult.ANY_TYPE,null).iterateNext()}function clickElement(e,t){setTimeout((()=>{if(e){if(e.click){e.click()}else{e.dispatchEvent(new Event(\"click\",{bubbles:true}))}}}),t)}function areAllElementsClicked(e){const t=(debug?log:()=>{}).bind(null,\"areAllElementsClicked\");let c=true;for(const t of e){if(t.click){c=c&&t.clicked}}t(c);return c}function clickElemsIfNecessary(e,t=0){let c=true;for(const l of e){let e;if(!l.found){if(l.xpath){e=evalXPath(l.selector)}else if(!l.xpath){e=querySelector(l.selector)}if(!e){c=false}else{l.found=true}}if(c&&l.click&&!l.clicked){l.clicked=true;clickElement(e,t)}}return areAllElementsClicked(e)}function shouldContinueMO(e){let t=false;for(const c of e){t=t||c.continue}return t}function resetAttributes(e){for(const t of e){t.clicked=false;t.found=false}}function createMO(e,t){const c=(debug?log:()=>{}).bind(null,\"createMO\");let l;const n=()=>{if(clickElemsIfNecessary(e,t)){c(\"element(s) clicked\");l.disconnect();if(shouldContinueMO(e)){resetAttributes(e);setTimeout((()=>{c(\"re-connectting observer\");l.observe(document,{attributes:true,childList:true,subtree:true})}),t+1)}}};l=new MutationObserver(n);l.observe(document,{attributes:true,childList:true,subtree:true})}function parseArg(e){if(!e){return null}const t={selector:\"\",xpath:false,continue:false,click:false,clicked:false,found:false};const c=e.split(\"$\");let l=[];if(c.length>=2){l=c[1].toLowerCase().split(\",\")}[t.selector]=c;for(const e of l){if(e===\"click\"){t.click=true}else if(e===\"xpath\"){t.xpath=true}else if(e===\"continue\"){t.continue=true}}return t}function specificClicker(...e){const t=(debug?log:()=>{}).bind(null,\"specificClicker\");const c=500;const l=7;t(e);let n=[];for(const t of e){const e=parseArg(t);if(e){n.push(e)}}if(n.length>l){n=n.slice(0,l)}const[i]=n.slice(-1);i.click=true;t(n);if(document.readyState===\"complete\"&&clickElemsIfNecessary(n,c)){t(\"element clicked, returning\")}else{t(\"creating MO\");createMO(n,c)}}snippets.specificClicker=specificClicker;\n","injectedList":""}