forked from Alarisco/WPlace-AutoBOTV2-GuardBOT
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAuto-Farm.js
More file actions
290 lines (284 loc) · 214 KB
/
Auto-Farm.js
File metadata and controls
290 lines (284 loc) · 214 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
/* WPlace AutoBOT — uso bajo tu responsabilidad. Compilado 2025-09-23T20:54:18.163Z */
/* eslint-env browser */
/* eslint-disable no-empty */
(()=>{var Ut=Object.defineProperty;var O=(o,e)=>()=>(o&&(e=o(o=0)),e);var nt=(o,e)=>{for(var t in e)Ut(o,t,{get:e[t],enumerable:!0})};var l,F=O(()=>{l=(...o)=>console.log("[WPA-UI]",...o)});async function ue(o,{timeout:e=1e4,...t}={}){let n=new AbortController,i=setTimeout(()=>n.abort("timeout"),e);try{return await fetch(o,{signal:n.signal,...t})}catch(s){if(s.name==="AbortError"||s.message==="timeout"){let r=new Error(`Request timeout after ${e}ms`);throw r.name="TimeoutError",r.timeout=e,r}throw s}finally{clearTimeout(i)}}var Ce=O(()=>{});function Te(o){k.setTurnstileToken(o),re=o,Pe=k.tokenExpiryTime}function at(){return k.isTokenValid()}function st(){return k.getCachedToken()}function ct(){k.invalidateToken(),re=null,Pe=0}async function V(o=!1){let e=await k.ensureToken(o);return re=e,Pe=k.tokenExpiryTime,qt=k.tokenGenerationInProgress,Ht=k.currentGenerationPromise,e}function z(){let o=k.getProtectionTokens();return pe=o.pawtect,o.pawtect}function D(){let o=k.getProtectionTokens();return X=o.fp,o.fp}async function ve(o=5e3){return await k.waitForPawtect(o)}var _e,k,re,pe,X,Ee,Pe,qt,Ht,Le=O(()=>{F();_e=class{constructor(){this.turnstileToken=null,this.tokenExpiryTime=0,this.tokenGenerationInProgress=!1,this.currentGenerationPromise=null,this._resolveToken=null,this.tokenPromise=new Promise(e=>{this._resolveToken=e}),this.TOKEN_LIFETIME=24e4,this.MAX_RETRIES=10,this.INITIAL_TIMEOUT=15e3,this.RETRY_INTERVAL=5e3,this._turnstileWidgetId=null,this._turnstileContainer=null,this._turnstileOverlay=null,this._lastSitekey=null,this._cachedSitekey=null,this.turnstileLoaded=!1,this.widgetPool=[],this.poolQueue=[],this.poolSize=2,this.poolInitialized=!1,this.metrics={tokensGenerated:0,avgGenerationTime:0,failures:0,retries:0,poolHits:0,poolMisses:0,cacheHits:0,cacheMisses:0},this._pawtectToken=window.__WPA_PAWTECT_TOKEN__||null,this._fp=window.__WPA_FINGERPRINT__||null,this._fpCandidate=window.__WPA_FP_CANDIDATE__||null,this._pawtectResolve=null,this._pawtectPromise=new Promise(e=>{this._pawtectResolve=e})}setTurnstileToken(e){this._resolveToken&&(this._resolveToken(e),this._resolveToken=null),this.turnstileToken=e,this.tokenExpiryTime=Date.now()+this.TOKEN_LIFETIME,this.metrics.tokensGenerated++,l("\u2705 Turnstile token set successfully");try{typeof window!="undefined"&&typeof window.dispatchEvent=="function"&&typeof window.CustomEvent=="function"&&window.dispatchEvent(new window.CustomEvent("turnstile:token",{detail:{token:e,expiry:this.tokenExpiryTime}}))}catch{}}isTokenValid(){return this.turnstileToken&&Date.now()<this.tokenExpiryTime}getCachedToken(){return this.isTokenValid()?(this.metrics.cacheHits++,this.turnstileToken):(this.metrics.cacheMisses++,null)}invalidateToken(){this.turnstileToken=null,this.tokenExpiryTime=0,l("\u{1F5D1}\uFE0F Token invalidated, will force fresh generation")}async ensureToken(e=!1){let t=Date.now();if(this.isTokenValid()&&!e)return this.turnstileToken;if(e&&this.invalidateToken(),this.tokenGenerationInProgress&&this.currentGenerationPromise){l("\u{1F504} Token generation already in progress, waiting for existing promise...");try{let n=await this.currentGenerationPromise;return n&&n.length>20?n:this.isTokenValid()?this.turnstileToken:null}catch{}}return this.tokenGenerationInProgress=!0,this.currentGenerationPromise=(async()=>{try{l("\u{1F504} Token expired or missing, generating new one...");let n=await this.handleCaptcha();if(n&&n.length>20){this.setTurnstileToken(n);let s=Date.now()-t;return this.metrics.avgGenerationTime=(this.metrics.avgGenerationTime+s)/2,n}l("\u26A0\uFE0F Invisible Turnstile failed, forcing browser automation...");let i=await this.handleCaptchaFallback();if(i&&i.length>20){this.setTurnstileToken(i);let s=Date.now()-t;return this.metrics.avgGenerationTime=(this.metrics.avgGenerationTime+s)/2,i}return this.metrics.failures++,l("\u274C All token generation methods failed"),null}finally{this.tokenGenerationInProgress=!1,this.currentGenerationPromise=null}})(),this.currentGenerationPromise}async handleCaptcha(){let e=Date.now();try{let t=this.detectSitekey();l("\u{1F511} Generating Turnstile token for sitekey:",t),typeof window!="undefined"&&window.navigator&&l("\u{1F9ED} UA:",window.navigator.userAgent,"Platform:",window.navigator.platform);let n=await this.executeTurnstile(t,"paint");if(n&&n.length>20){let i=Math.round(Date.now()-e);return l(`\u2705 Turnstile token generated successfully in ${i}ms`),n}else throw new Error("Invalid or empty token received")}catch(t){let n=Math.round(Date.now()-e);throw l(`\u274C Turnstile token generation failed after ${n}ms:`,t),t}}async loadTurnstile(){return window.turnstile?(this.turnstileLoaded=!0,Promise.resolve()):new Promise((e,t)=>{if(document.querySelector('script[src^="https://challenges.cloudflare.com/turnstile/v0/api.js"]')){let i=()=>{window.turnstile?(this.turnstileLoaded=!0,e()):setTimeout(i,100)};return i()}let n=document.createElement("script");n.src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit",n.async=!0,n.defer=!0,n.onload=()=>{this.turnstileLoaded=!0,l("\u2705 Turnstile script loaded successfully"),e()},n.onerror=()=>{l("\u274C Failed to load Turnstile script"),t(new Error("Failed to load Turnstile"))},document.head.appendChild(n)})}ensureTurnstileContainer(){return(!this._turnstileContainer||!document.body.contains(this._turnstileContainer))&&(this._turnstileContainer&&this._turnstileContainer.remove(),this._turnstileContainer=document.createElement("div"),this._turnstileContainer.style.cssText=`
position: fixed !important;
left: -9999px !important;
top: -9999px !important;
width: 300px !important;
height: 65px !important;
pointer-events: none !important;
opacity: 0 !important;
z-index: -1 !important;
`,this._turnstileContainer.setAttribute("aria-hidden","true"),this._turnstileContainer.id="turnstile-widget-container",document.body.appendChild(this._turnstileContainer)),this._turnstileContainer}ensureTurnstileOverlayContainer(){if(this._turnstileOverlay&&document.body.contains(this._turnstileOverlay))return this._turnstileOverlay;let e=document.createElement("div");e.id="turnstile-overlay-container",e.style.cssText=`
position: fixed;
right: 16px;
bottom: 16px;
width: 320px;
min-height: 80px;
background: rgba(0,0,0,0.7);
border: 1px solid rgba(255,255,255,0.2);
border-radius: 10px;
padding: 12px;
z-index: 100000;
backdrop-filter: blur(6px);
color: #fff;
box-shadow: 0 8px 24px rgba(0,0,0,0.4);
`;let t=document.createElement("div");t.textContent="Cloudflare Turnstile \u2014 please complete the check if shown",t.style.cssText='font: 600 12px/1.3 "Segoe UI",sans-serif; margin-bottom: 8px; opacity: 0.9;';let n=document.createElement("div");n.id="turnstile-overlay-host",n.style.cssText="width: 100%; min-height: 70px;";let i=document.createElement("button");return i.textContent="Hide",i.style.cssText="position:absolute; top:6px; right:6px; font-size:11px; background:transparent; color:#fff; border:1px solid rgba(255,255,255,0.2); border-radius:6px; padding:2px 6px; cursor:pointer;",i.addEventListener("click",()=>e.remove()),e.appendChild(t),e.appendChild(n),e.appendChild(i),document.body.appendChild(e),this._turnstileOverlay=e,e}async executeTurnstile(e,t="paint"){var r,a,c,g;if(await this.loadTurnstile(),this._turnstileWidgetId&&this._lastSitekey===e&&((r=window.turnstile)!=null&&r.execute))try{l("\u{1F504} Attempting to reuse existing Turnstile widget..."),(a=window.turnstile)!=null&&a.reset&&window.turnstile.reset(this._turnstileWidgetId);let u=await Promise.race([window.turnstile.execute(this._turnstileWidgetId,{action:t}),new Promise((d,p)=>setTimeout(()=>p(new Error("Execute timeout")),15e3))]);if(u&&u.length>20)return this._lastSitekey=e,l("\u2705 Widget reuse successful, token length:",u.length),u}catch(u){if(l("\u{1F504} Widget reuse failed, will create a fresh widget:",u.message),this._turnstileWidgetId&&((c=window.turnstile)!=null&&c.remove)){try{window.turnstile.remove(this._turnstileWidgetId)}catch{}this._turnstileWidgetId=null}}let n=await this.createNewTurnstileWidgetInvisible(e,t);if(n&&n.length>20)return n;l("\u{1F440} Falling back to interactive Turnstile (visible).");try{this.showUserNotificationTopCenter("\u{1F504} Resolviendo CAPTCHA...","info")}catch{}let i=1,s=!1;for(;;){let u=i===1?this.INITIAL_TIMEOUT:this.RETRY_INTERVAL;l(`\u{1F504} Intento ${i} de resoluci\xF3n del CAPTCHA (timeout: ${u/1e3}s)...`),i>1&&!s?(this.showUserNotification(`\u{1F504} CAPTCHA: Reintentando autom\xE1ticamente cada 5 segundos (intento ${i})`,"info"),s=!0):i>2&&this.showUserNotification(`\u{1F504} CAPTCHA: Intento ${i} - Continuando autom\xE1ticamente`,"info");try{if(this._turnstileWidgetId&&((g=window.turnstile)!=null&&g.remove)){try{window.turnstile.remove(this._turnstileWidgetId)}catch{}this._turnstileWidgetId=null}let d=await this.createNewTurnstileWidgetInteractiveWithRetry(e,t,!0,u);if(d&&d.length>20)return l(`\u2705 CAPTCHA resuelto exitosamente en el intento ${i}`),i>1&&this.showUserNotification("\u2705 CAPTCHA resuelto exitosamente","success"),d;l(`\u26A0\uFE0F Intento ${i} fall\xF3, reintentando en 5 segundos...`),i>1&&this.showUserNotification(`\u26A0\uFE0F Intento ${i} fall\xF3, reintentando en 5 segundos...`,"info"),await this.sleep(5e3)}catch(d){l(`\u274C Error en intento ${i}:`,d.message),i>1&&this.showUserNotification(`\u274C Error en intento ${i}, reintentando en 5 segundos`,"error"),await this.sleep(5e3)}i++,this.metrics.retries++}}async createNewTurnstileWidgetInvisible(e,t){return new Promise(n=>{var i;try{this._turnstileWidgetId&&((i=window.turnstile)!=null&&i.remove)&&window.turnstile.remove(this._turnstileWidgetId);let s=this.ensureTurnstileContainer();s.innerHTML="",this._turnstileWidgetId=window.turnstile.render(s,{sitekey:e,action:t,size:"compact",theme:"light",callback:r=>{this._lastSitekey=e,l("\u{1F3AF} Compact Turnstile callback success, token length:",r==null?void 0:r.length),n(r)},"error-callback":()=>{l("\u274C Compact Turnstile error callback"),n(null)},"timeout-callback":()=>{l("\u23F0 Compact Turnstile timeout callback"),n(null)},"expired-callback":()=>{l("\u{1F480} Compact Turnstile expired callback"),n(null)}}),setTimeout(()=>n(null),1e4)}catch(s){l("\u274C Error creating compact Turnstile widget:",s),n(null)}})}async createNewTurnstileWidgetInteractiveWithRetry(e,t,n=!0,i=3e4){return new Promise((s,r)=>{var a;try{this._turnstileWidgetId&&((a=window.turnstile)!=null&&a.remove)&&window.turnstile.remove(this._turnstileWidgetId);let c=this.ensureTurnstileOverlayContainer(),g=c.querySelector("#turnstile-overlay-host");g.innerHTML="",c.style.display="block",c.classList.remove("wplace-overlay-hidden"),this._turnstileWidgetId=window.turnstile.render(g,{sitekey:e,action:t,theme:"auto",callback:u=>{this._lastSitekey=e,l("\u{1F3AF} Interactive Turnstile callback success, token length:",u==null?void 0:u.length),c.style.display="none",s(u)},"error-callback":()=>{l("\u274C Interactive Turnstile error callback"),c.style.display="none",s(null)},"timeout-callback":()=>{l("\u23F0 Interactive Turnstile timeout callback"),c.style.display="none",s(null)},"expired-callback":()=>{l("\u{1F480} Interactive Turnstile expired callback"),c.style.display="none",s(null)}}),setTimeout(()=>{c.style.display="none",s(null)},i)}catch(c){l("\u274C Error creating interactive Turnstile widget:",c),s(null)}})}detectSitekey(e="0x4AAAAAABpqJe8FO0N84q0F"){var t;if(this._cachedSitekey)return this._cachedSitekey;try{let n=document.querySelector("[data-sitekey]");if(n){let r=n.dataset.sitekey||n.getAttribute("data-sitekey");if(r&&r.length>10)return l("\u{1F50D} Sitekey found in data attribute:",r),this._cachedSitekey=r,r}let i=document.querySelector(".cf-turnstile");if((t=i==null?void 0:i.dataset)!=null&&t.sitekey&&i.dataset.sitekey.length>10)return l("\u{1F50D} Sitekey found in turnstile element:",i.dataset.sitekey),this._cachedSitekey=i.dataset.sitekey,i.dataset.sitekey;if(typeof window!="undefined"&&window.__TURNSTILE_SITEKEY&&window.__TURNSTILE_SITEKEY.length>10)return l("\u{1F50D} Sitekey found in global variable:",window.__TURNSTILE_SITEKEY),this._cachedSitekey=window.__TURNSTILE_SITEKEY,window.__TURNSTILE_SITEKEY;let s=document.querySelectorAll("script");for(let r of s){let c=(r.textContent||r.innerHTML).match(/['"](0x4[A-Za-z0-9_-]{20,})['"]/);if(c&&c[1])return l("\u{1F50D} Sitekey found in script:",c[1]),this._cachedSitekey=c[1],c[1]}}catch(n){l("Error detecting sitekey:",n)}return l("\u{1F50D} Using fallback sitekey:",e),this._cachedSitekey=e,e}async handleCaptchaFallback(){return new Promise((e,t)=>{(async()=>{try{l("\u{1F504} Starting fallback automation flow..."),l("\u26A0\uFE0F Fallback automation not implemented in enhanced version"),e(null)}catch(i){l("\u274C Fallback automation failed:",i),e(null)}})()})}sleep(e){return new Promise(t=>setTimeout(t,e))}showUserNotification(e,t="info"){this.showUserNotificationTopCenter(e,t)}showUserNotificationTopCenter(e,t="info",n=3e3){let i=document.getElementById("wplace-toast-container");i||(i=document.createElement("div"),i.id="wplace-toast-container",i.style.cssText=`
position: fixed;
top: 16px;
left: 50%;
transform: translateX(-50%);
z-index: 2147483647;
display: flex;
flex-direction: column;
gap: 8px;
pointer-events: none;
`,document.body.appendChild(i));let s=t==="success"?"#10b981":t==="error"?"#ef4444":"#3b82f6",r=document.createElement("div");r.className="wplace-toast",r.textContent=e,r.style.cssText=`
min-width: 240px;
max-width: 80vw;
margin: 0 auto;
background: ${s};
color: white;
border-radius: 10px;
box-shadow: 0 8px 24px rgba(0,0,0,0.35);
padding: 10px 14px;
font-weight: 600;
letter-spacing: .2px;
transform: translateY(-10px) scale(0.98);
opacity: 0;
transition: transform .25s cubic-bezier(0.2, 0.8, 0.2, 1), opacity .25s ease;
pointer-events: auto;
`,i.appendChild(r),(g=>typeof window!="undefined"&&window.requestAnimationFrame?window.requestAnimationFrame(g):setTimeout(g,16))(()=>{r.style.transform="translateY(0) scale(1)",r.style.opacity="1"});let c=()=>{r.style.transform="translateY(-10px) scale(0.98)",r.style.opacity="0",setTimeout(()=>r.remove(),250)};n>0&&setTimeout(c,n),r.addEventListener("click",c)}getProtectionTokens(){return this._pawtectToken=window.__WPA_PAWTECT_TOKEN__||this._pawtectToken,this._fp=window.__WPA_FINGERPRINT__||this._fp,this._fpCandidate=window.__WPA_FP_CANDIDATE__||this._fpCandidate,{pawtect:this._pawtectToken,fp:this._fp,fpCandidate:this._fpCandidate}}async waitForPawtect(e=5e3){if(this._pawtectToken&&this._fp)return{pawtect:this._pawtectToken,fp:this._fp};let t=setTimeout(()=>{this._pawtectResolve&&this._pawtectResolve({pawtect:this._pawtectToken,fp:this._fp})},e),n=await this._pawtectPromise.catch(()=>({pawtect:this._pawtectToken,fp:this._fp}));return clearTimeout(t),this._pawtectResolve||(this._pawtectPromise=new Promise(i=>{this._pawtectResolve=i})),n}getMetrics(){let e=this.metrics.cacheHits/Math.max(1,this.metrics.cacheHits+this.metrics.cacheMisses),t=this.metrics.poolHits/Math.max(1,this.metrics.poolHits+this.metrics.poolMisses);return{...this.metrics,cacheHitRate:e,poolHitRate:t,failureRate:this.metrics.failures/Math.max(1,this.metrics.tokensGenerated+this.metrics.failures)}}},k=new _e,re=null,pe=null,X=null,Ee=null,Pe=0,qt=!1,Ht=null;window.__WPA_SET_TURNSTILE_TOKEN__=function(o){o&&typeof o=="string"&&o.length>20&&(l("\u2705 Turnstile Token Captured:",o),Te(o))};window.addEventListener("message",o=>{var t;let e=o==null?void 0:o.data;if(e){if(e.source==="turnstile-capture"&&e.token){(!at()||re!==e.token)&&Te(e.token);return}if(e.__wplace===!0&&e.type==="token_found"){e.token&&(!at()||re!==e.token)&&Te(e.token),e.xpaw&&(!pe||pe!==e.xpaw)&&(pe=e.xpaw,window.__WPA_PAWTECT_TOKEN__=e.xpaw,k._pawtectToken=e.xpaw,l("[turnstile] pawtect token updated:",e.xpaw.substring(0,20)+"...")),e.fp&&(!X||X!==e.fp)&&(X=e.fp,window.__WPA_FINGERPRINT__=e.fp,k._fp=e.fp,l("[turnstile] fingerprint updated:",e.fp.substring(0,20)+"..."));return}try{let n=typeof e=="object"&&typeof e.fp=="string"&&e.fp.length>10?e.fp:null;n&&(!X||X!==n)&&(X=n,window.__WPA_FINGERPRINT__=n,k._fp=n,l("[turnstile] fingerprint from message:",n.substring(0,20)+"..."))}catch{}try{let n=typeof e=="object"&&(e.pi||(t=e.payload)!=null&&t.pi)?e.pi||e.payload.pi:null;if(n&&typeof n=="object"&&(n.xp||n.pfp||n.ffp)){let i=JSON.stringify(n);(!Ee||Ee!==i)&&(Ee=i,window.__WPA_FP_CANDIDATE__=i,k._fpCandidate=i,l("[turnstile] fp candidate from pi:",i.substring(0,50)+"..."))}}catch{}}})});function Yt(){try{let o=document.createElement("canvas"),e=o.getContext("2d");return e?(o.width=200,o.height=40,e.textBaseline="top",e.font='14px "Arial"',e.fillStyle="#f60",e.fillRect(0,0,200,40),e.fillStyle="#069",e.fillText("wplace-fp-canvas",2,2),e.strokeStyle="#ff0",e.beginPath(),e.arc(100,20,18,0,Math.PI*2),e.stroke(),o.toDataURL().slice(0,64)):"nocanvas"}catch{return"nocanvas"}}function Gt(){try{let o=document.createElement("canvas"),e=o.getContext("webgl")||o.getContext("experimental-webgl");if(!e)return"nowebgl";let t=e.getExtension("WEBGL_debug_renderer_info"),n=t?e.getParameter(t.UNMASKED_VENDOR_WEBGL):e.getParameter(e.VENDOR),i=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);return n+"|"+i}catch{return"nowebgl"}}function jt(o){let e=2166136261;for(let t=0;t<o.length;t++)e^=o.charCodeAt(t),e=e+((e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24))>>>0;return("00000000"+e.toString(16)).slice(-8)}async function Xt(o){var e;if(typeof window!="undefined"&&((e=window.crypto)!=null&&e.subtle))try{let t=typeof window!="undefined"&&window.TextEncoder?window.TextEncoder:null,n=t?new t().encode(o):new Uint8Array([...unescape(encodeURIComponent(o))].map(s=>s.charCodeAt(0))),i=await window.crypto.subtle.digest("SHA-256",n);return Array.from(new Uint8Array(i)).map(s=>s.toString(16).padStart(2,"0")).join("")}catch{}return jt(o)}function Vt(){let o=typeof window!="undefined"&&window.navigator?window.navigator:{},e=typeof window!="undefined"&&window.screen?window.screen:{},t=typeof Intl!="undefined"&&Intl.DateTimeFormat&&Intl.DateTimeFormat().resolvedOptions().timeZone||"";return{ua:o.userAgent||"",plat:o.platform||"",lang:(o.languages||[]).join(",")||o.language||"",cores:o.hardwareConcurrency||0,mem:o.deviceMemory||0,width:e.width||0,height:e.height||0,depth:e.colorDepth||0,tz:t,canvas:Yt(),webgl:Gt()}}async function Se({force:o=!1}={}){return J&&!o?J:ie||(ie=(async()=>{try{let e=Vt(),t=Object.keys(e).sort().map(i=>i+":"+e[i]).join("|");J="fp:"+(await Xt(t)).slice(0,64);try{window.__WPA_FINGERPRINT__=J}catch{}return l("[fp] generado len="+J.length),J}finally{ie=null}})(),ie)}var J,ie,lt=O(()=>{F();J=null,ie=null});async function Q(o,e={}){return await dt.computePawtect(o,e)}var Ie,dt,ut=O(()=>{F();Ie=class{constructor(){this._wasmMod=null,this._wasm=null,this._chunkUrl=null,this._initUser=!1,this._busy=!1,this._cache=new Map,this.CACHE_TTL=12e4,this._cacheCleanupInterval=null,this.MAX_RETRIES=3,this.RETRY_DELAY_BASE=1e3,this.CHUNK_DISCOVERY_TIMEOUT=1e4,this.WASM_LOAD_TIMEOUT=15e3,this.metrics={computations:0,cacheHits:0,cacheMisses:0,errors:0,retries:0,avgComputeTime:0,wasmLoadTime:0,chunkDiscoveryTime:0},this.errorHistory=[],this.MAX_ERROR_HISTORY=50,this._initializeCacheCleanup(),l("[pawtect] Enhanced PawtectManager initialized")}_initializeCacheCleanup(){typeof window!="undefined"&&typeof window.setInterval=="function"&&(this._cacheCleanupInterval=window.setInterval(()=>{this._cleanupExpiredCache()},6e4))}_cleanupExpiredCache(){let e=Date.now(),t=0;for(let[n,i]of this._cache.entries())e-i.ts>this.CACHE_TTL&&(this._cache.delete(n),t++);t>0&&l(`[pawtect] Cleaned ${t} expired cache entries`)}_validateAndNormalizeInput(e){if(!e||typeof e!="object")throw new Error("Invalid bodyObj: must be a non-null object");try{return JSON.stringify(e,Object.keys(e).sort())}catch(t){throw l("[pawtect] Error serializing bodyObj:",t),new Error("Failed to serialize bodyObj to JSON")}}async _discoverChunkAdvanced(){if(this._chunkUrl)return this._chunkUrl;let e=Date.now();try{if(typeof document=="undefined")return null;let t=[()=>this._discoverFromScriptTags(),()=>this._discoverFromLinks(),()=>this._discoverFromPerformanceAPI()];for(let n of t)try{let i=await Promise.race([n(),new Promise((s,r)=>setTimeout(()=>r(new Error("Strategy timeout")),3e3))]);if(i)return this._chunkUrl=i,this.metrics.chunkDiscoveryTime=Date.now()-e,l("[pawtect] chunk encontrado con estrategia avanzada:",i),i}catch(i){l("[pawtect] strategy failed:",i.message)}}catch(t){l("[pawtect] chunk discovery failed:",t)}return this.metrics.chunkDiscoveryTime=Date.now()-e,null}async _discoverFromScriptTags(){var t;let e=new Set;try{(t=document.querySelectorAll("script[src]"))==null||t.forEach(n=>{try{typeof window!="undefined"&&window.URL&&window.location&&e.add(new window.URL(n.src,window.location.href).href)}catch{}})}catch{}return this._testUrlCandidates([...e])}async _discoverFromLinks(){var t;let e=new Set;try{(t=document.querySelectorAll('link[rel="modulepreload"][href],link[as="script"][href]'))==null||t.forEach(n=>{try{typeof window!="undefined"&&window.URL&&window.location&&e.add(new window.URL(n.href,window.location.href).href)}catch{}})}catch{}return this._testUrlCandidates([...e])}async _discoverFromPerformanceAPI(){let e=new Set;try{typeof window!="undefined"&&window.performance&&(window.performance.getEntriesByType("resource")||[]).forEach(t=>{t!=null&&t.name&&e.add(t.name)})}catch{}return this._testUrlCandidates([...e])}async _testUrlCandidates(e){let t=e.filter(n=>/\/(_app|assets)\/immutable\/chunks\/.*\.js/i.test(n));for(let n of t)try{let s=await(await Promise.race([fetch(n,{credentials:"omit"}),new Promise((r,a)=>setTimeout(()=>a(new Error("Fetch timeout")),5e3))])).text();if(/get_pawtected_endpoint_payload|pawtect/i.test(s))return n}catch(i){l("[pawtect] failed to test candidate:",n,i.message)}return null}async _loadWasmEnhanced(){if(this._wasm)return this._wasm;let e=Date.now();try{let t=await Promise.race([this._discoverChunkAdvanced(),new Promise((i,s)=>setTimeout(()=>s(new Error("Chunk discovery timeout")),this.CHUNK_DISCOVERY_TIMEOUT))]);if(!t)return l("[pawtect] no se encontr\xF3 chunk despu\xE9s de b\xFAsqueda avanzada"),null;let n=await Promise.race([import(t),new Promise((i,s)=>setTimeout(()=>s(new Error("WASM import timeout")),this.WASM_LOAD_TIMEOUT))]);if(typeof n._=="function")return this._wasmMod=n,this._wasm=await n._(),this.metrics.wasmLoadTime=Date.now()-e,l("[pawtect] wasm cargado exitosamente en",this.metrics.wasmLoadTime,"ms"),this._wasm;throw new Error("WASM module does not have expected interface")}catch(t){return this.metrics.wasmLoadTime=Date.now()-e,this._recordError("WASM load failed",t),l("[pawtect] error cargando wasm:",t.message),null}}_maybeInitUser(e){if(!(!this._wasmMod||this._initUser))try{if(e!=null&&e.id)if(typeof this._wasmMod.i=="function")this._wasmMod.i(e.id),this._initUser=!0,l("[pawtect] user initialized with function:",e.id);else if(typeof this._wasmMod.i=="object"&&this._wasmMod.i.constructor)try{new this._wasmMod.i(e.id),this._initUser=!0,l("[pawtect] user initialized with class:",e.id)}catch(t){l("[pawtect] class instantiation failed, trying alternative methods:",t.message),this._tryAlternativeUserInit(e)}else l("[pawtect] user initialization skipped - no valid method found")}catch(t){l("[pawtect] user initialization failed:",t.message)}}_tryAlternativeUserInit(e){try{this._wasmMod.initUser&&typeof this._wasmMod.initUser=="function"?(this._wasmMod.initUser(e.id),this._initUser=!0,l("[pawtect] user initialized with initUser:",e.id)):this._wasmMod.init&&typeof this._wasmMod.init=="function"?(this._wasmMod.init(e.id),this._initUser=!0,l("[pawtect] user initialized with init:",e.id)):(this._initUser=!0,l("[pawtect] user initialization skipped - marking as done to avoid retries"))}catch(t){this._initUser=!0,l("[pawtect] alternative user initialization failed:",t.message)}}async _getUserWithRetry(){for(let e=0;e<3;e++)try{let t=await Promise.race([fetch("https://backend.wplace.live/me",{credentials:"include"}),new Promise((n,i)=>setTimeout(()=>i(new Error("User fetch timeout")),5e3))]);if(t.ok)return await t.json()}catch(t){l(`[pawtect] user fetch attempt ${e+1} failed:`,t.message),e<2&&await new Promise(n=>setTimeout(n,1e3*(e+1)))}return null}_recordError(e,t){let n={timestamp:Date.now(),context:e,message:t.message,stack:t.stack};this.errorHistory.push(n),this.errorHistory.length>this.MAX_ERROR_HISTORY&&this.errorHistory.shift(),this.metrics.errors++}async computePawtect(e,{force:t=!1}={}){var i;let n=Date.now();try{let s=this._validateAndNormalizeInput(e),r=s,a=Date.now();if(!t&&this._cache.has(r)){let c=this._cache.get(r);if(a-c.ts<this.CACHE_TTL)return this.metrics.cacheHits++,l("[pawtect] cache hit, token length:",((i=c.token)==null?void 0:i.length)||0),c.token;this._cache.delete(r)}if(this.metrics.cacheMisses++,this._busy&&(await new Promise(c=>setTimeout(c,150+Math.random()*100)),!t&&this._cache.has(r))){let c=this._cache.get(r);if(a-c.ts<this.CACHE_TTL)return this.metrics.cacheHits++,c.token}return await this._computeWithRetry(s,r,n)}catch(s){this._recordError("computePawtect",s);let r=Date.now()-n;return l("[pawtect] computation failed after",r,"ms:",s.message),null}}async _computeWithRetry(e,t,n){let i=null;for(let s=0;s<this.MAX_RETRIES;s++){this._busy=!0;try{let r=await this._performComputation(e);if(r){this._cache.set(t,{token:r,ts:Date.now()});try{window.__WPA_PAWTECT_TOKEN__=r}catch{}this.metrics.computations++;let a=Date.now()-n;return this.metrics.avgComputeTime=(this.metrics.avgComputeTime*(this.metrics.computations-1)+a)/this.metrics.computations,l("[pawtect] token calculado exitosamente, len=",r.length,"duration=",a,"ms"),r}throw new Error("No token generated from WASM")}catch(r){if(i=r,this.metrics.retries++,l(`[pawtect] attempt ${s+1} failed:`,r.message),s<this.MAX_RETRIES-1){let a=this.RETRY_DELAY_BASE*Math.pow(2,s);l(`[pawtect] retrying in ${a}ms...`),await new Promise(c=>setTimeout(c,a))}}finally{this._busy=!1}}return this._recordError("All computation attempts failed",i),null}async _performComputation(e){let t=await this._loadWasmEnhanced();if(!t||typeof t.get_pawtected_endpoint_payload!="function")throw new Error("WASM not available or missing function");if(!this._initUser){let c=await this._getUserWithRetry();this._maybeInitUser(c)}let n=typeof window!="undefined"&&window.TextEncoder?new window.TextEncoder:{encode:c=>new Uint8Array([...unescape(encodeURIComponent(c))].map(g=>g.charCodeAt(0)))},i=typeof window!="undefined"&&window.TextDecoder?new window.TextDecoder:{decode:c=>decodeURIComponent(escape(String.fromCharCode(...c)))},s=c=>{if(!c)return null;if(typeof c=="string")return c;if(Array.isArray(c)&&c.length>=2){let[g,u]=c,d=new Uint8Array(t.memory.buffer,g,u),p=i.decode(d);try{t.__wbindgen_free&&(t.__wbindgen_free.length>=2?t.__wbindgen_free(g,u):t.__wbindgen_free(g))}catch{}return p}if(typeof c=="object"&&typeof c.ptr=="number"&&typeof c.len=="number"){let g=new Uint8Array(t.memory.buffer,c.ptr,c.len),u=i.decode(g);try{t.__wbindgen_free&&(t.__wbindgen_free.length>=2?t.__wbindgen_free(c.ptr,c.len):t.__wbindgen_free(c.ptr))}catch{}return u}return null};try{let c=t.get_pawtected_endpoint_payload(e),g=s(c);if(g&&typeof g=="string"&&g.length>0)return g}catch{}let r=n.encode(e),a=null;try{if(typeof t.__wbindgen_malloc=="function")try{a=t.__wbindgen_malloc(r.length)}catch{a=t.__wbindgen_malloc(r.length,1)}if(!a||typeof a!="number"||a<=0)throw new Error("Failed to allocate WASM memory");let c=a+r.length;if(c>t.memory.buffer.byteLength&&typeof t.memory.grow=="function"){let p=c-t.memory.buffer.byteLength,y=Math.ceil(p/65536);if(y>0)try{t.memory.grow(y)}catch{}}new Uint8Array(t.memory.buffer,a,r.length).set(r);let g=t.get_pawtected_endpoint_payload(a,r.length);return s(g)}catch(c){throw new Error(`WASM computation failed: ${c.message}`)}finally{if(a)try{typeof t.__wbindgen_free=="function"&&(t.__wbindgen_free.length>=2?t.__wbindgen_free(a,r.length):t.__wbindgen_free(a))}catch{}}}async seedPawtect(){try{l("[pawtect] seeding computation..."),await this.computePawtect({colors:[0],coords:[1,1],t:"seed",fp:"seed"},{force:!0}),l("[pawtect] seed computation completed")}catch(e){l("[pawtect] seed computation failed:",e)}}getMetrics(){let e=this._cache.size,t=this.metrics.cacheHits/Math.max(1,this.metrics.cacheHits+this.metrics.cacheMisses),n=this.metrics.errors/Math.max(1,this.metrics.computations+this.metrics.errors);return{...this.metrics,cacheSize:e,cacheHitRate:t,errorRate:n,recentErrors:this.errorHistory.slice(-5)}}clearCache(){let e=this._cache.size;this._cache.clear(),l(`[pawtect] cache cleared, removed ${e} entries`)}cleanup(){this._cacheCleanupInterval&&typeof window!="undefined"&&typeof window.clearInterval=="function"&&(window.clearInterval(this._cacheCleanupInterval),this._cacheCleanupInterval=null),this._cache.clear(),this._wasm=null,this._wasmMod=null,this._chunkUrl=null,l("[pawtect] cleanup completed")}},dt=new Ie;typeof window!="undefined"&&typeof window.setTimeout=="function"&&window.setTimeout(()=>{dt.seedPawtect()},1e3)});async function ee(o){if(!o)return{ok:!1,status:0,json:{},text:"",parseError:"no-response"};let e=o.status,t="";try{t=await o.text()}catch(n){return{ok:o.ok,status:e,json:{},text:"",parseError:n.message}}if(!t)return{ok:o.ok,status:e,json:{},text:""};try{let n=JSON.parse(t);return{ok:o.ok,status:e,json:n,text:t}}catch(n){return{ok:o.ok,status:e,json:{},text:t,parseError:n.message}}}var pt=O(()=>{});var gt={};nt(gt,{checkHealth:()=>Ae,downloadAndExecuteBot:()=>Kt,getSession:()=>ae,postPixel:()=>Zt,postPixelBatchImage:()=>Re,purchaseProduct:()=>ke});async function ae(){var o,e,t,n;try{let i=await fetch(`${$}/me`,{credentials:"include"}).then(g=>g.json()),s=i||null,r=(i==null?void 0:i.charges)||{},a=(o=i==null?void 0:i.droplets)!=null?o:0,c={count:(e=r.count)!=null?e:0,max:(t=r.max)!=null?t:0,cooldownMs:(n=r.cooldownMs)!=null?n:3e4};return{success:!0,data:{user:s,charges:c.count,maxCharges:c.max,chargeRegen:c.cooldownMs,droplets:a}}}catch(i){return{success:!1,error:i.message,data:{user:null,charges:0,maxCharges:0,chargeRegen:3e4,droplets:0}}}}async function Ae(){try{let o=await fetch(`${$}/health`,{method:"GET",credentials:"include"});return o.ok?{...await o.json(),lastCheck:Date.now(),status:"online"}:{database:!1,up:!1,uptime:"N/A",lastCheck:Date.now(),status:"error",statusCode:o.status}}catch(o){return{database:!1,up:!1,uptime:"N/A",lastCheck:Date.now(),status:"offline",error:o.message}}}async function ke(o=70,e=1){try{let t=JSON.stringify({product:{id:o,amount:e}}),n=await ue(`${$}/purchase`,{method:"POST",headers:{"Content-Type":"text/plain;charset=UTF-8"},body:t,credentials:"include",timeout:15e3}),i={};try{i=await n.json()}catch{i={}}return{success:n.ok,status:n.status,json:i}}catch(t){return{success:!1,status:0,json:{error:t.message}}}}async function Zt(o,e,t,n,i){try{let s=C=>{if(!Array.isArray(C))return[];let L=[];if(C.length>0&&typeof C[0]=="number"){for(let _=0;_<C.length;_+=2){let w=Math.trunc(C[_]),b=Math.trunc(C[_+1]);Number.isFinite(w)&&Number.isFinite(b)&&L.push((w%1e3+1e3)%1e3,(b%1e3+1e3)%1e3)}return L}if(typeof C[0]=="object"&&C[0]&&("x"in C[0]||"y"in C[0])){for(let _ of C){let w=Math.trunc(_==null?void 0:_.x),b=Math.trunc(_==null?void 0:_.y);Number.isFinite(w)&&Number.isFinite(b)&&L.push((w%1e3+1e3)%1e3,(b%1e3+1e3)%1e3)}return L}if(Array.isArray(C[0])){for(let _ of C){let w=Math.trunc(_==null?void 0:_[0]),b=Math.trunc(_==null?void 0:_[1]);Number.isFinite(w)&&Number.isFinite(b)&&L.push((w%1e3+1e3)%1e3,(b%1e3+1e3)%1e3)}return L}return L},r=C=>Array.isArray(C)?C.map(L=>Math.trunc(Number(L))||0):[],a=s(o),c=r(e);if(a.length===0||c.length===0||a.length/2!==c.length)return{status:400,json:{error:"Invalid coords/colors format"},success:!1};let g=D();if(!g)try{g=await Se({})}catch{}let u=z();if(!u)try{let C=await Q({colors:c,coords:a,t,...g?{fp:g}:{}});C&&(u=C)}catch{}if(!g||!u){try{await ve(1500)}catch{}if(u||(u=z()),g||(g=D()),!u)try{let C=await Q({colors:c,coords:a,t,...g?{fp:g}:{}});C&&(u=C)}catch{}}let d=JSON.stringify({colors:c,coords:a,t,...g?{fp:g}:{}}),p=new AbortController,y=setTimeout(()=>p.abort(),2e4),f=await fetch(`${$}/s0/pixel/${n}/${i}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...u?{"x-pawtect-token":u}:{}},body:d,signal:p.signal});if(clearTimeout(y),f.status===403){try{await f.json()}catch{}console.error("\u274C 403 Forbidden. Turnstile token might be invalid or expired.");try{console.log("\u{1F504} Regenerating Turnstile token after 403...");let C=await V(!0);if(u=z(),g=D(),!u)try{let v=await Q({colors:c,coords:a,t:C,...g?{fp:g}:{}});v&&(u=v)}catch{}let L=JSON.stringify({colors:c,coords:a,t:C,...g?{fp:g}:{}}),_=new AbortController,w=setTimeout(()=>_.abort(),2e4),b=await fetch(`${$}/s0/pixel/${n}/${i}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...u?{"x-pawtect-token":u}:{}},body:L,signal:_.signal});if(clearTimeout(w),b.status===403)return{status:403,json:{error:"Fresh token expired or invalid after retry"},success:!1};let E=null;try{let v=await b.text();v&&(E=JSON.parse(v))}catch{E={}}return{status:b.status,json:E,success:b.ok}}catch(C){return console.error("\u274C Token regeneration failed:",C),{status:403,json:{error:"Token regeneration failed"},success:!1}}}if(f.status>=500&&f.status<=504)try{let C=await V(!0);if(u=z(),g=D(),!u)try{let v=await Q({colors:c,coords:a,t:C,...g?{fp:g}:{}});v&&(u=v)}catch{}let L=JSON.stringify({colors:c,coords:a,t:C,...g?{fp:g}:{}}),_=new AbortController,w=setTimeout(()=>_.abort(),2e4),b=await fetch(`${$}/s0/pixel/${n}/${i}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...u?{"x-pawtect-token":u}:{}},body:L,signal:_.signal});clearTimeout(w);let E=await ee(b);if(b.ok)try{ct()}catch{}return{status:b.status,json:E.json,success:b.ok}}catch{}let P=await ee(f);return{status:f.status,json:P.json,success:f.ok}}catch(s){return s.name==="AbortError"||s.name==="TimeoutError"?{status:408,json:{error:"Request timeout"},success:!1}:{status:0,json:{error:s.message},success:!1}}}async function Re(o,e,t,n,i){var s,r,a;try{let c=w=>{if(!Array.isArray(w))return[];let b=[];if(w.length>0&&typeof w[0]=="number"){for(let E=0;E<w.length;E+=2){let v=Math.trunc(w[E]),I=Math.trunc(w[E+1]);Number.isFinite(v)&&Number.isFinite(I)&&b.push((v%1e3+1e3)%1e3,(I%1e3+1e3)%1e3)}return b}if(typeof w[0]=="object"&&w[0]&&("x"in w[0]||"y"in w[0])){for(let E of w){let v=Math.trunc(E==null?void 0:E.x),I=Math.trunc(E==null?void 0:E.y);Number.isFinite(v)&&Number.isFinite(I)&&b.push((v%1e3+1e3)%1e3,(I%1e3+1e3)%1e3)}return b}if(Array.isArray(w[0])){for(let E of w){let v=Math.trunc(E==null?void 0:E[0]),I=Math.trunc(E==null?void 0:E[1]);Number.isFinite(v)&&Number.isFinite(I)&&b.push((v%1e3+1e3)%1e3,(I%1e3+1e3)%1e3)}return b}return b},g=w=>Array.isArray(w)?w.map(b=>Math.trunc(Number(b))||0):[],u=c(t),d=g(n);if(u.length===0||d.length===0||u.length/2!==d.length)return l(`[API] Invalid coords/colors for tile ${o},${e} \u2192 coordsPairs=${u.length/2} colors=${d.length}`),{status:400,json:{error:"Invalid coords/colors format"},success:!1,painted:0};let p=D();if(!p)try{p=await Se({})}catch{}let y=null;try{let w={colors:n,coords:t,t:i||"seed",...p?{fp:p}:{fp:"seed"}},b=await Q(w);b?y=b:y=z()}catch{y=z()}if(!p){try{await ve(1200)}catch{}p=D()}let f=JSON.stringify({colors:d,coords:u,t:i,...p?{fp:p}:{}}),P="";try{let w=2166136261;for(let b=0;b<f.length;b++)w^=f.charCodeAt(b),w=Math.imul(w,16777619);P=("00000000"+(w>>>0).toString(16)).slice(-8)}catch{}l(`[API] Sending batch to tile ${o},${e} with ${n.length} pixels, token: ${i?i.substring(0,50)+"...":"null"}`),l(`[API] postPixelBatchImage include: pawtect=${!!y} fp=${!!p} bodyHash=${P}`);let C=await fetch(`${$}/s0/pixel/${o}/${e}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...y?{"x-pawtect-token":y}:{}},body:f});if(l(`[API] Response: ${C.status} ${C.statusText}`),C.status===403){try{await C.json()}catch{}console.error("\u274C 403 Forbidden. Turnstile token might be invalid or expired.");try{console.log("\u{1F504} Regenerating Turnstile token after 403...");let w=await V(!0);if(y=z(),p=D(),!w)return{status:403,json:{error:"Could not generate new token"},success:!1,painted:0};let b=JSON.stringify({colors:d,coords:u,t:w,...p?{fp:p}:{}});l(`[API] Retrying with fresh token: ${w.substring(0,50)}...`);let E=await fetch(`${$}/s0/pixel/${o}/${e}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...y?{"x-pawtect-token":y}:{}},body:b});if(l(`[API] Retry response: ${E.status} ${E.statusText}`),E.status===403)return{status:403,json:{error:"Fresh token still expired or invalid after retry"},success:!1,painted:0};let v=await ee(E),I=((s=v.json)==null?void 0:s.painted)||0;return l(`[API] Retry result: ${I} pixels painted`),{status:E.status,json:v.json,success:E.ok,painted:I}}catch(w){return console.error("\u274C Token regeneration failed:",w),{status:403,json:{error:"Token regeneration failed: "+w.message},success:!1,painted:0}}}if(C.status>=500&&C.status<=504)try{let w=await V(!0);y=z(),p=D();let b=JSON.stringify({colors:d,coords:u,t:w,...p?{fp:p}:{}});l(`[API] Retrying after ${C.status} with fresh token: ${w.substring(0,50)}...`);let E=await fetch(`${$}/s0/pixel/${o}/${e}`,{method:"POST",credentials:"include",headers:{"Content-Type":"text/plain;charset=UTF-8",...y?{"x-pawtect-token":y}:{}},body:b}),v=await ee(E),I=((r=v.json)==null?void 0:r.painted)||0;return l(`[API] Retry after ${C.status}: ${I} pixels painted`),{status:E.status,json:v.json,success:E.ok,painted:I}}catch{}let L=await ee(C),_=((a=L.json)==null?void 0:a.painted)||0;return l(`[API] Success: ${_} pixels painted`),{status:C.status,json:L.json,success:C.ok,painted:_}}catch(c){return c.name==="AbortError"||c.name==="TimeoutError"?(l(`[API] Request timeout for tile ${o},${e}`),{status:408,json:{error:"Request timeout"},success:!1,painted:0}):(l(`[API] Network error: ${c.message}`),{status:0,json:{error:c.message},success:!1,painted:0})}}async function Kt(o,e){l(`\u{1F4E5} Descargando bot: ${o}`);try{let n={farm:"Auto-Farm.js",image:"Auto-Image.js",guard:"Auto-Guard.js"}[o];if(!n)throw new Error(`Tipo de bot desconocido: ${o}`);let i=`${e}/${n}`;l(`\u{1F310} URL: ${i}`);let s=await fetch(i,{cache:"no-cache"});if(!s.ok)throw new Error(`HTTP ${s.status}`);let r=await s.text();l(`\u2705 Bot descargado (${r.length} chars), inyectando...`);let a=`
//# sourceURL=${i}`;return l("\u{1F680} Ejecutando bot en contexto global (para acceso a turnstile.js)..."),(0,eval)(r+a),l("\u2705 Bot ejecutado con acceso completo a turnstile.js"),!0}catch(t){throw l("\u274C Error descargando/ejecutando bot:",t.message),t}}var $,ge=O(()=>{Ce();Le();lt();ut();F();pt();$="https://backend.wplace.live"});function no(o){Ne=o}function A(o,e=null){Ne&&(e?console.log(`[ModalManager] ${o}`,e):console.log(`[ModalManager] ${o}`))}function we(){return document.querySelectorAll("dialog.modal[open], dialog[open], .modal[open], .modal.show").length>0}function oe(){let o=we();A(`Modal state changed. Open: ${o}`),A(`Windows registered: ${G.size}`),A(`Windows currently hidden by modal: ${W.size}`),G.forEach(e=>{if(o){if(!W.has(e)){A("Hiding window due to modal",e),W.add(e),e.style.transition="all 0.3s ease-out",e.style.opacity="0",e.style.pointerEvents="none";let t=e.getRootNode&&e.getRootNode();t&&t.host&&t.host.style&&(A("Also hiding Shadow DOM host",t.host),t.host.style.transition="all 0.3s ease-out",t.host.style.opacity="0",t.host.style.pointerEvents="none")}}else if(W.has(e)){A("Showing window, no modals detected",e),W.delete(e),e.style.transition="all 0.3s ease-in",e.style.opacity="1",e.style.pointerEvents="auto";let t=e.getRootNode&&e.getRootNode();t&&t.host&&t.host.style&&(A("Also showing Shadow DOM host",t.host),t.host.style.transition="all 0.3s ease-in",t.host.style.opacity="1",t.host.style.pointerEvents="auto")}})}function ro(){if(fe)return;A("Setting up modal observers");let o=new MutationObserver(i=>{A(`Attribute mutations detected: ${i.length}`),i.forEach(s=>{s.type==="attributes"&&(s.attributeName==="open"||s.attributeName==="class")&&(A(`Attribute changed: ${s.attributeName} on`,s.target),A(`Old value: ${s.oldValue}`),A(`New value: ${s.target.getAttribute(s.attributeName)}`),oe())})}),e=new MutationObserver(i=>{A(`DOM mutations detected: ${i.length}`),i.forEach(s=>{s.type==="childList"&&(s.addedNodes.forEach(r=>{if(r.nodeType===Node.ELEMENT_NODE){let a='dialog.modal, dialog, .modal, [role="dialog"], .overlay, .popup';r.matches&&r.matches(a)&&(A("New modal element detected",r),o.observe(r,{attributes:!0,attributeFilter:["open","class","aria-hidden"],attributeOldValue:!0}),oe());let c=r.querySelectorAll?r.querySelectorAll(a):[];c.length>0&&A(`Found ${c.length} nested modals`),c.forEach(g=>{A("Observing nested modal",g),o.observe(g,{attributes:!0,attributeFilter:["open","class","aria-hidden"],attributeOldValue:!0})}),c.length>0&&oe()}}),s.removedNodes.length>0&&(A(`${s.removedNodes.length} nodes removed`),oe()))})}),n=document.querySelectorAll('dialog.modal, dialog, .modal, [role="dialog"], .overlay, .popup');A(`Found ${n.length} existing modals`),n.forEach(i=>{A("Observing existing modal",i),o.observe(i,{attributes:!0,attributeFilter:["open","class","aria-hidden"],attributeOldValue:!0})}),e.observe(document.body,{childList:!0,subtree:!0}),fe=!0,A("Modal observers setup complete")}function ce(o){if(!o)return;G.add(o),fe||setTimeout(()=>{ro()},100);let e=t=>{(t.target===o||o.contains(t.target))&&ze(o)};if(o.addEventListener("mousedown",e),o._bringToFrontHandler=e,!o.style.zIndex){o.style.zIndex=se++;let t=o.getRootNode&&o.getRootNode();t&&t.host&&t.host.style&&(t.host.style.zIndex=o.style.zIndex)}oe(),A("Window registered successfully",o)}function Oe(o){o&&(G.delete(o),W.delete(o),o._bringToFrontHandler&&(o.removeEventListener("mousedown",o._bringToFrontHandler),delete o._bringToFrontHandler))}function ze(o){if(!o||!G.has(o)||we())return;se++,o.style.zIndex=se;let e=o.getRootNode&&o.getRootNode();e&&e.host&&e.host.style&&(e.host.style.zIndex=se)}function io(){oe()}function ao(){console.log("=== MODAL MANAGER DEBUG STATE ==="),console.log("Debug enabled:",Ne),console.log("Observers setup:",fe),console.log("Windows registered:",G.size),console.log("Windows hidden by modal:",W.size),console.log("Current max Z-Index:",se),console.log("Any modal open:",we()),console.log(`
--- Registered Windows ---`),G.forEach((e,t)=>{console.log(`Window ${t}:`,{element:e,zIndex:e.style.zIndex,opacity:e.style.opacity,isHidden:W.has(e)})}),console.log(`
--- Current Modals ---`),document.querySelectorAll('dialog.modal[open], dialog[open], .modal[open], .modal.show, [role="dialog"]').forEach((e,t)=>{console.log(`Modal ${t}:`,{element:e,isOpen:e.hasAttribute("open")||e.classList.contains("show"),display:window.getComputedStyle(e).display,visibility:window.getComputedStyle(e).visibility})})}var se,G,fe,W,Ne,De=O(()=>{se=1e5,G=new Set,fe=!1,W=new Set,Ne=!1;typeof window!="undefined"&&(window.setModalDebug=no,window.debugModalState=ao,window.registerWindow=ce,window.unregisterWindow=Oe,window.__modalManagerDebug={windowElements:G,hiddenWindowsByModal:W,isAnyModalOpen:we,refreshWindowsVisibility:io},console.log("[WindowManager] Funciones expuestas globalmente autom\xE1ticamente"))});function xt(o){return window.__wplaceLogWindows[o]||(window.__wplaceLogWindows[o]=new le(o)),window.__wplaceLogWindows[o]}function Ct(o){return window.__wplaceLogWindows[o]||null}function $e(o){window.__wplaceLogWindows[o]&&(window.__wplaceLogWindows[o].destroy(),delete window.__wplaceLogWindows[o])}function Et(){Object.keys(window.__wplaceLogWindows).forEach(o=>{$e(o)})}var le,_t=O(()=>{F();De();le=class{constructor(e="Bot"){this.botName=e,this.isVisible=!1,this.logs=[],this.maxLogs=1e3,this.container=null,this.logContent=null,this.isResizing=!1,this.resizeHandle=null,this.originalConsole={},this.config={width:600,height:400,x:window.innerWidth-620,y:20,visible:!1},this.loadConfig(),this.createWindow(),this.setupLogInterception(),this.setupEventListeners()}loadConfig(){try{let e=localStorage.getItem(`wplace-log-window-${this.botName}`);e&&(this.config={...this.config,...JSON.parse(e)})}catch(e){l("Error cargando configuraci\xF3n de ventana de logs:",e)}}saveConfig(){try{localStorage.setItem(`wplace-log-window-${this.botName}`,JSON.stringify(this.config))}catch(e){l("Error guardando configuraci\xF3n de ventana de logs:",e)}}createWindow(){this.container=document.createElement("div"),this.container.className="wplace-log-window",this.container.style.cssText=`
position: fixed;
left: ${this.config.x}px;
top: ${this.config.y}px;
width: ${this.config.width}px;
height: ${this.config.height}px;
background: rgba(0, 0, 0, 0.9);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 8px;
z-index: 100001;
display: ${this.config.visible?"flex":"none"};
flex-direction: column;
backdrop-filter: blur(10px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
color: #fff;
resize: none;
overflow: hidden;
`;let e=document.createElement("div");e.className="log-window-header",e.style.cssText=`
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 12px;
background: rgba(255, 255, 255, 0.1);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
cursor: move;
user-select: none;
border-radius: 7px 7px 0 0;
`;let t=document.createElement("div");t.textContent=`\u{1F4CB} Logs - ${this.botName}`,t.style.cssText=`
font-weight: bold;
font-size: 14px;
color: #e2e8f0;
`;let n=document.createElement("div");n.style.cssText=`
display: flex;
gap: 8px;
`;let i=document.createElement("button");i.innerHTML="\u{1F4BE}",i.title="Descargar logs",i.style.cssText=`
background: rgba(34, 197, 94, 0.8);
border: none;
border-radius: 4px;
color: white;
width: 24px;
height: 24px;
cursor: pointer;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s;
`,i.addEventListener("mouseenter",()=>{i.style.background="rgba(34, 197, 94, 1)"}),i.addEventListener("mouseleave",()=>{i.style.background="rgba(34, 197, 94, 0.8)"}),i.addEventListener("click",()=>this.downloadLogs());let s=document.createElement("button");s.innerHTML="\u2715",s.title="Cerrar ventana",s.style.cssText=`
background: rgba(239, 68, 68, 0.8);
border: none;
border-radius: 4px;
color: white;
width: 24px;
height: 24px;
cursor: pointer;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s;
`,s.addEventListener("mouseenter",()=>{s.style.background="rgba(239, 68, 68, 1)"}),s.addEventListener("mouseleave",()=>{s.style.background="rgba(239, 68, 68, 0.8)"}),s.addEventListener("click",()=>this.hide()),n.appendChild(i),n.appendChild(s),e.appendChild(t),e.appendChild(n),this.logContent=document.createElement("div"),this.logContent.className="log-window-content",this.logContent.style.cssText=`
flex: 1;
padding: 8px;
overflow-y: auto;
font-size: 12px;
line-height: 1.4;
white-space: pre-wrap;
word-break: break-word;
`,this.resizeHandle=document.createElement("div"),this.resizeHandle.className="log-window-resize-handle",this.resizeHandle.style.cssText=`
position: absolute;
bottom: 0;
right: 0;
width: 20px;
height: 20px;
cursor: se-resize;
background: linear-gradient(-45deg, transparent 30%, rgba(255,255,255,0.3) 30%, rgba(255,255,255,0.3) 70%, transparent 70%);
border-radius: 0 0 8px 0;
`,this.container.appendChild(e),this.container.appendChild(this.logContent),this.container.appendChild(this.resizeHandle),document.body.appendChild(this.container),ce(this.container),this.setupDragging(e),this.setupResizing(),this.isVisible=this.config.visible}setupDragging(e){let t=!1,n={x:0,y:0};e.addEventListener("mousedown",r=>{r.target.tagName!=="BUTTON"&&(t=!0,n.x=r.clientX-this.container.offsetLeft,n.y=r.clientY-this.container.offsetTop,document.addEventListener("mousemove",i),document.addEventListener("mouseup",s),r.preventDefault())});let i=r=>{if(!t)return;let a=Math.max(0,Math.min(window.innerWidth-this.container.offsetWidth,r.clientX-n.x)),c=Math.max(0,Math.min(window.innerHeight-this.container.offsetHeight,r.clientY-n.y));this.container.style.left=a+"px",this.container.style.top=c+"px",this.config.x=a,this.config.y=c},s=()=>{t=!1,document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",s),this.saveConfig()}}setupResizing(){let e=!1,t,n,i,s;this.resizeHandle.addEventListener("mousedown",c=>{e=!0,t=c.clientX,n=c.clientY,i=parseInt(document.defaultView.getComputedStyle(this.container).width,10),s=parseInt(document.defaultView.getComputedStyle(this.container).height,10),document.addEventListener("mousemove",r),document.addEventListener("mouseup",a),c.preventDefault()});let r=c=>{if(!e)return;let g=Math.max(300,i+c.clientX-t),u=Math.max(200,s+c.clientY-n);this.container.style.width=g+"px",this.container.style.height=u+"px",this.config.width=g,this.config.height=u},a=()=>{e=!1,document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),this.saveConfig()}}setupLogInterception(){this.originalConsole={log:console.log,info:console.info,warn:console.warn,error:console.error,debug:console.debug},console.log=(...e)=>{this.originalConsole.log.apply(console,e),this.addLog("log",e)},console.info=(...e)=>{this.originalConsole.info.apply(console,e),this.addLog("info",e)},console.warn=(...e)=>{this.originalConsole.warn.apply(console,e),this.addLog("warn",e)},console.error=(...e)=>{this.originalConsole.error.apply(console,e),this.addLog("error",e)},console.debug=(...e)=>{this.originalConsole.debug.apply(console,e),this.addLog("debug",e)}}addLog(e,t){let n=new Date().toLocaleTimeString(),i=t.map(r=>typeof r=="object"?JSON.stringify(r,null,2):String(r)).join(" "),s={timestamp:n,type:e,message:i,raw:t};this.logs.push(s),this.logs.length>this.maxLogs&&this.logs.shift(),this.isVisible&&this.updateLogDisplay()}updateLogDisplay(){if(!this.logContent)return;let e=this.logs.map(t=>`<div style="color: ${this.getLogColor(t.type)}; margin-bottom: 2px;">[${t.timestamp}] ${t.message}</div>`).join("");this.logContent.innerHTML=e,this.logContent.scrollTop=this.logContent.scrollHeight}getLogColor(e){let t={log:"#e2e8f0",info:"#60a5fa",warn:"#fbbf24",error:"#f87171",debug:"#a78bfa"};return t[e]||t.log}downloadLogs(){let e=new Date,t=e.toISOString().split("T")[0],n=e.toTimeString().split(" ")[0].replace(/:/g,"-"),i=`log_${this.botName}_${t}_${n}.log`,s=this.logs.map(g=>`[${g.timestamp}] [${g.type.toUpperCase()}] ${g.message}`).join(`
`),r=new Blob([s],{type:"text/plain"}),a=URL.createObjectURL(r),c=document.createElement("a");c.href=a,c.download=i,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(a),l(`\u{1F4E5} Logs descargados como: ${i}`)}show(){this.container&&(this.container.style.display="flex",ze(this.container),this.isVisible=!0,this.config.visible=!0,this.updateLogDisplay(),this.saveConfig())}hide(){this.container&&(this.container.style.display="none",this.isVisible=!1,this.config.visible=!1,this.saveConfig())}toggle(){this.isVisible?this.hide():this.show()}clear(){this.logs=[],this.logContent&&(this.logContent.innerHTML="")}setupEventListeners(){window.addEventListener("resize",()=>{if(this.container){let e=window.innerWidth-this.container.offsetWidth,t=window.innerHeight-this.container.offsetHeight;this.config.x>e&&(this.config.x=Math.max(0,e),this.container.style.left=this.config.x+"px"),this.config.y>t&&(this.config.y=Math.max(0,t),this.container.style.top=this.config.y+"px"),this.saveConfig()}})}destroy(){this.originalConsole.log&&(console.log=this.originalConsole.log,console.info=this.originalConsole.info,console.warn=this.originalConsole.warn,console.error=this.originalConsole.error,console.debug=this.originalConsole.debug),this.container&&this.container.parentNode&&(Oe(this.container),this.container.parentNode.removeChild(this.container)),this.container=null,this.logContent=null,this.logs=[]}};window.__wplaceLogWindows=window.__wplaceLogWindows||{}});var Tt={};nt(Tt,{LogWindow:()=>le,createLogWindow:()=>xt,destroyAllLogWindows:()=>Et,destroyLogWindow:()=>$e,getLogWindow:()=>Ct});var Pt=O(()=>{_t()});F();var K={SITEKEY:"0x4AAAAAABpqJe8FO0N84q0F",TILE_X:1086,TILE_Y:1565,TILE_SIZE:3e3,DELAY_MS:15e3,MIN_CHARGES:10,CHARGE_REGEN_MS:3e4,PIXELS_PER_BATCH:20,COLOR_MIN:1,COLOR_MAX:32,COLOR_MODE:"random",COLOR_FIXED:1,CUSTOM_PALETTE:["#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF"],BASE_X:null,BASE_Y:null,FARM_RADIUS:500,POSITION_SELECTED:!1,AUTO_BUY_ENABLED:!1,UI_THEME:{primary:"#000000",secondary:"#111111",accent:"#222222",text:"#ffffff",highlight:"#775ce3",success:"#00ff00",error:"#ff0000",running:"#00cc00"}},h={running:!1,painted:0,last:null,charges:{count:0,max:0,cooldownMs:3e4},droplets:0,user:null,panel:null,captureMode:!1,selectingPosition:!1,originalFetch:window.fetch,retryCount:0,inCooldown:!1,nextPaintTime:0,cooldownEndTime:0,health:null};function rt(o){return{...o}}function it(){console.log("[WPA-UI]","Configuraci\xF3n reseteada a valores seguros (localStorage deshabilitado)")}ge();var mt={launcher:{title:"WPlace AutoBOT",autoFarm:"\u{1F33E} Auto-Farm",autoImage:"\u{1F3A8} Auto-Image",autoGuard:"\u{1F6E1}\uFE0F Auto-Guard",selection:"Selecci\xF3n",user:"Usuario",charges:"Cargas",backend:"Backend",database:"Database",uptime:"Uptime",close:"Cerrar",launch:"Lanzar",loading:"Cargando\u2026",executing:"Ejecutando\u2026",downloading:"Descargando script\u2026",chooseBot:"Elige un bot y presiona Lanzar",readyToLaunch:"Listo para lanzar",loadError:"Error al cargar",loadErrorMsg:"No se pudo cargar el bot seleccionado. Revisa tu conexi\xF3n o int\xE9ntalo de nuevo.",checking:"\u{1F504} Verificando...",online:"\u{1F7E2} Online",offline:"\u{1F534} Offline",ok:"\u{1F7E2} OK",error:"\u{1F534} Error",unknown:"-",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Descargar Logs",clearLogs:"Limpiar Logs",closeLogs:"Cerrar",localExecution:"Ejecuci\xF3n local con acceso completo al sistema de tokens",botStarting:"Bot iniciando..."},image:{title:"WPlace Auto-Image",initBot:"Iniciar Auto-BOT",uploadImage:"Subir Imagen",resizeImage:"Redimensionar Imagen",selectPosition:"Seleccionar Posici\xF3n",startPainting:"Iniciar Pintura",stopPainting:"Detener Pintura",saveProgress:"Guardar Progreso",loadProgress:"Cargar Progreso",checkingColors:"\u{1F50D} Verificando colores disponibles...",noColorsFound:"\u274C \xA1Abre la paleta de colores en el sitio e int\xE9ntalo de nuevo!",colorsFound:"\u2705 {count} colores disponibles encontrados",loadingImage:"\u{1F5BC}\uFE0F Cargando imagen...",imageLoaded:"\u2705 Imagen cargada con {count} p\xEDxeles v\xE1lidos",imageError:"\u274C Error al cargar la imagen",selectPositionAlert:"\xA1Pinta el primer p\xEDxel en la ubicaci\xF3n donde quieres que comience el arte!",waitingPosition:"\u{1F446} Esperando que pintes el p\xEDxel de referencia...",positionSet:"\u2705 \xA1Posici\xF3n establecida con \xE9xito!",positionTimeout:"\u274C Tiempo agotado para seleccionar posici\xF3n",positionDetected:"\u{1F3AF} Posici\xF3n detectada, procesando...",positionError:"\u274C Error detectando posici\xF3n, int\xE9ntalo de nuevo",startPaintingMsg:"\u{1F3A8} Iniciando pintura...",paintingProgress:"\u{1F9F1} Progreso: {painted}/{total} p\xEDxeles...",noCharges:"\u231B Sin cargas. Esperando {time}...",paintingStopped:"\u23F9\uFE0F Pintura detenida por el usuario",paintingComplete:"\u2705 \xA1Pintura completada! {count} p\xEDxeles pintados.",paintingError:"\u274C Error durante la pintura",missingRequirements:"\u274C Carga una imagen y selecciona una posici\xF3n primero",progress:"Progreso",userName:"Usuario",pixels:"P\xEDxeles",charges:"Cargas",estimatedTime:"Tiempo estimado",initMessage:"Haz clic en 'Iniciar Auto-BOT' para comenzar",waitingInit:"Esperando inicializaci\xF3n...",resizeSuccess:"\u2705 Imagen redimensionada a {width}x{height}",paintingPaused:"\u23F8\uFE0F Pintura pausada en la posici\xF3n X: {x}, Y: {y}",pixelsPerBatch:"P\xEDxeles por lote",batchSize:"Tama\xF1o del lote",nextBatchTime:"Siguiente lote en",useAllCharges:"Usar todas las cargas disponibles",showOverlay:"Mostrar overlay",maxCharges:"Cargas m\xE1ximas por lote",waitingForCharges:"\u23F3 Esperando cargas: {current}/{needed}",timeRemaining:"Tiempo restante",cooldownWaiting:"\u23F3 Esperando {time} para continuar...",progressSaved:"\u2705 Progreso guardado como {filename}",progressLoaded:"\u2705 Progreso cargado: {painted}/{total} p\xEDxeles pintados",progressLoadError:"\u274C Error al cargar progreso: {error}",progressSaveError:"\u274C Error al guardar progreso: {error}",confirmSaveProgress:"\xBFDeseas guardar el progreso actual antes de detener?",saveProgressTitle:"Guardar Progreso",discardProgress:"Descartar",cancel:"Cancelar",minimize:"Minimizar",width:"Ancho",height:"Alto",keepAspect:"Mantener proporci\xF3n",apply:"Aplicar",overlayOn:"Overlay: ON",overlayOff:"Overlay: OFF",passCompleted:"\u2705 Pasada completada: {painted} p\xEDxeles pintados | Progreso: {percent}% ({current}/{total})",waitingChargesRegen:"\u23F3 Esperando regeneraci\xF3n de cargas: {current}/{needed} - Tiempo: {time}",waitingChargesCountdown:"\u23F3 Esperando cargas: {current}/{needed} - Quedan: {time}",autoInitializing:"\u{1F916} Inicializando autom\xE1ticamente...",autoInitSuccess:"\u2705 Bot iniciado autom\xE1ticamente",autoInitFailed:"\u26A0\uFE0F No se pudo iniciar autom\xE1ticamente. Usa el bot\xF3n manual.",paletteDetected:"\u{1F3A8} Paleta de colores detectada",paletteNotFound:"\u{1F50D} Buscando paleta de colores...",clickingPaintButton:"\u{1F446} Haciendo clic en el bot\xF3n Paint...",paintButtonNotFound:"\u274C Bot\xF3n Paint no encontrado",manualInitRequired:"\u{1F527} Inicio manual requerido",retryAttempt:"\u{1F504} Reintento {attempt}/{maxAttempts} en {delay}s...",retryError:"\u{1F4A5} Error en intento {attempt}/{maxAttempts}, reintentando en {delay}s...",retryFailed:"\u274C Fall\xF3 despu\xE9s de {maxAttempts} intentos. Continuando con siguiente lote...",networkError:"\u{1F310} Error de red. Reintentando...",serverError:"\u{1F525} Error del servidor. Reintentando...",timeoutError:"\u23F0 Timeout del servidor. Reintentando...",paintPattern:"\u{1F4D0} Patr\xF3n de pintado",patternLinearStart:"Lineal (Inicio)",patternLinearEnd:"Lineal (Final)",patternRandom:"Aleatorio",patternCenterOut:"Centro hacia afuera",patternCornersFirst:"Esquinas primero",patternSpiral:"Espiral",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Descargar Logs",clearLogs:"Limpiar Logs",closeLogs:"Cerrar",userInfo:"Informaci\xF3n del Usuario",imageProgress:"Progreso de la Imagen",availableColors:"Colores Disponibles",noImageLoaded:"No hay imagen cargada",cooldown:"Tiempo de espera",totalColors:"Total de Colores",colorPalette:"Paleta de Colores",showAllColors:"Mostrar Todos los Colores (incluyendo no disponibles)",selectAllColors:"Seleccionar Todos",unselectAllColors:"Deseleccionar Todos",noAvailable:"No disponible",colorSelected:"Color seleccionado",statsUpdated:"\u2705 Estad\xEDsticas actualizadas: {count} colores disponibles"},farm:{title:"WPlace Farm Bot",start:"Iniciar",stop:"Detener",stopped:"Bot detenido",calibrate:"Calibrar",paintOnce:"Una vez",checkingStatus:"Verificando estado...",configuration:"Configuraci\xF3n",delay:"Delay (ms)",pixelsPerBatch:"P\xEDxeles/lote",minCharges:"Cargas m\xEDn",colorMode:"Modo color",random:"Aleatorio",fixed:"Fijo",range:"Rango",fixedColor:"Color fijo",advanced:"Avanzado",tileX:"Tile X",tileY:"Tile Y",customPalette:"Paleta personalizada",paletteExample:"ej: #FF0000,#00FF00,#0000FF",capture:"Capturar",painted:"Pintados",charges:"Cargas",retries:"Fallos",position:"Posici\xF3n",tile:"Tile",configSaved:"Configuraci\xF3n guardada",configLoaded:"Configuraci\xF3n cargada",configReset:"Configuraci\xF3n reiniciada",captureInstructions:"Pinta un p\xEDxel manualmente para capturar coordenadas...",backendOnline:"Backend Online",backendOffline:"Backend Offline",startingBot:"Iniciando bot...",stoppingBot:"Deteniendo bot...",calibrating:"Calibrando...",alreadyRunning:"Auto-Farm ya est\xE1 corriendo.",imageRunningWarning:"Auto-Image est\xE1 ejecut\xE1ndose. Ci\xE9rralo antes de iniciar Auto-Farm.",selectPosition:"Seleccionar Zona",selectPositionAlert:"\u{1F3AF} Pinta un p\xEDxel en una zona DESPOBLADA del mapa para establecer el \xE1rea de farming",waitingPosition:"\u{1F446} Esperando que pintes el p\xEDxel de referencia...",positionSet:"\u2705 \xA1Zona establecida!",positionTimeout:"\u274C Tiempo agotado para seleccionar zona",missingPosition:"\u274C Selecciona una zona primero usando 'Seleccionar Zona'",farmRadius:"Radio farm",positionInfo:"Zona actual",farmingInRadius:"\u{1F33E} Farming en radio {radius}px desde ({x},{y})",selectEmptyArea:"\u26A0\uFE0F IMPORTANTE: Selecciona una zona DESPOBLADA para evitar conflictos",noPosition:"Sin zona",currentZone:"Zona: ({x},{y})",autoSelectPosition:"\u{1F3AF} Selecciona una zona primero. Pinta un p\xEDxel en el mapa para establecer la zona de farming",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Descargar Logs",clearLogs:"Limpiar Logs",closeLogs:"Cerrar",ready:"Listo",once:"Una vez",recapture:"Re-capturar",stats:{painted:"Pintados",charges:"Cargas",droplets:"Gotas",user:"Usuario",retries:"Reintentos"},config:{minCharges:"Cargas m\xEDnimas",delay:"Espera (seg)",pixelsPerBatch:"P\xEDxeles por lote"},color:{fixed:"Fijo",range:"Rango",random:"Aleatorio",selected:"Color seleccionado",min:"M\xEDn",max:"M\xE1x"},autobuy:{title:"Auto-compra (+5 cargas)",hint:"Se activar\xE1 autom\xE1ticamente cuando tengas \u2265 500 gotas"},buyCharges:"Comprar +5 cargas",buying:"Comprando...",buyOk:"Compra realizada. Actualiza sesi\xF3n.",buyFail:"No se pudo comprar"},common:{yes:"S\xED",no:"No",ok:"Aceptar",cancel:"Cancelar",close:"Cerrar",save:"Guardar",load:"Cargar",delete:"Eliminar",edit:"Editar",start:"Iniciar",stop:"Detener",pause:"Pausar",resume:"Reanudar",reset:"Reiniciar",settings:"Configuraci\xF3n",help:"Ayuda",about:"Acerca de",language:"Idioma",loading:"Cargando...",error:"Error",success:"\xC9xito",warning:"Advertencia",info:"Informaci\xF3n",languageChanged:"Idioma cambiado a {language}"},guard:{title:"WPlace Auto-Guard",initBot:"Inicializar Guard-BOT",selectArea:"Seleccionar \xC1rea",save:"Guardar",captureArea:"Capturar \xC1rea",startProtection:"Iniciar",stopProtection:"Detener",protectedPixels:"P\xEDxeles Protegidos",upperLeft:"Esquina Superior Izquierda",lowerRight:"Esquina Inferior Derecha",detectedChanges:"Cambios Detectados",repairedPixels:"P\xEDxeles Reparados",charges:"Cargas",waitingInit:"Esperando inicializaci\xF3n...",checkingColors:"\u{1F3A8} Verificando colores disponibles...",noColorsFound:"\u274C No se encontraron colores. Abre la paleta de colores en el sitio.",colorsFound:"\u2705 {count} colores disponibles encontrados",initSuccess:"\u2705 Guard-BOT inicializado correctamente",initError:"\u274C Error inicializando Guard-BOT",invalidCoords:"\u274C Coordenadas inv\xE1lidas",invalidArea:"\u274C El \xE1rea debe tener esquina superior izquierda menor que inferior derecha",areaTooLarge:"\u274C \xC1rea demasiado grande: {size} p\xEDxeles (m\xE1ximo: {max})",capturingArea:"\u{1F4F8} Capturando \xE1rea...",areaCaptured:"\u2705 \xC1rea capturada: {count} p\xEDxeles",captureError:"\u274C Error capturando \xE1rea: {error}",captureFirst:"\u274C Primero captura un \xE1rea",noChanges:"\u2705 \xC1rea - sin cambios detectados",changesDetected:"\u{1F6A8} {count} cambios detectados en el \xE1rea",repairing:"\u{1F6E0}\uFE0F Reparando {count} p\xEDxeles alterados...",repairedSuccess:"\u2705 Reparados {count} p\xEDxeles correctamente",repairError:"\u274C Error reparando p\xEDxeles: {error}",noCharges:"\u26A0\uFE0F Sin cargas suficientes para reparar cambios",checkingChanges:"\u{1F50D} Verificando cambios en \xE1rea...",errorChecking:"\u274C Error verificando cambios: {error}",guardActive:"\u{1F6E1}\uFE0F Guardi\xE1n activo - \xE1rea monitoreada",lastCheck:"\xDAltima verificaci\xF3n: {time}",nextCheck:"Pr\xF3xima verificaci\xF3n en: {time}s",autoInitializing:"\u{1F916} Inicializando autom\xE1ticamente...",autoInitSuccess:"\u2705 Guard-BOT iniciado autom\xE1ticamente",autoInitFailed:"\u26A0\uFE0F No se pudo iniciar autom\xE1ticamente. Usa el bot\xF3n manual.",manualInitRequired:"\u{1F527} Inicio manual requerido",paletteDetected:"\u{1F3A8} Paleta de colores detectada",paletteNotFound:"\u{1F50D} Buscando paleta de colores...",clickingPaintButton:"\u{1F446} Haciendo clic en el bot\xF3n Paint...",paintButtonNotFound:"\u274C Bot\xF3n Paint no encontrado",protectionStopped:"\u23F9\uFE0F Protecci\xF3n detenida",selectUpperLeft:"\u{1F3AF} Pinta un p\xEDxel en la esquina SUPERIOR IZQUIERDA del \xE1rea a monitorear",selectLowerRight:"\u{1F3AF} Ahora pinta un p\xEDxel en la esquina INFERIOR DERECHA del \xE1rea",waitingUpperLeft:"\u{1F446} Esperando selecci\xF3n de esquina superior izquierda...",waitingLowerRight:"\u{1F446} Esperando selecci\xF3n de esquina inferior derecha...",upperLeftCaptured:"\u2705 Esquina superior izquierda capturada: ({x}, {y})",lowerRightCaptured:"\u2705 Esquina inferior derecha capturada: ({x}, {y})",selectionTimeout:"\u274C Tiempo agotado para selecci\xF3n",selectionError:"\u274C Error en selecci\xF3n, int\xE9ntalo de nuevo",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Descargar Logs",clearLogs:"Limpiar Logs",closeLogs:"Cerrar",analysisTitle:"An\xE1lisis de Diferencias - JSON vs Canvas Actual",correctPixels:"P\xEDxeles Correctos",incorrectPixels:"P\xEDxeles Incorrectos",missingPixels:"P\xEDxeles Faltantes",showCorrect:"Mostrar Correctos",showIncorrect:"Mostrar Incorrectos",showMissing:"Mostrar Faltantes",autoRefresh:"Auto-refresco",zoomAdjusted:"Zoom ajustado autom\xE1ticamente a",autoRefreshEnabled:"Auto-refresco activado cada",autoRefreshDisabled:"Auto-refresco desactivado",autoRefreshIntervalUpdated:"Intervalo de auto-refresco actualizado a",visualizationUpdated:"Visualizaci\xF3n actualizada",configTitle:"Configuraci\xF3n del Guard",protectionPatterns:"Patrones de Protecci\xF3n",preferSpecificColor:"Priorizar color espec\xEDfico",excludeSpecificColors:"No reparar colores espec\xEDficos",loadManagement:"Gesti\xF3n de Cargas",minLoadsToWait:"M\xEDnimo de cargas:",pixelsPerBatch:"P\xEDxeles por lote",spendAllPixelsOnStart:"Gastar todos los p\xEDxeles al iniciar",waitTimes:"Tiempos de Espera",useRandomTimes:"Usar tiempos aleatorios entre lotes",minTime:"Tiempo m\xEDnimo (s)",maxTime:"Tiempo m\xE1ximo (s)"},slave:{title:"WPlace Slave",masterServer:"Servidor Maestro",ipAddress:"Direcci\xF3n IP",connect:"Conectar",disconnect:"Desconectar",status:"Estado",slaveId:"ID Slave",mode:"Modo",running:"Ejecutando",idle:"Inactivo",connected:"Conectado",connecting:"Conectando...",disconnected:"Desconectado",error:"Error",close:"Cerrar",telemetry:"Telemetr\xEDa",repairedPixels:"P\xEDxeles Reparados",missingPixels:"P\xEDxeles Faltantes",absentPixels:"P\xEDxeles Ausentes",remainingCharges:"Cargas Restantes",connectionError:"Error de conexi\xF3n. Verifica la URL y que el servidor est\xE9 ejecut\xE1ndose.",invalidUrl:"Por favor ingresa una URL v\xE1lida",slaveRunning:"Slave ya est\xE1 ejecut\xE1ndose.",slaveInitialized:"Slave inicializado correctamente",slaveError:"Error inicializando Slave",masterConnected:"Conectado al servidor maestro",masterDisconnected:"Desconectado del servidor maestro",reconnecting:"Reintentando conexi\xF3n",maxReconnectAttempts:"M\xE1ximo de intentos de reconexi\xF3n alcanzado",modeSet:"Modo configurado",projectLoaded:"Configuraci\xF3n del proyecto cargada",botStarted:"Bot iniciado",botStopped:"Bot detenido",botPaused:"Bot pausado"}};var ht={launcher:{title:"WPlace AutoBOT",autoFarm:"\u{1F33E} Auto-Farm",autoImage:"\u{1F3A8} Auto-Image",autoGuard:"\u{1F6E1}\uFE0F Auto-Guard",selection:"Selection",user:"User",charges:"Charges",backend:"Backend",database:"Database",uptime:"Uptime",close:"Close",launch:"Launch",loading:"Loading\u2026",executing:"Executing\u2026",downloading:"Downloading script\u2026",chooseBot:"Choose a bot and press Launch",readyToLaunch:"Ready to launch",loadError:"Load error",loadErrorMsg:"Could not load the selected bot. Check your connection or try again.",checking:"\u{1F504} Checking...",online:"\u{1F7E2} Online",offline:"\u{1F534} Offline",ok:"\u{1F7E2} OK",error:"\u{1F534} Error",unknown:"-",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Download Logs",clearLogs:"Clear Logs",closeLogs:"Close",localExecution:"Local execution with full access to token system",botStarting:"Bot starting..."},image:{title:"WPlace Auto-Image",initBot:"Initialize Auto-BOT",uploadImage:"Upload Image",resizeImage:"Resize Image",selectPosition:"Select Position",startPainting:"Start Painting",stopPainting:"Stop Painting",saveProgress:"Save Progress",loadProgress:"Load Progress",checkingColors:"\u{1F50D} Checking available colors...",noColorsFound:"\u274C Open the color palette on the site and try again!",colorsFound:"\u2705 Found {count} available colors",loadingImage:"\u{1F5BC}\uFE0F Loading image...",imageLoaded:"\u2705 Image loaded with {count} valid pixels",imageError:"\u274C Error loading image",selectPositionAlert:"Paint the first pixel at the location where you want the art to start!",waitingPosition:"\u{1F446} Waiting for you to paint the reference pixel...",positionSet:"\u2705 Position set successfully!",positionTimeout:"\u274C Timeout for position selection",positionDetected:"\u{1F3AF} Position detected, processing...",positionError:"\u274C Error detecting position, please try again",startPaintingMsg:"\u{1F3A8} Starting painting...",paintingProgress:"\u{1F9F1} Progress: {painted}/{total} pixels...",noCharges:"\u231B No charges. Waiting {time}...",paintingStopped:"\u23F9\uFE0F Painting stopped by user",paintingComplete:"\u2705 Painting completed! {count} pixels painted.",paintingError:"\u274C Error during painting",missingRequirements:"\u274C Load an image and select a position first",progress:"Progress",userName:"User",pixels:"Pixels",charges:"Charges",estimatedTime:"Estimated time",initMessage:"Click 'Initialize Auto-BOT' to begin",waitingInit:"Waiting for initialization...",resizeSuccess:"\u2705 Image resized to {width}x{height}",paintingPaused:"\u23F8\uFE0F Painting paused at position X: {x}, Y: {y}",pixelsPerBatch:"Pixels per batch",batchSize:"Batch size",nextBatchTime:"Next batch in",useAllCharges:"Use all available charges",showOverlay:"Show overlay",maxCharges:"Max charges per batch",waitingForCharges:"\u23F3 Waiting for charges: {current}/{needed}",timeRemaining:"Time remaining",cooldownWaiting:"\u23F3 Waiting {time} to continue...",progressSaved:"\u2705 Progress saved as {filename}",progressLoaded:"\u2705 Progress loaded: {painted}/{total} pixels painted",progressLoadError:"\u274C Error loading progress: {error}",progressSaveError:"\u274C Error saving progress: {error}",confirmSaveProgress:"Do you want to save the current progress before stopping?",saveProgressTitle:"Save Progress",discardProgress:"Discard",cancel:"Cancel",minimize:"Minimize",width:"Width",height:"Height",keepAspect:"Keep aspect ratio",apply:"Apply",overlayOn:"Overlay: ON",overlayOff:"Overlay: OFF",passCompleted:"\u2705 Pass completed: {painted} pixels painted | Progress: {percent}% ({current}/{total})",waitingChargesRegen:"\u23F3 Waiting for charge regeneration: {current}/{needed} - Time: {time}",waitingChargesCountdown:"\u23F3 Waiting for charges: {current}/{needed} - Remaining: {time}",autoInitializing:"\u{1F916} Auto-initializing...",autoInitSuccess:"\u2705 Bot auto-started successfully",autoInitFailed:"\u26A0\uFE0F Could not auto-start. Use manual button.",paletteDetected:"\u{1F3A8} Color palette detected",paletteNotFound:"\u{1F50D} Searching for color palette...",clickingPaintButton:"\u{1F446} Clicking Paint button...",paintButtonNotFound:"\u274C Paint button not found",manualInitRequired:"\u{1F527} Manual initialization required",retryAttempt:"\u{1F504} Retry {attempt}/{maxAttempts} in {delay}s...",retryError:"\u{1F4A5} Error in attempt {attempt}/{maxAttempts}, retrying in {delay}s...",retryFailed:"\u274C Failed after {maxAttempts} attempts. Continuing with next batch...",networkError:"\u{1F310} Network error. Retrying...",serverError:"\u{1F525} Server error. Retrying...",timeoutError:"\u23F0 Server timeout, retrying...",protectionEnabled:"Protection enabled",protectionDisabled:"Protection disabled",paintPattern:"Paint pattern",patternLinearStart:"Linear (Start)",patternLinearEnd:"Linear (End)",patternRandom:"Random",patternCenterOut:"Center outward",patternCornersFirst:"Corners first",patternSpiral:"Spiral",solid:"Solid",stripes:"Stripes",checkerboard:"Checkerboard",gradient:"Gradient",dots:"Dots",waves:"Waves",spiral:"Spiral",mosaic:"Mosaic",bricks:"Bricks",zigzag:"Zigzag",protectingDrawing:"Protecting drawing...",changesDetected:"\u{1F6A8} {count} changes detected in drawing",repairing:"\u{1F527} Repairing {count} altered pixels...",repairCompleted:"\u2705 Repair completed: {count} pixels",noChargesForRepair:"\u26A1 No charges for repair, waiting...",protectionPriority:"\u{1F6E1}\uFE0F Protection priority activated",patternApplied:"Pattern applied",customPattern:"Custom pattern",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Download Logs",clearLogs:"Clear Logs",closeLogs:"Close"},farm:{title:"WPlace Farm Bot",start:"Start",stop:"Stop",stopped:"Bot stopped",calibrate:"Calibrate",paintOnce:"Once",checkingStatus:"Checking status...",configuration:"Configuration",delay:"Delay (ms)",pixelsPerBatch:"Pixels/batch",minCharges:"Min charges",colorMode:"Color mode",random:"Random",fixed:"Fixed",range:"Range",fixedColor:"Fixed color",advanced:"Advanced",tileX:"Tile X",tileY:"Tile Y",customPalette:"Custom palette",paletteExample:"e.g: #FF0000,#00FF00,#0000FF",capture:"Capture",painted:"Painted",charges:"Charges",retries:"Retries",tile:"Tile",configSaved:"Configuration saved",configLoaded:"Configuration loaded",configReset:"Configuration reset",captureInstructions:"Paint a pixel manually to capture coordinates...",backendOnline:"Backend Online",backendOffline:"Backend Offline",startingBot:"Starting bot...",stoppingBot:"Stopping bot...",calibrating:"Calibrating...",alreadyRunning:"Auto-Farm is already running.",imageRunningWarning:"Auto-Image is running. Close it before starting Auto-Farm.",selectPosition:"Select Area",selectPositionAlert:"\u{1F3AF} Paint a pixel in an EMPTY area of the map to set the farming zone",waitingPosition:"\u{1F446} Waiting for you to paint the reference pixel...",positionSet:"\u2705 Area set! Radius: 500px",positionTimeout:"\u274C Timeout for area selection",missingPosition:"\u274C Select an area first using 'Select Area'",farmRadius:"Farm radius",positionInfo:"Current area",farmingInRadius:"\u{1F33E} Farming in {radius}px radius from ({x},{y})",selectEmptyArea:"\u26A0\uFE0F IMPORTANT: Select an EMPTY area to avoid conflicts",noPosition:"No area",currentZone:"Zone: ({x},{y})",autoSelectPosition:"\u{1F3AF} Select an area first. Paint a pixel on the map to set the farming zone",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Download Logs",clearLogs:"Clear Logs",closeLogs:"Close"},common:{yes:"Yes",no:"No",ok:"OK",cancel:"Cancel",close:"Close",save:"Save",load:"Load",delete:"Delete",edit:"Edit",start:"Start",stop:"Stop",pause:"Pause",resume:"Resume",reset:"Reset",settings:"Settings",help:"Help",about:"About",language:"Language",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",info:"Information",languageChanged:"Language changed to {language}"},guard:{title:"WPlace Auto-Guard",initBot:"Initialize Guard-BOT",selectArea:"Select Area",captureArea:"Capture Area",startProtection:"Start Protection",stopProtection:"Stop Protection",upperLeft:"Upper Left Corner",lowerRight:"Lower Right Corner",protectedPixels:"Protected Pixels",detectedChanges:"Detected Changes",repairedPixels:"Repaired Pixels",charges:"Charges",waitingInit:"Waiting for initialization...",checkingColors:"\u{1F3A8} Checking available colors...",noColorsFound:"\u274C No colors found. Open the color palette on the site.",colorsFound:"\u2705 Found {count} available colors",initSuccess:"\u2705 Guard-BOT initialized successfully",initError:"\u274C Error initializing Guard-BOT",invalidCoords:"\u274C Invalid coordinates",invalidArea:"\u274C Area must have upper left corner less than lower right corner",areaTooLarge:"\u274C Area too large: {size} pixels (maximum: {max})",capturingArea:"\u{1F4F8} Capturing protection area...",areaCaptured:"\u2705 Area captured: {count} pixels under protection",captureError:"\u274C Error capturing area: {error}",captureFirst:"\u274C First capture a protection area",protectionStarted:"\u{1F6E1}\uFE0F Protection started - monitoring area",protectionStopped:"\u23F9\uFE0F Protection stopped",noChanges:"\u2705 Protected area - no changes detected",changesDetected:"\u{1F6A8} {count} changes detected in protected area",repairing:"\u{1F6E0}\uFE0F Repairing {count} altered pixels...",repairedSuccess:"\u2705 Successfully repaired {count} pixels",repairError:"\u274C Error repairing pixels: {error}",noCharges:"\u26A0\uFE0F Insufficient charges to repair changes",checkingChanges:"\u{1F50D} Checking changes in protected area...",errorChecking:"\u274C Error checking changes: {error}",guardActive:"\u{1F6E1}\uFE0F Guardian active - area under protection",lastCheck:"Last check: {time}",nextCheck:"Next check in: {time}s",autoInitializing:"\u{1F916} Auto-initializing...",autoInitSuccess:"\u2705 Guard-BOT auto-started successfully",autoInitFailed:"\u26A0\uFE0F Could not auto-start. Use manual button.",manualInitRequired:"\u{1F527} Manual initialization required",paletteDetected:"\u{1F3A8} Color palette detected",paletteNotFound:"\u{1F50D} Searching for color palette...",clickingPaintButton:"\u{1F446} Clicking Paint button...",paintButtonNotFound:"\u274C Paint button not found",selectUpperLeft:"\u{1F3AF} Paint a pixel at the UPPER LEFT corner of the area to protect",selectLowerRight:"\u{1F3AF} Now paint a pixel at the LOWER RIGHT corner of the area",waitingUpperLeft:"\u{1F446} Waiting for upper left corner selection...",waitingLowerRight:"\u{1F446} Waiting for lower right corner selection...",upperLeftCaptured:"\u2705 Upper left corner captured: ({x}, {y})",lowerRightCaptured:"\u2705 Lower right corner captured: ({x}, {y})",selectionTimeout:"\u274C Selection timeout",selectionError:"\u274C Selection error, please try again",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"Download Logs",clearLogs:"Clear Logs",closeLogs:"Close",analysisTitle:"Difference Analysis - JSON vs Current Canvas",correctPixels:"Correct Pixels",incorrectPixels:"Incorrect Pixels",missingPixels:"Missing Pixels",showCorrect:"Show Correct",showIncorrect:"Show Incorrect",showMissing:"Show Missing",autoRefresh:"Auto-refresh",zoomAdjusted:"Zoom automatically adjusted to",autoRefreshEnabled:"Auto-refresh enabled every",autoRefreshDisabled:"Auto-refresh disabled",autoRefreshIntervalUpdated:"Auto-refresh interval updated to",visualizationUpdated:"Visualization updated",configTitle:"Guard Configuration",protectionPatterns:"Protection Patterns",preferSpecificColor:"Prioritize specific color",excludeSpecificColors:"Don't repair specific colors",loadManagement:"Load Management",minLoadsToWait:"Minimum loads to wait",pixelsPerBatch:"Pixels per batch",spendAllPixelsOnStart:"Spend all pixels on start",waitTimes:"Wait Times",useRandomTimes:"Use random times between batches",minTime:"Minimum time (s)",maxTime:"Maximum time (s)"}};var ft={launcher:{title:"WPlace AutoBOT",autoFarm:"\u{1F33E} Auto-Farm",autoImage:"\u{1F3A8} Auto-Image",autoGuard:"\u{1F6E1}\uFE0F Auto-Guard",selection:"S\xE9lection",user:"Utilisateur",charges:"Charges",backend:"Backend",database:"Base de donn\xE9es",uptime:"Temps actif",close:"Fermer",launch:"Lancer",loading:"Chargement\u2026",executing:"Ex\xE9cution\u2026",downloading:"T\xE9l\xE9chargement du script\u2026",chooseBot:"Choisissez un bot et appuyez sur Lancer",readyToLaunch:"Pr\xEAt \xE0 lancer",loadError:"Erreur de chargement",loadErrorMsg:"Impossible de charger le bot s\xE9lectionn\xE9. V\xE9rifiez votre connexion ou r\xE9essayez.",checking:"\u{1F504} V\xE9rification...",online:"\u{1F7E2} En ligne",offline:"\u{1F534} Hors ligne",ok:"\u{1F7E2} OK",error:"\u{1F534} Erreur",unknown:"-",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"T\xE9l\xE9charger Logs",clearLogs:"Effacer Logs",closeLogs:"Fermer"},image:{title:"WPlace Auto-Image",initBot:"Initialiser Auto-BOT",uploadImage:"T\xE9l\xE9charger Image",resizeImage:"Redimensionner Image",selectPosition:"S\xE9lectionner Position",startPainting:"Commencer Peinture",stopPainting:"Arr\xEAter Peinture",saveProgress:"Sauvegarder Progr\xE8s",loadProgress:"Charger Progr\xE8s",checkingColors:"\u{1F50D} V\xE9rification des couleurs disponibles...",noColorsFound:"\u274C Ouvrez la palette de couleurs sur le site et r\xE9essayez!",colorsFound:"\u2705 {count} couleurs disponibles trouv\xE9es",loadingImage:"\u{1F5BC}\uFE0F Chargement de l'image...",imageLoaded:"\u2705 Image charg\xE9e avec {count} pixels valides",imageError:"\u274C Erreur lors du chargement de l'image",selectPositionAlert:"Peignez le premier pixel \xE0 l'emplacement o\xF9 vous voulez que l'art commence!",waitingPosition:"\u{1F446} En attente que vous peigniez le pixel de r\xE9f\xE9rence...",positionSet:"\u2705 Position d\xE9finie avec succ\xE8s!",positionTimeout:"\u274C D\xE9lai d\xE9pass\xE9 pour la s\xE9lection de position",positionDetected:"\u{1F3AF} Position d\xE9tect\xE9e, traitement...",positionError:"\u274C Erreur d\xE9tectant la position, essayez \xE0 nouveau",startPaintingMsg:"\u{1F3A8} D\xE9but de la peinture...",paintingProgress:"\u{1F9F1} Progr\xE8s: {painted}/{total} pixels...",noCharges:"\u231B Aucune charge. Attendre {time}...",paintingStopped:"\u23F9\uFE0F Peinture arr\xEAt\xE9e par l'utilisateur",paintingComplete:"\u2705 Peinture termin\xE9e! {count} pixels peints.",paintingError:"\u274C Erreur pendant la peinture",missingRequirements:"\u274C Chargez une image et s\xE9lectionnez une position d'abord",progress:"Progr\xE8s",userName:"Usager",pixels:"Pixels",charges:"Charges",estimatedTime:"Temps estim\xE9",initMessage:"Cliquez sur 'Initialiser Auto-BOT' pour commencer",waitingInit:"En attente d'initialisation...",resizeSuccess:"\u2705 Image redimensionn\xE9e \xE0 {width}x{height}",paintingPaused:"\u23F8\uFE0F Peinture mise en pause \xE0 la position X: {x}, Y: {y}",pixelsPerBatch:"Pixels par lot",batchSize:"Taille du lot",nextBatchTime:"Prochain lot dans",useAllCharges:"Utiliser toutes les charges disponibles",showOverlay:"Afficher l'overlay",maxCharges:"Charges max par lot",waitingForCharges:"\u23F3 En attente de charges: {current}/{needed}",timeRemaining:"Temps restant",cooldownWaiting:"\u23F3 Attendre {time} pour continuer...",progressSaved:"\u2705 Progr\xE8s sauvegard\xE9 sous {filename}",progressLoaded:"\u2705 Progr\xE8s charg\xE9: {painted}/{total} pixels peints",progressLoadError:"\u274C Erreur lors du chargement du progr\xE8s: {error}",progressSaveError:"\u274C Erreur lors de la sauvegarde du progr\xE8s: {error}",confirmSaveProgress:"Voulez-vous sauvegarder le progr\xE8s actuel avant d'arr\xEAter?",saveProgressTitle:"Sauvegarder Progr\xE8s",discardProgress:"Abandonner",cancel:"Annuler",minimize:"Minimiser",width:"Largeur",height:"Hauteur",keepAspect:"Garder les proportions",apply:"Appliquer",overlayOn:"Overlay : ON",overlayOff:"Overlay : OFF",passCompleted:"\u2705 Passage termin\xE9: {painted} pixels peints | Progr\xE8s: {percent}% ({current}/{total})",waitingChargesRegen:"\u23F3 Attente de r\xE9g\xE9n\xE9ration des charges: {current}/{needed} - Temps: {time}",waitingChargesCountdown:"\u23F3 Attente des charges: {current}/{needed} - Restant: {time}",autoInitializing:"\u{1F916} Initialisation automatique...",autoInitSuccess:"\u2705 Bot d\xE9marr\xE9 automatiquement",autoInitFailed:"\u26A0\uFE0F Impossible de d\xE9marrer automatiquement. Utilisez le bouton manuel.",paletteDetected:"\u{1F3A8} Palette de couleurs d\xE9tect\xE9e",paletteNotFound:"\u{1F50D} Recherche de la palette de couleurs...",clickingPaintButton:"\u{1F446} Clic sur le bouton Paint...",paintButtonNotFound:"\u274C Bouton Paint introuvable",manualInitRequired:"\u{1F527} Initialisation manuelle requise",retryAttempt:"\u{1F504} Tentative {attempt}/{maxAttempts} dans {delay}s...",retryError:"\u{1F4A5} Erreur dans tentative {attempt}/{maxAttempts}, nouvel essai dans {delay}s...",retryFailed:"\u274C \xC9chec apr\xE8s {maxAttempts} tentatives. Continuant avec le lot suivant...",networkError:"\u{1F310} Erreur r\xE9seau. Nouvel essai...",serverError:"\u{1F525} Erreur serveur. Nouvel essai...",timeoutError:"\u23F0 D\xE9lai d\u2019attente du serveur, nouvelle tentative...",protectionEnabled:"Protection activ\xE9e",protectionDisabled:"Protection d\xE9sactiv\xE9e",paintPattern:"Motif de peinture",patternLinearStart:"Lin\xE9aire (D\xE9but)",patternLinearEnd:"Lin\xE9aire (Fin)",patternRandom:"Al\xE9atoire",patternCenterOut:"Centre vers l\u2019ext\xE9rieur",patternCornersFirst:"Coins d\u2019abord",patternSpiral:"Spirale",solid:"Plein",stripes:"Rayures",checkerboard:"Damier",gradient:"D\xE9grad\xE9",dots:"Points",waves:"Vagues",spiral:"Spirale",mosaic:"Mosa\xEFque",bricks:"Briques",zigzag:"Zigzag",protectingDrawing:"Protection du dessin...",changesDetected:"\u{1F6A8} {count} changements d\xE9tect\xE9s dans le dessin",repairing:"\u{1F527} R\xE9paration de {count} pixels modifi\xE9s...",repairCompleted:"\u2705 R\xE9paration termin\xE9e : {count} pixels",noChargesForRepair:"\u26A1 Pas de frais pour la r\xE9paration, en attente...",protectionPriority:"\u{1F6E1}\uFE0F Priorit\xE9 \xE0 la protection activ\xE9e",patternApplied:"Motif appliqu\xE9",customPattern:"Motif personnalis\xE9",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"T\xE9l\xE9charger Logs",clearLogs:"Effacer Logs",closeLogs:"Fermer"},farm:{title:"WPlace Farm Bot",start:"D\xE9marrer",stop:"Arr\xEAter",stopped:"Bot arr\xEAt\xE9",calibrate:"Calibrer",paintOnce:"Une fois",checkingStatus:"V\xE9rification du statut...",configuration:"Configuration",delay:"D\xE9lai (ms)",pixelsPerBatch:"Pixels/lot",minCharges:"Charges min",colorMode:"Mode couleur",random:"Al\xE9atoire",fixed:"Fixe",range:"Plage",fixedColor:"Couleur fixe",advanced:"Avanc\xE9",tileX:"Tuile X",tileY:"Tuile Y",customPalette:"Palette personnalis\xE9e",paletteExample:"ex: #FF0000,#00FF00,#0000FF",capture:"Capturer",painted:"Peints",charges:"Charges",retries:"\xC9checs",tile:"Tuile",configSaved:"Configuration sauvegard\xE9e",configLoaded:"Configuration charg\xE9e",configReset:"Configuration r\xE9initialis\xE9e",captureInstructions:"Peindre un pixel manuellement pour capturer les coordonn\xE9es...",backendOnline:"Backend En ligne",backendOffline:"Backend Hors ligne",startingBot:"D\xE9marrage du bot...",stoppingBot:"Arr\xEAt du bot...",calibrating:"Calibrage...",alreadyRunning:"Auto-Farm est d\xE9j\xE0 en cours d'ex\xE9cution.",imageRunningWarning:"Auto-Image est en cours d'ex\xE9cution. Fermez-le avant de d\xE9marrer Auto-Farm.",selectPosition:"S\xE9lectionner Zone",selectPositionAlert:"\u{1F3AF} Peignez un pixel dans une zone VIDE de la carte pour d\xE9finir la zone de farming",waitingPosition:"\u{1F446} En attente que vous peigniez le pixel de r\xE9f\xE9rence...",positionSet:"\u2705 Zone d\xE9finie! Rayon: 500px",positionTimeout:"\u274C D\xE9lai d\xE9pass\xE9 pour la s\xE9lection de zone",missingPosition:"\u274C S\xE9lectionnez une zone d'abord en utilisant 'S\xE9lectionner Zone'",farmRadius:"Rayon farm",positionInfo:"Zone actuelle",farmingInRadius:"\u{1F33E} Farming dans un rayon de {radius}px depuis ({x},{y})",selectEmptyArea:"\u26A0\uFE0F IMPORTANT: S\xE9lectionnez une zone VIDE pour \xE9viter les conflits",noPosition:"Aucune zone",currentZone:"Zone: ({x},{y})",autoSelectPosition:"\u{1F3AF} S\xE9lectionnez une zone d'abord. Peignez un pixel sur la carte pour d\xE9finir la zone de farming",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"T\xE9l\xE9charger Logs",clearLogs:"Effacer Logs",closeLogs:"Fermer"},common:{yes:"Oui",no:"Non",ok:"OK",cancel:"Annuler",close:"Fermer",save:"Sauvegarder",load:"Charger",delete:"Supprimer",edit:"Modifier",start:"D\xE9marrer",stop:"Arr\xEAter",pause:"Pause",resume:"Reprendre",reset:"R\xE9initialiser",settings:"Param\xE8tres",help:"Aide",about:"\xC0 propos",language:"Langue",loading:"Chargement...",error:"Erreur",success:"Succ\xE8s",warning:"Avertissement",info:"Information",languageChanged:"Langue chang\xE9e en {language}"},guard:{title:"WPlace Auto-Guard",initBot:"Initialiser Guard-BOT",selectArea:"S\xE9lectionner Zone",captureArea:"Capturer Zone",startProtection:"D\xE9marrer Protection",stopProtection:"Arr\xEAter Protection",upperLeft:"Coin Sup\xE9rieur Gauche",lowerRight:"Coin Inf\xE9rieur Droit",protectedPixels:"Pixels Prot\xE9g\xE9s",detectedChanges:"Changements D\xE9tect\xE9s",repairedPixels:"Pixels R\xE9par\xE9s",charges:"Charges",waitingInit:"En attente d'initialisation...",checkingColors:"\u{1F3A8} V\xE9rification des couleurs disponibles...",noColorsFound:"\u274C Aucune couleur trouv\xE9e. Ouvrez la palette de couleurs sur le site.",colorsFound:"\u2705 {count} couleurs disponibles trouv\xE9es",initSuccess:"\u2705 Guard-BOT initialis\xE9 avec succ\xE8s",initError:"\u274C Erreur lors de l'initialisation de Guard-BOT",invalidCoords:"\u274C Coordonn\xE9es invalides",invalidArea:"\u274C La zone doit avoir le coin sup\xE9rieur gauche inf\xE9rieur au coin inf\xE9rieur droit",areaTooLarge:"\u274C Zone trop grande: {size} pixels (maximum: {max})",capturingArea:"\u{1F4F8} Capture de la zone de protection...",areaCaptured:"\u2705 Zone captur\xE9e: {count} pixels sous protection",captureError:"\u274C Erreur lors de la capture de zone: {error}",captureFirst:"\u274C Capturez d'abord une zone de protection",protectionStarted:"\u{1F6E1}\uFE0F Protection d\xE9marr\xE9e - surveillance de la zone",protectionStopped:"\u23F9\uFE0F Protection arr\xEAt\xE9e",noChanges:"\u2705 Zone prot\xE9g\xE9e - aucun changement d\xE9tect\xE9",changesDetected:"\u{1F6A8} {count} changements d\xE9tect\xE9s dans la zone prot\xE9g\xE9e",repairing:"\u{1F6E0}\uFE0F R\xE9paration de {count} pixels alt\xE9r\xE9s...",repairedSuccess:"\u2705 {count} pixels r\xE9par\xE9s avec succ\xE8s",repairError:"\u274C Erreur lors de la r\xE9paration des pixels: {error}",noCharges:"\u26A0\uFE0F Charges insuffisantes pour r\xE9parer les changements",checkingChanges:"\u{1F50D} V\xE9rification des changements dans la zone prot\xE9g\xE9e...",errorChecking:"\u274C Erreur lors de la v\xE9rification des changements: {error}",guardActive:"\u{1F6E1}\uFE0F Gardien actif - zone sous protection",lastCheck:"Derni\xE8re v\xE9rification: {time}",nextCheck:"Prochaine v\xE9rification dans: {time}s",autoInitializing:"\u{1F916} Initialisation automatique...",autoInitSuccess:"\u2705 Guard-BOT d\xE9marr\xE9 automatiquement",autoInitFailed:"\u26A0\uFE0F Impossible de d\xE9marrer automatiquement. Utilisez le bouton manuel.",manualInitRequired:"\u{1F527} Initialisation manuelle requise",paletteDetected:"\u{1F3A8} Palette de couleurs d\xE9tect\xE9e",paletteNotFound:"\u{1F50D} Recherche de la palette de couleurs...",clickingPaintButton:"\u{1F446} Clic sur le bouton Paint...",paintButtonNotFound:"\u274C Bouton Paint introuvable",selectUpperLeft:"\u{1F3AF} Peignez un pixel au coin SUP\xC9RIEUR GAUCHE de la zone \xE0 prot\xE9ger",selectLowerRight:"\u{1F3AF} Maintenant peignez un pixel au coin INF\xC9RIEUR DROIT de la zone",waitingUpperLeft:"\u{1F446} En attente de la s\xE9lection du coin sup\xE9rieur gauche...",waitingLowerRight:"\u{1F446} En attente de la s\xE9lection du coin inf\xE9rieur droit...",upperLeftCaptured:"\u2705 Coin sup\xE9rieur gauche captur\xE9: ({x}, {y})",lowerRightCaptured:"\u2705 Coin inf\xE9rieur droit captur\xE9: ({x}, {y})",selectionTimeout:"\u274C D\xE9lai de s\xE9lection d\xE9pass\xE9",selectionError:"\u274C Erreur de s\xE9lection, veuillez r\xE9essayer",logWindow:"Logs",logWindowTitle:"Logs - {botName}",downloadLogs:"T\xE9l\xE9charger Logs",clearLogs:"Effacer Logs",closeLogs:"Fermer",analysisTitle:"Analyse des Diff\xE9rences - JSON vs Canvas Actuel",correctPixels:"Pixels Corrects",incorrectPixels:"Pixels Incorrects",missingPixels:"Pixels Manquants",showCorrect:"Afficher Corrects",showIncorrect:"Afficher Incorrects",showMissing:"Afficher Manquants",autoRefresh:"Actualisation automatique",zoomAdjusted:"Zoom ajust\xE9 automatiquement \xE0",autoRefreshEnabled:"Actualisation automatique activ\xE9e toutes les",autoRefreshDisabled:"Actualisation automatique d\xE9sactiv\xE9e",autoRefreshIntervalUpdated:"Intervalle d'actualisation automatique mis \xE0 jour \xE0",visualizationUpdated:"Visualisation mise \xE0 jour",configTitle:"Configuration du Guard",protectionPatterns:"Mod\xE8les de Protection",preferSpecificColor:"Prioriser une couleur sp\xE9cifique",excludeSpecificColors:"Ne pas r\xE9parer les couleurs sp\xE9cifiques",loadManagement:"Gestion des Charges",minLoadsToWait:"Minimum de charges \xE0 attendre",pixelsPerBatch:"Pixels par lot",spendAllPixelsOnStart:"D\xE9penser tous les pixels au d\xE9marrage",waitTimes:"Temps d'Attente",useRandomTimes:"Utiliser des temps al\xE9atoires entre les lots",minTime:"Temps minimum (s)",maxTime:"Temps maximum (s)"}};var wt={launcher:{title:"WPlace AutoBOT",autoFarm:"\u{1F33E} \u0410\u0432\u0442\u043E-\u0424\u0430\u0440\u043C",autoImage:"\u{1F3A8} \u0410\u0432\u0442\u043E-\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435",autoGuard:"\u{1F6E1}\uFE0F \u0410\u0432\u0442\u043E-\u0417\u0430\u0449\u0438\u0442\u0430",selection:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E",user:"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C",charges:"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",backend:"\u0411\u044D\u043A\u0435\u043D\u0434",database:"\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445",uptime:"\u0412\u0440\u0435\u043C\u044F \u0440\u0430\u0431\u043E\u0442\u044B",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",launch:"\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",executing:"\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435",downloading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u043A\u0440\u0438\u043F\u0442\u0430...",chooseBot:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0431\u043E\u0442\u0430 \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C",readyToLaunch:"\u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0437\u0430\u043F\u0443\u0441\u043A\u0443",loadError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438",loadErrorMsg:"\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0431\u043E\u0442\u0430. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.",checking:"\u{1F504} \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430...",online:"\u{1F7E2} \u041E\u043D\u043B\u0430\u0439\u043D",offline:"\u{1F534} \u041E\u0444\u043B\u0430\u0439\u043D",ok:"\u{1F7E2} \u041E\u041A",error:"\u{1F534} \u041E\u0448\u0438\u0431\u043A\u0430",unknown:"-",logWindow:"Logs",logWindowTitle:"\u041B\u043E\u0433\u0438 - {botName}",downloadLogs:"\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u041B\u043E\u0433\u0438",clearLogs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u041B\u043E\u0433\u0438",closeLogs:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C"},image:{title:"WPlace \u0410\u0432\u0442\u043E-\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435",initBot:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C Auto-BOT",uploadImage:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435",resizeImage:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F",selectPosition:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043C\u0435\u0441\u0442\u043E \u043D\u0430\u0447\u0430\u043B\u0430",startPainting:"\u041D\u0430\u0447\u0430\u0442\u044C \u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C",stopPainting:"\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u0435",saveProgress:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441",loadProgress:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441",checkingColors:"\u{1F50D} \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0446\u0432\u0435\u0442\u043E\u0432...",noColorsFound:"\u274C \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u0446\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430!",colorsFound:"\u2705 \u041D\u0430\u0439\u0434\u0435\u043D\u043E {count} \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0446\u0432\u0435\u0442\u043E\u0432",loadingImage:"\u{1F5BC}\uFE0F \u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F...",imageLoaded:"\u2705 \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E \u0441 {count} \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C\u0438 \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u043C\u0438",imageError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F",selectPositionAlert:"\u041D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u0441\u0442\u0430\u0440\u0442\u043E\u0432\u044B\u0439 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u0432 \u0442\u043E\u043C \u043C\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0440\u0438\u0441\u0443\u043D\u043E\u043A \u043D\u0430\u0447\u0438\u043D\u0430\u043B\u0441\u044F!",waitingPosition:"\u{1F446} \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0441\u0442\u0430\u0440\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0438\u043A\u0441\u0435\u043B\u044F....",positionSet:"\u2705 \u041F\u043E\u0437\u0438\u0446\u0438\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 \u0443\u0441\u043F\u0435\u0448\u043D\u043E!",positionTimeout:"\u274C \u0422\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u043E\u0437\u0438\u0446\u0438\u0438",positionDetected:"\u{1F3AF} \u041F\u043E\u0437\u0438\u0446\u0438\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u0430, \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430...",positionError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u043E\u0437\u0438\u0446\u0438\u0438, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437",startPaintingMsg:"\u{1F3A8} \u041D\u0430\u0447\u0430\u043B\u043E \u0440\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u044F...",paintingProgress:"\u{1F9F1} \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441: {painted} \u0438\u0437 {total} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439...",noCharges:"\u231B \u041D\u0435\u0442 \u0437\u0430\u0440\u044F\u0434\u043E\u0432. \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 {time}...",paintingStopped:"\u23F9\uFE0F \u0420\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C",paintingComplete:"\u2705 \u0420\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E! {count} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u043D\u0430\u0440\u0438\u0441\u043E\u0432\u0430\u043D\u043E.",paintingError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435 \u0440\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u044F",missingRequirements:"\u274C \u0421\u043F\u0435\u0440\u0432\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0438 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u0435\u0441\u0442\u043E \u043D\u0430\u0447\u0430\u043B\u0430",progress:"\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441",userName:"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C",pixels:"\u041F\u0438\u043A\u0441\u0435\u043B\u0438",charges:"\u0417\u0430\u0440\u044F\u0434\u044B",estimatedTime:"\u041F\u0440\u0435\u0434\u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F",initMessage:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \xAB\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Auto-BOT\xBB, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C",waitingInit:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438...",resizeSuccess:"\u2705 \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E \u0434\u043E {width}x{height}",paintingPaused:"\u23F8\uFE0F \u0420\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u043D\u0430 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 X: {x}, Y: {y}",pixelsPerBatch:"\u041F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u0432 \u043F\u0440\u043E\u0445\u043E\u0434\u0435",batchSize:"\u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u0440\u043E\u0445\u043E\u0434\u0430",nextBatchTime:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043F\u0440\u043E\u0445\u043E\u0434 \u0447\u0435\u0440\u0435\u0437",useAllCharges:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0437\u0430\u0440\u044F\u0434\u044B",showOverlay:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430\u043B\u043E\u0436\u0435\u043D\u0438\u0435",maxCharges:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B-\u0432\u043E \u0437\u0430\u0440\u044F\u0434\u043E\u0432 \u0437\u0430 \u043F\u0440\u043E\u0445\u043E\u0434",waitingForCharges:"\u23F3 \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0437\u0430\u0440\u044F\u0434\u043E\u0432: {current} \u0438\u0437 {needed}",timeRemaining:"\u0412\u0440\u0435\u043C\u0435\u043D\u0438 \u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C",cooldownWaiting:"\u23F3 \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 {time} \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F...",progressSaved:"\u2705 \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D \u043A\u0430\u043A {filename}",progressLoaded:"\u2705 \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D: {painted} \u0438\u0437 {total} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u043D\u0430\u0440\u0438\u0441\u043E\u0432\u0430\u043D\u043E",progressLoadError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430: {error}",progressSaveError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430: {error}",confirmSaveProgress:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u043F\u0435\u0440\u0435\u0434 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u043E\u0439?",saveProgressTitle:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441",discardProgress:"\u041D\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441",cancel:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",minimize:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",width:"\u0428\u0438\u0440\u0438\u043D\u0430",height:"\u0412\u044B\u0441\u043E\u0442\u0430",keepAspect:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0441\u043E\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0435 \u0441\u0442\u043E\u0440\u043E\u043D",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",overlayOn:"\u041D\u0430\u043B\u043E\u0436\u0435\u043D\u0438\u0435: \u0412\u041A\u041B",overlayOff:"\u041D\u0430\u043B\u043E\u0436\u0435\u043D\u0438\u0435: \u0412\u042B\u041A\u041B",passCompleted:"\u2705 \u041F\u0440\u043E\u0446\u0435\u0441\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D: {painted} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u043D\u0430\u0440\u0438\u0441\u043E\u0432\u0430\u043D\u043E | \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441: {percent}% ({current} \u0438\u0437 {total})",waitingChargesRegen:"\u23F3 \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0432\u043E\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0437\u0430\u0440\u044F\u0434\u0430: {current} \u0438\u0437 {needed} - \u0412\u0440\u0435\u043C\u044F: {time}",waitingChargesCountdown:"\u23F3 \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0437\u0430\u0440\u044F\u0434\u043E\u0432: {current} \u0438\u0437 {needed} - \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F: {time}",autoInitializing:"\u{1F916} \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F...",autoInitSuccess:"\u2705 \u0411\u043E\u0442 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0441\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",autoInitFailed:"\u26A0\uFE0F \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u0437\u0430\u043F\u0443\u0441\u043A. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 \u0440\u0443\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430.",paletteDetected:"\u{1F3A8} \u0426\u0432\u0435\u0442\u043E\u0432\u0430\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0430",paletteNotFound:"\u{1F50D} \u041F\u043E\u0438\u0441\u043A \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0430\u043B\u0438\u0442\u0440\u044B...",clickingPaintButton:"\u{1F446} \u041D\u0430\u0436\u0430\u0442\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438 \xABPaint\xBB...",paintButtonNotFound:"\u274C \u041A\u043D\u043E\u043F\u043A\u0430 \xABPaint\xBB \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430",manualInitRequired:"\u{1F527} \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0440\u0443\u0447\u043D\u0430\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F",retryAttempt:"\u{1F504} \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u0430\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0430 {attempt} \u0438\u0437 {maxAttempts} \u0447\u0435\u0440\u0435\u0437 {delay}s...",retryError:"\u{1F4A5} \u041E\u0448\u0438\u0431\u043A\u0430 \u0432 \u043F\u043E\u043F\u044B\u0442\u043A\u0435 {attempt} \u0438\u0437 {maxAttempts}, \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 {delay}s...",retryFailed:"\u274C \u041F\u0440\u043E\u0432\u0430\u043B\u0435\u043D\u043E \u0441\u043F\u0443\u0441\u0442\u044F {maxAttempts} \u043F\u043E\u043F\u044B\u0442\u043E\u043A. \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u0435 \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u043F\u0440\u043E\u0445\u043E\u0434\u0435...",networkError:"\u{1F310} \u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0442\u0438. \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u0430\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0430...",serverError:"\u{1F525} \u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u0430\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0430...",timeoutError:"\u23F0 \u0422\u0430\u0439\u043C-\u0430\u0443\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u0430\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0430...",protectionEnabled:"\u0417\u0430\u0449\u0438\u0442\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430",protectionDisabled:"\u0417\u0430\u0449\u0438\u0442\u0430 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0430",paintPattern:"\u0428\u0430\u0431\u043B\u043E\u043D \u0440\u0438\u0441\u043E\u0432\u0430\u043D\u0438\u044F",patternLinearStart:"\u041B\u0438\u043D\u0435\u0439\u043D\u044B\u0439 (\u043D\u0430\u0447\u0430\u043B\u043E)",patternLinearEnd:"\u041B\u0438\u043D\u0435\u0439\u043D\u044B\u0439 (\u043A\u043E\u043D\u0435\u0446)",patternRandom:"\u0421\u043B\u0443\u0447\u0430\u0439\u043D\u044B\u0439",patternCenterOut:"\u0418\u0437 \u0446\u0435\u043D\u0442\u0440\u0430 \u043D\u0430\u0440\u0443\u0436\u0443",patternCornersFirst:"\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0443\u0433\u043B\u044B",patternSpiral:"\u0421\u043F\u0438\u0440\u0430\u043B\u044C",solid:"\u0421\u043F\u043B\u043E\u0448\u043D\u043E\u0439",stripes:"\u041F\u043E\u043B\u043E\u0441\u044B",checkerboard:"\u0428\u0430\u0445\u043C\u0430\u0442\u043D\u0430\u044F \u0434\u043E\u0441\u043A\u0430",gradient:"\u0413\u0440\u0430\u0434\u0438\u0435\u043D\u0442",dots:"\u0422\u043E\u0447\u043A\u0438",waves:"\u0412\u043E\u043B\u043D\u044B",spiral:"\u0421\u043F\u0438\u0440\u0430\u043B\u044C",mosaic:"\u041C\u043E\u0437\u0430\u0438\u043A\u0430",bricks:"\u041A\u0438\u0440\u043F\u0438\u0447\u0438",zigzag:"\u0417\u0438\u0433\u0437\u0430\u0433",protectingDrawing:"\u0417\u0430\u0449\u0438\u0442\u0430 \u0440\u0438\u0441\u0443\u043D\u043A\u0430...",changesDetected:"\u{1F6A8} \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439: {count}",repairing:"\u{1F527} \u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 {count} \u0438\u0437\u043C\u0435\u043D\u0451\u043D\u043D\u044B\u0445 \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439...",repairCompleted:"\u2705 \u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E: {count} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439",noChargesForRepair:"\u26A1 \u041A\u043E\u043C\u0438\u0441\u0441\u0438\u0439 \u0437\u0430 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u0435\u0442, \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0435...",protectionPriority:"\u{1F6E1}\uFE0F \u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D",patternApplied:"\u0428\u0430\u0431\u043B\u043E\u043D \u043F\u0440\u0438\u043C\u0435\u043D\u0451\u043D",customPattern:"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0448\u0430\u0431\u043B\u043E\u043D",logWindow:"Logs",logWindowTitle:"\u041B\u043E\u0433\u0438 - {botName}",downloadLogs:"\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u041B\u043E\u0433\u0438",clearLogs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u041B\u043E\u0433\u0438",closeLogs:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C"},farm:{title:"WPlace \u0410\u0432\u0442\u043E-\u0424\u0430\u0440\u043C",start:"\u041D\u0430\u0447\u0430\u0442\u044C",stop:"\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C",stopped:"\u0411\u043E\u0442 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D",calibrate:"\u041A\u0430\u043B\u0438\u0431\u0440\u043E\u0432\u0430\u0442\u044C",paintOnce:"\u0415\u0434\u0438\u043D\u043E\u0440\u0430\u0437\u043E\u0432\u043E",checkingStatus:"\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430...",configuration:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F",delay:"\u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 (\u043C\u0441)",pixelsPerBatch:"\u041F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u0437\u0430 \u043F\u0440\u043E\u0445\u043E\u0434",minCharges:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B-\u0432\u043E",colorMode:"\u0420\u0435\u0436\u0438\u043C \u0446\u0432\u0435\u0442\u043E\u0432",random:"\u0421\u043B\u0443\u0447\u0430\u0439\u043D\u044B\u0439",fixed:"\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439",range:"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D",fixedColor:"\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0446\u0432\u0435\u0442",advanced:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0435",tileX:"\u041F\u043B\u0438\u0442\u043A\u0430 X",tileY:"\u041F\u043B\u0438\u0442\u043A\u0430 Y",customPalette:"\u0421\u0432\u043E\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u0430",paletteExample:"\u043F\u0440\u0438\u043C\u0435\u0440: #FF0000,#00FF00,#0000FF",capture:"\u0417\u0430\u0445\u0432\u0430\u0442",painted:"\u0417\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043E",charges:"\u0417\u0430\u0440\u044F\u0434\u044B",retries:"\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u044B\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0438",tile:"\u041F\u043B\u0438\u0442\u043A\u0430",configSaved:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430",configLoaded:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u0430",configReset:"\u0421\u0431\u0440\u043E\u0441 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438",captureInstructions:"\u041D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u0434\u043B\u044F \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043A\u043E\u043E\u0440\u0434\u0438\u043D\u0430\u0442...",backendOnline:"\u0411\u044D\u043A\u044D\u043D\u0434 \u041E\u043D\u043B\u0430\u0439\u043D",backendOffline:"\u0411\u044D\u043A\u044D\u043D\u0434 \u041E\u0444\u043B\u0430\u0439\u043D",startingBot:"\u0417\u0430\u043F\u0443\u0441\u043A \u0431\u043E\u0442\u0430...",stoppingBot:"\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0431\u043E\u0442\u0430...",calibrating:"\u041A\u0430\u043B\u0438\u0431\u0440\u043E\u0432\u043A\u0430...",alreadyRunning:"\u0410\u0432\u0442\u043E-\u0424\u0430\u0440\u043C \u0443\u0436\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D",imageRunningWarning:"\u0410\u0432\u0442\u043E-\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u043E. \u0417\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u0435\u0433\u043E \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u043F\u0443\u0441\u043A\u043E\u043C \u0410\u0432\u0442\u043E-\u0424\u0430\u0440\u043C\u0430.",selectPosition:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C",selectPositionAlert:"\u{1F3AF} \u041D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u0432 \u041F\u0423\u0421\u0422\u041E\u0419 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043A\u0430\u0440\u0442\u044B, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u044C \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0444\u0430\u0440\u043C\u0430.",waitingPosition:"\u{1F446} \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0441\u0442\u0430\u0440\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u0438\u043A\u0441\u0435\u043B\u044F....",positionSet:"\u2705 \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430! \u0420\u0430\u0434\u0438\u0443\u0441: 500px",positionTimeout:"\u274C \u0422\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u044B\u0431\u043E\u0440\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",missingPosition:"\u274C \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \xAB\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043E\u0431\u043B\u0430\u0441\u0442\u044C\xBB",farmRadius:"\u0420\u0430\u0434\u0438\u0443\u0441 \u0444\u0430\u0440\u043C\u0430",positionInfo:"\u0422\u0435\u043A\u0443\u0449\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C",farmingInRadius:"\u{1F33E} \u0424\u0430\u0440\u043C \u0432 \u0440\u0430\u0434\u0438\u0443\u0441\u0435 {radius}px \u043E\u0442 ({x},{y})",selectEmptyArea:"\u26A0\uFE0F \u0412\u0410\u0416\u041D\u041E: \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u041F\u0423\u0421\u0422\u0423\u042E \u043E\u0431\u043B\u0430\u0441\u0442\u044C, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044C \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u043E\u0432.",noPosition:"\u041D\u0435\u0442 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",currentZone:"\u041E\u0431\u043B\u0430\u0441\u0442\u044C: ({x},{y})",autoSelectPosition:"\u{1F3AF} \u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u044C. \u041D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u043D\u0430 \u043A\u0430\u0440\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u044C \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0444\u0430\u0440\u043C\u0430.",logWindow:"Logs",logWindowTitle:"\u041B\u043E\u0433\u0438 - {botName}",downloadLogs:"\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u041B\u043E\u0433\u0438",clearLogs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u041B\u043E\u0433\u0438",closeLogs:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C"},common:{yes:"\u0414\u0430",no:"\u041D\u0435\u0442",ok:"\u041E\u041A",cancel:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",load:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C",delete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",edit:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C",start:"\u041D\u0430\u0447\u0430\u0442\u044C",stop:"\u0417\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u044C",pause:"\u041F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C",resume:"\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C",reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",settings:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438",help:"\u041F\u043E\u043C\u043E\u0449\u044C",about:"\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F",language:"\u042F\u0437\u044B\u043A",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",error:"\u041E\u0448\u0438\u0431\u043A\u0430",success:"\u0423\u0441\u043F\u0435\u0445",warning:"\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435",info:"\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F",languageChanged:"\u042F\u0437\u044B\u043A \u0438\u0437\u043C\u0435\u043D\u0435\u043D \u043D\u0430 {language}"},guard:{title:"WPlace \u0410\u0432\u0442\u043E-\u0417\u0430\u0449\u0438\u0442\u0430",initBot:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C Guard-BOT",selectArea:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u041E\u0431\u043B\u0430\u0441\u0442\u044C",captureArea:"\u0417\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C \u041E\u0431\u043B\u0430\u0441\u0442\u044C",startProtection:"\u041D\u0430\u0447\u0430\u0442\u044C \u0417\u0430\u0449\u0438\u0442\u0443",stopProtection:"\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0417\u0430\u0449\u0438\u0442\u0443",upperLeft:"\u0412\u0435\u0440\u0445\u043D\u0438\u0439 \u041B\u0435\u0432\u044B\u0439 \u0423\u0433\u043E\u043B",lowerRight:"\u041D\u0438\u0436\u043D\u0438\u0439 \u041F\u0440\u0430\u0432\u044B\u0439 \u0423\u0433\u043E\u043B",protectedPixels:"\u0417\u0430\u0449\u0438\u0449\u0435\u043D\u043D\u044B\u0435 \u041F\u0438\u043A\u0441\u0435\u043B\u0438",detectedChanges:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0435 \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",repairedPixels:"\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u041F\u0438\u043A\u0441\u0435\u043B\u0438",charges:"\u0417\u0430\u0440\u044F\u0434\u044B",waitingInit:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438...",checkingColors:"\u{1F3A8} \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0446\u0432\u0435\u0442\u043E\u0432...",noColorsFound:"\u274C \u0426\u0432\u0435\u0442\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u0446\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u0441\u0430\u0439\u0442\u0435.",colorsFound:"\u2705 \u041D\u0430\u0439\u0434\u0435\u043D\u043E {count} \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0446\u0432\u0435\u0442\u043E\u0432",initSuccess:"\u2705 Guard-BOT \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D",initError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 Guard-BOT",invalidCoords:"\u274C \u041D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043A\u043E\u043E\u0440\u0434\u0438\u043D\u0430\u0442\u044B",invalidArea:"\u274C \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u043C\u0435\u0442\u044C \u0432\u0435\u0440\u0445\u043D\u0438\u0439 \u043B\u0435\u0432\u044B\u0439 \u0443\u0433\u043E\u043B \u043C\u0435\u043D\u044C\u0448\u0435 \u043D\u0438\u0436\u043D\u0435\u0433\u043E \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0443\u0433\u043B\u0430",areaTooLarge:"\u274C \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u0430\u044F: {size} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 (\u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C: {max})",capturingArea:"\u{1F4F8} \u0417\u0430\u0445\u0432\u0430\u0442 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0437\u0430\u0449\u0438\u0442\u044B...",areaCaptured:"\u2705 \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u0430: {count} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u043F\u043E\u0434 \u0437\u0430\u0449\u0438\u0442\u043E\u0439",captureError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u0438: {error}",captureFirst:"\u274C \u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0437\u0430\u0449\u0438\u0442\u044B",protectionStarted:"\u{1F6E1}\uFE0F \u0417\u0430\u0449\u0438\u0442\u0430 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430 - \u043C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",protectionStopped:"\u23F9\uFE0F \u0417\u0430\u0449\u0438\u0442\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430",noChanges:"\u2705 \u0417\u0430\u0449\u0438\u0449\u0435\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C - \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E",changesDetected:"\u{1F6A8} {count} \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043D\u043D\u043E\u0439 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",repairing:"\u{1F6E0}\uFE0F \u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 {count} \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445 \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439...",repairedSuccess:"\u2705 \u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E {count} \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439",repairError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439: {error}",noCharges:"\u26A0\uFE0F \u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0437\u0430\u0440\u044F\u0434\u043E\u0432 \u0434\u043B\u044F \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439",checkingChanges:"\u{1F50D} \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043D\u043D\u043E\u0439 \u043E\u0431\u043B\u0430\u0441\u0442\u0438...",errorChecking:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439: {error}",guardActive:"\u{1F6E1}\uFE0F \u0421\u0442\u0440\u0430\u0436 \u0430\u043A\u0442\u0438\u0432\u0435\u043D - \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043F\u043E\u0434 \u0437\u0430\u0449\u0438\u0442\u043E\u0439",lastCheck:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430: {time}",nextCheck:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0447\u0435\u0440\u0435\u0437: {time}\u0441",autoInitializing:"\u{1F916} \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F...",autoInitSuccess:"\u2705 Guard-BOT \u0437\u0430\u043F\u0443\u0449\u0435\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",autoInitFailed:"\u26A0\uFE0F \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 \u0440\u0443\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A\u0430.",manualInitRequired:"\u{1F527} \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0440\u0443\u0447\u043D\u0430\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F",paletteDetected:"\u{1F3A8} \u0426\u0432\u0435\u0442\u043E\u0432\u0430\u044F \u043F\u0430\u043B\u0438\u0442\u0440\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0430",paletteNotFound:"\u{1F50D} \u041F\u043E\u0438\u0441\u043A \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043F\u0430\u043B\u0438\u0442\u0440\u044B...",clickingPaintButton:"\u{1F446} \u041D\u0430\u0436\u0430\u0442\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438 \xABPaint\xBB...",paintButtonNotFound:"\u274C \u041A\u043D\u043E\u043F\u043A\u0430 \xABPaint\xBB \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430",selectUpperLeft:"\u{1F3AF} \u041D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u0432 \u0412\u0415\u0420\u0425\u041D\u0415\u041C \u041B\u0415\u0412\u041E\u041C \u0443\u0433\u043B\u0443 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u0434\u043B\u044F \u0437\u0430\u0449\u0438\u0442\u044B",selectLowerRight:"\u{1F3AF} \u0422\u0435\u043F\u0435\u0440\u044C \u043D\u0430\u0440\u0438\u0441\u0443\u0439\u0442\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u044C \u0432 \u041D\u0418\u0416\u041D\u0415\u041C \u041F\u0420\u0410\u0412\u041E\u041C \u0443\u0433\u043B\u0443 \u043E\u0431\u043B\u0430\u0441\u0442\u0438",waitingUpperLeft:"\u{1F446} \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u043B\u0435\u0432\u043E\u0433\u043E \u0443\u0433\u043B\u0430...",waitingLowerRight:"\u{1F446} \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u043D\u0438\u0436\u043D\u0435\u0433\u043E \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0443\u0433\u043B\u0430...",upperLeftCaptured:"\u2705 \u0412\u0435\u0440\u0445\u043D\u0438\u0439 \u043B\u0435\u0432\u044B\u0439 \u0443\u0433\u043E\u043B \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D: ({x}, {y})",lowerRightCaptured:"\u2705 \u041D\u0438\u0436\u043D\u0438\u0439 \u043F\u0440\u0430\u0432\u044B\u0439 \u0443\u0433\u043E\u043B \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D: ({x}, {y})",selectionTimeout:"\u274C \u0422\u0430\u0439\u043C-\u0430\u0443\u0442 \u0432\u044B\u0431\u043E\u0440\u0430",selectionError:"\u274C \u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u044B\u0431\u043E\u0440\u0430, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430",logWindow:"Logs",logWindowTitle:"\u041B\u043E\u0433\u0438 - {botName}",downloadLogs:"\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u041B\u043E\u0433\u0438",clearLogs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u041B\u043E\u0433\u0438",closeLogs:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",analysisTitle:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0420\u0430\u0437\u043B\u0438\u0447\u0438\u0439 - JSON vs \u0422\u0435\u043A\u0443\u0449\u0438\u0439 Canvas",correctPixels:"\u041F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435 \u041F\u0438\u043A\u0441\u0435\u043B\u0438",incorrectPixels:"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435 \u041F\u0438\u043A\u0441\u0435\u043B\u0438",missingPixels:"\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u041F\u0438\u043A\u0441\u0435\u043B\u0438",showCorrect:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u041F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435",showIncorrect:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435",showMissing:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435",autoRefresh:"\u0410\u0432\u0442\u043E-\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435",zoomAdjusted:"\u041C\u0430\u0441\u0448\u0442\u0430\u0431 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D \u043D\u0430",autoRefreshEnabled:"\u0410\u0432\u0442\u043E-\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043A\u0430\u0436\u0434\u044B\u0435",autoRefreshDisabled:"\u0410\u0432\u0442\u043E-\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E",autoRefreshIntervalUpdated:"\u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u0430\u0432\u0442\u043E-\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D \u0434\u043E",visualizationUpdated:"\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430",configTitle:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F Guard",protectionPatterns:"\u0428\u0430\u0431\u043B\u043E\u043D\u044B \u0417\u0430\u0449\u0438\u0442\u044B",preferSpecificColor:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0446\u0432\u0435\u0442\u0430",excludeSpecificColors:"\u041D\u0435 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0446\u0432\u0435\u0442\u0430",loadManagement:"\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u041D\u0430\u0433\u0440\u0443\u0437\u043A\u043E\u0439",minLoadsToWait:"\u041C\u0438\u043D\u0438\u043C\u0443\u043C \u0437\u0430\u0433\u0440\u0443\u0437\u043E\u043A \u0434\u043B\u044F \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F",pixelsPerBatch:"\u041F\u0438\u043A\u0441\u0435\u043B\u0435\u0439 \u0437\u0430 \u043F\u0430\u0440\u0442\u0438\u044E",spendAllPixelsOnStart:"\u041F\u043E\u0442\u0440\u0430\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u043F\u0438\u043A\u0441\u0435\u043B\u0438 \u043F\u0440\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0435",waitTimes:"\u0412\u0440\u0435\u043C\u044F \u041E\u0436\u0438\u0434\u0430\u043D\u0438\u044F",useRandomTimes:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043C\u0435\u0436\u0434\u0443 \u043F\u0430\u0440\u0442\u0438\u044F\u043C\u0438",minTime:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F (\u0441)",maxTime:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F (\u0441)"}};var yt={launcher:{title:"WPlace \u81EA\u52A8\u673A\u5668\u4EBA",autoFarm:"\u{1F33E} \u81EA\u52A8\u519C\u573A",autoImage:"\u{1F3A8} \u81EA\u52A8\u7ED8\u56FE",autoGuard:"\u{1F6E1}\uFE0F \u81EA\u52A8\u5B88\u62A4",selection:"\u9009\u62E9",user:"\u7528\u6237",charges:"\u6B21\u6570",backend:"\u540E\u7AEF",database:"\u6570\u636E\u5E93",uptime:"\u8FD0\u884C\u65F6\u95F4",close:"\u5173\u95ED",launch:"\u542F\u52A8",loading:"\u52A0\u8F7D\u4E2D\u2026",executing:"\u6267\u884C\u4E2D\u2026",downloading:"\u6B63\u5728\u4E0B\u8F7D\u811A\u672C\u2026",chooseBot:"\u9009\u62E9\u4E00\u4E2A\u673A\u5668\u4EBA\u5E76\u70B9\u51FB\u542F\u52A8",readyToLaunch:"\u51C6\u5907\u542F\u52A8",loadError:"\u52A0\u8F7D\u9519\u8BEF",loadErrorMsg:"\u65E0\u6CD5\u52A0\u8F7D\u6240\u9009\u673A\u5668\u4EBA\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u6216\u91CD\u8BD5\u3002",checking:"\u{1F504} \u68C0\u67E5\u4E2D...",online:"\u{1F7E2} \u5728\u7EBF",offline:"\u{1F534} \u79BB\u7EBF",ok:"\u{1F7E2} \u6B63\u5E38",error:"\u{1F534} \u9519\u8BEF",unknown:"-",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u5FD7\u7A97\u53E3",downloadLogs:"\u4E0B\u8F7D\u65E5\u5FD7",clearLogs:"\u6E05\u9664\u65E5\u5FD7",closeLogs:"\u5173\u95ED"},image:{title:"WPlace \u81EA\u52A8\u7ED8\u56FE",initBot:"\u521D\u59CB\u5316\u81EA\u52A8\u673A\u5668\u4EBA",uploadImage:"\u4E0A\u4F20\u56FE\u7247",resizeImage:"\u8C03\u6574\u56FE\u7247\u5927\u5C0F",selectPosition:"\u9009\u62E9\u4F4D\u7F6E",startPainting:"\u5F00\u59CB\u7ED8\u5236",stopPainting:"\u505C\u6B62\u7ED8\u5236",saveProgress:"\u4FDD\u5B58\u8FDB\u5EA6",loadProgress:"\u52A0\u8F7D\u8FDB\u5EA6",checkingColors:"\u{1F50D} \u68C0\u67E5\u53EF\u7528\u989C\u8272...",noColorsFound:"\u274C \u8BF7\u5728\u7F51\u7AD9\u4E0A\u6253\u5F00\u8C03\u8272\u677F\u540E\u91CD\u8BD5\uFF01",colorsFound:"\u2705 \u627E\u5230 {count} \u79CD\u53EF\u7528\u989C\u8272",loadingImage:"\u{1F5BC}\uFE0F \u6B63\u5728\u52A0\u8F7D\u56FE\u7247...",imageLoaded:"\u2705 \u56FE\u7247\u5DF2\u52A0\u8F7D\uFF0C\u6709\u6548\u50CF\u7D20 {count} \u4E2A",imageError:"\u274C \u56FE\u7247\u52A0\u8F7D\u5931\u8D25",selectPositionAlert:"\u8BF7\u5728\u4F60\u60F3\u5F00\u59CB\u7ED8\u5236\u7684\u5730\u65B9\u6D82\u7B2C\u4E00\u4E2A\u50CF\u7D20\uFF01",waitingPosition:"\u{1F446} \u7B49\u5F85\u4F60\u6D82\u53C2\u8003\u50CF\u7D20...",positionSet:"\u2705 \u4F4D\u7F6E\u8BBE\u7F6E\u6210\u529F\uFF01",positionTimeout:"\u274C \u4F4D\u7F6E\u9009\u62E9\u8D85\u65F6",positionDetected:"\u{1F3AF} \u5DF2\u68C0\u6D4B\u5230\u4F4D\u7F6E\uFF0C\u5904\u7406\u4E2D...",positionError:"\u274C \u4F4D\u7F6E\u68C0\u6D4B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",startPaintingMsg:"\u{1F3A8} \u5F00\u59CB\u7ED8\u5236...",paintingProgress:"\u{1F9F1} \u8FDB\u5EA6: {painted}/{total} \u50CF\u7D20...",noCharges:"\u231B \u6CA1\u6709\u6B21\u6570\u3002\u7B49\u5F85 {time}...",paintingStopped:"\u23F9\uFE0F \u7528\u6237\u5DF2\u505C\u6B62\u7ED8\u5236",paintingComplete:"\u2705 \u7ED8\u5236\u5B8C\u6210\uFF01\u5171\u7ED8\u5236 {count} \u4E2A\u50CF\u7D20\u3002",paintingError:"\u274C \u7ED8\u5236\u8FC7\u7A0B\u4E2D\u51FA\u9519",missingRequirements:"\u274C \u8BF7\u5148\u52A0\u8F7D\u56FE\u7247\u5E76\u9009\u62E9\u4F4D\u7F6E",progress:"\u8FDB\u5EA6",userName:"\u7528\u6237",pixels:"\u50CF\u7D20",charges:"\u6B21\u6570",estimatedTime:"\u9884\u8BA1\u65F6\u95F4",initMessage:"\u70B9\u51FB\u201C\u521D\u59CB\u5316\u81EA\u52A8\u673A\u5668\u4EBA\u201D\u5F00\u59CB",waitingInit:"\u7B49\u5F85\u521D\u59CB\u5316...",resizeSuccess:"\u2705 \u56FE\u7247\u5DF2\u8C03\u6574\u4E3A {width}x{height}",paintingPaused:"\u23F8\uFE0F \u7ED8\u5236\u6682\u505C\u4E8E\u4F4D\u7F6E X: {x}, Y: {y}",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20\u6570",batchSize:"\u6279\u6B21\u5927\u5C0F",nextBatchTime:"\u4E0B\u6B21\u6279\u6B21\u65F6\u95F4",useAllCharges:"\u4F7F\u7528\u6240\u6709\u53EF\u7528\u6B21\u6570",showOverlay:"\u663E\u793A\u8986\u76D6\u5C42",maxCharges:"\u6BCF\u6279\u6700\u5927\u6B21\u6570",waitingForCharges:"\u23F3 \u7B49\u5F85\u6B21\u6570: {current}/{needed}",timeRemaining:"\u5269\u4F59\u65F6\u95F4",cooldownWaiting:"\u23F3 \u7B49\u5F85 {time} \u540E\u7EE7\u7EED...",progressSaved:"\u2705 \u8FDB\u5EA6\u5DF2\u4FDD\u5B58\u4E3A {filename}",progressLoaded:"\u2705 \u5DF2\u52A0\u8F7D\u8FDB\u5EA6: {painted}/{total} \u50CF\u7D20\u5DF2\u7ED8\u5236",progressLoadError:"\u274C \u52A0\u8F7D\u8FDB\u5EA6\u5931\u8D25: {error}",progressSaveError:"\u274C \u4FDD\u5B58\u8FDB\u5EA6\u5931\u8D25: {error}",confirmSaveProgress:"\u5728\u505C\u6B62\u4E4B\u524D\u8981\u4FDD\u5B58\u5F53\u524D\u8FDB\u5EA6\u5417\uFF1F",saveProgressTitle:"\u4FDD\u5B58\u8FDB\u5EA6",discardProgress:"\u653E\u5F03",cancel:"\u53D6\u6D88",minimize:"\u6700\u5C0F\u5316",width:"\u5BBD\u5EA6",height:"\u9AD8\u5EA6",keepAspect:"\u4FDD\u6301\u7EB5\u6A2A\u6BD4",apply:"\u5E94\u7528",overlayOn:"\u8986\u76D6\u5C42: \u5F00\u542F",overlayOff:"\u8986\u76D6\u5C42: \u5173\u95ED",passCompleted:"\u2705 \u6279\u6B21\u5B8C\u6210: \u5DF2\u7ED8\u5236 {painted} \u50CF\u7D20 | \u8FDB\u5EA6: {percent}% ({current}/{total})",waitingChargesRegen:"\u23F3 \u7B49\u5F85\u6B21\u6570\u6062\u590D: {current}/{needed} - \u65F6\u95F4: {time}",waitingChargesCountdown:"\u23F3 \u7B49\u5F85\u6B21\u6570: {current}/{needed} - \u5269\u4F59: {time}",autoInitializing:"\u{1F916} \u6B63\u5728\u81EA\u52A8\u521D\u59CB\u5316...",autoInitSuccess:"\u2705 \u81EA\u52A8\u542F\u52A8\u6210\u529F",autoInitFailed:"\u26A0\uFE0F \u65E0\u6CD5\u81EA\u52A8\u542F\u52A8\uFF0C\u8BF7\u624B\u52A8\u64CD\u4F5C\u3002",paletteDetected:"\u{1F3A8} \u5DF2\u68C0\u6D4B\u5230\u8C03\u8272\u677F",paletteNotFound:"\u{1F50D} \u6B63\u5728\u641C\u7D22\u8C03\u8272\u677F...",clickingPaintButton:"\u{1F446} \u6B63\u5728\u70B9\u51FB\u7ED8\u5236\u6309\u94AE...",paintButtonNotFound:"\u274C \u672A\u627E\u5230\u7ED8\u5236\u6309\u94AE",manualInitRequired:"\u{1F527} \u9700\u8981\u624B\u52A8\u521D\u59CB\u5316",retryAttempt:"\u{1F504} \u91CD\u8BD5 {attempt}/{maxAttempts}\uFF0C\u7B49\u5F85 {delay} \u79D2...",retryError:"\u{1F4A5} \u7B2C {attempt}/{maxAttempts} \u6B21\u5C1D\u8BD5\u51FA\u9519\uFF0C\u5C06\u5728 {delay} \u79D2\u540E\u91CD\u8BD5...",retryFailed:"\u274C \u8D85\u8FC7 {maxAttempts} \u6B21\u5C1D\u8BD5\u5931\u8D25\u3002\u7EE7\u7EED\u4E0B\u4E00\u6279...",networkError:"\u{1F310} \u7F51\u7EDC\u9519\u8BEF\uFF0C\u6B63\u5728\u91CD\u8BD5...",serverError:"\u{1F525} \u670D\u52A1\u5668\u9519\u8BEF\uFF0C\u6B63\u5728\u91CD\u8BD5...",timeoutError:"\u23F0 \u670D\u52A1\u5668\u8D85\u65F6\uFF0C\u6B63\u5728\u91CD\u8BD5...",protectionEnabled:"\u5DF2\u5F00\u542F\u4FDD\u62A4",protectionDisabled:"\u5DF2\u5173\u95ED\u4FDD\u62A4",paintPattern:"\u7ED8\u5236\u6A21\u5F0F",patternLinearStart:"\u7EBF\u6027\uFF08\u8D77\u70B9\uFF09",patternLinearEnd:"\u7EBF\u6027\uFF08\u7EC8\u70B9\uFF09",patternRandom:"\u968F\u673A",patternCenterOut:"\u4ECE\u4E2D\u5FC3\u5411\u5916",patternCornersFirst:"\u5148\u89D2\u843D",patternSpiral:"\u87BA\u65CB",solid:"\u5B9E\u5FC3",stripes:"\u6761\u7EB9",checkerboard:"\u68CB\u76D8\u683C",gradient:"\u6E10\u53D8",dots:"\u70B9\u72B6",waves:"\u6CE2\u6D6A",spiral:"\u87BA\u65CB",mosaic:"\u9A6C\u8D5B\u514B",bricks:"\u7816\u5757",zigzag:"\u4E4B\u5B57\u5F62",protectingDrawing:"\u6B63\u5728\u4FDD\u62A4\u56FE\u7A3F...",changesDetected:"\u{1F6A8} \u68C0\u6D4B\u5230 {count} \u5904\u66F4\u6539",repairing:"\u{1F527} \u6B63\u5728\u4FEE\u590D {count} \u4E2A\u66F4\u6539\u7684\u50CF\u7D20...",repairCompleted:"\u2705 \u4FEE\u590D\u5B8C\u6210\uFF1A{count} \u4E2A\u50CF\u7D20",noChargesForRepair:"\u26A1 \u4FEE\u590D\u4E0D\u6D88\u8017\u70B9\u6570\uFF0C\u7B49\u5F85\u4E2D...",protectionPriority:"\u{1F6E1}\uFE0F \u5DF2\u542F\u7528\u4FDD\u62A4\u4F18\u5148",patternApplied:"\u5DF2\u5E94\u7528\u6A21\u5F0F",customPattern:"\u81EA\u5B9A\u4E49\u6A21\u5F0F",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u5FD7\u7A97\u53E3",downloadLogs:"\u4E0B\u8F7D\u65E5\u5FD7",clearLogs:"\u6E05\u9664\u65E5\u5FD7",closeLogs:"\u5173\u95ED"},farm:{title:"WPlace \u519C\u573A\u673A\u5668\u4EBA",start:"\u5F00\u59CB",stop:"\u505C\u6B62",stopped:"\u673A\u5668\u4EBA\u5DF2\u505C\u6B62",calibrate:"\u6821\u51C6",paintOnce:"\u4E00\u6B21",checkingStatus:"\u68C0\u67E5\u72B6\u6001\u4E2D...",configuration:"\u914D\u7F6E",delay:"\u5EF6\u8FDF (\u6BEB\u79D2)",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20",minCharges:"\u6700\u5C11\u6B21\u6570",colorMode:"\u989C\u8272\u6A21\u5F0F",random:"\u968F\u673A",fixed:"\u56FA\u5B9A",range:"\u8303\u56F4",fixedColor:"\u56FA\u5B9A\u989C\u8272",advanced:"\u9AD8\u7EA7",tileX:"\u74E6\u7247 X",tileY:"\u74E6\u7247 Y",customPalette:"\u81EA\u5B9A\u4E49\u8C03\u8272\u677F",paletteExample:"\u4F8B\u5982: #FF0000,#00FF00,#0000FF",capture:"\u6355\u83B7",painted:"\u5DF2\u7ED8\u5236",charges:"\u6B21\u6570",retries:"\u91CD\u8BD5",tile:"\u74E6\u7247",configSaved:"\u914D\u7F6E\u5DF2\u4FDD\u5B58",configLoaded:"\u914D\u7F6E\u5DF2\u52A0\u8F7D",configReset:"\u914D\u7F6E\u5DF2\u91CD\u7F6E",captureInstructions:"\u8BF7\u624B\u52A8\u7ED8\u5236\u4E00\u4E2A\u50CF\u7D20\u4EE5\u6355\u83B7\u5750\u6807...",backendOnline:"\u540E\u7AEF\u5728\u7EBF",backendOffline:"\u540E\u7AEF\u79BB\u7EBF",startingBot:"\u6B63\u5728\u542F\u52A8\u673A\u5668\u4EBA...",stoppingBot:"\u6B63\u5728\u505C\u6B62\u673A\u5668\u4EBA...",calibrating:"\u6821\u51C6\u4E2D...",alreadyRunning:"\u81EA\u52A8\u519C\u573A\u5DF2\u5728\u8FD0\u884C\u3002",imageRunningWarning:"\u81EA\u52A8\u7ED8\u56FE\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148\u5173\u95ED\u518D\u542F\u52A8\u81EA\u52A8\u519C\u573A\u3002",selectPosition:"\u9009\u62E9\u533A\u57DF",selectPositionAlert:"\u{1F3AF} \u5728\u5730\u56FE\u7684\u7A7A\u767D\u533A\u57DF\u6D82\u4E00\u4E2A\u50CF\u7D20\u4EE5\u8BBE\u7F6E\u519C\u573A\u533A\u57DF",waitingPosition:"\u{1F446} \u7B49\u5F85\u4F60\u6D82\u53C2\u8003\u50CF\u7D20...",positionSet:"\u2705 \u533A\u57DF\u8BBE\u7F6E\u6210\u529F\uFF01\u534A\u5F84: 500px",positionTimeout:"\u274C \u533A\u57DF\u9009\u62E9\u8D85\u65F6",missingPosition:"\u274C \u8BF7\u5148\u9009\u62E9\u533A\u57DF\uFF08\u4F7F\u7528\u201C\u9009\u62E9\u533A\u57DF\u201D\u6309\u94AE\uFF09",farmRadius:"\u519C\u573A\u534A\u5F84",positionInfo:"\u5F53\u524D\u533A\u57DF",farmingInRadius:"\u{1F33E} \u6B63\u5728\u4EE5\u534A\u5F84 {radius}px \u5728 ({x},{y}) \u519C\u573A",selectEmptyArea:"\u26A0\uFE0F \u91CD\u8981: \u8BF7\u9009\u62E9\u7A7A\u767D\u533A\u57DF\u4EE5\u907F\u514D\u51B2\u7A81",noPosition:"\u672A\u9009\u62E9\u533A\u57DF",currentZone:"\u533A\u57DF: ({x},{y})",autoSelectPosition:"\u{1F3AF} \u8BF7\u5148\u9009\u62E9\u533A\u57DF\uFF0C\u5728\u5730\u56FE\u4E0A\u6D82\u4E00\u4E2A\u50CF\u7D20\u4EE5\u8BBE\u7F6E\u519C\u573A\u533A\u57DF",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u5FD7\u7A97\u53E3",downloadLogs:"\u4E0B\u8F7D\u65E5\u5FD7",clearLogs:"\u6E05\u9664\u65E5\u5FD7",closeLogs:"\u5173\u95ED"},common:{yes:"\u662F",no:"\u5426",ok:"\u786E\u8BA4",cancel:"\u53D6\u6D88",close:"\u5173\u95ED",save:"\u4FDD\u5B58",load:"\u52A0\u8F7D",delete:"\u5220\u9664",edit:"\u7F16\u8F91",start:"\u5F00\u59CB",stop:"\u505C\u6B62",pause:"\u6682\u505C",resume:"\u7EE7\u7EED",reset:"\u91CD\u7F6E",settings:"\u8BBE\u7F6E",help:"\u5E2E\u52A9",about:"\u5173\u4E8E",language:"\u8BED\u8A00",loading:"\u52A0\u8F7D\u4E2D...",error:"\u9519\u8BEF",success:"\u6210\u529F",warning:"\u8B66\u544A",info:"\u4FE1\u606F",languageChanged:"\u8BED\u8A00\u5DF2\u5207\u6362\u4E3A {language}"},guard:{title:"WPlace \u81EA\u52A8\u5B88\u62A4",initBot:"\u521D\u59CB\u5316\u5B88\u62A4\u673A\u5668\u4EBA",selectArea:"\u9009\u62E9\u533A\u57DF",captureArea:"\u6355\u83B7\u533A\u57DF",startProtection:"\u5F00\u59CB\u5B88\u62A4",stopProtection:"\u505C\u6B62\u5B88\u62A4",upperLeft:"\u5DE6\u4E0A\u89D2",lowerRight:"\u53F3\u4E0B\u89D2",protectedPixels:"\u53D7\u4FDD\u62A4\u50CF\u7D20",detectedChanges:"\u68C0\u6D4B\u5230\u7684\u53D8\u5316",repairedPixels:"\u4FEE\u590D\u7684\u50CF\u7D20",charges:"\u6B21\u6570",waitingInit:"\u7B49\u5F85\u521D\u59CB\u5316...",checkingColors:"\u{1F3A8} \u68C0\u67E5\u53EF\u7528\u989C\u8272...",noColorsFound:"\u274C \u672A\u627E\u5230\u989C\u8272\uFF0C\u8BF7\u5728\u7F51\u7AD9\u4E0A\u6253\u5F00\u8C03\u8272\u677F\u3002",colorsFound:"\u2705 \u627E\u5230 {count} \u79CD\u53EF\u7528\u989C\u8272",initSuccess:"\u2705 \u5B88\u62A4\u673A\u5668\u4EBA\u521D\u59CB\u5316\u6210\u529F",initError:"\u274C \u5B88\u62A4\u673A\u5668\u4EBA\u521D\u59CB\u5316\u5931\u8D25",invalidCoords:"\u274C \u5750\u6807\u65E0\u6548",invalidArea:"\u274C \u533A\u57DF\u65E0\u6548\uFF0C\u5DE6\u4E0A\u89D2\u5FC5\u987B\u5C0F\u4E8E\u53F3\u4E0B\u89D2",areaTooLarge:"\u274C \u533A\u57DF\u8FC7\u5927: {size} \u50CF\u7D20 (\u6700\u5927: {max})",capturingArea:"\u{1F4F8} \u6355\u83B7\u5B88\u62A4\u533A\u57DF\u4E2D...",areaCaptured:"\u2705 \u533A\u57DF\u6355\u83B7\u6210\u529F: {count} \u50CF\u7D20\u53D7\u4FDD\u62A4",captureError:"\u274C \u6355\u83B7\u533A\u57DF\u51FA\u9519: {error}",captureFirst:"\u274C \u8BF7\u5148\u6355\u83B7\u4E00\u4E2A\u5B88\u62A4\u533A\u57DF",protectionStarted:"\u{1F6E1}\uFE0F \u5B88\u62A4\u5DF2\u542F\u52A8 - \u533A\u57DF\u76D1\u63A7\u4E2D",protectionStopped:"\u23F9\uFE0F \u5B88\u62A4\u5DF2\u505C\u6B62",noChanges:"\u2705 \u533A\u57DF\u5B89\u5168 - \u672A\u68C0\u6D4B\u5230\u53D8\u5316",changesDetected:"\u{1F6A8} \u68C0\u6D4B\u5230 {count} \u4E2A\u53D8\u5316",repairing:"\u{1F6E0}\uFE0F \u6B63\u5728\u4FEE\u590D {count} \u4E2A\u50CF\u7D20...",repairedSuccess:"\u2705 \u5DF2\u6210\u529F\u4FEE\u590D {count} \u4E2A\u50CF\u7D20",repairError:"\u274C \u4FEE\u590D\u51FA\u9519: {error}",noCharges:"\u26A0\uFE0F \u6B21\u6570\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u4FEE\u590D",checkingChanges:"\u{1F50D} \u6B63\u5728\u68C0\u67E5\u533A\u57DF\u53D8\u5316...",errorChecking:"\u274C \u68C0\u67E5\u51FA\u9519: {error}",guardActive:"\u{1F6E1}\uFE0F \u5B88\u62A4\u4E2D - \u533A\u57DF\u53D7\u4FDD\u62A4",lastCheck:"\u4E0A\u6B21\u68C0\u67E5: {time}",nextCheck:"\u4E0B\u6B21\u68C0\u67E5: {time} \u79D2\u540E",autoInitializing:"\u{1F916} \u6B63\u5728\u81EA\u52A8\u521D\u59CB\u5316...",autoInitSuccess:"\u2705 \u81EA\u52A8\u542F\u52A8\u6210\u529F",autoInitFailed:"\u26A0\uFE0F \u65E0\u6CD5\u81EA\u52A8\u542F\u52A8\uFF0C\u8BF7\u624B\u52A8\u64CD\u4F5C\u3002",manualInitRequired:"\u{1F527} \u9700\u8981\u624B\u52A8\u521D\u59CB\u5316",paletteDetected:"\u{1F3A8} \u5DF2\u68C0\u6D4B\u5230\u8C03\u8272\u677F",paletteNotFound:"\u{1F50D} \u6B63\u5728\u641C\u7D22\u8C03\u8272\u677F...",clickingPaintButton:"\u{1F446} \u6B63\u5728\u70B9\u51FB\u7ED8\u5236\u6309\u94AE...",paintButtonNotFound:"\u274C \u672A\u627E\u5230\u7ED8\u5236\u6309\u94AE",selectUpperLeft:"\u{1F3AF} \u5728\u9700\u8981\u4FDD\u62A4\u533A\u57DF\u7684\u5DE6\u4E0A\u89D2\u6D82\u4E00\u4E2A\u50CF\u7D20",selectLowerRight:"\u{1F3AF} \u73B0\u5728\u5728\u53F3\u4E0B\u89D2\u6D82\u4E00\u4E2A\u50CF\u7D20",waitingUpperLeft:"\u{1F446} \u7B49\u5F85\u9009\u62E9\u5DE6\u4E0A\u89D2...",waitingLowerRight:"\u{1F446} \u7B49\u5F85\u9009\u62E9\u53F3\u4E0B\u89D2...",upperLeftCaptured:"\u2705 \u5DF2\u6355\u83B7\u5DE6\u4E0A\u89D2: ({x}, {y})",lowerRightCaptured:"\u2705 \u5DF2\u6355\u83B7\u53F3\u4E0B\u89D2: ({x}, {y})",selectionTimeout:"\u274C \u9009\u62E9\u8D85\u65F6",selectionError:"\u274C \u9009\u62E9\u51FA\u9519\uFF0C\u8BF7\u91CD\u8BD5",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u5FD7\u7A97\u53E3",downloadLogs:"\u4E0B\u8F7D\u65E5\u5FD7",clearLogs:"\u6E05\u9664\u65E5\u5FD7",closeLogs:"\u5173\u95ED",analysisTitle:"\u5DEE\u5F02\u5206\u6790 - JSON vs \u5F53\u524D\u753B\u5E03",correctPixels:"\u6B63\u786E\u50CF\u7D20",incorrectPixels:"\u9519\u8BEF\u50CF\u7D20",missingPixels:"\u7F3A\u5931\u50CF\u7D20",showCorrect:"\u663E\u793A\u6B63\u786E",showIncorrect:"\u663E\u793A\u9519\u8BEF",showMissing:"\u663E\u793A\u7F3A\u5931",autoRefresh:"\u81EA\u52A8\u5237\u65B0",zoomAdjusted:"\u7F29\u653E\u81EA\u52A8\u8C03\u6574\u4E3A",autoRefreshEnabled:"\u81EA\u52A8\u5237\u65B0\u5DF2\u542F\u7528\uFF0C\u95F4\u9694",autoRefreshDisabled:"\u81EA\u52A8\u5237\u65B0\u5DF2\u7981\u7528",autoRefreshIntervalUpdated:"\u81EA\u52A8\u5237\u65B0\u95F4\u9694\u5DF2\u66F4\u65B0\u4E3A",visualizationUpdated:"\u53EF\u89C6\u5316\u5DF2\u66F4\u65B0",configTitle:"Guard\u914D\u7F6E",protectionPatterns:"\u4FDD\u62A4\u6A21\u5F0F",preferSpecificColor:"\u4F18\u5148\u7279\u5B9A\u989C\u8272",excludeSpecificColors:"\u4E0D\u4FEE\u590D\u7279\u5B9A\u989C\u8272",loadManagement:"\u8D1F\u8F7D\u7BA1\u7406",minLoadsToWait:"\u7B49\u5F85\u7684\u6700\u5C0F\u8D1F\u8F7D\u6570",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20\u6570",spendAllPixelsOnStart:"\u542F\u52A8\u65F6\u6D88\u8017\u6240\u6709\u50CF\u7D20",waitTimes:"\u7B49\u5F85\u65F6\u95F4",useRandomTimes:"\u6279\u6B21\u95F4\u4F7F\u7528\u968F\u673A\u65F6\u95F4",minTime:"\u6700\u5C0F\u65F6\u95F4 (\u79D2)",maxTime:"\u6700\u5927\u65F6\u95F4 (\u79D2)"}};var bt={launcher:{title:"WPlace \u81EA\u52D5\u6A5F\u5668\u4EBA",autoFarm:"\u{1F33E} \u81EA\u52D5\u8FB2\u5834",autoImage:"\u{1F3A8} \u81EA\u52D5\u7E6A\u5716",autoGuard:"\u{1F6E1}\uFE0F \u81EA\u52D5\u5B88\u8B77",selection:"\u9078\u64C7",user:"\u7528\u6237",charges:"\u6B21\u6578",backend:"\u5F8C\u7AEF",database:"\u6578\u64DA\u5EAB",uptime:"\u904B\u884C\u6642\u9593",close:"\u95DC\u9589",launch:"\u5553\u52D5",loading:"\u52A0\u8F09\u4E2D\u2026",executing:"\u57F7\u884C\u4E2D\u2026",downloading:"\u6B63\u5728\u4E0B\u8F09\u8173\u672C\u2026",chooseBot:"\u9078\u64C7\u4E00\u500B\u6A5F\u5668\u4EBA\u4E26\u9EDE\u64CA\u5553\u52D5",readyToLaunch:"\u6E96\u5099\u5553\u52D5",loadError:"\u52A0\u8F09\u932F\u8AA4",loadErrorMsg:"\u7121\u6CD5\u52A0\u8F09\u6240\u9078\u6A5F\u5668\u4EBA\u3002\u8ACB\u6AA2\u67E5\u7DB2\u7D61\u9023\u63A5\u6216\u91CD\u8A66\u3002",checking:"\u{1F504} \u6AA2\u67E5\u4E2D...",online:"\u{1F7E2} \u5728\u7DDA",offline:"\u{1F534} \u96E2\u7DDA",ok:"\u{1F7E2} \u6B63\u5E38",error:"\u{1F534} \u932F\u8AA4",unknown:"-",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u8A8C\u8996\u7A97",downloadLogs:"\u4E0B\u8F09\u65E5\u8A8C",clearLogs:"\u6E05\u9664\u65E5\u8A8C",closeLogs:"\u95DC\u9589"},image:{title:"WPlace \u81EA\u52D5\u7E6A\u5716",initBot:"\u521D\u59CB\u5316\u81EA\u52D5\u6A5F\u5668\u4EBA",uploadImage:"\u4E0A\u50B3\u5716\u7247",resizeImage:"\u8ABF\u6574\u5716\u7247\u5927\u5C0F",selectPosition:"\u9078\u64C7\u4F4D\u7F6E",startPainting:"\u958B\u59CB\u7E6A\u88FD",stopPainting:"\u505C\u6B62\u7E6A\u88FD",saveProgress:"\u4FDD\u5B58\u9032\u5EA6",loadProgress:"\u52A0\u8F09\u9032\u5EA6",checkingColors:"\u{1F50D} \u6AA2\u67E5\u53EF\u7528\u984F\u8272...",noColorsFound:"\u274C \u8ACB\u5728\u7DB2\u7AD9\u4E0A\u6253\u958B\u8ABF\u8272\u677F\u5F8C\u91CD\u8A66\uFF01",colorsFound:"\u2705 \u627E\u5230 {count} \u7A2E\u53EF\u7528\u984F\u8272",loadingImage:"\u{1F5BC}\uFE0F \u6B63\u5728\u52A0\u8F09\u5716\u7247...",imageLoaded:"\u2705 \u5716\u7247\u5DF2\u52A0\u8F09\uFF0C\u6709\u6548\u50CF\u7D20 {count} \u500B",imageError:"\u274C \u5716\u7247\u52A0\u8F09\u5931\u6557",selectPositionAlert:"\u8ACB\u5728\u4F60\u60F3\u958B\u59CB\u7E6A\u88FD\u7684\u5730\u65B9\u5857\u7B2C\u4E00\u500B\u50CF\u7D20\uFF01",waitingPosition:"\u{1F446} \u7B49\u5F85\u4F60\u5857\u53C3\u8003\u50CF\u7D20...",positionSet:"\u2705 \u4F4D\u7F6E\u8A2D\u7F6E\u6210\u529F\uFF01",positionTimeout:"\u274C \u4F4D\u7F6E\u9078\u64C7\u8D85\u6642",positionDetected:"\u{1F3AF} \u5DF2\u6AA2\u6E2C\u5230\u4F4D\u7F6E\uFF0C\u8655\u7406\u4E2D...",positionError:"\u274C \u4F4D\u7F6E\u6AA2\u6E2C\u5931\u6557\uFF0C\u8ACB\u91CD\u8A66",startPaintingMsg:"\u{1F3A8} \u958B\u59CB\u7E6A\u88FD...",paintingProgress:"\u{1F9F1} \u9032\u5EA6: {painted}/{total} \u50CF\u7D20...",noCharges:"\u231B \u6C92\u6709\u6B21\u6578\u3002\u7B49\u5F85 {time}...",paintingStopped:"\u23F9\uFE0F \u7528\u6237\u5DF2\u505C\u6B62\u7E6A\u88FD",paintingComplete:"\u2705 \u7E6A\u88FD\u5B8C\u6210\uFF01\u5171\u7E6A\u88FD {count} \u500B\u50CF\u7D20\u3002",paintingError:"\u274C \u7E6A\u88FD\u904E\u7A0B\u4E2D\u51FA\u932F",missingRequirements:"\u274C \u8ACB\u5148\u52A0\u8F09\u5716\u7247\u4E26\u9078\u64C7\u4F4D\u7F6E",progress:"\u9032\u5EA6",userName:"\u7528\u6237",pixels:"\u50CF\u7D20",charges:"\u6B21\u6578",estimatedTime:"\u9810\u8A08\u6642\u9593",initMessage:"\u9EDE\u64CA\u201C\u521D\u59CB\u5316\u81EA\u52D5\u6A5F\u5668\u4EBA\u201D\u958B\u59CB",waitingInit:"\u7B49\u5F85\u521D\u59CB\u5316...",resizeSuccess:"\u2705 \u5716\u7247\u5DF2\u8ABF\u6574\u70BA {width}x{height}",paintingPaused:"\u23F8\uFE0F \u7E6A\u88FD\u66AB\u505C\u65BC\u4F4D\u7F6E X: {x}, Y: {y}",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20\u6578",batchSize:"\u6279\u6B21\u5927\u5C0F",nextBatchTime:"\u4E0B\u6B21\u6279\u6B21\u6642\u9593",useAllCharges:"\u4F7F\u7528\u6240\u6709\u53EF\u7528\u6B21\u6578",showOverlay:"\u986F\u793A\u8986\u84CB\u5C64",maxCharges:"\u6BCF\u6279\u6700\u5927\u6B21\u6578",waitingForCharges:"\u23F3 \u7B49\u5F85\u6B21\u6578: {current}/{needed}",timeRemaining:"\u5269\u9918\u6642\u9593",cooldownWaiting:"\u23F3 \u7B49\u5F85 {time} \u5F8C\u7E7C\u7E8C...",progressSaved:"\u2705 \u9032\u5EA6\u5DF2\u4FDD\u5B58\u70BA {filename}",progressLoaded:"\u2705 \u5DF2\u52A0\u8F09\u9032\u5EA6: {painted}/{total} \u50CF\u7D20\u5DF2\u7E6A\u88FD",progressLoadError:"\u274C \u52A0\u8F09\u9032\u5EA6\u5931\u6557: {error}",progressSaveError:"\u274C \u4FDD\u5B58\u9032\u5EA6\u5931\u6557: {error}",confirmSaveProgress:"\u5728\u505C\u6B62\u4E4B\u524D\u8981\u4FDD\u5B58\u7576\u524D\u9032\u5EA6\u55CE\uFF1F",saveProgressTitle:"\u4FDD\u5B58\u9032\u5EA6",discardProgress:"\u653E\u68C4",cancel:"\u53D6\u6D88",minimize:"\u6700\u5C0F\u5316",width:"\u5BEC\u5EA6",height:"\u9AD8\u5EA6",keepAspect:"\u4FDD\u6301\u7E31\u6A6B\u6BD4",apply:"\u61C9\u7528",overlayOn:"\u8986\u84CB\u5C64: \u958B\u5553",overlayOff:"\u8986\u84CB\u5C64: \u95DC\u9589",passCompleted:"\u2705 \u6279\u6B21\u5B8C\u6210: \u5DF2\u7E6A\u88FD {painted} \u50CF\u7D20 | \u9032\u5EA6: {percent}% ({current}/{total})",waitingChargesRegen:"\u23F3 \u7B49\u5F85\u6B21\u6578\u6062\u5FA9: {current}/{needed} - \u6642\u9593: {time}",waitingChargesCountdown:"\u23F3 \u7B49\u5F85\u6B21\u6578: {current}/{needed} - \u5269\u9918: {time}",autoInitializing:"\u{1F916} \u6B63\u5728\u81EA\u52D5\u521D\u59CB\u5316...",autoInitSuccess:"\u2705 \u81EA\u52D5\u5553\u52D5\u6210\u529F",autoInitFailed:"\u26A0\uFE0F \u7121\u6CD5\u81EA\u52D5\u5553\u52D5\uFF0C\u8ACB\u624B\u52D5\u64CD\u4F5C\u3002",paletteDetected:"\u{1F3A8} \u5DF2\u6AA2\u6E2C\u5230\u8ABF\u8272\u677F",paletteNotFound:"\u{1F50D} \u6B63\u5728\u641C\u7D22\u8ABF\u8272\u677F...",clickingPaintButton:"\u{1F446} \u6B63\u5728\u9EDE\u64CA\u7E6A\u88FD\u6309\u9215...",paintButtonNotFound:"\u274C \u672A\u627E\u5230\u7E6A\u88FD\u6309\u9215",manualInitRequired:"\u{1F527} \u9700\u8981\u624B\u52D5\u521D\u59CB\u5316",retryAttempt:"\u{1F504} \u91CD\u8A66 {attempt}/{maxAttempts}\uFF0C\u7B49\u5F85 {delay} \u79D2...",retryError:"\u{1F4A5} \u7B2C {attempt}/{maxAttempts} \u6B21\u5617\u8A66\u51FA\u932F\uFF0C\u5C07\u5728 {delay} \u79D2\u5F8C\u91CD\u8A66...",retryFailed:"\u274C \u8D85\u904E {maxAttempts} \u6B21\u5617\u8A66\u5931\u6557\u3002\u7E7C\u7E8C\u4E0B\u4E00\u6279...",networkError:"\u{1F310} \u7DB2\u7D61\u932F\u8AA4\uFF0C\u6B63\u5728\u91CD\u8A66...",serverError:"\u{1F525} \u670D\u52D9\u5668\u932F\u8AA4\uFF0C\u6B63\u5728\u91CD\u8A66...",timeoutError:"\u23F0 \u4F3A\u670D\u5668\u903E\u6642\uFF0C\u6B63\u5728\u91CD\u8A66...",protectionEnabled:"\u5DF2\u555F\u7528\u4FDD\u8B77",protectionDisabled:"\u5DF2\u505C\u7528\u4FDD\u8B77",paintPattern:"\u7E6A\u88FD\u6A21\u5F0F",patternLinearStart:"\u7DDA\u6027\uFF08\u8D77\u9EDE\uFF09",patternLinearEnd:"\u7DDA\u6027\uFF08\u7D42\u9EDE\uFF09",patternRandom:"\u96A8\u6A5F",patternCenterOut:"\u7531\u4E2D\u5FC3\u5411\u5916",patternCornersFirst:"\u5148\u89D2\u843D",patternSpiral:"\u87BA\u65CB",solid:"\u5BE6\u5FC3",stripes:"\u689D\u7D0B",checkerboard:"\u68CB\u76E4\u683C",gradient:"\u6F38\u5C64",dots:"\u9EDE\u72C0",waves:"\u6CE2\u6D6A",spiral:"\u87BA\u65CB",mosaic:"\u99AC\u8CFD\u514B",bricks:"\u78DA\u584A",zigzag:"\u4E4B\u5B57\u5F62",protectingDrawing:"\u6B63\u5728\u4FDD\u8B77\u7E6A\u5716...",changesDetected:"\u{1F6A8} \u5075\u6E2C\u5230 {count} \u8655\u8B8A\u66F4",repairing:"\u{1F527} \u6B63\u5728\u4FEE\u5FA9 {count} \u500B\u8B8A\u66F4\u7684\u50CF\u7D20...",repairCompleted:"\u2705 \u4FEE\u5FA9\u5B8C\u6210\uFF1A{count} \u500B\u50CF\u7D20",noChargesForRepair:"\u26A1 \u4FEE\u5FA9\u4E0D\u6D88\u8017\u9EDE\u6578\uFF0C\u7B49\u5F85\u4E2D...",protectionPriority:"\u{1F6E1}\uFE0F \u5DF2\u555F\u7528\u4FDD\u8B77\u512A\u5148",patternApplied:"\u5DF2\u5957\u7528\u6A21\u5F0F",customPattern:"\u81EA\u8A02\u6A21\u5F0F",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u8A8C\u8996\u7A97",downloadLogs:"\u4E0B\u8F09\u65E5\u8A8C",clearLogs:"\u6E05\u9664\u65E5\u8A8C",closeLogs:"\u95DC\u9589"},farm:{title:"WPlace \u8FB2\u5834\u6A5F\u5668\u4EBA",start:"\u958B\u59CB",stop:"\u505C\u6B62",stopped:"\u6A5F\u5668\u4EBA\u5DF2\u505C\u6B62",calibrate:"\u6821\u6E96",paintOnce:"\u4E00\u6B21",checkingStatus:"\u6AA2\u67E5\u72C0\u614B\u4E2D...",configuration:"\u914D\u7F6E",delay:"\u5EF6\u9072 (\u6BEB\u79D2)",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20",minCharges:"\u6700\u5C11\u6B21\u6578",colorMode:"\u984F\u8272\u6A21\u5F0F",random:"\u96A8\u6A5F",fixed:"\u56FA\u5B9A",range:"\u7BC4\u570D",fixedColor:"\u56FA\u5B9A\u984F\u8272",advanced:"\u9AD8\u7D1A",tileX:"\u74E6\u7247 X",tileY:"\u74E6\u7247 Y",customPalette:"\u81EA\u5B9A\u7FA9\u8ABF\u8272\u677F",paletteExample:"\u4F8B\u5982: #FF0000,#00FF00,#0000FF",capture:"\u6355\u7372",painted:"\u5DF2\u7E6A\u88FD",charges:"\u6B21\u6578",retries:"\u91CD\u8A66",tile:"\u74E6\u7247",configSaved:"\u914D\u7F6E\u5DF2\u4FDD\u5B58",configLoaded:"\u914D\u7F6E\u5DF2\u52A0\u8F09",configReset:"\u914D\u7F6E\u5DF2\u91CD\u7F6E",captureInstructions:"\u8ACB\u624B\u52D5\u7E6A\u88FD\u4E00\u500B\u50CF\u7D20\u4EE5\u6355\u7372\u5EA7\u6A19...",backendOnline:"\u5F8C\u7AEF\u5728\u7DDA",backendOffline:"\u5F8C\u7AEF\u96E2\u7DDA",startingBot:"\u6B63\u5728\u5553\u52D5\u6A5F\u5668\u4EBA...",stoppingBot:"\u6B63\u5728\u505C\u6B62\u6A5F\u5668\u4EBA...",calibrating:"\u6821\u6E96\u4E2D...",alreadyRunning:"\u81EA\u52D5\u8FB2\u5834\u5DF2\u5728\u904B\u884C\u3002",imageRunningWarning:"\u81EA\u52D5\u7E6A\u5716\u6B63\u5728\u904B\u884C\uFF0C\u8ACB\u5148\u95DC\u9589\u518D\u5553\u52D5\u81EA\u52D5\u8FB2\u5834\u3002",selectPosition:"\u9078\u64C7\u5340\u57DF",selectPositionAlert:"\u{1F3AF} \u5728\u5730\u5716\u7684\u7A7A\u767D\u5340\u57DF\u5857\u4E00\u500B\u50CF\u7D20\u4EE5\u8A2D\u7F6E\u8FB2\u5834\u5340\u57DF",waitingPosition:"\u{1F446} \u7B49\u5F85\u4F60\u5857\u53C3\u8003\u50CF\u7D20...",positionSet:"\u2705 \u5340\u57DF\u8A2D\u7F6E\u6210\u529F\uFF01\u534A\u5F91: 500px",positionTimeout:"\u274C \u5340\u57DF\u9078\u64C7\u8D85\u6642",missingPosition:"\u274C \u8ACB\u5148\u9078\u64C7\u5340\u57DF\uFF08\u4F7F\u7528\u201C\u9078\u64C7\u5340\u57DF\u201D\u6309\u9215\uFF09",farmRadius:"\u8FB2\u5834\u534A\u5F91",positionInfo:"\u7576\u524D\u5340\u57DF",farmingInRadius:"\u{1F33E} \u6B63\u5728\u4EE5\u534A\u5F91 {radius}px \u5728 ({x},{y}) \u8FB2\u5834",selectEmptyArea:"\u26A0\uFE0F \u91CD\u8981: \u8ACB\u9078\u64C7\u7A7A\u767D\u5340\u57DF\u4EE5\u907F\u514D\u885D\u7A81",noPosition:"\u672A\u9078\u64C7\u5340\u57DF",currentZone:"\u5340\u57DF: ({x},{y})",autoSelectPosition:"\u{1F3AF} \u8ACB\u5148\u9078\u64C7\u5340\u57DF\uFF0C\u5728\u5730\u5716\u4E0A\u5857\u4E00\u500B\u50CF\u7D20\u4EE5\u8A2D\u7F6E\u8FB2\u5834\u5340\u57DF",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u8A8C\u8996\u7A97",downloadLogs:"\u4E0B\u8F09\u65E5\u8A8C",clearLogs:"\u6E05\u9664\u65E5\u8A8C",closeLogs:"\u95DC\u9589"},common:{yes:"\u662F",no:"\u5426",ok:"\u78BA\u8A8D",cancel:"\u53D6\u6D88",close:"\u95DC\u9589",save:"\u4FDD\u5B58",load:"\u52A0\u8F09",delete:"\u522A\u9664",edit:"\u7DE8\u8F2F",start:"\u958B\u59CB",stop:"\u505C\u6B62",pause:"\u66AB\u505C",resume:"\u7E7C\u7E8C",reset:"\u91CD\u7F6E",settings:"\u8A2D\u7F6E",help:"\u5E6B\u52A9",about:"\u95DC\u65BC",language:"\u8A9E\u8A00",loading:"\u52A0\u8F09\u4E2D...",error:"\u932F\u8AA4",success:"\u6210\u529F",warning:"\u8B66\u544A",info:"\u4FE1\u606F",languageChanged:"\u8A9E\u8A00\u5DF2\u5207\u63DB\u70BA {language}"},guard:{title:"WPlace \u81EA\u52D5\u5B88\u8B77",initBot:"\u521D\u59CB\u5316\u5B88\u8B77\u6A5F\u5668\u4EBA",selectArea:"\u9078\u64C7\u5340\u57DF",captureArea:"\u6355\u7372\u5340\u57DF",startProtection:"\u958B\u59CB\u5B88\u8B77",stopProtection:"\u505C\u6B62\u5B88\u8B77",upperLeft:"\u5DE6\u4E0A\u89D2",lowerRight:"\u53F3\u4E0B\u89D2",protectedPixels:"\u53D7\u4FDD\u8B77\u50CF\u7D20",detectedChanges:"\u6AA2\u6E2C\u5230\u7684\u8B8A\u5316",repairedPixels:"\u4FEE\u5FA9\u7684\u50CF\u7D20",charges:"\u6B21\u6578",waitingInit:"\u7B49\u5F85\u521D\u59CB\u5316...",checkingColors:"\u{1F3A8} \u6AA2\u67E5\u53EF\u7528\u984F\u8272...",noColorsFound:"\u274C \u672A\u627E\u5230\u984F\u8272\uFF0C\u8ACB\u5728\u7DB2\u7AD9\u4E0A\u6253\u958B\u8ABF\u8272\u677F\u3002",colorsFound:"\u2705 \u627E\u5230 {count} \u7A2E\u53EF\u7528\u984F\u8272",initSuccess:"\u2705 \u5B88\u8B77\u6A5F\u5668\u4EBA\u521D\u59CB\u5316\u6210\u529F",initError:"\u274C \u5B88\u8B77\u6A5F\u5668\u4EBA\u521D\u59CB\u5316\u5931\u6557",invalidCoords:"\u274C \u5EA7\u6A19\u7121\u6548",invalidArea:"\u274C \u5340\u57DF\u7121\u6548\uFF0C\u5DE6\u4E0A\u89D2\u5FC5\u9808\u5C0F\u65BC\u53F3\u4E0B\u89D2",areaTooLarge:"\u274C \u5340\u57DF\u904E\u5927: {size} \u50CF\u7D20 (\u6700\u5927: {max})",capturingArea:"\u{1F4F8} \u6355\u7372\u5B88\u8B77\u5340\u57DF\u4E2D...",areaCaptured:"\u2705 \u5340\u57DF\u6355\u7372\u6210\u529F: {count} \u50CF\u7D20\u53D7\u4FDD\u8B77",captureError:"\u274C \u6355\u7372\u5340\u57DF\u51FA\u932F: {error}",captureFirst:"\u274C \u8ACB\u5148\u6355\u7372\u4E00\u500B\u5B88\u8B77\u5340\u57DF",protectionStarted:"\u{1F6E1}\uFE0F \u5B88\u8B77\u5DF2\u5553\u52D5 - \u5340\u57DF\u76E3\u63A7\u4E2D",protectionStopped:"\u23F9\uFE0F \u5B88\u8B77\u5DF2\u505C\u6B62",noChanges:"\u2705 \u5340\u57DF\u5B89\u5168 - \u672A\u6AA2\u6E2C\u5230\u8B8A\u5316",changesDetected:"\u{1F6A8} \u6AA2\u6E2C\u5230 {count} \u500B\u8B8A\u5316",repairing:"\u{1F6E0}\uFE0F \u6B63\u5728\u4FEE\u5FA9 {count} \u500B\u50CF\u7D20...",repairedSuccess:"\u2705 \u5DF2\u6210\u529F\u4FEE\u5FA9 {count} \u500B\u50CF\u7D20",repairError:"\u274C \u4FEE\u5FA9\u51FA\u932F: {error}",noCharges:"\u26A0\uFE0F \u6B21\u6578\u4E0D\u8DB3\uFF0C\u7121\u6CD5\u4FEE\u5FA9",checkingChanges:"\u{1F50D} \u6B63\u5728\u6AA2\u67E5\u5340\u57DF\u8B8A\u5316...",errorChecking:"\u274C \u6AA2\u67E5\u51FA\u932F: {error}",guardActive:"\u{1F6E1}\uFE0F \u5B88\u8B77\u4E2D - \u5340\u57DF\u53D7\u4FDD\u8B77",lastCheck:"\u4E0A\u6B21\u6AA2\u67E5: {time}",nextCheck:"\u4E0B\u6B21\u6AA2\u67E5: {time} \u79D2\u5F8C",autoInitializing:"\u{1F916} \u6B63\u5728\u81EA\u52D5\u521D\u59CB\u5316...",autoInitSuccess:"\u2705 \u81EA\u52D5\u5553\u52D5\u6210\u529F",autoInitFailed:"\u26A0\uFE0F \u7121\u6CD5\u81EA\u52D5\u5553\u52D5\uFF0C\u8ACB\u624B\u52D5\u64CD\u4F5C\u3002",manualInitRequired:"\u{1F527} \u9700\u8981\u624B\u52D5\u521D\u59CB\u5316",paletteDetected:"\u{1F3A8} \u5DF2\u6AA2\u6E2C\u5230\u8ABF\u8272\u677F",paletteNotFound:"\u{1F50D} \u6B63\u5728\u641C\u7D22\u8ABF\u8272\u677F...",clickingPaintButton:"\u{1F446} \u6B63\u5728\u9EDE\u64CA\u7E6A\u88FD\u6309\u9215...",paintButtonNotFound:"\u274C \u672A\u627E\u5230\u7E6A\u88FD\u6309\u9215",selectUpperLeft:"\u{1F3AF} \u5728\u9700\u8981\u4FDD\u8B77\u5340\u57DF\u7684\u5DE6\u4E0A\u89D2\u5857\u4E00\u500B\u50CF\u7D20",selectLowerRight:"\u{1F3AF} \u73FE\u5728\u5728\u53F3\u4E0B\u89D2\u5857\u4E00\u500B\u50CF\u7D20",waitingUpperLeft:"\u{1F446} \u7B49\u5F85\u9078\u64C7\u5DE6\u4E0A\u89D2...",waitingLowerRight:"\u{1F446} \u7B49\u5F85\u9078\u64C7\u53F3\u4E0B\u89D2...",upperLeftCaptured:"\u2705 \u5DF2\u6355\u7372\u5DE6\u4E0A\u89D2: ({x}, {y})",lowerRightCaptured:"\u2705 \u5DF2\u6355\u7372\u53F3\u4E0B\u89D2: ({x}, {y})",selectionTimeout:"\u274C \u9078\u64C7\u8D85\u6642",selectionError:"\u274C \u9078\u64C7\u51FA\u932F\uFF0C\u8ACB\u91CD\u8A66",logWindow:"\u{1F4CB} Logs",logWindowTitle:"\u65E5\u8A8C\u8996\u7A97",downloadLogs:"\u4E0B\u8F09\u65E5\u8A8C",clearLogs:"\u6E05\u9664\u65E5\u8A8C",closeLogs:"\u95DC\u9589",analysisTitle:"\u5DEE\u7570\u5206\u6790 - JSON vs \u7576\u524D\u756B\u5E03",correctPixels:"\u6B63\u78BA\u50CF\u7D20",incorrectPixels:"\u932F\u8AA4\u50CF\u7D20",missingPixels:"\u7F3A\u5931\u50CF\u7D20",showCorrect:"\u986F\u793A\u6B63\u78BA",showIncorrect:"\u986F\u793A\u932F\u8AA4",showMissing:"\u986F\u793A\u7F3A\u5931",autoRefresh:"\u81EA\u52D5\u5237\u65B0",zoomAdjusted:"\u7E2E\u653E\u81EA\u52D5\u8ABF\u6574\u70BA",autoRefreshEnabled:"\u81EA\u52D5\u5237\u65B0\u5DF2\u555F\u7528\uFF0C\u9593\u9694",autoRefreshDisabled:"\u81EA\u52D5\u5237\u65B0\u5DF2\u7981\u7528",autoRefreshIntervalUpdated:"\u81EA\u52D5\u5237\u65B0\u9593\u9694\u5DF2\u66F4\u65B0\u70BA",visualizationUpdated:"\u8996\u89BA\u5316\u5DF2\u66F4\u65B0",configTitle:"Guard\u914D\u7F6E",protectionPatterns:"\u4FDD\u8B77\u6A21\u5F0F",preferSpecificColor:"\u512A\u5148\u7279\u5B9A\u984F\u8272",excludeSpecificColors:"\u4E0D\u4FEE\u5FA9\u7279\u5B9A\u984F\u8272",loadManagement:"\u8CA0\u8F09\u7BA1\u7406",minLoadsToWait:"\u7B49\u5F85\u7684\u6700\u5C0F\u8CA0\u8F09\u6578",pixelsPerBatch:"\u6BCF\u6279\u50CF\u7D20\u6578",spendAllPixelsOnStart:"\u555F\u52D5\u6642\u6D88\u8017\u6240\u6709\u50CF\u7D20",waitTimes:"\u7B49\u5F85\u6642\u9593",useRandomTimes:"\u6279\u6B21\u9593\u4F7F\u7528\u96A8\u6A5F\u6642\u9593",minTime:"\u6700\u5C0F\u6642\u9593 (\u79D2)",maxTime:"\u6700\u5927\u6642\u9593 (\u79D2)"}};var te={es:mt,en:ht,fr:ft,ru:wt,zhHans:yt,zhHant:bt},Me="es",Fe=te[Me];function Jt(){let e=(window.navigator.language||window.navigator.userLanguage||"es").split("-")[0].toLowerCase();return te[e]?e:"es"}function Qt(){return null}function Be(){let o=Qt(),e=Jt(),t="es";return o&&te[o]?t=o:e&&te[e]&&(t=e),eo(t),t}function eo(o){if(!te[o]){console.warn(`Idioma '${o}' no disponible. Usando '${Me}'`);return}Me=o,Fe=te[o],typeof window!="undefined"&&window.CustomEvent&&window.dispatchEvent(new window.CustomEvent("languageChanged",{detail:{language:o,translations:Fe}}))}function x(o,e={}){let t=o.split("."),n=Fe;for(let i of t)if(n&&typeof n=="object"&&i in n)n=n[i];else return console.warn(`Clave de traducci\xF3n no encontrada: '${o}'`),o;return typeof n!="string"?(console.warn(`Clave de traducci\xF3n no es string: '${o}'`),o):to(n,e)}function to(o,e){return!e||Object.keys(e).length===0?o:o.replace(/\{(\w+)\}/g,(t,n)=>e[n]!==void 0?e[n]:t)}Be();var me={0:{id:1,name:"Black",rgb:{r:0,g:0,b:0}},1:{id:2,name:"Dark Gray",rgb:{r:60,g:60,b:60}},2:{id:3,name:"Gray",rgb:{r:120,g:120,b:120}},3:{id:4,name:"Light Gray",rgb:{r:210,g:210,b:210}},4:{id:5,name:"White",rgb:{r:255,g:255,b:255}},5:{id:6,name:"Deep Red",rgb:{r:96,g:0,b:24}},6:{id:7,name:"Red",rgb:{r:237,g:28,b:36}},7:{id:8,name:"Orange",rgb:{r:255,g:127,b:39}},8:{id:9,name:"Gold",rgb:{r:246,g:170,b:9}},9:{id:10,name:"Yellow",rgb:{r:249,g:221,b:59}},10:{id:11,name:"Light Yellow",rgb:{r:255,g:250,b:188}},11:{id:12,name:"Dark Green",rgb:{r:14,g:185,b:104}},12:{id:13,name:"Green",rgb:{r:19,g:230,b:123}},13:{id:14,name:"Light Green",rgb:{r:135,g:255,b:94}},14:{id:15,name:"Dark Teal",rgb:{r:12,g:129,b:110}},15:{id:16,name:"Teal",rgb:{r:16,g:174,b:166}},16:{id:17,name:"Light Teal",rgb:{r:19,g:225,b:190}},17:{id:20,name:"Cyan",rgb:{r:96,g:247,b:242}},18:{id:44,name:"Light Cyan",rgb:{r:187,g:250,b:242}},19:{id:18,name:"Dark Blue",rgb:{r:40,g:80,b:158}},20:{id:19,name:"Blue",rgb:{r:64,g:147,b:228}},21:{id:21,name:"Indigo",rgb:{r:107,g:80,b:246}},22:{id:22,name:"Light Indigo",rgb:{r:153,g:177,b:251}},23:{id:23,name:"Dark Purple",rgb:{r:120,g:12,b:153}},24:{id:24,name:"Purple",rgb:{r:170,g:56,b:185}},25:{id:25,name:"Light Purple",rgb:{r:224,g:159,b:249}},26:{id:26,name:"Dark Pink",rgb:{r:203,g:0,b:122}},27:{id:27,name:"Pink",rgb:{r:236,g:31,b:128}},28:{id:28,name:"Light Pink",rgb:{r:243,g:141,b:169}},29:{id:29,name:"Dark Brown",rgb:{r:104,g:70,b:52}},30:{id:30,name:"Brown",rgb:{r:149,g:104,b:42}},31:{id:31,name:"Beige",rgb:{r:248,g:178,b:119}},32:{id:52,name:"Light Beige",rgb:{r:255,g:197,b:165}},33:{id:32,name:"Medium Gray",rgb:{r:170,g:170,b:170}},34:{id:33,name:"Dark Red",rgb:{r:165,g:14,b:30}},35:{id:34,name:"Light Red",rgb:{r:250,g:128,b:114}},36:{id:35,name:"Dark Orange",rgb:{r:228,g:92,b:26}},37:{id:37,name:"Dark Goldenrod",rgb:{r:156,g:132,b:49}},38:{id:38,name:"Goldenrod",rgb:{r:197,g:173,b:49}},39:{id:39,name:"Light Goldenrod",rgb:{r:232,g:212,b:95}},40:{id:40,name:"Dark Olive",rgb:{r:74,g:107,b:58}},41:{id:41,name:"Olive",rgb:{r:90,g:148,b:74}},42:{id:42,name:"Light Olive",rgb:{r:132,g:197,b:115}},43:{id:43,name:"Dark Cyan",rgb:{r:15,g:121,b:159}},44:{id:45,name:"Light Blue",rgb:{r:125,g:199,b:255}},45:{id:46,name:"Dark Indigo",rgb:{r:77,g:49,b:184}},46:{id:47,name:"Dark Slate Blue",rgb:{r:74,g:66,b:132}},47:{id:48,name:"Slate Blue",rgb:{r:122,g:113,b:196}},48:{id:49,name:"Light Slate Blue",rgb:{r:181,g:174,b:241}},49:{id:53,name:"Dark Peach",rgb:{r:155,g:82,b:73}},50:{id:54,name:"Peach",rgb:{r:209,g:128,b:120}},51:{id:55,name:"Light Peach",rgb:{r:250,g:182,b:164}},52:{id:50,name:"Light Brown",rgb:{r:219,g:164,b:99}},53:{id:56,name:"Dark Tan",rgb:{r:123,g:99,b:82}},54:{id:57,name:"Tan",rgb:{r:156,g:132,b:107}},55:{id:36,name:"Light Tan",rgb:{r:214,g:181,b:148}},56:{id:51,name:"Dark Beige",rgb:{r:209,g:128,b:81}},57:{id:61,name:"Dark Stone",rgb:{r:109,g:100,b:63}},58:{id:62,name:"Stone",rgb:{r:148,g:140,b:107}},59:{id:63,name:"Light Stone",rgb:{r:205,g:197,b:158}},60:{id:58,name:"Dark Slate",rgb:{r:51,g:57,b:65}},61:{id:59,name:"Slate",rgb:{r:109,g:117,b:141}},62:{id:60,name:"Light Slate",rgb:{r:179,g:185,b:209}},63:{id:0,name:"Transparent",rgb:null}};function oo(o){return Object.values(me).find(t=>t.id===o)||null}function he(o){let e=oo(o);return e?e.name:`Color ${o}`}function Y(o,e,t){return Math.max(e,Math.min(t,o))}F();De();function vt(o,e,t){var Ge,je,Xe,Ve,Ze,Ke;let n=document.createElement("div");n.id="wplace-farm-ui",n.style.cssText='position: fixed; top: 12px; right: 12px; font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial;';let i=n.attachShadow({mode:"open"}),s=document.createElement("style");s.textContent=`
.panel{background:#1f2937;color:#e5e7eb;border:1px solid #374151;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.5);width:320px;overflow:hidden}
.header{display:flex;justify-content:space-between;align-items:center;background:#111827;color:#93c5fd;padding:10px 12px;font-weight:600;cursor:move;user-select:none}
.min-btn{background:transparent;border:1px solid #374151;color:#e5e7eb;border-radius:6px;width:26px;height:22px;line-height:20px;display:flex;align-items:center;justify-content:center;font-weight:700;cursor:pointer;transition:all .2s}
.min-btn:hover{background:#1f2937}
.body{padding:12px;max-height:1000px;transition:max-height .35s ease, opacity .25s ease, padding .25s ease}
.body.collapsed{max-height:0;opacity:.0;overflow:hidden;padding:0}
.row{display:flex;gap:8px;margin:8px 0}
.btn{flex:1;padding:8px 10px;border:none;border-radius:8px;font-weight:700;cursor:pointer;transition:all .2s;font-size:13px}
.btn.primary{background:#2563eb;color:#fff}
.btn.ghost{background:transparent;border:1px solid #374151;color:#e5e7eb}
.btn.ghost.danger{background:#ef4444;color:#fff;border-color:#ef4444}
.btn.primary:disabled,.btn.ghost:disabled{opacity:.5;cursor:not-allowed}
.card{background:#111827;padding:10px;border-radius:8px;margin-top:10px}
.stat{display:flex;justify-content:space-between;margin:4px 0;font-size:12px;opacity:.95}
.status{margin-top:10px;padding:8px;border-radius:6px;text-align:center;font-size:12px;background:rgba(255,255,255,.06)}
.label{font-size:12px;color:#cbd5e1}
select,input{background:#111827;border:1px solid #374151;color:#e5e7eb;border-radius:6px;padding:6px 8px;font-size:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.colors{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}
.swatch{width:20px;height:20px;border:1px solid #374151;border-radius:4px;cursor:pointer}
.active{outline:2px solid #93c5fd}
/* Lista texto/valor para la configuraci\xF3n */
.list{display:flex;flex-direction:column;gap:8px}
.list-item{display:flex;align-items:center;justify-content:space-between;gap:8px}
.list-item .label{font-size:12px;color:#cbd5e1}
.list-item input{width:84px;text-align:center}
/* Parpadeo naranja para bot\xF3n Capturar */
@keyframes wpa-blink-orange{0%,100%{background:transparent;border-color:#f59e0b;color:#fde68a}50%{background:#f59e0b33;border-color:#f59e0b;color:#fff}}
.blink-orange{animation:wpa-blink-orange 1s infinite; border-width:2px !important}
`,i.appendChild(s);let r=document.createElement("div");r.className="panel",r.innerHTML=`
<div class="header"><span>\u{1F9D1}\u200D\u{1F33E} WPlace Farm</span><button id="minBtn" class="min-btn" title="${x("image.minimize","Minimizar")}">\u2013</button></div>
<div class="body">
<div class="row">
<button class="btn primary" id="startBtn">${x("farm.start","Iniciar")}</button>
<button class="btn ghost" id="stopBtn" disabled>${x("farm.stop","Detener")}</button>
<button class="btn ghost" id="logsBtn">${x("farm.logWindow","Logs")}</button>
</div>
<div class="card">
<div class="stat"><span>${x("farm.stats.painted","Pintados")}</span><span id="painted">0</span></div>
<div class="stat"><span>${x("farm.stats.charges","Cargas")}</span><span id="charges">0/0</span></div>
<div class="stat"><span>${x("farm.stats.droplets","Gotas")}</span><span id="droplets">0</span></div>
<div class="stat"><span>${x("farm.stats.user","Usuario")}</span><span id="username">-</span></div>
<div class="stat"><span>${x("farm.stats.retries","Reintentos")}</span><span id="retries">0</span></div>
</div>
<div class="card" id="cfgCard">
<div class="list">
<div class="list-item">
<span class="label">${x("farm.config.minCharges","Cargas m\xEDnimas")}</span>
<input type="number" id="minCharges" min="0" max="100" value="${(Ge=o.MIN_CHARGES)!=null?Ge:10}" />
</div>
<div class="list-item">
<span class="label">${x("farm.config.delay","Espera (seg)")}</span>
<input type="number" id="delaySeconds" min="1" max="120" value="${Math.round((o.DELAY_MS||15e3)/1e3)||15}" />
</div>
<div class="list-item">
<span class="label">${x("farm.pixelsPerBatch","P\xEDxeles por lote")}</span>
<input type="number" id="pixelsPerBatch" min="1" max="50" value="${(je=o.PIXELS_PER_BATCH)!=null?je:20}" />
</div>
</div>
</div>
<div class="card">
<div class="row">
<label class="label">${x("farm.colorMode","Modo de color")}</label>
<select id="colorMode">
<option value="fixed">${x("farm.color.fixed","Fijo")}</option>
<option value="range">${x("farm.color.range","Rango")}</option>
<option value="random">${x("farm.color.random","Aleatorio")}</option>
</select>
</div>
<div id="fixedPicker" class="row" style="flex-direction:column">
<div class="label" id="selectedColorLabel">${x("farm.color.selected","Color seleccionado")}: -</div>
<div class="colors" id="colorGrid"></div>
</div>
<div id="rangePicker" class="grid2" style="display:none;">
<div><label class="label">${x("farm.color.min","M\xEDn")}</label><select id="colorMin"></select></div>
<div><label class="label">${x("farm.color.max","M\xE1x")}</label><select id="colorMax"></select></div>
</div>
</div>
<div class="row">
<button class="btn ghost" id="capture-btn">${x("farm.capture","Capturar zona")}</button>
<button class="btn ghost" id="once-btn">${x("farm.once","Una vez")}</button>
<button class="btn ghost" id="select-position-btn" style="display:none">Select</button>
</div>
<div class="row" id="posInfoRow" style="display:none"></div>
<div class="card" id="purchaseCard">
<div class="row" style="align-items:center; justify-content:space-between;">
<span class="label" style="flex:1;">${x("farm.autobuy.title","Auto-compra (+5 cargas)")}</span>
<label class="toggle-switch" style="position: relative; display: inline-block; width: 50px; height: 26px; margin-left: 10px;">
<input type="checkbox" id="autoBuyCheckbox" style="opacity: 0; width: 0; height: 0;">
<span class="toggle-slider" style="
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ef4444;
transition: all 0.3s ease;
border-radius: 13px;
border: 1px solid #dc2626;
"></span>
<span class="toggle-knob" style="
position: absolute;
height: 20px;
width: 20px;
left: 3px;
top: 3px;
background-color: white;
transition: all 0.3s ease;
border-radius: 50%;
box-shadow: 0 2px 6px rgba(0,0,0,0.3);
"></span>
</label>
</div>
<div class="row" id="manualBuyRow" style="display:none; gap:8px; align-items:center;">
<button class="btn primary" id="manualBuyBtn">${x("farm.buyCharges","Comprar +5 cargas")}</button>
</div>
<div class="row" style="font-size:12px; color:#9ca3af">${x("farm.autobuy.hint","Se activar\xE1 autom\xE1ticamente cuando tengas \u2265 500 gotas")}</div>
</div>
</div>
<div class="status" id="status">${x("farm.ready","Listo")}</div>
`,i.appendChild(r);let a={start:r.querySelector("#startBtn"),stop:r.querySelector("#stopBtn"),logsBtn:r.querySelector("#logsBtn"),status:r.querySelector("#status"),painted:r.querySelector("#painted"),charges:r.querySelector("#charges"),droplets:r.querySelector("#droplets"),username:r.querySelector("#username"),retries:r.querySelector("#retries"),colorMode:r.querySelector("#colorMode"),colorGrid:r.querySelector("#colorGrid"),colorMin:r.querySelector("#colorMin"),colorMax:r.querySelector("#colorMax"),fixedPicker:r.querySelector("#fixedPicker"),rangePicker:r.querySelector("#rangePicker"),selectPositionBtn:r.querySelector("#select-position-btn"),captureBtn:r.querySelector("#capture-btn"),onceBtn:r.querySelector("#once-btn"),posInfoValue:r.querySelector("#posInfoValue"),minCharges:r.querySelector("#minCharges"),delaySeconds:r.querySelector("#delaySeconds"),pixelsPerBatch:r.querySelector("#pixelsPerBatch"),selectedColorLabel:r.querySelector("#selectedColorLabel"),autoBuyCheckbox:r.querySelector("#autoBuyCheckbox"),manualBuyRow:r.querySelector("#manualBuyRow"),manualBuyBtn:r.querySelector("#manualBuyBtn")};a.selectPositionBtn.addEventListener("click",()=>{var m;(m=a.captureBtn)==null||m.click()});function c(m){m.innerHTML="",Object.values(me).forEach(T=>{if(!T.rgb)return;let S=document.createElement("option");S.value=String(T.id),S.textContent=`${T.id} - ${T.name}`,m.appendChild(S)})}c(a.colorMin),c(a.colorMax);function g(m){a.colorGrid.innerHTML="",Object.values(me).forEach(T=>{let S=document.createElement("div");S.className="swatch"+(T.id===m?" active":""),T.rgb?S.style.background=`rgb(${T.rgb.r},${T.rgb.g},${T.rgb.b})`:(S.style.backgroundImage=`linear-gradient(45deg, #bbb 25%, transparent 25%),
linear-gradient(-45deg, #bbb 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, #bbb 75%),
linear-gradient(-45deg, transparent 75%, #bbb 75%)`,S.style.backgroundSize="8px 8px",S.style.backgroundPosition="0 0, 0 4px, 4px -4px, -4px 0px"),S.title=`${T.id} - ${T.name}`,S.addEventListener("click",()=>{o.COLOR_FIXED=T.id,g(o.COLOR_FIXED),q(),N(),a.selectedColorLabel&&(a.selectedColorLabel.textContent=`${x("farm.color.selected","Color seleccionado")}: ${he(o.COLOR_FIXED)}`)}),a.colorGrid.appendChild(S)})}a.colorMode.value=o.COLOR_MODE||"random",a.colorMin.value=String((Xe=o.COLOR_MIN)!=null?Xe:1),a.colorMax.value=String((Ve=o.COLOR_MAX)!=null?Ve:32),g((Ze=o.COLOR_FIXED)!=null?Ze:1),a.selectedColorLabel&&(a.selectedColorLabel.textContent=`${x("farm.color.selected","Color seleccionado")}: ${he((Ke=o.COLOR_FIXED)!=null?Ke:1)}`),u();try{N()}catch{}a.colorMode.addEventListener("change",()=>{o.COLOR_MODE=a.colorMode.value,u(),q(),N()}),a.colorMin.addEventListener("change",()=>{let m=Y(parseInt(a.colorMin.value,10),1,63);o.COLOR_MIN=m,o.COLOR_MAX<m&&(o.COLOR_MAX=m),a.colorMax.value=String(o.COLOR_MAX),q(),N()}),a.colorMax.addEventListener("change",()=>{let m=Y(parseInt(a.colorMax.value,10),1,63);o.COLOR_MAX=m,o.COLOR_MIN>m&&(o.COLOR_MIN=m),a.colorMin.value=String(o.COLOR_MIN),q(),N()}),a.minCharges&&a.minCharges.addEventListener("change",()=>{let m=Y(parseInt(a.minCharges.value,10)||0,0,1e3);o.MIN_CHARGES=m,q(),N()}),a.delaySeconds&&a.delaySeconds.addEventListener("change",()=>{let m=Y(parseInt(a.delaySeconds.value,10)||1,1,3600);o.DELAY_MS=m*1e3,q(),N()}),a.pixelsPerBatch&&a.pixelsPerBatch.addEventListener("change",()=>{let m=Y(parseInt(a.pixelsPerBatch.value,10)||1,1,50);o.PIXELS_PER_BATCH=m,q(),N()});function u(){let m=a.colorMode.value;a.fixedPicker.style.display=m==="fixed"?"":"none",a.rangePicker.style.display=m==="range"?"":"none"}if(a.start.addEventListener("click",async()=>{E(!0),a.stop.classList.add("danger");try{e&&await e()}catch{}}),a.stop.addEventListener("click",async()=>{E(!1),a.stop.classList.remove("danger");try{t&&await t()}catch{}}),a.autoBuyCheckbox){let m=a.autoBuyCheckbox.parentElement.querySelector(".toggle-slider"),T=a.autoBuyCheckbox.parentElement.querySelector(".toggle-knob"),S=R=>{!m||!T||(m.style.backgroundColor=R?"#22c55e":"#ef4444",m.style.borderColor=R?"#16a34a":"#dc2626",T.style.left=R?"27px":"3px")};a.autoBuyCheckbox.checked=!!o.AUTO_BUY_ENABLED,S(a.autoBuyCheckbox.checked),a.autoBuyCheckbox.addEventListener("change",R=>{let j=!!R.target.checked;o.AUTO_BUY_ENABLED=j,q(),N(),S(j),a.manualBuyRow&&(a.manualBuyRow.style.display=j?"none":"flex")}),a.manualBuyRow&&(a.manualBuyRow.style.display=a.autoBuyCheckbox.checked?"none":"flex")}a.manualBuyBtn&&a.manualBuyBtn.addEventListener("click",async()=>{try{a.manualBuyBtn.disabled=!0,_(x("farm.buying","Comprando..."),"status");let{purchaseProduct:m}=await Promise.resolve().then(()=>(ge(),gt));if((await m(70,1)).success){H.notify&&H.notify(x("farm.buyOk","Compra realizada. Actualiza sesi\xF3n."),"success"),_(x("farm.buyOk","Compra realizada. Actualiza sesi\xF3n."),"success");try{Number.isFinite(h.droplets)&&(h.droplets=Math.max(0,(h.droplets||0)-500),w(h.painted,h.charges.count,h.retryCount))}catch{}}else H.notify&&H.notify(x("farm.buyFail","No se pudo comprar"),"error"),_(x("farm.buyFail","No se pudo comprar"),"error")}catch{H.notify&&H.notify(x("farm.buyFail","No se pudo comprar"),"error"),_(x("farm.buyFail","No se pudo comprar"),"error")}finally{a.manualBuyBtn.disabled=!1}}),document.body.appendChild(n);try{ce(n)}catch{}let d=r.querySelector(".header"),p=r.querySelector(".body"),y=!1,f=0,P=0;d.addEventListener("mousedown",m=>{let T=m.target;if(T&&(T.id==="minBtn"||T.closest("#minBtn")))return;y=!0;let S=n.getBoundingClientRect();f=m.clientX-S.left,P=m.clientY-S.top,m.preventDefault()}),window.addEventListener("mousemove",m=>{if(!y)return;let T=Math.max(0,Math.min(window.innerWidth-r.offsetWidth,m.clientX-f)),S=Math.max(0,Math.min(window.innerHeight-40,m.clientY-P));n.style.left=T+"px",n.style.top=S+"px",n.style.right="auto"}),window.addEventListener("mouseup",()=>{y=!1});let C=r.querySelector("#minBtn"),L=!1;if(C&&p&&(p.addEventListener("transitionend",m=>{m.propertyName==="max-height"&&L&&(p.style.display="none")}),C.addEventListener("click",()=>{L=!L,L||(p.style.display="block",p.offsetHeight),p.classList.toggle("collapsed",L),C.textContent=L?"+":"\u2013"})),a.logsBtn){let m=null;a.logsBtn.addEventListener("click",async()=>{try{let{createLogWindow:T}=await Promise.resolve().then(()=>(Pt(),Tt));m=m||T("Auto-Farm"),m.toggle()}catch(T){l("No se pudo abrir la ventana de logs:",T),I("No se pudo abrir Logs","error")}})}function _(m,T="status"){a.status.textContent=m,a.status.style.background=T==="error"?"rgba(245, 101, 101, 0.2)":T==="success"?"rgba(72, 187, 120, 0.2)":"rgba(66, 153, 225, 0.2)"}function w(m,T,S){var xe,Z,ne,Je,Qe,et,tt,ot;a.painted.textContent=String(m!=null?m:0);let R=Math.floor(T!=null?T:0),j=(Z=(xe=h.charges)==null?void 0:xe.max)!=null?Z:0;a.charges.textContent=`${R}/${j}`,a.retries.textContent=String(S!=null?S:0);let M=(tt=(et=(ne=h)==null?void 0:ne.droplets)!=null?et:(Qe=(Je=h)==null?void 0:Je.user)==null?void 0:Qe.droplets)!=null?tt:null;M!=null&&a.droplets&&(a.droplets.textContent=String(M)),(ot=h)!=null&&ot.user&&a.username&&(a.username.textContent=h.user.name||h.user.username||"-")}function b(){return!!o.POSITION_SELECTED&&Number.isFinite(o.BASE_X)&&Number.isFinite(o.BASE_Y)&&Number.isFinite(o.TILE_X)&&Number.isFinite(o.TILE_Y)}function E(m){let T=!b();a.start.disabled=!!m||T,a.stop.disabled=!m,a.onceBtn&&(a.onceBtn.disabled=!!m||T),m?a.stop.classList.add("danger"):a.stop.classList.remove("danger")}function v(m=150){r.style.outline="2px solid #93c5fd",setTimeout(()=>r.style.outline="",m)}function I(m,T="info",S=3e3){let R=document.getElementById("wplace-toast-container");R||(R=document.createElement("div"),R.id="wplace-toast-container",R.style.cssText=`
position: fixed;
top: 16px;
left: 50%;
transform: translateX(-50%);
z-index: 2147483647;
display: flex;
flex-direction: column;
gap: 8px;
pointer-events: none;
`,document.body.appendChild(R));let j=T==="success"?"#10b981":T==="error"?"#ef4444":"#3b82f6",M=document.createElement("div");M.className="wplace-toast",M.textContent=m,M.style.cssText=`
min-width: 240px;
max-width: 80vw;
margin: 0 auto;
background: ${j};
color: white;
border-radius: 10px;
box-shadow: 0 8px 24px rgba(0,0,0,0.35);
padding: 10px 14px;
font-weight: 600;
letter-spacing: .2px;
transform: translateY(-10px) scale(0.98);
opacity: 0;
transition: transform .25s cubic-bezier(0.2, 0.8, 0.2, 1), opacity .25s ease;
pointer-events: auto;
`,R.appendChild(M),(ne=>typeof window!="undefined"&&window.requestAnimationFrame?window.requestAnimationFrame(ne):setTimeout(ne,16))(()=>{M.style.transform="translateY(0) scale(1)",M.style.opacity="1"});let Z=()=>{M.style.transform="translateY(-10px) scale(0.98)",M.style.opacity="0",setTimeout(()=>M.remove(),250)};return S>0&&setTimeout(Z,S),M.addEventListener("click",Z),{close:Z}}function q(){try{localStorage.setItem("wplace_farm_cfg",JSON.stringify(o))}catch{}}function N(){let m=b();m&&a.posInfoValue?(a.posInfoValue.textContent=`tile(${o.TILE_X},${o.TILE_Y}) base(${o.BASE_X},${o.BASE_Y})`,a.captureBtn&&(a.captureBtn.textContent=x("farm.recapture"))):(a.posInfoValue&&(a.posInfoValue.textContent="-"),a.captureBtn&&(a.captureBtn.textContent=x("farm.capture","Capturar zona"))),E(!1),a.captureBtn&&(m?a.captureBtn.classList.remove("blink-orange"):a.captureBtn.classList.add("blink-orange"))}function Dt(){return n}function $t(){n.remove()}function Wt(){var T;r.querySelector("#startBtn").textContent=x("farm.start","Iniciar"),r.querySelector("#stopBtn").textContent=x("farm.stop","Detener"),r.querySelector("#capture-btn").textContent=x("farm.capture","Capturar zona"),r.querySelector("#once-btn").textContent=x("farm.once","Una vez");let m=r.querySelector("#logsBtn");m&&(m.textContent=x("farm.logWindow","Logs")),a.selectedColorLabel&&(a.selectedColorLabel.textContent=`${x("farm.color.selected","Color seleccionado")}: ${he((T=o.COLOR_FIXED)!=null?T:1)}`)}let H={setStatus:_,updateStats:w,updateButtonStates:E,flashEffect:v,getElement:Dt,destroy:$t,updateConfig:N,updateTexts:Wt,notify:I};return window.__wplaceBot=window.__wplaceBot||{},window.__wplaceBot.ui=H,H}async function We(){return{success:!1,error:"not-implemented"}}Le();ge();F();var so=o=>Math.floor(Math.random()*o);function Lt(o,e){let t=[],n=e.TILE_SIZE-1,i=Math.max(0,Math.min(n,e.BASE_X)),s=Math.max(0,Math.min(n,e.BASE_Y));for(let r=0;r<o;r++)i=Math.max(0,Math.min(n,i)),s=Math.max(0,Math.min(n,s)),t.push(i,s),i++,i>n&&(i=Math.max(0,Math.min(n,e.BASE_X)),s++,s>n&&(s=Math.max(0,Math.min(n,e.BASE_Y))));return t.length>=4&&l(`\u{1F3AF} L\xEDnea recta generada: [${t.slice(0,8).join(",")}...] total: ${t.length/2} p\xEDxeles`),t}function St(o,e){let t=[];for(let n=0;n<o;n++)t.push(co(e));return t}function co(o){if(o.COLOR_MODE==="fixed")return o.COLOR_FIXED;{let e=o.COLOR_MAX-o.COLOR_MIN+1;return o.COLOR_MIN+so(e)}}var ye=o=>new Promise(e=>setTimeout(e,o));async function de(o,e,t){let i=Date.now()+o;for(;Date.now()<i&&(!t||t.running);){let s=i-Date.now();e&&e(s),await ye(Math.min(1e3,s))}}F();Ce();var It=Object.freeze({ENABLED:!0,BASE_URL:"https://metricswplaceapi.alarisco.xyz",API_KEY:"wplace_2c8e4b2b1e0a4f7cb9d3a76f4a1c0b6f",PUBLIC_SALT:"wplace_public_salt_2024",VARIANT:"auto-guard",TIMEOUT_MS:1e4,RETRIES:1,PING_INTERVAL_MS:12e4});function lo(){var o;try{if(typeof window=="undefined"||!globalThis.URLSearchParams)return{};let e=new globalThis.URLSearchParams(((o=globalThis.location)==null?void 0:o.search)||""),t=e.get("metricsEnabled"),n=e.get("metricsUrl"),i=e.get("metricsKey"),s=e.get("metricsSalt"),r=e.get("metricsVariant"),a=e.get("metricsTimeoutMs"),c=e.get("metricsRetries"),g=e.get("metricsPingMs"),u={};return t!=null&&(u.ENABLED=t==="true"||t==="1"),n&&(u.BASE_URL=n),i&&(u.API_KEY=i),s&&(u.PUBLIC_SALT=s),r&&(u.VARIANT=r),a&&!Number.isNaN(Number(a))&&(u.TIMEOUT_MS=Number(a)),c&&!Number.isNaN(Number(c))&&(u.RETRIES=Number(c)),g&&!Number.isNaN(Number(g))&&(u.PING_INTERVAL_MS=Number(g)),u}catch{return{}}}function uo(){var t;let o=typeof window!="undefined"&&(window.__WPLACE_METRICS__||((t=window.__WPLACE_CONFIG__)==null?void 0:t.metrics))||{},e={};return typeof o.ENABLED=="boolean"&&(e.ENABLED=o.ENABLED),typeof o.BASE_URL=="string"&&(e.BASE_URL=o.BASE_URL),typeof o.API_KEY=="string"&&(e.API_KEY=o.API_KEY),typeof o.PUBLIC_SALT=="string"&&(e.PUBLIC_SALT=o.PUBLIC_SALT),typeof o.VARIANT=="string"&&(e.VARIANT=o.VARIANT),Number.isFinite(o.TIMEOUT_MS)&&(e.TIMEOUT_MS=o.TIMEOUT_MS),Number.isFinite(o.RETRIES)&&(e.RETRIES=o.RETRIES),Number.isFinite(o.PING_INTERVAL_MS)&&(e.PING_INTERVAL_MS=o.PING_INTERVAL_MS),e}function po(o){let e={...o};return typeof e.BASE_URL=="string"&&(e.BASE_URL=e.BASE_URL.replace(/\/$/,"")),["auto-guard","auto-farm","auto-image","launcher"].includes(e.VARIANT)||(e.VARIANT=It.VARIANT),e}var Ue=null;function B(o={}){let e={...It,...uo(),...lo(),...o};return Ue=po(e),Ue}async function go(o){let e=globalThis.TextEncoder,t=globalThis.crypto;if(!e||!(t!=null&&t.subtle))throw new Error("WebCrypto no disponible");let n=new e,i=await t.subtle.digest("SHA-256",n.encode(o));return Array.from(new Uint8Array(i)).map(s=>s.toString(16).padStart(2,"0")).join("")}async function At(o,e){let t=Ue||B(),n=typeof e=="string"?e:t.PUBLIC_SALT;return!n||!o?null:go(String(n)+String(o))}function kt(){var o,e,t;try{if(typeof window=="undefined")return null;if((o=window.__WPLACE_METRICS__)!=null&&o.anonId)return String(window.__WPLACE_METRICS__.anonId);let n="wplace_metrics_aid",i=null;try{i=localStorage.getItem(n)}catch{}if(i&&typeof i=="string")return i;let s=new Uint8Array(16);(t=(e=globalThis.crypto||{}).getRandomValues)==null||t.call(e,s);let r=Array.from(s).map(a=>a.toString(16).padStart(2,"0")).join("");try{localStorage.setItem(n,r)}catch{}return window.__WPLACE_METRICS__||(window.__WPLACE_METRICS__={}),window.__WPLACE_METRICS__.anonId=r,r}catch{return null}}F();async function mo(o,e,{timeout:t,apiKey:n}){let i={"Content-Type":"application/json"};return n&&(i["X-API-Key"]=n),await ue(o,{method:"POST",headers:i,body:JSON.stringify(e),timeout:t})}function Rt(o){return o.text().then(e=>{try{return e?JSON.parse(e):{}}catch{return{}}})}async function ho(o,e){let t=B(e);if(!t.ENABLED)return{ok:!1,skipped:!0};let n=`${t.BASE_URL}/v1/events`;try{let r=o==null?void 0:o.event_type,a=o==null?void 0:o.bot_variant;(r==="pixel_painted"||r==="pixel_repaired")&&typeof(o==null?void 0:o.pixel_delta)!="undefined"&&l(`[METRICS] ${r} \u2192 \u0394 ${o.pixel_delta} (${a})`)}catch{}let i=0,s=null;for(;i<=t.RETRIES;)try{let r=await mo(n,o,{timeout:t.TIMEOUT_MS,apiKey:t.API_KEY});if(!r.ok){let c=await Rt(r);return{ok:!1,status:r.status,data:c}}let a=await Rt(r);try{let c=o==null?void 0:o.event_type,g=o==null?void 0:o.bot_variant;c==="session_start"&&l(`[METRICS] session_start (${g})`)}catch{}return{ok:!0,data:a}}catch(r){if(s=r,i++,i>t.RETRIES)break;await new Promise(a=>setTimeout(a,300*i))}return{ok:!1,error:(s==null?void 0:s.message)||String(s)}}async function be({botVariant:o,eventType:e,pixelDelta:t,timestamp:n,metadata:i}={},s){let r=B(s);if(!r.ENABLED)return{ok:!1,skipped:!0};let a={};a.bot_variant=o||r.VARIANT,a.event_type=e,typeof t=="number"&&(a.pixel_delta=t),n&&(a.timestamp=n),i&&typeof i=="object"&&(a.event_metadata=i);let c=kt();if(c){let g=await At(c);g&&(a.user_hash=await g)}return ho(a,s)}async function Mt({botVariant:o,metadata:e}={},t){return be({botVariant:o,eventType:"session_start",metadata:e},t)}async function U({botVariant:o,metadata:e}={},t){return be({botVariant:o,eventType:"session_ping",metadata:e},t)}async function Ft({botVariant:o,metadata:e}={},t){return be({botVariant:o,eventType:"session_end",metadata:e},t)}async function Bt(o,{botVariant:e,metadata:t}={},n){return!Number.isFinite(o)||o<=0?{ok:!1,skipped:!0}:be({botVariant:e,eventType:"pixel_painted",pixelDelta:Math.trunc(o),metadata:t},n)}async function fo(o,e,t){try{let n=document.querySelectorAll("canvas");for(let i of n){let s=i.getContext("2d");if(s){let r=typeof t=="number"?`#${t.toString(16).padStart(6,"0")}`:t;s.fillStyle=r,s.fillRect(o,e,1,1),typeof window!="undefined"&&window.Event&&i.dispatchEvent(new window.Event("pixel-updated"))}}}catch(n){l("Error actualizando canvas:",n)}}async function wo(o,e){try{let t=`[data-tile="${o}-${e}"], .tile-${o}-${e}, [data-tile-x="${o}"][data-tile-y="${e}"]`,n=document.querySelector(t);n?(n.classList.add("tile-updating"),setTimeout(()=>{n.classList.remove("tile-updating"),n.classList.add("tile-updated"),setTimeout(()=>n.classList.remove("tile-updated"),1e3)},100),l(`Tile (${o},${e}) actualizado visualmente`)):(document.querySelectorAll("canvas").forEach(s=>{let r=s.getContext("2d");if(r){let a=r.getImageData(0,0,1,1);r.putImageData(a,0,0)}}),l(`Actualizaci\xF3n visual gen\xE9rica realizada para tile (${o},${e})`))}catch(t){l("Error en actualizaci\xF3n visual del tile:",t)}}async function yo(o,e,t,n,i,s){var P,C,L,_;if(!o.POSITION_SELECTED||o.BASE_X===null||o.BASE_Y===null)return t("\u{1F3AF} Selecciona una zona primero usando 'Seleccionar Zona'","error"),l("Pintado cancelado: no se ha seleccionado una posici\xF3n base"),!1;if(!Number.isFinite(o.TILE_X)||!Number.isFinite(o.TILE_Y))return t(`\u{1F6AB} Coordenadas del tile inv\xE1lidas (${o.TILE_X},${o.TILE_Y}). Calibra primero`,"error"),l("Pintado cancelado: coordenadas del tile inv\xE1lidas"),!1;let r=Math.floor(e.charges.count);if(r<1)return t("\u{1F50B} Sin cargas disponibles. Esperando...","error"),!1;let a=Math.min(r,o.PIXELS_PER_BATCH,50),c=Math.max(1,a);c<o.PIXELS_PER_BATCH&&l(`Ajustando p\xEDxeles por cargas completas disponibles: ${c}/${o.PIXELS_PER_BATCH} (${r} cargas completas de ${e.charges.count.toFixed(2)} totales)`);let g=Lt(c,o),u=St(c,o),d=g[0],p=g[1];t(`\u{1F33E} Pintando ${c} p\xEDxeles desde base (${o.BASE_X},${o.BASE_Y}) tile(${o.TILE_X},${o.TILE_Y})...`,"status");let y=st();y||(y=await V());let f=await Re(o.TILE_X,o.TILE_Y,g,u,y);if(e.last={x:d,y:p,color:u[0],pixelCount:c,availableCharges:r,status:f.status,json:f.json},f.success&&f.painted>0){let w=f.painted||c;e.painted+=w,e.retryCount=0;for(let b=0;b<g.length;b+=2){let E=g[b],v=g[b+1],I=u[Math.floor(b/2)];await fo(E,v,I)}await wo(o.TILE_X,o.TILE_Y),await i(),t(`\u2705 Lote pintado: ${w}/${c} p\xEDxeles en zona (${o.BASE_X},${o.BASE_Y})`,"success");try{Bt(w,{botVariant:"auto-farm",metadata:{tileX:o.TILE_X,tileY:o.TILE_Y}})}catch{}try{let b=B(),E=Math.max(6e4,b.PING_INTERVAL_MS||12e4),v=Date.now(),I=(window.__wplaceMetrics||{}).farmLastPing||0;v-I>=E&&(U({botVariant:"auto-farm",metadata:{reason:"after-paint"}}),window.__wplaceMetrics=window.__wplaceMetrics||{},window.__wplaceMetrics.farmLastPing=v)}catch{}if(n(),typeof window!="undefined"&&window.CustomEvent){let b=new window.CustomEvent("wplace-batch-painted",{detail:{firstX:d,firstY:p,pixelCount:w,totalPixels:c,colors:u,coords:g,tileX:o.TILE_X,tileY:o.TILE_Y,baseX:o.BASE_X,baseY:o.BASE_Y,radius:o.FARM_RADIUS,timestamp:Date.now()}});window.dispatchEvent(b)}return!0}if(f.status===403)t("\u26A0\uFE0F 403 (token expirado o Cloudflare). Reintentar\xE1...","error");else if(f.status===401)t("\u{1F512} 401 (no autorizado). Verifica tu sesi\xF3n.","error");else if(f.status===429)t("\u23F3 429 (l\xEDmite de tasa). Esperando...","error");else if(f.status===408)t("\u23F0 Timeout del servidor. Coordenadas problem\xE1ticas o servidor sobrecargado","error");else if(f.status===0)t("\u{1F310} Error de red. Verificando conectividad...","error");else if(f.status===500)t("\u{1F525} 500 (error interno del servidor). Reintentar\xE1...","error");else if(f.status===502||f.status===503||f.status===504)t(`\u{1F6AB} ${f.status} (servidor no disponible). Reintentar\xE1...`,"error");else if(f.status===404)t(`\u{1F5FA}\uFE0F 404 (tile no encontrado). Verificando coordenadas tile(${o.TILE_X},${o.TILE_Y})`,"error");else try{let w=await s(),b=w!=null&&w.up?"\u{1F7E2} Online":"\u{1F534} Offline";t(`\u274C Error ${f.status}: ${((P=f.json)==null?void 0:P.message)||((C=f.json)==null?void 0:C.error)||"Fallo al pintar"} (Backend: ${b})`,"error")}catch{t(`\u274C Error ${f.status}: ${((L=f.json)==null?void 0:L.message)||((_=f.json)==null?void 0:_.error)||"Fallo al pintar"} (Health check fall\xF3)`,"error")}return l(`Fallo en pintado: status=${f.status}, error=${f.error}, coords=`,g,"colors=",u),!1}async function qe(o,e,t,n,i,s){for(let c=1;c<=5;c++)try{if(await yo(o,e,t,n,i,s))return e.retryCount=0,!0;if(e.retryCount=c,c<5){let u=3e3*Math.pow(2,c-1);t(`\u{1F504} Reintento ${c}/5 en ${u/1e3}s...`,"error"),await ye(u)}}catch(g){if(l(`Error en intento ${c}:`,g),e.retryCount=c,c<5){let u=3e3*Math.pow(2,c-1);t(`\u{1F4A5} Error en intento ${c}/5, reintentando en ${u/1e3}s...`,"error"),await ye(u)}}return e.retryCount=5,t("\u274C Fall\xF3 despu\xE9s de 5 intentos. Se requiere intervenci\xF3n manual.","error"),!1}async function Nt(o,e,t,n,i,s,r){for(l("\u{1F680} Loop iniciado"),e.running=!0;e.running;)try{await r();try{let c=B(),g=Math.max(6e4,c.PING_INTERVAL_MS||12e4),u=Date.now(),d=(window.__wplaceMetrics||{}).farmLastPing||0;u-d>=g&&(U({botVariant:"auto-farm",metadata:{reason:"loop"}}),window.__wplaceMetrics=window.__wplaceMetrics||{},window.__wplaceMetrics.farmLastPing=u)}catch{}if(e.charges.count<o.MIN_CHARGES){let c=Math.max(0,(o.MIN_CHARGES-e.charges.count)*o.CHARGE_REGEN_MS);t(`\u23F3 Esperando cargas: ${e.charges.count.toFixed(1)}/${o.MIN_CHARGES} (${Math.round(c/1e3)}s)`,"status");try{let g=B(),u=Math.max(6e4,g.PING_INTERVAL_MS||12e4),d=Date.now(),p=(window.__wplaceMetrics||{}).farmLastPing||0;d-p>=u&&(U({botVariant:"auto-farm",metadata:{reason:"waiting-charges"}}),window.__wplaceMetrics=window.__wplaceMetrics||{},window.__wplaceMetrics.farmLastPing=d)}catch{}await de(Math.min(c,o.DELAY_MS),g=>{t(`\u23F3 Esperando cargas: ${e.charges.count.toFixed(1)}/${o.MIN_CHARGES} (~${Math.round(g/1e3)}s)`,"status")},e);continue}if(!await qe(o,e,t,n,i,s)){t("\u{1F634} Esperando antes del siguiente intento...","error"),await de(o.DELAY_MS*2,c=>{t(`\u{1F634} Cooldown extendido: ${Math.round(c/1e3)}s`,"error")});continue}e.running&&await de(o.DELAY_MS,c=>{t(`\u{1F4A4} Esperando ${Math.round(c/1e3)}s hasta siguiente pintada...`,"status")})}catch(a){l("Error cr\xEDtico en loop:",a),t(`\u{1F4A5} Error cr\xEDtico: ${a.message}`,"error"),e.running&&await de(o.DELAY_MS*3,c=>{t(`\u{1F6A8} Recuper\xE1ndose de error cr\xEDtico: ${Math.round(c/1e3)}s`,"error")})}l("\u23F9\uFE0F Loop detenido"),t("\u23F9\uFE0F Bot detenido","status")}F();var He=class{constructor(){this.active=!1,this.originalFetch=window.fetch,this.callback=null}enable(e){if(this.active){l("\u26A0\uFE0F Captura ya est\xE1 activa");return}this.active=!0,this.callback=e,l("\u{1F575}\uFE0F Captura de coordenadas activada. Pinta un p\xEDxel manualmente..."),window.fetch=async(...t)=>{let n=await this.originalFetch.apply(window,t);return this.active&&this.shouldCapture(t[0],t[1])&&await this.handleCapture(t[0],t[1],n.clone()),n},setTimeout(()=>{this.active&&(this.disable(),l("\u23F0 Captura de coordenadas expirada"))},3e4)}shouldCapture(e,t){if(!e||!t)return!1;let n=e.toString();return!(!n.includes("paint")&&!n.includes("pixel")&&!n.includes("place")||!t.method||t.method.toUpperCase()!=="POST")}async handleCapture(e,t,n){try{let i=null,s=null,r=null,a=(u,d)=>{if(Number.isFinite(u)&&Number.isFinite(d)){if(u>=0&&u<1e3&&d>=0&&d<1e3)return 1e3;if(u>=0&&u<3e3&&d>=0&&d<3e3)return 3e3}return 1e3};if(t.body){let u=t.body,d=null;try{if(typeof u=="string")d=JSON.parse(u);else if(u&&typeof u.text=="function"){let p=await u.text();try{d=JSON.parse(p)}catch{d=null}}else d=u}catch{d=null}if(d){let p=d.coords;Array.isArray(p)?p.length>=2&&typeof p[0]=="number"&&typeof p[1]=="number"?i=[p[0],p[1]]:Array.isArray(p[0])&&p[0].length>=2?i=[p[0][0],p[0][1]]:typeof p[0]=="object"&&p[0]&&Number.isFinite(p[0].x)&&Number.isFinite(p[0].y)&&(i=[p[0].x,p[0].y]):Number.isFinite(d.x)&&Number.isFinite(d.y)?i=[d.x,d.y]:Array.isArray(d.coordinates)&&d.coordinates.length>=2&&(i=[d.coordinates[0],d.coordinates[1]])}}let c=e.toString(),g=c.match(/\/s0\/pixel\/(-?\d+)\/(-?\d+)/);if(g&&(s=parseInt(g[1]),r=parseInt(g[2])),!i){let u=c.match(/[?&](?:x|coords?)=([^&]+)/);if(u){let d=decodeURIComponent(u[1]);try{i=JSON.parse(d)}catch{let p=d.split(",");p.length>=2&&(i=[parseInt(p[0]),parseInt(p[1])])}}}if(i&&i.length>=2){let u,d,p,y;if(Number.isInteger(s)&&Number.isInteger(r)){p=i[0],y=i[1];let f=a(p,y);u=s*f+p,d=r*f+y,l(`\u{1F3AF} Coordenadas capturadas (locales): tile(${s},${r}) local(${p},${y}) -> global(${u},${d})`)}else{u=i[0],d=i[1];let f=1e3;s=Math.floor(u/f),r=Math.floor(d/f),p=(u%f+f)%f,y=(d%f+f)%f,l(`\u{1F3AF} Coordenadas capturadas (globales): global(${u},${d}) -> tile(${s},${r}) local(${p},${y})`)}if(n.ok){this.disable();let f={success:!0,tileX:s,tileY:r,globalX:u,globalY:d,localX:p,localY:y};try{this.callback&&this.callback(f)}catch(P){l("Error en callback de captura:",P)}try{window.__wplaceLastCapture=f;try{let P=document.createEvent("Event");P.initEvent("wplace-capture",!0,!0),P.detail=f,window.dispatchEvent(P)}catch{}}catch{}}else l("\u26A0\uFE0F Captura realizada pero la respuesta no fue exitosa")}}catch(i){l("Error procesando captura:",i)}}disable(){this.active&&(this.active=!1,window.fetch=this.originalFetch,this.callback=null,l("\u{1F512} Captura de coordenadas desactivada"))}},Ye=new He;function Ot(o=!1){let e=['[data-testid="color-picker"]',".color-picker",".palette",'[class*="color"][class*="picker"]','[class*="palette"]'];for(let i of e){let s=document.querySelector(i);if(s&&s.offsetParent!==null)return o&&console.log(`[WPA-UI] \u{1F3A8} Paleta detectada por selector: ${i}`),!0}let t=document.querySelectorAll('[style*="background-color"], [style*="background:"], .color, [class*="color"]'),n=0;for(let i of t)if(i.offsetParent!==null&&i.offsetWidth>10&&i.offsetHeight>10&&(n++,n>=5))return o&&console.log(`[WPA-UI] \u{1F3A8} Paleta detectada por colores visibles: ${n}`),!0;return o&&console.log(`[WPA-UI] \u{1F50D} Paleta no detectada. Colores visibles: ${n}`),!1}function bo(o=!1,e=!1){let t=document.querySelector("button.btn.btn-primary.btn-lg, button.btn.btn-primary.sm\\:btn-xl");if(t){let i=t.textContent.toLowerCase(),s=i.includes("paint")||i.includes("pintar"),r=t.querySelector('svg path[d*="240-120"]')||t.querySelector('svg path[d*="M15"]');if(s||r)return o&&console.log(`[WPA-UI] \u{1F3AF} Bot\xF3n Paint encontrado por selector espec\xEDfico: "${i}"`),t.click(),e&&setTimeout(()=>{o&&console.log("[WPA-UI] \u{1F3AF} Segundo clic en bot\xF3n Paint"),t.click()},500),!0}let n=document.querySelectorAll("button");for(let i of n){let s=i.textContent.toLowerCase();if((s.includes("paint")||s.includes("pintar"))&&i.offsetParent!==null&&!i.disabled)return o&&console.log(`[WPA-UI] \u{1F3AF} Bot\xF3n Paint encontrado por texto: "${i.textContent.trim()}"`),i.click(),e&&setTimeout(()=>{o&&console.log("[WPA-UI] \u{1F3AF} Segundo clic en bot\xF3n Paint"),i.click()},500),!0}return o&&console.log("[WPA-UI] \u274C Bot\xF3n Paint no encontrado"),!1}async function zt(o=3,e=!0){e&&console.log(`[WPA-UI] \u{1F916} Iniciando auto-click del bot\xF3n Paint (m\xE1ximo ${o} intentos)`);for(let t=1;t<=o;t++){if(e&&console.log(`[WPA-UI] \u{1F3AF} Intento ${t}/${o} - Buscando bot\xF3n Paint...`),Ot())return e&&console.log("[WPA-UI] \u2705 Paleta ya est\xE1 abierta, auto-click completado"),!0;if(bo(e,!1)){if(e&&console.log("[WPA-UI] \u{1F446} Clic en bot\xF3n Paint realizado (sin segundo clic)"),await new Promise(n=>setTimeout(n,1500)),Ot())return e&&console.log(`[WPA-UI] \u2705 Paleta abierta exitosamente despu\xE9s del intento ${t}`),!0;e&&console.log(`[WPA-UI] \u26A0\uFE0F Paleta no detectada tras el clic en intento ${t}. Reintentar\xE1.`)}else e&&console.log(`[WPA-UI] \u274C Bot\xF3n Paint no encontrado para clic en intento ${t}`);t<o&&await new Promise(n=>setTimeout(n,1e3))}return e&&console.log(`[WPA-UI] \u274C Auto-click fall\xF3 despu\xE9s de ${o} intentos`),!1}(async function(){"use strict";var g,u;await Be();try{l("\u{1F916} [FARM] Iniciando auto-click del bot\xF3n Paint..."),await zt(3,!0)}catch(d){l("\u26A0\uFE0F [FARM] Error en auto-click del bot\xF3n Paint:",d)}if((g=window.__wplaceBot)!=null&&g.farmRunning){alert(x("farm.alreadyRunning","Auto-Farm ya est\xE1 corriendo."));return}if((u=window.__wplaceBot)!=null&&u.imageRunning){alert(x("farm.imageRunningWarning","Auto-Image est\xE1 ejecut\xE1ndose. Ci\xE9rralo antes de iniciar Auto-Farm."));return}window.__wplaceBot||(window.__wplaceBot={}),window.__wplaceBot.farmRunning=!0;try{let d=B({VARIANT:"auto-farm"});if(d.ENABLED){window.__wplaceMetrics||(window.__wplaceMetrics={});let p=Math.max(6e4,d.PING_INTERVAL_MS||3e5);window.__wplaceMetrics.farmSessionActive=!0,Mt({botVariant:"auto-farm"}),setTimeout(()=>{try{U({botVariant:"auto-farm",metadata:{reason:"init"}})}catch{}},3e3),window.__wplaceMetrics.farmPingInterval=window.setInterval(()=>{try{U({botVariant:"auto-farm",metadata:{reason:"interval"}})}catch{}},p);let y=()=>{if(!document.hidden)try{U({botVariant:"auto-farm",metadata:{reason:"visibility"}})}catch{}},f=()=>{try{U({botVariant:"auto-farm",metadata:{reason:"focus"}})}catch{}};document.addEventListener("visibilitychange",y),window.addEventListener("focus",f),window.__wplaceMetrics.farmVisibilityHandler=y,window.__wplaceMetrics.farmFocusHandler=f}}catch{}window.addEventListener("languageChanged",()=>{var d,p;(p=(d=window.__wplaceBot)==null?void 0:d.ui)!=null&&p.updateTexts&&window.__wplaceBot.ui.updateTexts()}),l("\u{1F680} Iniciando WPlace Farm Bot (versi\xF3n modular)");function o(d){let p=!!d.POSITION_SELECTED&&d.BASE_X!=null&&d.BASE_Y!=null,y=d.TILE_X===K.TILE_X&&d.TILE_Y===K.TILE_Y,f=!Number.isFinite(d.TILE_X)||!Number.isFinite(d.TILE_Y),P=!p&&(y||f);return l(`Verificaci\xF3n calibraci\xF3n: defaults=${y}, selected=${p}, invalid=${f}, coords=(${d.TILE_X},${d.TILE_Y})`),P}function e(){l("\u{1F575}\uFE0F Activando captura de coordenadas..."),Ye.enable(d=>{d.success?(t.TILE_X=d.tileX,t.TILE_Y=d.tileY,Number.isFinite(d.localX)&&Number.isFinite(d.localY)&&(t.BASE_X=d.localX,t.BASE_Y=d.localY,t.POSITION_SELECTED=!0),r.updateConfig(),setTimeout(()=>r.updateConfig(),50),r.setStatus(`\u{1F3AF} Zona lista: tile(${d.tileX},${d.tileY}) base(${t.BASE_X},${t.BASE_Y})`,"success"),l(`\u2705 Coordenadas capturadas: tile(${d.tileX},${d.tileY}) base(${t.BASE_X},${t.BASE_Y})`)):r.setStatus(`\u274C ${x("common.error","No se pudieron capturar coordenadas")}`,"error")}),r.setStatus(`\u{1F4F8} ${x("farm.captureInstructions")}`,"status")}let t={...K,...rt(K)};if(!t.SITEKEY){let d=document.querySelector("*[data-sitekey]");d?(t.SITEKEY=d.getAttribute("data-sitekey"),l(`\u{1F4DD} Sitekey encontrada autom\xE1ticamente: ${t.SITEKEY.substring(0,20)}...`),void 0):l("\u26A0\uFE0F No se pudo encontrar la sitekey autom\xE1ticamente")}async function n(){var d,p,y,f;try{let P=await ae();if(P.success&&P.data){h.charges.count=P.data.charges||0,h.charges.max=P.data.maxCharges||50,h.charges.regen=P.data.chargeRegen||3e4,h.user=P.data.user,h.droplets=(y=P.data.droplets)!=null?y:(p=(d=P.data.user)==null?void 0:d.droplets)!=null?p:0,t.CHARGE_REGEN_MS=h.charges.regen;let C=await i();h.health=C,r.updateStats(h.painted,h.charges.count,h.retryCount,C);try{if(t.AUTO_BUY_ENABLED&&(h.droplets||0)>=500)if(r.setStatus(x("farm.autobuy.buying","Comprando autom\xE1ticamente..."),"status"),(await ke(70,1)).success){r.notify&&r.notify(x("farm.autobuy.bought","Compra OK. Actualizando sesi\xF3n..."),"success"),r.setStatus(x("farm.autobuy.bought","Compra OK. Actualizando sesi\xF3n..."),"success");try{h.droplets=Math.max(0,(h.droplets||0)-500),r.updateStats(h.painted,h.charges.count,h.retryCount,h.health)}catch{}let _=await ae();_.success&&_.data&&(h.charges.count=_.data.charges||h.charges.count,h.charges.max=_.data.maxCharges||h.charges.max,h.droplets=(f=_.data.droplets)!=null?f:h.droplets,h.user=_.data.user||h.user,r.updateStats(h.painted,h.charges.count,h.retryCount,h.health))}else r.notify&&r.notify(x("farm.autobuy.failed","No se pudo comprar autom\xE1ticamente"),"error"),r.setStatus(x("farm.autobuy.failed","No se pudo comprar autom\xE1ticamente"),"error")}catch(L){console.warn("Auto-buy error:",L)}return P.data}return null}catch(P){return l("Error actualizando estad\xEDsticas:",P),null}}async function i(){try{return await Ae()}catch(d){return l("Error verificando health:",d),{up:!1,error:d.message}}}async function s(){return await qe(t,h,r.setStatus,r.flashEffect,()=>ae(),i)}let r=vt(t,async()=>{if(h.running){r.setStatus("\u26A0\uFE0F El bot ya est\xE1 ejecut\xE1ndose","error");return}if(!t.POSITION_SELECTED||t.BASE_X===null||t.BASE_Y===null){r.setStatus(x("farm.autoSelectPosition"),"info");let y=r.getElement().shadowRoot.getElementById("select-position-btn");y&&y.click();return}if(o(t)){r.setStatus("\u{1F3AF} Calibrando autom\xE1ticamente...","status");let y=await We(t);if(y.success)r.setStatus(`\u2705 Calibrado: tile(${y.tileX},${y.tileY})`,"success"),r.updateConfig();else{r.setStatus("\u274C Error en calibraci\xF3n. Configura manualmente.","error");return}}if(r.setStatus("\u{1F50D} Verificando conectividad...","status"),!(await i()).up){r.setStatus("\u{1F534} Backend no disponible. Verifica tu conexi\xF3n.","error");return}if(r.setStatus("\u{1F504} Obteniendo informaci\xF3n de sesi\xF3n...","status"),!await n()){r.setStatus("\u274C Error obteniendo sesi\xF3n. Verifica tu login.","error");return}r.setStatus("\u{1F680} Iniciando bot...","status"),r.updateButtonStates(!0),Nt(t,h,r.setStatus,r.flashEffect,n,i,n)},()=>{h.running=!1,window.__wplaceBot&&(window.__wplaceBot.farmRunning=!1),r.setStatus("\u23F9\uFE0F Deteniendo bot...","status"),r.updateButtonStates(!1)},async()=>{r.setStatus("\u{1F3AF} Calibrando posici\xF3n...","status");let d=await We(t);d.success?(r.setStatus(`\u2705 Calibrado: tile(${d.tileX},${d.tileY})`,"success"),r.updateConfig()):r.setStatus(`\u274C Error en calibraci\xF3n: ${d.error||"Desconocido"}`,"error")}),a=r.getElement().shadowRoot.getElementById("capture-btn");a&&a.addEventListener("click",e),window.addEventListener("wplace-capture",d=>{try{let p=(d==null?void 0:d.detail)||window.__wplaceLastCapture;if(!p||!p.success)return;t.TILE_X=p.tileX,t.TILE_Y=p.tileY,Number.isFinite(p.localX)&&Number.isFinite(p.localY)&&(t.BASE_X=p.localX,t.BASE_Y=p.localY,t.POSITION_SELECTED=!0),r.updateConfig(),setTimeout(()=>r.updateConfig(),50),r.setStatus(`\u{1F3AF} Zona lista: tile(${p.tileX},${p.tileY}) base(${t.BASE_X},${t.BASE_Y})`,"success")}catch{}});let c=r.getElement().shadowRoot.getElementById("once-btn");c&&c.addEventListener("click",async()=>{if(h.running){r.setStatus("\u26A0\uFE0F Det\xE9n el bot primero","error");return}await n(),r.setStatus("\u{1F3A8} Pintando una vez...","status"),await s()?r.setStatus("\u2705 P\xEDxel pintado exitosamente","success"):r.setStatus("\u274C Error al pintar p\xEDxel","error")}),await n(),window.addEventListener("wplace-batch-painted",d=>{l(`\u{1F3A8} Lote pintado: ${d.detail.pixelCount} p\xEDxeles en tile(${d.detail.tileX},${d.detail.tileY})`)}),window.WPAUI={once:s,get:()=>({...t}),capture:e,refreshCanvas:()=>{h.last&&l(`Refrescando canvas en posici\xF3n (${h.last.x},${h.last.y})`)},verifyPixel:async(d,p)=>(l(`Verificando p\xEDxel en (${d},${p})...`),{verified:!0,x:d,y:p}),getStats:()=>({painted:h.painted,last:h.last,charges:h.charges,user:h.user,running:h.running,minCharges:t.MIN_CHARGES,delay:t.DELAY_MS,tileInfo:{tileX:t.TILE_X,tileY:t.TILE_Y,tileSize:t.TILE_SIZE,safeMargin:Math.floor(t.TILE_SIZE*.05),safeArea:{minX:Math.floor(t.TILE_SIZE*.05),maxX:t.TILE_SIZE-Math.floor(t.TILE_SIZE*.05)-1,minY:Math.floor(t.TILE_SIZE*.05),maxY:t.TILE_SIZE-Math.floor(t.TILE_SIZE*.05)-1}}}),setPixelsPerBatch:d=>{t.PIXELS_PER_BATCH=Y(d,1,50),r.updateConfig(),l(`P\xEDxeles por lote configurado a: ${t.PIXELS_PER_BATCH}`)},setMinCharges:d=>{t.MIN_CHARGES=Math.max(0,d),r.updateConfig(),l(`Cargas m\xEDnimas configuradas a: ${t.MIN_CHARGES}`)},setDelay:d=>{t.DELAY_MS=Math.max(1e3,d*1e3),r.updateConfig(),l(`Delay configurado a: ${t.DELAY_MS}ms`)},diagnose:()=>{var y;let d=window.WPAUI.getStats(),p={configValid:Number.isFinite(t.TILE_X)&&Number.isFinite(t.TILE_Y),hasCharges:h.charges.count>0,backendHealthy:((y=h.health)==null?void 0:y.up)||!1,userLoggedIn:!!h.user,coordinates:`(${t.TILE_X},${t.TILE_Y})`,safeArea:d.tileInfo.safeArea,recommendations:[]};return p.configValid||p.recommendations.push("Calibrar coordenadas del tile"),p.hasCharges||p.recommendations.push("Esperar a que se regeneren las cargas"),p.backendHealthy||p.recommendations.push("Verificar conexi\xF3n al backend"),p.userLoggedIn||p.recommendations.push("Iniciar sesi\xF3n en la plataforma"),console.table(p),p},checkHealth:i,resetConfig:()=>{it(),t={...K},r.updateConfig(),l("Configuraci\xF3n reseteada a valores por defecto")},debugRetries:()=>({currentRetries:h.retryCount,inCooldown:h.inCooldown,nextPaintTime:h.nextPaintTime,cooldownEndTime:h.cooldownEndTime}),forceClearCooldown:()=>{h.inCooldown=!1,h.nextPaintTime=0,h.cooldownEndTime=0,h.retryCount=0,l("Cooldown forzado a limpiar")},simulateError:(d=500)=>{l(`Simulando error ${d} para testing...`),r.setStatus(`\u{1F9EA} Simulando error ${d}`,"error")}},window.addEventListener("beforeunload",()=>{var d,p,y,f;h.running=!1,window.__wplaceBot&&(window.__wplaceBot.farmRunning=!1),Ye.disable(),r.destroy();try{B().ENABLED&&((d=window.__wplaceMetrics)!=null&&d.farmPingInterval&&(window.clearInterval(window.__wplaceMetrics.farmPingInterval),window.__wplaceMetrics.farmPingInterval=null),(p=window.__wplaceMetrics)!=null&&p.farmVisibilityHandler&&(document.removeEventListener("visibilitychange",window.__wplaceMetrics.farmVisibilityHandler),delete window.__wplaceMetrics.farmVisibilityHandler),(y=window.__wplaceMetrics)!=null&&y.farmFocusHandler&&(window.removeEventListener("focus",window.__wplaceMetrics.farmFocusHandler),delete window.__wplaceMetrics.farmFocusHandler),(f=window.__wplaceMetrics)!=null&&f.farmSessionActive&&(Ft({botVariant:"auto-farm"}),window.__wplaceMetrics.farmSessionActive=!1))}catch{}}),l("\u2705 Farm Bot inicializado correctamente"),l("\u{1F4A1} Usa console.log(window.WPAUI) para ver la API disponible")})().catch(o=>{console.error("[BOT] Error en Auto-Farm:",o),window.__wplaceBot&&(window.__wplaceBot.farmRunning=!1),alert("Auto-Farm: error inesperado. Revisa consola.")});})();