@midscene/ios 1.10.1 → 1.10.2-beta-20260706032158.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/bin.mjs +6 -1
- package/dist/es/cli.mjs +7 -2
- package/dist/es/index.mjs +6 -1
- package/dist/lib/bin.js +6 -1
- package/dist/lib/cli.js +7 -2
- package/dist/lib/index.js +6 -1
- package/package.json +5 -5
- package/static/index.html +1 -1
- package/static/static/js/{index.3146a384.js → index.4b541d73.js} +16 -16
- package/static/static/js/index.4b541d73.js.map +1 -0
- package/static/static/js/index.3146a384.js.map +0 -1
- /package/static/static/js/{index.3146a384.js.LICENSE.txt → index.4b541d73.js.LICENSE.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! For license information please see index.
|
|
2
|
-
(()=>{var e,t,r,n,i,o,a,s={5902(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5902,e.exports=t},5845(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5845,e.exports=t},5737(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5737,e.exports=t},8541(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8541,e.exports=t},9998(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=9998,e.exports=t},3348(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=3348,e.exports=t},8817(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8817,e.exports=t},1560(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=1560,e.exports=t},8087(e,t,r){"use strict";let n;var i,o=r(5723),a=r(2155),s=r(8997);let A=e=>{let{hideLogo:t=!1}=e,{isDarkMode:r}=function(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=()=>{var e;t("dark"===(null==(e=document.querySelector("[data-theme]"))?void 0:e.getAttribute("data-theme")))};e();let r=new MutationObserver(e),n=document.querySelector("[data-theme]")||document.documentElement;return r.observe(n,{attributes:!0,attributeFilter:["data-theme"]}),()=>r.disconnect()},[]),{isDarkMode:e}}();return t?null:(0,o.jsx)("div",{className:"logo",children:(0,o.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,o.jsx)("img",{alt:"Midscene_logo",src:r?"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png":"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png"})})})};var l=r(4177),c=r(6766),u=r(6419),d=r(8594),p=r(2651),h=r(9488),f=r(8928),g=r(5584),m=r(4174),y=r(6620),v=r(8926),b={};b.d=(e,t)=>{for(var r in t)b.o(t,r)&&!b.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},b.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var w={};b.r(w),b.d(w,{create:()=>v.vt});let{create:E}=w,k="midscene-auto-zoom",x="midscene-background-visible",S="midscene-elements-visible",C="midscene-model-call-details",j="midscene-dark-mode",I="midscene-playback-speed",O="midscene-subtitle-enabled",P=e=>{if("undefined"==typeof window)return;var t=new URLSearchParams(window.location.search).get(e);if(null===t)return;let r=t.trim().toLowerCase();return!!["1","true","yes","on"].includes(r)||!["0","false","no","off"].includes(r)&&void 0},R=E(e=>{let t="false"!==localStorage.getItem(k),r="false"!==localStorage.getItem(x),n="false"!==localStorage.getItem(S),i="true"===localStorage.getItem(C),o="true"===localStorage.getItem(j),a=Number.parseFloat(localStorage.getItem(I)||"1"),s=Number.isNaN(a)?1:a,A="false"!==localStorage.getItem(O),l=P("focusOnCursor"),c=P("showElementMarkers"),u=P("darkMode"),d=void 0===u?o:u;return void 0!==u&&localStorage.setItem(j,d.toString()),{backgroundVisible:r,elementsVisible:void 0===c?n:c,autoZoom:void 0===l?t:l,modelCallDetailsEnabled:i,darkModeEnabled:d,playbackSpeed:[.5,1,1.5,2].includes(s)?s:1,setBackgroundVisible:t=>{e({backgroundVisible:t}),localStorage.setItem(x,t.toString())},setElementsVisible:t=>{e({elementsVisible:t}),localStorage.setItem(S,t.toString())},setAutoZoom:t=>{e({autoZoom:t}),localStorage.setItem(k,t.toString())},setModelCallDetailsEnabled:t=>{e({modelCallDetailsEnabled:t}),localStorage.setItem(C,t.toString())},setDarkModeEnabled:t=>{e({darkModeEnabled:t}),localStorage.setItem(j,t.toString())},setPlaybackSpeed:t=>{e({playbackSpeed:t}),localStorage.setItem(I,t.toString())},subtitleEnabled:A,setSubtitleEnabled:t=>{e({subtitleEnabled:t}),localStorage.setItem(O,t.toString())}}}),T="midscene-env-config",N="midscene-service-mode",M="midscene-tracking-active-tab",D="midscene-deep-locate",B="midscene-deep-think",z="midscene-screenshot-included",L="midscene-dom-included",F="midscene-ime-strategy",K="midscene-auto-dismiss-keyboard",U="midscene-keyboard-dismiss-strategy",Q="midscene-always-refresh-screen-info",Z=()=>localStorage.getItem(T)||"",J=e=>{let t=e.split("\n"),r={};return t.forEach(e=>{let t=e.trim();if(t.startsWith("#"))return;let n=t.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)\s*=\s*(.*)$/);if(n){let[,e,t]=n,i=t.trim();(i.startsWith("'")&&i.endsWith("'")||i.startsWith('"')&&i.endsWith('"'))&&(i=i.slice(1,-1)),r[e]=i}}),r},X=E((e,t)=>{let r=Z(),n=J(r),i=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(N),a="false"!==localStorage.getItem(M),s="true"===localStorage.getItem(D),A=localStorage.getItem(B),l="false"!==localStorage.getItem(z),c=localStorage.getItem(L)||"false";return{serviceMode:i?"In-Browser-Extension":o||"Server",setServiceMode:t=>{if(i)throw Error("serviceMode cannot be set in extension");e({serviceMode:t}),localStorage.setItem(N,t)},config:n,configString:r,setConfig:t=>e({config:t}),loadConfig:t=>{e({config:J(t),configString:t}),localStorage.setItem(T,t)},syncFromStorage:()=>{let t=Z();e({config:J(t),configString:t})},forceSameTabNavigation:a,setForceSameTabNavigation:t=>{e({forceSameTabNavigation:t}),localStorage.setItem(M,t.toString())},deepLocate:s,setDeepLocate:t=>{e({deepLocate:t}),localStorage.setItem(D,t.toString())},deepThink:"true"===A||"false"!==A&&"unset",setDeepThink:t=>{e({deepThink:t}),localStorage.setItem(B,t.toString())},screenshotIncluded:l,setScreenshotIncluded:t=>{e({screenshotIncluded:t}),localStorage.setItem(z,t.toString())},domIncluded:"visible-only"===c?"visible-only":"true"===c,setDomIncluded:t=>{e({domIncluded:t}),localStorage.setItem(L,t.toString())},popupTab:"playground",setPopupTab:t=>{e({popupTab:t})},imeStrategy:localStorage.getItem(F)||"yadb-for-non-ascii",setImeStrategy:t=>{e({imeStrategy:t}),localStorage.setItem(F,t)},autoDismissKeyboard:"false"!==localStorage.getItem(K),setAutoDismissKeyboard:t=>{e({autoDismissKeyboard:t}),localStorage.setItem(K,t.toString())},keyboardDismissStrategy:localStorage.getItem(U)||"esc-first",setKeyboardDismissStrategy:t=>{e({keyboardDismissStrategy:t}),localStorage.setItem(U,t)},alwaysRefreshScreenInfo:"true"===localStorage.getItem(Q),setAlwaysRefreshScreenInfo:t=>{e({alwaysRefreshScreenInfo:t}),localStorage.setItem(Q,t.toString())}}});var H=r(3819);function G(e){var t,r,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};H.Ay.error({message:null!=(t=i.title)?t:"Something went wrong",description:null!=(r=i.description)?r:function(e){if("string"==typeof e)return e;if(e instanceof Error)return e.message||e.toString();if(e&&"object"==typeof e&&"message"in e){let t=e.message;if("string"==typeof t)return t}try{return JSON.stringify(e)}catch(t){return String(e)}}(e),placement:"bottomRight",duration:null!=(n=i.duration)?n:5})}function V(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function q(e){let{showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:i="icon",playgroundSDK:s}=e,{message:A}=p.A.useApp(),{config:l,configString:c,loadConfig:u,syncFromStorage:v}=X(),[b,w]=(0,a.useState)(!1),[E,k]=(0,a.useState)(c),[x,S]=(0,a.useState)(null),[C,j]=(0,a.useState)(!1),I=l.MIDSCENE_MODEL_NAME,O=!!(null==s?void 0:s.runConnectivityTest),P=(0,a.useRef)(null),R=(0,a.useRef)(null),T=()=>{null!==R.current&&(window.clearTimeout(R.current),R.current=null)},N=e=>{v(),T(),w(!0),e.preventDefault(),e.stopPropagation()},M=()=>{T(),w(!1),u(E)};return(0,a.useEffect)(()=>{b&&(k(c),S(null))},[b,c]),(0,a.useEffect)(()=>()=>{T()},[]),(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:P,children:[r?I:null,(0,o.jsx)(h.A,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>P.current,open:!b&&(t?0===Object.keys(l).length:void 0),children:"icon"===i?(0,o.jsx)(d.A,{onClick:N}):(0,o.jsx)("span",{onClick:N,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,o.jsxs)(f.A,{title:"Model Env Config",open:b,onOk:M,onCancel:()=>{T(),w(!1)},footer:(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:8},children:[O?(0,o.jsx)(g.Ay,{type:"primary",ghost:!0,loading:C,onClick:()=>{var e;return(e=function*(){if(null==s?void 0:s.runConnectivityTest)try{j(!0),S(null);let e=J(E),t=yield s.runConnectivityTest(e);S(t),t.passed?(u(E),A.success("Model verification passed"),T(),R.current=window.setTimeout(()=>{w(!1),R.current=null},2e3)):A.warning("Model verification found issues")}catch(t){let e=t instanceof Error?t.message:String(t);G(t,{title:"Model verification failed"}),S({passed:!1,message:e})}finally{j(!1)}},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){V(o,n,i,a,s,"next",e)}function s(e){V(o,n,i,a,s,"throw",e)}a(void 0)})})()},children:"Verify and Save Model"},"save-and-run"):null,(0,o.jsx)(g.Ay,{type:"primary",onClick:M,children:"Save"},"save")]}),style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,o.jsx)(m.A.TextArea,{rows:7,placeholder:"MIDSCENE_MODEL_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:E,onChange:e=>k(e.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,o.jsxs)("div",{children:[(0,o.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,o.jsxs)("p",{children:["These data will be saved ",(0,o.jsx)("strong",{children:"locally in your browser"}),"."]})]}),x?(0,o.jsx)(y.A,{type:x.passed?"success":"warning",showIcon:!0,message:x.passed?"Model verification passed":"Model verification failed",description:x.passed?void 0:(0,o.jsx)("span",{style:{whiteSpace:"pre-wrap"},children:x.message||"Connectivity test failed without details."}),style:{marginTop:16}}):null]})]})}function W(e){let{showEnvConfig:t=!0,showTooltipWhenEmpty:r=!1,showModelName:n=!1,githubUrl:i="https://github.com/web-infra-dev/midscene",helpUrl:a="https://midscenejs.com/quick-experience.html",className:s="",playgroundSDK:A}=e;return(0,o.jsxs)("div",{className:`nav-actions ${s}`,children:[(0,o.jsx)(u.A.Link,{href:i,target:"_blank",children:(0,o.jsx)(l.A,{className:"nav-icon"})}),(0,o.jsx)(u.A.Link,{href:a,target:"_blank",children:(0,o.jsx)(c.A,{className:"nav-icon"})}),t&&(0,o.jsx)(q,{showTooltipWhenEmpty:r,showModelName:n,playgroundSDK:A})]})}var Y=r(6453),_=r(4458);let $=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 24 24"},e),r=r={children:[(0,o.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M22 9.483A14.53 14.53 0 0 0 9.75 5.674M19 12.9a9.85 9.85 0 0 0-4.75-2.642M5 12.9a10 10 0 0 1 2.18-1.65M8 16.157a5.63 5.63 0 0 1 2.5-1.455"}),(0,o.jsx)("path",{fill:"#6D6D6D",fillRule:"evenodd",d:"M12 20a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5",clipRule:"evenodd"}),(0,o.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20 20 4 4M2 9.483a15 15 0 0 1 1.75-1.42"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function ee(e){let{title:t="Connect to a device"}=e;return(0,o.jsx)("div",{style:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},children:(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:4},children:[(0,o.jsx)($,{"aria-hidden":"true",style:{width:24,height:24,objectFit:"contain"}}),(0,o.jsx)("h2",{style:{margin:0,whiteSpace:"nowrap",textAlign:"center",fontSize:13,lineHeight:"24px",fontWeight:400,color:"rgba(0, 0, 0, 0.85)"},children:t})]})})}var et=r(1352),er=r(955),en=r(6921);function ei(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function eo(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ei(o,n,i,a,s,"next",e)}function s(e){ei(o,n,i,a,s,"throw",e)}a(void 0)})}}function ea(e){let{getScreenshot:t,getInterfaceInfo:r,serverOnline:n,isUserOperating:i=!1,mjpegUrl:s,mode:A="default",contentRef:l}=e,[c,u]=(0,a.useState)(null),[d,p]=(0,a.useState)(!1),[f,m]=(0,a.useState)(null),[y,v]=(0,a.useState)(0),[b,w]=(0,a.useState)(null),[E,k]=(0,a.useState)(()=>String(Date.now())),x=(0,a.useRef)(null),S=!!(s&&n),C=["screenshot-viewer","screen-only"===A&&"screen-only"].filter(Boolean).join(" "),j=(0,a.useRef)(null),I=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!S)return;let e=window.setTimeout(()=>{let e=x.current;!e||e.naturalWidth>0||e.naturalHeight>0||k(String(Date.now()))},2500);return()=>window.clearTimeout(e)},[S,E,s]);let O=(0,a.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return eo(function*(){if(n){p(!0),e&&m(null);try{let e=yield t();if(console.log("Screenshot API response:",e),null==e?void 0:e.screenshot){let t=e.screenshot.toString().trim();t?(u(t),m(null),v(Date.now())):m("Empty screenshot data received")}else m("No screenshot data in response")}catch(e){console.error("Screenshot fetch error:",e),m(e instanceof Error?e.message:"Failed to fetch screenshot")}finally{p(!1)}}})()},[t,n]),P=(0,a.useCallback)(()=>eo(function*(){if(n&&r)try{let e=yield r();e&&w(e)}catch(e){console.error("Interface info fetch error:",e)}})(),[r,n]),R=(0,a.useCallback)(()=>{j.current&&clearInterval(j.current),console.log("Starting screenshot polling (5s interval)"),j.current=setInterval(()=>{!I.current&&n&&O(!1)},5e3)},[O,n]),T=(0,a.useCallback)(()=>{j.current&&(console.log("Stopping screenshot polling"),clearInterval(j.current),j.current=null)},[]),N=(0,a.useCallback)(()=>{console.log("Pausing screenshot polling"),I.current=!0},[]),M=(0,a.useCallback)(()=>{console.log("Resuming screenshot polling"),I.current=!1},[]),D=(0,a.useCallback)(()=>{O(!0)},[O]);if((0,a.useEffect)(()=>{if(!n){u(null),m(null),w(null),T();return}return(P(),S)?void T():(O(!1),R(),()=>{T()})},[n,S,R,T,O,P]),(0,a.useEffect)(()=>{n&&!S&&(i?N():(M(),O(!1)))},[i,N,M,O,n,S]),(0,a.useEffect)(()=>()=>{T()},[T]),!n)return(0,o.jsx)("div",{className:`${C} offline`,children:(0,o.jsxs)("div",{className:"screenshot-placeholder",children:[(0,o.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,o.jsx)("p",{children:"Start the playground server to see real-time screenshots"})]})});if(!S&&d&&!c)return(0,o.jsxs)("div",{className:`${C} loading`,children:[(0,o.jsx)(en.A,{size:"large"}),(0,o.jsx)("p",{children:"Loading screenshot..."})]});if(!S&&f&&!c)return(0,o.jsx)("div",{className:`${C} error`,children:(0,o.jsxs)("div",{className:"screenshot-placeholder",children:[(0,o.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,o.jsx)("p",{className:"error-message",children:f})]})});let B=(0,o.jsx)("div",{className:"screenshot-content",ref:l,children:S?(0,o.jsx)("img",{ref:x,src:E?`${s}${(null==s?void 0:s.includes("?"))?"&":"?"}_mjpegRetry=${encodeURIComponent(E)}`:s,alt:"Device Live Stream",className:"screenshot-image",onError:()=>{window.setTimeout(()=>k(String(Date.now())),500)}},E||"initial"):c?(0,o.jsx)("img",{src:c.startsWith("data:image/")?c:`data:image/png;base64,${c}`,alt:"Device Screenshot",className:"screenshot-image",onLoad:()=>console.log("Screenshot image loaded successfully"),onError:e=>{console.error("Screenshot image load error:",e),console.error("Screenshot data preview:",c.substring(0,100)),m("Failed to load screenshot image")}}):(0,o.jsx)("div",{className:"screenshot-placeholder",children:(0,o.jsx)("p",{children:"No screenshot available"})})});return"screen-only"===A?(0,o.jsx)("div",{className:C,children:B}):(0,o.jsxs)("div",{className:C,children:[(0,o.jsx)("div",{className:"screenshot-header",children:(0,o.jsx)("div",{className:"screenshot-title",children:(0,o.jsx)("h3",{children:(null==b?void 0:b.type)?b.type:"Device Name"})})}),(0,o.jsxs)("div",{className:"screenshot-container",children:[(0,o.jsxs)("div",{className:"screenshot-overlay",children:[(0,o.jsxs)("div",{className:"device-name-overlay",children:["Device Name",(0,o.jsx)(h.A,{title:null==b?void 0:b.description,children:(0,o.jsx)(et.A,{size:16,className:"info-icon"})})]}),!S&&(0,o.jsxs)("div",{className:"screenshot-controls",children:[y>0&&(0,o.jsxs)("span",{className:"last-update-time",children:["Last updated ",(e=>{if(!e)return"";let t=Math.floor((Date.now()-e)/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:new Date(e).toLocaleTimeString()})(y)]}),(0,o.jsx)(h.A,{title:"Refresh screenshot",children:(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(er.A,{}),onClick:D,loading:d,size:"small"})}),i&&(0,o.jsxs)("span",{className:"operation-indicator",children:[(0,o.jsx)(en.A,{size:"small"})," Operating..."]})]})]}),B]})]})}var es=r(3393),eA=r(2397);let el=new Set(["Backspace","Delete","Enter","Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"]),ec=new Set(["Alt","Control","Meta","Shift"]);function eu(e,t){let r=t.width/t.height;if(e.height<=0||e.width<=0)return e;if(e.width/e.height>r){let t=e.height*r;return{left:e.left+(e.width-t)/2,top:e.top,width:t,height:e.height}}let n=e.width/r;return{left:e.left,top:e.top+(e.height-n)/2,width:e.width,height:n}}function ed(e){let{enabled:t,deviceSize:r,onTap:n,onSwipe:i,scrollEnabled:s=!1,onWheelScroll:A,keyboardEnabled:l=!1,onTextInput:c,onKeyboardPress:u,contentRef:d,tapMaxDistance:p=8,tapMaxDurationMs:h=250,style:f}=e,g=(0,a.useRef)(null),m=(0,a.useRef)(null),y=(0,a.useRef)(null),v=(0,a.useRef)(!1),b=(0,a.useRef)(!1),w=(0,a.useRef)(0),E=(0,a.useRef)(null),k=(0,a.useRef)(null),x=(0,a.useRef)(null),S=(0,a.useCallback)(()=>{if(l){b.current=!0;let e=m.current;e&&document.activeElement!==e&&e.focus({preventScroll:!0})}},[l]),C=(0,a.useCallback)((e,t)=>{l&&Promise.resolve(t).catch(()=>void 0).then(()=>{window.setTimeout(()=>{b.current&&w.current===e&&S()},0)})},[S,l]),j=(0,a.useCallback)((e,t)=>{let r=g.current,n=m.current;if(!r||!n)return;let i=r.getBoundingClientRect();n.style.left=`${Math.max(0,e-i.left)}px`,n.style.top=`${Math.max(0,t-i.top)}px`},[]),I=(0,a.useCallback)((e,t,n)=>{if(!r)return null;let i=(e-n.left)/n.width,o=(t-n.top)/n.height;return{x:Math.max(0,Math.min(r.width-1,Math.round(i*r.width))),y:Math.max(0,Math.min(r.height-1,Math.round(o*r.height)))}},[r]),O=(0,a.useCallback)(e=>{var n;if(!t||!r||!g.current||0!==e.button&&"mouse"===e.pointerType)return;let i=eu((null!=(n=null==d?void 0:d.current)?n:g.current).getBoundingClientRect(),r);if(e.clientX<i.left||e.clientX>i.left+i.width||e.clientY<i.top||e.clientY>i.top+i.height){b.current=!1;return}j(e.clientX,e.clientY);let o=w.current+1;w.current=o,S();try{g.current.setPointerCapture(e.pointerId)}catch(e){}y.current={startX:e.clientX,startY:e.clientY,startTime:performance.now(),contentRect:i,keyboardFocusRequestId:o},e.preventDefault()},[d,t,r,S,j]),P=(0,a.useCallback)((e,t)=>{let r=y.current;if(y.current=null,!r)return;try{var o;null==(o=g.current)||o.releasePointerCapture(e.pointerId)}catch(e){}if(t)return;let a=e.clientX-r.startX,s=e.clientY-r.startY,A=Math.sqrt(a*a+s*s),l=Math.max(0,performance.now()-r.startTime),c=I(r.startX,r.startY,r.contentRect),u=I(e.clientX,e.clientY,r.contentRect);c&&u&&(E.current=u,A<=p&&l<=h?C(r.keyboardFocusRequestId,null==n?void 0:n(c)):null==i||i(c,u,Math.round(l)))},[n,i,I,C,p,h]),R=(0,a.useCallback)(e=>P(e,!1),[P]),T=(0,a.useCallback)(e=>P(e,!0),[P]),N=(0,a.useCallback)(()=>{let e=k.current;k.current=null,x.current&&(clearTimeout(x.current),x.current=null),e&&(null==A||A(e.point,{deltaX:e.deltaX,deltaY:e.deltaY}))},[A]),M=(0,a.useCallback)(e=>{var n;if(!t||!s||!r||!g.current)return;let i=eu((null!=(n=null==d?void 0:d.current)?n:g.current).getBoundingClientRect(),r);if(e.clientX<i.left||e.clientX>i.left+i.width||e.clientY<i.top||e.clientY>i.top+i.height)return;let o=I(e.clientX,e.clientY,i);if(!o)return;e.preventDefault(),e.stopPropagation();let a=k.current;k.current={point:o,deltaX:((null==a?void 0:a.deltaX)||0)+e.deltaX,deltaY:((null==a?void 0:a.deltaY)||0)+e.deltaY},x.current&&clearTimeout(x.current),x.current=setTimeout(N,80)},[d,r,t,N,I,s]),D=(0,a.useCallback)(()=>{var e;(null==(e=m.current)?void 0:e.value)&&(m.current.value="")},[]),B=(0,a.useCallback)(e=>{var t;if(l&&b.current){if(!e.altKey&&(e.metaKey||e.ctrlKey)&&"c"===e.key.toLowerCase()&&function(e){let t=window.getSelection();if(!t||t.isCollapsed||!e)return!1;let{anchorNode:r,focusNode:n}=t;return!!r&&!!n&&!e.contains(r)&&!e.contains(n)}(g.current)){b.current=!1;return}if(!v.current&&!e.isComposing&&!function(e){if("F5"===e.key||"F11"===e.key||"F12"===e.key)return!0;if(!(e.metaKey||e.ctrlKey))return!1;let t=e.key.toLowerCase();return!!e.altKey&&"i"===t||!!e.shiftKey&&("i"===t||"j"===t)||new Set(["r","q","w","m","h","n","t","+","=","-","_","0"]).has(t)}(e)&&(el.has(e.key)||e.altKey||e.ctrlKey||e.metaKey)){let r=function(e){if(ec.has(e.key))return null;let t=[];return e.ctrlKey&&t.push("Control"),e.metaKey&&t.push("Meta"),e.altKey&&t.push("Alt"),e.shiftKey&&"Shift"!==e.key&&t.push("Shift"),t.push(" "===e.key?"Space":e.key),t.join("+")}(e);if(!r)return;e.preventDefault(),e.stopPropagation(),null==u||u(r,null!=(t=E.current)?t:void 0)}}},[l,u]),z=(0,a.useCallback)(e=>{var t;if(!l||!b.current)return;let r=e.clipboardData.getData("text");r&&(e.preventDefault(),e.stopPropagation(),null==c||c(r,null!=(t=E.current)?t:void 0))},[l,c]),L=(0,a.useCallback)(e=>{var t,r,n,i,o;if(!l||!b.current){v.current||D();return}if(v.current)return;let a=e.nativeEvent;if("insertLineBreak"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Enter",null!=(r=E.current)?r:void 0);return}if("deleteContentBackward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Backspace",null!=(n=E.current)?n:void 0);return}if("deleteContentForward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Delete",null!=(i=E.current)?i:void 0);return}let s=a.data||(null==(t=m.current)?void 0:t.value)||"";D(),s&&(e.preventDefault(),e.stopPropagation(),null==c||c(s,null!=(o=E.current)?o:void 0))},[D,l,u,c]);return((0,a.useEffect)(()=>{t||(y.current=null,k.current=null,x.current&&(clearTimeout(x.current),x.current=null),v.current=!1,b.current=!1,E.current=null)},[t]),(0,a.useEffect)(()=>{if(!t||!l){b.current=!1;return}let e=e=>{let t=g.current;t&&e.target instanceof Node&&t.contains(e.target)||(b.current=!1)};return window.addEventListener("keydown",B,!0),window.addEventListener("pointerdown",e,!0),()=>{window.removeEventListener("keydown",B,!0),window.removeEventListener("pointerdown",e,!0)}},[t,B,l]),(0,a.useEffect)(()=>()=>{x.current&&(clearTimeout(x.current),x.current=null)},[]),t&&r)?(0,o.jsx)("div",{ref:g,onPointerDown:O,onPointerUp:R,onPointerCancel:T,onWheel:M,onContextMenu:e=>e.preventDefault(),"data-midscene-device-interaction-layer":"true",style:function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({position:"absolute",inset:0,zIndex:5,cursor:l?"default":"crosshair",outline:"none",color:"transparent",caretColor:"transparent",touchAction:"none",userSelect:"none"},f),children:l?(0,o.jsx)("textarea",{ref:m,"data-midscene-keyboard-sink":"true",tabIndex:-1,onPaste:z,onCompositionStart:()=>{b.current=!0,v.current=!0},onCompositionEnd:e=>{var t,r;if(!l||!b.current)return;v.current=!1;let n=e.data||(null==(t=m.current)?void 0:t.value)||"";D(),n&&(null==c||c(n,null!=(r=E.current)?r:void 0))},onInput:L,style:{position:"absolute",left:0,top:0,width:32,height:24,opacity:0,pointerEvents:"none",appearance:"none",boxShadow:"none",overflow:"hidden",resize:"none",border:0,padding:0,margin:0,outline:"none",background:"transparent",color:"transparent",caretColor:"transparent",fontSize:16,lineHeight:"20px",transform:"translate(-50%, -50%)"}}):null}):null}var ep=r(4093),eh=r(6418),ef=r(4452),eg=r(2644);function em(){return"Preparing Android device connection…"}function ey(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ev(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ey(o,n,i,a,s,"next",e)}function s(e){ey(o,n,i,a,s,"throw",e)}a(void 0)})}}function eb(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{Text:ew}=u.A;function eE(e){let{connectingOverlay:t,deviceId:r,onIntrinsicSize:n,onStatusChange:i,renderErrorOverlay:s,serverUrl:A,metadataTimeoutMs:l=55e3,reconnectInterval:c=3e3,viewportStyle:u,contentRef:d}=e,p=(0,a.useRef)(null),h=(0,a.useRef)(null),f=(0,a.useRef)(null),g=(0,a.useRef)(null),m=(0,a.useRef)(null),v=(0,a.useRef)(!1),[b,w]=(0,a.useState)("connecting"),[E,k]=(0,a.useState)(null),[x,S]=(0,a.useState)(()=>em()),[C,j]=(0,a.useState)(!0),[I,O]=(0,a.useState)(0),P=(0,a.useMemo)(()=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:em();switch(e){case"connected":return"Live scrcpy preview connected";case"waiting-for-stream":return t;case"error":return"Unable to start scrcpy preview";case"disconnected":return"scrcpy preview disconnected, retrying…";default:return"Connecting to scrcpy preview server…"}})(b,x),[b,x]),R=("error"===b||"disconnected"===b)&&!!s,T=(0,a.useCallback)(()=>{w("connecting"),k(null),S(em()),O(e=>e+1)},[]);(0,a.useEffect)(()=>{null==i||i(b,P)},[i,b,P]);let N=()=>{let e=p.current;e&&e.replaceChildren()},M=()=>{f.current&&(f.current.dispose(),f.current=null)},D=()=>{g.current&&(clearTimeout(g.current),g.current=null)};return(0,a.useEffect)(()=>{if(!A){w("error"),k("scrcpy preview metadata is missing a server URL.");return}if(!es.p.isSupported){j(!1),w("error"),k("Current browser does not support WebCodecs, so live scrcpy preview is unavailable.");return}let e=!1,t=null,i=()=>{t&&(clearTimeout(t),t=null),D(),m.current&&(clearTimeout(m.current),m.current=null),h.current&&(h.current.disconnect(),h.current=null),M(),N(),null==n||n(null)},o=()=>{e||m.current||(m.current=setTimeout(()=>{m.current=null,i(),a()},c))},a=()=>{let t,i,a,s;if(e)return;v.current=!1,w("connecting"),k(null),S(em());let c=(0,eg.io)(A,{withCredentials:!0,reconnection:!1,timeout:1e4,transports:["websocket"]});h.current=c;let u=(i=!1,a=[],s=new TransformStream({transform(e,t){if("configuration"===e.type){i=!0,t.enqueue(e),a.forEach(e=>t.enqueue(e)),a=[];return}"data"!==e.type||i?t.enqueue(e):a.push(e)}}),new ReadableStream({start(e){let r=t=>{try{var r;let n=(r=t.data)instanceof Uint8Array?r:r instanceof ArrayBuffer?new Uint8Array(r):new Uint8Array(r.buffer,r.byteOffset,r.byteLength);if("configuration"===t.type)return void e.enqueue({type:"configuration",data:n});e.enqueue({type:"data",data:n,keyframe:t.keyFrame})}catch(t){e.error(t)}},n=()=>e.close(),i=t=>e.error(t);t=()=>{c.off("video-data",r),c.off("disconnect",n),c.off("error",i)},c.on("video-data",r),c.on("disconnect",n),c.on("error",i)},cancel(){null==t||t()}}).pipeThrough(s));c.on("connect",()=>{var t,n;w("waiting-for-stream"),S(em()),D(),g.current=setTimeout(()=>{e||(v.current=!0,w("error"),k(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:55e3,t=Math.max(1,Math.round(e/1e3));return`Timed out waiting ${t}s for scrcpy video stream metadata.`}(l)),S(em()),c.disconnect(),h.current=null,o())},l),c.emit("connect-device",(t=eb({},"string"==typeof r&&r.trim()?{deviceId:r.trim()}:{}),n=n={maxSize:1024},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}),c.on("preview-status",t=>{var r;!e&&"object"==typeof(r=t)&&null!==r&&"message"in r&&"string"==typeof r.message&&(w("waiting-for-stream"),S(t.message))}),c.on("video-metadata",t=>ev(function*(){try{D(),M(),S("Starting video decoder…"),"number"==typeof t.width&&t.width>0&&"number"==typeof t.height&&t.height>0&&(null==n||n({width:t.width,height:t.height}));let r=t.codec?t.codec:ep.n.H264,i=yield ev(function*(){var e;let t=eh.p.isSupported?new eh.p:new ef.x,n=t.canvas;return n.style.width="100%",n.style.height="100%",n.style.objectFit="contain",N(),null==(e=p.current)||e.appendChild(n),new es.p({codec:r,renderer:t})})();f.current=i,u.pipeTo(i.writable).catch(t=>{e||(w("error"),k(t.message),o())}),S(em()),w("connected")}catch(t){if(e)return;w("error"),k(t instanceof Error?t.message:"Failed to start decoder."),S(em()),o()}})()),c.on("disconnect",()=>{if(D(),!e){if(v.current){v.current=!1;return}w("disconnected"),k(null),S(em()),o()}}),c.on("connect_error",t=>{D(),e||(w("error"),k(t.message),S(em()),o())}),c.on("error",t=>{D(),e||(w("error"),k(t.message),S(em()),o())})};return t=setTimeout(()=>{t=null,a()},0),()=>{e=!0,i()}},[r,l,c,I,A]),(0,o.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[E&&!R?(0,o.jsx)(y.A,{type:"warning",showIcon:!0,style:{marginBottom:12},message:P,description:E}):null,(0,o.jsxs)("div",{ref:d,style:eb({position:"relative",flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",background:"#111827",borderRadius:8,overflow:"hidden"},u),children:[(0,o.jsx)("div",{ref:p,style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"}}),"connected"!==b?R&&s?(0,o.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:s({errorMessage:E,retry:T,status:b,statusText:P})}):"error"!==b&&"disconnected"!==b&&t?(0,o.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:t}):(0,o.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,color:"#fff",background:"rgba(17, 24, 39, 0.78)",textAlign:"center",padding:24,zIndex:1},children:["error"===b?null:(0,o.jsx)(en.A,{spinning:!0}),(0,o.jsx)(ew,{style:{color:"#fff"},children:P}),"error"===b?(0,o.jsx)(ew,{style:{color:"#d1d5db"},children:"Scrcpy preview will retry automatically."}):null,!C&&(0,o.jsx)(ew,{style:{color:"#d1d5db"},children:"Please use a modern Chromium browser to view the stream."})]}):null]})]})}let ek=["android","ios","web","harmony","computer"],ex=["countdown-before-run"];function eS(e,t){var r;for(let t of[null==e?void 0:e.platformId,null==e||null==(r=e.interface)?void 0:r.type].filter(e=>!!e)){let e=t.toLowerCase();if(ek.includes(e))return e}return t}function eC(e){return((null==e?void 0:e.executionUxHints)||[]).filter(e=>ex.includes(e))}function ej(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function eI(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ej(o,n,i,a,s,"next",e)}function s(e){ej(o,n,i,a,s,"throw",e)}a(void 0)})}}function eO(e){var t,r;let{connectingOverlay:n,onDeviceSizeChange:i,onScrcpyStatusChange:s,renderErrorOverlay:A,scrcpyViewportStyle:l,screenshotViewerMode:c,playgroundSDK:u,runtimeInfo:d,serverUrl:h,serverOnline:f,isUserOperating:g}=e,{message:m}=p.A.useApp(),v=function(e,t){let r=null==e?void 0:e.preview;if(!r||"none"===r.kind||"custom"===r.kind)return{type:"none"};let n=t||"undefined"!=typeof window&&window.location.origin||"";if("mjpeg"===r.kind){let e=r.mjpegPath||"/mjpeg";return n?{type:"mjpeg",mjpegUrl:new URL(e,`${n}/`).toString()}:{type:"screenshot"}}if("scrcpy"===r.kind){var i,o;let t,a="string"==typeof(null==e||null==(i=e.metadata)?void 0:i.deviceId)?e.metadata.deviceId.trim():void 0;if("string"==typeof a&&/^\d+\.\d+\.\d+\.\d+:\d+$/.test(a))return{type:"screenshot"};let s=Number(null==(o=r.custom)?void 0:o.scrcpyPort),A=Number.isFinite(s)?s:void 0,l=A&&n?((t=new URL(n)).port=String(A),t.pathname="/",t.search="",t.hash="",t.toString()):void 0;return{deviceId:a,type:"scrcpy",scrcpyPort:A,scrcpyUrl:l}}return{type:"screenshot"}}(d,h),[b,w]=(0,a.useState)(null),[E,k]=(0,a.useState)(null),[x,S]=(0,a.useState)(null),[C,j]=(0,a.useState)("connecting"),I=(0,a.useRef)(Promise.resolve()),O=(0,a.useRef)(""),P=(0,a.useRef)(null),R=(0,a.useRef)(null),T=(0,a.useRef)(null),N=(0,a.useRef)(null),M=null!=(t=null==x?void 0:x.includes("Tap"))&&t,D=(null==x?void 0:x.includes("Swipe"))?"Swipe":"DragAndDrop",B=(null==x?void 0:x.includes("KeyboardPress"))||(null==x?void 0:x.includes("Input"))||!1,z=null!=(r=null==x?void 0:x.includes("Scroll"))&&r,L=(0,a.useCallback)(e=>{let t=I.current.then(e,e);return I.current=t.catch(()=>void 0),t},[m]);(0,a.useEffect)(()=>{if(!f){w(null),S(null);return}let e=!1,t=()=>eI(function*(){var t;let r;try{r=yield u.getInterfaceInfo()}catch(e){return}if(e)return;if((null==r||null==(t=r.size)?void 0:t.width)&&r.size.height){let{size:e}=r;w(t=>t&&t.width===e.width&&t.height===e.height?t:{width:e.width,height:e.height})}let n=Array.isArray(null==r?void 0:r.actionTypes)?r.actionTypes:null;S(e=>null===e&&null===n||e&&n&&e.length===n.length&&e.every((e,t)=>e===n[t])?e:n)})();t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[u,f]),(0,a.useEffect)(()=>{null==i||i(null!=E?E:b)},[b,i,E]);let F="scrcpy"===v.type&&es.p.isSupported,K="screenshot"===v.type||"scrcpy"===v.type&&!F,U="scrcpy"===v.type&&!es.p.isSupported&&function(){try{let{protocol:e,hostname:t}=window.location;if("http:"!==e)return!1;return"localhost"!==t&&"127.0.0.1"!==t&&"::1"!==t}catch(e){return!1}}(),Q="none"!==v.type&&(!F||"connected"===C),Z=(0,a.useCallback)((e,t)=>{m.open({type:"error",content:t||e,key:"manual-control-error"})},[]),J=(0,a.useCallback)(()=>{R.current&&(clearTimeout(R.current),R.current=null)},[]),X=(0,a.useCallback)(()=>{var e,t;J();let r=O.current,n=P.current;if(!r)return null!=(e=T.current)?e:Promise.resolve();O.current="",P.current=null;let i=(null!=(t=T.current)?t:Promise.resolve()).catch(()=>void 0).then(()=>eI(function*(){let e=yield L(()=>u.interact(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({actionType:"Input",value:r,mode:"typeOnly"},n?{x:n.x,y:n.y}:{})));e.ok||Z("Input failed",e.error)})()).finally(()=>{T.current===i&&(T.current=null)});return T.current=i,T.current},[J,L,u,Z]),H=(0,a.useCallback)(e=>eI(function*(){yield X();let t=yield L(()=>u.interact({actionType:"Tap",x:e.x,y:e.y}));t.ok||Z("Tap failed",t.error)})(),[L,X,u,Z]),G=(0,a.useCallback)((e,t,r)=>eI(function*(){yield X();let n=yield L(()=>{var n,i,o,a,s,A;let l;return u.interact((n=D,i=e,o=t,a=r,l={actionType:n,x:i.x,y:i.y,endX:o.x,endY:o.y},"DragAndDrop"===n?l:(s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},l),A=A={duration:a},Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(A)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(A)).forEach(function(e){Object.defineProperty(s,e,Object.getOwnPropertyDescriptor(A,e))}),s)))});n.ok||Z(`${D} failed`,n.error)})(),[L,X,D,u,Z]),V=(0,a.useCallback)((e,t)=>{e&&(O.current+=e,t&&(P.current=t),J(),R.current=setTimeout(()=>{X()},120))},[J,X]);(0,a.useEffect)(()=>{f&&Q&&B||(J(),O.current="",P.current=null)},[J,B,Q,f]),(0,a.useEffect)(()=>()=>{f&&Q&&B&&O.current?X():(J(),P.current=null)},[J,X,B,v.type,Q,d,f,h]);let q=(0,a.useCallback)(e=>eI(function*(){if(!e)return;yield X();let t=yield L(()=>u.interact({actionType:"KeyboardPress",keyName:e}));t.ok||Z("Keyboard press failed",t.error)})(),[L,X,u,Z]),W=(0,a.useCallback)((e,t)=>eI(function*(){yield X();let r=yield L(()=>{let r,n,i;return u.interact((n=(r=Math.abs(t.deltaY)>=Math.abs(t.deltaX))?Math.abs(t.deltaY):Math.abs(t.deltaX),i=r?t.deltaY>=0?"down":"up":t.deltaX>=0?"right":"left",{actionType:"Scroll",x:e.x,y:e.y,scrollType:"singleAction",direction:i,distance:Math.max(1,Math.round(n))}))});r.ok||Z("Scroll failed",r.error)})(),[L,X,u,Z]),Y=(0,a.useCallback)((e,t)=>{j(e),null==s||s(e,t)},[s]);return(0,o.jsxs)("div",{style:{flex:1,minHeight:0,height:"100%",position:"relative"},children:[U&&(0,o.jsx)(eA.A,{content:(0,o.jsxs)("div",{style:{maxWidth:360},children:[(0,o.jsx)("p",{style:{margin:"0 0 8px"},children:"Live scrcpy streaming is unavailable because WebCodecs API is disabled in non-secure (HTTP) contexts with non-localhost addresses."}),(0,o.jsx)("p",{style:{margin:"0 0 8px"},children:"Currently using screenshot polling as fallback. To enable scrcpy streaming:"}),(0,o.jsxs)("ol",{style:{margin:0,paddingLeft:18},children:[(0,o.jsxs)("li",{children:["Open"," ",(0,o.jsx)("code",{children:"chrome://flags/#unsafely-treat-insecure-origin-as-secure"})]}),(0,o.jsxs)("li",{children:["Add ",(0,o.jsx)("code",{children:window.location.origin})]}),(0,o.jsxs)("li",{children:["Set to ",(0,o.jsx)("b",{children:"Enabled"})," and relaunch Chrome"]})]})]}),title:"Screenshot polling mode",trigger:"click",placement:"bottomRight",children:(0,o.jsx)("button",{type:"button",style:{position:"absolute",top:8,right:8,zIndex:10,background:"#faad14",border:"none",borderRadius:"50%",width:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",boxShadow:"0 2px 6px rgba(0,0,0,0.2)"},children:(0,o.jsx)("span",{style:{color:"#fff",fontSize:14,fontWeight:"bold",lineHeight:1},children:"!"})})}),"none"===v.type?(0,o.jsx)(y.A,{type:"warning",showIcon:!0,message:"Preview unavailable",description:"This session did not expose a preview capability in runtime metadata."}):F?(0,o.jsx)(eE,{connectingOverlay:n,deviceId:v.deviceId,onIntrinsicSize:k,onStatusChange:Y,renderErrorOverlay:A,serverUrl:v.scrcpyUrl,viewportStyle:l,contentRef:N}):(0,o.jsx)(ea,{getScreenshot:()=>K?u.getScreenshot():Promise.resolve(null),getInterfaceInfo:()=>u.getInterfaceInfo(),serverOnline:f,isUserOperating:g,mjpegUrl:v.mjpegUrl,mode:null!=c?c:"screen-only",contentRef:N}),(0,o.jsx)(ed,{enabled:M&&f&&Q,deviceSize:b,contentRef:N,onTap:H,onSwipe:G,scrollEnabled:z,onWheelScroll:W,keyboardEnabled:B,onTextInput:V,onKeyboardPress:q})]})}function eP(e){return(0,o.jsx)(eO,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},e))}var eR=r(2770);function eT(e){let{children:t}=e;return(0,o.jsx)(eR.Ay,{theme:{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}},children:(0,o.jsx)(p.A,{component:!1,children:t})})}var eN=r(4565),eM=r(217),eD=r(6987);let eB=()=>{let e=(0,eM.j)(eD.v4),t="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),t="ai:profile"),(0,eM.j)(eD.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),t=t?"ai:*":"ai:call"),t&&(0,eN.N)(t)};var ez=r(5409);function eL(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let eF={modelName:eD._q,socksProxy:eD.T4,httpProxy:eD.Yf,openaiBaseURL:eD.kX,openaiApiKey:eD.Lh,openaiExtraConfig:eD.Z7,extraBody:eD.Pm,modelFamily:eD.v,timeout:eD.Yg,temperature:eD.V7,retryCount:eD.vC,retryInterval:eD.xg,reasoningEffort:eD.y2,reasoningEnabled:eD.nc,reasoningBudget:eD.fS},eK={modelName:eD.xP,socksProxy:eD.mZ,httpProxy:eD.zQ,openaiBaseURL:eD.zG,openaiApiKey:eD.OK,openaiExtraConfig:eD.ag,extraBody:eD.WH,modelFamily:eD.OY,timeout:eD.Z$,temperature:eD.Cn,retryCount:eD.sg,retryInterval:eD.wu,reasoningEffort:eD.Vb,reasoningEnabled:eD.u1,reasoningBudget:eD.aO},eU={modelName:eD.HR,socksProxy:eD.iw,httpProxy:eD.FU,openaiBaseURL:eD.$H,openaiApiKey:eD.IQ,openaiExtraConfig:eD.I2,extraBody:eD.G0,modelFamily:eD.yR,timeout:eD.zD,temperature:eD.W4,retryCount:eD.Km,retryInterval:eD.aK,reasoningEffort:eD.VM,reasoningEnabled:eD.M1,reasoningBudget:eD.AU};var eQ=r(9152);let eZ=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"*";if("string"!=typeof e||0===e.length)return e;if(e.length<=6)return e;let r=e.substring(0,3),n=e.substring(e.length-3),i=e.length-6,o=t.repeat(i);return`${r}${o}${n}`},eJ=e=>Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;if(!r)return[t,r];if("string"==typeof r&&/key/i.test(t))return[t,eZ(r)];if("object"==typeof r){let e=JSON.stringify(r);if(/key/i.test(e))return[t,eZ(e)]}return[t,r]})),eX=(e,t)=>{if(t)try{return JSON.parse(t)}catch(t){throw Error(`Failed to parse ${e} as a JSON. ${t.message}`,{cause:t})}},eH={insight:eF,planning:eK,default:eU},eG=(e,t)=>{let r=(0,eN.a)("ai:config");r("will decideModelConfig base on agent.modelConfig()",e,eJ(t));let n=eH[e];if(!t[n.modelName])return void r("no modelName found for intent",e);let i=(e=>{var t,r,n;let i,{keys:o,provider:a,useLegacyLogic:s=!1}=e;eB(),(0,eN.a)("ai:config")("enter parseOpenaiSdkConfig with keys:",o);let A=s?a[eD.Jq]:void 0,l=s?a[eD.jG]:void 0,c=s?a[eD.$]:void 0,u=s?a[eD.CA]:void 0,d=s?a[eD.b6]:void 0,p=s?(e=>{let t=e[eD.pp],r=e[eD.yb],n=e[eD.NF],i=e[eD.JM],o=e[eD.j_],a=[t&&eD.pp,r&&eD.yb,n&&eD.NF,i&&eD.JM,o&&eD.j_].filter(Boolean);if(a.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${a.join(", ")}. Please disable all but one mode.`);if(n)return"qwen3-vl";if(r)return"qwen2.5-vl";if(t)return"doubao-vision";if(o)return"gemini";if(i)if("1"===i)return"vlm-ui-tars";else if("DOUBAO"===i||"DOUBAO-1.5"===i)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(a):void 0,h=a[o.modelFamily]||p,f=a[o.openaiApiKey]||A,g=a[o.openaiBaseURL]||l,m=a[o.socksProxy]||c,y=a[o.httpProxy]||u,v=a[o.modelName],b=a[o.openaiExtraConfig],w=eX(o.openaiExtraConfig,b||d),E=a[o.extraBody],k=eX(o.extraBody,E),x=(e=>{if(void 0===e||""===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0})(a[o.temperature]);if(h&&!eD._j.includes(h))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${h}. Current version v1.10.1 accepts the following model families: ${eD._j.join(", ")}. You can also visit https://midscenejs.com/model-common-config.html for the latest configuration information.`);let S="vlm-ui-tars"===h?eD.UH.V1_0:"vlm-ui-tars-doubao"===h||"vlm-ui-tars-doubao-1.5"===h?eD.UH.DOUBAO_1_5_20B:void 0,C=S?`UI-TARS=${S}`:h?`${h} mode`:"";return{socksProxy:m,httpProxy:y,openaiBaseURL:g,openaiApiKey:f,openaiExtraConfig:(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return;let{defaultHeaders:t,extra_headers:r,extraHeaders:n,...i}=e,o=t??r??n;return void 0!==o?{...i,defaultHeaders:o}:i})(w),extraBody:k,modelFamily:h,uiTarsModelVersion:S,modelName:v,modelDescription:C,intent:"-",slot:"-",timeout:a[o.timeout]?Number(a[o.timeout]):void 0,temperature:x,retryCount:(()=>{if(!a[o.retryCount])return 1;let e=Number(a[o.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${o.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!a[o.retryInterval])return 2e3;let e=Number(a[o.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${o.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(t=a[o.reasoningEffort])?void 0:t.trim())||void 0,reasoningEnabled:"true"===(i=null==(n=a[o.reasoningEnabled])||null==(r=n.trim())?void 0:r.toLowerCase())||"1"===i||"false"!==i&&"0"!==i&&("default"===i?"default":void 0),reasoningBudget:(()=>{var e;let t=null==(e=a[o.reasoningBudget])?void 0:e.trim();if(!t)return;let r=Number(t);return Number.isFinite(r)?r:void 0})()}})({keys:n,provider:t,useLegacyLogic:"default"===e});return i.intent=e,i.slot=e,r("decideModelConfig result by agent.modelConfig() with intent",e,eJ({...i})),(0,eQ.vA)(i.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-strategy`),i.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`),i};function eV(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class eq{initialize(){var e;let t;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,t=this.normalizeModelConfig(this.modelConfig)):t=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let r=eG("default",t);if(!r)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-strategy.html");let n=eG("insight",t),i=eG("planning",t);this.modelConfigMap={default:{...r,intent:"default",slot:"default",createOpenAIClient:this.createOpenAIClientFn},insight:{...n||r,intent:"insight",slot:n?"insight":"default",createOpenAIClient:this.createOpenAIClientFn},planning:{...i||r,intent:"planning",slot:i?"planning":"default",createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,t)=>{let[r,n]=t;return null==n||(e[r]=String(n)),e},Object.create(null))}clearModelConfigMap(){if(this.isolatedMode)throw Error("ModelConfigManager work in isolated mode, so clearModelConfigMap should not be called");this.isInitialized=!1}getModelConfig(e){if(this.isInitialized||this.initialize(),!this.modelConfigMap)throw Error("modelConfigMap is not initialized, which should not happen");return this.modelConfigMap[e]}getUploadTestServerUrl(){let{openaiExtraConfig:e}=this.getModelConfig("default");return null==e?void 0:e.REPORT_SERVER_URL}registerGlobalConfigManager(e){this.globalConfigManager=e}throwErrorIfNonVLModel(){if(!this.getModelConfig("default").modelFamily)throw Error("MIDSCENE_MODEL_FAMILY is not set to a multimodal model with UI localization, so element localization cannot be achieved. Check your model configuration. See https://midscenejs.com/model-strategy.html")}constructor(e,t){eV(this,"modelConfigMap",void 0),eV(this,"isInitialized",!1),eV(this,"isolatedMode",!1),eV(this,"globalConfigManager",void 0),eV(this,"modelConfig",void 0),eV(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=t}}let eW=new eq,eY=new class{getAllEnvConfig(){let e=eD.tk.reduce((e,t)=>(e[t]=ez.env[t],e),Object.create(null));if(!this.override)return e;{let{newConfig:t,extendMode:r}=this.override;return r?{...e,...t}:{...t}}}getEnvConfigValue(e){let t=this.getAllEnvConfig();if(e===eD.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!eD.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let r=t[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof r)?r.trim():r}getEnvConfigInBoolean(e){let t=this.getAllEnvConfig();if(!eD.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let r=t[e];return this.keysHaveBeenRead[e]=!0,!!r&&(!!/^(true|1)$/i.test(r)||!/^(false|0)$/i.test(r)&&!!r.trim())}getEnvConfigValueAsNumber(e){if(!eD.rd.includes(e)&&!eD.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let t=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof t)return;let r=t.trim();if(!r)return;let n=Number(r);return Number.isNaN(n)?void 0:n}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let t in e){if(![...eD.Lg,...eD.XE].includes(t))throw Error(`Failed to override AI config, invalid key: ${t}`);let r=e[t];if("string"!=typeof r)throw Error(`Failed to override AI config, value for key ${t} must be a string, but got with type ${typeof r}`);this.keysHaveBeenRead[t]&&console.warn(`Warning: try to override AI config with key ${t} ,but it has been read.`)}let n=r?{...null==(t=this.override)?void 0:t.newConfig,...e}:e;if(this.override={newConfig:{...n},extendMode:r},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){eL(this,"override",void 0),eL(this,"keysHaveBeenRead",{}),eL(this,"globalModelConfigManager",void 0),eB()}};eY.registerModelConfigManager(eW),eW.registerGlobalConfigManager(eY);let e_=()=>{let e=eY.getEnvConfigValue(eD.El);return e?e:"Asia/Shanghai"===Intl.DateTimeFormat().resolvedOptions().timeZone?"Chinese":"English"},e$=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];eY.overrideAIConfig(e,t)};var e0=r(3585),e1=r(6990);function e2(e){try{let t=e.match(/^\s*(\{[\s\S]*\})\s*$/);if(t)return t[1];let r=e.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);if(r)return r[1];let n=e.match(/\{[\s\S]*\}/);if(n)return n[0]}catch{}return e}function e3(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e)return e;if(Array.isArray(e))return e.map(e=>e3(e,t));if("object"==typeof e){let n={};for(let[i,o]of Object.entries(e)){var r;let e=i.trim(),a=(null==(r=t.preserveStringValueKeys)?void 0:r.includes(e))??!1,s="string"==typeof o?a?o:o.trim():e3(o,t);n[e]=s}return n}return"string"==typeof e?e.trim():e}function e5(e,t){let r=((e,t,r)=>{var n;let i,o;if(null==e?void 0:e.match(/\((\d+),(\d+)\)/))return null==(n=e.match(/\((\d+),(\d+)\)/))?void 0:n.slice(1).map(Number);try{return i=JSON.parse(e),e3(i,r)}catch(e){o=e}try{return i=JSON.parse((0,e1.m)(e)),e3(i,r)}catch(e){o=e}return{parsed:void 0,lastError:o,rawResponse:t}})(e2(e),e,t);if(r&&"object"==typeof r&&"parsed"in r&&void 0===r.parsed)throw Error(`failed to parse LLM response into JSON. Error - ${String(r.lastError??"unknown error")}. Response -
|
|
1
|
+
/*! For license information please see index.4b541d73.js.LICENSE.txt */
|
|
2
|
+
(()=>{var e,t,r,n,i,o,a,s={5902(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5902,e.exports=t},5845(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5845,e.exports=t},5737(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=5737,e.exports=t},8541(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8541,e.exports=t},9998(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=9998,e.exports=t},3348(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=3348,e.exports=t},8817(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8817,e.exports=t},1560(e){function t(e){return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=1560,e.exports=t},8087(e,t,r){"use strict";let n;var i,o=r(5723),a=r(2155),s=r(8997);let A=e=>{let{hideLogo:t=!1}=e,{isDarkMode:r}=function(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=()=>{var e;t("dark"===(null==(e=document.querySelector("[data-theme]"))?void 0:e.getAttribute("data-theme")))};e();let r=new MutationObserver(e),n=document.querySelector("[data-theme]")||document.documentElement;return r.observe(n,{attributes:!0,attributeFilter:["data-theme"]}),()=>r.disconnect()},[]),{isDarkMode:e}}();return t?null:(0,o.jsx)("div",{className:"logo",children:(0,o.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,o.jsx)("img",{alt:"Midscene_logo",src:r?"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png":"https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png"})})})};var l=r(4177),c=r(6766),u=r(6419),d=r(8594),p=r(2651),h=r(9488),f=r(8928),g=r(5584),m=r(4174),y=r(6620),v=r(8926),b={};b.d=(e,t)=>{for(var r in t)b.o(t,r)&&!b.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},b.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var w={};b.r(w),b.d(w,{create:()=>v.vt});let{create:E}=w,k="midscene-auto-zoom",x="midscene-background-visible",S="midscene-elements-visible",C="midscene-model-call-details",j="midscene-dark-mode",I="midscene-playback-speed",O="midscene-subtitle-enabled",P=e=>{if("undefined"==typeof window)return;var t=new URLSearchParams(window.location.search).get(e);if(null===t)return;let r=t.trim().toLowerCase();return!!["1","true","yes","on"].includes(r)||!["0","false","no","off"].includes(r)&&void 0},R=E(e=>{let t="false"!==localStorage.getItem(k),r="false"!==localStorage.getItem(x),n="false"!==localStorage.getItem(S),i="true"===localStorage.getItem(C),o="true"===localStorage.getItem(j),a=Number.parseFloat(localStorage.getItem(I)||"1"),s=Number.isNaN(a)?1:a,A="false"!==localStorage.getItem(O),l=P("focusOnCursor"),c=P("showElementMarkers"),u=P("darkMode"),d=void 0===u?o:u;return void 0!==u&&localStorage.setItem(j,d.toString()),{backgroundVisible:r,elementsVisible:void 0===c?n:c,autoZoom:void 0===l?t:l,modelCallDetailsEnabled:i,darkModeEnabled:d,playbackSpeed:[.5,1,1.5,2].includes(s)?s:1,setBackgroundVisible:t=>{e({backgroundVisible:t}),localStorage.setItem(x,t.toString())},setElementsVisible:t=>{e({elementsVisible:t}),localStorage.setItem(S,t.toString())},setAutoZoom:t=>{e({autoZoom:t}),localStorage.setItem(k,t.toString())},setModelCallDetailsEnabled:t=>{e({modelCallDetailsEnabled:t}),localStorage.setItem(C,t.toString())},setDarkModeEnabled:t=>{e({darkModeEnabled:t}),localStorage.setItem(j,t.toString())},setPlaybackSpeed:t=>{e({playbackSpeed:t}),localStorage.setItem(I,t.toString())},subtitleEnabled:A,setSubtitleEnabled:t=>{e({subtitleEnabled:t}),localStorage.setItem(O,t.toString())}}}),T="midscene-env-config",N="midscene-service-mode",M="midscene-tracking-active-tab",D="midscene-deep-locate",B="midscene-deep-think",z="midscene-screenshot-included",L="midscene-dom-included",F="midscene-ime-strategy",K="midscene-auto-dismiss-keyboard",U="midscene-keyboard-dismiss-strategy",Q="midscene-always-refresh-screen-info",Z=()=>localStorage.getItem(T)||"",J=e=>{let t=e.split("\n"),r={};return t.forEach(e=>{let t=e.trim();if(t.startsWith("#"))return;let n=t.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)\s*=\s*(.*)$/);if(n){let[,e,t]=n,i=t.trim();(i.startsWith("'")&&i.endsWith("'")||i.startsWith('"')&&i.endsWith('"'))&&(i=i.slice(1,-1)),r[e]=i}}),r},X=E((e,t)=>{let r=Z(),n=J(r),i=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(N),a="false"!==localStorage.getItem(M),s="true"===localStorage.getItem(D),A=localStorage.getItem(B),l="false"!==localStorage.getItem(z),c=localStorage.getItem(L)||"false";return{serviceMode:i?"In-Browser-Extension":o||"Server",setServiceMode:t=>{if(i)throw Error("serviceMode cannot be set in extension");e({serviceMode:t}),localStorage.setItem(N,t)},config:n,configString:r,setConfig:t=>e({config:t}),loadConfig:t=>{e({config:J(t),configString:t}),localStorage.setItem(T,t)},syncFromStorage:()=>{let t=Z();e({config:J(t),configString:t})},forceSameTabNavigation:a,setForceSameTabNavigation:t=>{e({forceSameTabNavigation:t}),localStorage.setItem(M,t.toString())},deepLocate:s,setDeepLocate:t=>{e({deepLocate:t}),localStorage.setItem(D,t.toString())},deepThink:"true"===A||"false"!==A&&"unset",setDeepThink:t=>{e({deepThink:t}),localStorage.setItem(B,t.toString())},screenshotIncluded:l,setScreenshotIncluded:t=>{e({screenshotIncluded:t}),localStorage.setItem(z,t.toString())},domIncluded:"visible-only"===c?"visible-only":"true"===c,setDomIncluded:t=>{e({domIncluded:t}),localStorage.setItem(L,t.toString())},popupTab:"playground",setPopupTab:t=>{e({popupTab:t})},imeStrategy:localStorage.getItem(F)||"yadb-for-non-ascii",setImeStrategy:t=>{e({imeStrategy:t}),localStorage.setItem(F,t)},autoDismissKeyboard:"false"!==localStorage.getItem(K),setAutoDismissKeyboard:t=>{e({autoDismissKeyboard:t}),localStorage.setItem(K,t.toString())},keyboardDismissStrategy:localStorage.getItem(U)||"esc-first",setKeyboardDismissStrategy:t=>{e({keyboardDismissStrategy:t}),localStorage.setItem(U,t)},alwaysRefreshScreenInfo:"true"===localStorage.getItem(Q),setAlwaysRefreshScreenInfo:t=>{e({alwaysRefreshScreenInfo:t}),localStorage.setItem(Q,t.toString())}}});var H=r(3819);function G(e){var t,r,n;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};H.Ay.error({message:null!=(t=i.title)?t:"Something went wrong",description:null!=(r=i.description)?r:function(e){if("string"==typeof e)return e;if(e instanceof Error)return e.message||e.toString();if(e&&"object"==typeof e&&"message"in e){let t=e.message;if("string"==typeof t)return t}try{return JSON.stringify(e)}catch(t){return String(e)}}(e),placement:"bottomRight",duration:null!=(n=i.duration)?n:5})}function V(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function q(e){let{showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:i="icon",playgroundSDK:s}=e,{message:A}=p.A.useApp(),{config:l,configString:c,loadConfig:u,syncFromStorage:v}=X(),[b,w]=(0,a.useState)(!1),[E,k]=(0,a.useState)(c),[x,S]=(0,a.useState)(null),[C,j]=(0,a.useState)(!1),I=l.MIDSCENE_MODEL_NAME,O=!!(null==s?void 0:s.runConnectivityTest),P=(0,a.useRef)(null),R=(0,a.useRef)(null),T=()=>{null!==R.current&&(window.clearTimeout(R.current),R.current=null)},N=e=>{v(),T(),w(!0),e.preventDefault(),e.stopPropagation()},M=()=>{T(),w(!1),u(E)};return(0,a.useEffect)(()=>{b&&(k(c),S(null))},[b,c]),(0,a.useEffect)(()=>()=>{T()},[]),(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:P,children:[r?I:null,(0,o.jsx)(h.A,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>P.current,open:!b&&(t?0===Object.keys(l).length:void 0),children:"icon"===i?(0,o.jsx)(d.A,{onClick:N}):(0,o.jsx)("span",{onClick:N,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,o.jsxs)(f.A,{title:"Model Env Config",open:b,onOk:M,onCancel:()=>{T(),w(!1)},footer:(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:8},children:[O?(0,o.jsx)(g.Ay,{type:"primary",ghost:!0,loading:C,onClick:()=>{var e;return(e=function*(){if(null==s?void 0:s.runConnectivityTest)try{j(!0),S(null);let e=J(E),t=yield s.runConnectivityTest(e);S(t),t.passed?(u(E),A.success("Model verification passed"),T(),R.current=window.setTimeout(()=>{w(!1),R.current=null},2e3)):A.warning("Model verification found issues")}catch(t){let e=t instanceof Error?t.message:String(t);G(t,{title:"Model verification failed"}),S({passed:!1,message:e})}finally{j(!1)}},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){V(o,n,i,a,s,"next",e)}function s(e){V(o,n,i,a,s,"throw",e)}a(void 0)})})()},children:"Verify and Save Model"},"save-and-run"):null,(0,o.jsx)(g.Ay,{type:"primary",onClick:M,children:"Save"},"save")]}),style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,o.jsx)(m.A.TextArea,{rows:7,placeholder:"MIDSCENE_MODEL_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:E,onChange:e=>k(e.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,o.jsxs)("div",{children:[(0,o.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,o.jsxs)("p",{children:["These data will be saved ",(0,o.jsx)("strong",{children:"locally in your browser"}),"."]})]}),x?(0,o.jsx)(y.A,{type:x.passed?"success":"warning",showIcon:!0,message:x.passed?"Model verification passed":"Model verification failed",description:x.passed?void 0:(0,o.jsx)("span",{style:{whiteSpace:"pre-wrap"},children:x.message||"Connectivity test failed without details."}),style:{marginTop:16}}):null]})]})}function W(e){let{showEnvConfig:t=!0,showTooltipWhenEmpty:r=!1,showModelName:n=!1,githubUrl:i="https://github.com/web-infra-dev/midscene",helpUrl:a="https://midscenejs.com/quick-experience.html",className:s="",playgroundSDK:A}=e;return(0,o.jsxs)("div",{className:`nav-actions ${s}`,children:[(0,o.jsx)(u.A.Link,{href:i,target:"_blank",children:(0,o.jsx)(l.A,{className:"nav-icon"})}),(0,o.jsx)(u.A.Link,{href:a,target:"_blank",children:(0,o.jsx)(c.A,{className:"nav-icon"})}),t&&(0,o.jsx)(q,{showTooltipWhenEmpty:r,showModelName:n,playgroundSDK:A})]})}var Y=r(6453),_=r(4458);let $=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 24 24"},e),r=r={children:[(0,o.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M22 9.483A14.53 14.53 0 0 0 9.75 5.674M19 12.9a9.85 9.85 0 0 0-4.75-2.642M5 12.9a10 10 0 0 1 2.18-1.65M8 16.157a5.63 5.63 0 0 1 2.5-1.455"}),(0,o.jsx)("path",{fill:"#6D6D6D",fillRule:"evenodd",d:"M12 20a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5",clipRule:"evenodd"}),(0,o.jsx)("path",{stroke:"#6D6D6D",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20 20 4 4M2 9.483a15 15 0 0 1 1.75-1.42"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function ee(e){let{title:t="Connect to a device"}=e;return(0,o.jsx)("div",{style:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},children:(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:4},children:[(0,o.jsx)($,{"aria-hidden":"true",style:{width:24,height:24,objectFit:"contain"}}),(0,o.jsx)("h2",{style:{margin:0,whiteSpace:"nowrap",textAlign:"center",fontSize:13,lineHeight:"24px",fontWeight:400,color:"rgba(0, 0, 0, 0.85)"},children:t})]})})}var et=r(1352),er=r(955),en=r(6921);function ei(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function eo(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ei(o,n,i,a,s,"next",e)}function s(e){ei(o,n,i,a,s,"throw",e)}a(void 0)})}}function ea(e){let{getScreenshot:t,getInterfaceInfo:r,serverOnline:n,isUserOperating:i=!1,mjpegUrl:s,mode:A="default",contentRef:l}=e,[c,u]=(0,a.useState)(null),[d,p]=(0,a.useState)(!1),[f,m]=(0,a.useState)(null),[y,v]=(0,a.useState)(0),[b,w]=(0,a.useState)(null),[E,k]=(0,a.useState)(()=>String(Date.now())),x=(0,a.useRef)(null),S=!!(s&&n),C=["screenshot-viewer","screen-only"===A&&"screen-only"].filter(Boolean).join(" "),j=(0,a.useRef)(null),I=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!S)return;let e=window.setTimeout(()=>{let e=x.current;!e||e.naturalWidth>0||e.naturalHeight>0||k(String(Date.now()))},2500);return()=>window.clearTimeout(e)},[S,E,s]);let O=(0,a.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return eo(function*(){if(n){p(!0),e&&m(null);try{let e=yield t();if(console.log("Screenshot API response:",e),null==e?void 0:e.screenshot){let t=e.screenshot.toString().trim();t?(u(t),m(null),v(Date.now())):m("Empty screenshot data received")}else m("No screenshot data in response")}catch(e){console.error("Screenshot fetch error:",e),m(e instanceof Error?e.message:"Failed to fetch screenshot")}finally{p(!1)}}})()},[t,n]),P=(0,a.useCallback)(()=>eo(function*(){if(n&&r)try{let e=yield r();e&&w(e)}catch(e){console.error("Interface info fetch error:",e)}})(),[r,n]),R=(0,a.useCallback)(()=>{j.current&&clearInterval(j.current),console.log("Starting screenshot polling (5s interval)"),j.current=setInterval(()=>{!I.current&&n&&O(!1)},5e3)},[O,n]),T=(0,a.useCallback)(()=>{j.current&&(console.log("Stopping screenshot polling"),clearInterval(j.current),j.current=null)},[]),N=(0,a.useCallback)(()=>{console.log("Pausing screenshot polling"),I.current=!0},[]),M=(0,a.useCallback)(()=>{console.log("Resuming screenshot polling"),I.current=!1},[]),D=(0,a.useCallback)(()=>{O(!0)},[O]);if((0,a.useEffect)(()=>{if(!n){u(null),m(null),w(null),T();return}return(P(),S)?void T():(O(!1),R(),()=>{T()})},[n,S,R,T,O,P]),(0,a.useEffect)(()=>{n&&!S&&(i?N():(M(),O(!1)))},[i,N,M,O,n,S]),(0,a.useEffect)(()=>()=>{T()},[T]),!n)return(0,o.jsx)("div",{className:`${C} offline`,children:(0,o.jsxs)("div",{className:"screenshot-placeholder",children:[(0,o.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,o.jsx)("p",{children:"Start the playground server to see real-time screenshots"})]})});if(!S&&d&&!c)return(0,o.jsxs)("div",{className:`${C} loading`,children:[(0,o.jsx)(en.A,{size:"large"}),(0,o.jsx)("p",{children:"Loading screenshot..."})]});if(!S&&f&&!c)return(0,o.jsx)("div",{className:`${C} error`,children:(0,o.jsxs)("div",{className:"screenshot-placeholder",children:[(0,o.jsx)("h3",{children:"\uD83D\uDCF1 Screen Preview"}),(0,o.jsx)("p",{className:"error-message",children:f})]})});let B=(0,o.jsx)("div",{className:"screenshot-content",ref:l,children:S?(0,o.jsx)("img",{ref:x,src:E?`${s}${(null==s?void 0:s.includes("?"))?"&":"?"}_mjpegRetry=${encodeURIComponent(E)}`:s,alt:"Device Live Stream",className:"screenshot-image",onError:()=>{window.setTimeout(()=>k(String(Date.now())),500)}},E||"initial"):c?(0,o.jsx)("img",{src:c.startsWith("data:image/")?c:`data:image/png;base64,${c}`,alt:"Device Screenshot",className:"screenshot-image",onLoad:()=>console.log("Screenshot image loaded successfully"),onError:e=>{console.error("Screenshot image load error:",e),console.error("Screenshot data preview:",c.substring(0,100)),m("Failed to load screenshot image")}}):(0,o.jsx)("div",{className:"screenshot-placeholder",children:(0,o.jsx)("p",{children:"No screenshot available"})})});return"screen-only"===A?(0,o.jsx)("div",{className:C,children:B}):(0,o.jsxs)("div",{className:C,children:[(0,o.jsx)("div",{className:"screenshot-header",children:(0,o.jsx)("div",{className:"screenshot-title",children:(0,o.jsx)("h3",{children:(null==b?void 0:b.type)?b.type:"Device Name"})})}),(0,o.jsxs)("div",{className:"screenshot-container",children:[(0,o.jsxs)("div",{className:"screenshot-overlay",children:[(0,o.jsxs)("div",{className:"device-name-overlay",children:["Device Name",(0,o.jsx)(h.A,{title:null==b?void 0:b.description,children:(0,o.jsx)(et.A,{size:16,className:"info-icon"})})]}),!S&&(0,o.jsxs)("div",{className:"screenshot-controls",children:[y>0&&(0,o.jsxs)("span",{className:"last-update-time",children:["Last updated ",(e=>{if(!e)return"";let t=Math.floor((Date.now()-e)/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:new Date(e).toLocaleTimeString()})(y)]}),(0,o.jsx)(h.A,{title:"Refresh screenshot",children:(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(er.A,{}),onClick:D,loading:d,size:"small"})}),i&&(0,o.jsxs)("span",{className:"operation-indicator",children:[(0,o.jsx)(en.A,{size:"small"})," Operating..."]})]})]}),B]})]})}var es=r(3393),eA=r(2397);let el=new Set(["Backspace","Delete","Enter","Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"]),ec=new Set(["Alt","Control","Meta","Shift"]);function eu(e,t){let r=t.width/t.height;if(e.height<=0||e.width<=0)return e;if(e.width/e.height>r){let t=e.height*r;return{left:e.left+(e.width-t)/2,top:e.top,width:t,height:e.height}}let n=e.width/r;return{left:e.left,top:e.top+(e.height-n)/2,width:e.width,height:n}}function ed(e){let{enabled:t,deviceSize:r,onTap:n,onSwipe:i,scrollEnabled:s=!1,onWheelScroll:A,keyboardEnabled:l=!1,onTextInput:c,onKeyboardPress:u,contentRef:d,tapMaxDistance:p=8,tapMaxDurationMs:h=250,style:f}=e,g=(0,a.useRef)(null),m=(0,a.useRef)(null),y=(0,a.useRef)(null),v=(0,a.useRef)(!1),b=(0,a.useRef)(!1),w=(0,a.useRef)(0),E=(0,a.useRef)(null),k=(0,a.useRef)(null),x=(0,a.useRef)(null),S=(0,a.useCallback)(()=>{if(l){b.current=!0;let e=m.current;e&&document.activeElement!==e&&e.focus({preventScroll:!0})}},[l]),C=(0,a.useCallback)((e,t)=>{l&&Promise.resolve(t).catch(()=>void 0).then(()=>{window.setTimeout(()=>{b.current&&w.current===e&&S()},0)})},[S,l]),j=(0,a.useCallback)((e,t)=>{let r=g.current,n=m.current;if(!r||!n)return;let i=r.getBoundingClientRect();n.style.left=`${Math.max(0,e-i.left)}px`,n.style.top=`${Math.max(0,t-i.top)}px`},[]),I=(0,a.useCallback)((e,t,n)=>{if(!r)return null;let i=(e-n.left)/n.width,o=(t-n.top)/n.height;return{x:Math.max(0,Math.min(r.width-1,Math.round(i*r.width))),y:Math.max(0,Math.min(r.height-1,Math.round(o*r.height)))}},[r]),O=(0,a.useCallback)(e=>{var n;if(!t||!r||!g.current||0!==e.button&&"mouse"===e.pointerType)return;let i=eu((null!=(n=null==d?void 0:d.current)?n:g.current).getBoundingClientRect(),r);if(e.clientX<i.left||e.clientX>i.left+i.width||e.clientY<i.top||e.clientY>i.top+i.height){b.current=!1;return}j(e.clientX,e.clientY);let o=w.current+1;w.current=o,S();try{g.current.setPointerCapture(e.pointerId)}catch(e){}y.current={startX:e.clientX,startY:e.clientY,startTime:performance.now(),contentRect:i,keyboardFocusRequestId:o},e.preventDefault()},[d,t,r,S,j]),P=(0,a.useCallback)((e,t)=>{let r=y.current;if(y.current=null,!r)return;try{var o;null==(o=g.current)||o.releasePointerCapture(e.pointerId)}catch(e){}if(t)return;let a=e.clientX-r.startX,s=e.clientY-r.startY,A=Math.sqrt(a*a+s*s),l=Math.max(0,performance.now()-r.startTime),c=I(r.startX,r.startY,r.contentRect),u=I(e.clientX,e.clientY,r.contentRect);c&&u&&(E.current=u,A<=p&&l<=h?C(r.keyboardFocusRequestId,null==n?void 0:n(c)):null==i||i(c,u,Math.round(l)))},[n,i,I,C,p,h]),R=(0,a.useCallback)(e=>P(e,!1),[P]),T=(0,a.useCallback)(e=>P(e,!0),[P]),N=(0,a.useCallback)(()=>{let e=k.current;k.current=null,x.current&&(clearTimeout(x.current),x.current=null),e&&(null==A||A(e.point,{deltaX:e.deltaX,deltaY:e.deltaY}))},[A]),M=(0,a.useCallback)(e=>{var n;if(!t||!s||!r||!g.current)return;let i=eu((null!=(n=null==d?void 0:d.current)?n:g.current).getBoundingClientRect(),r);if(e.clientX<i.left||e.clientX>i.left+i.width||e.clientY<i.top||e.clientY>i.top+i.height)return;let o=I(e.clientX,e.clientY,i);if(!o)return;e.preventDefault(),e.stopPropagation();let a=k.current;k.current={point:o,deltaX:((null==a?void 0:a.deltaX)||0)+e.deltaX,deltaY:((null==a?void 0:a.deltaY)||0)+e.deltaY},x.current&&clearTimeout(x.current),x.current=setTimeout(N,80)},[d,r,t,N,I,s]),D=(0,a.useCallback)(()=>{var e;(null==(e=m.current)?void 0:e.value)&&(m.current.value="")},[]),B=(0,a.useCallback)(e=>{var t;if(l&&b.current){if(!e.altKey&&(e.metaKey||e.ctrlKey)&&"c"===e.key.toLowerCase()&&function(e){let t=window.getSelection();if(!t||t.isCollapsed||!e)return!1;let{anchorNode:r,focusNode:n}=t;return!!r&&!!n&&!e.contains(r)&&!e.contains(n)}(g.current)){b.current=!1;return}if(!v.current&&!e.isComposing&&!function(e){if("F5"===e.key||"F11"===e.key||"F12"===e.key)return!0;if(!(e.metaKey||e.ctrlKey))return!1;let t=e.key.toLowerCase();return!!e.altKey&&"i"===t||!!e.shiftKey&&("i"===t||"j"===t)||new Set(["r","q","w","m","h","n","t","+","=","-","_","0"]).has(t)}(e)&&(el.has(e.key)||e.altKey||e.ctrlKey||e.metaKey)){let r=function(e){if(ec.has(e.key))return null;let t=[];return e.ctrlKey&&t.push("Control"),e.metaKey&&t.push("Meta"),e.altKey&&t.push("Alt"),e.shiftKey&&"Shift"!==e.key&&t.push("Shift"),t.push(" "===e.key?"Space":e.key),t.join("+")}(e);if(!r)return;e.preventDefault(),e.stopPropagation(),null==u||u(r,null!=(t=E.current)?t:void 0)}}},[l,u]),z=(0,a.useCallback)(e=>{var t;if(!l||!b.current)return;let r=e.clipboardData.getData("text");r&&(e.preventDefault(),e.stopPropagation(),null==c||c(r,null!=(t=E.current)?t:void 0))},[l,c]),L=(0,a.useCallback)(e=>{var t,r,n,i,o;if(!l||!b.current){v.current||D();return}if(v.current)return;let a=e.nativeEvent;if("insertLineBreak"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Enter",null!=(r=E.current)?r:void 0);return}if("deleteContentBackward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Backspace",null!=(n=E.current)?n:void 0);return}if("deleteContentForward"===a.inputType){D(),e.preventDefault(),e.stopPropagation(),null==u||u("Delete",null!=(i=E.current)?i:void 0);return}let s=a.data||(null==(t=m.current)?void 0:t.value)||"";D(),s&&(e.preventDefault(),e.stopPropagation(),null==c||c(s,null!=(o=E.current)?o:void 0))},[D,l,u,c]);return((0,a.useEffect)(()=>{t||(y.current=null,k.current=null,x.current&&(clearTimeout(x.current),x.current=null),v.current=!1,b.current=!1,E.current=null)},[t]),(0,a.useEffect)(()=>{if(!t||!l){b.current=!1;return}let e=e=>{let t=g.current;t&&e.target instanceof Node&&t.contains(e.target)||(b.current=!1)};return window.addEventListener("keydown",B,!0),window.addEventListener("pointerdown",e,!0),()=>{window.removeEventListener("keydown",B,!0),window.removeEventListener("pointerdown",e,!0)}},[t,B,l]),(0,a.useEffect)(()=>()=>{x.current&&(clearTimeout(x.current),x.current=null)},[]),t&&r)?(0,o.jsx)("div",{ref:g,onPointerDown:O,onPointerUp:R,onPointerCancel:T,onWheel:M,onContextMenu:e=>e.preventDefault(),"data-midscene-device-interaction-layer":"true",style:function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({position:"absolute",inset:0,zIndex:5,cursor:l?"default":"crosshair",outline:"none",color:"transparent",caretColor:"transparent",touchAction:"none",userSelect:"none"},f),children:l?(0,o.jsx)("textarea",{ref:m,"data-midscene-keyboard-sink":"true",tabIndex:-1,onPaste:z,onCompositionStart:()=>{b.current=!0,v.current=!0},onCompositionEnd:e=>{var t,r;if(!l||!b.current)return;v.current=!1;let n=e.data||(null==(t=m.current)?void 0:t.value)||"";D(),n&&(null==c||c(n,null!=(r=E.current)?r:void 0))},onInput:L,style:{position:"absolute",left:0,top:0,width:32,height:24,opacity:0,pointerEvents:"none",appearance:"none",boxShadow:"none",overflow:"hidden",resize:"none",border:0,padding:0,margin:0,outline:"none",background:"transparent",color:"transparent",caretColor:"transparent",fontSize:16,lineHeight:"20px",transform:"translate(-50%, -50%)"}}):null}):null}var ep=r(4093),eh=r(6418),ef=r(4452),eg=r(2644);function em(){return"Preparing Android device connection…"}function ey(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ev(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ey(o,n,i,a,s,"next",e)}function s(e){ey(o,n,i,a,s,"throw",e)}a(void 0)})}}function eb(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{Text:ew}=u.A;function eE(e){let{connectingOverlay:t,deviceId:r,onIntrinsicSize:n,onStatusChange:i,renderErrorOverlay:s,serverUrl:A,metadataTimeoutMs:l=55e3,reconnectInterval:c=3e3,viewportStyle:u,contentRef:d}=e,p=(0,a.useRef)(null),h=(0,a.useRef)(null),f=(0,a.useRef)(null),g=(0,a.useRef)(null),m=(0,a.useRef)(null),v=(0,a.useRef)(!1),[b,w]=(0,a.useState)("connecting"),[E,k]=(0,a.useState)(null),[x,S]=(0,a.useState)(()=>em()),[C,j]=(0,a.useState)(!0),[I,O]=(0,a.useState)(0),P=(0,a.useMemo)(()=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:em();switch(e){case"connected":return"Live scrcpy preview connected";case"waiting-for-stream":return t;case"error":return"Unable to start scrcpy preview";case"disconnected":return"scrcpy preview disconnected, retrying…";default:return"Connecting to scrcpy preview server…"}})(b,x),[b,x]),R=("error"===b||"disconnected"===b)&&!!s,T=(0,a.useCallback)(()=>{w("connecting"),k(null),S(em()),O(e=>e+1)},[]);(0,a.useEffect)(()=>{null==i||i(b,P)},[i,b,P]);let N=()=>{let e=p.current;e&&e.replaceChildren()},M=()=>{f.current&&(f.current.dispose(),f.current=null)},D=()=>{g.current&&(clearTimeout(g.current),g.current=null)};return(0,a.useEffect)(()=>{if(!A){w("error"),k("scrcpy preview metadata is missing a server URL.");return}if(!es.p.isSupported){j(!1),w("error"),k("Current browser does not support WebCodecs, so live scrcpy preview is unavailable.");return}let e=!1,t=null,i=()=>{t&&(clearTimeout(t),t=null),D(),m.current&&(clearTimeout(m.current),m.current=null),h.current&&(h.current.disconnect(),h.current=null),M(),N(),null==n||n(null)},o=()=>{e||m.current||(m.current=setTimeout(()=>{m.current=null,i(),a()},c))},a=()=>{let t,i,a,s;if(e)return;v.current=!1,w("connecting"),k(null),S(em());let c=(0,eg.io)(A,{withCredentials:!0,reconnection:!1,timeout:1e4,transports:["websocket"]});h.current=c;let u=(i=!1,a=[],s=new TransformStream({transform(e,t){if("configuration"===e.type){i=!0,t.enqueue(e),a.forEach(e=>t.enqueue(e)),a=[];return}"data"!==e.type||i?t.enqueue(e):a.push(e)}}),new ReadableStream({start(e){let r=t=>{try{var r;let n=(r=t.data)instanceof Uint8Array?r:r instanceof ArrayBuffer?new Uint8Array(r):new Uint8Array(r.buffer,r.byteOffset,r.byteLength);if("configuration"===t.type)return void e.enqueue({type:"configuration",data:n});e.enqueue({type:"data",data:n,keyframe:t.keyFrame})}catch(t){e.error(t)}},n=()=>e.close(),i=t=>e.error(t);t=()=>{c.off("video-data",r),c.off("disconnect",n),c.off("error",i)},c.on("video-data",r),c.on("disconnect",n),c.on("error",i)},cancel(){null==t||t()}}).pipeThrough(s));c.on("connect",()=>{var t,n;w("waiting-for-stream"),S(em()),D(),g.current=setTimeout(()=>{e||(v.current=!0,w("error"),k(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:55e3,t=Math.max(1,Math.round(e/1e3));return`Timed out waiting ${t}s for scrcpy video stream metadata.`}(l)),S(em()),c.disconnect(),h.current=null,o())},l),c.emit("connect-device",(t=eb({},"string"==typeof r&&r.trim()?{deviceId:r.trim()}:{}),n=n={maxSize:1024},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}),c.on("preview-status",t=>{var r;!e&&"object"==typeof(r=t)&&null!==r&&"message"in r&&"string"==typeof r.message&&(w("waiting-for-stream"),S(t.message))}),c.on("video-metadata",t=>ev(function*(){try{D(),M(),S("Starting video decoder…"),"number"==typeof t.width&&t.width>0&&"number"==typeof t.height&&t.height>0&&(null==n||n({width:t.width,height:t.height}));let r=t.codec?t.codec:ep.n.H264,i=yield ev(function*(){var e;let t=eh.p.isSupported?new eh.p:new ef.x,n=t.canvas;return n.style.width="100%",n.style.height="100%",n.style.objectFit="contain",N(),null==(e=p.current)||e.appendChild(n),new es.p({codec:r,renderer:t})})();f.current=i,u.pipeTo(i.writable).catch(t=>{e||(w("error"),k(t.message),o())}),S(em()),w("connected")}catch(t){if(e)return;w("error"),k(t instanceof Error?t.message:"Failed to start decoder."),S(em()),o()}})()),c.on("disconnect",()=>{if(D(),!e){if(v.current){v.current=!1;return}w("disconnected"),k(null),S(em()),o()}}),c.on("connect_error",t=>{D(),e||(w("error"),k(t.message),S(em()),o())}),c.on("error",t=>{D(),e||(w("error"),k(t.message),S(em()),o())})};return t=setTimeout(()=>{t=null,a()},0),()=>{e=!0,i()}},[r,l,c,I,A]),(0,o.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[E&&!R?(0,o.jsx)(y.A,{type:"warning",showIcon:!0,style:{marginBottom:12},message:P,description:E}):null,(0,o.jsxs)("div",{ref:d,style:eb({position:"relative",flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",background:"#111827",borderRadius:8,overflow:"hidden"},u),children:[(0,o.jsx)("div",{ref:p,style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"}}),"connected"!==b?R&&s?(0,o.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:s({errorMessage:E,retry:T,status:b,statusText:P})}):"error"!==b&&"disconnected"!==b&&t?(0,o.jsx)("div",{style:{position:"absolute",inset:0,zIndex:1},children:t}):(0,o.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,color:"#fff",background:"rgba(17, 24, 39, 0.78)",textAlign:"center",padding:24,zIndex:1},children:["error"===b?null:(0,o.jsx)(en.A,{spinning:!0}),(0,o.jsx)(ew,{style:{color:"#fff"},children:P}),"error"===b?(0,o.jsx)(ew,{style:{color:"#d1d5db"},children:"Scrcpy preview will retry automatically."}):null,!C&&(0,o.jsx)(ew,{style:{color:"#d1d5db"},children:"Please use a modern Chromium browser to view the stream."})]}):null]})]})}let ek=["android","ios","web","harmony","computer"],ex=["countdown-before-run"];function eS(e,t){var r;for(let t of[null==e?void 0:e.platformId,null==e||null==(r=e.interface)?void 0:r.type].filter(e=>!!e)){let e=t.toLowerCase();if(ek.includes(e))return e}return t}function eC(e){return((null==e?void 0:e.executionUxHints)||[]).filter(e=>ex.includes(e))}function ej(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function eI(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ej(o,n,i,a,s,"next",e)}function s(e){ej(o,n,i,a,s,"throw",e)}a(void 0)})}}function eO(e){var t,r;let{connectingOverlay:n,onDeviceSizeChange:i,onScrcpyStatusChange:s,renderErrorOverlay:A,scrcpyViewportStyle:l,screenshotViewerMode:c,playgroundSDK:u,runtimeInfo:d,serverUrl:h,serverOnline:f,isUserOperating:g}=e,{message:m}=p.A.useApp(),v=function(e,t){let r=null==e?void 0:e.preview;if(!r||"none"===r.kind||"custom"===r.kind)return{type:"none"};let n=t||"undefined"!=typeof window&&window.location.origin||"";if("mjpeg"===r.kind){let e=r.mjpegPath||"/mjpeg";return n?{type:"mjpeg",mjpegUrl:new URL(e,`${n}/`).toString()}:{type:"screenshot"}}if("scrcpy"===r.kind){var i,o;let t,a="string"==typeof(null==e||null==(i=e.metadata)?void 0:i.deviceId)?e.metadata.deviceId.trim():void 0;if("string"==typeof a&&/^\d+\.\d+\.\d+\.\d+:\d+$/.test(a))return{type:"screenshot"};let s=Number(null==(o=r.custom)?void 0:o.scrcpyPort),A=Number.isFinite(s)?s:void 0,l=A&&n?((t=new URL(n)).port=String(A),t.pathname="/",t.search="",t.hash="",t.toString()):void 0;return{deviceId:a,type:"scrcpy",scrcpyPort:A,scrcpyUrl:l}}return{type:"screenshot"}}(d,h),[b,w]=(0,a.useState)(null),[E,k]=(0,a.useState)(null),[x,S]=(0,a.useState)(null),[C,j]=(0,a.useState)("connecting"),I=(0,a.useRef)(Promise.resolve()),O=(0,a.useRef)(""),P=(0,a.useRef)(null),R=(0,a.useRef)(null),T=(0,a.useRef)(null),N=(0,a.useRef)(null),M=null!=(t=null==x?void 0:x.includes("Tap"))&&t,D=(null==x?void 0:x.includes("Swipe"))?"Swipe":"DragAndDrop",B=(null==x?void 0:x.includes("KeyboardPress"))||(null==x?void 0:x.includes("Input"))||!1,z=null!=(r=null==x?void 0:x.includes("Scroll"))&&r,L=(0,a.useCallback)(e=>{let t=I.current.then(e,e);return I.current=t.catch(()=>void 0),t},[m]);(0,a.useEffect)(()=>{if(!f){w(null),S(null);return}let e=!1,t=()=>eI(function*(){var t;let r;try{r=yield u.getInterfaceInfo()}catch(e){return}if(e)return;if((null==r||null==(t=r.size)?void 0:t.width)&&r.size.height){let{size:e}=r;w(t=>t&&t.width===e.width&&t.height===e.height?t:{width:e.width,height:e.height})}let n=Array.isArray(null==r?void 0:r.actionTypes)?r.actionTypes:null;S(e=>null===e&&null===n||e&&n&&e.length===n.length&&e.every((e,t)=>e===n[t])?e:n)})();t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[u,f]),(0,a.useEffect)(()=>{null==i||i(null!=E?E:b)},[b,i,E]);let F="scrcpy"===v.type&&es.p.isSupported,K="screenshot"===v.type||"scrcpy"===v.type&&!F,U="scrcpy"===v.type&&!es.p.isSupported&&function(){try{let{protocol:e,hostname:t}=window.location;if("http:"!==e)return!1;return"localhost"!==t&&"127.0.0.1"!==t&&"::1"!==t}catch(e){return!1}}(),Q="none"!==v.type&&(!F||"connected"===C),Z=(0,a.useCallback)((e,t)=>{m.open({type:"error",content:t||e,key:"manual-control-error"})},[]),J=(0,a.useCallback)(()=>{R.current&&(clearTimeout(R.current),R.current=null)},[]),X=(0,a.useCallback)(()=>{var e,t;J();let r=O.current,n=P.current;if(!r)return null!=(e=T.current)?e:Promise.resolve();O.current="",P.current=null;let i=(null!=(t=T.current)?t:Promise.resolve()).catch(()=>void 0).then(()=>eI(function*(){let e=yield L(()=>u.interact(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({actionType:"Input",value:r,mode:"typeOnly"},n?{x:n.x,y:n.y}:{})));e.ok||Z("Input failed",e.error)})()).finally(()=>{T.current===i&&(T.current=null)});return T.current=i,T.current},[J,L,u,Z]),H=(0,a.useCallback)(e=>eI(function*(){yield X();let t=yield L(()=>u.interact({actionType:"Tap",x:e.x,y:e.y}));t.ok||Z("Tap failed",t.error)})(),[L,X,u,Z]),G=(0,a.useCallback)((e,t,r)=>eI(function*(){yield X();let n=yield L(()=>{var n,i,o,a,s,A;let l;return u.interact((n=D,i=e,o=t,a=r,l={actionType:n,x:i.x,y:i.y,endX:o.x,endY:o.y},"DragAndDrop"===n?l:(s=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},l),A=A={duration:a},Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(A)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(A)).forEach(function(e){Object.defineProperty(s,e,Object.getOwnPropertyDescriptor(A,e))}),s)))});n.ok||Z(`${D} failed`,n.error)})(),[L,X,D,u,Z]),V=(0,a.useCallback)((e,t)=>{e&&(O.current+=e,t&&(P.current=t),J(),R.current=setTimeout(()=>{X()},120))},[J,X]);(0,a.useEffect)(()=>{f&&Q&&B||(J(),O.current="",P.current=null)},[J,B,Q,f]),(0,a.useEffect)(()=>()=>{f&&Q&&B&&O.current?X():(J(),P.current=null)},[J,X,B,v.type,Q,d,f,h]);let q=(0,a.useCallback)(e=>eI(function*(){if(!e)return;yield X();let t=yield L(()=>u.interact({actionType:"KeyboardPress",keyName:e}));t.ok||Z("Keyboard press failed",t.error)})(),[L,X,u,Z]),W=(0,a.useCallback)((e,t)=>eI(function*(){yield X();let r=yield L(()=>{let r,n,i;return u.interact((n=(r=Math.abs(t.deltaY)>=Math.abs(t.deltaX))?Math.abs(t.deltaY):Math.abs(t.deltaX),i=r?t.deltaY>=0?"down":"up":t.deltaX>=0?"right":"left",{actionType:"Scroll",x:e.x,y:e.y,scrollType:"singleAction",direction:i,distance:Math.max(1,Math.round(n))}))});r.ok||Z("Scroll failed",r.error)})(),[L,X,u,Z]),Y=(0,a.useCallback)((e,t)=>{j(e),null==s||s(e,t)},[s]);return(0,o.jsxs)("div",{style:{flex:1,minHeight:0,height:"100%",position:"relative"},children:[U&&(0,o.jsx)(eA.A,{content:(0,o.jsxs)("div",{style:{maxWidth:360},children:[(0,o.jsx)("p",{style:{margin:"0 0 8px"},children:"Live scrcpy streaming is unavailable because WebCodecs API is disabled in non-secure (HTTP) contexts with non-localhost addresses."}),(0,o.jsx)("p",{style:{margin:"0 0 8px"},children:"Currently using screenshot polling as fallback. To enable scrcpy streaming:"}),(0,o.jsxs)("ol",{style:{margin:0,paddingLeft:18},children:[(0,o.jsxs)("li",{children:["Open"," ",(0,o.jsx)("code",{children:"chrome://flags/#unsafely-treat-insecure-origin-as-secure"})]}),(0,o.jsxs)("li",{children:["Add ",(0,o.jsx)("code",{children:window.location.origin})]}),(0,o.jsxs)("li",{children:["Set to ",(0,o.jsx)("b",{children:"Enabled"})," and relaunch Chrome"]})]})]}),title:"Screenshot polling mode",trigger:"click",placement:"bottomRight",children:(0,o.jsx)("button",{type:"button",style:{position:"absolute",top:8,right:8,zIndex:10,background:"#faad14",border:"none",borderRadius:"50%",width:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",boxShadow:"0 2px 6px rgba(0,0,0,0.2)"},children:(0,o.jsx)("span",{style:{color:"#fff",fontSize:14,fontWeight:"bold",lineHeight:1},children:"!"})})}),"none"===v.type?(0,o.jsx)(y.A,{type:"warning",showIcon:!0,message:"Preview unavailable",description:"This session did not expose a preview capability in runtime metadata."}):F?(0,o.jsx)(eE,{connectingOverlay:n,deviceId:v.deviceId,onIntrinsicSize:k,onStatusChange:Y,renderErrorOverlay:A,serverUrl:v.scrcpyUrl,viewportStyle:l,contentRef:N}):(0,o.jsx)(ea,{getScreenshot:()=>K?u.getScreenshot():Promise.resolve(null),getInterfaceInfo:()=>u.getInterfaceInfo(),serverOnline:f,isUserOperating:g,mjpegUrl:v.mjpegUrl,mode:null!=c?c:"screen-only",contentRef:N}),(0,o.jsx)(ed,{enabled:M&&f&&Q,deviceSize:b,contentRef:N,onTap:H,onSwipe:G,scrollEnabled:z,onWheelScroll:W,keyboardEnabled:B,onTextInput:V,onKeyboardPress:q})]})}function eP(e){return(0,o.jsx)(eO,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},e))}var eR=r(2770);function eT(e){let{children:t}=e;return(0,o.jsx)(eR.Ay,{theme:{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}},children:(0,o.jsx)(p.A,{component:!1,children:t})})}var eN=r(4565),eM=r(217),eD=r(6987);let eB=()=>{let e=(0,eM.j)(eD.v4),t="";e&&(console.warn("MIDSCENE_DEBUG_MODEL_PROFILE is deprecated, use DEBUG=midscene:ai:profile instead"),t="ai:profile"),(0,eM.j)(eD.$l)&&(console.warn("MIDSCENE_DEBUG_MODEL_RESPONSE is deprecated, use DEBUG=midscene:ai:response instead"),t=t?"ai:*":"ai:call"),t&&(0,eN.N)(t)};var ez=r(5409);function eL(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let eF={modelName:eD._q,socksProxy:eD.T4,httpProxy:eD.Yf,openaiBaseURL:eD.kX,openaiApiKey:eD.Lh,openaiExtraConfig:eD.Z7,extraBody:eD.Pm,modelFamily:eD.v,timeout:eD.Yg,temperature:eD.V7,retryCount:eD.vC,retryInterval:eD.xg,reasoningEffort:eD.y2,reasoningEnabled:eD.nc,reasoningBudget:eD.fS},eK={modelName:eD.xP,socksProxy:eD.mZ,httpProxy:eD.zQ,openaiBaseURL:eD.zG,openaiApiKey:eD.OK,openaiExtraConfig:eD.ag,extraBody:eD.WH,modelFamily:eD.OY,timeout:eD.Z$,temperature:eD.Cn,retryCount:eD.sg,retryInterval:eD.wu,reasoningEffort:eD.Vb,reasoningEnabled:eD.u1,reasoningBudget:eD.aO},eU={modelName:eD.HR,socksProxy:eD.iw,httpProxy:eD.FU,openaiBaseURL:eD.$H,openaiApiKey:eD.IQ,openaiExtraConfig:eD.I2,extraBody:eD.G0,modelFamily:eD.yR,timeout:eD.zD,temperature:eD.W4,retryCount:eD.Km,retryInterval:eD.aK,reasoningEffort:eD.VM,reasoningEnabled:eD.M1,reasoningBudget:eD.AU};var eQ=r(9152);let eZ=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"*";if("string"!=typeof e||0===e.length)return e;if(e.length<=6)return e;let r=e.substring(0,3),n=e.substring(e.length-3),i=e.length-6,o=t.repeat(i);return`${r}${o}${n}`},eJ=e=>Object.fromEntries(Object.entries(e).map(e=>{let[t,r]=e;if(!r)return[t,r];if("string"==typeof r&&/key/i.test(t))return[t,eZ(r)];if("object"==typeof r){let e=JSON.stringify(r);if(/key/i.test(e))return[t,eZ(e)]}return[t,r]})),eX=(e,t)=>{if(t)try{return JSON.parse(t)}catch(t){throw Error(`Failed to parse ${e} as a JSON. ${t.message}`,{cause:t})}},eH={insight:eF,planning:eK,default:eU},eG=(e,t)=>{let r=(0,eN.a)("ai:config");r("will decideModelConfig base on agent.modelConfig()",e,eJ(t));let n=eH[e];if(!t[n.modelName])return void r("no modelName found for intent",e);let i=(e=>{var t,r,n;let i,{keys:o,provider:a,useLegacyLogic:s=!1}=e;eB(),(0,eN.a)("ai:config")("enter parseOpenaiSdkConfig with keys:",o);let A=s?a[eD.Jq]:void 0,l=s?a[eD.jG]:void 0,c=s?a[eD.$]:void 0,u=s?a[eD.CA]:void 0,d=s?a[eD.b6]:void 0,p=s?(e=>{let t=e[eD.pp],r=e[eD.yb],n=e[eD.NF],i=e[eD.JM],o=e[eD.j_],a=[t&&eD.pp,r&&eD.yb,n&&eD.NF,i&&eD.JM,o&&eD.j_].filter(Boolean);if(a.length>1)throw Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${a.join(", ")}. Please disable all but one mode.`);if(n)return"qwen3-vl";if(r)return"qwen2.5-vl";if(t)return"doubao-vision";if(o)return"gemini";if(i)if("1"===i)return"vlm-ui-tars";else if("DOUBAO"===i||"DOUBAO-1.5"===i)return"vlm-ui-tars-doubao-1.5";else return"vlm-ui-tars-doubao"})(a):void 0,h=a[o.modelFamily]||p,f=a[o.openaiApiKey]||A,g=a[o.openaiBaseURL]||l,m=a[o.socksProxy]||c,y=a[o.httpProxy]||u,v=a[o.modelName],b=a[o.openaiExtraConfig],w=eX(o.openaiExtraConfig,b||d),E=a[o.extraBody],k=eX(o.extraBody,E),x=(e=>{if(void 0===e||""===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0})(a[o.temperature]);if(h&&!eD._j.includes(h))throw Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${h}. Current version v1.10.2-beta-20260706032158.0 accepts the following model families: ${eD._j.join(", ")}. You can also visit https://midscenejs.com/model-common-config.html for the latest configuration information.`);let S="vlm-ui-tars"===h?eD.UH.V1_0:"vlm-ui-tars-doubao"===h||"vlm-ui-tars-doubao-1.5"===h?eD.UH.DOUBAO_1_5_20B:void 0,C=S?`UI-TARS=${S}`:h?`${h} mode`:"";return{socksProxy:m,httpProxy:y,openaiBaseURL:g,openaiApiKey:f,openaiExtraConfig:(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return;let{defaultHeaders:t,extra_headers:r,extraHeaders:n,...i}=e,o=t??r??n;return void 0!==o?{...i,defaultHeaders:o}:i})(w),extraBody:k,modelFamily:h,uiTarsModelVersion:S,modelName:v,modelDescription:C,intent:"-",slot:"-",timeout:a[o.timeout]?Number(a[o.timeout]):void 0,temperature:x,retryCount:(()=>{if(!a[o.retryCount])return 1;let e=Number(a[o.retryCount]);if(!Number.isFinite(e))return 1;if(e<0)throw Error(`${o.retryCount} must be non-negative, got ${e}`);return e})(),retryInterval:(()=>{if(!a[o.retryInterval])return 2e3;let e=Number(a[o.retryInterval]);if(!Number.isFinite(e))return 2e3;if(e<0)throw Error(`${o.retryInterval} must be non-negative, got ${e}`);return e})(),reasoningEffort:(null==(t=a[o.reasoningEffort])?void 0:t.trim())||void 0,reasoningEnabled:"true"===(i=null==(n=a[o.reasoningEnabled])||null==(r=n.trim())?void 0:r.toLowerCase())||"1"===i||"false"!==i&&"0"!==i&&("default"===i?"default":void 0),reasoningBudget:(()=>{var e;let t=null==(e=a[o.reasoningBudget])?void 0:e.trim();if(!t)return;let r=Number(t);return Number.isFinite(r)?r:void 0})()}})({keys:n,provider:t,useLegacyLogic:"default"===e});return i.intent=e,i.slot=e,r("decideModelConfig result by agent.modelConfig() with intent",e,eJ({...i})),(0,eQ.vA)(i.openaiBaseURL,`failed to get base URL of model (intent=${e}). See https://midscenejs.com/model-strategy`),i.modelName||console.warn(`modelName is not set for intent ${e}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`),i};function eV(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class eq{initialize(){var e;let t;if(this.isInitialized)return;this.modelConfig?(this.isolatedMode=!0,t=this.normalizeModelConfig(this.modelConfig)):t=(null==(e=this.globalConfigManager)?void 0:e.getAllEnvConfig())||{};let r=eG("default",t);if(!r)throw Error("Model configuration is incomplete: model name (MIDSCENE_MODEL_NAME) is required. See https://midscenejs.com/model-strategy.html");let n=eG("insight",t),i=eG("planning",t);this.modelConfigMap={default:{...r,intent:"default",slot:"default",createOpenAIClient:this.createOpenAIClientFn},insight:{...n||r,intent:"insight",slot:n?"insight":"default",createOpenAIClient:this.createOpenAIClientFn},planning:{...i||r,intent:"planning",slot:i?"planning":"default",createOpenAIClient:this.createOpenAIClientFn}},this.isInitialized=!0}normalizeModelConfig(e){return Object.entries(e).reduce((e,t)=>{let[r,n]=t;return null==n||(e[r]=String(n)),e},Object.create(null))}clearModelConfigMap(){if(this.isolatedMode)throw Error("ModelConfigManager work in isolated mode, so clearModelConfigMap should not be called");this.isInitialized=!1}getModelConfig(e){if(this.isInitialized||this.initialize(),!this.modelConfigMap)throw Error("modelConfigMap is not initialized, which should not happen");return this.modelConfigMap[e]}getUploadTestServerUrl(){let{openaiExtraConfig:e}=this.getModelConfig("default");return null==e?void 0:e.REPORT_SERVER_URL}registerGlobalConfigManager(e){this.globalConfigManager=e}throwErrorIfNonVLModel(){if(!this.getModelConfig("default").modelFamily)throw Error("MIDSCENE_MODEL_FAMILY is not set to a multimodal model with UI localization, so element localization cannot be achieved. Check your model configuration. See https://midscenejs.com/model-strategy.html")}constructor(e,t){eV(this,"modelConfigMap",void 0),eV(this,"isInitialized",!1),eV(this,"isolatedMode",!1),eV(this,"globalConfigManager",void 0),eV(this,"modelConfig",void 0),eV(this,"createOpenAIClientFn",void 0),this.modelConfig=e,this.createOpenAIClientFn=t}}let eW=new eq,eY=new class{getAllEnvConfig(){let e=eD.tk.reduce((e,t)=>(e[t]=ez.env[t],e),Object.create(null));if(!this.override)return e;{let{newConfig:t,extendMode:r}=this.override;return r?{...e,...t}:{...t}}}getEnvConfigValue(e){let t=this.getAllEnvConfig();if(e===eD.Sk)throw Error("MATCH_BY_POSITION is discarded, use MIDSCENE_MODEL_FAMILY instead");if(!eD.rd.includes(e))throw Error(`getEnvConfigValue with key ${e} is not supported.`);let r=t[e];return(this.keysHaveBeenRead[e]=!0,"string"==typeof r)?r.trim():r}getEnvConfigInBoolean(e){let t=this.getAllEnvConfig();if(!eD.c$.includes(e))throw Error(`getEnvConfigInBoolean with key ${e} is not supported`);let r=t[e];return this.keysHaveBeenRead[e]=!0,!!r&&(!!/^(true|1)$/i.test(r)||!/^(false|0)$/i.test(r)&&!!r.trim())}getEnvConfigValueAsNumber(e){if(!eD.rd.includes(e)&&!eD.DL.includes(e))throw Error(`getEnvConfigValueAsNumber with key ${e} is not supported.`);let t=this.getAllEnvConfig()[e];if(this.keysHaveBeenRead[e]=!0,"string"!=typeof t)return;let r=t.trim();if(!r)return;let n=Number(r);return Number.isNaN(n)?void 0:n}registerModelConfigManager(e){this.globalModelConfigManager=e}overrideAIConfig(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(let t in e){if(![...eD.Lg,...eD.XE].includes(t))throw Error(`Failed to override AI config, invalid key: ${t}`);let r=e[t];if("string"!=typeof r)throw Error(`Failed to override AI config, value for key ${t} must be a string, but got with type ${typeof r}`);this.keysHaveBeenRead[t]&&console.warn(`Warning: try to override AI config with key ${t} ,but it has been read.`)}let n=r?{...null==(t=this.override)?void 0:t.newConfig,...e}:e;if(this.override={newConfig:{...n},extendMode:r},!this.globalModelConfigManager)throw Error("globalModelConfigManager is not registered, which should not happen");this.globalModelConfigManager.clearModelConfigMap()}constructor(){eL(this,"override",void 0),eL(this,"keysHaveBeenRead",{}),eL(this,"globalModelConfigManager",void 0),eB()}};eY.registerModelConfigManager(eW),eW.registerGlobalConfigManager(eY);let e_=()=>{let e=eY.getEnvConfigValue(eD.El);return e?e:"Asia/Shanghai"===Intl.DateTimeFormat().resolvedOptions().timeZone?"Chinese":"English"},e$=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];eY.overrideAIConfig(e,t)};var e0=r(3585),e1=r(6990);function e2(e){try{let t=e.match(/^\s*(\{[\s\S]*\})\s*$/);if(t)return t[1];let r=e.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);if(r)return r[1];let n=e.match(/\{[\s\S]*\}/);if(n)return n[0]}catch{}return e}function e3(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e)return e;if(Array.isArray(e))return e.map(e=>e3(e,t));if("object"==typeof e){let n={};for(let[i,o]of Object.entries(e)){var r;let e=i.trim(),a=(null==(r=t.preserveStringValueKeys)?void 0:r.includes(e))??!1,s="string"==typeof o?a?o:o.trim():e3(o,t);n[e]=s}return n}return"string"==typeof e?e.trim():e}function e5(e,t){let r=((e,t,r)=>{var n;let i,o;if(null==e?void 0:e.match(/\((\d+),(\d+)\)/))return null==(n=e.match(/\((\d+),(\d+)\)/))?void 0:n.slice(1).map(Number);try{return i=JSON.parse(e),e3(i,r)}catch(e){o=e}try{return i=JSON.parse((0,e1.m)(e)),e3(i,r)}catch(e){o=e}return{parsed:void 0,lastError:o,rawResponse:t}})(e2(e),e,t);if(r&&"object"==typeof r&&"parsed"in r&&void 0===r.parsed)throw Error(`failed to parse LLM response into JSON. Error - ${String(r.lastError??"unknown error")}. Response -
|
|
3
3
|
${e}`);return r}let e7=e=>void 0,e4=e=>{let{midsceneDefaults:t,userConfig:r}=e;return{config:{temperature:r.temperature??t.temperature}}},e8={temperature:0},e6=[[100,100,200,200],[345,442,458,483],[120,180,380,210],[120,240,380,270],[50,100,200,200],[300,400,500,500],[600,100,800,250],[50,600,250,750]];function e9(e){let{shape:t}=e,{plural:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"bbox"===t?r?"bounding boxes":"bounding box":r?"points":"point"}function te(e){return Math.max(e-1,0)}function tt(e,t,r){return Math.round(e*te(r)/t)}function tr(e,t,r){return Math.min(Math.max(e,t),r)}function tn(e,t,r){let{preparedSize:n,contentSize:i}=r,{width:o,height:a}=n;if(4!==e.length||!e.every(e=>"number"==typeof e&&Number.isFinite(e)))throw Error(`invalid locate bbox data: ${JSON.stringify(t)} `);!function(e,t){let[r,n,i,o]=e;if(!(i>=r)||!(o>=n))throw Error(`locate pixel bbox has invalid coordinate order: bbox=${JSON.stringify(t)} pixelBbox=${JSON.stringify(e)}`)}(e,t),function(e,t,r,n){let[i,o,a,s]=e,A=te(r),l=te(n);if(i<0||o<0||a>A||s>l)throw Error(`locate pixel bbox is outside the image size: bbox=${JSON.stringify(t)} imageSize=${r}x${n}`)}(e,t,o,a);let s=te((null==i?void 0:i.width)??o),A=te((null==i?void 0:i.height)??a),[l,c,u,d]=e;return[tr(l,0,s),tr(c,0,A),tr(u,0,s),tr(d,0,A)]}function ti(e){return Array.isArray(e)&&Array.isArray(e[0])?e[0]:e}function to(e,t){let r=ti(e),n="string"==typeof r?r.trim().split(/[\s,]+/).filter(Boolean):r;if(!Array.isArray(n))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);let i=n.map(e=>"number"==typeof e?e:Number(e));if(!i.every(e=>Number.isFinite(e)))throw Error(`invalid ${t} data: ${JSON.stringify(e)} `);return i}function ta(e,t){return"point"===e.shape?{coordinates:[t[0],t[1]],coordinatesMeta:e}:{coordinates:[t[0],t[1],t[2],t[3]],coordinatesMeta:e}}let ts={primary:{bbox:["bbox","bbox_2d"],point:["point"]},references:{bbox:["references_bbox","references_bbox_2d"],point:["references_point"]}};function tA(e){let t=e.order??"xy";if(void 0!==e.normalizedBy&&e.normalizedBy<=0)throw Error(`locate result coordinates normalizedBy must be positive: ${e.normalizedBy}`);return{shape:e.shape,order:t,normalizedBy:e.normalizedBy}}function tl(e,t,r){let n=ts[r][t.shape];if(!e||"object"!=typeof e)return;let i=n.find(t=>void 0!==e[t]);return i?e[i]:void 0}function tc(e){let t,r,n,i,o,a="custom"===e.kind?e:(t=tA(e.coordinates),r=e.parseRawLocateValue??(e=>(function(e,t){if("point"===e.shape){let r=to(t,"point");if(r.length<2)throw Error(`invalid point data: ${JSON.stringify(t)} `);return ta(e,r)}let r=to(t,"bbox");if(4!==r.length)throw Error(`invalid bbox data: ${JSON.stringify(t)} `);return ta(e,r)})(t,e)),n=e.mapLocateResultToPixelBbox??((e,t)=>(function(e,t){var r,n,i,o,a;let{preparedSize:s}=t,{width:A,height:l}=s,c=e.coordinatesMeta,u=c.normalizedBy;!function(e,t,r){let n,i,o=e.coordinatesMeta,a=o.normalizedBy,s=void 0!==(i=(n=e.coordinatesMeta).normalizedBy)?e.coordinates.map(()=>i):"bbox"===n.shape?"yx"===n.order?[r,t,r,t]:[t,r,t,r]:"yx"===n.order?[r,t]:[t,r];if(!e.coordinates.some((e,t)=>{let r=s[t];return"number"!=typeof e||!Number.isFinite(e)||e<0||e>r}))return;let A=void 0!==a?`normalized range [0, ${a}]`:`image size [0, ${t}]x[0, ${r}]`,l=void 0!==a?` normalizedBy=${a}`:"";throw Error(`locate result coordinates ${JSON.stringify(e.coordinates)} exceed ${A}. shape=${o.shape} order=${o.order}${l} limits=${JSON.stringify(s)}`)}(e,A,l);let d=function(e,t){if("yx"!==t)return e;if(4===e.length){let[t,r,n,i]=e;return[r,t,i,n]}let[r,n]=e;return[n,r]}(e.coordinates,c.order),p=4===d.length?d:(r=d[0],n=d[1],i=u??te(A),o=u??te(l),[Math.max(0,r-(a=void 0===u?10:u/100)),Math.max(0,n-a),Math.min(i,r+a),Math.min(o,n+a)]);return void 0===u?p:function(e,t,r,n){let[i,o,a,s]=e;return[tt(i,t,r),tt(o,t,n),tt(a,t,r),tt(s,t,n)]}(p,u,A,l)})(e,t)),i=(e,t)=>{let i=r(e);if(!i||"object"!=typeof i)throw Error(`invalid parsed locate result: expected object, got ${JSON.stringify(i)}`);let o=i.coordinatesMeta,a=(null==o?void 0:o.shape)==="bbox"?4:2*((null==o?void 0:o.shape)==="point");if(!a)throw Error(`invalid parsed locate result: unsupported coordinatesMeta.shape ${JSON.stringify(null==o?void 0:o.shape)}`);let s=i.coordinates;if(!Array.isArray(s)||s.length!==a||!s.every(e=>"number"==typeof e&&Number.isFinite(e)))throw Error(`invalid parsed locate result: ${o.shape} coordinates must be ${a} finite numbers, got ${JSON.stringify(s)}`);return n(i,t)},o=(e,r)=>i(function(e,t){let r=tl(e,t,"primary");if(void 0===r&&null!==e&&"object"==typeof e&&!Array.isArray(e))throw Error("locate response does not contain a recognizable locate result field");return void 0===r?e:r}(e,t),r),{promptSpec:{resultKey:function(e){let{shape:t}=e;return"point"===t?"point":"bbox"}(t),resultValueSchema:function(e){let{shape:t}=e;return"point"===t?"[number, number]":"[number, number, number, number]"}(t),resultValueDescription:function(e){let{shape:t,order:r,normalizedBy:n}=e,i="point"===t?"point":"2d bounding box",o=void 0!==n?`normalized to 0-${n} relative to the screenshot. Do NOT use pixel coordinates or screenshot width/height`:"in actual pixel coordinates relative to the screenshot";return"point"===t?`${i}, should be ${"yx"===r?"[y, x]":"[x, y]"} ${o}.`:`${i}, should be ${"yx"===r?"[ymin, xmin, ymax, xmax]":"[xmin, ymin, xmax, ymax]"} ${o}.`}(t),resultNoun:e9(t),resultNounPlural:e9(t,{plural:!0}),exampleValues:e6.map(e=>(function(e,t){let[r,n,i,o]=t;if("point"===e.shape){let t=Math.round((r+i)/2),a=Math.round((n+o)/2);return"yx"===e.order?[a,t]:[t,a]}return"yx"===e.order?[n,r,o,i]:t})(t,e))},adaptElementLocateResultToPixelBbox:(e,t)=>o(e,t),adaptSectionLocateResultToPixelBboxGroup:(e,r)=>{var n;let a=o(e,r),s=(null==(n=tl(e,t,"references"))?[]:Array.isArray(n)?n:[n]).map(e=>i(e,r));return{target:a,...s.length>0?{references:s}:{}}},adaptPlanningParamToPixelBbox:(e,t)=>o(e,t)});return{promptSpec:a.promptSpec,adaptElementLocateResultToPixelBbox:(e,t)=>tn(a.adaptElementLocateResultToPixelBbox(e,t),e,t),adaptSectionLocateResultToPixelBboxGroup:(e,t)=>{var r;return r=a.adaptSectionLocateResultToPixelBboxGroup(e,t),{target:tn(r.target,e,t),...r.references?{references:r.references.map(r=>tn(r,e,t))}:{}}},adaptPlanningParamToPixelBbox:(e,t)=>tn(a.adaptPlanningParamToPixelBbox(e,t),e,t)}}var tu=r(6448),td=r(6732),tp=r.n(td),th=r(4201),tf=r(5592),tg=r(3078),tm=r.n(tg);let ty=(0,eN.a)("img"),tv=null,tb=!1;async function tw(){if(tv&&tb)return tv;let e=eQ.ht?"browser":eQ.rS?"worker":eQ.$9?"node":"unknown";ty(`Loading photon module in ${e} environment`);try{if(eQ.ht||eQ.rS){let e=await r.e("195").then(r.bind(r,3238));"function"==typeof e.default&&await e.default(),ty("Photon loaded: @silvia-odwyer/photon (browser/worker)"),tv=e}else eQ.$9&&(tv=await Promise.all([r.e("271"),r.e("467")]).then(r.t.bind(r,9570,23)),ty("Photon loaded: @silvia-odwyer/photon-node (node)"));if(!(null==tv?void 0:tv.PhotonImage))throw Error("PhotonImage is not available");if(!tv.PhotonImage.new_from_byteslice&&!tv.PhotonImage.new_from_base64)throw Error("PhotonImage.new_from_byteslice or new_from_base64 is not available");return tb=!0,tv}catch(e){if(ty(`Photon load failed: ${e instanceof Error?e.message:String(e)}`),eQ.ht){console.warn(`[midscene:img] Photon WASM failed to load, falling back to Canvas API. Error: ${e instanceof Error?e.message:String(e)}`);try{let{createCanvasFallbackModule:e}=await r.e("985").then(r.bind(r,4168));return tv=e(),tb=!0,tv}catch(e){ty(`Canvas fallback also failed: ${e instanceof Error?e.message:String(e)}`)}}throw Error(`Failed to load photon module: ${e instanceof Error?e.message:String(e)}`)}}async function tE(){if(!eQ.$9)throw Error("Sharp is only available in Node.js environment");try{return(await Promise.resolve().then(r.t.bind(r,4678,23))).default}catch(e){throw Error(`Failed to load sharp module: ${e instanceof Error?e.message:String(e)}`)}}let tk=(0,eN.a)("img");async function tx(e,t,r){if("string"==typeof t)throw Error("inputData is base64, use resizeImgBase64 instead");tp()(r&&r.width>0&&r.height>0,"newSize must be positive");let n=Date.now();if(tk(`resizeImg start, target size: ${r.width}x${r.height}`),eQ.$9)try{let i=await tE(),{width:o,height:a}=await i(t).metadata();if(!o||!a)throw Error("Undefined width or height from the input image.");if(r.width===o&&r.height===a)return{buffer:t,format:e};let s=await i(t).resize(r.width,r.height).jpeg({quality:90}).toBuffer(),A=Date.now();return tk(`resizeImg done (Sharp), target size: ${r.width}x${r.height}, cost: ${A-n}ms`),{buffer:s,format:"jpeg"}}catch(e){tk("Sharp failed, falling back to Photon:",e)}let{PhotonImage:i,SamplingFilter:o,resize:a}=await tw(),s=new Uint8Array(t),A=i.new_from_byteslice(s),l=A instanceof Promise?await A:A,c=l.get_width(),u=l.get_height();if(!c||!u)throw l.free(),Error("Undefined width or height from the input image.");if(r.width===c&&r.height===u)return l.free(),{buffer:t,format:e};let d=a(l,r.width,r.height,o.CatmullRom),p=d.get_bytes_jpeg(90),h=th.Buffer.from(p);l.free(),d.free();let f=Date.now();return tk(`resizeImg done (Photon), target size: ${r.width}x${r.height}, cost: ${f-n}ms`),{buffer:h,format:"jpeg"}}let tS=/^data:image\/(png|jpe?g);base64,([\s\S]*)$/i,tC=/^[A-Za-z0-9+/=\s]+$/,tj=(e,t)=>`data:image/${e};base64,${t.replace(/\s/g,"")}`;async function tI(e,t){let{body:r,mimeType:n}=tz(e),i=th.Buffer.from(r,"base64"),{buffer:o,format:a}=await tx(n.split("/")[1],i,t);return tj(a,o.toString("base64"))}async function tO(e){let{PhotonImage:t}=await tw(),{body:r}=tz(e),n=t.new_from_base64(r);return n instanceof Promise?await n:n}async function tP(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:28,r=e.get_width(),n=e.get_height(),i=Math.ceil(r/t)*t,o=Math.ceil(n/t)*t;if(i===r&&o===n)return{width:r,height:n,image:e};let{padding_right:a,padding_bottom:s,Rgba:A}=await tw(),l=i-r,c=o-n,u=e;if(l>0&&(u=a(u,l,new A(255,255,255,255))),c>0){let t=new A(255,255,255,255),r=u;u=s(r,c,t),r!==e&&r.free()}return{width:i,height:o,image:u}}async function tR(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:28,r=await tO(e);try{let e=await tP(r,t),n={width:e.width,height:e.height,imageBase64:await tN(e.image)};return e.image!==r&&e.image.free(),n}finally{r.free()}}async function tT(e,t){let{crop:r}=await tw(),n=await tO(e),{left:i,top:o,width:a,height:s}=t,A=r(n,i,o,i+a,o+s);n.free();try{return{width:A.get_width(),height:A.get_height(),imageBase64:await tN(A)}}finally{A.free()}}async function tN(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:90,r=e.get_bytes_jpeg(t),n=th.Buffer.from(r).toString("base64");return`data:image/jpeg;base64,${n}`}let tM=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch image: ${e}`);let r=t.headers.get("content-type");if(!r)throw Error(`Failed to fetch image: ${e}`);tp()(r.startsWith("image/"),`The url ${e} is not a image, because of content-type in header is ${r}.`);let n=th.Buffer.from(await t.arrayBuffer());return`data:${r};base64,${n.toString("base64")}`},tD=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=(0,tf.readFileSync)(e).toString("base64");if(t)return r;let n=tm().extname(e).slice(1);return`data:image/${"svg"===n?"svg+xml":n||"jpg"};base64,${r}`},tB=async(e,t)=>{if("string"!=typeof e)throw Error(`url must be a string, but got ${e} with type ${typeof e}`);if(e.startsWith("data:")){let{mimeType:t,body:r}=tz(e);return`data:${t};base64,${r}`}return e.startsWith("http://")||e.startsWith("https://")?t?await tM(e):e:await tD(e)},tz=e=>{try{let r=";base64,",n=e.indexOf(r);if(-1===n){var t;let r=e.replace(/\s/g,""),n=(t=th.Buffer.from(r,"base64")).length>=8&&137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]&&13===t[4]&&10===t[5]&&26===t[6]&&10===t[7]?"image/png":t.length>=3&&255===t[0]&&216===t[1]&&255===t[2]?"image/jpeg":t.length>=6&&"GIF"===t.subarray(0,3).toString("ascii")?"image/gif":t.length>=12&&"RIFF"===t.subarray(0,4).toString("ascii")&&"WEBP"===t.subarray(8,12).toString("ascii")?"image/webp":t.length>=2&&66===t[0]&&77===t[1]?"image/bmp":void 0;if(!n)throw Error("Invalid base64 string");return{mimeType:n,body:r}}return{mimeType:e.slice(5,n),body:e.slice(n+r.length).replace(/\s/g,"")}}catch(t){throw Error(`parseBase64 fail because intput is not a valid base64 string: ${e}`,{cause:t})}};async function tL(e,t){if(t<=0)throw Error("Scale factor must be positive");let{body:r}=tz(e),n=th.Buffer.from(r,"base64"),i=Date.now();if(tk(`scaleImage start, scale factor: ${t}`),eQ.$9)try{let e=await tE(),r=await e(n).metadata(),o=r.width||0,a=r.height||0;if(0===o||0===a)throw Error("Failed to get image dimensions");let s=Math.round(o*t),A=Math.round(a*t),l=await e(n).resize(s,A,{kernel:"lanczos3",fit:"fill"}).jpeg({quality:90}).toBuffer(),c=Date.now();tk(`scaleImage done (Sharp): ${o}x${a} -> ${s}x${A} (scale=${t}), cost: ${c-i}ms`);let u=`data:image/jpeg;base64,${l.toString("base64")}`;return{width:s,height:A,imageBase64:u}}catch(e){tk("Sharp failed, falling back to Photon:",e)}let{PhotonImage:o,SamplingFilter:a,resize:s}=await tw(),A=new Uint8Array(n),l=o.new_from_byteslice(A),c=l instanceof Promise?await l:l,u=c.get_width(),d=c.get_height();if(!u||!d)throw c.free(),Error("Failed to get image dimensions");let p=Math.round(u*t),h=Math.round(d*t),f=s(c,p,h,a.CatmullRom),g=f.get_bytes_jpeg(90),m=th.Buffer.from(g);c.free(),f.free();let y=Date.now();return tk(`scaleImage done (Photon): ${u}x${d} -> ${p}x${h} (scale=${t}), cost: ${y-i}ms`),{width:p,height:h,imageBase64:`data:image/jpeg;base64,${m.toString("base64")}`}}function tF(e,t){let r=Math.max(e.left-100,0),n=Math.max(e.top-100,0),i={left:r,top:n,width:Math.min(e.left-r+e.width+100,t.width-r),height:Math.min(e.top-n+e.height+100,t.height-n)},o=i.width*i.height;if(o>=16e4)return i;let a=i.left+i.width/2,s=i.top+i.height/2,A=Math.sqrt(16e4/o),l=Math.round(i.width*A),c=Math.round(i.height*A),u=Math.max(Math.round(a-l/2),0),d=Math.max(Math.round(s-c/2),0);return{left:u,top:d,width:Math.min(l,t.width-u),height:Math.min(c,t.height-d)}}function tK(e,t){let r=t.find(t=>t.name===e);if(!r){let r=t.map(e=>e.name).join(", ");throw Error(`Action type '${e}' is not in the current action space. Available actions: ${r||"(none)"}`)}return r}let tU=tu.Ik({left:tu.ai(),top:tu.ai()}),tQ=tu.Ik({width:tu.ai(),height:tu.ai()});tU.and(tQ).and(tu.Ik({zoom:tu.ai().optional()}));let tZ=tu.Ik({images:tu.YO(tu.Ik({name:tu.Yj(),url:tu.Yj()})).optional(),convertHttpImage2Base64:tu.zM().optional()}),tJ=tu.KC([tu.Yj(),tu.Ik({prompt:tu.Yj()}).and(tZ.partial())]),tX=e=>"string"==typeof e?e:e.prompt,tH=e=>{if("string"!=typeof e&&e.images)return{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}},tG=async e=>{var t;let r=[];if(null==e||null==(t=e.images)?void 0:t.length)for(let t of(r.push({role:"user",content:[{type:"text",text:"Next, I will provide all the reference images. These reference images are supporting context only, not the current screenshot being evaluated, unless the task explicitly asks for comparison or matching."}]}),e.images)){let n=await tB(t.url,!!e.convertHttpImage2Base64);r.push({role:"user",content:[{type:"text",text:`this is the reference image named '${t.name}'. It is a reference image, not the current screenshot:`}]}),r.push({role:"user",content:[{type:"image_url",image_url:{url:n,detail:"high"}}]})}return r},tV=tu.Ik({prompt:tJ,deepLocate:tu.zM().optional(),deepThink:tu.zM().optional().describe("@deprecated Use `deepLocate` instead."),cacheable:tu.zM().optional(),xpath:tu.KC([tu.Yj(),tu.zM()]).optional()}).passthrough(),tq=e=>{let t=e.prompt;if(Array.isArray(e.images)&&e.images.length>0){let r=e.images.length;t+=` (with ${r} image${r>1?"s":""})`}return t},tW=(e,t)=>{var r;return e&&(null==(r=e._def)?void 0:r.typeName)==="ZodObject"&&e.shape?Object.keys(e.shape).filter(r=>{var n;let i=e.shape[r];return!!(e=>{var t,r;let n=e;if((null==(t=n._def)?void 0:t.typeName)==="ZodOptional"&&(n=n._def.innerType),(null==(r=n._def)?void 0:r.typeName)==="ZodObject"){let e=n._def.shape();if("midscene_location_field_flag"in e||"prompt"in e&&e.prompt)return!0}return!1})(i)&&(!t||(null==(n=i._def)?void 0:n.typeName)!=="ZodOptional")}):[]},tY=(e,t)=>{if(!(0,eQ.Qd)(e))return{};let r=tW(t),n={...e};for(let e of r){let t=n[e];t&&("string"==typeof t?n[e]=t:"object"==typeof t&&t.prompt&&("string"==typeof t.prompt?n[e]=t.prompt:"object"==typeof t.prompt&&t.prompt.prompt&&(n[e]=tq(t.prompt))))}return n},t_=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD HH:mm:ss",t=arguments.length>1?arguments[1]:void 0,r=void 0!==t?new Date(t):new Date,n=r.getFullYear(),i=String(r.getMonth()+1).padStart(2,"0"),o=String(r.getDate()).padStart(2,"0"),a=String(r.getHours()).padStart(2,"0"),s=String(r.getMinutes()).padStart(2,"0"),A=String(r.getSeconds()).padStart(2,"0"),l=e.replace("YYYY",String(n)).replace("MM",i).replace("DD",o).replace("HH",a).replace("mm",s).replace("ss",A);return`${l} (${e})`};var t$=r(6970),t0=r(2801),t1=r(4201).Buffer,t2={"node:fs"(e){e.exports=t0}},t3={};function t5(e){var t=t3[e];if(void 0!==t)return t.exports;var r=t3[e]={exports:{}};return t2[e](r,r.exports,t5),r.exports}var t7=t5("node:fs");let t4=eQ.NB,t8=eQ.x3;function t6(){return"<\/script>"}function t9(e,t,r,n){let i=(0,t7.openSync)(e,"r"),o=(0,t7.statSync)(e).size,a=t1.alloc(65536),s=0,A="",l=!1,c="";try{for(;s<o;){let e=(0,t7.readSync)(i,a,0,65536,s),o=A+a.toString("utf-8",0,e);s+=e;let u=0;for(;u<o.length;)if(l){let e=o.indexOf(r,u);if(-1!==e){if(c+=o.slice(u,e),n(c))return;l=!1,c="",u=e+r.length}else{c+=o.slice(u,-r.length),A=o.slice(-r.length);break}}else{let e=o.indexOf(t,u);if(-1!==e){l=!0;let i=(c=o.slice(e+t.length)).indexOf(r);if(-1!==i){if(n(c.slice(0,i)))return;l=!1,c="",u=e+t.length+i+r.length}else{A=c.slice(-r.length),c=c.slice(0,-r.length);break}}else{A=o.slice(-t.length);break}}}}finally{(0,t7.closeSync)(i)}}function re(e,t){let r=`<script type="midscene-image" data-id="${t}">`,n=t6(),i=null;return t9(e,r,n,e=>(i=t8(e),!0)),i}function rt(){return n||(n='\n<script>(function(){var p=window.location.pathname;if(p.endsWith("/")||/\\.\\w+$/.test(p))return;var b=document.createElement("base");b.href=p+"/";document.head.insertBefore(b,document.head.firstChild)})()'+t6()+"\n"),n}let rr="data-screenshot-mode";function rn(e,t){let r=t6(),n="";return t&&Object.keys(t).length>0&&(n=" "+Object.entries(t).map(e=>{let[t,r]=e;return t+'="'+encodeURIComponent(r)+'"'}).join(" ")),'<script type="midscene_web_dump"'+n+">"+t4(e)+r}var ri=r(6390),ro=r(4201).Buffer;function ra(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function rs(e){return"object"!=typeof e||null===e?null:"midscene_screenshot_ref"===e.type&&"string"==typeof e.id&&"number"==typeof e.capturedAt&&("inline"===e.storage||"file"===e.storage)&&("image/png"===e.mimeType||"image/jpeg"===e.mimeType)?"file"===e.storage&&"string"!=typeof e.path?null:e:null}function rA(e,t){let r=rs(e),n=(null==r?void 0:r.id)??t.fallbackId,i=(null==r?void 0:r.mimeType)??t.fallbackMimeType;if(!n||!i)throw Error("ScreenshotStore: screenshot id and mimeType are required to resolve screenshot");if((null==r?void 0:r.storage)==="file"){let e;if(!r.path)throw Error(`ScreenshotStore: screenshot ref "${r.id}" missing file path`);let o=(e=r.path,(0,tg.isAbsolute)(e)?e:(0,tg.join)((0,tg.dirname)(t.reportPath),e));if((0,t0.existsSync)(o))return{type:"file",id:n,mimeType:i,filePath:o}}let o=re(t.reportPath,n);if(o)return{type:"data-uri",id:n,mimeType:i,dataUri:o};let a=(0,tg.join)((0,tg.dirname)(t.reportPath),"screenshots",`${n}.${"image/jpeg"===i?"jpeg":"png"}`);if((0,t0.existsSync)(a))return{type:"file",id:n,mimeType:i,filePath:a};throw Error(`ScreenshotStore: cannot resolve screenshot "${n}" from ${t.reportPath}`)}class rl{async persist(e){let t="directory"===this.mode||this.alsoWriteFileCopy?await this.persistToSharedFileIfNeeded(e,{markAsPersisted:"directory"===this.mode}):null;if("inline"===this.mode){if(!this.writeInlineImage)throw Error("ScreenshotStore: writeInlineImage is required in inline mode");return this.writtenInlineIds.has(e.id)||(await this.writeInlineImage(e.id,e.base64),this.writtenInlineIds.add(e.id)),e.markPersistedInline(this.reportPath)}if(!t)throw Error("ScreenshotStore: file persistence is required in directory mode");return t}async persistToSharedFileIfNeeded(e,t){let r=this.screenshotsDir;if(!r)throw Error("ScreenshotStore: screenshotsDir is required when file persistence is enabled");(0,t0.existsSync)(r)||(0,t0.mkdirSync)(r,{recursive:!0});let n=`./screenshots/${e.id}.${e.extension}`,i=(0,tg.join)(r,`${e.id}.${e.extension}`);if(!this.writtenFileIds.has(e.id)){let t=ro.from(e.rawBase64,"base64");await (0,ri.writeFile)(i,t),this.writtenFileIds.add(e.id)}return t.markAsPersisted?e.markPersistedToPath(n,i):e.registerPersistedFileCopy(n,i)}loadBase64(e){let t=rs(e);if(!t)throw Error("ScreenshotStore: invalid screenshot reference");let r=rA(t,{reportPath:this.reportPath});if("data-uri"===r.type)return r.dataUri;let n=(0,t0.readFileSync)(r.filePath);return`data:${r.mimeType};base64,${n.toString("base64")}`}cleanup(){"directory"===this.mode&&this.screenshotsDir&&(0,t0.existsSync)(this.screenshotsDir)&&(0,t0.rmSync)(this.screenshotsDir,{recursive:!0,force:!0}),this.writtenInlineIds.clear(),this.writtenFileIds.clear()}constructor(e){ra(this,"mode",void 0),ra(this,"reportPath",void 0),ra(this,"screenshotsDir",void 0),ra(this,"writeInlineImage",void 0),ra(this,"alsoWriteFileCopy",void 0),ra(this,"writtenInlineIds",new Set),ra(this,"writtenFileIds",new Set),this.mode=e.mode,this.reportPath=e.reportPath,this.screenshotsDir=e.screenshotsDir,this.writeInlineImage=e.writeInlineImage,this.alsoWriteFileCopy=e.alsoWriteFileCopy??e.ensureFileCopy??!1}}function rc(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ru{static create(e,t){return new ru((0,eQ.uR)(),e,t)}get id(){return this._id}get format(){return this._format}get extension(){return"jpeg"===this._format?"jpeg":"png"}get capturedAt(){return this._capturedAt}get base64(){var e,t;if(null!==this._base64)return this._base64;let r=()=>{if(null===this._persistedPath)throw Error(`Screenshot ${this._id}: file recovery path missing`);let e=(0,t$.readFileSync)(this._persistedPath);return`data:image/${this._format};base64,${e.toString("base64")}`},n=()=>{if(null===this._persistedHtmlPath)throw Error(`Screenshot ${this._id}: HTML recovery path missing`);let e=re(this._persistedHtmlPath,this._id);if(e)return e;throw Error(`Screenshot ${this._id}: cannot recover from HTML (id not found in ${this._persistedHtmlPath})`)};if((null==(e=this._serializedRef)?void 0:e.storage)==="file")return r();if((null==(t=this._serializedRef)?void 0:t.storage)==="inline")return n();if(null!==this._persistedPath)return r();if(null!==this._persistedHtmlPath)return n();throw Error(`Screenshot ${this._id}: base64 data released without recovery path`)}hasBase64(){return null!==this._base64}markPersistedInline(e){let t=this.createRef("inline");return this._serializedRef=t,this._persistedHtmlPath=e,this._base64=null,t}registerPersistedFileCopy(e,t){let r=this.createRef("file",e);return this._persistedPath=t,this._base64=null,r}markPersistedToPath(e,t){let r=this.registerPersistedFileCopy(e,t);return this._serializedRef=r,r}toSerializable(){return this._serializedRef??{type:"midscene_screenshot_ref",id:this._id,capturedAt:this._capturedAt,mimeType:"jpeg"===this._format?"image/jpeg":"image/png",storage:"inline"}}static isSerialized(e){return null!==rs(e)}createRef(e,t){let r={type:"midscene_screenshot_ref",id:this._id,capturedAt:this._capturedAt,mimeType:"jpeg"===this._format?"image/jpeg":"image/png",storage:e};return"file"===e?{...r,storage:e,path:t}:r}get rawBase64(){return this.base64.replace(/^data:image\/(png|jpeg|jpg);base64,/,"")}constructor(e,t,r){rc(this,"_id",void 0),rc(this,"_base64",void 0),rc(this,"_format",void 0),rc(this,"_capturedAt",void 0),rc(this,"_serializedRef",null),rc(this,"_persistedPath",null),rc(this,"_persistedHtmlPath",null),this._id=e,this._base64=t,this._format=function(e){return e.startsWith("data:image/jpeg")||e.startsWith("data:image/jpg")?"jpeg":"png"}(t),this._capturedAt=r}}function rd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}i=Symbol.iterator;class rp{resetPendingFeedbackMessageIfExists(){this.pendingFeedbackMessage&&(this.pendingFeedbackMessage="")}append(e){this.messages.push(e)}seed(e){this.reset(),e.forEach(e=>{this.append(e)})}reset(){this.messages.length=0,this.memories.length=0,this.subGoals.length=0,this.historicalLogs.length=0,this.pendingFeedbackMessage=""}snapshot(e){if(void 0===e)return[...this.messages];let t=structuredClone(this.messages),r=0;for(let n=t.length-1;n>=0;n--){let i=t[n].content;if(Array.isArray(i))for(let t=0;t<i.length;t++)"image_url"===i[t].type&&++r>e&&(i[t]={type:"text",text:"(image ignored due to size optimization)"})}return t}get length(){return this.messages.length}[i](){return this.messages[Symbol.iterator]()}toJSON(){return this.snapshot()}setSubGoals(e){this.subGoals=e.map(e=>({...e})),this.markFirstPendingAsRunning()}mergeSubGoals(e){if(0===this.subGoals.length)return void this.setSubGoals(e);let t=new Map(this.subGoals.map(e=>[e.index,e])),r=e.map(e=>{let r=t.get(e.index),n=e.description.trim().length>0;return r||n?{...e,description:n||!r?e.description:r.description}:null}).filter(e=>null!==e);0!==r.length&&this.setSubGoals(r)}updateSubGoal(e,t){let r=this.subGoals.find(t=>t.index===e);if(!r)return!1;let n=!1;return void 0!==t.status&&t.status!==r.status&&(r.status=t.status,n=!0),void 0!==t.description&&t.description!==r.description&&(r.description=t.description,n=!0),n&&(r.logs=[]),!0}markFirstPendingAsRunning(){let e=this.subGoals.find(e=>"pending"===e.status);e&&(e.status="running",e.logs=[])}markSubGoalFinished(e){let t=this.updateSubGoal(e,{status:"finished"});return t&&this.markFirstPendingAsRunning(),t}markAllSubGoalsFinished(){for(let e of this.subGoals)"finished"!==e.status&&(e.logs=[]),e.status="finished"}appendSubGoalLog(e){if(!e)return;let t=this.subGoals.find(e=>"running"===e.status);t&&(t.logs||(t.logs=[]),t.logs.push(e))}subGoalsToText(){if(0===this.subGoals.length)return"";let e=this.subGoals.map(e=>`${e.index}. ${e.description} (${e.status})`),t=this.subGoals.find(e=>"running"===e.status)||this.subGoals.find(e=>"pending"===e.status),r="";if(t&&(r=`
|
|
4
4
|
Current sub-goal is: ${t.description}`,t.logs&&t.logs.length>0)){let e=t.logs.map(e=>`- ${e}`).join("\n");r+=`
|
|
5
5
|
Actions performed for current sub-goal:
|
|
@@ -925,31 +925,31 @@ ${null==(n=this.latestErrorTask())?void 0:n.errorStack}`);let i=[];for(let t of(
|
|
|
925
925
|
${n}`:t,this,e,{cause:null==e?void 0:e.error}),await this.emitSnapshotChange(r)}if(r)throw r;if(this.tasks.length){let e=Math.min(i,this.tasks.length-1),{thought:t,output:r}=this.tasks[e];return{thought:t,output:r}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;for(let e=this.tasks.length-1;e>=0;e--)if("failed"===this.tasks[e].status)return this.tasks[e];return null}dump(){return new n$({id:this.id,logTime:this.executionLogTime,name:this.name,tasks:this.tasks})}async appendErrorPlan(e){return await this.appendAndFlush({type:"Action Space",subType:"Error",param:{thought:e},thought:e,executor:async()=>{throw Error(e||"error without thought")}}),{output:void 0,runner:this}}constructor(e,t,r){iZ(this,"id",void 0),iZ(this,"name",void 0),iZ(this,"tasks",void 0),iZ(this,"status",void 0),iZ(this,"onTaskStart",void 0),iZ(this,"uiContextBuilder",void 0),iZ(this,"onSnapshotChange",void 0),iZ(this,"onTaskEvent",void 0),iZ(this,"executionLogTime",void 0),iZ(this,"lastUiContext",void 0),this.id=(0,eQ.uR)(),this.status=(null==r?void 0:r.tasks)&&r.tasks.length>0?"pending":"init",this.name=e,this.tasks=((null==r?void 0:r.tasks)||[]).map(e=>this.markTaskAsPending(e)),this.onTaskStart=null==r?void 0:r.onTaskStart,this.uiContextBuilder=t,this.onSnapshotChange=null==r?void 0:r.onSnapshotChange,this.onTaskEvent=null==r?void 0:r.onTaskEvent,this.executionLogTime=Date.now()}}class iH extends Error{constructor(e,t,r,n){super(e,n),iZ(this,"runner",void 0),iZ(this,"errorTask",void 0),this.runner=t,this.errorTask=r}}var iG=r(3009);r(5207);var iV=r(1344),iq=r(4201).Buffer,iW=r(5409);let iY=new Map,i_=new Map;function i$(){return"REPLACE_ME_WITH_REPORT_HTML"}function i0(e,t){let r=e.lastIndexOf("</html>");return -1===r?e+t:`${e.slice(0,r)}${t}
|
|
926
926
|
${e.slice(r)}`}function i1(e,t,r){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i="";if(n&&!(i=i$()))return console.warn("reportTpl is not set, will not write report"),"";let o=t&&!eQ.ht,a="",s="<\/script>";if("string"==typeof e)a='<script type="midscene_web_dump" type="application/json" data-group-id="'+encodeURIComponent((()=>{if(!t||!r)return(0,eQ.uR)();let e=i_.get(t);if(e)return e;let n=(0,eQ.uR)();return i_.set(t,n),n})())+'">\n'+(0,eQ.NB)(e)+"\n"+s;else{let{dumpString:t,attributes:r}=e;a='<script type="midscene_web_dump" type="application/json" '+Object.entries(r||{}).filter(e=>void 0!==e[1]&&null!==e[1]).map(e=>{let[t,r]=e;return`${t}="${encodeURIComponent(r)}"`}).join(" ")+">\n"+(0,eQ.NB)(t)+"\n"+s}return o?(r?(iY.get(t)||((0,t$.writeFileSync)(t,i,{flag:"w"}),iY.set(t,!0)),!function(e,t){let r="</html>",n=(0,t$.statSync)(e),i=Math.min(n.size,4096),o=Math.max(0,n.size-i),a=iq.alloc(n.size-o),s=(0,t$.openSync)(e,"r");(0,t$.readSync)(s,a,0,a.length,o),(0,t$.closeSync)(s);let A=a.toString("utf8"),l=A.lastIndexOf(r);if(-1===l)throw Error(`No </html> found in file:${e}`);let c=A.slice(0,l),u=o+iq.byteLength(c,"utf8");(0,t$.truncateSync)(e,u),(0,t$.appendFileSync)(e,`${t}
|
|
927
927
|
${r}
|
|
928
|
-
`)}(t,a)):(0,t$.writeFileSync)(t,i0(i,a),{flag:"w"}),t):i0(i,a)}async function i2(e){return new Promise(t=>setTimeout(t,e))}function i3(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];iW.env[eD.n0]&&console.log("[Midscene]",...t)}let
|
|
929
|
-
${rn(n,this.getDumpScriptAttributes())}`)}async writeDirectoryExecution(e,t){let r=(0,tg.dirname)(this.reportPath);for(let t of((0,t$.existsSync)(r)||(0,t$.mkdirSync)(r,{recursive:!0}),e.collectScreenshots()))await this.screenshotStore.persist(t);let n=t.serialize();this.initialized||(await (0,
|
|
930
|
-
${rn(n,this.getDumpScriptAttributes())}`)}getExecutionLogKey(e){if(!e.id)throw Error("ReportGenerator: execution.id is required for persisting execution dumps");return`id:${e.id}`}async persistExecutionDumpToFile(e,t){let r=(0,tg.dirname)(this.reportPath);(0,t$.existsSync)(r)||(0,t$.mkdirSync)(r,{recursive:!0});let n=this.getExecutionLogKey(e),i=this.executionLogFileIndexByExecutionKey.get(n);i||(this.executionLogIndex+=1,i=this.executionLogIndex,this.executionLogFileIndexByExecutionKey.set(n,i));let o=`${i}.execution.json`,a=(0,tg.join)((0,tg.dirname)(this.reportPath),o);await (0,
|
|
931
|
-
${(r=t6(),'<script type="midscene-image" data-id="'+e+'">'+t4(t)+r)}`)},alsoWriteFileCopy:this.shouldPersistExecutionDump}),e.reuseExistingReport&&this.hydrateStateFromExistingReport()}}var
|
|
928
|
+
`)}(t,a)):(0,t$.writeFileSync)(t,i0(i,a),{flag:"w"}),t):i0(i,a)}async function i2(e){return new Promise(t=>setTimeout(t,e))}function i3(){return"1.10.2-beta-20260706032158.0"}function i5(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];iW.env[eD.n0]&&console.log("[Midscene]",...t)}let i7=null,i4="";async function i8(e){let{testUrl:t,serverUrl:r}=e;if(!r)return;let{repoUrl:n,userEmail:i}=await function(){if(i7)return i7;let e=(0,iV.promisify)(iG.execFile);return i7=Promise.all([e("git",["config","--get","remote.origin.url"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>""),e("git",["config","--get","user.email"]).then(e=>{let{stdout:t}=e;return t.trim()},()=>"")]).then(e=>{let[t,r]=e;return{repoUrl:t,userEmail:r}})}();(n?n!==i4:t)&&(i5("Uploading test info to server",{serverUrl:r,repoUrl:n,testUrl:t,userEmail:i}),fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:n,test_url:t,user_email:i})}).then(e=>e.json()).then(e=>{i5("Successfully uploaded test info to server:",e)}).catch(e=>i5("Failed to upload test info to server:",e)),i4=n)}var i6=r(3147);function i9(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let oe={onExecutionUpdate:()=>{},flush:async()=>{},finalize:async()=>void 0,getReportPath:()=>void 0};function ot(e){if(!1===e.generateReport&&!0===e.persistExecutionDump)throw Error("persistExecutionDump cannot be true when generateReport is false")}class or{static create(e,t){var r;if(ot(t),function(e){if(!(null==e?void 0:e.trim()))throw Error("reportFileName must be a non-empty string");if(/[\\/]/.test(e))throw Error("reportFileName must not contain path separators (`/` or `\\\\`)");if(/[:*?"<>|]/.test(e))throw Error('reportFileName contains illegal filename characters: : * ? " < > |')}(e),!1===t.generateReport||eQ.ht)return oe;let n=(0,iE.ZH)("report"),i=(0,tg.join)(n,e);return new or({reportPath:"html-and-external-assets"===t.outputFormat?(0,tg.join)(i,"index.html"):(0,tg.join)(n,(r=e).endsWith(".html")?r:`${r}.html`),screenshotMode:"html-and-external-assets"===t.outputFormat?"directory":"inline",persistExecutionDump:t.persistExecutionDump,autoPrint:t.autoPrintReportMsg,reuseExistingReport:t.reuseExistingReport})}onExecutionUpdate(e,t,r){this.lastExecution=e,this.lastReportMeta=t,this.mergeReportAttributes(r),this.writeQueue=this.writeQueue.then(async()=>{this.destroyed||await this.doWriteExecution(e,t)})}async flush(){await this.writeQueue}async finalize(){if(this.lastExecution&&this.lastReportMeta&&this.onExecutionUpdate(this.lastExecution,this.lastReportMeta),await this.flush(),this.destroyed=!0,this.initialized)return this.reportPath}getReportPath(){return this.reportPath}printReportPath(){this.autoPrint&&this.reportPath&&(eY.getEnvConfigInBoolean(eD.d8)||("directory"===this.screenshotMode?(0,eQ.gQ)(`Midscene - report file updated: npx serve ${(0,tg.dirname)(this.reportPath)}`):(0,eQ.gQ)(`Midscene - report file updated: ${this.reportPath}`)))}async doWriteExecution(e,t){let r=this.wrapAsReportDump(e,t);"inline"===this.screenshotMode?await this.writeInlineExecution(e,r):await this.writeDirectoryExecution(e,r),this.shouldPersistExecutionDump&&await this.persistExecutionDumpToFile(e,r),this.firstWriteDone||(this.firstWriteDone=!0,this.printReportPath())}mergeReportAttributes(e){if(e)for(let[t,r]of Object.entries(e))null!=r&&(this.reportAttributes[t]=String(r))}hydrateStateFromExistingReport(){if(!(0,t$.existsSync)(this.reportPath)||(this.initialized=!0,!this.shouldPersistExecutionDump))return;let e=(0,tg.dirname)(this.reportPath),t=(0,t$.readdirSync)(e).map(e=>{var t;return null==(t=/^(\d+)\.execution\.json$/.exec(e))?void 0:t[1]}).filter(e=>!!e).map(e=>Number.parseInt(e,10)).filter(e=>Number.isFinite(e));t.length>0&&(this.executionLogIndex=Math.max(...t))}getDumpScriptAttributes(){return{"data-group-id":this.reportStreamId,[rr]:this.screenshotMode,...this.reportAttributes}}wrapAsReportDump(e,t){return new n0({sdkVersion:t.sdkVersion,groupName:t.groupName,groupDescription:t.groupDescription,modelBriefs:t.modelBriefs,deviceType:t.deviceType,executions:[e]})}async writeInlineExecution(e,t){let r=(0,tg.dirname)(this.reportPath);for(let t of((0,t$.existsSync)(r)||(0,t$.mkdirSync)(r,{recursive:!0}),this.initialized||(await (0,i6.writeFile)(this.reportPath,i$()),this.initialized=!0),e.collectScreenshots()))await this.screenshotStore.persist(t);let n=t.serialize();await (0,i6.appendFile)(this.reportPath,`
|
|
929
|
+
${rn(n,this.getDumpScriptAttributes())}`)}async writeDirectoryExecution(e,t){let r=(0,tg.dirname)(this.reportPath);for(let t of((0,t$.existsSync)(r)||(0,t$.mkdirSync)(r,{recursive:!0}),e.collectScreenshots()))await this.screenshotStore.persist(t);let n=t.serialize();this.initialized||(await (0,i6.writeFile)(this.reportPath,`${i$()}${rt()}`),this.initialized=!0),await (0,i6.appendFile)(this.reportPath,`
|
|
930
|
+
${rn(n,this.getDumpScriptAttributes())}`)}getExecutionLogKey(e){if(!e.id)throw Error("ReportGenerator: execution.id is required for persisting execution dumps");return`id:${e.id}`}async persistExecutionDumpToFile(e,t){let r=(0,tg.dirname)(this.reportPath);(0,t$.existsSync)(r)||(0,t$.mkdirSync)(r,{recursive:!0});let n=this.getExecutionLogKey(e),i=this.executionLogFileIndexByExecutionKey.get(n);i||(this.executionLogIndex+=1,i=this.executionLogIndex,this.executionLogFileIndexByExecutionKey.set(n,i));let o=`${i}.execution.json`,a=(0,tg.join)((0,tg.dirname)(this.reportPath),o);await (0,i6.writeFile)(a,t.serialize(2),"utf-8")}constructor(e){i9(this,"reportPath",void 0),i9(this,"screenshotMode",void 0),i9(this,"shouldPersistExecutionDump",void 0),i9(this,"autoPrint",void 0),i9(this,"firstWriteDone",!1),i9(this,"executionLogIndex",0),i9(this,"executionLogFileIndexByExecutionKey",new Map),i9(this,"reportStreamId",void 0),i9(this,"screenshotStore",void 0),i9(this,"initialized",!1),i9(this,"lastExecution",void 0),i9(this,"lastReportMeta",void 0),i9(this,"reportAttributes",{}),i9(this,"writeQueue",Promise.resolve()),i9(this,"destroyed",!1),this.reportPath=e.reportPath,this.screenshotMode=e.screenshotMode,this.shouldPersistExecutionDump=e.persistExecutionDump??!1,this.autoPrint=e.autoPrint??!0,this.reportStreamId=(0,eQ.uR)(),this.screenshotStore=new rl({mode:"inline"===this.screenshotMode?"inline":"directory",reportPath:this.reportPath,screenshotsDir:(0,tg.join)((0,tg.dirname)(this.reportPath),"screenshots"),writeInlineImage:async(e,t)=>{let r;await (0,i6.appendFile)(this.reportPath,`
|
|
931
|
+
${(r=t6(),'<script type="midscene-image" data-id="'+e+'">'+t4(t)+r)}`)},alsoWriteFileCopy:this.shouldPersistExecutionDump}),e.reuseExistingReport&&this.hydrateStateFromExistingReport()}}var on=r(8973);tu.Ik({locate:tV.describe("The element to be tapped")}),tu.Ik({locate:tV.describe("The element to be right clicked")}),tu.Ik({locate:tV.describe("The element to be double clicked")}),tu.Ik({locate:tV.describe("The element to be hovered")}),tu.Ik({value:tu.KC([tu.Yj(),tu.ai()]).transform(e=>String(e)).describe("The text to input. Provide the final content for replace mode, only the inserted characters for typeOnly mode, or an empty string when using clear mode to remove existing text."),locate:tV.describe("the position of the placeholder or text content in the target input field. If there is no content, locate the center of the input field.").optional(),mode:tu.k5(["replace","clear","typeOnly"]).default("replace").describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first, and should be set explicitly for incremental edits after moving the cursor; "clear" - clear the field without inputting new text.'),autoDismissKeyboard:tu.zM().optional().describe("If true, the keyboard will be dismissed after the input is completed. Do not set it unless the user asks you to do so."),keyboardTypeDelay:tu.ai().optional().describe("Delay in milliseconds between keystrokes when typing. Passed through from device/user configuration. Do not set it unless the user asks you to do so.")}),tu.Ik({locate:tV.describe("The element to be clicked before pressing the key").optional(),keyName:tu.Yj().describe("The key to be pressed. Use '+' for key combinations, e.g., 'Control+A', 'Shift+Enter'")}),tu.Ik({scrollType:tu.k5(["singleAction","scrollToBottom","scrollToTop","scrollToRight","scrollToLeft"]).default("singleAction").describe('The scroll behavior: "singleAction" for a single scroll action, "scrollToBottom" for scrolling all the way to the bottom by rapidly scrolling 5-10 times (skipping intermediate content until reaching the bottom), "scrollToTop" for scrolling all the way to the top by rapidly scrolling 5-10 times (skipping intermediate content until reaching the top), "scrollToRight" for scrolling all the way to the right by rapidly scrolling multiple times, "scrollToLeft" for scrolling all the way to the left by rapidly scrolling multiple times'),direction:tu.k5(["down","up","right","left"]).default("down").describe('The direction to scroll. Only effective when scrollType is "singleAction".'),distance:tu.ai().nullable().optional().describe("The distance in pixels to scroll"),locate:tV.optional().describe('Describe the target element to be scrolled on, like "the table" or "the list" or "the content area" or "the scrollable area". Do NOT provide a general intent like "scroll to find some element"')}),tu.Ik({from:tV.describe("The position to be dragged"),to:tV.describe("The position to be dropped")}),tu.Ik({locate:tV.describe("The element to be long pressed"),duration:tu.ai().optional().describe("Long press duration in milliseconds")}),tu.Ik({start:tV.optional().describe("Starting point of the swipe gesture, if not specified, the center of the page will be used"),direction:tu.k5(["up","down","left","right"]).optional().describe("The direction to swipe (required when using distance). The direction means the direction of the finger swipe."),distance:tu.ai().optional().describe("The distance in pixels to swipe (mutually exclusive with end)"),end:tV.optional().describe("Ending point of the swipe gesture (mutually exclusive with distance)"),duration:tu.ai().default(300).describe("Duration of the swipe gesture in milliseconds"),repeat:tu.ai().optional().describe("The number of times to repeat the swipe gesture. 1 for default, 0 for infinite (e.g. endless swipe until the end of the page)")}),tu.Ik({locate:tV.describe("The input field to be cleared").optional()}),tu.Ik({direction:tu.k5(["left","right"]).describe("The direction to move the cursor"),times:tu.ai().int().min(1).default(1).describe("The number of times to move the cursor in the specified direction")}),tu.Ik({locate:tV.optional().describe("The element to pinch on. If not specified, the center of the screen will be used"),direction:tu.k5(["in","out"]).describe('Pinch direction. "in" = pinch fingers together (zoom out / shrink), "out" = spread fingers apart (zoom in / enlarge).'),distance:tu.ai().positive().optional().describe("How far each finger moves in pixels. Defaults to a quarter of the shorter screen dimension."),duration:tu.ai().default(500).optional().describe("Duration of the pinch gesture in milliseconds")});let oi=tu.Ik({timeMs:tu.ai().default(1e3).optional().describe("Sleep duration in milliseconds, defaults to 1000ms (1 second)")}),oo=["read-only","read-write","write-only"],oa=oo.map(e=>`"${e}"`).join(", ");function os(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let oA=(0,eN.a)("agent-progress-bus",{console:!0});class ol{subscribe(e){return this.listeners.push(e),()=>{this.unsubscribe(e)}}unsubscribe(e){let t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}clear(){this.listeners=[]}get listenerCount(){return this.listeners.length}constructor(){os(this,"listeners",[]),os(this,"sequence",0),os(this,"publish",async(e,t,r)=>{let n={scope:e,phase:t,sequence:++this.sequence,data:r};for(let e of this.listeners)try{await e(n)}catch(e){oA("error in progress listener",e)}})}}function oc(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function ou(e){return null==e?e:"string"==typeof e?e.length>180?`${e.slice(0,177)}...`:e:"number"==typeof e||"boolean"==typeof e?e:Array.isArray(e)?e.slice(0,5).map(ou):oc(e)&&"string"==typeof e.prompt?ou(e.prompt):oc(e)?Object.fromEntries(Object.entries(e).slice(0,6).map(e=>{let[t,r]=e;return[t,ou(r)]})):String(e)}function od(e){return e instanceof Error?e.message:String(e)}function op(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function oh(e,t){let r=e[t];if(!Array.isArray(r)||r.length<4)return;let n=op(r[0]),i=op(r[1]),o=op(r[2]),a=op(r[3]);if(void 0!==n&&void 0!==i&&void 0!==o&&void 0!==a)return[n,i,o,a]}function of(e){return[Math.floor((e[0]+e[2])/2),Math.floor((e[1]+e[3])/2)]}function og(e){let t=e.center;if(Array.isArray(t)&&t.length>=2){let e=op(t[0]),r=op(t[1]);if(void 0!==e&&void 0!==r)return[e,r]}let r=e.point;if(Array.isArray(r)&&r.length>=2){let e=op(r[0]),t=op(r[1]);if(void 0!==e&&void 0!==t)return[e,t]}let n=oh(e,"locatedPixelBbox");if(n)return of(n);let i=oh(e,"bbox");if(i)return of(i)}function om(e){let t=oh(e,"locatedPixelBbox");if(t)return t;let r=oh(e,"bbox");if(r)return r;if(!oc(e.rect))return;let n=op(e.rect.left),i=op(e.rect.top),o=op(e.rect.width),a=op(e.rect.height);if(void 0!==n&&void 0!==i&&void 0!==o&&void 0!==a)return[n,i,n+o,i+a]}function oy(e){return!!oc(e)&&("center"in e||"rect"in e||"point"in e||"bbox"in e||"prompt"in e||"description"in e)}let ov=["locate","from","to","start","end"],ob=(e,t)=>{let r=null==t?void 0:t.trim();if(!r)return e;let n="string"==typeof e?e:e.prompt,i=`Context for this request:
|
|
932
932
|
${r}
|
|
933
933
|
|
|
934
|
-
${n}`;return"string"==typeof e?i:{...e,prompt:i}},ob=/^(Given|When|Then|And|But)\s+(.+)$/i,ow=/^(Scenario):\s*(.*)$/i,oE=/^(Feature|Background|Scenario Outline|Scenario Template|Examples|Rule):/i,ok=e=>{let t=e.toLowerCase();return"given"===t?"Given":"when"===t?"When":"then"===t?"Then":"and"===t?"And":"But"},ox=e=>{if(null==e?void 0:e.aborted)throw"function"==typeof e.throwIfAborted&&e.throwIfAborted(),Error(`runGherkinScenario aborted: ${e.reason||"signal already aborted"}`)},oS=e=>"Given"===e.effectiveKeyword?`Set up this precondition: ${e.text}`:"When"===e.effectiveKeyword?`Perform this user action: ${e.text}`:`Verify that ${e.text}`,oC=(e,t)=>{let r=e.keyword===e.effectiveKeyword?e.keyword:`${e.keyword} as ${e.effectiveKeyword}`;return"Given"===e.effectiveKeyword?`setting up the precondition (${r} -> ${t})`:"When"===e.effectiveKeyword?`performing the user action (${r} -> ${t})`:`verifying the expected result (${r} -> ${t})`},oj=e=>e instanceof Error&&e.message?` Original error: ${e.message}`:"",oI=async(e,t,r)=>{let n=(e=>{let t,r,n=e.split(/\r?\n/),i=[],o=[],a=0,s="prelude";for(let[e,r]of n.entries()){let n=e+1,A=r.trim();if(!A||A.startsWith("#")||A.startsWith("@"))continue;if('"""'===A||"'''"===A)throw Error(`runGherkinScenario does not support doc strings; found one at line ${n}.`);if(A.startsWith("|"))throw Error(`runGherkinScenario does not support data tables; found one at line ${n}.`);if(oE.test(A))throw Error(`runGherkinScenario does not support "${A}" at line ${n}.`);let l=A.match(ow);if(l){a+=1,t=l[2].trim()||void 0,s="scenario";continue}let c=A.match(ob);if(c){let e={keyword:ok(c[1]),text:c[2].trim(),lineNumber:n};"scenario"===s?i.push(e):o.push(e);continue}throw Error(`runGherkinScenario does not support content at line ${n}: ${A}`)}if(a>1)throw Error(`runGherkinScenario expects exactly one Scenario, but found ${a}.`);if(1===a&&o.length>0)throw Error("runGherkinScenario cannot mix anonymous steps with a Scenario block.");let A=1===a?i:o;if(0===A.length)throw Error("runGherkinScenario requires at least one Gherkin step.");return{scenario:t,steps:A.map(e=>{let t,n="Given"===(t=e.keyword)||"When"===t||"Then"===t?e.keyword:r;if(!n)throw Error(`runGherkinScenario cannot resolve "${e.keyword}" at line ${e.lineNumber}; use Given, When, or Then before ${e.keyword}.`);return r=n,{...e,effectiveKeyword:n}})}})(t),i={...r,cacheable:!1};for(let t of n.steps){ox(null==r?void 0:r.abortSignal);let n="Then"===t.effectiveKeyword?"aiAssert":"aiAct",o=oS(t);try{"aiAct"===n?await e.aiAct(o,i):(null==r?void 0:r.context)||(null==r?void 0:r.abortSignal)?await e.aiAssert(o,void 0,{context:r.context,abortSignal:r.abortSignal}):await e.aiAssert(o)}catch(e){throw Error(`runGherkinScenario failed while ${oC(t,n)} at line ${t.lineNumber}: ${t.keyword} ${t.text}.${oj(e)}`,{cause:e})}}},oO=e=>e?` in ${e}`:"",oP=async(e,t)=>{let n,i,{fromMarkdown:o}=await r(5902)("mdast-util-from-markdown"),{toMarkdown:a}=await r(5845)("mdast-util-to-markdown"),s=o(e),A=(n=[],(i=e=>{Array.isArray(e.children)&&(e.children=e.children.map(e=>{if("imageReference"===e.type){let r=e.identifier||e.label||"unknown";throw Error(`runMarkdown does not support reference-style image "${r}"${oO(t)}. Use direct image syntax instead.`)}if("image"===e.type){var r;let i,o=(i=n.length,`参考图片-${String(i+1).padStart(3,"0")}`);if(!e.url)throw Error(`Markdown image ${o}${oO(t)} is missing a URL.`);if(n.push({name:o,url:(r=e.url,!t||/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(r)||(0,tg.isAbsolute)(r)?r:(0,tg.resolve)((0,tg.dirname)(t),r))}),n.length>20)throw Error(`runMarkdown supports at most 20 images, but found ${n.length} images${oO(t)}.`);return{type:"text",value:o}}return i(e),e}))})(s),n);return 0===A.length?{prompt:e,imageCount:0}:{prompt:{prompt:a(s),images:A,convertHttpImage2Base64:!0},imageCount:A.length}};var oR=r(9140),oT=r(8586),oN=r.n(oT);async function oM(e){let t,{PhotonImage:r}=await tw(),n=e.replace(/^data:image\/\w+;base64,/,"").replace(/\s/g,"");tp()(n,"Invalid image: empty base64 data"),tp()(/^[A-Za-z0-9+/]+={0,2}$/.test(n)&&n.length%4!=1,"Invalid image: malformed base64 data");let i=th.Buffer.from(n,"base64");tp()(function(e){return!!e&&!(e.length<8)&&137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]&&13===e[4]&&10===e[5]&&26===e[6]&&10===e[7]||!!e&&!(e.length<3)&&255===e[0]&&216===e[1]&&255===e[2]}(i),"Invalid image: unsupported format");try{t=r.new_from_base64(n)}catch(e){throw Error(`Invalid image: failed to decode base64 data (${e instanceof Error?e.message:String(e)})`,{cause:e})}let o=t instanceof Promise?await t:t,a=o.get_width(),s=o.get_height();return o.free(),tp()(a&&s,"Invalid image: cannot get width or height"),{width:a,height:s}}var oD=r(9300),oB=r.n(oD),oz=r(5409);(0,eN.a)("agent");let oL={once:"singleAction",untilBottom:"scrollToBottom",untilTop:"scrollToTop",untilRight:"scrollToRight",untilLeft:"scrollToLeft"};async function oF(e,t){var r;let n=(0,eN.a)("commonContextParser");(0,eQ.vA)(e,"interfaceInstance is required"),n("Getting interface description");let i=(null==(r=e.describe)?void 0:r.call(e))||"";n("Interface description end"),n("Uploading test info to server"),i4({testUrl:i,serverUrl:t.uploadServerUrl}),n("UploadTestInfoToServer end"),n("will get size");let o=await e.size(),{width:a,height:s}=o;if(o.dpr&&console.warn("Warning: return value of interface.size() include a dpr property, which is not expected and ignored. "),!Number.isFinite(a)||!Number.isFinite(s))throw Error(`Invalid interface size: width and height must be finite numbers. Received width: ${a}, height: ${s}`);if(a<=0||s<=0)throw Error(`Invalid interface size: width and height must be positive numbers. Received width: ${a}, height: ${s}`);n(`size: ${a}x${s}`);let A=await e.screenshotBase64(),l=Date.now();(0,eQ.vA)(A,"screenshotBase64 is required"),n("will get screenshot dimensions");let{width:c,height:u}=await oM(A);if(!Number.isFinite(c)||!Number.isFinite(u))throw Error(`Invalid screenshot dimensions: width and height must be finite numbers. Received width: ${c}, height: ${u}`);if(c<=0||u<=0)throw Error(`Invalid screenshot dimensions: width and height must be positive numbers. Received width: ${c}, height: ${u}`);n("screenshot dimensions",c,"x",u);let d=a<s,p=c<u,h=a;d!==p&&(n(`Orientation mismatch detected: logical size ${a}x${s} (${d?"portrait":"landscape"}) vs screenshot ${c}x${u} (${p?"portrait":"landscape"}). Swapping logical dimensions.`),h=s);let f=t.screenshotShrinkFactor??1;if(!Number.isFinite(f)||f<1)throw Error(`Invalid screenshotShrinkFactor: must be a finite number >= 1. Received: ${f}`);let g=c/h;n("calculated dpr:",g);let m=g/f;if(n("shrunkShotToLogicalRatio",m),1!==f){let e=Math.round(c/f),t=Math.round(u/f);n(`Applying screenshot shrink factor: ${f} (physical: ${c}x${u} -> target: ${e}x${t})`);let r=await tI(A,{width:e,height:t});return{shotSize:{width:e,height:t},deprecatedDpr:g,screenshot:ru.create(r,l),shrunkShotToLogicalRatio:m}}return{shotSize:{width:c,height:u},deprecatedDpr:g,screenshot:ru.create(A,l),shrunkShotToLogicalRatio:m}}function oK(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web",t=eY.getEnvConfigValue(eD.ho),r=oB()().format("YYYY-MM-DD_HH-mm-ss"),n=(0,eQ.uR)().substring(0,8);return`${t||e}-${r}-${n}`}function oU(e){var t;return Array.isArray(t=e.locatedPixelBbox)&&4===t.length&&t.every(e=>"number"==typeof e&&Number.isFinite(e))}async function oQ(e,t,r,n){var i;if(t){if(!1===n)return void oH("cache disabled for prompt: %s",r);if(null==(i=e.taskCache)?void 0:i.isCacheResultUsed){if(!e.interfaceInstance.rectMatchesCacheFeature)return void oH("interface does not implement rectMatchesCacheFeature, skip cache");try{let n=await e.interfaceInstance.rectMatchesCacheFeature(t),i={center:[Math.round(n.left+n.width/2),Math.round(n.top+n.height/2)],rect:n,description:"string"==typeof r?r:r.prompt||""};return oH("cache hit, prompt: %s",r),i}catch(e){oH("rectMatchesCacheFeature error: %s",e);return}}}}let oZ=e=>"string"==typeof e?{textPrompt:e,multimodalPrompt:void 0}:{textPrompt:e.prompt,multimodalPrompt:e.images?{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}:void 0};var oJ=r(4201).Buffer;function oX(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let oH=(0,eN.a)("cache"),oG=(0,eN.a)("cache",{console:!0}),oV=".cache.yaml";class oq{matchCache(e,t){if(!this.isCacheResultUsed)return;let r=this.promptKey(e);for(let n=0;n<this.cacheOriginalLength;n++){let i=this.cache.caches[n],o=`${t}:${r}:${n}`;if(i.type===t&&(0,iV.isDeepStrictEqual)(i.prompt,e)&&!this.matchedCacheIndices.has(o)){"locate"===i.type&&(!i.cache&&Array.isArray(i.xpaths)&&(i.cache={xpaths:i.xpaths}),"xpaths"in i&&(i.xpaths=void 0)),this.matchedCacheIndices.add(o);let a=`${t}:${r}`,s=this.consumedCacheIndices.get(a)??[];return s.push(n),this.consumedCacheIndices.set(a,s),oH("cache found and marked as used, type: %s, prompt: %s, index: %d",t,e,n),{cacheContent:i,cacheUsable:!0,updateFn:r=>{(oH("will call updateFn to update cache, type: %s, prompt: %s, index: %d",t,e,n),r(i),this.readOnlyMode)?oH("read-only mode, cache updated in memory but not flushed to file"):(oH("cache updated, will flush to file, type: %s, prompt: %s, index: %d",t,e,n),this.flushCacheToFile())}}}}oH("no unused cache found, type: %s, prompt: %s",t,e)}matchPlanCache(e){let t=this.matchCache(e,"plan");if(!t)return;let r=t.cacheContent.yamlWorkflow;if(!(null==r?void 0:r.trim()))return oH("plan cache matched but yamlWorkflow is empty, treat as cache miss"),{...t,cacheUsable:!1};try{var n;let e=ik.Ay.load(r);if(!(null==e||null==(n=e.tasks)?void 0:n.some(e=>Array.isArray(e.flow)&&e.flow.length>0)))return oH("plan cache matched but flow is empty, treat as cache miss"),{...t,cacheUsable:!1}}catch{return oH("plan cache matched but yamlWorkflow is invalid, treat as cache miss"),{...t,cacheUsable:!1}}return t}matchLocateCache(e){return this.matchCache(e,"locate")}appendCache(e){(oH("will append cache",e),this.cache.caches.push(e),this.readOnlyMode)?oH("read-only mode, cache appended to memory but not flushed to file"):this.flushCacheToFile()}loadCacheFromFile(){let e=this.cacheFilePath;if(tp()(e,"cache file path is required"),!(0,oR.existsSync)(e))return void oH("no cache file found, path: %s",e);let t=e.replace(oV,".json");if((0,oR.existsSync)(t)&&this.isCacheResultUsed)return void console.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${t}.`);try{let t=(0,oR.readFileSync)(e,"utf8"),r=ik.Ay.load(t);if(oN().lt(r.midsceneVersion,"0.16.10")&&!r.midsceneVersion.includes("beta"))return void console.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
|
|
934
|
+
${n}`;return"string"==typeof e?i:{...e,prompt:i}},ow=/^(Given|When|Then|And|But)\s+(.+)$/i,oE=/^(Scenario):\s*(.*)$/i,ok=/^(Feature|Background|Scenario Outline|Scenario Template|Examples|Rule):/i,ox=e=>{let t=e.toLowerCase();return"given"===t?"Given":"when"===t?"When":"then"===t?"Then":"and"===t?"And":"But"},oS=e=>{if(null==e?void 0:e.aborted)throw"function"==typeof e.throwIfAborted&&e.throwIfAborted(),Error(`runGherkinScenario aborted: ${e.reason||"signal already aborted"}`)},oC=e=>"Given"===e.effectiveKeyword?`Set up this precondition: ${e.text}`:"When"===e.effectiveKeyword?`Perform this user action: ${e.text}`:`Verify that ${e.text}`,oj=(e,t)=>{let r=e.keyword===e.effectiveKeyword?e.keyword:`${e.keyword} as ${e.effectiveKeyword}`;return"Given"===e.effectiveKeyword?`setting up the precondition (${r} -> ${t})`:"When"===e.effectiveKeyword?`performing the user action (${r} -> ${t})`:`verifying the expected result (${r} -> ${t})`},oI=e=>e instanceof Error&&e.message?` Original error: ${e.message}`:"",oO=async(e,t,r)=>{let n=(e=>{let t,r,n=e.split(/\r?\n/),i=[],o=[],a=0,s="prelude";for(let[e,r]of n.entries()){let n=e+1,A=r.trim();if(!A||A.startsWith("#")||A.startsWith("@"))continue;if('"""'===A||"'''"===A)throw Error(`runGherkinScenario does not support doc strings; found one at line ${n}.`);if(A.startsWith("|"))throw Error(`runGherkinScenario does not support data tables; found one at line ${n}.`);if(ok.test(A))throw Error(`runGherkinScenario does not support "${A}" at line ${n}.`);let l=A.match(oE);if(l){a+=1,t=l[2].trim()||void 0,s="scenario";continue}let c=A.match(ow);if(c){let e={keyword:ox(c[1]),text:c[2].trim(),lineNumber:n};"scenario"===s?i.push(e):o.push(e);continue}throw Error(`runGherkinScenario does not support content at line ${n}: ${A}`)}if(a>1)throw Error(`runGherkinScenario expects exactly one Scenario, but found ${a}.`);if(1===a&&o.length>0)throw Error("runGherkinScenario cannot mix anonymous steps with a Scenario block.");let A=1===a?i:o;if(0===A.length)throw Error("runGherkinScenario requires at least one Gherkin step.");return{scenario:t,steps:A.map(e=>{let t,n="Given"===(t=e.keyword)||"When"===t||"Then"===t?e.keyword:r;if(!n)throw Error(`runGherkinScenario cannot resolve "${e.keyword}" at line ${e.lineNumber}; use Given, When, or Then before ${e.keyword}.`);return r=n,{...e,effectiveKeyword:n}})}})(t),i={...r,cacheable:!1};for(let t of n.steps){oS(null==r?void 0:r.abortSignal);let n="Then"===t.effectiveKeyword?"aiAssert":"aiAct",o=oC(t);try{"aiAct"===n?await e.aiAct(o,i):(null==r?void 0:r.context)||(null==r?void 0:r.abortSignal)?await e.aiAssert(o,void 0,{context:r.context,abortSignal:r.abortSignal}):await e.aiAssert(o)}catch(e){throw Error(`runGherkinScenario failed while ${oj(t,n)} at line ${t.lineNumber}: ${t.keyword} ${t.text}.${oI(e)}`,{cause:e})}}},oP=e=>e?` in ${e}`:"",oR=async(e,t)=>{let n,i,{fromMarkdown:o}=await r(5902)("mdast-util-from-markdown"),{toMarkdown:a}=await r(5845)("mdast-util-to-markdown"),s=o(e),A=(n=[],(i=e=>{Array.isArray(e.children)&&(e.children=e.children.map(e=>{if("imageReference"===e.type){let r=e.identifier||e.label||"unknown";throw Error(`runMarkdown does not support reference-style image "${r}"${oP(t)}. Use direct image syntax instead.`)}if("image"===e.type){var r;let i,o=(i=n.length,`参考图片-${String(i+1).padStart(3,"0")}`);if(!e.url)throw Error(`Markdown image ${o}${oP(t)} is missing a URL.`);if(n.push({name:o,url:(r=e.url,!t||/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(r)||(0,tg.isAbsolute)(r)?r:(0,tg.resolve)((0,tg.dirname)(t),r))}),n.length>20)throw Error(`runMarkdown supports at most 20 images, but found ${n.length} images${oP(t)}.`);return{type:"text",value:o}}return i(e),e}))})(s),n);return 0===A.length?{prompt:e,imageCount:0}:{prompt:{prompt:a(s),images:A,convertHttpImage2Base64:!0},imageCount:A.length}};var oT=r(9140),oN=r(8586),oM=r.n(oN);async function oD(e){let t,{PhotonImage:r}=await tw(),n=e.replace(/^data:image\/\w+;base64,/,"").replace(/\s/g,"");tp()(n,"Invalid image: empty base64 data"),tp()(/^[A-Za-z0-9+/]+={0,2}$/.test(n)&&n.length%4!=1,"Invalid image: malformed base64 data");let i=th.Buffer.from(n,"base64");tp()(function(e){return!!e&&!(e.length<8)&&137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]&&13===e[4]&&10===e[5]&&26===e[6]&&10===e[7]||!!e&&!(e.length<3)&&255===e[0]&&216===e[1]&&255===e[2]}(i),"Invalid image: unsupported format");try{t=r.new_from_base64(n)}catch(e){throw Error(`Invalid image: failed to decode base64 data (${e instanceof Error?e.message:String(e)})`,{cause:e})}let o=t instanceof Promise?await t:t,a=o.get_width(),s=o.get_height();return o.free(),tp()(a&&s,"Invalid image: cannot get width or height"),{width:a,height:s}}var oB=r(9300),oz=r.n(oB),oL=r(5409);(0,eN.a)("agent");let oF={once:"singleAction",untilBottom:"scrollToBottom",untilTop:"scrollToTop",untilRight:"scrollToRight",untilLeft:"scrollToLeft"};async function oK(e,t){var r;let n=(0,eN.a)("commonContextParser");(0,eQ.vA)(e,"interfaceInstance is required"),n("Getting interface description");let i=(null==(r=e.describe)?void 0:r.call(e))||"";n("Interface description end"),n("Uploading test info to server"),i8({testUrl:i,serverUrl:t.uploadServerUrl}),n("UploadTestInfoToServer end"),n("will get size");let o=await e.size(),{width:a,height:s}=o;if(o.dpr&&console.warn("Warning: return value of interface.size() include a dpr property, which is not expected and ignored. "),!Number.isFinite(a)||!Number.isFinite(s))throw Error(`Invalid interface size: width and height must be finite numbers. Received width: ${a}, height: ${s}`);if(a<=0||s<=0)throw Error(`Invalid interface size: width and height must be positive numbers. Received width: ${a}, height: ${s}`);n(`size: ${a}x${s}`);let A=await e.screenshotBase64(),l=Date.now();(0,eQ.vA)(A,"screenshotBase64 is required"),n("will get screenshot dimensions");let{width:c,height:u}=await oD(A);if(!Number.isFinite(c)||!Number.isFinite(u))throw Error(`Invalid screenshot dimensions: width and height must be finite numbers. Received width: ${c}, height: ${u}`);if(c<=0||u<=0)throw Error(`Invalid screenshot dimensions: width and height must be positive numbers. Received width: ${c}, height: ${u}`);n("screenshot dimensions",c,"x",u);let d=a<s,p=c<u,h=a;d!==p&&(n(`Orientation mismatch detected: logical size ${a}x${s} (${d?"portrait":"landscape"}) vs screenshot ${c}x${u} (${p?"portrait":"landscape"}). Swapping logical dimensions.`),h=s);let f=t.screenshotShrinkFactor??1;if(!Number.isFinite(f)||f<1)throw Error(`Invalid screenshotShrinkFactor: must be a finite number >= 1. Received: ${f}`);let g=c/h;n("calculated dpr:",g);let m=g/f;if(n("shrunkShotToLogicalRatio",m),1!==f){let e=Math.round(c/f),t=Math.round(u/f);n(`Applying screenshot shrink factor: ${f} (physical: ${c}x${u} -> target: ${e}x${t})`);let r=await tI(A,{width:e,height:t});return{shotSize:{width:e,height:t},deprecatedDpr:g,screenshot:ru.create(r,l),shrunkShotToLogicalRatio:m}}return{shotSize:{width:c,height:u},deprecatedDpr:g,screenshot:ru.create(A,l),shrunkShotToLogicalRatio:m}}function oU(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web",t=eY.getEnvConfigValue(eD.ho),r=oz()().format("YYYY-MM-DD_HH-mm-ss"),n=(0,eQ.uR)().substring(0,8);return`${t||e}-${r}-${n}`}function oQ(e){var t;return Array.isArray(t=e.locatedPixelBbox)&&4===t.length&&t.every(e=>"number"==typeof e&&Number.isFinite(e))}async function oZ(e,t,r,n){var i;if(t){if(!1===n)return void oG("cache disabled for prompt: %s",r);if(null==(i=e.taskCache)?void 0:i.isCacheResultUsed){if(!e.interfaceInstance.rectMatchesCacheFeature)return void oG("interface does not implement rectMatchesCacheFeature, skip cache");try{let n=await e.interfaceInstance.rectMatchesCacheFeature(t),i={center:[Math.round(n.left+n.width/2),Math.round(n.top+n.height/2)],rect:n,description:"string"==typeof r?r:r.prompt||""};return oG("cache hit, prompt: %s",r),i}catch(e){oG("rectMatchesCacheFeature error: %s",e);return}}}}let oJ=e=>"string"==typeof e?{textPrompt:e,multimodalPrompt:void 0}:{textPrompt:e.prompt,multimodalPrompt:e.images?{images:e.images,convertHttpImage2Base64:!!e.convertHttpImage2Base64}:void 0};var oX=r(4201).Buffer;function oH(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let oG=(0,eN.a)("cache"),oV=(0,eN.a)("cache",{console:!0}),oq=".cache.yaml";class oW{matchCache(e,t){if(!this.isCacheResultUsed)return;let r=this.promptKey(e);for(let n=0;n<this.cacheOriginalLength;n++){let i=this.cache.caches[n],o=`${t}:${r}:${n}`;if(i.type===t&&(0,iV.isDeepStrictEqual)(i.prompt,e)&&!this.matchedCacheIndices.has(o)){"locate"===i.type&&(!i.cache&&Array.isArray(i.xpaths)&&(i.cache={xpaths:i.xpaths}),"xpaths"in i&&(i.xpaths=void 0)),this.matchedCacheIndices.add(o);let a=`${t}:${r}`,s=this.consumedCacheIndices.get(a)??[];return s.push(n),this.consumedCacheIndices.set(a,s),oG("cache found and marked as used, type: %s, prompt: %s, index: %d",t,e,n),{cacheContent:i,cacheUsable:!0,updateFn:r=>{(oG("will call updateFn to update cache, type: %s, prompt: %s, index: %d",t,e,n),r(i),this.readOnlyMode)?oG("read-only mode, cache updated in memory but not flushed to file"):(oG("cache updated, will flush to file, type: %s, prompt: %s, index: %d",t,e,n),this.flushCacheToFile())}}}}oG("no unused cache found, type: %s, prompt: %s",t,e)}matchPlanCache(e){let t=this.matchCache(e,"plan");if(!t)return;let r=t.cacheContent.yamlWorkflow;if(!(null==r?void 0:r.trim()))return oG("plan cache matched but yamlWorkflow is empty, treat as cache miss"),{...t,cacheUsable:!1};try{var n;let e=ik.Ay.load(r);if(!(null==e||null==(n=e.tasks)?void 0:n.some(e=>Array.isArray(e.flow)&&e.flow.length>0)))return oG("plan cache matched but flow is empty, treat as cache miss"),{...t,cacheUsable:!1}}catch{return oG("plan cache matched but yamlWorkflow is invalid, treat as cache miss"),{...t,cacheUsable:!1}}return t}matchLocateCache(e){return this.matchCache(e,"locate")}appendCache(e){(oG("will append cache",e),this.cache.caches.push(e),this.readOnlyMode)?oG("read-only mode, cache appended to memory but not flushed to file"):this.flushCacheToFile()}loadCacheFromFile(){let e=this.cacheFilePath;if(tp()(e,"cache file path is required"),!(0,oT.existsSync)(e))return void oG("no cache file found, path: %s",e);let t=e.replace(oq,".json");if((0,oT.existsSync)(t)&&this.isCacheResultUsed)return void console.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${t}.`);try{let t=(0,oT.readFileSync)(e,"utf8"),r=ik.Ay.load(t);if(oM().lt(r.midsceneVersion,"0.16.10")&&!r.midsceneVersion.includes("beta"))return void console.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
|
|
935
935
|
Please delete the existing cache and rebuild it. Sorry for the inconvenience.
|
|
936
|
-
cache file: ${e}`);return
|
|
937
|
-
Parameters: ${JSON.stringify(e)}`,{cause:t})}iQ(o,"callActionStart"),
|
|
938
|
-
...[truncated, ${t.length-500} more characters]`]:[]});return t.length>0?t.join("\n\n"):void 0}async getTimeString(e){if(this.useDeviceTime)if(this.interface.getDeviceLocalTimeString)try{return await this.interface.getDeviceLocalTimeString(e)}catch(e){
|
|
936
|
+
cache file: ${e}`);return oG("cache loaded from file, path: %s, cache version: %s, record length: %s",e,r.midsceneVersion,r.caches.length),r.midsceneVersion="1.10.2-beta-20260706032158.0",r}catch(t){oG("cache file exists but load failed, path: %s, error: %s",e,t);return}}flushCacheToFile(e){if(!this.cacheFilePath)return void oG("no cache file path, will not write cache to file");if(null==e?void 0:e.cleanUnused)if(this.isCacheResultUsed){let e=this.cache.caches.length,t=new Set;for(let e of this.matchedCacheIndices){let r=e.split(":"),n=Number.parseInt(r[r.length-1],10);Number.isNaN(n)||t.add(n)}this.cache.caches=this.cache.caches.filter((e,r)=>{let n=t.has(r),i=r>=this.cacheOriginalLength;return n||i});let r=e-this.cache.caches.length;r>0?oG("cleaned %d unused cache record(s)",r):oG("no unused cache to clean")}else oG("skip cleaning: cache is not used for reading");try{let e=(0,tg.dirname)(this.cacheFilePath);(0,oT.existsSync)(e)||((0,oT.mkdirSync)(e,{recursive:!0}),oG("created cache directory: %s",e));let t=[...this.cache.caches].sort((e,t)=>"plan"===e.type&&"locate"===t.type?-1:+("locate"===e.type&&"plan"===t.type)),r={...this.cache,caches:t},n=ik.Ay.dump(r,{lineWidth:-1});(0,oT.writeFileSync)(this.cacheFilePath,n),oG("cache flushed to file: %s",this.cacheFilePath)}catch(e){oV(`write cache to file failed, path: ${this.cacheFilePath}, error: ${e}`)}}promptKey(e){return"string"==typeof e?e:JSON.stringify(e)}applyRecordInto(e,t){"plan"===t.type?e.yamlWorkflow=t.yamlWorkflow:(e.cache=t.cache,"xpaths"in e&&(e.xpaths=void 0))}updateOrAppendCacheRecord(e,t){if(t)t.updateFn(t=>{this.applyRecordInto(t,e)});else{var r;let t=`${e.type}:${this.promptKey(e.prompt)}`,n=null==(r=this.staleCacheIndices.get(t))?void 0:r.pop();void 0!==n&&this.cache.caches[n]?(oG("replacing stale cache entry in place, type: %s, prompt: %s, index: %d",e.type,e.prompt,n),this.replaceCacheRecord(n,e)):this.appendCache(e)}}markLocateCacheStale(e){var t;let r=`locate:${this.promptKey(e)}`,n=null==(t=this.consumedCacheIndices.get(r))?void 0:t.pop();if(void 0===n)return;let i=this.staleCacheIndices.get(r)??[];i.push(n),this.staleCacheIndices.set(r,i),oG("marked locate cache entry as stale, prompt: %s, index: %d",e,n)}replaceCacheRecord(e,t){let r=this.cache.caches[e];(tp()(r.type===t.type,`cache record type mismatch on replace: expected ${t.type}, got ${r.type}`),this.applyRecordInto(r,t),this.readOnlyMode)?oG("read-only mode, cache replaced in memory but not flushed to file"):this.flushCacheToFile()}constructor(e,t,r,n={}){var i;let o;if(oH(this,"cacheId",void 0),oH(this,"cacheFilePath",void 0),oH(this,"cache",void 0),oH(this,"isCacheResultUsed",void 0),oH(this,"cacheOriginalLength",void 0),oH(this,"readOnlyMode",void 0),oH(this,"writeOnlyMode",void 0),oH(this,"matchedCacheIndices",new Set),oH(this,"consumedCacheIndices",new Map),oH(this,"staleCacheIndices",new Map),tp()(e,"cacheId is required"),void 0!==n.cacheDir&&("string"!=typeof n.cacheDir||!n.cacheDir.trim()))throw Error("cacheDir must be a non-empty string when provided");const a=null==(i=n.cacheDir)?void 0:i.trim();let s=(0,eQ.gV)(e);const A=eY.getEnvConfigValueAsNumber(eD.YK)??200;if(oX.byteLength(s,"utf8")>A){const e=s.slice(0,32),t=(0,eQ.tD)(void 0,s);s=`${e}-${t}`}this.cacheId=s,this.cacheFilePath=eQ.ht||eQ.rS?void 0:r||(0,tg.join)(a||(0,iE.ZH)("cache"),`${this.cacheId}${oq}`);const l=!!(null==n?void 0:n.readOnly),c=!!(null==n?void 0:n.writeOnly);if(l&&c)throw Error("TaskCache cannot be both read-only and write-only");this.isCacheResultUsed=!c&&t,this.readOnlyMode=l,this.writeOnlyMode=c,this.cacheFilePath&&!this.writeOnlyMode&&(o=this.loadCacheFromFile()),o||(o={midsceneVersion:"1.10.2-beta-20260706032158.0",cacheId:this.cacheId,caches:[]}),this.cache=o,this.cacheOriginalLength=this.isCacheResultUsed?this.cache.caches.length:0}}class oY{async append(e,t){await this.runner.append(e,t)}async appendAndRun(e,t){return this.runner.appendAndFlush(e,t)}async run(e){return this.runner.flush(e)}isInErrorState(){return this.runner.isInErrorState()}latestErrorTask(){return this.runner.latestErrorTask()}appendErrorPlan(e){return this.runner.appendErrorPlan(e)}getRunner(){return this.runner}constructor(e,t,r){!function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"runner",void 0),this.runner=new iX(e,t,r)}}let o_=(0,eN.a)("agent:usage-intent",{console:!0});function o$(e,t){if(e)return e.intent?(o_(`intent is already set to "${e.intent}", skipping overwrite to "${t}"`),e):{...e,intent:t}}function o0(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let o1=(0,eN.a)("agent:task-builder");function o2(e){return null!=e&&"object"==typeof e&&Object.keys(e).length>0}function o3(e){if("string"==typeof e)return{prompt:e};let{deepThink:t,...r}=e,n=r.deepLocate??t;return void 0===n?r:{...r,deepLocate:n}}function o5(e){return{type:"Locate",param:o3(e),thought:""}}class o7{async build(e,t,r,n){let i=[],o={tasks:i,planningModel:t,defaultModel:r,cacheable:null==n?void 0:n.cacheable,deepLocate:null==n?void 0:n.deepLocate,abortSignal:null==n?void 0:n.abortSignal},a=new Map([["Locate",e=>this.handleLocatePlan(e,o)],["Finished",e=>this.handleFinishedPlan(e,o)]]),s=e=>this.handleActionPlan(e,o);for(let t of e){let e=a.get(t.type)??s;await e(t)}return{tasks:i}}handleFinishedPlan(e,t){let r={type:"Action Space",subType:"Finished",param:null,thought:e.thought,executor:async()=>{}};t.tasks.push(r)}async handleLocatePlan(e,t){let r=this.createLocateTask(e,e.param,t);t.tasks.push(r)}async handleActionPlan(e,t){let r=e.type,n=tK(r,this.actionSpace),i=e.param,o=tW(n.paramSchema),a=tW(n.paramSchema,!0);o.forEach(e=>{if(i[e]){let n=o5(i[e]);o1("will prepend locate param for field",`action.type=${r}`,`param=${JSON.stringify(i[e])}`,`locatePlan=${JSON.stringify(n)}`,`hasLocatedPixelBbox=${oQ(i[e])}`);let o=this.createLocateTask(n,i[e],t,t=>{i[e]=t});t.tasks.push(o)}else(0,eQ.vA)(!a.includes(e),`Required locate field '${e}' is not provided for action ${r}`),o1(`field '${e}' is not provided for action ${r}`)});let s={type:"Action Space",subType:r,thought:e.thought,param:e.param,executor:async(e,t)=>{var i;let o=t.task.timing;o1("executing action",r,e,`taskContext.element.center: ${null==(i=t.element)?void 0:i.center}`);let s=t.uiContext;(0,eQ.vA)(s,"uiContext is required for Action task"),a.forEach(t=>{(0,eQ.vA)(e[t],`field '${t}' is required for action ${r} but not provided. Cannot execute action ${r}.`)}),iQ(o,"beforeInvokeActionHookStart");let A=n.delayBeforeRunner??200;try{await Promise.all([(async()=>{this.interface.beforeInvokeAction&&(o1(`will call "beforeInvokeAction" for interface with action name ${n.name}`),await this.interface.beforeInvokeAction(n.name,e),o1(`called "beforeInvokeAction" for interface with action name ${n.name}`))})(),A>0?i2(A):Promise.resolve()])}catch(t){let e=(null==t?void 0:t.message)||String(t);throw Error(`error in running beforeInvokeAction for ${n.name}: ${e}`,{cause:t})}iQ(o,"beforeInvokeActionHookEnd");let{shrunkShotToLogicalRatio:l}=s;if(void 0===l)throw Error("shrunkShotToLogicalRatio is not defined in Action task");if(n.paramSchema)try{e=((e,t,r)=>{if(!t)return;let n=e??{},i=tW(t);if(0===i.length)return t.parse(n);let o={};for(let e of i)e in n&&(o[e]=n[e]);let a={};for(let e in n)i.includes(e)?a[e]={prompt:"_dummy_"}:a[e]=n[e];let s=t.parse(a),A=null==r?void 0:r.shrunkShotToLogicalRatio;for(let e in o){let t=o[e];void 0!==A&&1!==A&&t&&"object"==typeof t&&t.center&&t.rect&&(t={...t,center:[Math.round(t.center[0]/A),Math.round(t.center[1]/A)],rect:{...t.rect,left:Math.round(t.rect.left/A),top:Math.round(t.rect.top/A),width:Math.round(t.rect.width/A),height:Math.round(t.rect.height/A)}}),s[e]=t}return s})(e,n.paramSchema,{shrunkShotToLogicalRatio:l})}catch(t){throw Error(`Invalid parameters for action ${n.name}: ${t.message}
|
|
937
|
+
Parameters: ${JSON.stringify(e)}`,{cause:t})}iQ(o,"callActionStart"),o1("calling action",n.name);let c=n.call.bind(this.interface),u=await c(e,t);iQ(o,"callActionEnd"),o1("called action",n.name,"result:",u),iQ(o,"afterInvokeActionHookStart");let d=n.delayAfterRunner??this.waitAfterAction??300;d>0&&await i2(d);try{this.interface.afterInvokeAction&&(o1(`will call "afterInvokeAction" for interface with action name ${n.name}`),await this.interface.afterInvokeAction(n.name,e),o1(`called "afterInvokeAction" for interface with action name ${n.name}`))}catch(t){let e=(null==t?void 0:t.message)||String(t);throw Error(`error in running afterInvokeAction for ${n.name}: ${e}`,{cause:t})}return iQ(o,"afterInvokeActionHookEnd"),{output:u}}};t.tasks.push(s)}createLocateTask(e,t,r,n){let{cacheable:i,defaultModel:o,deepLocate:a,abortSignal:s}=r,A=o3(t);return void 0!==i&&(A={...A,cacheable:i}),a&&!A.deepLocate&&(A={...A,deepLocate:!0}),{type:"Planning",subType:"Locate",param:A,thought:e.thought,executor:async(e,t)=>{var r,i,a,A,l,c,u,d,p,h,f,g;let m,y,v,b,w,E,{task:k}=t,{uiContext:x}=t,S=oQ(e)?e:void 0;(0,eQ.vA)((null==e?void 0:e.prompt)||S,`No prompt or id or position or locatedPixelBbox to locate, param=${JSON.stringify(e)}`),x||(x=await this.service.contextRetrieverFn()),(0,eQ.vA)(x,"uiContext is required for Service task");let{shrunkShotToLogicalRatio:C}=x;if(void 0===C)throw Error("shrunkShotToLogicalRatio is not defined in locate task");let j=e=>{var t,r,n,i,o,a,s;e&&(m=e,k.log={dump:e,rawResponse:null==(t=e.taskInfo)?void 0:t.rawResponse,rawChoiceMessage:null==(r=e.taskInfo)?void 0:r.rawChoiceMessage,searchAreaRawChoiceMessage:null==(n=e.taskInfo)?void 0:n.searchAreaRawChoiceMessage},k.usage=o$(null==(i=e.taskInfo)?void 0:i.usage,"default"),k.searchArea=null==(o=e.taskInfo)?void 0:o.searchArea,(null==(a=e.taskInfo)?void 0:a.searchAreaUsage)&&(k.searchAreaUsage=e.taskInfo.searchAreaUsage),(null==(s=e.taskInfo)?void 0:s.reasoning_content)&&(k.reasoning_content=e.taskInfo.reasoning_content))},I=S?function(e){var t;if(e)return nN(nL(e.locatedPixelBbox),"string"==typeof e.prompt?e.prompt:(null==(t=e.prompt)?void 0:t.prompt)||"")}(S):void 0,O=e.deepLocate?void 0:I,P=!!O;if(!P&&e.xpath&&this.interface.rectMatchesCacheFeature)try{v=await this.interface.rectMatchesCacheFeature({xpaths:[e.xpath]})}catch{}let R=v?nN((c=v,1===C?c:{...c,left:Math.round(c.left*C),top:Math.round(c.top*C),width:Math.round(c.width*C),height:Math.round(c.height*C)}),"string"==typeof e.prompt?e.prompt:(null==(r=e.prompt)?void 0:r.prompt)||""):void 0,T=!!R,N=e.prompt,M=null==(i=this.taskCache)?void 0:i.matchLocateCache(N),D=null==M||null==(a=M.cacheContent)?void 0:a.cache,B=P||T?null:await oZ({taskCache:this.taskCache,interfaceInstance:this.interface},D,N,e.cacheable),z=B?1===C?B:{...B,center:[Math.round(B.center[0]*C),Math.round(B.center[1]*C)],rect:{...B.rect,left:Math.round(B.rect.left*C),top:Math.round(B.rect.top*C),width:Math.round(B.rect.width*C),height:Math.round(B.rect.height*C)}}:void 0,L=!!z,F=t.task.timing;if(!T&&!L&&!P)try{iQ(F,"callAiStart"),y=await this.service.locate(e,{context:x,planLocatedElement:I},o,s),j(y.dump),b=y.element}catch(e){throw e instanceof nV&&j(e.dump),e}finally{iQ(F,"callAiEnd")}let K=O||R||z||b;if(K){let e=[null==(u=K.center)?void 0:u[0],null==(d=K.center)?void 0:d[1],null==(p=K.rect)?void 0:p.left,null==(h=K.rect)?void 0:h.top,null==(f=K.rect)?void 0:f.width,null==(g=K.rect)?void 0:g.height].some(e=>"number"!=typeof e||!Number.isFinite(e))?`Invalid locate result coordinates: ${JSON.stringify(K)}`:K.rect.width<=0||K.rect.height<=0?`Invalid locate result rect size: ${JSON.stringify(K)}`:void 0;if(e){if(m)throw new nV(e,m);throw Error(e)}}let U=o2(null==M||null==(A=M.cacheContent)?void 0:A.cache);if(K&&this.taskCache&&!L&&(!P||!U)&&(null==e?void 0:e.cacheable)!==!1)if(this.interface.cacheFeatureForPoint)try{let t=K.center;1!==C&&(t=[Math.round(K.center[0]/C),Math.round(K.center[1]/C)],o1("Transformed coordinates for cacheFeatureForPoint: %o -> %o",K.center,t));let r=await this.interface.cacheFeatureForPoint(t,{targetDescription:"string"==typeof e.prompt?e.prompt:null==(l=e.prompt)?void 0:l.prompt,modelRuntime:o});o2(r)?(o1("update cache, prompt: %s, cache: %o",N,r),w=r,this.taskCache.updateOrAppendCacheRecord({type:"locate",prompt:N,cache:r},M)):o1("no cache data returned, skip cache update, prompt: %s",N)}catch(e){o1("cacheFeatureForPoint failed: %s",e)}else o1("cacheFeatureForPoint is not supported, skip cache update");if(!K){if(m)throw new nV(`Element not found : ${e.prompt}`,m);throw Error(`Element not found: ${e.prompt}`)}return P&&S?E={from:"Plan",context:{locatedPixelBbox:S.locatedPixelBbox}}:T?E={from:"User expected path",context:{xpath:e.xpath}}:L&&(E={from:"Cache",context:{cacheEntry:D,cacheToSave:w}}),null==n||n(K),{output:{element:{...K,dpr:x.deprecatedDpr}},hitBy:E}}}}constructor({interfaceInstance:e,service:t,taskCache:r,actionSpace:n,waitAfterAction:i}){o0(this,"interface",void 0),o0(this,"service",void 0),o0(this,"taskCache",void 0),o0(this,"actionSpace",void 0),o0(this,"waitAfterAction",void 0),this.interface=e,this.service=t,this.taskCache=r,this.actionSpace=n,this.waitAfterAction=i}}function o4(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:150;return void 0===e?"":("object"==typeof e&&(e=JSON.stringify(e)),"number"==typeof e)?e.toString():"string"==typeof e&&e.length>t?`${e.slice(0,t)}...`:"string"==typeof e?e.trim():""}function o8(e){return e.subType||e.type}function o6(e){if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e){if("object"==typeof e.prompt&&null!==e.prompt&&e.prompt.prompt)return e.prompt.prompt;if("string"==typeof e.prompt)return e.prompt;if("string"==typeof e.description)return e.description}return""}function o9(e){if(!e)return{content:""};let t=e=>{var t;return(null==e||null==(t=e.multimodalPrompt)?void 0:t.images)&&Array.isArray(e.multimodalPrompt.images)?e.multimodalPrompt.images:void 0},r=e=>"string"==typeof e?e:JSON.stringify(e);if(e.demand)return{content:r(e.demand),images:t(e)};if(e.assertion)return{content:r(e.assertion),images:t(e)};if(e.dataDemand){let{dataDemand:n}=e;if("string"==typeof n)return{content:n};if("object"==typeof n)return{content:r(n.demand||n),images:t(n)}}return{content:""}}function ae(e,t){return t?`${e} - ${t}`:e}function at(e){var t,r,n,i,o,a,s,A,l,c,u;let d;if("Planning"===e.type&&(d="Locate"===e.subType?o6(null==e?void 0:e.param):(null==(t=e.output)?void 0:t.log)||(null==(r=e.param)?void 0:r.userInstructionDisplay)||((null==(n=e.param)?void 0:n.userInstruction)?tX(e.param.userInstruction):void 0)),"Insight"===e.type&&(d=o9(null==e?void 0:e.param).content),"Action Space"===e.type){let t=null==e||null==(i=e.param)?void 0:i.locate,r=t?o6(t):"";(d=e.thought||"","number"==typeof(null==e||null==(o=e.param)?void 0:o.timeMs))?d=`${null==e||null==(a=e.param)?void 0:a.timeMs}ms`:"string"==typeof(null==e||null==(s=e.param)?void 0:s.scrollType)?d=(u=null==e?void 0:e.param)?`${u.direction||"down"}, ${u.scrollType||"singleAction"}, ${u.distance||"distance-not-set"}`:"":"string"==typeof(null==e||null==(A=e.param)?void 0:A.direction)&&(null==e?void 0:e.subType)==="PullGesture"?d=function(e){if(!e)return"";let t=[];return t.push(`direction: ${e.direction||"down"}`),e.distance&&t.push(`distance: ${e.distance}`),e.duration&&t.push(`duration: ${e.duration}ms`),t.join(", ")}(null==e?void 0:e.param):void 0!==(null==e||null==(l=e.param)?void 0:l.value)?d=null==e||null==(c=e.param)?void 0:c.value:(null==e?void 0:e.param)&&"object"==typeof(null==e?void 0:e.param)&&Object.keys((null==e?void 0:e.param)||{}).length>0&&(d=null==e?void 0:e.param),r&&(d=d&&"object"!=typeof d?`${r} - ${d}`:r)}if(void 0===d)return"";if("string"==typeof d)return d;if("object"==typeof d){let e=o6(d);if(e)return e;let t=Object.entries(d);if(0===t.length)return"";let r=e=>"string"==typeof e?e:null==e?String(e):"object"==typeof e?JSON.stringify(e):String(e);if(1===t.length){let[e,n]=t[0];return`${e}: ${r(n)}`}return t.map(e=>{let[t,n]=e;return`${t}: ${r(n)}`}).join(", ")}return String(d)}function ar(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let an=(0,eN.a)("device-task-executor"),ai=(0,eN.a)("device-task-executor",{console:!0});class ao{get page(){return this.interface}createExecutionSession(e,t){return new oY(e,()=>(null==t?void 0:t.uiContext)?Promise.resolve(t.uiContext):Promise.resolve(this.service.contextRetrieverFn()),{onTaskStart:this.onTaskStartCallback,tasks:null==t?void 0:t.tasks,onSnapshotChange:async(e,r)=>{var n,i,o;await (null==(i=this.hooks)||null==(n=i.onSnapshotChange)?void 0:n.call(i,e,r)),await (null==t||null==(o=t.onSnapshotChange)?void 0:o.call(t,e,r))},...(null==t?void 0:t.onTaskEvent)?{onTaskEvent:t.onTaskEvent}:{}})}getActionSpace(){return this.providedActionSpace}async emitProgress(e,t,r){var n,i;await (null==(i=this.hooks)||null==(n=i.onProgress)?void 0:n.call(i,e,t,r))}emitAiActProgress(e,t){return this.emitProgress("aiAct",e,t)}setPendingFeedbackMessage(e,t,r){e.pendingFeedbackMessage=r?`Time: ${t}, ${r}`:`Current time: ${t}`}collectPlanningFeedback(e){let t=e.flatMap(e=>{let{planningFeedback:t}=e;return t?[t.length<=500?t:`${t.slice(0,500)}
|
|
938
|
+
...[truncated, ${t.length-500} more characters]`]:[]});return t.length>0?t.join("\n\n"):void 0}async getTimeString(e){if(this.useDeviceTime)if(this.interface.getDeviceLocalTimeString)try{return await this.interface.getDeviceLocalTimeString(e)}catch(e){ai(`Failed to get device time string, falling back to runtime time: ${e}`)}else ai("useDeviceTime is enabled but getDeviceLocalTimeString is not implemented, falling back to runtime time.");return t_(e)}async convertPlanToExecutable(e,t,r,n){return this.taskBuilder.build(e,t,r,n)}async loadYamlFlowAsPlanning(e,t,r){let n=this.createExecutionSession(ae((null==r?void 0:r.type)||"Act",(null==r?void 0:r.prompt)||tX(e))),i={type:"Planning",subType:"LoadYaml",param:{userInstruction:e,...(null==r?void 0:r.prompt)?{userInstructionDisplay:r.prompt}:{}},executor:async(e,r)=>{let{uiContext:n}=r;return(0,eQ.vA)(n,"uiContext is required for Planning task"),{output:{actions:[],shouldContinuePlanning:!1,log:"",yamlString:t},cache:{hit:!0},hitBy:{from:"Cache",context:{yamlString:t}}}}},o=n.getRunner();return await n.appendAndRun(i),{runner:o}}async runPlans(e,t,r,n,i){let o=this.createExecutionSession(e,i),{tasks:a}=await this.convertPlanToExecutable(t,r,n),s=o.getRunner(),{output:A}=await o.appendAndRun(a)??{};return{output:A,runner:s}}async action(e,t,r,n,i,o,a,s,A,l,c,u,d){return aa(this.interface,l,async()=>this.runAction(e,t,r,n,i,o,a,s,A,c,u,d))}invalidateFailedCacheHitLocates(e,t){if(this.taskCache)for(let i=t;i<e.tasks.length;i++){var r,n;let t=e.tasks[i];if("Planning"===t.type&&"Locate"===t.subType&&(null==(r=t.hitBy)?void 0:r.from)==="Cache"){let e=null==(n=t.param)?void 0:n.prompt;e&&this.taskCache.markLocateCacheStale(e)}}}async runAction(e,t,r,n,i,o,a,s,A,l,c,u){let d,p,h,f=new rp,g=(null==u?void 0:u.prompt)||tX(e),m=this.createExecutionSession(ae((null==u?void 0:u.type)||"Act",g),{onTaskEvent:async e=>{await (null==d?void 0:d(e))}}),y=m.getRunner(),v=0,b=[],w=a??this.replanningCycleLimit;if(void 0===w)throw Error("replanningCycleLimit is required for TaskExecutor.action");await this.emitAiActProgress("start",{prompt:g,planLimit:w});let E=async(e,t)=>(await this.emitAiActProgress("failed",{...t?{planIndex:t}:{},planLimit:w,error:e}),m.appendErrorPlan(e)),k=0,x=0;if(null==c?void 0:c.aborted)return E(`Task aborted: ${c.reason||"abort signal received"}`);let S=await tG(tH(e));for(;;){let a,g=v+1;if(x=g,null==c?void 0:c.aborted)return E(`Task aborted: ${c.reason||"abort signal received"}`,g);let C=f.subGoalsToText()||void 0,j=f.memoriesToText()||void 0,I=await m.appendAndRun({type:"Planning",subType:"Plan",param:{userInstruction:e,...(null==u?void 0:u.prompt)?{userInstructionDisplay:u.prompt}:{},replanningCycleLimit:w,aiActContext:i,imagesIncludeCount:s,deepThink:A,...C?{subGoalStatus:C}:{},...j?{memoriesStatus:j}:{}},executor:async(e,r)=>{let i,{uiContext:o}=r;(0,eQ.vA)(o,"uiContext is required for Planning task");let a=r.task.timing;await this.emitAiActProgress("plan_thinking",{planIndex:g,planLimit:w,screenshot:o.screenshot});let l=this.getActionSpace();an("actionSpace for this interface is:",l.map(e=>e.name).join(", ")),(0,eQ.vA)(Array.isArray(l),"actionSpace must be an array"),0===l.length&&console.warn(`ActionSpace for ${this.interface.interfaceType} is empty. This may lead to unexpected behavior.`);let u="custom"===t.adapter.planning.kind?t.adapter.planning.planFn:ib;try{iQ(a,"callAiStart"),i=await u(e.userInstruction,{context:o,actionContext:e.aiActContext,actionSpace:l,modelRuntime:t,conversationHistory:f,includeLocateInPlanning:n,imagesIncludeCount:s,deepThink:A,referenceImageMessages:S,abortSignal:c})}catch(e){throw e instanceof nS&&(r.task.usage=o$(e.usage,"planning"),r.task.log={...r.task.log||{},rawResponse:e.rawResponse,rawChoiceMessage:e.rawChoiceMessage}),await this.emitAiActProgress("plan_failed",{planIndex:g,planLimit:w,error:od(e)}),e}finally{iQ(a,"callAiEnd")}an("planResult",JSON.stringify(i,null,2));let{actions:d,thought:h,log:m,memory:y,error:v,usage:b,rawResponse:E,rawChoiceMessage:k,reasoning_content:x,finalizeSuccess:C,finalizeMessage:j,updateSubGoals:I,markFinishedIndexes:O}=i;if(p=j,r.task.log={...r.task.log||{},rawResponse:E,rawChoiceMessage:k},r.task.usage=o$(b,"planning"),r.task.reasoning_content=x,r.task.output={actions:d||[],log:m,thought:h,memory:y,yamlFlow:i.yamlFlow,output:j,shouldContinuePlanning:i.shouldContinuePlanning,updateSubGoals:I,markFinishedIndexes:O},r.uiContext=o,(m||h)&&await this.emitAiActProgress("plan_planned",{planIndex:g,planLimit:w,...m?{log:m}:{},...h?{thought:h}:{}}),v){let e=`Failed to continue: ${v}
|
|
939
939
|
${m||""}`;await this.emitAiActProgress("plan_failed",{planIndex:g,planLimit:w,error:e})}if((0,eQ.vA)(!v,`Failed to continue: ${v}
|
|
940
940
|
${m||""}`),!1===C){let e=`Task failed: ${j||"No error message provided"}
|
|
941
|
-
${m||""}`;await this.emitAiActProgress("plan_failed",{planIndex:g,planLimit:w,error:e}),(0,eQ.vA)(!1,e)}return{cache:{hit:!1}}}},{allowWhenError:!0}),O=null==I?void 0:I.output;h=O;let P=(null==O?void 0:O.actions)||[];b.push(...(null==O?void 0:O.yamlFlow)||[]);try{a=await this.convertPlanToExecutable(P,t,r,{cacheable:o,deepLocate:l,abortSignal:c})}catch(e){return E(`Error converting plans to executable tasks: ${
|
|
942
|
-
${r}`)}if(n.node&&n.node.rect.width>4&&n.node.rect.height>4&&(!r||r&&n.node.content)&&(!a||a&&n.node.isVisible)){var p,h;let e;c=!1,e=(null==(p=n.node.attributes)?void 0:p.htmlTagName)?n.node.attributes.htmlTagName.replace(/[<>]/g,""):n.node.attributes.nodeType.replace(/\sNode$/,"").toLowerCase();let r=n.node.rect?{left:n.node.rect.left,top:n.node.rect.top,width:n.node.rect.width,height:n.node.rect.height}:{};s=`<${e} id="${n.node.id}" ${i((h=n.node.attributes||{},Object.keys(h).reduce((e,r)=>{let n=h[r];return"style"===r||"htmlTagName"===r||"nodeType"===r||(e[r]=
|
|
941
|
+
${m||""}`;await this.emitAiActProgress("plan_failed",{planIndex:g,planLimit:w,error:e}),(0,eQ.vA)(!1,e)}return{cache:{hit:!1}}}},{allowWhenError:!0}),O=null==I?void 0:I.output;h=O;let P=(null==O?void 0:O.actions)||[];b.push(...(null==O?void 0:O.yamlFlow)||[]);try{a=await this.convertPlanToExecutable(P,t,r,{cacheable:o,deepLocate:l,abortSignal:c})}catch(e){return E(`Error converting plans to executable tasks: ${od(e)}, plans: ${JSON.stringify(P)}`,g)}f.pendingFeedbackMessage&&console.warn("unconsumed pending feedback message detected, this may lead to unexpected planning result:",f.pendingFeedbackMessage);let R=await this.getTimeString(),T=y.tasks.length;d=function(e,t,r){return async n=>{var i;let o=function(e){var t,r;if("Action Space"!==e.type||"Finished"===e.subType||"Error"===e.subType)return;let n="string"==typeof e.subType&&e.subType.length>0?e.subType:"Action",i=function(e){if(oc(e)){for(let t of ov){let r=e[t];if(oy(r))return r}return Object.values(e).find(oy)}}(e.param);if(i){let e=og(i);if(e){let t=om(i),r="string"==typeof i.description?i.description:"string"==typeof i.prompt?i.prompt:"";return{name:n,...r?{target:r}:{},point:e,...t?{bbox:t}:{}}}}if(oc(t=e.param)&&Object.entries(t).some(e=>{let[t,r]=e;return!!ov.includes(t)&&"string"==typeof r||oy(r)&&!og(r)&&!om(r)}))return;let o=(r=e.param)&&"object"==typeof r?"string"==typeof r.prompt?ou(r.prompt):r.locate&&"object"==typeof r.locate&&null!==r.locate?{locate:ou(r.locate.prompt),...Object.fromEntries(Object.entries(r).filter(e=>{let[t]=e;return"locate"!==t}).slice(0,4).map(e=>{let[t,r]=e;return[t,ou(r)]}))}:ou(r):ou(r);return{name:n,...void 0!==o&&""!==o?{param:o}:{}}}(n.task);if(!o)return;let a={planIndex:e,planLimit:t,action:o},s=null==(i=n.task.timing)?void 0:i.cost;switch(n.kind){case"start":await r("plan_action",a),await r("action_running",a);break;case"finish":await r("action_done",{...a,durationMs:s});break;case"error":await r("action_failed",{...a,durationMs:s,error:n.task.errorMessage})}}}(g,w,(e,t)=>this.emitAiActProgress(e,t));try{await m.appendAndRun(a.tasks),this.setPendingFeedbackMessage(f,R,this.collectPlanningFeedback(y.tasks.slice(T)))}catch(t){k++;let e=await this.getTimeString();this.setPendingFeedbackMessage(f,e,`Error executing running tasks: ${(null==t?void 0:t.message)||String(t)}`),an("error when executing running tasks, but continue to run if it is not too many errors:",t instanceof Error?t.message:String(t),"current error count in one planning loop:",k)}finally{d=void 0}if(k>5)return E("Too many errors in one planning loop",g);if(null==c?void 0:c.aborted)return E(`Task aborted: ${c.reason||"abort signal received"}`,g);if(!(null==O?void 0:O.shouldContinuePlanning))break;if(this.invalidateFailedCacheHitLocates(y,T),++v>w)return E(`Replanned ${w} times, exceeding the limit. Please configure a larger value for replanningCycleLimit (or use MIDSCENE_REPLANNING_CYCLE_LIMIT) to handle more complex tasks.`,g);if(!f.pendingFeedbackMessage){let e=await this.getTimeString();f.pendingFeedbackMessage=`Time: ${e}, I have finished the action previously planned.`}}return await this.emitAiActProgress("complete",{planIndex:x,planLimit:w,...p??(null==h?void 0:h.output)?{output:p??(null==h?void 0:h.output)}:{},...(null==h?void 0:h.log)?{log:h.log}:{},...(null==h?void 0:h.thought)?{thought:h.thought}:{}}),{output:{yamlFlow:b,output:p},runner:y}}createTypeQueryTask(e,t,r,n,i,o){return{type:"Insight",subType:e,param:{domIncluded:null==n?void 0:n.domIncluded,dataDemand:i?{demand:t,multimodalPrompt:i}:t},executor:async(a,s)=>{let A,l,{task:c}=s,u=e=>{var t,r,n,i,o;A=e,c.log={dump:e,rawResponse:null==(t=e.taskInfo)?void 0:t.rawResponse,rawChoiceMessage:null==(r=e.taskInfo)?void 0:r.rawChoiceMessage,searchAreaRawChoiceMessage:null==(n=e.taskInfo)?void 0:n.searchAreaRawChoiceMessage},c.usage=o$(null==(i=e.taskInfo)?void 0:i.usage,"insight"),(null==(o=e.taskInfo)?void 0:o.reasoning_content)&&(c.reasoning_content=e.taskInfo.reasoning_content)},d=s.uiContext;(0,eQ.vA)(d,"uiContext is required for Query task");let p="Query"!==e,h=t,f="result";p&&("Assert"===e||"WaitFor"===e)?h={[f="StatementIsTruthy"]:nD(e,t)}:p&&(h={[f=e]:nD(e,t)});let g="";if((null==n?void 0:n.domIncluded)&&this.interface.getElementsNodeTree){an("appending tree info for page");let e=await this.interface.getElementsNodeTree();g=await function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=e=>Object.entries(e).map(e=>{let[r,n]=e;return`${r}="${o4(n,t)}"`}).join(" ");return(function e(n){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s="",A="",l="",c=!0,u=" ".repeat(o),d="";for(let t=0;t<(n.children||[]).length;t++){let r=e(n.children[t],o+1,a);r&&(d+=`
|
|
942
|
+
${r}`)}if(n.node&&n.node.rect.width>4&&n.node.rect.height>4&&(!r||r&&n.node.content)&&(!a||a&&n.node.isVisible)){var p,h;let e;c=!1,e=(null==(p=n.node.attributes)?void 0:p.htmlTagName)?n.node.attributes.htmlTagName.replace(/[<>]/g,""):n.node.attributes.nodeType.replace(/\sNode$/,"").toLowerCase();let r=n.node.rect?{left:n.node.rect.left,top:n.node.rect.top,width:n.node.rect.width,height:n.node.rect.height}:{};s=`<${e} id="${n.node.id}" ${i((h=n.node.attributes||{},Object.keys(h).reduce((e,r)=>{let n=h[r];return"style"===r||"htmlTagName"===r||"nodeType"===r||(e[r]=o4(n,t)),e},{})))} ${i(r)}>`;let o=o4(n.node.content,t);A=o?`
|
|
943
943
|
${u} ${o}`:"",l=`</${e}>`}else r||d.trim().startsWith("<>")||(s="<>",A="",l="</>");if(c&&!d.trim())return"";let f=`${u}${s}${A}${d}
|
|
944
|
-
${u}${l}`;return f.trim()?f:""})(e,0,n).replace(/^\s*\n/gm,"")}(e,200,!1,(null==n?void 0:n.domIncluded)==="visible-only")}try{l=await this.service.extract(h,r,n,g,i,d,o)}catch(e){throw e instanceof nV&&u(e.dump),e}let{data:m,thought:y,dump:v}=l;u(v);let b=m;if(p&&("string"==typeof m?b=m:"WaitFor"===e?b=null!=m&&m[f]:null==m?b=null:(null==m?void 0:m[f])!==void 0?b=m[f]:(null==m?void 0:m.result)!==void 0?b=m.result:(0,eQ.vA)(!1,"No result in query data")),"Assert"===e&&!b)throw c.thought=y,Error(`Assertion failed: ${y}`);return{output:b,log:A,thought:y}}}}async createTypeQueryExecution(e,t,r,n,i,o){let a=this.createExecutionSession(o9(e,"string"==typeof t?t:JSON.stringify(t))),s=await this.createTypeQueryTask(e,t,r,n,i,o),A=a.getRunner(),l=await a.appendAndRun(s);if(!l)throw Error("result of taskExecutor.flush() is undefined in function createTypeQueryTask");let{output:c,thought:u}=l;return{output:c,thought:u,runner:A}}async waitFor(e,t,r){let{textPrompt:n,multimodalPrompt:i}=oZ(e),o=`waitFor: ${n}`,a=this.createExecutionSession(o9("WaitFor",o)),s=a.getRunner(),{timeoutMs:A,checkIntervalMs:l,domIncluded:c,screenshotIncluded:u,...d}=t,p={domIncluded:c,screenshotIncluded:u,...d};(0,eQ.vA)(e,"No assertion for waitFor"),(0,eQ.vA)(A,"No timeoutMs for waitFor"),(0,eQ.vA)(l,"No checkIntervalMs for waitFor"),(0,eQ.vA)(l<=A,`wrong config for waitFor: checkIntervalMs must be less than timeoutMs, config: {checkIntervalMs: ${l}, timeoutMs: ${A}}`);let h=Date.now(),f=h,g="";for(;f-h<=A;){let e=Date.now();f=e;let t=await this.createTypeQueryTask("WaitFor",n,r,p,i),o=await a.appendAndRun(t);if(null==o?void 0:o.output)return{output:void 0,runner:s};g=(null==o?void 0:o.thought)||!o&&`No result from assertion: ${n}`||`unknown error when waiting for assertion: ${n}`;let A=Date.now();if(A-e<l){let t=A-e,n=l-t,i=`Check interval is ${l}ms, ${t}ms elapsed since last check, sleeping for ${n}ms`,{tasks:o}=await this.convertPlanToExecutable([{type:"Sleep",param:{timeMs:n},thought:i}],r,r);o[0]&&await a.appendAndRun(o[0])}}return a.appendErrorPlan(`waitFor timeout: ${g}`)}constructor(e,t,r){at(this,"interface",void 0),at(this,"service",void 0),at(this,"taskCache",void 0),at(this,"providedActionSpace",void 0),at(this,"taskBuilder",void 0),at(this,"onTaskStartCallback",void 0),at(this,"hooks",void 0),at(this,"replanningCycleLimit",void 0),at(this,"waitAfterAction",void 0),at(this,"useDeviceTime",void 0),this.interface=e,this.service=t,this.taskCache=r.taskCache,this.onTaskStartCallback=null==r?void 0:r.onTaskStart,this.replanningCycleLimit=r.replanningCycleLimit,this.waitAfterAction=r.waitAfterAction,this.useDeviceTime=r.useDeviceTime,this.hooks=r.hooks,this.providedActionSpace=r.actionSpace,this.taskBuilder=new o5({interfaceInstance:e,service:t,taskCache:r.taskCache,actionSpace:this.getActionSpace(),waitAfterAction:r.waitAfterAction})}}async function ao(e,t,r){if(!(null==t?void 0:t.length))return r();if(!e.registerFileChooserListener)throw Error(`File upload is not supported on ${e.interfaceType}`);let n=async e=>{await e.accept(t)},{dispose:i,getError:o}=await e.registerFileChooserListener(n);try{let e=await r(),t=await o();if(t)throw t;return e}finally{i()}}function aa(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let as=(0,eN.a)("agent"),aA=(0,eN.a)("agent",{console:!0}),al={domIncluded:!1,screenshotIncluded:!0};class ac{get onDumpUpdate(){return this.dumpUpdateListeners[0]}set onDumpUpdate(e){this.dumpUpdateListeners=[],e&&this.dumpUpdateListeners.push(e)}get aiActContext(){return this.opts.aiActContext??this.opts.aiActionContext}get page(){return this.interface}assertModelFamilyForNonWebContext(){"puppeteer"!==this.interface.interfaceType&&"playwright"!==this.interface.interfaceType&&"static"!==this.interface.interfaceType&&"chrome-extension-proxy"!==this.interface.interfaceType&&"page-over-chrome-extension-bridge"!==this.interface.interfaceType&&this.modelConfigManager.throwErrorIfNonVLModel()}resolveReplanningCycleLimit(e){return this.opts.replanningCycleLimit??eY.getEnvConfigValueAsNumber(eD.TN)??e.adapter.planning.defaultReplanningCycleLimit}resolveModelRuntime(e){return nn(this.modelConfigManager.getModelConfig(e))}async getActionSpace(){return this.fullActionSpace}isRetryableContextError(e){return!1}async getUIContext(e){if(this.assertModelFamilyForNonWebContext(),this.frozenUIContext)return as("Using frozen page context for action:",e),this.frozenUIContext;let t=ac.CONTEXT_RETRY_MAX;for(let e=0;;e++)try{return await oF(this.interface,{uploadServerUrl:this.modelConfigManager.getUploadTestServerUrl(),screenshotShrinkFactor:this.opts.screenshotShrinkFactor})}catch(r){if(e<t&&this.isRetryableContextError(r)){as(`retryable context error (attempt ${e+1}/${t}), retrying in ${ac.CONTEXT_RETRY_DELAY_MS}ms: ${r}`),await new Promise(e=>setTimeout(e,ac.CONTEXT_RETRY_DELAY_MS));continue}throw r}}async _snapshotContext(){return await this.getUIContext("locate")}async setAIActionContext(e){await this.setAIActContext(e)}async setAIActContext(e){this.aiActContext&&console.warn("aiActContext is already set, and it is called again, will override the previous setting"),this.opts.aiActContext=e,this.opts.aiActionContext=e}resetDump(){return this.dump=new n0({sdkVersion:"1.10.1",groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[],modelBriefs:[],deviceType:this.interface.interfaceType}),this.executionDumpIndexByRunner=new WeakMap,this.dump}appendExecutionDump(e,t){let r=this.dump;if(t){let n=this.executionDumpIndexByRunner.get(t);if(void 0!==n){r.executions[n]=e;return}r.executions.push(e),this.executionDumpIndexByRunner.set(t,r.executions.length-1);return}r.executions.push(e)}dumpDataString(e){return(this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,eQ.ht||(null==e?void 0:e.inlineScreenshots))?this.dump.serializeWithInlineScreenshots():this.dump.serialize()}reportHTMLString(e){return i1(this.dumpDataString(e))}writeOutActionDumps(e){let t=e||this.lastExecutionDump;t&&(this.lastExecutionDump=t,this.reportGenerator.onExecutionUpdate(t,this.getReportMeta(),this.opts.reportAttributes)),this.reportFile=this.reportGenerator.getReportPath()}getReportMeta(){return{groupName:this.dump.groupName,groupDescription:this.dump.groupDescription,sdkVersion:this.dump.sdkVersion,modelBriefs:this.dump.modelBriefs,deviceType:this.dump.deviceType}}async callbackOnTaskStartTip(e){let t=ae(e),r=t?`${o4(e)} - ${t}`:o4(e);this.onTaskStartTip&&await this.onTaskStartTip(r)}wrapActionInActionSpace(e){return async t=>await this.callActionInActionSpace(e,t)}async callActionInActionSpace(e,t){as("callActionInActionSpace",e,",",t);let r={type:e,param:t||{},thought:""};as("actionPlan",r);let n=[r].filter(Boolean),i=o9(e,o8((null==t?void 0:t.locate)||{})),o=this.resolveModelRuntime("default"),a=this.resolveModelRuntime("planning"),{output:s}=await this.taskExecutor.runPlans(i,n,a,o);return s}async aiTap(e,t){(0,eQ.vA)(e,"missing locate prompt for tap");let r=iP(e,t),n=(null==t?void 0:t.fileChooserAccept)?this.normalizeFileInput(t.fileChooserAccept):void 0;await ao(this.interface,n,async()=>{await this.callActionInActionSpace("Tap",{locate:r})})}async aiRightClick(e,t){(0,eQ.vA)(e,"missing locate prompt for right click");let r=iP(e,t);await this.callActionInActionSpace("RightClick",{locate:r})}async aiDoubleClick(e,t){(0,eQ.vA)(e,"missing locate prompt for double click");let r=iP(e,t);await this.callActionInActionSpace("DoubleClick",{locate:r})}async aiHover(e,t){(0,eQ.vA)(e,"missing locate prompt for hover");let r=iP(e,t);await this.callActionInActionSpace("Hover",{locate:r})}async aiInput(e,t,r){let n,i,o;"object"==typeof t&&null!==t&&"value"in t?(i=e,n=t.value,o=t):(n=e,i=t,o={...r,value:n}),(0,eQ.vA)("string"==typeof n||"number"==typeof n,"input value must be a string or number, use empty string if you want to clear the input"),(0,eQ.vA)(i,"missing locate prompt for input");let a=iP(i,o),s="number"==typeof n?String(n):n,A=(null==o?void 0:o.mode)==="append"?"typeOnly":null==o?void 0:o.mode;await this.callActionInActionSpace("Input",{...o||{},value:s,locate:a,mode:A})}async aiKeyboardPress(e,t,r){let n,i;"object"==typeof t&&null!==t&&"keyName"in t?(n=e,i=t):(n=t,i={...r||{},keyName:e}),(0,eQ.vA)(null==i?void 0:i.keyName,"missing keyName for keyboard press");let o=n?iP(n,i):void 0;await this.callActionInActionSpace("KeyboardPress",{...i||{},locate:o})}async aiScroll(e,t,r){let n,i;if(("string"==typeof e||null==e||"object"==typeof e&&null!==e&&"prompt"in e)&&"object"==typeof t&&null!==t?(n=e,i=t):(n=t,i={...r||{},...e||{}}),i){let e=(e=>{if(e)return e in oL?oL[e]:e})(i.scrollType);e!==i.scrollType&&(i={...i||{},scrollType:e})}let o=iP(n||"",i);await this.callActionInActionSpace("Scroll",{...i||{},locate:o})}async aiPinch(e,t){let r=iP(e||"",t);await this.callActionInActionSpace("Pinch",{...t,locate:r})}async aiLongPress(e,t){(0,eQ.vA)(e,"missing locate prompt for long press");let r=iP(e,t);await this.callActionInActionSpace("LongPress",{...t||{},locate:r})}async aiClearInput(e,t){(0,eQ.vA)(e,"missing locate prompt for clear input");let r=iP(e,t);await this.callActionInActionSpace("ClearInput",{locate:r})}async aiAct(e,t){let r=null==t?void 0:t._internalReportDisplay,n="string"==typeof e?e:e.prompt,i=(null==r?void 0:r.prompt)||n,o=(null==t?void 0:t.fileChooserAccept)?this.normalizeFileInput(t.fileChooserAccept):void 0,a=null==t?void 0:t.abortSignal;if(null==a?void 0:a.aborted)throw Error(`aiAct aborted: ${a.reason||"signal already aborted"}`);let s=async()=>{var n,s,A,l;let c=this.resolveModelRuntime("planning"),u=this.resolveModelRuntime("default"),d=(null==t?void 0:t.context)!==void 0?t.context:this.aiActContext,p=ov(e,d),h=(null==t?void 0:t.deepThink)===!0;h&&"custom"===c.adapter.planning.kind&&(aA(`The "deepThink" option is not supported for aiAct with custom planning adapters (modelFamily: ${c.config.modelFamily??"unknown"}). It will be ignored.`),h=!1);let f=null==t?void 0:t.deepLocate;f&&!c.adapter.planning.supportsActionDeepLocate&&(aA(`The "deepLocate" option is not supported for aiAct with the current planning adapter (modelFamily: ${c.config.modelFamily??"unknown"}). It will be ignored.`),f=!1);let g="default"===c.config.slot,m=!h&&g;as("setting includeLocateInPlanning to",m,{deepThink:h,noIndividualLocateModel:g});let y=null==t?void 0:t.cacheable,v=this.resolveReplanningCycleLimit(c),b=c.adapter.planning.cacheEnabled&&!1!==y?null==(n=this.taskCache)?void 0:n.matchPlanCache(p):void 0,w=!1;if((null==b?void 0:b.cacheUsable)&&(null==(s=this.taskCache)?void 0:s.isCacheResultUsed)&&(null==(l=b.cacheContent)||null==(A=l.yamlWorkflow)?void 0:A.trim())){let t=b.cacheContent.yamlWorkflow;try{await this.taskExecutor.loadYamlFlowAsPlanning(e,t,r),as("matched cache, will call .runYaml to run the action"),await this.runYaml(t);return}catch(e){w=!0,aA(`cached aiAct plan failed, will replan and disable the stale cache: ${e instanceof Error?e.message:String(e)}`)}}let E=h?2:1,{output:k}=await this.taskExecutor.action(e,c,u,m,d,y,v,E,h,o,f,a,r);if(this.taskCache&&!1!==y){let e=w?[]:null==k?void 0:k.yamlFlow;if(!w&&!(null==e?void 0:e.length))return null==k?void 0:k.output;let t=e??[],r=ik.Ay.dump({tasks:[{name:i,flow:t}]});this.taskCache.updateOrAppendCacheRecord({type:"plan",prompt:p,yamlWorkflow:r},b)}return null==k?void 0:k.output};return await s()}async runMarkdown(e,t){let r=await (0,or.readFile)(e,"utf-8"),{prompt:n}=await oP(r,e);return this.aiAct(n,{...t,_internalReportDisplay:{type:"Markdown",prompt:(0,tg.basename)(e)}})}async runGherkinScenario(e,t){return oI(this,e,t)}async aiAction(e,t){return this.aiAct(e,t)}async aiQuery(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:al,r=this.resolveModelRuntime("insight"),{output:n}=await this.taskExecutor.createTypeQueryExecution("Query",e,r,t);return n}async aiBoolean(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:al,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oZ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("Boolean",n,r,t,i);return o}async aiNumber(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:al,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oZ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("Number",n,r,t,i);return o}async aiString(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:al,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oZ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("String",n,r,t,i);return o}async aiAsk(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:al;return this.aiString(e,t)}async aiLocate(e,t){let r=iP(e,t);(0,eQ.vA)(r,"cannot get locate param for aiLocate");let n=o3(r),i=this.resolveModelRuntime("default"),o=this.resolveModelRuntime("planning"),{output:a}=await this.taskExecutor.runPlans(o9("Locate",o8(r)),[n],o,i,(null==t?void 0:t.uiContext)?{uiContext:t.uiContext}:void 0),{element:s}=a;return{rect:null==s?void 0:s.rect,center:null==s?void 0:s.center,dpr:null==s?void 0:s.dpr}}async aiAssert(e,t,r){let n=this.resolveModelRuntime("insight"),i={domIncluded:(null==r?void 0:r.domIncluded)??al.domIncluded,screenshotIncluded:(null==r?void 0:r.screenshotIncluded)??al.screenshotIncluded},{textPrompt:o,multimodalPrompt:a}=oZ(ov(e,null==r?void 0:r.context)),s="string"==typeof e?e:e.prompt;try{let{output:e,thought:A}=await this.taskExecutor.createTypeQueryExecution("Assert",o,n,i,a,{abortSignal:null==r?void 0:r.abortSignal}),l=!!e,c=l?void 0:`Assertion failed: ${t||s}
|
|
944
|
+
${u}${l}`;return f.trim()?f:""})(e,0,n).replace(/^\s*\n/gm,"")}(e,200,!1,(null==n?void 0:n.domIncluded)==="visible-only")}try{l=await this.service.extract(h,r,n,g,i,d,o)}catch(e){throw e instanceof nV&&u(e.dump),e}let{data:m,thought:y,dump:v}=l;u(v);let b=m;if(p&&("string"==typeof m?b=m:"WaitFor"===e?b=null!=m&&m[f]:null==m?b=null:(null==m?void 0:m[f])!==void 0?b=m[f]:(null==m?void 0:m.result)!==void 0?b=m.result:(0,eQ.vA)(!1,"No result in query data")),"Assert"===e&&!b)throw c.thought=y,Error(`Assertion failed: ${y}`);return{output:b,log:A,thought:y}}}}async createTypeQueryExecution(e,t,r,n,i,o){let a=this.createExecutionSession(ae(e,"string"==typeof t?t:JSON.stringify(t))),s=await this.createTypeQueryTask(e,t,r,n,i,o),A=a.getRunner(),l=await a.appendAndRun(s);if(!l)throw Error("result of taskExecutor.flush() is undefined in function createTypeQueryTask");let{output:c,thought:u}=l;return{output:c,thought:u,runner:A}}async waitFor(e,t,r){let{textPrompt:n,multimodalPrompt:i}=oJ(e),o=`waitFor: ${n}`,a=this.createExecutionSession(ae("WaitFor",o)),s=a.getRunner(),{timeoutMs:A,checkIntervalMs:l,domIncluded:c,screenshotIncluded:u,...d}=t,p={domIncluded:c,screenshotIncluded:u,...d};(0,eQ.vA)(e,"No assertion for waitFor"),(0,eQ.vA)(A,"No timeoutMs for waitFor"),(0,eQ.vA)(l,"No checkIntervalMs for waitFor"),(0,eQ.vA)(l<=A,`wrong config for waitFor: checkIntervalMs must be less than timeoutMs, config: {checkIntervalMs: ${l}, timeoutMs: ${A}}`);let h=Date.now(),f=h,g="";for(;f-h<=A;){let e=Date.now();f=e;let t=await this.createTypeQueryTask("WaitFor",n,r,p,i),o=await a.appendAndRun(t);if(null==o?void 0:o.output)return{output:void 0,runner:s};g=(null==o?void 0:o.thought)||!o&&`No result from assertion: ${n}`||`unknown error when waiting for assertion: ${n}`;let A=Date.now();if(A-e<l){let t=A-e,n=l-t,i=`Check interval is ${l}ms, ${t}ms elapsed since last check, sleeping for ${n}ms`,{tasks:o}=await this.convertPlanToExecutable([{type:"Sleep",param:{timeMs:n},thought:i}],r,r);o[0]&&await a.appendAndRun(o[0])}}return a.appendErrorPlan(`waitFor timeout: ${g}`)}constructor(e,t,r){ar(this,"interface",void 0),ar(this,"service",void 0),ar(this,"taskCache",void 0),ar(this,"providedActionSpace",void 0),ar(this,"taskBuilder",void 0),ar(this,"onTaskStartCallback",void 0),ar(this,"hooks",void 0),ar(this,"replanningCycleLimit",void 0),ar(this,"waitAfterAction",void 0),ar(this,"useDeviceTime",void 0),this.interface=e,this.service=t,this.taskCache=r.taskCache,this.onTaskStartCallback=null==r?void 0:r.onTaskStart,this.replanningCycleLimit=r.replanningCycleLimit,this.waitAfterAction=r.waitAfterAction,this.useDeviceTime=r.useDeviceTime,this.hooks=r.hooks,this.providedActionSpace=r.actionSpace,this.taskBuilder=new o7({interfaceInstance:e,service:t,taskCache:r.taskCache,actionSpace:this.getActionSpace(),waitAfterAction:r.waitAfterAction})}}async function aa(e,t,r){if(!(null==t?void 0:t.length))return r();if(!e.registerFileChooserListener)throw Error(`File upload is not supported on ${e.interfaceType}`);let n=async e=>{await e.accept(t)},{dispose:i,getError:o}=await e.registerFileChooserListener(n);try{let e=await r(),t=await o();if(t)throw t;return e}finally{i()}}function as(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let aA=(0,eN.a)("agent"),al=(0,eN.a)("agent",{console:!0}),ac={domIncluded:!1,screenshotIncluded:!0};class au{get onDumpUpdate(){return this.dumpUpdateListeners[0]}set onDumpUpdate(e){this.dumpUpdateListeners=[],e&&this.dumpUpdateListeners.push(e)}get aiActContext(){return this.opts.aiActContext??this.opts.aiActionContext}get page(){return this.interface}assertModelFamilyForNonWebContext(){"puppeteer"!==this.interface.interfaceType&&"playwright"!==this.interface.interfaceType&&"static"!==this.interface.interfaceType&&"chrome-extension-proxy"!==this.interface.interfaceType&&"page-over-chrome-extension-bridge"!==this.interface.interfaceType&&this.modelConfigManager.throwErrorIfNonVLModel()}resolveReplanningCycleLimit(e){return this.opts.replanningCycleLimit??eY.getEnvConfigValueAsNumber(eD.TN)??e.adapter.planning.defaultReplanningCycleLimit}resolveModelRuntime(e){return nn(this.modelConfigManager.getModelConfig(e))}async getActionSpace(){return this.fullActionSpace}isRetryableContextError(e){return!1}async getUIContext(e){if(this.assertModelFamilyForNonWebContext(),this.frozenUIContext)return aA("Using frozen page context for action:",e),this.frozenUIContext;let t=au.CONTEXT_RETRY_MAX;for(let e=0;;e++)try{return await oK(this.interface,{uploadServerUrl:this.modelConfigManager.getUploadTestServerUrl(),screenshotShrinkFactor:this.opts.screenshotShrinkFactor})}catch(r){if(e<t&&this.isRetryableContextError(r)){aA(`retryable context error (attempt ${e+1}/${t}), retrying in ${au.CONTEXT_RETRY_DELAY_MS}ms: ${r}`),await new Promise(e=>setTimeout(e,au.CONTEXT_RETRY_DELAY_MS));continue}throw r}}async _snapshotContext(){return await this.getUIContext("locate")}async setAIActionContext(e){await this.setAIActContext(e)}async setAIActContext(e){this.aiActContext&&console.warn("aiActContext is already set, and it is called again, will override the previous setting"),this.opts.aiActContext=e,this.opts.aiActionContext=e}resetDump(){return this.dump=new n0({sdkVersion:i3(),groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[],modelBriefs:[],deviceType:this.interface.interfaceType}),this.executionDumpIndexByRunner=new WeakMap,this.dump}appendExecutionDump(e,t){let r=this.dump;if(t){let n=this.executionDumpIndexByRunner.get(t);if(void 0!==n){r.executions[n]=e;return}r.executions.push(e),this.executionDumpIndexByRunner.set(t,r.executions.length-1);return}r.executions.push(e)}dumpDataString(e){return(this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,eQ.ht||(null==e?void 0:e.inlineScreenshots))?this.dump.serializeWithInlineScreenshots():this.dump.serialize()}reportHTMLString(e){return i1(this.dumpDataString(e))}writeOutActionDumps(e){let t=e||this.lastExecutionDump;t&&(this.lastExecutionDump=t,this.reportGenerator.onExecutionUpdate(t,this.getReportMeta(),this.opts.reportAttributes)),this.reportFile=this.reportGenerator.getReportPath()}getReportMeta(){return{groupName:this.dump.groupName,groupDescription:this.dump.groupDescription,sdkVersion:this.dump.sdkVersion,modelBriefs:this.dump.modelBriefs,deviceType:this.dump.deviceType}}async callbackOnTaskStartTip(e){let t=at(e),r=t?`${o8(e)} - ${t}`:o8(e);this.onTaskStartTip&&await this.onTaskStartTip(r)}wrapActionInActionSpace(e){return async t=>await this.callActionInActionSpace(e,t)}async callActionInActionSpace(e,t){aA("callActionInActionSpace",e,",",t);let r={type:e,param:t||{},thought:""};aA("actionPlan",r);let n=[r].filter(Boolean),i=ae(e,o6((null==t?void 0:t.locate)||{})),o=this.resolveModelRuntime("default"),a=this.resolveModelRuntime("planning"),{output:s}=await this.taskExecutor.runPlans(i,n,a,o);return s}async aiTap(e,t){(0,eQ.vA)(e,"missing locate prompt for tap");let r=iP(e,t),n=(null==t?void 0:t.fileChooserAccept)?this.normalizeFileInput(t.fileChooserAccept):void 0;await aa(this.interface,n,async()=>{await this.callActionInActionSpace("Tap",{locate:r})})}async aiRightClick(e,t){(0,eQ.vA)(e,"missing locate prompt for right click");let r=iP(e,t);await this.callActionInActionSpace("RightClick",{locate:r})}async aiDoubleClick(e,t){(0,eQ.vA)(e,"missing locate prompt for double click");let r=iP(e,t);await this.callActionInActionSpace("DoubleClick",{locate:r})}async aiHover(e,t){(0,eQ.vA)(e,"missing locate prompt for hover");let r=iP(e,t);await this.callActionInActionSpace("Hover",{locate:r})}async aiInput(e,t,r){let n,i,o;"object"==typeof t&&null!==t&&"value"in t?(i=e,n=t.value,o=t):(n=e,i=t,o={...r,value:n}),(0,eQ.vA)("string"==typeof n||"number"==typeof n,"input value must be a string or number, use empty string if you want to clear the input"),(0,eQ.vA)(i,"missing locate prompt for input");let a=iP(i,o),s="number"==typeof n?String(n):n,A=(null==o?void 0:o.mode)==="append"?"typeOnly":null==o?void 0:o.mode;await this.callActionInActionSpace("Input",{...o||{},value:s,locate:a,mode:A})}async aiKeyboardPress(e,t,r){let n,i;"object"==typeof t&&null!==t&&"keyName"in t?(n=e,i=t):(n=t,i={...r||{},keyName:e}),(0,eQ.vA)(null==i?void 0:i.keyName,"missing keyName for keyboard press");let o=n?iP(n,i):void 0;await this.callActionInActionSpace("KeyboardPress",{...i||{},locate:o})}async aiScroll(e,t,r){let n,i;if(("string"==typeof e||null==e||"object"==typeof e&&null!==e&&"prompt"in e)&&"object"==typeof t&&null!==t?(n=e,i=t):(n=t,i={...r||{},...e||{}}),i){let e=(e=>{if(e)return e in oF?oF[e]:e})(i.scrollType);e!==i.scrollType&&(i={...i||{},scrollType:e})}let o=iP(n||"",i);await this.callActionInActionSpace("Scroll",{...i||{},locate:o})}async aiPinch(e,t){let r=iP(e||"",t);await this.callActionInActionSpace("Pinch",{...t,locate:r})}async aiLongPress(e,t){(0,eQ.vA)(e,"missing locate prompt for long press");let r=iP(e,t);await this.callActionInActionSpace("LongPress",{...t||{},locate:r})}async aiClearInput(e,t){(0,eQ.vA)(e,"missing locate prompt for clear input");let r=iP(e,t);await this.callActionInActionSpace("ClearInput",{locate:r})}async aiAct(e,t){let r=null==t?void 0:t._internalReportDisplay,n="string"==typeof e?e:e.prompt,i=(null==r?void 0:r.prompt)||n,o=(null==t?void 0:t.fileChooserAccept)?this.normalizeFileInput(t.fileChooserAccept):void 0,a=null==t?void 0:t.abortSignal;if(null==a?void 0:a.aborted)throw Error(`aiAct aborted: ${a.reason||"signal already aborted"}`);let s=async()=>{var n,s,A,l;let c=this.resolveModelRuntime("planning"),u=this.resolveModelRuntime("default"),d=(null==t?void 0:t.context)!==void 0?t.context:this.aiActContext,p=ob(e,d),h=(null==t?void 0:t.deepThink)===!0;h&&"custom"===c.adapter.planning.kind&&(al(`The "deepThink" option is not supported for aiAct with custom planning adapters (modelFamily: ${c.config.modelFamily??"unknown"}). It will be ignored.`),h=!1);let f=null==t?void 0:t.deepLocate;f&&!c.adapter.planning.supportsActionDeepLocate&&(al(`The "deepLocate" option is not supported for aiAct with the current planning adapter (modelFamily: ${c.config.modelFamily??"unknown"}). It will be ignored.`),f=!1);let g="default"===c.config.slot,m=!h&&g;aA("setting includeLocateInPlanning to",m,{deepThink:h,noIndividualLocateModel:g});let y=null==t?void 0:t.cacheable,v=this.resolveReplanningCycleLimit(c),b=c.adapter.planning.cacheEnabled&&!1!==y?null==(n=this.taskCache)?void 0:n.matchPlanCache(p):void 0,w=!1;if((null==b?void 0:b.cacheUsable)&&(null==(s=this.taskCache)?void 0:s.isCacheResultUsed)&&(null==(l=b.cacheContent)||null==(A=l.yamlWorkflow)?void 0:A.trim())){let t=b.cacheContent.yamlWorkflow;try{await this.taskExecutor.loadYamlFlowAsPlanning(e,t,r),aA("matched cache, will call .runYaml to run the action"),await this.runYaml(t);return}catch(e){w=!0,al(`cached aiAct plan failed, will replan and disable the stale cache: ${e instanceof Error?e.message:String(e)}`)}}let E=h?2:1,{output:k}=await this.taskExecutor.action(e,c,u,m,d,y,v,E,h,o,f,a,r);if(this.taskCache&&!1!==y){let e=w?[]:null==k?void 0:k.yamlFlow;if(!w&&!(null==e?void 0:e.length))return null==k?void 0:k.output;let t=e??[],r=ik.Ay.dump({tasks:[{name:i,flow:t}]});this.taskCache.updateOrAppendCacheRecord({type:"plan",prompt:p,yamlWorkflow:r},b)}return null==k?void 0:k.output};return await s()}async runMarkdown(e,t){let r=await (0,on.readFile)(e,"utf-8"),{prompt:n}=await oR(r,e);return this.aiAct(n,{...t,_internalReportDisplay:{type:"Markdown",prompt:(0,tg.basename)(e)}})}async runGherkinScenario(e,t){return oO(this,e,t)}async aiAction(e,t){return this.aiAct(e,t)}async aiQuery(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ac,r=this.resolveModelRuntime("insight"),{output:n}=await this.taskExecutor.createTypeQueryExecution("Query",e,r,t);return n}async aiBoolean(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ac,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oJ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("Boolean",n,r,t,i);return o}async aiNumber(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ac,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oJ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("Number",n,r,t,i);return o}async aiString(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ac,r=this.resolveModelRuntime("insight"),{textPrompt:n,multimodalPrompt:i}=oJ(e),{output:o}=await this.taskExecutor.createTypeQueryExecution("String",n,r,t,i);return o}async aiAsk(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ac;return this.aiString(e,t)}async aiLocate(e,t){let r=iP(e,t);(0,eQ.vA)(r,"cannot get locate param for aiLocate");let n=o5(r),i=this.resolveModelRuntime("default"),o=this.resolveModelRuntime("planning"),{output:a}=await this.taskExecutor.runPlans(ae("Locate",o6(r)),[n],o,i,(null==t?void 0:t.uiContext)?{uiContext:t.uiContext}:void 0),{element:s}=a;return{rect:null==s?void 0:s.rect,center:null==s?void 0:s.center,dpr:null==s?void 0:s.dpr}}async aiAssert(e,t,r){let n=this.resolveModelRuntime("insight"),i={domIncluded:(null==r?void 0:r.domIncluded)??ac.domIncluded,screenshotIncluded:(null==r?void 0:r.screenshotIncluded)??ac.screenshotIncluded},{textPrompt:o,multimodalPrompt:a}=oJ(ob(e,null==r?void 0:r.context)),s="string"==typeof e?e:e.prompt;try{let{output:e,thought:A}=await this.taskExecutor.createTypeQueryExecution("Assert",o,n,i,a,{abortSignal:null==r?void 0:r.abortSignal}),l=!!e,c=l?void 0:`Assertion failed: ${t||s}
|
|
945
945
|
Reason: ${A||"(no_reason)"}`;if(null==r?void 0:r.keepRawResponse)return{pass:l,thought:A,message:c};if(!l)throw Error(c)}catch(e){if(e instanceof iH){let n=e.errorTask,i=null==n?void 0:n.thought,o=null==n?void 0:n.error,a=(null==n?void 0:n.errorMessage)||(o instanceof Error?o.message:o?String(o):void 0),A=`Assertion failed: ${t||s}
|
|
946
946
|
Reason: ${i||a||"(no_reason)"}`;if(null==r?void 0:r.keepRawResponse)return{pass:!1,thought:i,message:A};throw Error(A,{cause:o??e})}throw e}}async aiWaitFor(e,t){let r=this.resolveModelRuntime("insight");await this.taskExecutor.waitFor(e,{...t,timeoutMs:(null==t?void 0:t.timeoutMs)||15e3,checkIntervalMs:(null==t?void 0:t.checkIntervalMs)||3e3},r)}async ai(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.aiAct(...t)}async runYaml(e){let t=new iB(function(e,t){let r,n=e;if(-1!==e.indexOf("android")&&e.match(/deviceId:\s*(\d+)/)){let t;n=e.replace(/deviceId:\s*(\d+)/g,(e,r)=>(t=r,`deviceId: '${r}'`)),console.warn(`please use string-style deviceId in yaml script, for example: deviceId: "${t}"`)}let i=(r=!1,n.split("\n").map(e=>{let t=e.trimStart();if(!t||t.startsWith("#"))return e;if(0==e.length-t.length){if(iC.test(t))return r=!0,e;ij.test(t)&&(r=!1)}return function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r="",n=0,i=0;for(;i<e.length;){let o=e.indexOf("${",i);if(-1===o)break;let a=e.indexOf("}",o+2);if(-1===a)break;let s=e.slice(o+2,a);if(!s){i=a+1;continue}r+=e.slice(n,o);let A=s.trim(),l=ix.env[A];if(void 0===l)if(t)r+=e.slice(o,a+1);else throw Error(`Environment variable "${A}" is not defined`);else r+=l;n=a+1,i=a+1}return r+e.slice(n)}(e,r)}).join("\n")),o=ik.Ay.load(i,{schema:ik.Ay.JSON_SCHEMA}),a=t?`, failed to load ${t}`:"";return(0,eQ.vA)(o.tasks,`property "tasks" is required in yaml script ${a}`),(0,eQ.vA)(Array.isArray(o.tasks),`property "tasks" must be an array in yaml script, but got ${o.tasks}`),o}(e,"yaml"),async()=>({agent:this,freeFn:[]}));if(await t.run(),"error"===t.status){let e=t.taskStatusList.filter(e=>"error"===e.status).map(e=>{var t;return`task - ${e.name}: ${null==(t=e.error)?void 0:t.message}`}).join("\n");throw Error(`Error(s) occurred in running yaml script:
|
|
947
|
-
${e}`)}return{result:t.result}}async evaluateJavaScript(e){return(0,eQ.vA)(this.interface.evaluateJavaScript,"evaluateJavaScript is not supported in current agent"),this.interface.evaluateJavaScript(e)}addDumpUpdateListener(e){return this.dumpUpdateListeners.push(e),()=>{this.removeDumpUpdateListener(e)}}removeDumpUpdateListener(e){let t=this.dumpUpdateListeners.indexOf(e);t>-1&&this.dumpUpdateListeners.splice(t,1)}clearDumpUpdateListeners(){this.dumpUpdateListeners=[]}addProgressListener(e){return this.progressBus.subscribe(e)}removeProgressListener(e){this.progressBus.unsubscribe(e)}clearProgressListeners(){this.progressBus.clear()}notifyDumpUpdateListeners(e){let t=this.dumpDataString();for(let r of this.dumpUpdateListeners)try{r(t,e)}catch(e){console.error("Error in onDumpUpdate listener",e)}}async destroy(){let e;if(this.destroyed)return;this.destroyed=!0;try{var t,r;await (null==(t=(r=this.interface).destroy)?void 0:t.call(r))}catch(t){e=t}await this.reportGenerator.flush();let n=await this.reportGenerator.finalize();if(this.reportFile=n,this.resetDump(),e)throw e}async recordToReport(e,t){let r=Date.now(),n=null==t?void 0:t.screenshots,i=null==t?void 0:t.screenshotBase64,o=void 0!==n,a=void 0!==i;if(o&&!Array.isArray(n))throw Error("recordToReport: screenshots must be an array");if(a&&"string"!=typeof i)throw Error("recordToReport: screenshotBase64 must be a string");if(o&&a)throw Error("recordToReport: provide only one of screenshots or screenshotBase64");if(t&&"subType"in t)throw Error("recordToReport: subType is not supported");let s=o?n:void 0;if(s&&0===s.length)throw Error("recordToReport: screenshots cannot be empty");let A=(s??(a?[{base64:i}]:[{base64:await this.interface.screenshotBase64()}])).map((e,t)=>{let n=function(e,t){if(!e||"string"!=typeof e.base64)throw Error(`recordToReport: screenshot #${t+1} must include a base64 string`);if(void 0!==e.description&&"string"!=typeof e.description)throw Error(`recordToReport: screenshot #${t+1} description must be a string`);return{base64:((e,t)=>{let r=(null==t?void 0:t.label)??"screenshot base64",n=e.trim();if(!n)throw Error(`${r} cannot be empty`);let i=n.match(tS);if(i){let e="jpg"===i[1].toLowerCase()?"jpeg":i[1].toLowerCase(),t=i[2];if(!t.replace(/\s/g,""))throw Error(`${r} cannot be empty`);return tj(e,t)}if(n.startsWith("data:")||!tC.test(n))throw Error(`${r} must be a PNG/JPEG data URI or raw PNG base64 string`);return tj("png",n)})(e.base64,{label:`recordToReport: screenshot #${t+1} base64`}),description:e.description}}(e,t),i=r+t;return{type:"screenshot",ts:i,screenshot:ru.create(n.base64,i),description:n.description}}),l={taskId:(0,eQ.uR)(),type:"Log",subType:"Screenshot",status:"finished",recorder:A,timing:{start:r,end:r,cost:0},param:{content:(null==t?void 0:t.content)||""},executor:async()=>{}},c=new n$({id:(0,eQ.uR)(),logTime:r,name:`Log - ${e||"untitled"}`,description:(null==t?void 0:t.content)||"",tasks:[l]});this.appendExecutionDump(c),this.writeOutActionDumps(c),await this.reportGenerator.flush(),this.notifyDumpUpdateListeners(c)}async recordErrorToReport(e,t){let r=Date.now(),n=[],i=t.screenshotBase64??await this.interface.screenshotBase64();i&&n.push({type:"screenshot",ts:r,screenshot:ru.create(i,r)});let o={taskId:(0,eQ.uR)(),type:"Log",subType:"Error",status:"failed",recorder:n,timing:{start:r,end:r,cost:0},param:{content:t.content||""},error:t.error,errorMessage:t.error.message,errorStack:t.error.stack,executor:async()=>{}},a=new n$({id:(0,eQ.uR)(),logTime:r,name:e,description:t.content||t.error.message,tasks:[o]});this.appendExecutionDump(a),this.writeOutActionDumps(a),await this.reportGenerator.flush(),this.notifyDumpUpdateListeners(a)}async logScreenshot(e,t){await this.recordToReport(e,t)}_unstableLogContent(){let{groupName:e,groupDescription:t,executions:r}=this.dump;return{groupName:e,groupDescription:t,executions:r||[]}}async freezePageContext(){as("Freezing page context");let e=await this._snapshotContext();e._isFrozen=!0,this.frozenUIContext=e,as("Page context frozen successfully")}async unfreezePageContext(){as("Unfreezing page context"),this.frozenUIContext=void 0,as("Page context unfrozen successfully")}processCacheConfig(e){!function(e){if(!0===e)throw Error('cache: true requires an explicit cache ID. Please provide:\nExample: cache: { id: "my-cache-id" }');if(!e||"object"!=typeof e)return;if(!e.id)throw Error('cache configuration requires an explicit id.\nExample: cache: { id: "my-cache-id" }');if(void 0!==e.cacheDir&&("string"!=typeof e.cacheDir||!e.cacheDir.trim()))throw Error('cache.cacheDir must be a non-empty string when provided.\nExample: cache: { id: "my-cache-id", cacheDir: "./my-cache-dir" }');let t=e.strategy;if(void 0!==t&&"string"!=typeof t)throw Error(`cache.strategy must be a string when provided, but received type ${typeof t}`);if(void 0!==t&&!oi.some(e=>e===t))throw Error(`cache.strategy must be one of ${oo}, but received "${t}"`)}(e.cache);let t=function(e,t){if(void 0!==e){if(!1===e)return!1;if(!0===e)return{id:t};if("object"==typeof e&&null!==e)return e.id?e:{...e,id:t}}if(eY.getEnvConfigInBoolean(eD.Od)&&t)return{id:t}}(e.cache,e.cacheId||"default");if(!t)return null;if("object"==typeof t&&null!==t){var r;let e=t.id,n=t.strategy??"read-write",i="write-only"===n;return{id:e,enabled:!i,readOnly:"read-only"===n,writeOnly:i,cacheDir:null==(r=t.cacheDir)?void 0:r.trim()}}return null}normalizeFileInput(e){return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{fileExists:r=oR.existsSync,isInBrowser:n=eQ.ht,resolvePath:i=tg.resolve,wslDistroName:o=oz.env.WSL_DISTRO_NAME,cwd:a=oz.cwd()}=t;if(n)throw Error("File chooser is not supported in browser environment");return e.map(e=>{let t=i(e);if(!r(t))throw Error(`File not found: ${e}. Resolved to: ${t}. Current working directory: ${a}`);if(!o)return t;let n=t.match(/^\/mnt\/([a-z])\//);return n?`${n[1].toUpperCase()}:\\${t.slice(7).replace(/\//g,"\\")}`:`\\\\wsl$\\${o}${t.replace(/\//g,"\\")}`})}(Array.isArray(e)?e:[e])}async flushCache(e){if(!this.taskCache)throw Error("Cache is not configured");this.taskCache.flushCacheToFile(e)}constructor(e,t){var r,n;aa(this,"interface",void 0),aa(this,"service",void 0),aa(this,"dump",void 0),aa(this,"reportFile",void 0),aa(this,"reportFileName",void 0),aa(this,"taskExecutor",void 0),aa(this,"opts",void 0),aa(this,"dryMode",!1),aa(this,"onTaskStartTip",void 0),aa(this,"taskCache",void 0),aa(this,"dumpUpdateListeners",[]),aa(this,"progressBus",new oA),aa(this,"destroyed",!1),aa(this,"modelConfigManager",void 0),aa(this,"frozenUIContext",void 0),aa(this,"executionDumpIndexByRunner",new WeakMap),aa(this,"fullActionSpace",void 0),aa(this,"reportGenerator",void 0),aa(this,"lastExecutionDump",void 0),this.interface=e,this.opts=Object.assign({generateReport:!0,persistExecutionDump:!1,autoPrintReportMsg:!0,groupName:"Midscene Report",groupDescription:""},t||{}),oe(this.opts);const i=this.opts.aiActContext??this.opts.aiActionContext;if(void 0!==i&&(this.opts.aiActContext=i,(n=this.opts).aiActionContext??(n.aiActionContext=i)),(null==t?void 0:t.modelConfig)&&("object"!=typeof(null==t?void 0:t.modelConfig)||Array.isArray(t.modelConfig)))throw Error(`opts.modelConfig must be a plain object map of env keys to values, but got ${typeof(null==t?void 0:t.modelConfig)}`);const o=(null==t?void 0:t.modelConfig)||(null==t?void 0:t.createOpenAIClient);this.modelConfigManager=o?new eq(null==t?void 0:t.modelConfig,null==t?void 0:t.createOpenAIClient):eW,this.onTaskStartTip=this.opts.onTaskStartTip,this.service=new n6(async()=>this.getUIContext());const a=this.processCacheConfig(t||{});a&&(this.taskCache=new oq(a.id,a.enabled,void 0,{readOnly:a.readOnly,writeOnly:a.writeOnly,cacheDir:a.cacheDir}));const s=this.interface.actionSpace();this.fullActionSpace=[...s,{name:"Sleep",description:"Wait for a specified duration before continuing. Defaults to 1 second (1000ms) if not specified.",paramSchema:on,sample:{timeMs:2e3},call:async e=>{let t=(null==e?void 0:e.timeMs)??1e3;(0,eN.a)("device:common-action")(`Sleeping for ${t}ms`),await new Promise(e=>setTimeout(e,t))}}],this.taskExecutor=new ai(this.interface,this.service,{taskCache:this.taskCache,onTaskStart:this.callbackOnTaskStartTip.bind(this),replanningCycleLimit:this.opts.replanningCycleLimit,waitAfterAction:this.opts.waitAfterAction,useDeviceTime:this.opts.useDeviceTime,actionSpace:this.fullActionSpace,hooks:{onSnapshotChange:async e=>{let t=e.dump();this.appendExecutionDump(t,e),this.writeOutActionDumps(t),await this.reportGenerator.flush();let r=this.dumpDataString();for(let e of this.dumpUpdateListeners)try{e(r,t)}catch(e){console.error("Error in onDumpUpdate listener",e)}},onProgress:this.progressBus.publish}}),this.dump=this.resetDump(),this.reportFileName=(null==t?void 0:t.reportFileName)??oK((null==t?void 0:t.testId)||this.interface.interfaceType||"web"),this.reportGenerator=ot.create(this.reportFileName,{generateReport:this.opts.generateReport,persistExecutionDump:this.opts.persistExecutionDump,outputFormat:this.opts.outputFormat,autoPrintReportMsg:this.opts.autoPrintReportMsg,reuseExistingReport:(null==(r=this.opts.reportAttributes)?void 0:r["data-group-id"])===this.reportFileName})}}aa(ac,"CONTEXT_RETRY_MAX",3),aa(ac,"CONTEXT_RETRY_DELAY_MS",1500),r(4201).Buffer;RegExp(`${rr}="(inline|directory)"`);r(4201).Buffer;tu.k5(["split","to-markdown","merge-html"]).optional().describe("Report action to run. Supports: split, to-markdown, merge-html. Defaults to split."),tu.Yj().optional().describe("Input report HTML path (e.g. ./report/index.html). Used by split and to-markdown."),tu.KC([tu.Yj(),tu.YO(tu.Yj())]).optional().describe("Input report HTML path for the merge action. Repeat the flag to merge multiple reports (e.g. --htmlReport ./a/index.html --htmlReport ./b.html)."),tu.Yj().optional().describe("Output directory for generated report artifacts. For merge, defaults to the Midscene report directory."),tu.Yj().optional().describe("Output report file/directory name (without .html) for the merge action. Defaults to an auto-generated name."),tu.KC([tu.zM(),tu.Yj()]).optional().describe("Overwrite the existing merged report file if present (merge action only).");class au{async getActionSpace(e){return[]}validateParams(e,t){if(!(null==t?void 0:t.paramSchema)||!this.actionNeedsStructuredParams(t))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};try{let r=this.prepareParamsForValidation(e.params,t);return t.paramSchema.parse(r),{valid:!0}}catch(e){return this.handleValidationError(e)}}createDisplayContent(e,t,r){return t&&e.params&&(null==r?void 0:r.paramSchema)?this.buildParamsDisplayList(e.params,r).join("\n")||e.prompt||"":e.prompt||""}formatBasicErrorMessage(e){return(null==e?void 0:e.message)||"Unknown error"}getSchemaKeys(e){if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[];let t=e.paramSchema;return t&&"shape"in t?Object.keys(t.shape):[]}filterValidParams(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return Object.keys(e).forEach(n=>{t.includes(n)||void 0===e[n]||null===e[n]||""===e[n]||(r[n]=e[n])}),r}actionNeedsStructuredParams(e){return"object"!=typeof e.paramSchema||!("shape"in e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0}prepareParamsForValidation(e,t){let r={...e};return t.paramSchema&&tW(t.paramSchema).forEach(e=>{"string"==typeof r[e]&&(r[e]={midscene_location_field_flag:!0,prompt:r[e],center:[0,0],rect:{left:0,top:0,width:0,height:0}})}),r}handleValidationError(e){if(e.errors&&e.errors.length>0){let t=e.errors.filter(e=>{let t=e.path.join(".");return!t.includes("center")&&!t.includes("rect")&&!t.includes("midscene_location_field_flag")}).map(e=>{let t=e.path.join(".");return`${t}: ${e.message}`});if(t.length>0)return{valid:!1,errorMessage:`Validation error: ${t.join(", ")}`}}let t=e instanceof Error?e.message:"Unknown validation error";return{valid:!1,errorMessage:`Parameter validation failed: ${t}`}}buildParamsDisplayList(e,t){let r=[],n=t.paramSchema;if(!(n&&"shape"in n))return r;let i=tW(n);return Object.keys(n.shape).forEach(t=>{let n=e[t];if(this.isValidParamValue(n)){let e=this.capitalizeFirstLetter(t),o=this.formatParamValue(t,n,i.includes(t));r.push(`${e}: ${o}`)}}),r}isValidParamValue(e){return null!=e&&""!==e}capitalizeFirstLetter(e){return e.charAt(0).toUpperCase()+e.slice(1)}formatParamValue(e,t,r){return r||"string"==typeof t?`"${t}"`:"number"==typeof t&&"distance"===e?`${t}px`:`${t}`}}function ad(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ap extends au{get id(){return this._id}onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}setProgressCallback(e){this.progressCallback=void 0,this.progressCallback=e}async parseStructuredParams(e,t,r){return await iF(e,t,r)}formatErrorMessage(e){return((null==e?void 0:e.message)||"").includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":this.formatBasicErrorMessage(e)}async getActionSpace(e){var t;if(!this.agent&&this.agentFactory)try{this.agent=await this.agentFactory()}catch(e){return console.warn("Failed to create agent for actionSpace:",e),[]}if(null==(t=this.agent)?void 0:t.getActionSpace)return await this.agent.getActionSpace();if(this.agent&&"interface"in this.agent&&"object"==typeof this.agent.interface){let e=this.agent.interface;if(null==e?void 0:e.actionSpace)return e.actionSpace()}return e&&"object"==typeof e&&"actionSpace"in e?e.actionSpace():[]}async checkStatus(){return!0}async overrideConfig(e){e$(e),console.log("Config updated. Agent will be recreated on next execution.")}async runConnectivityTest(e){let t=new eq(e);return iA({defaultModelConfig:t.getModelConfig("default"),planningModelConfig:t.getModelConfig("planning"),insightModelConfig:t.getModelConfig("insight")})}async detachDebuggerSafely(){try{var e,t;let r=null==(e=this.agent)?void 0:e.interface;await (null==r||null==(t=r.detachDebugger)?void 0:t.call(r))}catch(e){console.warn("Failed to detach debugger:",e)}}async executeAction(e,t,r){var n,i,o;let a;if(this.agentFactory){if(this.agent){console.log("Destroying old agent before execution...");try{await (null==(n=(i=this.agent).destroy)?void 0:n.call(i))}catch(e){console.warn("Failed to destroy old agent:",e)}this.agent=null}await this.recreateAgent()}if(!this.agent)throw Error("No agent available. Please provide either an agent instance or agentFactory.");let s=this.agent,A=await this.getActionSpace();try{null==(o=s.resetDump)||o.call(s)}catch(e){console.warn("Failed to reset dump before execution:",e)}r.requestId&&(this.currentRequestId=r.requestId,a=s.addDumpUpdateListener((e,t)=>{this.currentRequestId===r.requestId&&this.dumpUpdateCallback&&this.dumpUpdateCallback(e,t)}));try{let n=null,i=null;try{n=await iK(s,e,A,t,r)}catch(e){i=e}let o={result:n,dump:null,reportHTML:null,error:i?i instanceof Error?i.message:String(i):null};try{if(s.dumpDataString){let e=s.dumpDataString();e&&(o.dump=n0.fromSerializedString(e))}}catch(e){console.warn("Failed to get dump from agent:",e)}try{s.reportHTMLString&&(o.reportHTML=s.reportHTMLString()||null)}catch(e){}try{s.writeOutActionDumps&&s.writeOutActionDumps()}catch(e){}return o}finally{a&&a()}}async recreateAgent(){if(!this.agentFactory)throw Error("Cannot recreate agent: factory function not provided. Please provide agentFactory in PlaygroundConfig to enable agent recreation.");console.log("Creating new agent with latest config...");try{this.agent=await this.agentFactory(),console.log("Agent created successfully")}catch(e){throw console.error("Failed to create agent:",e),e}}async cancelTask(e){if(!this.agent)return{error:"No active agent found for this requestId"};let t=null,r=null;try{if("function"==typeof this.agent.dumpDataString){let e=this.agent.dumpDataString();e&&(t=n0.fromSerializedString(e))}}catch(e){console.warn("[LocalExecutionAdapter] Failed to get dump data before cancel:",e)}try{if("function"==typeof this.agent.reportHTMLString){let e=this.agent.reportHTMLString();e&&"string"==typeof e&&!e.includes("REPLACE_ME_WITH_REPORT_HTML")&&(r=e)}}catch(e){console.warn("[LocalExecutionAdapter] reportHTMLString not available in this environment")}try{var n,i;return await (null==(n=(i=this.agent).destroy)?void 0:n.call(i)),this.agent=null,{success:!0,dump:t,reportHTML:r}}catch(n){let e=n instanceof Error?n.message:"Unknown error";return console.error(`[LocalExecutionAdapter] Failed to cancel agent: ${e}`),{error:`Failed to cancel: ${e}`,dump:t,reportHTML:r}}}async getCurrentExecutionData(){let e={dump:null,reportHTML:null};try{var t,r;if(null==(t=this.agent)?void 0:t.dumpDataString){let t=this.agent.dumpDataString();t&&(e.dump=n0.fromSerializedString(t))}(null==(r=this.agent)?void 0:r.reportHTMLString)&&(e.reportHTML=this.agent.reportHTMLString()||null)}catch(e){console.error("Failed to get current execution data:",e)}return e}async getInterfaceInfo(){var e,t,r;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e=this.agent.interface.interfaceType||"Unknown",n=(null==(t=(r=this.agent.interface).describe)?void 0:t.call(r))||void 0,i="function"==typeof this.agent.interface.size?await this.agent.interface.size():void 0,o="function"==typeof this.agent.interface.actionSpace?this.agent.interface.actionSpace().map(e=>null==e?void 0:e.name).filter(e=>"string"==typeof e):void 0;return{type:e,description:n,...i?{size:i}:{},...o?{actionTypes:o}:{}}}catch(e){return console.error("Failed to get interface info:",e),null}}async getRuntimeInfo(){var e,t,r,n;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e;return e=(n={interfaceType:this.agent.interface.interfaceType||"Unknown",interfaceDescription:(null==(t=(r=this.agent.interface).describe)?void 0:t.call(r))||void 0,supportsScreenshot:"function"==typeof this.agent.interface.screenshotBase64,mjpegStreamUrl:this.agent.interface.mjpegStreamUrl}).interfaceType||"Unknown",{platformId:n.platformId,title:n.title,platformDescription:n.platformDescription,interface:{type:e,description:n.interfaceDescription},preview:n.preview?n.preview:"number"==typeof n.scrcpyPort?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{kind:"scrcpy",screenshotPath:"/screenshot",capabilities:[{kind:"scrcpy",label:"scrcpy streaming",live:!0},{kind:"screenshot",label:"Screenshot fallback",live:!1}],custom:e,...t}}({scrcpyPort:n.scrcpyPort}):n.mjpegStreamUrl?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{kind:"mjpeg",screenshotPath:"/screenshot",mjpegPath:"/mjpeg",capabilities:[{kind:"mjpeg",label:"MJPEG streaming",live:!0},{kind:"screenshot",label:"Screenshot fallback",live:!1}],...e}}():n.supportsScreenshot?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{kind:"screenshot",screenshotPath:"/screenshot",capabilities:[{kind:"screenshot",label:"Screenshot polling",live:!1}],...e}}():{kind:"none",capabilities:[]},executionUxHints:function(e){if(!e)return[];let t=e.executionUxHints;if(Array.isArray(t))return t.filter(e=>"string"==typeof e&&e.length>0);let r=e.executionUx;return"string"==typeof r&&r.length>0?[r]:[]}(n.metadata),metadata:{...n.metadata||{}}}}catch(e){return console.error("Failed to get runtime info:",e),null}}constructor(e,t){super(),ad(this,"agent",void 0),ad(this,"agentFactory",void 0),ad(this,"dumpUpdateCallback",void 0),ad(this,"progressCallback",void 0),ad(this,"_id",void 0),ad(this,"currentRequestId",void 0),this.agent=e??null,this.agentFactory=t,this._id=(0,eQ.uR)()}}function ah(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class af extends au{onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}get id(){return this._id}validateParams(e,t){if(!(null==t?void 0:t.paramSchema)||!this.actionNeedsStructuredParams(t))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};if(t.paramSchema&&"object"==typeof t.paramSchema){let r=t.paramSchema;if(r.shape||"ZodObject"===r.type){let t=r.shape||{},n=Object.keys(t).filter(r=>{var n,i;let o=t[r];return!((null==o?void 0:o.isOptional)||(null==o||null==(n=o._def)?void 0:n.innerType)||(null==o||null==(i=o._def)?void 0:i.typeName)==="ZodOptional")&&(void 0===e.params[r]||""===e.params[r])});if(n.length>0)return{valid:!1,errorMessage:`Missing required parameters: ${n.join(", ")}`}}}return{valid:!0}}async parseStructuredParams(e,t,r){return await iF(e,t,r)}formatErrorMessage(e){let t=(null==e?void 0:e.message)||"",r=[{keyword:"adb",message:"ADB connection error. Please ensure device is connected and USB debugging is enabled."},{keyword:"UIAutomator",message:"UIAutomator error. Please ensure the UIAutomator server is running on the device."}].find(e=>{let{keyword:r}=e;return t.includes(r)});return r?r.message:this.formatBasicErrorMessage(e)}async executeAction(e,t,r){if(this.serverUrl&&"undefined"!=typeof window)return this.executeViaServer(e,t,r);throw Error("Remote execution adapter requires server URL for execution")}async executeViaServer(e,t,r){let n={type:e,prompt:t.prompt,...this.buildOptionalPayloadParams(r,t)};r.context&&(n.context=r.context),r.requestId&&this.dumpUpdateCallback&&this.startProgressPolling(r.requestId);try{let e=await fetch(`${this.serverUrl}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!e.ok){let t=await e.text().catch(()=>"Unknown error");throw Error(`Server request failed (${e.status}): ${t}`)}return await e.json()}catch(e){throw console.error("Execute via server failed:",e),e}finally{this.stopProgressPolling()}}buildOptionalPayloadParams(e,t){let r={};return[{key:"requestId",value:e.requestId},{key:"deepLocate",value:e.deepLocate},{key:"deepThink",value:e.deepThink},{key:"screenshotIncluded",value:e.screenshotIncluded},{key:"domIncluded",value:e.domIncluded},{key:"deviceOptions",value:e.deviceOptions},{key:"reportDisplay",value:e.reportDisplay},{key:"params",value:t.params}].forEach(e=>{let{key:t,value:n}=e;null!=n&&""!==n&&(r[t]=n)}),r}async getActionSpace(e){if(this.serverUrl&&"undefined"!=typeof window)try{let t=await fetch(`${this.serverUrl}/action-space`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e})});if(!t.ok)throw Error(`Failed to get action space: ${t.statusText}`);let r=await t.json();return Array.isArray(r)?r:[]}catch(e){console.error("Failed to get action space from server:",e)}if(e&&"object"==typeof e&&"actionSpace"in e)try{let t=e.actionSpace,r=await t();return Array.isArray(r)?r:[]}catch(e){console.error("Failed to get action space from context:",e)}return[]}async checkStatus(){if(!this.serverUrl)return!1;try{let e=await fetch(`${this.serverUrl}/status`);if(200===e.status){try{let t=await e.json();t.id&&"string"==typeof t.id&&(this._id=t.id)}catch(e){console.debug("Failed to parse status response:",e)}return!0}return!1}catch(e){return console.warn("Server status check failed:",e),!1}}async overrideConfig(e){if(!this.serverUrl)throw Error("Server URL not configured");try{let t=await fetch(`${this.serverUrl}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:e})});if(!t.ok){let e=await t.json().catch(()=>null),r=(null==e?void 0:e.error)||t.statusText;throw Error(r)}}catch(e){throw console.error("Failed to override server config:",e),e}}async runConnectivityTest(e){if(!this.serverUrl)throw Error("Server URL not configured");let t=await fetch(`${this.serverUrl}/connectivity-test`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:e})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error((null==e?void 0:e.error)||t.statusText)}return t.json()}async getTaskProgress(e){if(!this.serverUrl)return{};if(!(null==e?void 0:e.trim()))return console.warn("Invalid requestId provided for task progress"),{};try{let t=await fetch(`${this.serverUrl}/task-progress/${encodeURIComponent(e)}`);if(!t.ok)return console.warn(`Task progress request failed: ${t.statusText}`),{};return await t.json()}catch(e){return console.error("Failed to poll task progress:",e),{}}}startProgressPolling(e){this.stopProgressPolling(),this.pollingIntervalId=setInterval(async()=>{try{let t=await this.getTaskProgress(e);t.executionDump&&this.dumpUpdateCallback&&this.dumpUpdateCallback("",t.executionDump)}catch(e){console.error("Error polling task progress:",e)}},500)}stopProgressPolling(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=void 0)}async cancelTask(e){if(!this.serverUrl)return{error:"No server URL configured"};if(!(null==e?void 0:e.trim()))return{error:"Invalid request ID"};try{let t=await fetch(`${this.serverUrl}/cancel/${encodeURIComponent(e)}`,{method:"POST"});if(!t.ok)return{error:`Cancel request failed: ${t.statusText}`};let r=await t.json();return{success:!0,...r}}catch(e){return console.error("Failed to cancel task:",e),{error:"Failed to cancel task"}}}async getScreenshot(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/screenshot`);if(!e.ok)return 409!==e.status&&console.warn(`Screenshot request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get screenshot:",e),null}}async interact(e){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/interact`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,error:(null==r?void 0:r.error)||`Interact request failed (${t.status})`};return{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Unknown error"}}}async startRecorderSession(e){if(!this.serverUrl)return{ok:!1,supported:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/recorder/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e})}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,supported:(null==r?void 0:r.supported)??!1,source:null==r?void 0:r.source,platformId:null==r?void 0:r.platformId,error:(null==r?void 0:r.error)||`Recorder start request failed (${t.status})`};return{ok:(null==r?void 0:r.ok)??!0,supported:(null==r?void 0:r.supported)??!0,source:null==r?void 0:r.source,platformId:null==r?void 0:r.platformId,error:null==r?void 0:r.error}}catch(e){return{ok:!1,supported:!1,error:e instanceof Error?e.message:"Unknown error"}}}async getRecorderCapabilities(){if(!this.serverUrl)return{supported:!1,source:"unsupported",error:"No server URL configured"};try{let e=await fetch(`${this.serverUrl}/recorder/capabilities`),t=await e.json().catch(()=>null);if(!e.ok)return{supported:!1,source:"unsupported",error:(null==t?void 0:t.error)||`Recorder capabilities request failed (${e.status})`};return{supported:(null==t?void 0:t.supported)===!0,source:(null==t?void 0:t.source)||"unsupported",platformId:null==t?void 0:t.platformId,error:null==t?void 0:t.error}}catch(e){return{supported:!1,source:"unsupported",error:e instanceof Error?e.message:"Unknown error"}}}async stopRecorderSession(){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let e=await fetch(`${this.serverUrl}/recorder/stop`,{method:"POST"});if(!e.ok)return{ok:!1,error:`Recorder stop request failed (${e.status})`};return{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Unknown error"}}}async getRecorderEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(!this.serverUrl)return{events:[],nextIndex:e};try{let t=await fetch(`${this.serverUrl}/recorder/events?since=${encodeURIComponent(String(e))}`);if(!t.ok)return{events:[],nextIndex:e};let r=await t.json().catch(()=>null);return{events:Array.isArray(null==r?void 0:r.events)?r.events:[],nextIndex:"number"==typeof(null==r?void 0:r.nextIndex)&&Number.isFinite(r.nextIndex)?r.nextIndex:e}}catch(t){return console.error("Failed to poll recorder events:",t),{events:[],nextIndex:e}}}async describeRecorderEventAtPoint(e){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/recorder/describe-event`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:e})}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,error:(null==r?void 0:r.error)||`Recorder describe request failed (${t.status})`};return r||{ok:!1,error:"Empty recorder describe response"}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Failed to describe recorder event"}}}async getInterfaceInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/interface-info`);if(!e.ok)return console.warn(`Interface info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get interface info:",e),null}}async getRuntimeInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/runtime-info`);if(!e.ok)return console.warn(`Runtime info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get runtime info:",e),null}}async getSessionInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/session`);if(!e.ok)return console.warn(`Session info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get session info:",e),null}}async getSessionSetup(e){if(!this.serverUrl)return null;try{let t=new URLSearchParams;Object.entries(e||{}).forEach(e=>{let[r,n]=e;("string"==typeof n||"number"==typeof n||"boolean"==typeof n)&&t.set(r,String(n))});let r=t.size>0?`?${t.toString()}`:"",n=await fetch(`${this.serverUrl}/session/setup${r}`);if(!n.ok){let e=await n.json().catch(()=>null);throw Error((null==e?void 0:e.error)||n.statusText||"Failed to load session setup")}return await n.json()}catch(e){throw console.error("Failed to get session setup:",e),e}}async listSessionTargets(){if(!this.serverUrl)return[];try{let e=await fetch(`${this.serverUrl}/session/targets`);if(!e.ok){let t=await e.json().catch(()=>null);throw Error((null==t?void 0:t.error)||e.statusText||"Failed to load session targets")}let t=await e.json();return Array.isArray(t)?t:[]}catch(e){throw console.error("Failed to get session targets:",e),e}}async createSession(e){if(!this.serverUrl)throw Error("Server URL not configured");let t=await fetch(`${this.serverUrl}/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e||{})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error((null==e?void 0:e.error)||t.statusText)}return await t.json()}async destroySession(){if(!this.serverUrl)throw Error("Server URL not configured");let e=await fetch(`${this.serverUrl}/session`,{method:"DELETE"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error((null==t?void 0:t.error)||e.statusText)}return await e.json()}constructor(e){super(),ah(this,"serverUrl",void 0),ah(this,"_id",void 0),ah(this,"dumpUpdateCallback",void 0),ah(this,"pollingIntervalId",void 0),this.serverUrl=e}}function ag(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class am{createAdapter(e,t,r,n){switch(e){case"local-execution":if(!r&&!n)throw Error("Agent or agentFactory is required for local execution");return new ap(r,n);case"remote-execution":return new af(t||("undefined"!=typeof window&&window.location.protocol.includes("http")?window.location.origin:"http://localhost:5800"));default:throw Error(`Unsupported execution type: ${e}`)}}runtimeMetadataAdapter(){return this.adapter instanceof ap||this.adapter instanceof af?this.adapter:null}async executeAction(e,t,r){var n;return await (null==(n=this.beforeActionHook)?void 0:n.call(this,e,t,r)),await this.adapter.executeAction(e,t,r)}setBeforeActionHook(e){this.beforeActionHook=e}async getActionSpace(e){return this.adapter.getActionSpace(e)}validateStructuredParams(e,t){return this.adapter.validateParams(e,t)}formatErrorMessage(e){return this.adapter.formatErrorMessage(e)}createDisplayContent(e,t,r){return this.adapter.createDisplayContent(e,t,r)}get id(){if(this.adapter instanceof af||this.adapter instanceof ap)return this.adapter.id}async checkStatus(){return!(this.adapter instanceof af)||this.adapter.checkStatus()}async overrideConfig(e){return this.adapter.overrideConfig(e)}async runConnectivityTest(e){return this.adapter.runConnectivityTest(e)}async getTaskProgress(e){return this.adapter instanceof af?this.adapter.getTaskProgress(e):{}}async cancelTask(e){return this.adapter instanceof af?this.adapter.cancelTask(e):{error:"Cancel task not supported in local execution mode"}}onDumpUpdate(e){this.adapter instanceof ap?this.adapter.onDumpUpdate(e):this.adapter instanceof af&&this.adapter.onDumpUpdate(e)}onProgressUpdate(e){this.adapter instanceof ap&&this.adapter.setProgressCallback(e)}async cancelExecution(e){if(this.adapter instanceof af){let t=await this.adapter.cancelTask(e);if(t.success)return{dump:t.dump||null,reportHTML:t.reportHTML||null}}else if(this.adapter instanceof ap){let t=await this.adapter.cancelTask(e);if(t.success)return{dump:t.dump||null,reportHTML:t.reportHTML||null}}return null}async getCurrentExecutionData(){return this.adapter instanceof ap&&this.adapter.getCurrentExecutionData?await this.adapter.getCurrentExecutionData():{dump:null,reportHTML:null}}async getScreenshot(){return this.adapter instanceof af?this.adapter.getScreenshot():null}async interact(e){return this.adapter instanceof af?this.adapter.interact(e):{ok:!1,error:"Direct interaction requires remote execution"}}async startRecorderSession(e){return this.adapter instanceof af?this.adapter.startRecorderSession(e):{ok:!1,supported:!1,error:"Recorder requires remote execution"}}async getRecorderCapabilities(){return this.adapter instanceof af?this.adapter.getRecorderCapabilities():{supported:!1,source:"unsupported",error:"Recorder requires remote execution"}}async stopRecorderSession(){return this.adapter instanceof af?this.adapter.stopRecorderSession():{ok:!0}}async getRecorderEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.adapter instanceof af?this.adapter.getRecorderEvents(e):{events:[],nextIndex:e}}async describeRecorderEventAtPoint(e){return this.adapter instanceof af?this.adapter.describeRecorderEventAtPoint(e):{ok:!1,error:"Recorder aiDescribe requires remote execution"}}async getInterfaceInfo(){let e=this.runtimeMetadataAdapter();return e?e.getInterfaceInfo():null}async getRuntimeInfo(){let e=this.runtimeMetadataAdapter();return e?e.getRuntimeInfo():null}async getSessionInfo(){return this.adapter instanceof af?this.adapter.getSessionInfo():null}async getSessionSetup(e){return this.adapter instanceof af?this.adapter.getSessionSetup(e):null}async listSessionTargets(){return this.adapter instanceof af?this.adapter.listSessionTargets():[]}async createSession(e){if(this.adapter instanceof af)return this.adapter.createSession(e);throw Error("Session creation is only supported in server mode")}async destroySession(){if(this.adapter instanceof af)return this.adapter.destroySession();throw Error("Session destruction is only supported in server mode")}getServiceMode(){return this.adapter instanceof ap?"In-Browser-Extension":"Server"}constructor(e){ag(this,"adapter",void 0),ag(this,"beforeActionHook",void 0),this.adapter=this.createAdapter(e.type,e.serverUrl,e.agent,e.agentFactory)}}var ay=r(5810);function av(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e?Object.fromEntries(e.fields.map(e=>[e.key,function(e,t){var r,n,i,o,a;return null!=t&&""!==t?t:"select"===e.type?null!=(o=null!=(i=e.defaultValue)?i:null==(n=e.options)||null==(r=n[0])?void 0:r.value)?o:"":null!=(a=null!=t?t:e.defaultValue)?a:""}(e,t[e.key])])):{}}function ab(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(null==e?void 0:e.autoSubmitWhenReady))return null;let r=av(e,t);for(let t of e.fields){var n;if(t.required&&(null==(n=r[t.key])||""===n))return null}return r}function aw(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function aE(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ak(e){return Object.keys(e).length>0}function ax(e){return e?JSON.stringify(e):null}let aS="npx puppeteer browsers install chrome",aC="https://pptr.dev/guides/configuration",aj=/could not find (?:google )?chrome/;function aI(e){if(e instanceof Error)return e.message||e.toString();if("string"==typeof e)return e;if(e&&"object"==typeof e&&"message"in e){let t=e.message;if("string"==typeof t)return t}return String(e)}function aO(){if("undefined"!=typeof navigator)try{var e;null==(e=navigator.clipboard)||e.writeText(aS).catch(()=>void 0)}catch(e){}}function aP(){return(0,o.jsxs)("span",{"aria-hidden":!0,style:{display:"block",height:16,position:"relative",width:16},children:[(0,o.jsx)("span",{style:{border:"1.5px solid currentColor",borderRadius:3,height:10,left:5,position:"absolute",top:3,width:8}}),(0,o.jsx)("span",{style:{background:"#f6f8fa",border:"1.5px solid currentColor",borderRadius:3,height:10,left:2,position:"absolute",top:0,width:8}})]})}function aR(e){let{error:t}=e,r=aI(t),[n,i]=(0,a.useState)(!1);return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[(0,o.jsx)("div",{children:"Studio could not find the Chrome browser required to create a Web Agent."}),(0,o.jsx)("div",{children:"Run this command, then try again:"}),(0,o.jsxs)("div",{onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{background:"#f6f8fa",border:"1px solid #d9d9d9",borderRadius:6,boxSizing:"border-box",maxWidth:"100%",minHeight:46,position:"relative"},children:[(0,o.jsx)("pre",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:14,lineHeight:1.4,margin:0,overflowX:"auto",padding:"12px 44px 12px 12px",whiteSpace:"nowrap"},children:aS}),(0,o.jsx)("button",{"aria-label":"Copy install command",onBlur:()=>i(!1),onClick:aO,onFocus:()=>i(!0),style:{alignItems:"center",background:"#ffffff",border:"1px solid #d9d9d9",borderRadius:6,bottom:7,color:"#555",cursor:"pointer",display:"inline-flex",height:28,justifyContent:"center",opacity:+!!n,padding:0,pointerEvents:n?"auto":"none",position:"absolute",right:7,transition:"opacity 120ms ease",width:28},title:"Copy command",type:"button",children:(0,o.jsx)(aP,{})})]}),(0,o.jsxs)("div",{children:["Guide:"," ",(0,o.jsx)("a",{href:aC,rel:"noreferrer",target:"_blank",children:aC})]}),(0,o.jsx)(h.A,{getPopupContainer:()=>document.body,overlayInnerStyle:{width:"min(680px, calc(100vw - 48px))"},overlayStyle:{maxWidth:"min(680px, calc(100vw - 48px))"},placement:"topRight",title:(0,o.jsx)("pre",{style:{margin:0,maxHeight:280,overflow:"auto",whiteSpace:"pre-wrap",width:"100%"},children:r}),zIndex:1e4,children:(0,o.jsx)("button",{style:{alignSelf:"flex-start",background:"transparent",border:0,color:"inherit",cursor:"help",padding:0,textDecoration:"underline"},type:"button",children:"Original error"})})]})}function aT(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function aN(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){aT(o,n,i,a,s,"next",e)}function s(e){aT(o,n,i,a,s,"throw",e)}a(void 0)})}}function aM(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function aD(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}let aB=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:400,height:283,fill:"none",viewBox:"0 0 400 283"},e),r=r={children:[(0,o.jsx)("path",{fill:"url(#server-offline-background_svg__a)",fillOpacity:.7,d:"M0 283h283v400H0z",transform:"rotate(-90 0 283)"}),(0,o.jsx)("path",{fill:"url(#server-offline-background_svg__b)",d:"M0 0h400v283H0z"}),(0,o.jsxs)("defs",{children:[(0,o.jsxs)("radialGradient",{id:"server-offline-background_svg__b",cx:0,cy:0,r:1,gradientTransform:"matrix(0 115.5 -163.251 0 200 141.5)",gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#F2F4F7",stopOpacity:0}),(0,o.jsx)("stop",{offset:1,stopColor:"#F2F4F7"})]}),(0,o.jsx)("pattern",{id:"server-offline-background_svg__a",width:1,height:1,patternTransform:"matrix(18 0 0 18 0 283)",patternUnits:"userSpaceOnUse",preserveAspectRatio:"none",viewBox:"0 0 12 12",children:(0,o.jsx)("path",{stroke:"#A1A1A1",strokeWidth:.2,d:"M.1.1h11.8v11.8H.1z"})})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},az=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:178,height:135,fill:"none",viewBox:"0 0 178 135"},e),r=r={children:[(0,o.jsx)("g",{filter:"url(#server-offline-foreground_svg__a)",children:(0,o.jsx)("rect",{width:74,height:97.5,fill:"url(#server-offline-foreground_svg__b)",rx:12,transform:"matrix(.86603 .5 -.86603 .5 99.136 28.5)"})}),(0,o.jsx)("rect",{width:78,height:101.5,y:-2,fill:"url(#server-offline-foreground_svg__c)",stroke:"url(#server-offline-foreground_svg__d)",strokeWidth:4,rx:14,transform:"matrix(.86603 .5 -.86603 .5 97.404 4)"}),(0,o.jsx)("path",{fill:"url(#server-offline-foreground_svg__e)",d:"M78.147 31.404a.9.9 0 0 1 .156-.559c.117-.178.295-.34.524-.478.228-.138.503-.248.806-.322a4 4 0 0 1 .961-.114c.33 0 .657.038.961.113s.578.184.807.322c.23.137.407.3.525.478.117.178.17.368.157.559v3c.014.19-.04.38-.156.559a1.6 1.6 0 0 1-.524.478 3 3 0 0 1-.806.322c-.304.075-.631.114-.961.114s-.657-.038-.961-.113a3 3 0 0 1-.807-.321 1.6 1.6 0 0 1-.525-.479.9.9 0 0 1-.157-.559zm-9.678 8.414c-.632-.015-1.23-.17-1.668-.434s-.682-.615-.682-.98c0-.366.246-.717.684-.98.438-.264 1.036-.42 1.669-.434h5.196c.33-.007.659.024.968.091.308.068.59.17.828.303s.428.29.557.466a.93.93 0 0 1 .196.555.93.93 0 0 1-.197.554c-.13.176-.32.334-.558.466s-.52.235-.829.303a4 4 0 0 1-.968.09zm38.106 11a4 4 0 0 1-.956-.098 3 3 0 0 1-.815-.305 1.7 1.7 0 0 1-.547-.463.93.93 0 0 1-.193-.55c0-.188.066-.375.193-.549s.313-.331.547-.463c.233-.132.511-.235.815-.304.304-.07.629-.102.956-.098h5.196c.327-.004.652.029.956.098s.582.172.815.304c.234.132.42.29.547.463s.193.361.193.55a.93.93 0 0 1-.193.55 1.7 1.7 0 0 1-.547.462 3 3 0 0 1-.815.305 4 4 0 0 1-.956.097zm-9.38 2.585c.017-.369.281-.72.74-.978.457-.258 1.071-.402 1.71-.402.64 0 1.255.144 1.713.402.457.258.722.61.738.978v3a.9.9 0 0 1-.169.552c-.12.176-.299.336-.527.471a3 3 0 0 1-.803.316 4 4 0 0 1-.951.11c-.327 0-.65-.037-.952-.11a3 3 0 0 1-.802-.316 1.6 1.6 0 0 1-.527-.47.9.9 0 0 1-.17-.553zm8.515-18.5c-1.838-1.06-4.33-1.656-6.93-1.656-2.598 0-5.09.596-6.928 1.657l-5.196 3c-.225.14-.495.252-.796.33s-.626.12-.956.123a4 4 0 0 1-.963-.102 3 3 0 0 1-.817-.312 1.7 1.7 0 0 1-.54-.471.9.9 0 0 1-.178-.557.95.95 0 0 1 .215-.551c.135-.174.33-.33.571-.46l5.196-3c2.757-1.591 6.495-2.485 10.393-2.485s7.636.894 10.392 2.485c2.756 1.592 4.305 3.75 4.305 6s-1.549 4.409-4.305 6l-5.196 3a2.9 2.9 0 0 1-.796.33 4.087 4.087 0 0 1-1.919.021 3 3 0 0 1-.817-.311 1.7 1.7 0 0 1-.54-.472.9.9 0 0 1-.177-.556.95.95 0 0 1 .214-.552c.135-.174.33-.33.572-.46l5.196-3c1.837-1.06 2.87-2.5 2.87-4s-1.033-2.94-2.87-4m-29.444 5c.224-.14.494-.252.795-.33s.626-.12.956-.123.657.03.963.102c.306.071.584.177.817.312.234.135.417.295.54.472a.9.9 0 0 1 .178.556.95.95 0 0 1-.215.551c-.135.174-.329.33-.571.46l-5.196 3c-1.838 1.06-2.87 2.5-2.87 4s1.032 2.94 2.87 4c1.838 1.062 4.33 1.658 6.929 1.658s5.091-.596 6.929-1.657l5.196-3c.465-.249 1.079-.384 1.712-.376.633.007 1.238.155 1.686.414.448.258.705.607.717.973s-.221.72-.652.988l-5.196 3c-2.756 1.592-6.494 2.486-10.392 2.486s-7.636-.894-10.392-2.486c-2.757-1.591-4.305-3.75-4.305-6s1.548-4.408 4.305-6z"}),(0,o.jsx)("path",{fill:"#000",d:"m108.005 6.698 3.211-1.854c.954-.55 2.247-.86 3.596-.86s2.642.31 3.596.86c.953.55 1.489 1.297 1.489 2.076 0 .778-.536 1.525-1.489 2.076l-9.589 5.535c-.317.184-.749.287-1.198.287-.45 0-.881-.103-1.199-.287-.317-.183-.496-.432-.496-.692s.179-.508.496-.692l9.589-5.535-2.398-1.384-9.588 5.535c-.953.551-1.489 1.298-1.489 2.076 0 .779.536 1.526 1.489 2.076s2.247.86 3.596.86c1.348 0 2.642-.31 3.595-.86l9.589-5.535c1.589-.918 2.482-2.163 2.482-3.46s-.893-2.543-2.482-3.46c-1.59-.918-3.745-1.433-5.993-1.433s-4.403.515-5.993 1.433l-4.394 2.537z"}),(0,o.jsxs)("defs",{children:[(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__b",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#D9D9D9"}),(0,o.jsx)("stop",{offset:1,stopColor:"#E9E9EB"})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__c",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#7D7E80"}),(0,o.jsx)("stop",{offset:1,stopColor:"#C7C9CC"})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__d",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#fff"}),(0,o.jsx)("stop",{offset:1,stopColor:"#fff",stopOpacity:.2})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__e",x1:72.75,x2:90.111,y1:33.874,y2:63.944,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#fff"}),(0,o.jsx)("stop",{offset:1,stopColor:"#fff",stopOpacity:.5})]}),(0,o.jsxs)("filter",{id:"server-offline-foreground_svg__a",width:176.348,height:118.721,x:.786,y:16.015,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,o.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,o.jsx)("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),(0,o.jsx)("feOffset",{dy:4}),(0,o.jsx)("feGaussianBlur",{stdDeviation:10}),(0,o.jsx)("feComposite",{in2:"hardAlpha",operator:"out"}),(0,o.jsx)("feColorMatrix",{values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0"}),(0,o.jsx)("feBlend",{in2:"BackgroundImageFix",result:"effect1_dropShadow_4624_2901"}),(0,o.jsx)("feBlend",{in:"SourceGraphic",in2:"effect1_dropShadow_4624_2901",result:"shape"})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var aL=r(4707),aF=r(6820),aK=r(9870),aU=r(9877),aQ=r(5528),aZ=r(638);let aJ="Auto dismiss keyboard",aX={aiAct:{group:"interaction",title:"Auto Planning: plan the steps and execute"},aiTap:{group:"interaction",title:"Click an element"},aiDoubleClick:{group:"interaction",title:"Double-click an element"},aiHover:{group:"interaction",title:"Hover over an element"},aiInput:{group:"interaction",title:"Input text into an element"},aiRightClick:{group:"interaction",title:"Right-click an element"},aiKeyboardPress:{group:"interaction",title:"Press keyboard keys"},aiScroll:{group:"interaction",title:"Scroll the page or element"},aiLocate:{group:"interaction",title:"Locate an element on the page"},aiQuery:{group:"extraction",title:"Extract data directly from the UI"},aiBoolean:{group:"extraction",title:"Get true/false answer"},aiNumber:{group:"extraction",title:"Extract numeric value"},aiString:{group:"extraction",title:"Extract text value"},aiAsk:{group:"extraction",title:"Ask a question about the UI"},aiAssert:{group:"validation",title:"Assert a condition is true"},aiWaitFor:{group:"validation",title:"Wait for a condition to be met"}},aH=["aiAct","aiTap","aiQuery","aiAssert"],aG=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web page";return{type:"system",content:`
|
|
947
|
+
${e}`)}return{result:t.result}}async evaluateJavaScript(e){return(0,eQ.vA)(this.interface.evaluateJavaScript,"evaluateJavaScript is not supported in current agent"),this.interface.evaluateJavaScript(e)}addDumpUpdateListener(e){return this.dumpUpdateListeners.push(e),()=>{this.removeDumpUpdateListener(e)}}removeDumpUpdateListener(e){let t=this.dumpUpdateListeners.indexOf(e);t>-1&&this.dumpUpdateListeners.splice(t,1)}clearDumpUpdateListeners(){this.dumpUpdateListeners=[]}addProgressListener(e){return this.progressBus.subscribe(e)}removeProgressListener(e){this.progressBus.unsubscribe(e)}clearProgressListeners(){this.progressBus.clear()}notifyDumpUpdateListeners(e){let t=this.dumpDataString();for(let r of this.dumpUpdateListeners)try{r(t,e)}catch(e){console.error("Error in onDumpUpdate listener",e)}}async destroy(){let e;if(this.destroyed)return;this.destroyed=!0;try{var t,r;await (null==(t=(r=this.interface).destroy)?void 0:t.call(r))}catch(t){e=t}await this.reportGenerator.flush();let n=await this.reportGenerator.finalize();if(this.reportFile=n,this.resetDump(),e)throw e}async recordToReport(e,t){let r=Date.now(),n=null==t?void 0:t.screenshots,i=null==t?void 0:t.screenshotBase64,o=void 0!==n,a=void 0!==i;if(o&&!Array.isArray(n))throw Error("recordToReport: screenshots must be an array");if(a&&"string"!=typeof i)throw Error("recordToReport: screenshotBase64 must be a string");if(o&&a)throw Error("recordToReport: provide only one of screenshots or screenshotBase64");if(t&&"subType"in t)throw Error("recordToReport: subType is not supported");let s=o?n:void 0;if(s&&0===s.length)throw Error("recordToReport: screenshots cannot be empty");let A=(s??(a?[{base64:i}]:[{base64:await this.interface.screenshotBase64()}])).map((e,t)=>{let n=function(e,t){if(!e||"string"!=typeof e.base64)throw Error(`recordToReport: screenshot #${t+1} must include a base64 string`);if(void 0!==e.description&&"string"!=typeof e.description)throw Error(`recordToReport: screenshot #${t+1} description must be a string`);return{base64:((e,t)=>{let r=(null==t?void 0:t.label)??"screenshot base64",n=e.trim();if(!n)throw Error(`${r} cannot be empty`);let i=n.match(tS);if(i){let e="jpg"===i[1].toLowerCase()?"jpeg":i[1].toLowerCase(),t=i[2];if(!t.replace(/\s/g,""))throw Error(`${r} cannot be empty`);return tj(e,t)}if(n.startsWith("data:")||!tC.test(n))throw Error(`${r} must be a PNG/JPEG data URI or raw PNG base64 string`);return tj("png",n)})(e.base64,{label:`recordToReport: screenshot #${t+1} base64`}),description:e.description}}(e,t),i=r+t;return{type:"screenshot",ts:i,screenshot:ru.create(n.base64,i),description:n.description}}),l={taskId:(0,eQ.uR)(),type:"Log",subType:"Screenshot",status:"finished",recorder:A,timing:{start:r,end:r,cost:0},param:{content:(null==t?void 0:t.content)||""},executor:async()=>{}},c=new n$({id:(0,eQ.uR)(),logTime:r,name:`Log - ${e||"untitled"}`,description:(null==t?void 0:t.content)||"",tasks:[l]});this.appendExecutionDump(c),this.writeOutActionDumps(c),await this.reportGenerator.flush(),this.notifyDumpUpdateListeners(c)}async recordErrorToReport(e,t){let r=Date.now(),n=[],i=t.screenshotBase64??await this.interface.screenshotBase64();i&&n.push({type:"screenshot",ts:r,screenshot:ru.create(i,r)});let o={taskId:(0,eQ.uR)(),type:"Log",subType:"Error",status:"failed",recorder:n,timing:{start:r,end:r,cost:0},param:{content:t.content||""},error:t.error,errorMessage:t.error.message,errorStack:t.error.stack,executor:async()=>{}},a=new n$({id:(0,eQ.uR)(),logTime:r,name:e,description:t.content||t.error.message,tasks:[o]});this.appendExecutionDump(a),this.writeOutActionDumps(a),await this.reportGenerator.flush(),this.notifyDumpUpdateListeners(a)}async logScreenshot(e,t){await this.recordToReport(e,t)}_unstableLogContent(){let{groupName:e,groupDescription:t,executions:r}=this.dump;return{groupName:e,groupDescription:t,executions:r||[]}}async freezePageContext(){aA("Freezing page context");let e=await this._snapshotContext();e._isFrozen=!0,this.frozenUIContext=e,aA("Page context frozen successfully")}async unfreezePageContext(){aA("Unfreezing page context"),this.frozenUIContext=void 0,aA("Page context unfrozen successfully")}processCacheConfig(e){!function(e){if(!0===e)throw Error('cache: true requires an explicit cache ID. Please provide:\nExample: cache: { id: "my-cache-id" }');if(!e||"object"!=typeof e)return;if(!e.id)throw Error('cache configuration requires an explicit id.\nExample: cache: { id: "my-cache-id" }');if(void 0!==e.cacheDir&&("string"!=typeof e.cacheDir||!e.cacheDir.trim()))throw Error('cache.cacheDir must be a non-empty string when provided.\nExample: cache: { id: "my-cache-id", cacheDir: "./my-cache-dir" }');let t=e.strategy;if(void 0!==t&&"string"!=typeof t)throw Error(`cache.strategy must be a string when provided, but received type ${typeof t}`);if(void 0!==t&&!oo.some(e=>e===t))throw Error(`cache.strategy must be one of ${oa}, but received "${t}"`)}(e.cache);let t=function(e,t){if(void 0!==e){if(!1===e)return!1;if(!0===e)return{id:t};if("object"==typeof e&&null!==e)return e.id?e:{...e,id:t}}if(eY.getEnvConfigInBoolean(eD.Od)&&t)return{id:t}}(e.cache,e.cacheId||"default");if(!t)return null;if("object"==typeof t&&null!==t){var r;let e=t.id,n=t.strategy??"read-write",i="write-only"===n;return{id:e,enabled:!i,readOnly:"read-only"===n,writeOnly:i,cacheDir:null==(r=t.cacheDir)?void 0:r.trim()}}return null}normalizeFileInput(e){return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{fileExists:r=oT.existsSync,isInBrowser:n=eQ.ht,resolvePath:i=tg.resolve,wslDistroName:o=oL.env.WSL_DISTRO_NAME,cwd:a=oL.cwd()}=t;if(n)throw Error("File chooser is not supported in browser environment");return e.map(e=>{let t=i(e);if(!r(t))throw Error(`File not found: ${e}. Resolved to: ${t}. Current working directory: ${a}`);if(!o)return t;let n=t.match(/^\/mnt\/([a-z])\//);return n?`${n[1].toUpperCase()}:\\${t.slice(7).replace(/\//g,"\\")}`:`\\\\wsl$\\${o}${t.replace(/\//g,"\\")}`})}(Array.isArray(e)?e:[e])}async flushCache(e){if(!this.taskCache)throw Error("Cache is not configured");this.taskCache.flushCacheToFile(e)}constructor(e,t){var r,n;as(this,"interface",void 0),as(this,"service",void 0),as(this,"dump",void 0),as(this,"reportFile",void 0),as(this,"reportFileName",void 0),as(this,"taskExecutor",void 0),as(this,"opts",void 0),as(this,"dryMode",!1),as(this,"onTaskStartTip",void 0),as(this,"taskCache",void 0),as(this,"dumpUpdateListeners",[]),as(this,"progressBus",new ol),as(this,"destroyed",!1),as(this,"modelConfigManager",void 0),as(this,"frozenUIContext",void 0),as(this,"executionDumpIndexByRunner",new WeakMap),as(this,"fullActionSpace",void 0),as(this,"reportGenerator",void 0),as(this,"lastExecutionDump",void 0),this.interface=e,this.opts=Object.assign({generateReport:!0,persistExecutionDump:!1,autoPrintReportMsg:!0,groupName:"Midscene Report",groupDescription:""},t||{}),ot(this.opts);const i=this.opts.aiActContext??this.opts.aiActionContext;if(void 0!==i&&(this.opts.aiActContext=i,(n=this.opts).aiActionContext??(n.aiActionContext=i)),(null==t?void 0:t.modelConfig)&&("object"!=typeof(null==t?void 0:t.modelConfig)||Array.isArray(t.modelConfig)))throw Error(`opts.modelConfig must be a plain object map of env keys to values, but got ${typeof(null==t?void 0:t.modelConfig)}`);const o=(null==t?void 0:t.modelConfig)||(null==t?void 0:t.createOpenAIClient);this.modelConfigManager=o?new eq(null==t?void 0:t.modelConfig,null==t?void 0:t.createOpenAIClient):eW,this.onTaskStartTip=this.opts.onTaskStartTip,this.service=new n6(async()=>this.getUIContext());const a=this.processCacheConfig(t||{});a&&(this.taskCache=new oW(a.id,a.enabled,void 0,{readOnly:a.readOnly,writeOnly:a.writeOnly,cacheDir:a.cacheDir}));const s=this.interface.actionSpace();this.fullActionSpace=[...s,{name:"Sleep",description:"Wait for a specified duration before continuing. Defaults to 1 second (1000ms) if not specified.",paramSchema:oi,sample:{timeMs:2e3},call:async e=>{let t=(null==e?void 0:e.timeMs)??1e3;(0,eN.a)("device:common-action")(`Sleeping for ${t}ms`),await new Promise(e=>setTimeout(e,t))}}],this.taskExecutor=new ao(this.interface,this.service,{taskCache:this.taskCache,onTaskStart:this.callbackOnTaskStartTip.bind(this),replanningCycleLimit:this.opts.replanningCycleLimit,waitAfterAction:this.opts.waitAfterAction,useDeviceTime:this.opts.useDeviceTime,actionSpace:this.fullActionSpace,hooks:{onSnapshotChange:async e=>{let t=e.dump();this.appendExecutionDump(t,e),this.writeOutActionDumps(t),await this.reportGenerator.flush();let r=this.dumpDataString();for(let e of this.dumpUpdateListeners)try{e(r,t)}catch(e){console.error("Error in onDumpUpdate listener",e)}},onProgress:this.progressBus.publish}}),this.dump=this.resetDump(),this.reportFileName=(null==t?void 0:t.reportFileName)??oU((null==t?void 0:t.testId)||this.interface.interfaceType||"web"),this.reportGenerator=or.create(this.reportFileName,{generateReport:this.opts.generateReport,persistExecutionDump:this.opts.persistExecutionDump,outputFormat:this.opts.outputFormat,autoPrintReportMsg:this.opts.autoPrintReportMsg,reuseExistingReport:(null==(r=this.opts.reportAttributes)?void 0:r["data-group-id"])===this.reportFileName})}}as(au,"CONTEXT_RETRY_MAX",3),as(au,"CONTEXT_RETRY_DELAY_MS",1500),r(4201).Buffer;RegExp(`${rr}="(inline|directory)"`);r(4201).Buffer;tu.k5(["split","to-markdown","merge-html"]).optional().describe("Report action to run. Supports: split, to-markdown, merge-html. Defaults to split."),tu.Yj().optional().describe("Input report HTML path (e.g. ./report/index.html). Used by split and to-markdown."),tu.KC([tu.Yj(),tu.YO(tu.Yj())]).optional().describe("Input report HTML path for the merge action. Repeat the flag to merge multiple reports (e.g. --htmlReport ./a/index.html --htmlReport ./b.html)."),tu.Yj().optional().describe("Output directory for generated report artifacts. For merge, defaults to the Midscene report directory."),tu.Yj().optional().describe("Output report file/directory name (without .html) for the merge action. Defaults to an auto-generated name."),tu.KC([tu.zM(),tu.Yj()]).optional().describe("Overwrite the existing merged report file if present (merge action only).");class ad{async getActionSpace(e){return[]}validateParams(e,t){if(!(null==t?void 0:t.paramSchema)||!this.actionNeedsStructuredParams(t))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};try{let r=this.prepareParamsForValidation(e.params,t);return t.paramSchema.parse(r),{valid:!0}}catch(e){return this.handleValidationError(e)}}createDisplayContent(e,t,r){return t&&e.params&&(null==r?void 0:r.paramSchema)?this.buildParamsDisplayList(e.params,r).join("\n")||e.prompt||"":e.prompt||""}formatBasicErrorMessage(e){return(null==e?void 0:e.message)||"Unknown error"}getSchemaKeys(e){if(!(null==e?void 0:e.paramSchema)||!("shape"in e.paramSchema))return[];let t=e.paramSchema;return t&&"shape"in t?Object.keys(t.shape):[]}filterValidParams(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return Object.keys(e).forEach(n=>{t.includes(n)||void 0===e[n]||null===e[n]||""===e[n]||(r[n]=e[n])}),r}actionNeedsStructuredParams(e){return"object"!=typeof e.paramSchema||!("shape"in e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0}prepareParamsForValidation(e,t){let r={...e};return t.paramSchema&&tW(t.paramSchema).forEach(e=>{"string"==typeof r[e]&&(r[e]={midscene_location_field_flag:!0,prompt:r[e],center:[0,0],rect:{left:0,top:0,width:0,height:0}})}),r}handleValidationError(e){if(e.errors&&e.errors.length>0){let t=e.errors.filter(e=>{let t=e.path.join(".");return!t.includes("center")&&!t.includes("rect")&&!t.includes("midscene_location_field_flag")}).map(e=>{let t=e.path.join(".");return`${t}: ${e.message}`});if(t.length>0)return{valid:!1,errorMessage:`Validation error: ${t.join(", ")}`}}let t=e instanceof Error?e.message:"Unknown validation error";return{valid:!1,errorMessage:`Parameter validation failed: ${t}`}}buildParamsDisplayList(e,t){let r=[],n=t.paramSchema;if(!(n&&"shape"in n))return r;let i=tW(n);return Object.keys(n.shape).forEach(t=>{let n=e[t];if(this.isValidParamValue(n)){let e=this.capitalizeFirstLetter(t),o=this.formatParamValue(t,n,i.includes(t));r.push(`${e}: ${o}`)}}),r}isValidParamValue(e){return null!=e&&""!==e}capitalizeFirstLetter(e){return e.charAt(0).toUpperCase()+e.slice(1)}formatParamValue(e,t,r){return r||"string"==typeof t?`"${t}"`:"number"==typeof t&&"distance"===e?`${t}px`:`${t}`}}function ap(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ah extends ad{get id(){return this._id}onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}setProgressCallback(e){this.progressCallback=void 0,this.progressCallback=e}async parseStructuredParams(e,t,r){return await iF(e,t,r)}formatErrorMessage(e){return((null==e?void 0:e.message)||"").includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":this.formatBasicErrorMessage(e)}async getActionSpace(e){var t;if(!this.agent&&this.agentFactory)try{this.agent=await this.agentFactory()}catch(e){return console.warn("Failed to create agent for actionSpace:",e),[]}if(null==(t=this.agent)?void 0:t.getActionSpace)return await this.agent.getActionSpace();if(this.agent&&"interface"in this.agent&&"object"==typeof this.agent.interface){let e=this.agent.interface;if(null==e?void 0:e.actionSpace)return e.actionSpace()}return e&&"object"==typeof e&&"actionSpace"in e?e.actionSpace():[]}async checkStatus(){return!0}async overrideConfig(e){e$(e),console.log("Config updated. Agent will be recreated on next execution.")}async runConnectivityTest(e){let t=new eq(e);return iA({defaultModelConfig:t.getModelConfig("default"),planningModelConfig:t.getModelConfig("planning"),insightModelConfig:t.getModelConfig("insight")})}async detachDebuggerSafely(){try{var e,t;let r=null==(e=this.agent)?void 0:e.interface;await (null==r||null==(t=r.detachDebugger)?void 0:t.call(r))}catch(e){console.warn("Failed to detach debugger:",e)}}async executeAction(e,t,r){var n,i,o;let a;if(this.agentFactory){if(this.agent){console.log("Destroying old agent before execution...");try{await (null==(n=(i=this.agent).destroy)?void 0:n.call(i))}catch(e){console.warn("Failed to destroy old agent:",e)}this.agent=null}await this.recreateAgent()}if(!this.agent)throw Error("No agent available. Please provide either an agent instance or agentFactory.");let s=this.agent,A=await this.getActionSpace();try{null==(o=s.resetDump)||o.call(s)}catch(e){console.warn("Failed to reset dump before execution:",e)}r.requestId&&(this.currentRequestId=r.requestId,a=s.addDumpUpdateListener((e,t)=>{this.currentRequestId===r.requestId&&this.dumpUpdateCallback&&this.dumpUpdateCallback(e,t)}));try{let n=null,i=null;try{n=await iK(s,e,A,t,r)}catch(e){i=e}let o={result:n,dump:null,reportHTML:null,error:i?i instanceof Error?i.message:String(i):null};try{if(s.dumpDataString){let e=s.dumpDataString();e&&(o.dump=n0.fromSerializedString(e))}}catch(e){console.warn("Failed to get dump from agent:",e)}try{s.reportHTMLString&&(o.reportHTML=s.reportHTMLString()||null)}catch(e){}try{s.writeOutActionDumps&&s.writeOutActionDumps()}catch(e){}return o}finally{a&&a()}}async recreateAgent(){if(!this.agentFactory)throw Error("Cannot recreate agent: factory function not provided. Please provide agentFactory in PlaygroundConfig to enable agent recreation.");console.log("Creating new agent with latest config...");try{this.agent=await this.agentFactory(),console.log("Agent created successfully")}catch(e){throw console.error("Failed to create agent:",e),e}}async cancelTask(e){if(!this.agent)return{error:"No active agent found for this requestId"};let t=null,r=null;try{if("function"==typeof this.agent.dumpDataString){let e=this.agent.dumpDataString();e&&(t=n0.fromSerializedString(e))}}catch(e){console.warn("[LocalExecutionAdapter] Failed to get dump data before cancel:",e)}try{if("function"==typeof this.agent.reportHTMLString){let e=this.agent.reportHTMLString();e&&"string"==typeof e&&!e.includes("REPLACE_ME_WITH_REPORT_HTML")&&(r=e)}}catch(e){console.warn("[LocalExecutionAdapter] reportHTMLString not available in this environment")}try{var n,i;return await (null==(n=(i=this.agent).destroy)?void 0:n.call(i)),this.agent=null,{success:!0,dump:t,reportHTML:r}}catch(n){let e=n instanceof Error?n.message:"Unknown error";return console.error(`[LocalExecutionAdapter] Failed to cancel agent: ${e}`),{error:`Failed to cancel: ${e}`,dump:t,reportHTML:r}}}async getCurrentExecutionData(){let e={dump:null,reportHTML:null};try{var t,r;if(null==(t=this.agent)?void 0:t.dumpDataString){let t=this.agent.dumpDataString();t&&(e.dump=n0.fromSerializedString(t))}(null==(r=this.agent)?void 0:r.reportHTMLString)&&(e.reportHTML=this.agent.reportHTMLString()||null)}catch(e){console.error("Failed to get current execution data:",e)}return e}async getInterfaceInfo(){var e,t,r;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e=this.agent.interface.interfaceType||"Unknown",n=(null==(t=(r=this.agent.interface).describe)?void 0:t.call(r))||void 0,i="function"==typeof this.agent.interface.size?await this.agent.interface.size():void 0,o="function"==typeof this.agent.interface.actionSpace?this.agent.interface.actionSpace().map(e=>null==e?void 0:e.name).filter(e=>"string"==typeof e):void 0;return{type:e,description:n,...i?{size:i}:{},...o?{actionTypes:o}:{}}}catch(e){return console.error("Failed to get interface info:",e),null}}async getRuntimeInfo(){var e,t,r,n;if(!(null==(e=this.agent)?void 0:e.interface))return null;try{let e;return e=(n={interfaceType:this.agent.interface.interfaceType||"Unknown",interfaceDescription:(null==(t=(r=this.agent.interface).describe)?void 0:t.call(r))||void 0,supportsScreenshot:"function"==typeof this.agent.interface.screenshotBase64,mjpegStreamUrl:this.agent.interface.mjpegStreamUrl}).interfaceType||"Unknown",{platformId:n.platformId,title:n.title,platformDescription:n.platformDescription,interface:{type:e,description:n.interfaceDescription},preview:n.preview?n.preview:"number"==typeof n.scrcpyPort?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{kind:"scrcpy",screenshotPath:"/screenshot",capabilities:[{kind:"scrcpy",label:"scrcpy streaming",live:!0},{kind:"screenshot",label:"Screenshot fallback",live:!1}],custom:e,...t}}({scrcpyPort:n.scrcpyPort}):n.mjpegStreamUrl?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{kind:"mjpeg",screenshotPath:"/screenshot",mjpegPath:"/mjpeg",capabilities:[{kind:"mjpeg",label:"MJPEG streaming",live:!0},{kind:"screenshot",label:"Screenshot fallback",live:!1}],...e}}():n.supportsScreenshot?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{kind:"screenshot",screenshotPath:"/screenshot",capabilities:[{kind:"screenshot",label:"Screenshot polling",live:!1}],...e}}():{kind:"none",capabilities:[]},executionUxHints:function(e){if(!e)return[];let t=e.executionUxHints;if(Array.isArray(t))return t.filter(e=>"string"==typeof e&&e.length>0);let r=e.executionUx;return"string"==typeof r&&r.length>0?[r]:[]}(n.metadata),metadata:{...n.metadata||{}}}}catch(e){return console.error("Failed to get runtime info:",e),null}}constructor(e,t){super(),ap(this,"agent",void 0),ap(this,"agentFactory",void 0),ap(this,"dumpUpdateCallback",void 0),ap(this,"progressCallback",void 0),ap(this,"_id",void 0),ap(this,"currentRequestId",void 0),this.agent=e??null,this.agentFactory=t,this._id=(0,eQ.uR)()}}function af(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ag extends ad{onDumpUpdate(e){this.dumpUpdateCallback=void 0,this.dumpUpdateCallback=e}get id(){return this._id}validateParams(e,t){if(!(null==t?void 0:t.paramSchema)||!this.actionNeedsStructuredParams(t))return{valid:!0};if(!e.params)return{valid:!1,errorMessage:"Parameters are required"};if(t.paramSchema&&"object"==typeof t.paramSchema){let r=t.paramSchema;if(r.shape||"ZodObject"===r.type){let t=r.shape||{},n=Object.keys(t).filter(r=>{var n,i;let o=t[r];return!((null==o?void 0:o.isOptional)||(null==o||null==(n=o._def)?void 0:n.innerType)||(null==o||null==(i=o._def)?void 0:i.typeName)==="ZodOptional")&&(void 0===e.params[r]||""===e.params[r])});if(n.length>0)return{valid:!1,errorMessage:`Missing required parameters: ${n.join(", ")}`}}}return{valid:!0}}async parseStructuredParams(e,t,r){return await iF(e,t,r)}formatErrorMessage(e){let t=(null==e?void 0:e.message)||"",r=[{keyword:"adb",message:"ADB connection error. Please ensure device is connected and USB debugging is enabled."},{keyword:"UIAutomator",message:"UIAutomator error. Please ensure the UIAutomator server is running on the device."}].find(e=>{let{keyword:r}=e;return t.includes(r)});return r?r.message:this.formatBasicErrorMessage(e)}async executeAction(e,t,r){if(this.serverUrl&&"undefined"!=typeof window)return this.executeViaServer(e,t,r);throw Error("Remote execution adapter requires server URL for execution")}async executeViaServer(e,t,r){let n={type:e,prompt:t.prompt,...this.buildOptionalPayloadParams(r,t)};r.context&&(n.context=r.context),r.requestId&&this.dumpUpdateCallback&&this.startProgressPolling(r.requestId);try{let e=await fetch(`${this.serverUrl}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!e.ok){let t=await e.text().catch(()=>"Unknown error");throw Error(`Server request failed (${e.status}): ${t}`)}return await e.json()}catch(e){throw console.error("Execute via server failed:",e),e}finally{this.stopProgressPolling()}}buildOptionalPayloadParams(e,t){let r={};return[{key:"requestId",value:e.requestId},{key:"deepLocate",value:e.deepLocate},{key:"deepThink",value:e.deepThink},{key:"screenshotIncluded",value:e.screenshotIncluded},{key:"domIncluded",value:e.domIncluded},{key:"deviceOptions",value:e.deviceOptions},{key:"reportDisplay",value:e.reportDisplay},{key:"params",value:t.params}].forEach(e=>{let{key:t,value:n}=e;null!=n&&""!==n&&(r[t]=n)}),r}async getActionSpace(e){if(this.serverUrl&&"undefined"!=typeof window)try{let t=await fetch(`${this.serverUrl}/action-space`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e})});if(!t.ok)throw Error(`Failed to get action space: ${t.statusText}`);let r=await t.json();return Array.isArray(r)?r:[]}catch(e){console.error("Failed to get action space from server:",e)}if(e&&"object"==typeof e&&"actionSpace"in e)try{let t=e.actionSpace,r=await t();return Array.isArray(r)?r:[]}catch(e){console.error("Failed to get action space from context:",e)}return[]}async checkStatus(){if(!this.serverUrl)return!1;try{let e=await fetch(`${this.serverUrl}/status`);if(200===e.status){try{let t=await e.json();t.id&&"string"==typeof t.id&&(this._id=t.id)}catch(e){console.debug("Failed to parse status response:",e)}return!0}return!1}catch(e){return console.warn("Server status check failed:",e),!1}}async overrideConfig(e){if(!this.serverUrl)throw Error("Server URL not configured");try{let t=await fetch(`${this.serverUrl}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:e})});if(!t.ok){let e=await t.json().catch(()=>null),r=(null==e?void 0:e.error)||t.statusText;throw Error(r)}}catch(e){throw console.error("Failed to override server config:",e),e}}async runConnectivityTest(e){if(!this.serverUrl)throw Error("Server URL not configured");let t=await fetch(`${this.serverUrl}/connectivity-test`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:e})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error((null==e?void 0:e.error)||t.statusText)}return t.json()}async getTaskProgress(e){if(!this.serverUrl)return{};if(!(null==e?void 0:e.trim()))return console.warn("Invalid requestId provided for task progress"),{};try{let t=await fetch(`${this.serverUrl}/task-progress/${encodeURIComponent(e)}`);if(!t.ok)return console.warn(`Task progress request failed: ${t.statusText}`),{};return await t.json()}catch(e){return console.error("Failed to poll task progress:",e),{}}}startProgressPolling(e){this.stopProgressPolling(),this.pollingIntervalId=setInterval(async()=>{try{let t=await this.getTaskProgress(e);t.executionDump&&this.dumpUpdateCallback&&this.dumpUpdateCallback("",t.executionDump)}catch(e){console.error("Error polling task progress:",e)}},500)}stopProgressPolling(){this.pollingIntervalId&&(clearInterval(this.pollingIntervalId),this.pollingIntervalId=void 0)}async cancelTask(e){if(!this.serverUrl)return{error:"No server URL configured"};if(!(null==e?void 0:e.trim()))return{error:"Invalid request ID"};try{let t=await fetch(`${this.serverUrl}/cancel/${encodeURIComponent(e)}`,{method:"POST"});if(!t.ok)return{error:`Cancel request failed: ${t.statusText}`};let r=await t.json();return{success:!0,...r}}catch(e){return console.error("Failed to cancel task:",e),{error:"Failed to cancel task"}}}async getScreenshot(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/screenshot`);if(!e.ok)return 409!==e.status&&console.warn(`Screenshot request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get screenshot:",e),null}}async interact(e){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/interact`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,error:(null==r?void 0:r.error)||`Interact request failed (${t.status})`};return{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Unknown error"}}}async startRecorderSession(e){if(!this.serverUrl)return{ok:!1,supported:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/recorder/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e})}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,supported:(null==r?void 0:r.supported)??!1,source:null==r?void 0:r.source,platformId:null==r?void 0:r.platformId,error:(null==r?void 0:r.error)||`Recorder start request failed (${t.status})`};return{ok:(null==r?void 0:r.ok)??!0,supported:(null==r?void 0:r.supported)??!0,source:null==r?void 0:r.source,platformId:null==r?void 0:r.platformId,error:null==r?void 0:r.error}}catch(e){return{ok:!1,supported:!1,error:e instanceof Error?e.message:"Unknown error"}}}async getRecorderCapabilities(){if(!this.serverUrl)return{supported:!1,source:"unsupported",error:"No server URL configured"};try{let e=await fetch(`${this.serverUrl}/recorder/capabilities`),t=await e.json().catch(()=>null);if(!e.ok)return{supported:!1,source:"unsupported",error:(null==t?void 0:t.error)||`Recorder capabilities request failed (${e.status})`};return{supported:(null==t?void 0:t.supported)===!0,source:(null==t?void 0:t.source)||"unsupported",platformId:null==t?void 0:t.platformId,error:null==t?void 0:t.error}}catch(e){return{supported:!1,source:"unsupported",error:e instanceof Error?e.message:"Unknown error"}}}async stopRecorderSession(){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let e=await fetch(`${this.serverUrl}/recorder/stop`,{method:"POST"});if(!e.ok)return{ok:!1,error:`Recorder stop request failed (${e.status})`};return{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Unknown error"}}}async getRecorderEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(!this.serverUrl)return{events:[],nextIndex:e};try{let t=await fetch(`${this.serverUrl}/recorder/events?since=${encodeURIComponent(String(e))}`);if(!t.ok)return{events:[],nextIndex:e};let r=await t.json().catch(()=>null);return{events:Array.isArray(null==r?void 0:r.events)?r.events:[],nextIndex:"number"==typeof(null==r?void 0:r.nextIndex)&&Number.isFinite(r.nextIndex)?r.nextIndex:e}}catch(t){return console.error("Failed to poll recorder events:",t),{events:[],nextIndex:e}}}async describeRecorderEventAtPoint(e){if(!this.serverUrl)return{ok:!1,error:"No server URL configured"};try{let t=await fetch(`${this.serverUrl}/recorder/describe-event`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:e})}),r=await t.json().catch(()=>null);if(!t.ok)return{ok:!1,error:(null==r?void 0:r.error)||`Recorder describe request failed (${t.status})`};return r||{ok:!1,error:"Empty recorder describe response"}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Failed to describe recorder event"}}}async getInterfaceInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/interface-info`);if(!e.ok)return console.warn(`Interface info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get interface info:",e),null}}async getRuntimeInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/runtime-info`);if(!e.ok)return console.warn(`Runtime info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get runtime info:",e),null}}async getSessionInfo(){if(!this.serverUrl)return null;try{let e=await fetch(`${this.serverUrl}/session`);if(!e.ok)return console.warn(`Session info request failed: ${e.statusText}`),null;return await e.json()}catch(e){return console.error("Failed to get session info:",e),null}}async getSessionSetup(e){if(!this.serverUrl)return null;try{let t=new URLSearchParams;Object.entries(e||{}).forEach(e=>{let[r,n]=e;("string"==typeof n||"number"==typeof n||"boolean"==typeof n)&&t.set(r,String(n))});let r=t.size>0?`?${t.toString()}`:"",n=await fetch(`${this.serverUrl}/session/setup${r}`);if(!n.ok){let e=await n.json().catch(()=>null);throw Error((null==e?void 0:e.error)||n.statusText||"Failed to load session setup")}return await n.json()}catch(e){throw console.error("Failed to get session setup:",e),e}}async listSessionTargets(){if(!this.serverUrl)return[];try{let e=await fetch(`${this.serverUrl}/session/targets`);if(!e.ok){let t=await e.json().catch(()=>null);throw Error((null==t?void 0:t.error)||e.statusText||"Failed to load session targets")}let t=await e.json();return Array.isArray(t)?t:[]}catch(e){throw console.error("Failed to get session targets:",e),e}}async createSession(e){if(!this.serverUrl)throw Error("Server URL not configured");let t=await fetch(`${this.serverUrl}/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e||{})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error((null==e?void 0:e.error)||t.statusText)}return await t.json()}async destroySession(){if(!this.serverUrl)throw Error("Server URL not configured");let e=await fetch(`${this.serverUrl}/session`,{method:"DELETE"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error((null==t?void 0:t.error)||e.statusText)}return await e.json()}constructor(e){super(),af(this,"serverUrl",void 0),af(this,"_id",void 0),af(this,"dumpUpdateCallback",void 0),af(this,"pollingIntervalId",void 0),this.serverUrl=e}}function am(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ay{createAdapter(e,t,r,n){switch(e){case"local-execution":if(!r&&!n)throw Error("Agent or agentFactory is required for local execution");return new ah(r,n);case"remote-execution":return new ag(t||("undefined"!=typeof window&&window.location.protocol.includes("http")?window.location.origin:"http://localhost:5800"));default:throw Error(`Unsupported execution type: ${e}`)}}runtimeMetadataAdapter(){return this.adapter instanceof ah||this.adapter instanceof ag?this.adapter:null}async executeAction(e,t,r){var n;return await (null==(n=this.beforeActionHook)?void 0:n.call(this,e,t,r)),await this.adapter.executeAction(e,t,r)}setBeforeActionHook(e){this.beforeActionHook=e}async getActionSpace(e){return this.adapter.getActionSpace(e)}validateStructuredParams(e,t){return this.adapter.validateParams(e,t)}formatErrorMessage(e){return this.adapter.formatErrorMessage(e)}createDisplayContent(e,t,r){return this.adapter.createDisplayContent(e,t,r)}get id(){if(this.adapter instanceof ag||this.adapter instanceof ah)return this.adapter.id}async checkStatus(){return!(this.adapter instanceof ag)||this.adapter.checkStatus()}async overrideConfig(e){return this.adapter.overrideConfig(e)}async runConnectivityTest(e){return this.adapter.runConnectivityTest(e)}async getTaskProgress(e){return this.adapter instanceof ag?this.adapter.getTaskProgress(e):{}}async cancelTask(e){return this.adapter instanceof ag?this.adapter.cancelTask(e):{error:"Cancel task not supported in local execution mode"}}onDumpUpdate(e){this.adapter instanceof ah?this.adapter.onDumpUpdate(e):this.adapter instanceof ag&&this.adapter.onDumpUpdate(e)}onProgressUpdate(e){this.adapter instanceof ah&&this.adapter.setProgressCallback(e)}async cancelExecution(e){if(this.adapter instanceof ag){let t=await this.adapter.cancelTask(e);if(t.success)return{dump:t.dump||null,reportHTML:t.reportHTML||null}}else if(this.adapter instanceof ah){let t=await this.adapter.cancelTask(e);if(t.success)return{dump:t.dump||null,reportHTML:t.reportHTML||null}}return null}async getCurrentExecutionData(){return this.adapter instanceof ah&&this.adapter.getCurrentExecutionData?await this.adapter.getCurrentExecutionData():{dump:null,reportHTML:null}}async getScreenshot(){return this.adapter instanceof ag?this.adapter.getScreenshot():null}async interact(e){return this.adapter instanceof ag?this.adapter.interact(e):{ok:!1,error:"Direct interaction requires remote execution"}}async startRecorderSession(e){return this.adapter instanceof ag?this.adapter.startRecorderSession(e):{ok:!1,supported:!1,error:"Recorder requires remote execution"}}async getRecorderCapabilities(){return this.adapter instanceof ag?this.adapter.getRecorderCapabilities():{supported:!1,source:"unsupported",error:"Recorder requires remote execution"}}async stopRecorderSession(){return this.adapter instanceof ag?this.adapter.stopRecorderSession():{ok:!0}}async getRecorderEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.adapter instanceof ag?this.adapter.getRecorderEvents(e):{events:[],nextIndex:e}}async describeRecorderEventAtPoint(e){return this.adapter instanceof ag?this.adapter.describeRecorderEventAtPoint(e):{ok:!1,error:"Recorder aiDescribe requires remote execution"}}async getInterfaceInfo(){let e=this.runtimeMetadataAdapter();return e?e.getInterfaceInfo():null}async getRuntimeInfo(){let e=this.runtimeMetadataAdapter();return e?e.getRuntimeInfo():null}async getSessionInfo(){return this.adapter instanceof ag?this.adapter.getSessionInfo():null}async getSessionSetup(e){return this.adapter instanceof ag?this.adapter.getSessionSetup(e):null}async listSessionTargets(){return this.adapter instanceof ag?this.adapter.listSessionTargets():[]}async createSession(e){if(this.adapter instanceof ag)return this.adapter.createSession(e);throw Error("Session creation is only supported in server mode")}async destroySession(){if(this.adapter instanceof ag)return this.adapter.destroySession();throw Error("Session destruction is only supported in server mode")}getServiceMode(){return this.adapter instanceof ah?"In-Browser-Extension":"Server"}constructor(e){am(this,"adapter",void 0),am(this,"beforeActionHook",void 0),this.adapter=this.createAdapter(e.type,e.serverUrl,e.agent,e.agentFactory)}}var av=r(5810);function ab(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e?Object.fromEntries(e.fields.map(e=>[e.key,function(e,t){var r,n,i,o,a;return null!=t&&""!==t?t:"select"===e.type?null!=(o=null!=(i=e.defaultValue)?i:null==(n=e.options)||null==(r=n[0])?void 0:r.value)?o:"":null!=(a=null!=t?t:e.defaultValue)?a:""}(e,t[e.key])])):{}}function aw(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(null==e?void 0:e.autoSubmitWhenReady))return null;let r=ab(e,t);for(let t of e.fields){var n;if(t.required&&(null==(n=r[t.key])||""===n))return null}return r}function aE(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ak(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ax(e){return Object.keys(e).length>0}function aS(e){return e?JSON.stringify(e):null}let aC="npx puppeteer browsers install chrome",aj="https://pptr.dev/guides/configuration",aI=/could not find (?:google )?chrome/;function aO(e){if(e instanceof Error)return e.message||e.toString();if("string"==typeof e)return e;if(e&&"object"==typeof e&&"message"in e){let t=e.message;if("string"==typeof t)return t}return String(e)}function aP(){if("undefined"!=typeof navigator)try{var e;null==(e=navigator.clipboard)||e.writeText(aC).catch(()=>void 0)}catch(e){}}function aR(){return(0,o.jsxs)("span",{"aria-hidden":!0,style:{display:"block",height:16,position:"relative",width:16},children:[(0,o.jsx)("span",{style:{border:"1.5px solid currentColor",borderRadius:3,height:10,left:5,position:"absolute",top:3,width:8}}),(0,o.jsx)("span",{style:{background:"#f6f8fa",border:"1.5px solid currentColor",borderRadius:3,height:10,left:2,position:"absolute",top:0,width:8}})]})}function aT(e){let{error:t}=e,r=aO(t),[n,i]=(0,a.useState)(!1);return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[(0,o.jsx)("div",{children:"Studio could not find the Chrome browser required to create a Web Agent."}),(0,o.jsx)("div",{children:"Run this command, then try again:"}),(0,o.jsxs)("div",{onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{background:"#f6f8fa",border:"1px solid #d9d9d9",borderRadius:6,boxSizing:"border-box",maxWidth:"100%",minHeight:46,position:"relative"},children:[(0,o.jsx)("pre",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:14,lineHeight:1.4,margin:0,overflowX:"auto",padding:"12px 44px 12px 12px",whiteSpace:"nowrap"},children:aC}),(0,o.jsx)("button",{"aria-label":"Copy install command",onBlur:()=>i(!1),onClick:aP,onFocus:()=>i(!0),style:{alignItems:"center",background:"#ffffff",border:"1px solid #d9d9d9",borderRadius:6,bottom:7,color:"#555",cursor:"pointer",display:"inline-flex",height:28,justifyContent:"center",opacity:+!!n,padding:0,pointerEvents:n?"auto":"none",position:"absolute",right:7,transition:"opacity 120ms ease",width:28},title:"Copy command",type:"button",children:(0,o.jsx)(aR,{})})]}),(0,o.jsxs)("div",{children:["Guide:"," ",(0,o.jsx)("a",{href:aj,rel:"noreferrer",target:"_blank",children:aj})]}),(0,o.jsx)(h.A,{getPopupContainer:()=>document.body,overlayInnerStyle:{width:"min(680px, calc(100vw - 48px))"},overlayStyle:{maxWidth:"min(680px, calc(100vw - 48px))"},placement:"topRight",title:(0,o.jsx)("pre",{style:{margin:0,maxHeight:280,overflow:"auto",whiteSpace:"pre-wrap",width:"100%"},children:r}),zIndex:1e4,children:(0,o.jsx)("button",{style:{alignSelf:"flex-start",background:"transparent",border:0,color:"inherit",cursor:"help",padding:0,textDecoration:"underline"},type:"button",children:"Original error"})})]})}function aN(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function aM(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){aN(o,n,i,a,s,"next",e)}function s(e){aN(o,n,i,a,s,"throw",e)}a(void 0)})}}function aD(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function aB(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}let az=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:400,height:283,fill:"none",viewBox:"0 0 400 283"},e),r=r={children:[(0,o.jsx)("path",{fill:"url(#server-offline-background_svg__a)",fillOpacity:.7,d:"M0 283h283v400H0z",transform:"rotate(-90 0 283)"}),(0,o.jsx)("path",{fill:"url(#server-offline-background_svg__b)",d:"M0 0h400v283H0z"}),(0,o.jsxs)("defs",{children:[(0,o.jsxs)("radialGradient",{id:"server-offline-background_svg__b",cx:0,cy:0,r:1,gradientTransform:"matrix(0 115.5 -163.251 0 200 141.5)",gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#F2F4F7",stopOpacity:0}),(0,o.jsx)("stop",{offset:1,stopColor:"#F2F4F7"})]}),(0,o.jsx)("pattern",{id:"server-offline-background_svg__a",width:1,height:1,patternTransform:"matrix(18 0 0 18 0 283)",patternUnits:"userSpaceOnUse",preserveAspectRatio:"none",viewBox:"0 0 12 12",children:(0,o.jsx)("path",{stroke:"#A1A1A1",strokeWidth:.2,d:"M.1.1h11.8v11.8H.1z"})})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},aL=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:178,height:135,fill:"none",viewBox:"0 0 178 135"},e),r=r={children:[(0,o.jsx)("g",{filter:"url(#server-offline-foreground_svg__a)",children:(0,o.jsx)("rect",{width:74,height:97.5,fill:"url(#server-offline-foreground_svg__b)",rx:12,transform:"matrix(.86603 .5 -.86603 .5 99.136 28.5)"})}),(0,o.jsx)("rect",{width:78,height:101.5,y:-2,fill:"url(#server-offline-foreground_svg__c)",stroke:"url(#server-offline-foreground_svg__d)",strokeWidth:4,rx:14,transform:"matrix(.86603 .5 -.86603 .5 97.404 4)"}),(0,o.jsx)("path",{fill:"url(#server-offline-foreground_svg__e)",d:"M78.147 31.404a.9.9 0 0 1 .156-.559c.117-.178.295-.34.524-.478.228-.138.503-.248.806-.322a4 4 0 0 1 .961-.114c.33 0 .657.038.961.113s.578.184.807.322c.23.137.407.3.525.478.117.178.17.368.157.559v3c.014.19-.04.38-.156.559a1.6 1.6 0 0 1-.524.478 3 3 0 0 1-.806.322c-.304.075-.631.114-.961.114s-.657-.038-.961-.113a3 3 0 0 1-.807-.321 1.6 1.6 0 0 1-.525-.479.9.9 0 0 1-.157-.559zm-9.678 8.414c-.632-.015-1.23-.17-1.668-.434s-.682-.615-.682-.98c0-.366.246-.717.684-.98.438-.264 1.036-.42 1.669-.434h5.196c.33-.007.659.024.968.091.308.068.59.17.828.303s.428.29.557.466a.93.93 0 0 1 .196.555.93.93 0 0 1-.197.554c-.13.176-.32.334-.558.466s-.52.235-.829.303a4 4 0 0 1-.968.09zm38.106 11a4 4 0 0 1-.956-.098 3 3 0 0 1-.815-.305 1.7 1.7 0 0 1-.547-.463.93.93 0 0 1-.193-.55c0-.188.066-.375.193-.549s.313-.331.547-.463c.233-.132.511-.235.815-.304.304-.07.629-.102.956-.098h5.196c.327-.004.652.029.956.098s.582.172.815.304c.234.132.42.29.547.463s.193.361.193.55a.93.93 0 0 1-.193.55 1.7 1.7 0 0 1-.547.462 3 3 0 0 1-.815.305 4 4 0 0 1-.956.097zm-9.38 2.585c.017-.369.281-.72.74-.978.457-.258 1.071-.402 1.71-.402.64 0 1.255.144 1.713.402.457.258.722.61.738.978v3a.9.9 0 0 1-.169.552c-.12.176-.299.336-.527.471a3 3 0 0 1-.803.316 4 4 0 0 1-.951.11c-.327 0-.65-.037-.952-.11a3 3 0 0 1-.802-.316 1.6 1.6 0 0 1-.527-.47.9.9 0 0 1-.17-.553zm8.515-18.5c-1.838-1.06-4.33-1.656-6.93-1.656-2.598 0-5.09.596-6.928 1.657l-5.196 3c-.225.14-.495.252-.796.33s-.626.12-.956.123a4 4 0 0 1-.963-.102 3 3 0 0 1-.817-.312 1.7 1.7 0 0 1-.54-.471.9.9 0 0 1-.178-.557.95.95 0 0 1 .215-.551c.135-.174.33-.33.571-.46l5.196-3c2.757-1.591 6.495-2.485 10.393-2.485s7.636.894 10.392 2.485c2.756 1.592 4.305 3.75 4.305 6s-1.549 4.409-4.305 6l-5.196 3a2.9 2.9 0 0 1-.796.33 4.087 4.087 0 0 1-1.919.021 3 3 0 0 1-.817-.311 1.7 1.7 0 0 1-.54-.472.9.9 0 0 1-.177-.556.95.95 0 0 1 .214-.552c.135-.174.33-.33.572-.46l5.196-3c1.837-1.06 2.87-2.5 2.87-4s-1.033-2.94-2.87-4m-29.444 5c.224-.14.494-.252.795-.33s.626-.12.956-.123.657.03.963.102c.306.071.584.177.817.312.234.135.417.295.54.472a.9.9 0 0 1 .178.556.95.95 0 0 1-.215.551c-.135.174-.329.33-.571.46l-5.196 3c-1.838 1.06-2.87 2.5-2.87 4s1.032 2.94 2.87 4c1.838 1.062 4.33 1.658 6.929 1.658s5.091-.596 6.929-1.657l5.196-3c.465-.249 1.079-.384 1.712-.376.633.007 1.238.155 1.686.414.448.258.705.607.717.973s-.221.72-.652.988l-5.196 3c-2.756 1.592-6.494 2.486-10.392 2.486s-7.636-.894-10.392-2.486c-2.757-1.591-4.305-3.75-4.305-6s1.548-4.408 4.305-6z"}),(0,o.jsx)("path",{fill:"#000",d:"m108.005 6.698 3.211-1.854c.954-.55 2.247-.86 3.596-.86s2.642.31 3.596.86c.953.55 1.489 1.297 1.489 2.076 0 .778-.536 1.525-1.489 2.076l-9.589 5.535c-.317.184-.749.287-1.198.287-.45 0-.881-.103-1.199-.287-.317-.183-.496-.432-.496-.692s.179-.508.496-.692l9.589-5.535-2.398-1.384-9.588 5.535c-.953.551-1.489 1.298-1.489 2.076 0 .779.536 1.526 1.489 2.076s2.247.86 3.596.86c1.348 0 2.642-.31 3.595-.86l9.589-5.535c1.589-.918 2.482-2.163 2.482-3.46s-.893-2.543-2.482-3.46c-1.59-.918-3.745-1.433-5.993-1.433s-4.403.515-5.993 1.433l-4.394 2.537z"}),(0,o.jsxs)("defs",{children:[(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__b",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#D9D9D9"}),(0,o.jsx)("stop",{offset:1,stopColor:"#E9E9EB"})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__c",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#7D7E80"}),(0,o.jsx)("stop",{offset:1,stopColor:"#C7C9CC"})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__d",x1:37,x2:37,y1:0,y2:97.5,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#fff"}),(0,o.jsx)("stop",{offset:1,stopColor:"#fff",stopOpacity:.2})]}),(0,o.jsxs)("linearGradient",{id:"server-offline-foreground_svg__e",x1:72.75,x2:90.111,y1:33.874,y2:63.944,gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#fff"}),(0,o.jsx)("stop",{offset:1,stopColor:"#fff",stopOpacity:.5})]}),(0,o.jsxs)("filter",{id:"server-offline-foreground_svg__a",width:176.348,height:118.721,x:.786,y:16.015,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,o.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,o.jsx)("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),(0,o.jsx)("feOffset",{dy:4}),(0,o.jsx)("feGaussianBlur",{stdDeviation:10}),(0,o.jsx)("feComposite",{in2:"hardAlpha",operator:"out"}),(0,o.jsx)("feColorMatrix",{values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0"}),(0,o.jsx)("feBlend",{in2:"BackgroundImageFix",result:"effect1_dropShadow_4624_2901"}),(0,o.jsx)("feBlend",{in:"SourceGraphic",in2:"effect1_dropShadow_4624_2901",result:"shape"})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var aF=r(4707),aK=r(6820),aU=r(9870),aQ=r(9877),aZ=r(5528),aJ=r(638);let aX="Auto dismiss keyboard",aH={aiAct:{group:"interaction",title:"Auto Planning: plan the steps and execute"},aiTap:{group:"interaction",title:"Click an element"},aiDoubleClick:{group:"interaction",title:"Double-click an element"},aiHover:{group:"interaction",title:"Hover over an element"},aiInput:{group:"interaction",title:"Input text into an element"},aiRightClick:{group:"interaction",title:"Right-click an element"},aiKeyboardPress:{group:"interaction",title:"Press keyboard keys"},aiScroll:{group:"interaction",title:"Scroll the page or element"},aiLocate:{group:"interaction",title:"Locate an element on the page"},aiQuery:{group:"extraction",title:"Extract data directly from the UI"},aiBoolean:{group:"extraction",title:"Get true/false answer"},aiNumber:{group:"extraction",title:"Extract numeric value"},aiString:{group:"extraction",title:"Extract text value"},aiAsk:{group:"extraction",title:"Ask a question about the UI"},aiAssert:{group:"validation",title:"Assert a condition is true"},aiWaitFor:{group:"validation",title:"Wait for a condition to be met"}},aG=["aiAct","aiTap","aiQuery","aiAssert"],aV=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"web page";return{type:"system",content:`
|
|
948
948
|
Welcome to Midscene.js Playground!
|
|
949
949
|
|
|
950
950
|
This is a panel for experimenting and testing Midscene.js features. You can use natural language instructions to operate the ${e}, such as clicking buttons, filling in forms, querying information, etc.
|
|
951
951
|
|
|
952
952
|
Please enter your instructions in the input box below to start experiencing.
|
|
953
|
-
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};aG();let aV={result:void 0,dump:null,reportHTML:null,error:null},aq="data:image/png;base64,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",aW="data:image/png;base64,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";function aY(e){return"object"==typeof e&&null!==e}let a_=e=>{let t=Math.round(e.center[0]),r=Math.round(e.center[1]),n=Math.ceil(4)-1;return{left:Math.max(t-n,0),top:Math.max(r-n,0),width:8,height:8}};function a$(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let a0=(e,t,r)=>{let n,i=(n=e.width/e.height>=t/r?e.width:e.height/r*t)>400?.1:n>50?.2:.3,o=Math.min(t,n+t*i*2),a=Math.min(e.left-t*i,t-o);a=Math.max(a,0);let s=Math.min(e.top-r*i,r-r/t*o);return{left:Math.round(a),top:Math.round(s=Math.max(s,0)),width:Math.round(o)}},a1=(e,t)=>a0({left:0,top:0,width:e,height:t},e,t),a2=(e,t,r)=>{var n;let i=null==e||null==(n=e.uiContext)?void 0:n.shotSize;return{width:(null==i?void 0:i.width)||t,height:(null==i?void 0:i.height)||r}},a3=e=>e.map((e,t)=>({execution:e,index:t})).sort((e,t)=>(Number.isFinite(e.execution.logTime)?e.execution.logTime:1/0)-(Number.isFinite(t.execution.logTime)?t.execution.logTime:1/0)||e.index-t.index).map(e=>{let{execution:t}=e;return t}),a5=e=>{var t,r;let n,i,o,a,s=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!s)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let A=(o=s.sdkVersion,a=[],(a3((null==(r=s.executions)?void 0:r.filter(Boolean))||[]).forEach(e=>{e.tasks.forEach(e=>{var t,r;let o=null==(t=e.uiContext)?void 0:t.shotSize;if(o){let e=o.width,t=o.height;n||(n=e,i=t)}if(e.usage){let{model_name:t,model_description:n,intent:i}=e.usage;r={intent:i,name:t,modelDescription:n},a.some(e=>e.intent===r.intent&&e.name===r.name&&e.modelDescription===r.modelDescription)||a.push(r)}})}),n&&i)?{width:n,height:i,sdkVersion:o,modelBriefs:a,deviceType:s.deviceType}:(console.warn("width or height is missing in dump file"),null));if(!A)return{scripts:[],sdkVersion:s.sdkVersion,modelBriefs:[]};let{width:l,height:c}=A,u=[],d=a3((null==(t=s.executions)?void 0:t.filter(Boolean))||[]);for(let e=0;e<d.length;e++){let t=a7(d[e],-1,l,c,e);t&&u.push(...t)}return{scripts:u.filter((e,t)=>t===u.length-1||"Done"!==e.title),width:l,height:c,sdkVersion:A.sdkVersion,modelBriefs:A.modelBriefs,deviceType:A.deviceType}},a7=function(e,t,r,n){let i,o;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===r||0===n)return null;let a=[];if(-1===t)a=e.tasks;else{let r=e.tasks.findIndex(e=>e===t);if(-1===r)return console.error("task not found, cannot generate animation scripts"),null;if(r===e.tasks.length-1)return null;for(let t=r;t<e.tasks.length&&(!(t>r)||"Planning"!==e.tasks[t].type||"Plan"!==e.tasks[t].subType);t++)a.push(e.tasks[t])}if(0===a.length)return null;let s=(e,t)=>{if(!t)return e;let r=a$({},e),n=null;return Object.defineProperty(r,"img",{get:()=>(null===n&&(n=t.base64),n),enumerable:!0}),r},A=[],l=!1,c="";a.forEach((e,t)=>{var u,d,p,h,f,g,m,y,v,b;let w=null==(b=a[t])?void 0:b.taskId;if(o=w,0===t&&(c=ae(e)),"Planning"===e.type){let t=[];if("Plan"===e.subType){let r=(null==(d=e.output)?void 0:d.actions)||[];if(r.length>0){let e=r[0],n=["locate","start","end"];if(e.param)for(let r in n.forEach(r=>{e.param[r]&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}),e.param)!n.includes(r)&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}}else"Locate"===e.subType&&(null==(u=e.output)?void 0:u.element)&&(t=[e.output.element]);let o=o4(e),a=ae(e),c=e.uiContext,h=null==c?void 0:c.screenshot;if(c&&h){let{width:u,height:d}=a2(e,r,n);A.push(s({type:"img",duration:300,title:o,subTitle:a,imageWidth:u,imageHeight:d,taskId:w},h)),t.forEach(t=>{var r,n,p,f,g,m,y;let v,b=(r=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},t),n=n={center:[Math.round(t.center[0]),Math.round(t.center[1])],rect:a_(t)},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r);p=a$({},a0(a_(b),u,d)),f=f={pointerLeft:b.center[0],pointerTop:b.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(f)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(f)).forEach(function(e){Object.defineProperty(p,e,Object.getOwnPropertyDescriptor(f,e))}),i=p,A.push(s({type:"insight",context:c,camera:i,highlightElement:b,searchArea:(null==e?void 0:e.searchArea)??(null==(m=aY(v=null==e?void 0:e.log)&&aY(y=v.dump)&&"string"==typeof y.type&&aY(y.taskInfo)?v.dump:null)||null==(g=m.taskInfo)?void 0:g.searchArea),duration:400,insightCameraDuration:800,title:o,subTitle:b.description||a,imageWidth:u,imageHeight:d,taskId:w},h)),l=!0})}if(e.recorder&&e.recorder.length>0){let t=null==(p=e.recorder[0])?void 0:p.screenshot,{width:i,height:o}=a2(e,r,n);A.push(s({type:"img",duration:900,title:o4(e),subTitle:ae(e),imageWidth:i,imageHeight:o,taskId:w},t))}}else if("Action Space"===e.type){let t=o4(e),i=ae(e);A.push({type:"spinning-pointer",duration:300,title:t,subTitle:i,taskId:w}),l&&(A.push({type:"clear-insight",duration:200,title:t,subTitle:i,taskId:w}),l=!1),A.push({type:"pointer",img:aq,duration:0,title:t,subTitle:i,taskId:w});let o=null==(f=e.recorder)||null==(h=f[0])?void 0:h.screenshot,{width:a,height:c}=a2(e,r,n);A.push(s({type:"img",duration:500,camera:"Sleep"===e.subType?a1(a,c):void 0,title:t,subTitle:i,imageWidth:a,imageHeight:c,taskId:w},o))}else{let t=o4(e),i=ae(e),o=null==(m=e.recorder)||null==(g=m[e.recorder.length-1])?void 0:g.screenshot;if(o){let{width:a,height:l}=a2(e,r,n);A.push(s({type:"img",duration:900,camera:a1(a,l),title:t,subTitle:i,imageWidth:a,imageHeight:l,taskId:w},o))}}if("finished"!==e.status){let t=o4(e),i=e.errorMessage||"unknown error",o=i.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":i,a=null==(v=e.recorder)||null==(y=v[e.recorder.length-1])?void 0:y.screenshot,{width:l,height:c}=a2(e,r,n);A.push(s({type:"img",camera:a1(l,c),duration:900,title:t,subTitle:o,imageWidth:l,imageHeight:c,taskId:w},a))}}),l&&(A.push({type:"clear-insight",duration:200,title:"",subTitle:"",taskId:o}),l=!1);let u=a.length>0?a2(a[a.length-1],r,n):{width:r,height:n};return A.push({title:"End",subTitle:c,type:"img",duration:200,camera:a1(u.width,u.height),taskId:void 0}),A};function a4(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function a8(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){a4(o,n,i,a,s,"next",e)}function s(e){a4(o,n,i,a,s,"throw",e)}a(void 0)})}}function a6(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function a9(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function se(e){var t;if(!e)return"";if("string"==typeof e)return e;if(null==e||null==(t=e.dump)?void 0:t.error)return e.dump.error;if(e.message)return String(e.message);try{return JSON.stringify(e)}catch(t){return String(e)}}function st(e,t){return e?Array.isArray(null==e?void 0:e.executions)?a5(e):e.tasks&&Array.isArray(e.tasks)?a5({sdkVersion:"",groupName:"Playground Execution",modelBriefs:[],executions:[e],deviceType:t}):null:null}function sr(e){return"aiAct"===e||"runMarkdown"===e}function sn(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class si{initDB(){return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.version);r.onerror=()=>t(r.error),r.onsuccess=()=>e(r.result),r.onupgradeneeded=e=>{let t=e.target.result;this.storeConfigs.forEach(e=>{let{name:r,keyPath:n}=e;t.objectStoreNames.contains(r)||t.createObjectStore(r,{keyPath:n}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,t,r){let n=(await this.dbPromise).transaction(e,t);return r(Array.isArray(e)?e.map(e=>n.objectStore(e)):n.objectStore(e))}promisifyRequest(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}async put(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(t))})}async get(e,t){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(t)))}async getAll(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let r=t?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return t?r.sort((e,t)=>e.timestamp-t.timestamp):r})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(t))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,t,r){sn(this,"dbPromise",void 0),sn(this,"dbName",void 0),sn(this,"version",void 0),sn(this,"storeConfigs",void 0),this.dbName=e,this.version=t,this.storeConfigs=r,this.dbPromise=this.initDB()}}let so=async(e,t,r,n)=>{try{return await e()}catch(e){return console.error(t,e),e instanceof Error&&"QuotaExceededError"===e.name&&n&&(console.log("Storage quota exceeded, running cleanup..."),await n()),r}},sa=(e,t,r)=>async()=>{try{let n=await e.getAll(t);if(n.length>r){let i=n.sort((e,t)=>e.timestamp-t.timestamp).slice(0,n.length-r);await Promise.all(i.map(r=>e.delete(t,r.id)))}}catch(e){console.error(`Failed to cleanup ${t}:`,e)}};function ss(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sA(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ss(o,n,i,a,s,"next",e)}function s(e){ss(o,n,i,a,s,"throw",e)}a(void 0)})}}function sl(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function sc(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){sl(e,t,r[t])})}return e}function su(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let sd="playground_messages",sp="playground_results";class sh{saveMessages(e){return sA(function*(){yield so(()=>sA(function*(){yield this.dbManager.clear(sd);let t=e.slice(-100);yield Promise.all(t.map((e,t)=>{let r=su(sc({},e),{result:"result"===e.type?void 0:e.result}),n={id:e.id||`msg-${t}`,data:r,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+t};return this.dbManager.put(sd,n)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return sA(function*(){return(yield so(()=>sA(function*(){let e=yield this.dbManager.getAll(sd,!0);return 0===e.length?[]:Promise.all(e.map(e=>sA(function*(){let t=e.data,r=su(sc({},t),{timestamp:new Date(t.timestamp)});if("result"===t.type&&t.id){let e=yield this.loadResult(t.id);e&&(r.result=e.result,r.replayScriptsInfo=e.replayScriptsInfo,r.replayCounter=e.replayCounter,r.verticalMode=e.verticalMode)}return r}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return sA(function*(){yield so(()=>sA(function*(){yield Promise.all([this.dbManager.clear(sd),this.dbManager.clear(sp)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,t){return sA(function*(){yield so(()=>sA(function*(){let r=this.compressResultForStorage(t),n={id:e,data:r,timestamp:Date.now(),size:JSON.stringify(r).length};yield this.dbManager.put(sp,n)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return sA(function*(){return(yield so(()=>sA(function*(){let t=yield this.dbManager.get(sp,e);return(null==t?void 0:t.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){let t=e.result,r=null==t?void 0:t.dump;return t&&r?Array.isArray(null==r?void 0:r.executions)?su(sc({},e),{result:su(sc({},t),{dump:su(sc({},r),{executions:r.executions.map(e=>su(sc({},e),{tasks:this.compressExecutionTasks(e.tasks)}))})})}):r.tasks?su(sc({},e),{result:su(sc({},t),{dump:su(sc({},r),{tasks:this.compressExecutionTasks(r.tasks)})})}):e:e}compressExecutionTasks(e){return e.map(e=>{var t;return su(sc({},e),{uiContext:e.uiContext?su(sc({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(t=e.recorder)?void 0:t.map(e=>su(sc({},e),{screenshot:e.screenshot}))})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let t=Math.round(e.length/1024);return`[COMPRESSED: ${t}KB screenshot removed for storage]`}return e}getStorageStats(){return sA(function*(){return(yield so(()=>sA(function*(){let[e,t]=yield Promise.all([this.dbManager.count(sd),this.dbManager.count(sp)]);return{messageCount:e,resultCount:t}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return sA(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){sl(this,"dbManager",void 0),sl(this,"namespace",void 0),sl(this,"messagesCleanup",void 0),sl(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new si(`midscene_playground_${e}`,1,[{name:sd,keyPath:"id"},{name:sp,keyPath:"id"}]),this.messagesCleanup=sa(this.dbManager,sd,100),this.resultsCleanup=sa(this.dbManager,sp,50)}}function sf(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sg(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){sf(o,n,i,a,s,"next",e)}function s(e){sf(o,n,i,a,s,"throw",e)}a(void 0)})}}function sm(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function sy(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){sm(e,t,r[t])})}return e}function sv(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}class sb{checkStorageSpace(){try{let e="storage-test",t="x".repeat(102400);return localStorage.setItem(e,t),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return sg(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let t=e.slice(-this.maxStorageItems).map(e=>sv(sy({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r)}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let t=e.slice(-10).map(e=>sv(sy({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r),console.info("Successfully saved recent messages after clearing storage")}catch(e){console.error("Failed to save even after clearing storage:",e),yield this.clearMessages()}}else console.error("Failed to save messages to localStorage:",t)}}).call(this)}loadMessages(){return sg(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let t=JSON.parse(e);return yield Promise.all(t.map(e=>sg(function*(){if("result"===e.type&&e.id){let t=`${this.resultsKey}-${e.id}`,r=localStorage.getItem(t);if(r)try{let t=JSON.parse(r);return sy({},e,t)}catch(e){console.warn("Failed to parse stored result:",e)}}return e}).call(this)))}catch(e){return console.error("Failed to load messages from localStorage:",e),[]}}).call(this)}clearMessages(){return sg(function*(){try{localStorage.removeItem(this.messagesKey),Object.keys(localStorage).forEach(e=>{e.startsWith(this.resultsKey)&&localStorage.removeItem(e)})}catch(e){console.error("Failed to clear messages from localStorage:",e)}}).call(this)}saveResult(e,t){return sg(function*(){try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(r){if(r instanceof DOMException&&"QuotaExceededError"===r.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",r)}}).call(this)}handleQuotaExceeded(){return sg(function*(){try{let e=Object.keys(localStorage),t=e.filter(e=>e.startsWith(this.resultsKey)),r=t.slice(0,Math.max(1,Math.floor(t.length/2)));r.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${r.length} old result entries to free up storage space`);let n=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(n.length>10){let e=n.slice(0,Math.floor(n.length/3));e.forEach(e=>{e!==this.messagesKey&&localStorage.removeItem(e)}),console.info(`Cleared ${e.length} additional playground-related entries`)}}catch(e){console.error("Failed to handle quota exceeded:",e)}}).call(this)}constructor(e="playground"){sm(this,"messagesKey",void 0),sm(this,"resultsKey",void 0),sm(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class sw{saveMessages(e){return sg(function*(){this.messages=[...e]}).call(this)}loadMessages(){return sg(function*(){return[...this.messages]}).call(this)}clearMessages(){return sg(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,t){return sg(function*(){this.results.set(e,t)}).call(this)}constructor(){sm(this,"messages",[]),sm(this,"results",new Map)}}class sE{saveMessages(e){return sg(function*(){})()}loadMessages(){return sg(function*(){return[]})()}clearMessages(){return sg(function*(){})()}saveResult(e,t){return sg(function*(){})()}}function sk(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new sh(t);return console.warn("IndexedDB not available, falling back to localStorage"),sk("localStorage",t);case"localStorage":if("undefined"!=typeof localStorage)return new sb(t);return console.warn("localStorage not available, falling back to memory storage"),sk("memory",t);case"memory":return new sw;case"none":return new sE;default:throw Error(`Unknown storage type: ${e}`)}}function sx(){if("undefined"!=typeof indexedDB)try{return indexedDB.open("test",1).onerror=()=>{},"indexeddb"}catch(e){}if("undefined"!=typeof localStorage)try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),"localStorage"}catch(e){}return"memory"}function sS(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sC(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){sS(o,n,i,a,s,"next",e)}function s(e){sS(o,n,i,a,s,"throw",e)}a(void 0)})}}function sj(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function sI(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let sO=e=>{var t;let r=e.highlightElements||[],n=e.highlightRect,i=null==(t=e.uiContext)?void 0:t.shotSize;if(!i)return(0,o.jsx)("div",{className:"blackboard",children:(0,o.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let s=e.uiContext,A=i.width,l=i.height,c=a.useMemo(()=>(function(e){if(!(null==e?void 0:e.length))return[];let t=new Map;return e.forEach((e,r)=>{var n,i;if(!(null==e?void 0:e.rect)||!(null==e?void 0:e.center))return;let o="content"in e&&e.content?e.content:"description"in e&&e.description?e.description:void 0,a=["id"in e?e.id:"",o||"",(n=e.center,`${n[0]}:${n[1]}`),(i=e.rect,`${i.left}:${i.top}:${i.width}:${i.height}`)].join("|");t.has(a)||t.set(a,{key:"id"in e&&e.id||`${a||"highlight"}-${r}`,label:o,center:e.center,rect:e.rect})}),Array.from(t.values())})(r),[r]),u=a.useMemo(()=>{var e;return(null==s||null==(e=s.screenshot)?void 0:e.base64)||""},[s]),d=c.map(e=>a_(e)),p=null;return 1===d.length?p=(0,o.jsx)("div",{className:"bottom-tip",children:(0,o.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d[0])]})}):d.length>1&&(p=(0,o.jsx)("div",{className:"bottom-tip",children:(0,o.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d)]})})),(0,o.jsxs)("div",{className:"blackboard",children:[(0,o.jsxs)("div",{className:"blackboard-main-content",style:{width:"fit-content",maxWidth:"100%",position:"relative"},children:[u&&(0,o.jsx)("img",{src:u,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,o.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${A}/${l}`,"--ui-scale":Math.max(1,Math.sqrt(A/1920))},children:[n&&(0,o.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/A*100}%`,top:`${n.top/l*100}%`,width:`${n.width/A*100}%`,height:`${n.height/l*100}%`},children:(0,o.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),c.map(e=>{let t=a_(e);return(0,o.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${t.left/A*100}%`,top:`${t.top/l*100}%`,width:`${t.width/A*100}%`,height:`${t.height/l*100}%`}},`${e.key}-rect`)})]})]}),(0,o.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:p})]})};var sP=r(9783),sR=r(7294),sT=r(4985),sN=r(1090),sM=r(2946),sD=r(90),sB=r(3776);let sz=e=>{let{text:t,disabled:r=!1,speed:n=5,className:i="",colorTheme:a="blue"}=e,s={"--animation-duration":`${n}s`},A=`theme-${a}`;return(0,o.jsx)("div",{className:`shiny-text ${A} ${r?"disabled":""} ${i}`,style:s,children:t})},sL=(0,o.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,o.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,o.jsx)("br",{}),"a. ",(0,o.jsx)("strong",{children:"npx midscene-playground"}),(0,o.jsx)("br",{}),"b. ",(0,o.jsx)("strong",{children:"npx --yes @midscene/web"})]}),sF=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:sL;return(0,o.jsx)("div",{className:"server-tip",children:(0,o.jsx)(y.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},sK=(0,o.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,o.jsx)(sz,{disabled:!0,text:"The result will be shown here"})});var sU=JSON.parse('{"content":[{"content":"Swag Labs","rect":{"left":895,"top":38,"width":130,"height":32,"zoom":1},"center":[960,54],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"d6c5e2f100","attributes":{"nodeType":"TEXT Node"},"indexId":0},{"content":"Username","rect":{"left":814,"top":154,"width":292,"height":40,"zoom":1},"center":[960,174],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'a9021f480e\']","id":"a9021f480e","attributes":{"class":".input_error.form_input","placeholder":"Username","type":"text","data-test":"username","id":"user-name","name":"user-name","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":1},{"content":"Password","rect":{"left":814,"top":209,"width":292,"height":40,"zoom":1},"center":[960,229],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'580f3b761d\']","id":"580f3b761d","attributes":{"class":".input_error.form_input","placeholder":"Password","type":"password","data-test":"password","id":"password","name":"password","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":2},{"content":"","rect":{"left":814,"top":253,"width":292,"height":45,"zoom":1},"center":[960,275],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'3e1faf0fd6\']","id":"3e1faf0fd6","attributes":{"class":".error-message-container","nodeType":"CONTAINER Node"},"indexId":3},{"content":"Login","rect":{"left":814,"top":303,"width":292,"height":49,"zoom":1},"center":[960,327],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'6db0b64062\']","id":"6db0b64062","attributes":{"type":"submit","class":".submit-button.btn_action","data-test":"login-button","id":"login-button","name":"login-button","value":"Login","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":4},{"content":"Accepted usernames are:","rect":{"left":570,"top":435,"width":221,"height":21,"zoom":1},"center":[680,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"5ca36a5942","attributes":{"nodeType":"TEXT Node"},"indexId":5},{"content":"standard_user","rect":{"left":570,"top":479,"width":109,"height":19,"zoom":1},"center":[624,488],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"fd2fe54174","attributes":{"nodeType":"TEXT Node"},"indexId":6},{"content":"locked_out_user","rect":{"left":570,"top":503,"width":126,"height":19,"zoom":1},"center":[633,512],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"403daee75b","attributes":{"nodeType":"TEXT Node"},"indexId":7},{"content":"problem_user","rect":{"left":570,"top":527,"width":101,"height":19,"zoom":1},"center":[620,536],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"2b34f1e161","attributes":{"nodeType":"TEXT Node"},"indexId":8},{"content":"performance_glitch_user","rect":{"left":570,"top":551,"width":193,"height":19,"zoom":1},"center":[666,560],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"6ae63a4d9e","attributes":{"nodeType":"TEXT Node"},"indexId":9},{"content":"error_user","rect":{"left":570,"top":575,"width":84,"height":19,"zoom":1},"center":[612,584],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"76030282f1","attributes":{"nodeType":"TEXT Node"},"indexId":10},{"content":"visual_user","rect":{"left":570,"top":599,"width":92,"height":19,"zoom":1},"center":[616,608],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"f34b057726","attributes":{"nodeType":"TEXT Node"},"indexId":11},{"content":"Password for all users:","rect":{"left":960,"top":435,"width":221,"height":21,"zoom":1},"center":[1070,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"e693f608cd","attributes":{"nodeType":"TEXT Node"},"indexId":12},{"content":"secret_sauce","rect":{"left":960,"top":477,"width":101,"height":19,"zoom":1},"center":[1010,486],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"cde9de9828","attributes":{"nodeType":"TEXT Node"},"indexId":13}],"size":{"width":1920,"height":1080},"screenshotBase64":"data:image/png;base64,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8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC","screenshotBase64WithElementMarker":"data:image/png;base64,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vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe9706lv37752Mc+luXLl6dLly5pamrKxr761a9mY3vvvXc+8YlPZGNHHXVUNtba2prW1tYsW7YsPXv2TFEUAQAAAHip6gMAALClPfFEMmFC8sQTeSVaWlryP+nRo0deTFEUaWlpyaupubk5r7aWlpYAAAAAvFz1AQAA2NLmz0/OPz8AAAAAvLqKAAAAAAAAAFAK9QEAANhcqtW8bJVKAAAAAHhligAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUAr1AQAA2MqtWbMmAFuDpqamAAAAbM2KAAAAAAAAAFAK9QEAANjKNTU1BQAAAID/XREAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSqA8AAMDWplIJAAAAAC9ffQAAALYm1WoAAAAAeGWKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhPgAAAFuTSiUArynVagAAALYW9QEAANjaVKsBeE2oVAIAALA1KQIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAfAACAzaVSCQAAAABbThEAAAC2Gm1tbWlrawsAAADAK1EfAACALWHs2OScc1JtaUlNZdmyZMKE5KGH8lJcfPHFWb9+fWoaGhqy00475YADDki/fv1SJtdff30aGxtz7LHHBgAAAODlKgIAALC5tbQkkyYlgwalMmVKKlOmpNrSklxxRdLSkpdiwYIFGTNmTE466aS88Y1vTFtbWy6++OI8//zzAQAAAOC/1AcAAGBzmzAh6dUrOeywZNmy1FTGjk0mT07OPDP5xjfyUvTp0ycDBgzIgAEDsueee+axxx7LnDlzcsghhwQAAACApD4AAACb24wZyTnnJMuW5f81ZUr+plevvFLbb799li9fnprHH388v/71r/PXv/41vXv3zpgxY7Lffvulpq2tLddff33mzp2bbt26Zfjw4TnyyCNT09bWluuvvz5z585Nt27dMnz48Bx55JF5/PHHc/vtt+ess85KzdNPP52rrroqRx99dIYNG5aaa6+9NoMGDcp+++2X+fPn57e//W2efPLJ9O7dO62trRkzZkxqOjo6ctFFF+Xtb397brnllqxduzYf+tCHsmzZstx000157LHH0qVLl4wePTrVajUAAAAAr1R9AAAANrcf/Sj/P8cfn7+ZPDkvV3t7e+bNm5dHHnkkb3jDG7Jy5cpccsklOeGEE9La2ponn3wyP/zhD9OvX7/ssssuueuuu/LMM8/kvPPOS1tbWy699NIMHDgwQ4cOzV133ZVnnnkm5513Xtra2nLppZdm4MCBGTx4cJ544ok8//zz6dOnT2bNmpU1a9ZkxowZGTZsWNrb2zNjxoyMGTMmCxYsyA9/+MOMGzcup512WhYtWpQrr7wy7e3tGTt2bKrVahYtWpRf/OIXOeSQQ7LTTjtl7dq1ueSSS7Lbbrvl7LPPTrVaza233pqZM2fmoIMOCgAAAMArUR8AAIAtbeTI5IorkhkzkilT8lJdccUVqaurS1tbW7bbbruMHz8+gwcPzurVq/P+978/AwcOzPLly9OrV6/suOOOeeyxx7LLLrukZuXKlVm4cGF22223nHvuualWq+m0cuXKLFy4MLvttlvOPffcVKvV1NfXZ/DgwfnTn/6U17/+9ZkzZ07Gjx+fa665Ju3t7Xn88cfTvXv39O/fPzfeeGOGDh2a/fffPzU777xzjjvuuNxwww0ZO3ZsOo0dOzb77rtvah5++OFs2LAh48ePT6VSSc1JJ52UP//5zwEAAAB4peoDAACwJY0cmUyenOqSJamceWZejlNPPTUDBw5Mly5dUldXl05dunTJvffemyuvvDLbbbdd6urq8uyzz2bNmjWpOeSQQ7Jhw4bccMMNWbJkSfbcc8+MGzcu2223XQ455JBs2LAhN9xwQ5YsWZI999wz48aNy3bbbZchQ4Zk7ty5GTZsWJYuXZohQ4akf//+mTdvXh599NEMGTIkNQsWLMjQoUOzsQEDBmTJkiVZs2ZNunbtmpr+/fun09NPP50BAwakUqmkU1EU2XHHHQMAAADwStUHAABgSxk7Npk0KXniiVQOOyxZtiwvR9euXdPY2JhNzZw5M48//ng+9rGPpUuXLqn51re+lU5Lly7NmDFjcvjhh2fNmjW5+uqrc/PNN+fUU0/N0qVLM2bMmBx++OFZs2ZNrr766tx888059dRTM3To0PzqV7/KzJkzs/fee6coigwdOjSzZs3K/Pnzc8wxx6SmX79+efbZZ7OxRYsWpbm5OU1NTWlvb09NXV1dOvXr1y8PPfRQNrVo0aL07ds3AAAAAK9EEQAAgC3hHe9IJk9OJk1KDjssWbYsr5b169envb097e3tqbn//vuzcOHCdLr11ltz9dVXp729PU1NTenVq1fa29tTc+utt+bqq69Oe3t7mpqa0qtXr7S3t6emubk5/fr1y6233pphw4alZtiwYbn//vuzePHi7L777qkZOXJkHnrooTz66KOpWb58eW6++ea0trbmxQwePDjr1q3L7bffng0bNmTDhg255ZZbsnTp0gAAAAC8UvUBAADY3EaOTK64IrniiuSd78yrrbW1NbNnz84XvvCFNDQ0ZIcddsh+++2XTuPGjcvEiRNz/vnnp6GhIQ0NDTnjjDNSM27cuEycODHnn39+Ghoa0tDQkDPOOCOdhg4dmmeeeSZ77rlnavr06ZM+ffqkX79+qaurS83uu++e8ePH55prrsn69evT0dGR1tbWHHXUUXkx3bt3z7vf/e78/Oc/z5QpU1KtVjN06NAceOCBAQAAAHilKos3rK4GAGAzqS5bk969ewfYRlUq+ZvLL0/OPDMvaMKE5Pzz899Uq3kl1q5dm7a2tjQ3N+eFrFu3Lm1tbenZs2c2tW7durS1taVnz575eyxfvjw9e/ZMpVLJS7V69eoURZHGxsYArzGVSlKtBuClWrx4cSotTQEA2FzqAwAAsLk98UQyYUJe0OTJebU0NjamsbExL6ahoSENDQ15IQ0NDWloaMjfq7m5OS9Xt27dAgAAAPBqqA8AAMDmdv75AQAAAGDzKwIAAAAAAABAKdQHAABgc6lW87JVKgEAAADglSkCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEAp1AcAAGArt3jx4gBsDXr37h0AAICtWX0AAAC2NpVKNtY7AAAAALwU9QEAANjaVKsBeE2oVAIAALA1KQIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAK9QEAANjaVCoBAAAA4OWrDwAAwNamWg3Aa0KlEgAAgK1JEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBTqAwAAsLlUKgEAAABgyykCAAAAAAAAQCnUBwAAYEsZOTI588xUR45MTeVHP0p+9KMAAAAA8OqoDwAAwJaw667JjBnJjBmpTJqUv7niiqRXr+Qb3wgAAAAAf7/6AAAAbAkTJiRLlyajRqVTdezYVM48M/nGNwIAAADA368IAADAlnDFFcm++2ZjlSlTkkGDAgAAAMCroz4AAABbwpQp+W+OPz4555zknHMCAAAAwKujPgAAAFvSrrsmTzyRv5kxI1m6NAAAAAC8OooAAABsSfPnJ716JYcdlsyYkUyalLS0BAAAAIC/XxEAAIAtbdmyZMqU5Otfz98cdlgAAAAA+PsVAQAA2BI+85lk7Nj8Nw89lL/Zd98AAAAA8PcrAgAAsAVU3/GOVD/zmfw3Y8fmbyZPDgAA/w978AGedWEobP9+/klIAIEEWWEjEEwgbAgQZLlwa6tWUVzUhQpOfGvtcbQ9ra2tgqMVVIaNOGjVFo+jiKAispcIBNmEQDAkjGDIet7vf67r+S6uHHve4qmKz7l/P0mSpP+5RCRJkiTpWxB56CGYNg1WrIDXX+c/3X470fffJzJ/PpIkSZIkSfqfS0SSJEmSvg3Tp8PWrUQfeACGDiUUefBBItOmIUmSJEmSpH+NRCRJkiTp2zJ/PpERI5AkSZIkSdI3I0CSJEmSJEmSJEmSFBcSkSRJkqRvSjTKMYtEkCRJkiRJ0tcTIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKCwGSJEmSJEmSJEmSpLgQIEmSJEmSJEmSJEmKC4lIkiRJ0vEmEkGSJEmSJEnHLhFJkiRJOt5Eo0jS90IkgiRJkiQdTwIkSZIkSZIkSZIkSXEhQJIkSZIkSZIkSZIUFxKRJEmSpONNJIIkSZIkSZKOXSKSJEmSdLyJRqkt/8heppZ8wsdlW4kSRZK+DREiDKrfnmvTBpCR3JT/IhJBkiRJko4niUiSJEnScS7/yF6u3/kSUaJI0rcpSpQFZVv4uGwrU1pfRkZyUyRJkiTpeBYgSZIkSce5qSWfECWKJH1XokSZWvIJkiRJknS8C5AkSZKk49zHZVuRpO/ax2VbkSRJkqTjXYAkSZIkHeeiRJGk71qUKJIkSZJ0vAuQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXAiQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXAiQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXAiQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXAiQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXAiQJEmSJEmSJEmSJMWFAEmSJEmSJEmSJElSXEhEkiRJkr4pkQiSJEmSJEn69gRIkiRJkvS/XM3hCg4u2ES0ugZJkiRJkr7PAiRJkiTp29aoEZSUwAMPIP13Di7awmdnTqSmvJJv0v73N7Dj4dl8+VkhkiRJkiR9nyUiSZIkSd+2adMgNRXpeNFoeBcSUutSNysdSZIkSZK+zxKRJEmSpG/T+PFEe/QggnT8COrVoWFuJyRJkiRJ+r5LRJIkSZK+LT16wIMPErnwQpg3D+lfIXqkiqLpCylbsZ3KLw5Rr2tL0s7tzgl92xFTc7iC3X+YT9nKHUSraqjaV0biifVJbFSXlneeTjQapfCxObR75IckNEzh4MLNlL69lmbXDmLPlA/5cv1uklo05MSLetHotEwkSZIkSTpeBUiSJEnSt2XaNJg2DebPR/pXiB6pYvsDf+XQkq00vXog7X79A5I7NGHHA3/j4MLNxOx4+E0qdpbQ6p4zafNv55DQqC5VxWW0vOdM6rRtTE15JeWbvyBaXUOo+mA5Zat3UvDI26SO7Erbf7+QuhnNKXj075St3IEkSZIkScerRCRJkiTp2/DAA0QbNSLy4INI/yoHF23h8JpddP7TdSSm1SOU0rEpNV9WUPTcRzQYeBI1hysoW7mDtr+4gHrdWxFq88C5bL3zVRIbphAkJ/JVag5X0GzMYE7o245Q3YzmHFiwiUNLt1G/ZxskSZIkSToeBUiSJEnSN61HD3jwQSLXXgv79yP9qxxeU0BKp6YkptXjaCf0bc+RHSVUlR4mqJtEQoNkjmwrJubItn1EkhNJaFSXfygSoV52K/5/kQj1e7SmYkcJkiRJkiQdrxKRJEmSpG9Y9LXXYMsWIsOGwbBhxESHDiXywAPw0ENIX0fNkSoiSQnUFklKIBStqoFIhCaX9WPP5A8pW76dSGICh1Zsp/m1g4gkJfCPROokECQncrRIUgI15ZVIkiRJknS8SkSSJEmSvmlbtxKKDh1KTIT/T/v2RIEI0tdTr1tLDszbQM2XlQR1k4gpW7mDOumNSGpyAlWlhyl99zPqZqbTYOBJhJpdM5DkDk2QJEmSJCneJCJJkiRJ37DIiBH8F9EokenT4aGHkP5fqg8dIVpZzdGCenVoMKgjxa8sZccDf6XFbSNIalKfA/M3UvzKUlrcOpzQoUVbOLK1mHpdW1K55yCJTU+gprySaGU1kaQEJEmSJEmKJ4lIkiRJknSc23jFc9TW7pEfUL9nG9o98kMKfvsum2/OI1pVTZ0WjWgxdhhpZ3Uj1HBIBkXTFnJ47S5SOjbl4Meb2TPlQ5KaNaTdry8iqWkDJEmSJEmKF4lIkiRJ0nfhwQdh3jyk/06DnA5kvTOe/07iifVp9+uLiB6povpgOYlNTuBo+15bQcIJyWTkjYEgQqjmcAUbr57K/r+vo8mo/tTv3pqsd8YTk3pGFqlnZFFbqwlnIkmSJEnS8SwRSZIkSfouPPQQ0r9SJDmRxOQTqK2moor/FIkQE6QkEdStQyQpAUmSJEmS4kkikiRJkiTFsUYjTqZk9hq23vkKJww4CSJw8ONNRBICGo04GUmSJEmS4kkikiRJkvRNiUY5ZpEI0r9SctvGdJwymtK3P+XI9n1EggiNRpxMo2FdSGiYgiRJkiRJ8SQRSZIkSZLiXGJaPZpc3h9JkiRJkuJdgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiQd5yJEkKTvWoQIkiRJknS8C5AkSZKk49yg+u2RpO/aoPrtkSRJkqTjXYAkSZIkHeeuTRtAhAiS9F2JEOHatAFIkiRJ0vEuQJIkSZKOcxnJTZnS+jJy63cgQgRJ+rZEiJBbvwNTWl9GRnJTJEmSJOl4l4gkSZIkfQ9kJDflVy3OQ5IkSZIkSf9YgCRJkiRJkiRJkiQpLgRIkiRJkiRJkiRJkuJCgCRJkiRJkiRJkiQpLiQiSZIkScebSARJkiRJkiQdu0QkSZIk6XgSjSJJkiRJkqSvJ0CSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcCJEmSJEmSJEmSJElxIUCSJEmSJEmSJEmSFBcSkSRJ+obt27cPSZIkSZIkSdI3L0CSJEmSJEmSJEmSFBcSkSRJ+oZl9O+HJEmSJAnyFy9BkiTpmxQgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLAZIkSZIkSZIkSZKkuBAgSZIkSZIkSZIkSYoLiUiSJP0vMKBfP4YMHERo0uRnKC8vR9A1M5N/v/9nVFRWcMk11yBJ8axRw4bceM21HG1HwU6WrlzJxk2bEHTNzOTf7/8ZFZUVXHLNNXwdvbp35/yRZ9G9a1eSkhJZsGgxj0x8nOPZReecw7VXXEFo246dvDhrFguXLKa2l5+fSt2UZCoqKlmwaBFTZkznUFkZkiRJknQ8SUSSJOl/gXHX38AZI0YQWvnpGt6dO5fvk66ZmaQ2bMjiZcuorKriX6VRg4bk5uRQUVmJJMW7Rg0bMmHcOL7K4uXLufzHY9h/4AD/mzVq0JDcnBwqKiv5OpqceCJ/e3EmKSkpxBTvK+F41zK9JYP65xAa1D+Hi845h4x+/Tj85WGONrBfX+rVrUdo2ODBJCUl8ZtJE5EkSZKk40kikiRJca5OUhLDTjmFmDOHj+DduXP5Pnl+0hN07NCBjL592FdaiiTpf+bp557lUNlhBvTtyykDB9K/d2/uuW0c9//yF+jr69KpEykpKVRVVzP27rvYU1RE8b59HO9ef3M2K9esJikpiVnTppOSkkL7tm34bMMGjnbpddeREASMGT2a80eeRVaXLkiSJEnS8SYRSZKkODckN5c6SUnEnHnqCO76Gf9FEAQMHzyYzC5d2LhpM3Pmz6O6upra6terxxkjRpDerDlLV65g8fLlfJV+vXrRr3cftmzbypx586isqiKmS6dONDnxRNbn55OSksIZI0ZQtHcvH3z8MQcPHSKUkpJCnx49OKH+CXRo145Q/z59OXjoIKFVn37KobIyYhISEhgxZAgZHTuxdMVyFi1bRm1BENC7ew/69erFijWr+bo6duhAi2bNKPriCzZu2kSoTp069OvVi9CSFSuoqKggFAQBpwwcSLfMLHYX7WHeRx9RvG8ftSUkJDBiyBAyOnZi6YrlLFq2jKN1OukkmjdtSnn5EZavXkUQBOT06UvfXj1JSU5m4jPPUDclha4nn0xJaSmfb97M4AEDOTkjg8XLlrF05Qpqa9igAacOHUqr9HS27djB3A8+oOzwYUJ9evQkJSWZ1WvXcsFZZ7Ng8SK2bNvGgL596dK5M3/+6185VFZGTEJCAiOGDCGjYyeWrljOomXL+CpdMzPJ7d+f8iNHWLBoEZu2bOHratigAacOHUqr9HS27djB3A8+oOzwYWL69OhJSkoyu4uK2LRlC/Xq1mPIoEF0yzyZvcXFTJ85k5iEhARGDBlCRsdOLF2xnEXLlvFVMjp24vFf/YoT6tfnjvvuY9mqlUjfR08++yxFe/cSmjBuHBPGjWf4KadwtIYNGnDq0KG0Sk9n244dzP3gA8oOH6a2rpmZ5PbvT/mRIyxYtIhNW7ZQW7269Rh+ymA6dujA+o0bmffRR1RUVBA6uXNnTmzcmJ27drFtxw569+hB3ZQUtmzbxq7du8np04fExETWrl9P6f79hDp37MipQ4awZ+9e/v7++xwqKyOmaZMmZHTsSDQKS1euoKKigqwuXcjNySEtNZXX3nyTjZs2EQqCgN7de9CvVy9WrFnN13ViWhonZ2TQv3cfQmVlZewpKuIf6dyxI6cOGcKevXv5+/vvc6isjJimTZqQ0bEj0SgsXbmCiooKsrp0ITcnh7TUVF578002btrEsYhEIpw6dCiZGRnsKdrLgkWfUFBYSExBYSEFhYUkJSYSk5SURG2fLFlCaNjgwYTqJCXxdfXu0YO6KSls3LyZor17CTVt0oSMjh0pLz/CslUrialXtx7DTxlMxw4dWL9xI/M++oiKigpqS0hIYMSQIWR07MTSFctZtGwZR+vToycpKcnsLipi05Yt1KtbjyGDBtEt82T2FhczfeZMYlq2aMGQQYNonNaY5atX8cmSJXyVjI6dePxXv+KE+vW54777WLZqJZIkSZK+W4lIkiTFuTOHjyA0Z/58Th0yhBbNmtM1M5O169YR06ZVK/70zGS6nnwyMZ9t2MDlPx5DQWEhMUNzc5kycRKNU1OJeW32bMbefReVVVWEGjZowPNPPMmwwYOJ2bJtGxdfczXbduwgdPdt47jonHP4ZMkScvr2JRKJEDpw8CDnjbqctevWkd68OW/kvcjR/vTMM8Sc/oOLWLF6NaEunTqRN3kK7du2JWbOvHlcc+stlJeXE6pTpw6vPD+VwQMGEFO4Zw+haE0Nx+Lma6/jmlGjmPnnP3PbvRMInZiWxht5LxLqPjiXXbt30+TEE3kj70W6dOpEzJEjR7j13gm8Nns2MV06dSJv8hTat21LzJx587jm1lsoLy8ndOv113PlJZcS+nzzZvI3beLs008nZvL06XTv2pW/zHiBbTt3UCepDunNmxPzyMTH+e0TTxDTMzubvGcm07xZM2IKCgu5aPSVbN66lT/+/vd0aNeO3UV7aNGsOTU1Nbz57rucN3IkodGX/ojTf3AR0WiULp06kTd5Cu3btiVmzrx5XHPrLZSXlxNKSEhg8uOPc8FZZ3O0ydOnc9/PH+ZY9czOJu+ZyTRv1oyYgsJCLhp9JZu3biX0zGOP0b5tW0Kv/8eb9O7eg7atWxNau24d02fOJNSlUyfyJk+hfdu2xMyZN49rbr2F8vJyjnbtFVfQv3dvQmN/PIYxt92G9H23dfsOQg0bNCCmZ3Y2ec9MpnmzZsQUFBZy0egr2bx1K6GEhAQmP/44F5x1NkebPH069/38YWL69+5N3uQppKWmElO4Zw8Xjb6Szzdv5tILL2LcjTfyyuuvceuECfw170VSUlKYMmMGD//2N7z58iuE+gwbRllZGY/+/BdcccklxJSUlnLzXXcyZ/58QsMHn8LTjz5K6MDBg7w2ezZXX345MWvXr2fjpk3UqVOHV56fyuABA4gp3LOHULSmhmMxoF8/pj/9B2IaNWzIG3kvEpr9zjtcc8tYQkmJiTz6819wxSWXEFNSWsrNd93JnPnzCQ0ffApPP/oooQMHD/La7NlcffnlxKxdv56Nmzbxz0pt1IiXnnuOvj17EVNeXs71t4/nrTlz+K489Zvf0rljR26dcA8v/eUvhIbm5vLH3/2eLdu20e/UEYT69+5N3uQppKWmElO4Zw8Xjb6SzzdvJqZLp07kTZ5C+7ZtiZkzbx7X3HoL5eXlhJ557DHat21L6PX/eJPe3XvQtnVrQmvXrWP6zJmEbr72Oh74P/+HxIQEYj5ZupRLr72Ww18e5mjXXnEF/Xv3JjT2x2MYc9ttSJIkSfpuBUiSJMW5kaedRui12X9j6cqVhM469VRiGjVsyOt5eXQ9+WSOHDnCqk8/paKykqwuXXj+ySeJ6dW9Oy899zyNU1MpKS3lsw0biEajXHTuufzkjjsJJSQk8PLzUxk2eDAHDh7khZdfIn/T53Ro147X/5RHwwYN+E/RKKEB/fpRXVPD+o0bCTVs0IA//fEZ6iQlUV5ezoJFi1i2aiUxi5YtY8GiRSxYtIhDZWWEWqWn8+bLr9C+bVu2bNvG1Lw8vigu5rRhw3hu0iRixl43hsEDBhDaXbSH4pIS0ps35+uIRCLUFolEiIlEIoRuuPpqunTqRPG+fUyZMYNFy5aRnJzMow//nCAICLVKT+fNl1+hfdu2bNm2jal5eXxRXMxpw4bx3KRJxGzasoWPFy+ipqaGTiedxNmnn84/0q51G9KbN2fz1q1UVVcTuuvW22jZogWh+vXq8fJzz9O8WTMWLlnM9JkzKS8vp1V6Or/86f0crWjvF3y67jOCIODMESN46S9/IdQzO5t2bdrQKj2dN19+hfZt27Jl2zam5uXxRXExpw0bxnOTJhEzeMAALjjrbKqrq3lx1iz++vZbRKNRbrj6arplZnEs6terx8vPPU/zZs1YuGQx02fOpLy8nFbp6fzyp/cTs3zVKlavXUvowrPPoW3r1tTWKj2dN19+hfZt27Jl2zam5uXxRXExpw0bxnOTJlHb7Hfe5siRI1RVV/Pa7NlI31f9e/cmNyeHYYMHM2b0lYTWrF1LqH69erz83PM0b9aMhUsWM33mTMrLy2mVns4vf3o/MYMHDOCCs86murqaF2fN4q9vv0U0GuWGq6+mW2YWMf824V7SUlNZv3Ejz0ybxtbt20lv3px/u2cCoaUrVxDKzOhCZpcupKSkEOrVPZvMjAxCxSUlbNu5gyce+Q1XXHIJ0WiUDZ9/zr7SUtJSU8mbPIUB/foR2vvFFyxYtIiS0lIaNmjA1ZdfzlcZe90YBg8YQGh30R6KS0pIb96cr6N43z4+XryIdfn5hCqrqvh48SI+XryIdfn5xDzxyG+44pJLiEajbPj8c/aVlpKWmkre5CkM6NeP0N4vvmDBokWUlJbSsEEDrr78cv4nnvrtb+nbsxefb97M5OnT2VNUREpKCk/99lHqJCXxXYlEItQWIUIoCAJi/m3CvaSlprJ+40aemTaNrdu3k968Of92zwRiWqWn8+bLr9C+bVu2bNvG1Lw8vigu5rRhw3hu0iRilq9axeq1awldePY5tG3dmtrq1KnDQz/5CYkJCcxfsICpeXnsP3CAAX37MvpHl1Lb7Hfe5siRI1RVV/Pa7NlIkiRJ+u4lIkmSFMe6nnwy6c2bE5ozfz7t2rShX69enDF8BI8++SShUT+8mHat27D3iy8YfNZIiktKaNu6NYvfm0ufHj3pmZ3NyjVruOuWW0hKTGTuhx9w+Y9/THV1NZdccCF/+N3vuOqyy/jVY79nyKBB9OvVi8qqKu66/6cUffEFf/7b33jqt4/SplUrLr3wIp59YQZEIoQK9+xh2HnnUrxvH4MHDOD1P+XRplUrThk4kPc++IALrhjFSe3bs3jOe4SuuulGiktKONqYK0eT2qgRBYWF3PWz+6murubDhQuZMnEiZ444lcyMDNbl5zNm9GhCTz//HA/++tckBAG/+8UvGXXxxXxTTkxrTGhdfj5/nPo8Bbt2cecttxJqcMIJ7D9wgDFXjia1USMKCgu562f3U11dzYcLFzJl4kTOHHEqmRkZrMvP54nJk3li8mQWvvMunTt2ZNOWLdx8910sX7WKrzL+J/+HvFdfpV3rNnz01lvUrVuXntnZ7Nq9m+ysLNZv3EhZWRmjbrie0MdLFvPM7x+jZ3Y2R/v1xMdp07IVjzz4IKs/W8utE+7h3DPP5IT69TkxrTHnnHEGqY0aUVBYyF0/u5/q6mo+XLiQKRMncuaIU8nMyGBdfj6N09IIlR44wPN5f2LNZ59x+Q9+SMv0dI5VdlYW6zdupKysjFE3XE/o4yWLeeb3j9EzO5uYG+64nWZNm/LZwk8IvTP3Pe598EF27tpFzJgrR5PaqBEFhYXc9bP7qa6u5sOFC5kycSJnjjiVzIwM1uXnE7Ng0SKyBg4gOTmZor17kb6vpj31NEcrO3yYh37zCKHsrCzWb9xIWVkZo264ntDHSxbzzO8fo2d2NjGN09IIlR44wPN5f2LNZ59x+Q9+SMv0dI7WpHFjQnM/mM9jf/gDU2ZM59ILL+LAwQOEFi1dSqhL58706dGDmB7dsul6ciahpSuWc3Lnzlx8wQWELv/xGObMn08QBDw36QnOGzmS++64g/NHjeL9jz7k/Y8+5NGHf841o0ZRVV3NmNtu5Z333qOqupqYMaNHE3r6+ed48Ne/JiEI+N0vfsmoiy/mWH2ydCnnjxrFWaedxgt/fIYDBw5w/qhRHO3kzp25+IILCF3+4zHMmT+fIAh4btITnDdyJPfdcQfnjxrF+x99yPsffcijD/+ca0aNoqq6mjG33co7771HVXU1x+KE+vU5of4JLFi0iHH33su2nTuY9MwzfPrxxzRs0ID2bduRv+lzjmdNGjcmNPeD+Tz2hz8wZcZ0Lr3wIg4cPEDMmCtHk9qoEQWFhdz1s/uprq7mw4ULmTJxImeOOJXMjAzW5edzwx2306xpUz5b+Amhd+a+x70PPsjOXbuISW3UiCAICP3plZd56733+Ns7bzOgbz92FBRQ24JFi8gaOIDk5GSK9u5FkiRJ0ncvEUmSpDh2+rDhhAoKCzm5c2f2HzhAqHePHjQ58US+KC6me7euhGa/8w7FJSWEtu/cSYsuGRyte9duhF58dRbV1dWEXn3jdV5943VisrO6EkpKTGTKxEnU1jXzZI7217feonjfPkIfffIJO3ftonXLlrRp3Zp/VnbXLEKt0tP5y4wXqK1bZha7i4pIb96c0MxZs6ipqaGmpoZX33idURdfTCQI+CbMePklLr3wQgYPGMCy9+exp6iI/E2bePWN19l/4ACh7K5ZhFqlp/OXGS9QW7fMLNbl51Pb9JkzWb5qFV+lurqamX/+M6FtO3fw+ZYtZGdlkd68BaFPli7l148/zvgbb2Tj0mWkpaYS07RJE0KRSIRQTU0NNdEaQtXVNYRqamoIRSIRsrtmEWqVns5fZrxAbd0ys1iXn8/cDz5g05YtdOzQgTmvvU7Z4cOsXvspK1avZsPGfI7FJ0uX8uvHH2f8jTeyceky0lJTiWnapAn/yCMTJ7Jz1y6Olt01i1Cr9HT+MuMFauuWmcW6/HyOtv/AAaR4UVBYyIrVq5n4zB/Z8PnnhD5ZupRfP/4442+8kY1Ll5GWmkpM0yZNiJn7wQds2rKFjh06MOe11yk7fJjVaz9lxerVbNiYT8wfpj7P737+C8aO+TFjx/yYdfn5FBQW8tjTTxEqLilhR0EBbVq14ofnnU9MUmIiPzzvPEJLV6wkO6sroa3btzNn/nxCNTU1TH0xj/NGjqRHt2y+ypx57/Pmu+9ytLTUVNKbNyc0c9YsampqqKmp4dU3XmfUxRcTCQL+1bKzuhLaun07c+bPJ1RTU8PUF/M4b+RIenTL5qvMmfc+b777Ll/HobIyxt17L/eMG8freXm0btmSSCRCTJMTTyR/0+ccz/4w9Xl+9/NfMHbMjxk75sesy8+noLCQx55+ipjsrlmEWqWn85cZL1Bbt8ws1uXnU9sjEyeyc9cujla0dy9/ffstzh95FlMmTqKquppVn65h67btzHjpJb7K/gMHkCRJknT8SESSJCmOnTFiBKFW6em8kfciRztj+HBenDWLaDRKKEqU/040GuX/pSZaQ2j/gQN8um4dtW3dvp2jBUHA0aLRKKGamhr+WdXVNYS279zJjoICattXso9oNEpMJBIhJhqN8nXU1NQQSkgIiElJSSEmGo0SWvXpp5z9o0u5+9bbSG/enJ7Z2TRv1oxTBg5k1aefsnb9eqqrawht37mTHQUF1LavZB9HC4KAUMn+Uv6R8iNHqKmpIaa6uppQEEQItWvThlnTppGcnMzuoj0sWLSIxmlpZGZkcKyqq2sIbd+5kx0FBdS2r2Qfof0HDjDykov52d330LnjSfTsls3Afv0Z2K8/u3bv5o9Tp/LPatemDbOmTSM5OZndRXtYsGgRjdPSyMzIoLZIJEJM6f791FZdXUNo+86d7CgooLZ9JfuQ4kWECDFZAwdQtHcvX6VdmzbMmjaN5ORkdhftYcGiRTROSyMzI4Oj7T9wgJGXXMzP7r6Hzh1Pome3bAb268/Afv3ZtXs3f5w6ldD0mTMpKSll9GU/omWLdDIzMsjMyKBXdjbZuYOoqKxk2aqVtGnVitycHEJTZszg+quuYvCAAYSWrVpJi2bNCdWpU4ejRSIRQkEkwtGCICBUuv8AtUWjUWIikQgx0WiUb0okEiFUp04djhaJRAgFkQhHC4KAUOn+A3xdSYmJvDJ1Kh07dODgoUMsWraM0IC+ffmu1URrCCUkJBCTkpJCqKamhpjpM2dSUlLK6Mt+RMsW6WRmZJCZkUGv7GyycwdRUVlJdXUNoe07d7KjoIDa9pXsIyYSiRBTun8/X+X68eNZe9M6hgzKpUunTvTp0ZM+PXpSt25drrr5JiRJkiQd3xKRJEmKU41TU+nbsyehF155mcLdewidffppdMvM4ozhI3hx1izWrt9A6LwzR/LI449TXFJCu9ZtWPTeeyQmJHDJNdfw/kcf8tn69bRKT+eKSy/hzXffobKqiksuuJA//O53VFRWktG3D5+tX08oEolw9dibKd2/n9DTjz5Kq/SWrPr0U452zhln8ItHf0vZ4cP06dGTNq1aEcr//HNiKisriYkEAbWt27CB04YOZXdRERdcMYpQWmoq0556mtDKNWvYf+AAJaWlpKWmcuE55/DZhg2Efnj++YSiNTUci73FxYS6dOpMzDlnnEFtU598isZpaTz65BN8uHAhrVu25L03/sqJaWn0yu7O2vXrWbdhA6cNHcruoiIuuGIUobTUVKY99TShlWvW8K/2g3PPIzk5mfUbNzL4rJGEfnLHnWRmZHCs1m3YwGlDh7K7qIgLrhhFKC01lWlPPU1o5Zo1hO665RaGDMrlnffe4877f0r9evX40zOTOWXgQLp37cqx+MG555GcnMz6jRsZfNZIQj+5404yMzI4Vus2bOC0oUPZXVTEBVeMIpSWmsq0p54mtHLNGo6W0bETt998E8nJyTz17LMsX7UKKd784NzzSE5OZv3GjQw+ayShn9xxJ5kZGRztrltuYcigXN557z3uvP+n1K9Xjz89M5lTBg6ke9euhFqlp/P0o78jdM0tYykpLeW0YcN46dnnOLFxY1qmp7N1+3aWrVjJhWefQ2j7zp3Mmfc+1191FTErVq+mVXo6oZYtWjA0N5f5CxYQBAHXjrqC0Io1q/ln7T9wgJLSUtJSU7nwnHP4bMMGQj88/3xC0Zoa/tVWr/2UUMsWLRiam8v8BQsIgoBrR11BaMWa1fyr9erenY4dOhDqM2wo+0pLGZqby5+nz+C79kVxMRkdO9GlUydCQRBw9mmncbRW6ek8/ejvCF1zy1hKSks5bdgwXnr2OU5s3JiW6els3b6ddRs2cNrQoewuKuKCK0YRSktNZdpTTxNauWYN/6wzR5zK2DFjKCjcxQVXjCIIAu6/627G3XgjPbp1o7aMjp24/eabSE5O5qlnn2X5qlVIkiRJ+m4lIkmSFKdOHz6cIAioqKzk3gceoKKyktCevUX87ue/4NQhQ6iTlMSLs17l9ptuommTJiz8+xzWbdhAt8xMEhMS2LlrFx8s/JjQE1OmcPrw4QwffAoL3/07u/fsoV/v3oRemz2bQ2VlvP/RR6xdt46umZnMmjadd9+fS1aXkzn3zDPZtnMHnyxdyn+KRgm1bNGCD978D3bu2kV2Vhah3UV7WLJiBTG7du/myJEjJCcn8+ZLL7O7qIjQuHvvZdvOHTz7wgyuv+oq+vfuzfNPPsn6/HzOPv10umVm8drs2RSXlBD629tvc9Vll3Hn2FvIzRlAUmIivXv04OtYsnw5oR7duvH3v7zGkSNHGNCvH7VVVlaSm5NDh3bteHHWLE5MS6NxaiqhTVu3Enr2hRlcf9VV9O/dm+effJL1+fmcffrpdMvM4rXZsykuKSH0m4ceokunzrRs0YLQuBtu5LIf/JAdBQXcOuEejkXJ/lJCnU86iYfvu4/Kikpuvu46vo5nX5jB9VddRf/evXn+ySdZn5/P2aefTrfMLF6bPZvikhJCe4uLyc3JoV+vXrRMT+fwl4fJzsoitHX7do5Fyf5SQp1POomH77uPyopKbr7uOo6WlJjIrOkzSEpKImby449z5EgFb835O3+cOpXQsy/M4PqrrqJ/7948/+STrM/P5+zTT6dbZhavzZ5NcUkJRxsz+kouvfAiQpFIhOtuvRUp3pTsLyXU+aSTePi++6isqOTm666jtr3FxeTm5NCvVy9apqdz+MvDZGdlEdq6fTuhgsJCTmrfnvTmzXlxyrO8/+EH9MruTujgoUMU79tHaNmqlcSs/HQNS1asIGbD559z8NAh1m/cyLtz53LGiBHMfPY5lixfTssWLejQrh2hSZMnExr9o8u4+Pzz6dihPaERp5zCG3kvErp67M2U7t9PNBrlb2+/zVWXXcadY28hN2cASYmJ9O7Rg2/K+o0beXfuXM4YMYKZzz7HkuXLadmiBR3atSM0afJkQqN/dBkXn38+HTu0JzTilFN4I+9FQlePvZnS/fv5Z5XuP0DMIw89zMZNn3PlpT+itnvH305uTn8ikQgxv//FLyk7XEbh7j3ceOcdtGvdhid+8wihtq3bEOrbuzd/ffFFQr9/+mnmffQR/6zFy5czqH8ON1xzLT2zs0ltlEpWly4craCwkJPatye9eXNenPIs73/4Ab2yuxM6eOgQxfv2EXr2hRlcf9VV9O/dm+effJL1+fmcffrpdMvM4rXZsykuKSEpMZFZ02eQlJREzOTHH+fIkQremvN3/jh1KqFNW7eQm5NDKCFIYNPWLZx56qmEtm7fTm1jRl/JpRdeRCgSiXDdrbciSZIk6bsVIEmSFKdOHz6c0NwP5lNRWUnM399/n1DdunUZlJNDSWkpN95xB19++SWNU1PJzcmhUcOGFJeUcM0tY6murib08eJF/Oqx3xNq37YtA/r1IyEhgU/XfcZPf/FzQtXV1dxwx+0U7d1Lz+xsJowbz7lnnklBYSFX3nAD5eXl1NauTRtyc3Jo2KABh8rKuG3CvVRXVxNTXV3NI5MmEurYoQO5OTnk5uRQv349QgWFhYy9+24qq6o4f+RZTBg3nm6ZWSxcspjb7/sJMb+ZNInPN28mlNOnD7179GDJihV8He9/9CFvvzeHUK/u3RnQrx+r166l7PBhjvZvv/oVm7dupWWLFtx9661ce8UVVFZVcdfP7mfhksWECgoLGXv33VRWVXH+yLOYMG483TKzWLhkMbff9xNiunftSm5ODnXr1iXUuWNHcnNy6N2jO8cq75VXeGfueyQkJDD2ujGMv+km1qz7jGg0yrEqKCxk7N13U1lVxfkjz2LCuPF0y8xi4ZLF3H7fT4jJe/VV3pozhzp16nDTtddy59hbSG3UiBdefonHnn6aY5H3yiu8M/c9EhISGHvdGMbfdBNr1n1GNBolJhIE5Obk0L93b2L69uxFbk4OHdt3IKagsJCxd99NZVUV5488iwnjxtMtM4uFSxZz+30/obY1az8jZvWna5G+T6JE+WfkvfIK78x9j4SEBMZeN4bxN93EmnWfEY1GOVreq6/y1pw51KlTh5uuvZY7x95CaqNGvPDySzz29NPE3HLP3Rw8dIh+vXoxYdx4Th8+nMI9e7hszHUcPHSI0IrVq6msqiK0fNUqDhw8yI6CAkJLV6wg5vaf3sf6jRupk5REbk4OHdq1I/Tok08yZ948Qu3btCE3J4cWzZoTata0Kbk5OeTm5JCYmEjMbyZN4vPNmwnl9OlD7x49WLJiBd+k2396H+s3bqROUhK5OTl0aNeO0KNPPsmcefMItW/ThtycHFo0a06oWdOm5ObkkJuTQ2JiIscif9PnPPjIrwlddM45TBg3nqTERLbt2MHRTu7cmUH9cxjYrz8xPbp1Y1D/HPr26kWoXr26DOqfw6D+ObRu2ZJQ49RUBvXPYVD/HJo1acqx+OPUqWzbuYPEhAQG9c8hq0sXFi5ZTG233HM3Bw8dol+vXkwYN57Thw+ncM8eLhtzHQcPHSJUUFjI2LvvprKqivNHnsWEcePplpnFwiWLuf2+nxCKBAG5OTn0792bmL49e5Gbk0PH9h2I+XzzZh7+7W+oqq7mh+efz4Rx4+nSqRNLVqzg+tvHU9uatZ8Rs/rTtUiSJEn67kX2VR2OIkmS9A2J7v+SjP79+C706dGTlJRkdhQUsH3nTo6W06cPiYmJbN2+nYLCQkJtWrXikgsupKamhs/yNzDvo4+oqKigtn69ejH8lCEcOnSIFWvWsHDJYmpLbdSIUT+8mHr16rJ52zbenTuXQ2VlxEyZOImLzjmHP0x9nukzZ3LGsOEk1Uki79VX+aK4mK+S1aULaampxKxYvYbDXx4m5qT27fnBuedSVVXN6rVref+jD4lGoxwtKTGRUZdcQpPGjflk6VIWLlnCwH79qKmJsnDJYo5FJBLh1CFDODkjg2UrV7F4+TJ6dssmJSWZJStWUFFRQej/socncDYXDB/3/zm/cxgzgzNmjLGMGfuSXSFEV6mQVLYoW9mXLNnF2EdMspSLXDUqQ4NQWYpKdmGE7AzDNGQWs2/MnOV5nf//dV7PPG5100XXfU3f99swDFo0bUr9R+rwW3w8uw/sJy09nTtVqVSJzi+8gM1m5+SZM+zavw+n04lb/Tp1KFG8OHfKyc3l+MmTuPhYrdSpVQu7w8GhqCjc6tepQ4nixYm5epUbCQm4NaxXjxZNmnLq3FkOHjlCk0aNMJvNHDh8mEcbNKRYMQ/OXriAR1EPqlauREZmJqfOnuXxxx7DbDZz8swZMrOycKlSqRKdX3gBm83OyTNn2LV/H06nkzs9UrMmTRo3xmQysWvvPmKvxfFnNaxXjxZNmnLq3FkOHjlCk0aNMJvNHDh8GMMwaN6kCXdzIyGBmKtXKahKpUp0fuEFbDY7J8+cYdf+fTidTu7msYaNsFjMHDl2DIfDgch/Cw8PDx5r2BCXqGPHyMvP5480rFePFk2acurcWQ4eOUKTRo0wm80cOHyYgh6pWZMmjRtjMpnYtXcfsdfiuJOXpxdPtmxB1cqVOXPuPAcOHyIvP5+CHmvYCA+PopyPjiY5JYU6tWvjU7IksXFxXPvtN9yKFi1Kz27d8PcrjcuPe/dy9MRx3IIrViSwfHnu5sjPP5Nvs+FWxGLhtW7dKO3ry6GjR/kpKormTZrgcDj5KeoI96v9M88Q8eEKklNSqNm0CXdTtGhRenbrhr9faVx+3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC","url":"https://www.saucedemo.com/"}');let sQ=e=>{let{uiContextPreview:t,setUiContextPreview:r,showContextPreview:n}=e;return n?(0,o.jsxs)("div",{className:"form-part context-panel",children:[(0,o.jsx)("h3",{children:"UI Context"}),t?(0,o.jsx)(sO,{uiContext:t,hideController:!0}):(0,o.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,o.jsx)("span",{style:{color:"#00AD4B"},children:(0,o.jsx)(sP.A,{})});case"finishedWithWarning":return(0,o.jsx)("span",{style:{color:"#f7bb05"},children:(0,o.jsx)(sR.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,o.jsx)("span",{style:{color:"#FF0A0A"},children:(0,o.jsx)(sT.A,{})});case"pending":return(0,o.jsx)(sN.A,{});case"cancelled":case"skipped":return(0,o.jsx)("span",{style:{color:"#8c8c8c"},children:(0,o.jsx)(sM.A,{})});case"running":return(0,o.jsx)(sD.A,{});default:return(0,o.jsx)(sB.A,{})}})("failed")," No UI context",(0,o.jsx)(g.Ay,{type:"link",onClick:e=>{e.preventDefault(),r(sU)},children:"Load Demo"}),(0,o.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null};var sZ=r(4291);let sJ=e=>{let{className:t=""}=e,{config:r}=X();return Object.keys(r||{}).length>=1?null:(0,o.jsxs)("div",{className:`env-config-reminder ${t}`,children:[(0,o.jsx)(sZ.A,{className:"reminder-icon"}),(0,o.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,o.jsx)(q,{mode:"text",showTooltipWhenEmpty:!1})]})};var sX=r(7062),sH=r(6130),sG=r(2297),sV=r(5862),sq=r(7615),sW=r(2107),sY=r(4544),s_=r(3616),s$=r(1879),s0=r(9876),s1=r(1269);let s2=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,o.jsx)("path",{fill:"currentColor",d:"M1.333 13v-2.5a.667.667 0 0 1 1.334 0V13c0 .184.149.333.333.333h2.5a.667.667 0 0 1 0 1.334H3c-.92 0-1.667-.746-1.667-1.667m12 0v-2.5a.667.667 0 0 1 1.334 0V13c0 .92-.746 1.667-1.667 1.667h-2.5a.667.667 0 0 1 0-1.334H13a.333.333 0 0 0 .333-.333m-12-7.5V3c0-.92.747-1.667 1.667-1.667h2.5a.667.667 0 0 1 0 1.334H3A.333.333 0 0 0 2.667 3v2.5a.667.667 0 0 1-1.334 0m12 0V3A.333.333 0 0 0 13 2.667h-2.5a.667.667 0 0 1 0-1.334H13c.92 0 1.667.747 1.667 1.667v2.5a.667.667 0 0 1-1.334 0M5.667 10.333h4.666V5.667H5.667zm6 .167c0 .644-.523 1.167-1.167 1.167h-5A1.167 1.167 0 0 1 4.333 10.5v-5c0-.644.523-1.167 1.167-1.167h5c.644 0 1.167.523 1.167 1.167z"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},s3=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,o.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M11.333 13.667 14.667 8l-3.334-5.667H4.667L1.333 8l3.334 5.667z"}),(0,o.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M8 9.667a1.667 1.667 0 1 0 0-3.334 1.667 1.667 0 0 0 0 3.334Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function s5(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function s7(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function s4(e,t){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(t/2)}}function s8(e,t,r,n){if(!t.img)return;e.img&&t.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let i=t.imageWidth||r,o=t.imageHeight||n,a=e.imgW!==i||e.imgH!==o;if(e.img=t.img,e.imgW=i,e.imgH=o,a){let t=s4(i,o);e.camera=s7({},t),e.prevCamera=s7({},t),e.pointerMoved=!1}}function s6(e,t){return Math.abs(e.pointerLeft-t.pointerLeft)>1||Math.abs(e.pointerTop-t.pointerTop)>1}function s9(e,t,r,n,i){let o=Math.round(n/2),a=Math.round(i/2);return e||Math.abs(t.pointerLeft-o)>1||Math.abs(t.pointerTop-a)>1||Math.abs(r.pointerLeft-o)>1||Math.abs(r.pointerTop-a)>1}function Ae(e,t,r,n,i){let o=s4(r,n),a={img:"",imgW:r,imgH:n,camera:s7({},o),prevCamera:s7({},o),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:aq,pointerVisible:!1,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let o=0;o<e.length;o++){var s,A;let l=e[o],c=l.startFrame+l.durationInFrames;if(0===l.durationInFrames){l.startFrame<=t&&("pointer"===l.type&&l.pointerImg&&(a.pointerImg=l.pointerImg,a.pointerVisible=!0),a.title=l.title||a.title,a.subTitle=l.subTitle||a.subTitle,a.taskId=null!=(s=l.taskId)?s:a.taskId,a.scriptIndex=o);continue}if(t<l.startFrame)break;switch(a.title=l.title||a.title,a.subTitle=l.subTitle||a.subTitle,a.taskId=null!=(A=l.taskId)?A:a.taskId,a.scriptIndex=o,a.frameInScript=t-l.startFrame,a.rawProgress=Math.min(a.frameInScript/l.durationInFrames,1),l.type){case"img":!function(e,t,r,n,i){s8(e,t,n,i);let o=t.startFrame+t.durationInFrames;t.cameraTarget?(e.prevCamera=s7({},e.camera),e.camera=s7({},t.cameraTarget),e.pointerMoved=s6(e.prevCamera,e.camera)):r>=o&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(a,l,t,r,n);break;case"insight":!function(e,t,r,n,i){if(s8(e,t,n,i),e.insights.some(e=>e.highlightElement===t.highlightElement&&e.searchArea===t.searchArea)||e.insights.push({highlightElement:t.highlightElement,searchArea:t.searchArea,alpha:1}),t.cameraTarget&&void 0!==t.insightPhaseFrames){let n=t.startFrame+t.insightPhaseFrames;r>=n&&(e.prevCamera=s7({},e.camera),e.camera=s7({},t.cameraTarget),e.rawProgress=Math.min((r-n)/(t.cameraPhaseFrames||1),1),e.pointerMoved=s6(e.prevCamera,e.camera))}e.spinning=!1}(a,l,t,r,n);break;case"clear-insight":!function(e,t,r){let n=t.startFrame+t.durationInFrames,i=1-e.rawProgress;e.insights=e.insights.map(e=>{var t,r;return t=s7({},e),r=r={alpha:i},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t}),r>=n&&(e.insights=[]),e.spinning=!1}(a,l,t);break;case"spinning-pointer":a.spinning=!0,a.spinningElapsedMs=a.frameInScript/i*1e3;break;case"sleep":a.spinning=!1}t>=c&&("clear-insight"!==l.type&&(a.imageChanged=!1),a.pointerMoved=!1,a.rawProgress=1,l.cameraTarget&&(a.prevCamera=s7({},a.camera)))}if(!a.img){let t=e.find(e=>"img"===e.type&&e.img);t&&(a.img=t.img,a.imgW=t.imageWidth||r,a.imgH=t.imageHeight||n)}return{img:a.img,imageWidth:a.imgW,imageHeight:a.imgH,prevImg:a.imageChanged?a.prevImg:null,camera:a.camera,prevCamera:a.prevCamera,insights:a.insights,spinning:a.spinning,spinningElapsedMs:a.spinningElapsedMs,currentPointerImg:a.pointerImg,pointerVisible:a.pointerVisible,title:a.title,subTitle:a.subTitle,taskId:a.taskId,frameInScript:a.frameInScript,scriptIndex:a.scriptIndex,imageChanged:a.imageChanged,pointerMoved:a.pointerMoved,rawProgress:a.rawProgress}}function At(e,t,r,n){let i=Math.min(e/r,t/n),o=r*i,a=n*i;return{offsetX:(e-o)/2,offsetY:(t-a)/2,contentWidth:o,contentHeight:a}}function Ar(e,t){if(!Number.isFinite(e)||e<=0)throw Error(`${t} must be a positive finite number`)}function An(e){return{scale:e,width:44*e,height:56*e,hotspotX:6*e,hotspotY:4*e,centerOffsetX:44*e/2,centerOffsetY:56*e/2}}function Ai(e){return Ar(e,"imageWidth"),An(Math.max(1,Math.sqrt(e/1920)))}function Ao(e){let t=e.height;return{size:t,centerOffset:t/2}}let Aa=e=>{let{frameMap:t,autoZoom:r,frame:n,width:i,height:s,fps:A}=e,{scriptFrames:l,imageWidth:c,imageHeight:u}=t,d=(0,a.useMemo)(()=>Ae(l,n,c,u,A),[l,n,c,u,A]);if(!d.img)return null;let{img:p,imageWidth:h,imageHeight:f,prevImg:g,camera:m,prevCamera:y,insights:v,spinning:b,spinningElapsedMs:w,currentPointerImg:E,pointerVisible:k,title:x,subTitle:S,frameInScript:C,imageChanged:j,pointerMoved:I,rawProgress:O}=d,P=r?I?Math.min(O/.375,1):O:1,R=I?O<=.375?0:Math.min((O-.375)/.625,1):O,T=y.pointerLeft+(m.pointerLeft-y.pointerLeft)*P,N=y.pointerTop+(m.pointerTop-y.pointerTop)*P,M=r?y.left+(m.left-y.left)*R:0,D=r?y.top+(m.top-y.top)*R:0,B=r?y.width+(m.width-y.width)*R:h,{offsetX:z,offsetY:L,contentWidth:F,contentHeight:K}=At(i,s,h,f),U=h/B,Q=-(F/h*M),Z=-(K/f*D),J=`scale(${U}) translate(${Q}px, ${Z}px)`,X=f/h*B,H=(T-M)/B*F,G=(N-D)/X*K,V=s9(k,m,y,h,f),q=Ai(h),W=Ao(q),Y=q.scale,_=j?Math.min(C/10,1):1,$=b?(Math.sin(w/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,o.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,o.jsx)("div",{style:{position:"absolute",left:z,top:L,width:F,height:K,overflow:"hidden"},children:(0,o.jsxs)("div",{style:{width:F,height:K,position:"relative",overflow:"hidden"},children:[j&&g&&_<1&&(0,o.jsx)("div",{style:{position:"absolute",width:F,height:K,overflow:"hidden",opacity:1-_},children:(0,o.jsx)("img",{alt:"",src:g,style:{width:F,height:K,transformOrigin:"0 0",transform:J}})}),(0,o.jsxs)("div",{style:{position:"absolute",width:F,height:K,overflow:"hidden",opacity:j?_:1},children:[(0,o.jsx)("img",{alt:"",src:p,style:{width:F,height:K,transformOrigin:"0 0",transform:J}}),(0,o.jsx)("div",{style:{position:"absolute",top:0,left:0,width:F,height:K,transformOrigin:"0 0",transform:J,pointerEvents:"none"},children:0===v.length?null:v.map((e,t)=>{let r=[];if(e.highlightElement){let n=a_(e.highlightElement);r.push((0,o.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(253, 89, 7, 0.4)",border:`${2*Y}px solid #fd5907`,boxShadow:`${2*Y}px ${2*Y}px ${+Y}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${t}`))}if(e.searchArea){let n=e.searchArea;r.push((0,o.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(2, 131, 145, 0.4)",border:`${2*Y}px solid #028391`,boxShadow:`${2*Y}px ${2*Y}px ${+Y}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${t}`))}return r})})]}),b&&(0,o.jsx)("img",{alt:"",src:aW,style:{position:"absolute",left:H-W.centerOffset,top:G-W.centerOffset,width:W.size,height:W.size,transform:`rotate(${$}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),V&&!b&&(0,o.jsx)("img",{alt:"",src:E,style:{position:"absolute",left:H-q.hotspotX,top:G-q.hotspotY,width:q.width,height:q.height,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function As(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function AA(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){As(o,n,i,a,s,"next",e)}function s(e){As(o,n,i,a,s,"throw",e)}a(void 0)})}}let Al=!1;function Ac(e){return new Promise((t,r)=>{let n=new Image;n.crossOrigin="anonymous",n.onload=()=>t(n),n.onerror=r,n.src=e})}function Au(e,t,r){let n=r.contentWidth/r.imageWidth,i=r.contentHeight/r.imageHeight;return{left:r.offsetX+(e.left*n+t.tx)*t.zoom,top:r.offsetY+(e.top*i+t.ty)*t.zoom,width:e.width*n*t.zoom,height:e.height*i*t.zoom}}function Ad(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function Ap(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){Ad(o,n,i,a,s,"next",e)}function s(e){Ad(o,n,i,a,s,"throw",e)}a(void 0)})}}function Ah(e,t){let r=Math.floor(e/t),n=Math.floor(r/60);return`${String(n).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`}function Af(e){var t,r,n,i;let s,{message:A}=p.A.useApp(),{autoZoom:l,setAutoZoom:c,playbackSpeed:u,setPlaybackSpeed:d,subtitleEnabled:f,setSubtitleEnabled:m}=R();(0,a.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&c(e.autoZoom)},[null==e?void 0:e.autoZoom,c]);let y=null==e?void 0:e.replayScripts,v=(0,a.useMemo)(()=>y&&0!==y.length?function(e,t){let r=(null==t?void 0:t.imageWidth)||1920,n=(null==t?void 0:t.imageHeight)||1080;for(let t of e)if(("img"===t.type||"insight"===t.type)&&t.img){r=t.imageWidth||r,n=t.imageHeight||n;break}let i=[],o=0;for(let t of e){var a,s,A,l;let e=t.duration;switch(t.type){case"sleep":{let r=Math.ceil(e/1e3*30);i.push({type:"sleep",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"img":{let A=Math.max(Math.ceil(e/1e3*30),1),l=t.camera,c=t.imageWidth||r,u=t.imageHeight||n,d={type:"img",startFrame:o,durationInFrames:A,img:t.img,imageWidth:c,imageHeight:u,title:t.title,subTitle:t.subTitle,taskId:t.taskId};l&&(d.cameraTarget={left:l.left,top:l.top,width:l.width,pointerLeft:null!=(a=l.pointerLeft)?a:Math.round(c/2),pointerTop:null!=(s=l.pointerTop)?s:Math.round(u/2)}),i.push(d),o+=A;break}case"insight":{let a=Math.max(Math.ceil(e/1e3*30),1),s=Math.ceil((t.insightCameraDuration||0)/1e3*30),c=a+s,u=t.imageWidth||r,d=t.imageHeight||n,p=t.camera,h={type:"insight",startFrame:o,durationInFrames:c,img:t.img,imageWidth:u,imageHeight:d,insightPhaseFrames:a,cameraPhaseFrames:s,highlightElement:t.highlightElement,searchArea:t.searchArea,title:t.title,subTitle:t.subTitle,taskId:t.taskId};p&&(h.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(A=p.pointerLeft)?A:Math.round(u/2),pointerTop:null!=(l=p.pointerTop)?l:Math.round(d/2)}),i.push(h),o+=c;break}case"clear-insight":{let r=Math.max(Math.ceil(e/1e3*30),1);i.push({type:"clear-insight",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"spinning-pointer":{let r=Math.max(Math.ceil(e/1e3*30),1);i.push({type:"spinning-pointer",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"pointer":i.push({type:"pointer",startFrame:o,durationInFrames:0,pointerImg:t.img,title:t.title,subTitle:t.subTitle,taskId:t.taskId})}}let c=Math.max(o,1);return{scriptFrames:i,totalDurationInFrames:c,fps:30,stepsDurationInFrames:c,imageWidth:r,imageHeight:n}}(y,{imageWidth:null==e?void 0:e.imageWidth,imageHeight:null==e?void 0:e.imageHeight}):null,[null==e?void 0:e.imageHeight,null==e?void 0:e.imageWidth,y]),b=(0,a.useRef)(null),w=(0,a.useRef)(null),E=(0,a.useRef)(null),[k,x]=(0,a.useState)({width:0,height:0});(0,a.useEffect)(()=>{let e=w.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e){let{width:e,height:r}=t.contentRect;x(t=>t.width===e&&t.height===r?t:{width:e,height:r})}});return t.observe(e),()=>t.disconnect()},[]);let S=function(e){var t,r;let{durationInFrames:n,fps:i,autoPlay:o=!1,loop:s=!1}=e,[A,l]=(0,a.useState)(0),[c,u]=(0,a.useState)(o),d=(0,a.useRef)(c),p=(0,a.useRef)(A),h=(0,a.useRef)(null!=(t=e.playbackRate)?t:1),f=(0,a.useRef)(n),g=(0,a.useRef)(i),m=(0,a.useRef)(s);d.current=c,p.current=A,h.current=null!=(r=e.playbackRate)?r:1,f.current=n,g.current=i,m.current=s,(0,a.useEffect)(()=>{let e;if(!c)return;let t=null,r=0,n=i=>{if(null!==t){let e=(i-t)*h.current;r+=e;let n=1e3/g.current;for(;r>=n;){r-=n;let e=p.current+1;if(e>=f.current)if(m.current)p.current=0,l(0);else{p.current=f.current-1,l(f.current-1),u(!1);return}else p.current=e,l(e)}}t=i,e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[c]);let y=()=>{p.current>=f.current-1&&(p.current=0,l(0))},v=(0,a.useCallback)(()=>{y(),u(!0)},[]),b=(0,a.useCallback)(()=>u(!1),[]);return{currentFrame:A,playing:c,play:v,pause:b,toggle:(0,a.useCallback)(()=>{d.current?u(!1):(y(),u(!0))},[]),seekTo:(0,a.useCallback)(e=>{let t=Math.max(0,Math.min(e,f.current-1));p.current=t,l(t)},[])}}({durationInFrames:Math.max(null!=(t=null==v?void 0:v.totalDurationInFrames)?t:1,1),fps:null!=(r=null==v?void 0:v.fps)?r:30,autoPlay:null==(n=null==e?void 0:e.autoPlay)||n,loop:!1,playbackRate:u}),C=(0,a.useMemo)(()=>{if(!v)return 0;for(let e=v.scriptFrames.length-1;e>=0;e--){let t=v.scriptFrames[e];if(t.taskId)return t.startFrame+t.durationInFrames-1}return Math.max(0,v.totalDurationInFrames-1)},[v]),j=(0,a.useCallback)(()=>{var e;S.playing?S.pause():(e=S.currentFrame,C>0&&e>=C&&S.seekTo(0),S.play())},[C,S.currentFrame,S.pause,S.play,S.playing,S.seekTo]);(0,a.useEffect)(()=>{!v||S.playing||!(S.currentFrame<v.totalDurationInFrames-1)&&C>0&&S.seekTo(C)},[C,v,S.currentFrame,S.playing,S.seekTo]),(0,a.useEffect)(()=>{if(!v||!(null==e?void 0:e.onTaskChange))return;if(!S.playing){null!==E.current&&(E.current=null,e.onTaskChange(null));return}let t=function(e,t){let r=null;for(let o of e){var n,i;if(0===o.durationInFrames){o.startFrame<=t&&(r=null!=(n=o.taskId)?n:r);continue}if(t<o.startFrame)break;r=null!=(i=o.taskId)?i:r}return r}(v.scriptFrames,S.currentFrame);t!==E.current&&(E.current=t,e.onTaskChange(t))},[v,null==e?void 0:e.onTaskChange,S.currentFrame,S.playing]);let I=(0,a.useMemo)(()=>{var e;let t;return v?(e=S.currentFrame,(t=Ae(v.scriptFrames,e,v.imageWidth,v.imageHeight,v.fps)).img?t:null):null},[v,S.currentFrame]),O=(0,a.useCallback)(()=>Ap(function*(){if(null==e?void 0:e.reportFileContent)try{var t,r;yield(t={content:e.reportFileContent,onDownloadReport:e.onDownloadReport},(r=function*(){let{content:e,defaultFileName:r="midscene_report.html",onDownloadReport:n,documentRef:i,urlRef:o,blobFactory:a,scheduleRevoke:s}=t;if(n)return void(yield n({content:e,defaultFileName:r}));let A=null!=i?i:globalThis.document;if(!A)throw Error("Report download requires a document context.");let l=null!=o?o:globalThis.URL;if(!(null==l?void 0:l.createObjectURL)||!(null==l?void 0:l.revokeObjectURL))throw Error("Report download requires URL.createObjectURL support.");let c=(null!=a?a:(e,t)=>new Blob(e,t))([e],{type:"text/html"}),u=l.createObjectURL(c),d=A.createElement("a");d.href=u,d.download=r,d.style.display="none",A.body.appendChild(d);try{d.click()}finally{A.body.removeChild(d),(null!=s?s:e=>setTimeout(e,0))(()=>{l.revokeObjectURL(u)})}},function(){var e=this,t=arguments;return new Promise(function(n,i){var o=r.apply(e,t);function a(e){s5(o,n,i,a,s,"next",e)}function s(e){s5(o,n,i,a,s,"throw",e)}a(void 0)})})())}catch(e){G(e,{title:"Failed to download report"})}})(),[null==e?void 0:e.onDownloadReport,null==e?void 0:e.reportFileContent]),P=(0,a.useMemo)(()=>I&&(I.title||I.subTitle)?{title:I.title,subTitle:I.subTitle}:null,[I]),[T,N]=(0,a.useState)(!1),[M,D]=(0,a.useState)(0),B=(0,a.useRef)(!1),[z,L]=(0,a.useState)(!0),F=(0,a.useRef)(null),K=(0,a.useCallback)(()=>{L(!0),F.current&&clearTimeout(F.current),T||(F.current=setTimeout(()=>L(!1),3e3))},[T]),U=(0,a.useCallback)(()=>{L(!0),F.current&&clearTimeout(F.current)},[]),Q=(0,a.useCallback)(()=>{F.current&&clearTimeout(F.current),T||(F.current=setTimeout(()=>L(!1),1e3))},[T]);(0,a.useEffect)(()=>{T&&(L(!0),F.current&&(clearTimeout(F.current),F.current=null))},[T]),(0,a.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.target)?void 0:t.tagName;"INPUT"!==r&&"TEXTAREA"!==r&&"SELECT"!==r&&"Space"===e.code&&(e.preventDefault(),j())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[j]);let Z=(0,a.useRef)(null),J=(0,a.useCallback)(e=>{if(!v||!Z.current)return;let t=Z.current;t.setPointerCapture(e.pointerId);let r=e=>{let r=t.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e-r.left)/r.width));S.seekTo(Math.round(n*C))};r(e.clientX);let n=e=>r(e.clientX),i=()=>{t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",i)};t.addEventListener("pointermove",n),t.addEventListener("pointerup",i)},[v,S,C]),[X,H]=(0,a.useState)(!1),V=(0,a.useCallback)(()=>{let e=b.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>H(!1)):e.requestFullscreen().then(()=>H(!0)))},[]);(0,a.useEffect)(()=>{let e=()=>H(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let q=(0,a.useCallback)(()=>Ap(function*(){if(v&&!B.current){B.current=!0,N(!0),D(0);try{var e,t;yield(e={autoZoom:l},t=e=>D(Math.round(100*e)),AA(function*(){if(Al)throw Error("Video export is already in progress");Al=!0;try{var r,n,i;yield(r=v,n=e,i=t,AA(function*(){var e;let{totalDurationInFrames:t,fps:o}=r,a=null==(e=null==n?void 0:n.autoZoom)||e,s=new Set;for(let e of r.scriptFrames)e.img&&s.add(e.img);let A=new Map;yield Promise.all([...s].map(e=>AA(function*(){try{A.set(e,(yield Ac(e)))}catch(e){}})()));let l=new Set([aq]);for(let e of r.scriptFrames)e.pointerImg&&l.add(e.pointerImg);let c=new Map;yield Promise.all([...l].map(e=>AA(function*(){try{c.set(e,(yield Ac(e)))}catch(e){}})()));let u=null;try{u=yield Ac(aW)}catch(e){}let d=document.createElement("canvas");d.width=960,d.height=540;let p=d.getContext("2d"),h=d.captureStream(o),f=new MediaRecorder(h,{mimeType:"video/webm"}),g=[];return f.ondataavailable=e=>{e.data.size>0&&g.push(e.data)},new Promise((e,n)=>{let s=null,l=!1,d=0,m=performance.now(),y=m,v=null,b=null,w=1e3/o,E=()=>{v&&clearTimeout(v),b&&clearTimeout(b),document.removeEventListener("visibilitychange",x),h.getTracks().forEach(e=>e.stop())},k=e=>{l||s||(s=e,"inactive"!==f.state?f.stop():(E(),l=!0,n(e)))},x=()=>{document.hidden&&k(Error("Video export was interrupted because the report tab was hidden"))};f.onerror=()=>{k(Error("MediaRecorder error"))},f.onstop=()=>{if(E(),l)return;if(l=!0,s)return void n(s);if(0===g.length)return void n(Error("No video data"));let t=new Blob(g,{type:"video/webm"}),r=URL.createObjectURL(t),i=document.createElement("a");i.href=r,i.download="midscene_replay.webm",i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3),e()},document.addEventListener("visibilitychange",x),f.start();let S=e=>{if(!l&&"inactive"!==f.state){if(d>0&&e-y>Math.max(2e3,10*w))return void k(Error("Video export was interrupted because rendering stalled"));y=e,p.clearRect(0,0,960,540),function(e,t,r,n,i,o,a){var s,A,l,c,u,d,p,h,f,g,m,y,v,b,w,E,k;let x,{scriptFrames:S,imageWidth:C,imageHeight:j,fps:I}=r,O=Ae(S,t,C,j,I);if(!O.img)return;let{img:P,prevImg:R,imageWidth:T,imageHeight:N,camera:M,prevCamera:D,pointerMoved:B,imageChanged:z,rawProgress:L,frameInScript:F,spinning:K,spinningElapsedMs:U,currentPointerImg:Q,pointerVisible:Z,insights:J}=O,X=a?B?Math.min(L/.375,1):L:1,{camLeft:H,camTop:G,camWidth:V}=(h=D,f=M,g=T,m=B?L<=.375?0:Math.min((L-.375)/.625,1):L,a?{camLeft:(y=h.left,v=f.left,y+(v-y)*m),camTop:(b=h.top,w=f.top,b+(w-b)*m),camWidth:(E=h.width,k=f.width,E+(k-E)*m)}:{camLeft:0,camTop:0,camWidth:g}),q=(A=D.pointerLeft,l=M.pointerLeft,A+(l-A)*X),W=(c=D.pointerTop,u=M.pointerTop,c+(u-c)*X),Y=T/V,{offsetX:_,offsetY:$,contentWidth:ee,contentHeight:et}=At(960,540,T,N),er=-(ee/T*H),en=-(et/N*G),ei=z?Math.min(Math.max(F/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let eo=(t,r)=>{let i=n.get(t);i&&!(r<=0)&&(e.save(),e.globalAlpha=r,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate(_+er*Y,$+en*Y),e.scale(Y,Y),e.drawImage(i,0,0,ee,et),e.restore())};z&&R&&ei<1&&eo(R,1-ei),eo(P,z?ei:1),J.length>0&&function(e,t,r,n){for(let i of(e.save(),e.beginPath(),e.rect(n.offsetX,n.offsetY,n.contentWidth,n.contentHeight),e.clip(),t))if(!(i.alpha<=0)){if(e.save(),e.globalAlpha*=i.alpha,i.highlightElement){let t=Au(a_(i.highlightElement),r,n);e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(i.searchArea){let t=Au(i.searchArea,r,n);e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height)}e.restore()}e.restore()}(e,J,{zoom:Y,tx:er,ty:en},{offsetX:_,offsetY:$,contentWidth:ee,contentHeight:et,imageWidth:T,imageHeight:N});let ea=N/T*V,es=_+(q-H)/V*ee,eA=$+(W-G)/ea*et,el=(Ar(ee,"contentWidth"),An(Ai(T).scale*(ee/T))),ec=Ao(el),eu=null!=(s=i.get(Q))?s:i.get(aq),ed=s9(Z,M,D,T,N);K&&o&&(d=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},el),p=p={width:ec.size,height:ec.size,centerOffsetX:ec.centerOffset,centerOffsetY:ec.centerOffset},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(p)).forEach(function(e){Object.defineProperty(d,e,Object.getOwnPropertyDescriptor(p,e))}),x=(Math.sin(U/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(es,eA),e.rotate(x),e.drawImage(o,-d.centerOffsetX,-d.centerOffsetY,d.width,d.height),e.restore()),!K&&ed&&eu&&e.drawImage(eu,es-el.hotspotX,eA-el.hotspotY,el.width,el.height)}(p,d,r,A,c,u,a),null==i||i((d+1)/t),(d+=1)<t?(m+=w,b=setTimeout(()=>{requestAnimationFrame(S)},Math.max(0,m-performance.now()))):v=setTimeout(()=>{"inactive"!==f.state&&f.stop()},2*w)}};requestAnimationFrame(e=>{y=e,m=e,S(e)})})})())}finally{Al=!1}})()),A.success("Video exported")}catch(e){console.error("Export failed:",e),G(e,{title:"Video export failed"})}finally{B.current=!1,N(!1),D(0)}}})(),[l,v]),W=(0,a.useMemo)(()=>{if(!v||C<=0)return[];let e=[];for(let t of v.scriptFrames){if("img"!==t.type&&"insight"!==t.type||0===t.durationInFrames)continue;let r=t.startFrame,n=r/C*100;if(n>1&&n<99){let i=[t.title,t.subTitle].filter(Boolean);e.push({percent:n,title:i.length>0?i.join(": "):`Chapter ${e.length+1}`,frame:r})}}return e},[v,C]),Y=null!=(i=null==e?void 0:e.reportFileContent)?i:null,_=(null==e?void 0:e.canDownloadReport)!==!1;if(!y||0===y.length||!v)return Y&&_?(0,o.jsx)("div",{className:"player-container player-container-empty",children:(0,o.jsxs)("div",{className:"player-empty-state",children:[(0,o.jsx)("span",{className:"player-empty-text",children:"No replay available"}),(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(sX.A,{}),onClick:()=>{O()},children:"Download report"})]})}):null;let $=(null==I?void 0:I.imageWidth)||v.imageWidth,ee=(null==I?void 0:I.imageHeight)||v.imageHeight,et=ee>$,er=C>0?Math.min(100,S.currentFrame/C*100):0;return(0,o.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,children:(0,o.jsxs)("div",{className:"canvas-container",ref:b,onMouseMove:K,onMouseEnter:U,onMouseLeave:Q,children:[(0,o.jsx)("div",{className:"player-wrapper","data-portrait":et?"":void 0,style:{aspectRatio:`${$}/${ee}`},children:(0,o.jsx)("div",{ref:w,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:j,children:(s=k.width>0&&k.height>0?Math.min(k.width/$,k.height/ee):1,(0,o.jsx)("div",{style:{width:$*s,height:ee*s,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,o.jsx)("div",{style:{width:$,height:ee,transformOrigin:"0 0",transform:`scale(${s})`},children:(0,o.jsx)(Aa,{frameMap:v,autoZoom:l&&S.playing,frame:S.currentFrame,width:$,height:ee,fps:v.fps})})}))})}),f&&P&&(0,o.jsxs)("div",{className:"player-subtitle",children:[P.title&&(0,o.jsx)("span",{className:"player-subtitle-badge",children:P.title}),P.subTitle&&(0,o.jsx)("span",{className:"player-subtitle-text",children:P.subTitle})]}),!(null==e?void 0:e.hideControls)&&(0,o.jsxs)("div",{className:`control-bar ${z?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("div",{className:"status-icon",onClick:j,children:S.playing?(0,o.jsx)(sH.A,{}):(0,o.jsx)(sG.A,{})}),(0,o.jsxs)("span",{className:"time-display",children:[Ah(Math.min(S.currentFrame,C),v.fps)," ","/ ",Ah(C+1,v.fps)]}),(0,o.jsxs)("div",{className:"seek-bar-track",ref:Z,onPointerDown:J,children:[(0,o.jsx)("div",{className:"seek-bar-fill",style:{width:`${er}%`}}),(0,o.jsx)("div",{className:"seek-bar-knob",style:{left:`${er}%`}}),W.map(e=>(0,o.jsx)(h.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,o.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:t=>{t.stopPropagation(),S.seekTo(e.frame)}})},e.percent))]}),(0,o.jsxs)("div",{className:"player-custom-controls",children:[Y&&_?(0,o.jsx)(h.A,{title:"Download Report",children:(0,o.jsx)("div",{className:"status-icon",onClick:()=>{O()},children:(0,o.jsx)(sX.A,{})})}):null,(0,o.jsx)(s$.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,o.jsxs)("div",{className:"player-settings-dropdown",children:[(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:T?"not-allowed":"pointer",opacity:T?.5:1},onClick:T?void 0:q,children:[(0,o.jsx)("span",{style:{width:16,height:16,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:T?(0,o.jsx)(s0.A,{type:"circle",percent:M,size:16,strokeWidth:14,showInfo:!1,strokeColor:"#1677ff",trailColor:"rgba(0, 0, 0, 0.12)"}):(0,o.jsx)(sV.A,{style:{width:"16px",height:"16px"}})}),(0,o.jsx)("span",{className:"player-export-label",children:T?`Exporting ${M}%`:"Export video"})]}),(0,o.jsx)("div",{className:"player-settings-divider"}),(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,o.jsx)(s2,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,o.jsx)(s1.A,{size:"small",checked:l,onChange:e=>c(e)})]}),(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,o.jsx)(sq.A,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,o.jsx)(s1.A,{size:"small",checked:f,onChange:e=>m(e)})]}),(0,o.jsx)("div",{className:"player-settings-divider"}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,o.jsx)(sW.A,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,o.jsxs)("div",{onClick:()=>d(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 28px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${u===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,o.jsx)("div",{className:"status-icon",children:(0,o.jsx)(s3,{style:{width:"16px",height:"16px"}})})}),(0,o.jsx)("div",{className:"status-icon",onClick:V,children:X?(0,o.jsx)(sY.A,{}):(0,o.jsx)(s_.A,{})})]})]})]})})}let Ag=e=>{let{result:t,loading:r,serverValid:n,serviceMode:i,replayScriptsInfo:a,replayCounter:s,loadingProgressText:A,verticalMode:l=!1,notReadyMessage:c,fitMode:u,autoZoom:d,actionType:p,canDownloadReport:h,onDownloadReport:f}=e,g="result-wrapper";l&&(g+=" vertical-mode-result"),a&&l&&(g+=" result-wrapper-compact");let m=sK,y=p&&iz.includes(p);if(n||"Server"!==i)if(r)m=(0,o.jsxs)("div",{className:"loading-container",children:[(0,o.jsx)(en.A,{spinning:r,indicator:(0,o.jsx)(aK.A,{spin:!0})}),(0,o.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,o.jsx)(sz,{text:A,speed:3})})]});else if(null==t?void 0:t.error){let e=(0,o.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==t?void 0:t.error});m=t.reportHTML||a?(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Af,{replayScripts:null==a?void 0:a.scripts,imageWidth:null==a?void 0:a.width,imageHeight:null==a?void 0:a.height,reportFileContent:t.reportHTML||null,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]}):e}else if(y&&(null==t?void 0:t.result)!==void 0&&a){let e="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}),r=(null==t?void 0:t.reportHTML)||null;m=(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Af,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:r,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]})}else if(a){let e=(null==t?void 0:t.reportHTML)||null;m=(0,o.jsx)(Af,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:e,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)}else if(y&&(null==t?void 0:t.result)!==void 0&&(null==t?void 0:t.reportHTML)){let e="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)});m=(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Af,{reportFileContent:t.reportHTML,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]})}else y&&(null==t?void 0:t.result)!==void 0?m="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}):(null==t?void 0:t.reportHTML)?m=(0,o.jsx)(Af,{reportFileContent:t.reportHTML,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s):(null==t?void 0:t.result)!==void 0&&(m="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}));else m=sF(c);return(0,o.jsx)("div",{className:g,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:m})},Am=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),r=r={children:[(0,o.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,o.jsx)("path",{fill:"#2B83FF",stroke:"#fff",strokeLinejoin:"round",strokeWidth:1.125,d:"M6.866 5.882a.56.56 0 0 1 .667-.078l3.248 1.875 3.247 1.875a.563.563 0 0 1 0 .974l-3.247 1.875-3.248 1.875a.563.563 0 0 1-.784-.74l1.749-3.497-1.75-3.498a.56.56 0 0 1 .118-.661Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function Ay(){return(0,a.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,a.createElement)("path",{d:"M3 7.99984L6.33333 11.3332L13 4.6665",stroke:"#188F4D",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}))}let Av="ZodOptional",Ab="ZodDefault",Aw="ZodNullable",AE="ZodObject",Ak="midscene_location_field_flag",Ax=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),AS=e=>{var t,r,n;if((null==(t=e._def)?void 0:t.typeName)===AE){let t;if(e._def.shape&&(t="function"==typeof e._def.shape?e._def.shape():e._def.shape),!t&&e.shape&&(t=e.shape),t&&Ak in t)return!0;let n=(null==(r=e._def)?void 0:r.description)||e.description||"";if("string"==typeof n&&n.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let t=e.description||(null==(n=e._def)?void 0:n.description)||"";if("string"==typeof t){let e=t.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return"string"==typeof t&&t.toLowerCase().includes("input field")}return!1},AC=e=>{var t,r,n,i,o;let a=e,s=!1,A=!1;for(;(null==(t=a._def)?void 0:t.typeName)===Av||(null==(r=a._def)?void 0:r.typeName)===Ab||(null==(n=a._def)?void 0:n.typeName)===Aw;)(null==(i=a._def)?void 0:i.typeName)===Av&&(s=!0),(null==(o=a._def)?void 0:o.typeName)===Ab&&(A=!0),a=a._def.innerType||a;return{actualField:a,isOptional:s,hasDefault:A}},Aj=(e,t)=>{var r,n;if(!(null==e?void 0:e.length)||!t)return null;let i=e.find(e=>e.interfaceAlias===t||e.name===t);if(!(null==i?void 0:i.paramSchema)||!Ax(i.paramSchema))return null;let o=i.paramSchema.shape||{},a=Object.keys(o);if(1!==a.length)return null;let[s]=a,{actualField:A}=AC(o[s]),l=AS(A);if(!("ZodString"===(null==(r=A._def)?void 0:r.typeName)||l))return null;let c=(null==(n=A._def)?void 0:n.description)||A.description||(l?"Describe the element you want to interact with":`Enter ${s}`);return{name:s,placeholder:c}};var AI=r(8460),AO=r(3896),AP=r(3246),AR=r(1631),AT=r(4665);let AN=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:6,height:10,fill:"none",viewBox:"0 0 6 10"},e),r=r={children:(0,o.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M.195 9.138a.667.667 0 0 1 0-.943l3.529-3.528L.195 1.138a.667.667 0 0 1 .943-.943l4 4c.26.26.26.683 0 .943l-4 4a.667.667 0 0 1-.943 0",clipRule:"evenodd"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},AM=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,o.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M1.505 4.164c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,o.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M7.57 3.465v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var AD={};AD.d=(e,t)=>{for(var r in t)AD.o(t,r)&&!AD.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},AD.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),AD.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var AB={};function Az(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}AD.r(AB),AD.d(AB,{create:()=>v.vt});let{create:AL}=AB,AF="midscene-prompt-history-v2",AK="midscene-last-selected-type",AU=AL((e,t)=>{let r;return{history:(r=localStorage.getItem(AF))?JSON.parse(r):{},lastSelectedType:localStorage.getItem(AK)||"aiAct",clearHistory:r=>{let n=Az({},t().history);delete n[r],e({history:n}),localStorage.setItem(AF,JSON.stringify(n))},addHistory:r=>{var n,i;let{type:o}=r,a=t().history,s=a[o]||[],A=JSON.stringify({prompt:r.prompt,params:r.params}),l=[r,...s.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==A)];l.length>10&&(l.length=10);let c=(n=Az({},a),i=i={[o]:l},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))}),n);e({history:c}),localStorage.setItem(AF,JSON.stringify(c))},getHistoryForType:e=>t().history[e]||[],setLastSelectedType:t=>{e({lastSelectedType:t}),localStorage.setItem(AK,t)}}}),AQ=e=>{if(!e)return"";if("aiAct"===e)return"Action";let t=e.startsWith("ai")?e.slice(2):e;if(t.startsWith("IOS"))return t.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let r=t.replace(/([A-Z])/g," $1").trim(),n=r.split(" ");return(n.length>3?n.slice(-3).join(" "):r).replace(/\b\w/g,e=>e.toUpperCase())};function AZ(e){return{supportsImeStrategy:"android"===e,supportsKeyboardDismissStrategy:"android"===e||"harmony"===e,supportsAutoDismissKeyboard:"android"===e||"ios"===e||"harmony"===e,supportsAlwaysRefreshScreenInfo:"android"===e}}function AJ(e){return Object.values(AZ(e)).some(Boolean)}var AX=r(6356);let AH=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),r=r={children:(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},AG=e=>{let t,{showDeepLocateOption:r=!1,showDeepThinkOption:n=!1,enableTracking:i=!1,showDataExtractionOptions:a=!1,hideDomAndScreenshotOptions:s=!1,deviceType:A,trigger:l,popupPlacement:c="bottomRight"}=e,u=X(e=>e.forceSameTabNavigation),d=X(e=>e.setForceSameTabNavigation),p=X(e=>e.deepLocate),f=X(e=>e.setDeepLocate),g=X(e=>e.deepThink),m=X(e=>e.setDeepThink),y=X(e=>e.screenshotIncluded),v=X(e=>e.setScreenshotIncluded),b=X(e=>e.domIncluded),w=X(e=>e.setDomIncluded),E=X(e=>e.imeStrategy),k=X(e=>e.setImeStrategy),x=X(e=>e.autoDismissKeyboard),S=X(e=>e.setAutoDismissKeyboard),C=X(e=>e.keyboardDismissStrategy),j=X(e=>e.setKeyboardDismissStrategy),I=X(e=>e.alwaysRefreshScreenInfo),O=X(e=>e.setAlwaysRefreshScreenInfo),P=AZ(A),R=AJ(A);if(!i&&!r&&!n&&!a&&!R)return null;let T=(t=[],i&&t.push({label:(0,o.jsx)(AX.A,{onChange:e=>d(e.target.checked),checked:u,children:"Limit popup to current tab"}),key:"track-config"}),r&&t.push({label:(0,o.jsx)(AX.A,{onChange:e=>{f(e.target.checked)},checked:p,children:"Deep Locate"}),key:"deep-locate-config"}),n&&t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Deep Think"}),(0,o.jsxs)(AT.A.Group,{size:"small",value:g,onChange:e=>m(e.target.value),children:[(0,o.jsx)(h.A,{title:"Controlled by MIDSCENE_MODEL_REASONING_ENABLED env variable",children:(0,o.jsx)(AT.A,{value:"unset",children:"Auto"})}),(0,o.jsx)(AT.A,{value:!0,children:"On"}),(0,o.jsx)(AT.A,{value:!1,children:"Off"})]})]}),key:"deep-think-config"}),a&&!s&&(t.push({label:(0,o.jsx)(AX.A,{onChange:e=>{v(e.target.checked)},checked:y,children:"Include screenshot in request"}),key:"screenshot-included-config"}),t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,o.jsxs)(AT.A.Group,{size:"small",value:b,onChange:e=>w(e.target.value),children:[(0,o.jsx)(AT.A,{value:!1,children:"Off"}),(0,o.jsx)(AT.A,{value:!0,children:"All"}),(0,o.jsx)(AT.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),P.supportsImeStrategy&&(t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,o.jsxs)(AT.A.Group,{size:"small",value:E,onChange:e=>k(e.target.value),children:[(0,o.jsx)(AT.A,{value:"always-yadb",children:"Always YADB"}),(0,o.jsx)(AT.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),P.supportsAutoDismissKeyboard&&t.push({label:(0,o.jsx)(AX.A,{onChange:e=>S(e.target.checked),checked:x,children:aJ}),key:"auto-dismiss-keyboard-config"}),P.supportsKeyboardDismissStrategy&&t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,o.jsxs)(AT.A.Group,{size:"small",value:C,onChange:e=>j(e.target.value),children:[(0,o.jsx)(AT.A,{value:"esc-first",children:"ESC first"}),(0,o.jsx)(AT.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),P.supportsAlwaysRefreshScreenInfo&&t.push({label:(0,o.jsx)(AX.A,{onChange:e=>O(e.target.checked),checked:I,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),!P.supportsImeStrategy&&P.supportsAutoDismissKeyboard&&t.push({label:(0,o.jsx)(AX.A,{onChange:e=>S(e.target.checked),checked:x,children:aJ}),key:"auto-dismiss-keyboard-config"}),t),N=null!=l?l:(0,o.jsx)("button",{"aria-label":"Open run configuration",className:"selector-trigger-button",type:"button",children:(0,o.jsx)(AH,{width:24,height:24})});return(0,o.jsx)("div",{className:"selector-trigger",children:(0,o.jsx)(s$.A,{getPopupContainer:e=>e.ownerDocument.body,menu:{items:T},overlayClassName:"config-selector-dropdown",overlayStyle:{zIndex:10010},placement:c,trigger:["click"],children:N})})};var AV=r(7991),Aq=r(2752);let{TextArea:AW}=m.A,AY=(e,t)=>`${e}${t?" (Optional)":""}`,A_=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=a||`Enter ${t}`;return(0,o.jsx)(ay.A.Item,{name:["params",t],label:AY(r,!n),rules:n?[{required:!0,message:`Please input ${t}`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(m.A,{placeholder:s})},t)},A$=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=a||`Describe the ${t}, use natural language`;return(0,o.jsx)(ay.A.Item,{name:["params",t],label:AY(r,!n),rules:n?[{required:!0,message:`The ${t} is required`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(AW,{rows:2,placeholder:s})},t)},A0=e=>{var t;let{name:r,label:n,fieldSchema:i,isRequired:a,marginBottom:s,placeholder:A}=e,l=((null==(t=i._def)?void 0:t.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,o.jsx)(ay.A.Item,{name:["params",r],label:n,rules:a?[{required:!0,message:`Please select ${r}`}]:[],style:{marginBottom:s},colon:!1,children:(0,o.jsx)(AV.A,{placeholder:A||`Select ${r}`,options:l})},r)},A1=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=500*("distance"===t),A=a&&Number(a)||s,l="distance"===t?1e4:void 0;return(0,o.jsx)(ay.A.Item,{name:["params",t],label:`${r}${"distance"===t?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${t}`},{type:"number",min:0,message:`${r} must be at least 0`}]:[{type:"number",min:0,message:`${r} must be at least 0`}],style:{flex:"distance"===t?1:void 0,marginBottom:i},colon:!1,children:(0,o.jsx)(Aq.A,{placeholder:A.toString(),min:0,max:l,step:"distance"===t?10:1,style:{width:"100%"}})},t)},A2=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e;return(0,o.jsx)(ay.A.Item,{name:["params",t],label:AY(r,!n),rules:n?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(AV.A,{placeholder:a||`Select ${t}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},t)};var A3=r(316);let A5=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),r=r={children:(0,o.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},A7=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),r=r={children:[(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},A4=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),r=r={children:[(0,o.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,o.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,o.jsx)("path",{strokeLinecap:"round",d:"M10.519 5.42a3 3 0 0 0-2.122-.88 3 3 0 0 0-2.121.88M12.98 12.499l3.182 3.182"})]}),(0,o.jsx)("defs",{children:(0,o.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,o.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},{Text:A8}=u.A,A6=e=>{let{onSelect:t,history:r,currentType:n,trigger:i,popupPlacement:s="bottom",title:A="History",showClear:l=!0,onClear:c,searchPlaceholder:u="Search",emptyText:d="No history record",noMatchText:p="No matching history record",renderItemActions:h,renderItemLabel:f,overlayClassName:y,popupWidth:v=320,popupHeight:b=400,portalContainerSelector:w}=e,[E,k]=(0,a.useState)(!1),[x,S]=(0,a.useState)(""),[C,j]=(0,a.useState)(0),I=AU(e=>e.clearHistory),O=(0,a.useRef)(null),P=(0,a.useRef)(null),[R,T]=(0,a.useState)(null),[N,M]=(0,a.useState)(null),[D,B]=(0,a.useState)(!1),z=(0,a.useMemo)(()=>{let e=Date.now(),t=e-6048e5,n=e-31536e6,i=r.filter(e=>e.prompt.toLowerCase().includes(x.toLowerCase()));return{recent7Days:i.filter(e=>e.timestamp>=t),recent1Year:i.filter(e=>e.timestamp<t&&e.timestamp>=n),older:i.filter(e=>e.timestamp<n)}},[r,x]),L=()=>{k(!1)};(0,a.useEffect)(()=>{if(!E)return;let e=()=>{var e,t;if(!P.current)return;let r=P.current.getBoundingClientRect(),n=w?P.current.closest(w):null,i=null==n?void 0:n.getBoundingClientRect(),o=null!=(e=null==i?void 0:i.width)?e:window.innerWidth,a=null!=(t=null==i?void 0:i.height)?t:window.innerHeight,A=i?r.right-i.left:r.right,l=i?r.top-i.top:r.top,c=i?r.bottom-i.top:r.bottom,u=Math.max(16,o-v-16),d=Math.max(16,a-b-16);T({left:Math.min(Math.max(16,A-v),u),top:Math.min(Math.max(16,"top"===s?l-b-8:c+8),d)}),M(null!=n?n:document.body),B(!!n)},t=e=>{O.current&&!O.current.contains(e.target)&&P.current&&!P.current.contains(e.target)&&k(!1)};e();let r=setTimeout(()=>{document.addEventListener("click",t)},100);return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{clearTimeout(r),document.removeEventListener("click",t),window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[E,b,s,v,w]);let F=(e,r)=>0===r.length?null:(0,o.jsxs)("div",{className:"history-group",children:[(0,o.jsx)("div",{className:"history-group-title",children:e}),r.map((e,r)=>(0,o.jsxs)("div",{className:"history-item",onClick:()=>{t(e),k(!1)},children:[(0,o.jsx)("span",{className:"history-item-label",children:f?f(e,{close:L}):e.prompt}),h?(0,o.jsx)("span",{className:"history-item-actions",onClick:e=>e.stopPropagation(),children:h(e,{close:L,scrollVersion:C})}):null]},`${e.timestamp}-${r}`))]},e);return(0,o.jsxs)("div",{className:"history-selector-wrapper",children:[(0,o.jsx)("div",{className:"selector-trigger",onClick:()=>k(e=>!e),ref:P,children:null!=i?i:(0,o.jsx)(A7,{width:24,height:24})}),E&&R&&N&&(0,A3.createPortal)((0,o.jsx)("div",{className:y?`history-modal-overlay ${y}${D?" history-modal-overlay-in-container":""}`:`history-modal-overlay${D?" history-modal-overlay-in-container":""}`,ref:O,style:R,children:(0,o.jsxs)("div",{className:"history-modal-container",children:[(0,o.jsxs)("div",{className:"history-modal-header",children:[(0,o.jsxs)(A8,{strong:!0,style:{fontSize:"16px"},children:[A," (",r.length,")"]}),(0,o.jsx)(g.Ay,{size:"small",type:"text",icon:(0,o.jsx)(A5,{width:16,height:16}),onClick:()=>k(!1),className:"close-button"})]}),(0,o.jsx)("div",{className:"history-search-section",children:(0,o.jsxs)("div",{className:"search-input-wrapper",children:[(0,o.jsx)(m.A,{placeholder:u,value:x,onChange:e=>S(e.target.value),prefix:(0,o.jsx)(A4,{width:18,height:18}),className:"search-input",allowClear:!0}),l?(0,o.jsx)(g.Ay,{type:"link",onClick:()=>{c?c():I(n),S(""),k(!1)},className:"clear-button",disabled:0===r.length,children:"Clear"}):null]})}),(0,o.jsx)("div",{className:"history-content",onScroll:()=>{j(e=>e+1)},children:0===r.length?(0,o.jsx)("div",{className:"no-results",children:(0,o.jsx)(A8,{type:"secondary",children:d})}):(0,o.jsxs)(o.Fragment,{children:[F("Last 7 days",z.recent7Days),F("Last 1 year",z.recent1Year),F("Earlier",z.older),x&&0===z.recent7Days.length&&0===z.recent1Year.length&&0===z.older.length&&(0,o.jsx)("div",{className:"no-results",children:(0,o.jsx)(A8,{type:"secondary",children:p})})]})})]})}),N)]})};function A9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{TextArea:le}=m.A,lt=e=>{var t,r,n,i,s,A,l;let{runButtonEnabled:c,form:u,serviceMode:d,selectedType:p,dryMode:f,stoppable:y,loading:v,onRun:b,onStop:w,clearPromptAfterRun:E=!0,actionSpace:k,hideDomAndScreenshotOptions:x=!1,deviceType:S,chrome:C}=e,[j,I]=(0,a.useState)(!1),[O,P]=(0,a.useState)(""),R="aiQuery"===p?"What do you want to query?":"aiAssert"===p?"What do you want to assert?":"aiTap"===p?"What element do you want to tap?":"aiDoubleClick"===p?"What element do you want to double-click?":"aiHover"===p?"What element do you want to hover over?":"aiInput"===p?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===p?"What element do you want to right-click?":"aiKeyboardPress"===p?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===p?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===p?"What element do you want to locate?":"aiBoolean"===p?"What do you want to check (returns true/false)?":"aiNumber"===p?"What number do you want to extract?":"aiString"===p?"What text do you want to extract?":"aiAsk"===p?"What do you want to ask?":"aiWaitFor"===p?"What condition do you want to wait for?":"What do you want to do?",T=(null==C?void 0:C.variant)==="minimal",N=(null==C?void 0:C.placeholder)||R,M=(l=null==C?void 0:C.primaryActionLabel)?l:AQ(p)||"Action",D=(0,a.useRef)(null),B=(0,a.useRef)(null),z=ay.A.useWatch("params",u),L=(0,a.useRef)(null),F=AU(e=>e.history),K=AU(e=>e.lastSelectedType),U=AU(e=>e.addHistory),Q=AU(e=>e.setLastSelectedType),Z=(0,a.useMemo)(()=>F[p]||[],[F,p]),{markExplicitSelection:J,skipNextRestore:X,shouldSkipRestoreOnce:H}=function(e){let{enabled:t,form:r,selectedType:n,onAfterReset:i,defaultType:o="aiAct"}=e,[s,A]=(0,a.useState)(!1),l=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t&&!s&&n&&n!==o&&(l.current=!1,r.setFieldsValue({type:o,prompt:"",params:{}}),null==i||i())},[t,s,n,o,r,i]);let c=(0,a.useCallback)(()=>{t&&A(!0)},[t]),u=(0,a.useCallback)(()=>{l.current=!0},[]),d=(0,a.useCallback)(()=>!!l.current&&(l.current=!1,!0),[]);return(0,a.useMemo)(()=>({markExplicitSelection:c,skipNextRestore:u,shouldSkipRestoreOnce:d}),[c,u,d])}({enabled:T,form:u,selectedType:p,onAfterReset:(0,a.useCallback)(()=>{L.current=null,P("")},[])}),G=(0,a.useMemo)(()=>{if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);return!!(null==e?void 0:e.paramSchema)&&(!Ax(e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0)}return!1},[p,k]),V=(0,a.useMemo)(()=>{if(k&&k.length>0){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if(e){if(e.paramSchema&&Ax(e.paramSchema)){let t=e.paramSchema.shape||{};return Object.keys(t).some(e=>{let{isOptional:r}=AC(t[e]);return!r})}return!!e.paramSchema}}return!0},[p,k]),q=(0,a.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(p),[p]),W=(0,a.useMemo)(()=>{if("aiAct"===p||"aiLocate"===p)return!0;if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&Ax(e.paramSchema)){let t=e.paramSchema.shape||{};return Object.keys(t).some(e=>{let{actualField:r}=AC(t[e]);return AS(r)})}}return!1},[p,k]),Y=(0,a.useMemo)(()=>"aiAct"===p,[p]),_=(0,a.useMemo)(()=>{let e="In-Browser-Extension"===d,t=q&&!x,r=AJ(S);return e||W||Y||t||r},[d,W,Y,q,x,S]),$=(0,a.useMemo)(()=>(e=>{let t=Object.keys(aX);if(!(null==e?void 0:e.length))return t;let r=e.map(e=>e.interfaceAlias||e.name),n=new Set;return t.forEach(e=>{let t=aX[e];"aiAct"===e||(null==t?void 0:t.group)==="extraction"||(null==t?void 0:t.group)==="validation"?n.add(e):r.includes(e)&&n.add(e)}),r.forEach(e=>{n.add(e)}),Array.from(n)})(k),[k]),ee=(0,a.useMemo)(()=>$.filter(e=>!aH.includes(e)),[$]),et=(0,a.useCallback)(e=>{J(),u.setFieldValue("type",e)},[u,J]),er=(0,a.useMemo)(()=>[{key:"interaction-group",label:"Interaction APIs",match:e=>{var t;return(null==(t=aX[e])?void 0:t.group)==="interaction"}},{key:"extraction-group",label:"Data Extraction APIs",match:e=>{var t;return(null==(t=aX[e])?void 0:t.group)==="extraction"}},{key:"validation-group",label:"Validation APIs",match:e=>{var t;return(null==(t=aX[e])?void 0:t.group)==="validation"}},{key:"device-specific-group",label:"Device-Specific APIs",match:e=>!aX[e]}],[]),en=(0,a.useCallback)(e=>{var t;return{key:e,label:AQ(e),title:(null==(t=aX[e])?void 0:t.title)||"",onClick:()=>et(e)}},[et]),ei=(0,a.useMemo)(()=>{let e=[];for(let t of er){let r=ee.filter(t.match);0!==r.length&&e.push({key:t.key,type:"group",label:t.label,children:r.map(en)})}return e},[er,ee,en]),eo=(0,a.useMemo)(()=>{let e=aH.filter(e=>$.includes(e)),t=[];return e.length>0&&t.push({key:"primary-group",type:"group",label:"Primary APIs",children:e.map(en)}),t.push(...ei),{items:t}},[$,en,ei]),ea=(0,a.useMemo)(()=>({items:ei}),[ei]),es=(0,a.useCallback)(()=>{if(!G||!k)return{};let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&Ax(e.paramSchema)){let t={},r=e.paramSchema.shape||{};return Object.keys(r).forEach(e=>{let n=(e=>{var t;let r=e;for(;null==(t=r._def)?void 0:t.innerType;){if(r._def.typeName===Ab){if("function"==typeof r._def.defaultValue)return r._def.defaultValue();if(void 0!==r._def._serializedDefaultValue)return r._def._serializedDefaultValue}r=r._def.innerType}})(r[e]);void 0!==n&&(t[e]=n)}),t}return{}},[p,G,k]);(0,a.useEffect)(()=>{T||u.getFieldValue("type")||!K||u.setFieldValue("type",K)},[u,T,K]),(0,a.useEffect)(()=>{!T&&p&&p!==K&&Q(p)},[p,T,K,Q]);let eA=(0,a.useCallback)(()=>{let e=B.current;if(!e)return;let t=null,r=e.querySelector(".ant-radio-button-wrapper-checked"),n=e.querySelector(".more-apis-button.selected-from-dropdown");if(r?t=r:n&&(t=n),t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),i=n.left-r.left+e.scrollLeft,o=n.width,a=r.width;e.scrollTo({left:Math.max(0,i-(a-o)/2),behavior:"smooth"})}},[]);(0,a.useEffect)(()=>{if(H())return;if(T){let e=es();u.setFieldsValue({prompt:"",params:e}),P(""),L.current=null;return}let e=Z[0];if(!e||!L.current||e.timestamp!==L.current.timestamp)if(e)u.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),P(e.prompt||""),L.current=e;else{let e=es();u.setFieldsValue({prompt:"",params:e}),P(""),L.current=null}},[p,Z,u,es,T,H]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{eA()},100);return()=>clearTimeout(e)},[p,eA]);let el=ay.A.useWatch("prompt",u);(0,a.useEffect)(()=>{el!==O&&P(el||"")},[el,O]);let ec=(0,a.useCallback)(e=>{J(),e.type!==p&&X(),u.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),P(e.prompt)},[u,J,p,X]),eu=(0,a.useCallback)(e=>{P(e.target.value)},[]),ed=(0,a.useMemo)(()=>{if(!G||!k)return!1;let e=k.find(e=>e.interfaceAlias===p||e.name===p);return!!((null==e?void 0:e.paramSchema)&&Ax(e.paramSchema))&&1===Object.keys(e.paramSchema.shape||{}).length},[p,G,k]),ep=(0,a.useMemo)(()=>T?Aj(k,p):null,[k,T,p]),eh=(0,a.useMemo)(()=>((e,t,r,n,i,o)=>{if(!e)return!1;if(!(()=>{if(n){let e=n.find(e=>e.interfaceAlias===i||e.name===i);if(e){if(!e.paramSchema)return!1;if("object"==typeof e.paramSchema&&"shape"in e.paramSchema)return Object.keys(e.paramSchema.shape||{}).length>0}}return!0})())return!0;if(t){let e=r||{},t=null==n?void 0:n.find(e=>e.interfaceAlias===i||e.name===i);if((null==t?void 0:t.paramSchema)&&Ax(t.paramSchema)){let r=t.paramSchema.shape||{};return Object.keys(r).every(t=>{let{isOptional:n}=AC(r[t]),i=e[t];return n||void 0!==i&&""!==i&&null!==i})}return!0}return o.trim().length>0})(c,!!G,z,k,p,O),[c,G,p,k,O,z]),ef=(0,a.useCallback)(()=>{let e=u.getFieldsValue(),t="";if(G&&e.params&&k){let r=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==r?void 0:r.paramSchema)&&Ax(r.paramSchema)){let n="",i=[],o=r.paramSchema.shape||{};Object.keys(o).forEach(t=>{var r;let a=null==(r=e.params)?void 0:r[t];if(null!=a&&""!==a){let{actualField:e}=AC(o[t]);AS(e)?n=String(a):"distance"===t?i.push(`${a}`):i.push(String(a))}});let a=i.join(" ");t=n?`${n} - ${a}`:a}else t=e.prompt||""}else t=e.prompt||"";let r={type:e.type,prompt:t,params:e.params,timestamp:Date.now()};if(U(r),b(),E)if(L.current=r,P(""),G){let e=es();u.setFieldValue("params",e)}else u.setFieldValue("prompt","")},[u,U,b,G,p,E,k,es]),eg=(0,a.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eh?(ef(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(D.current){var e;let t=null==(e=D.current.resizableTextArea)?void 0:e.textArea;if(t){let e=t.selectionStart,r=t.value.lastIndexOf("\n");(-1===r||e>r)&&(t.scrollTop=t.scrollHeight)}}},0)},[ef,eh]),em=(0,a.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eh&&(ef(),e.preventDefault(),e.stopPropagation())},[ef,eh]),ey=(0,a.useCallback)(()=>{if(!G)return null;if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&Ax(e.paramSchema)){let t=e.paramSchema.shape||{},r=Object.keys(t);if(1===r.length){let e=r[0],{actualField:n}=AC(t[e]),i=AS(n),a=(()=>{var t,r;if(null==(t=n._def)?void 0:t.description)return n._def.description;if(n.description)return n.description;if(k){let t=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==t?void 0:t.paramSchema)&&"object"==typeof t.paramSchema&&"shape"in t.paramSchema){let n=(t.paramSchema.shape||{})[e];if(null==n||null==(r=n._def)?void 0:r.description)return n._def.description;if(null==n?void 0:n.description)return n.description}}return i?"Describe the element you want to interact with":"keyName"===e?"Enter key name or text to type":"value"===e?"Enter text to input":`Enter ${e}`})();return(0,o.jsx)(ay.A.Item,{name:["params",e],style:{margin:0},children:(0,o.jsx)(m.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:a,autoFocus:!0,onKeyDown:em})})}let n=[],i=r.sort((e,r)=>{let n=t[e],i=t[r],{isOptional:o}=AC(n),{isOptional:a}=AC(i);return!o&&a?-1:o&&!a?1:0});if(i.forEach((e,r)=>{var a,s,A;let{actualField:l,isOptional:c}=AC(t[e]),u=AS(l),d=e.charAt(0).toUpperCase()+e.slice(1),h=12*(r!==i.length-1),f=(()=>{var t,r;if(null==(t=l._def)?void 0:t.description)return l._def.description;if(l.description)return l.description;if(k){let t=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==t?void 0:t.paramSchema)&&"object"==typeof t.paramSchema&&"shape"in t.paramSchema){let n=(t.paramSchema.shape||{})[e];if(null==n||null==(r=n._def)?void 0:r.description)return n._def.description;if(null==n?void 0:n.description)return n.description}}if(u)return"Describe the element you want to interact with"})(),g={name:e,label:d,fieldSchema:l,isRequired:!c,marginBottom:h,placeholder:f};u?n.push((0,o.jsx)(A$,A9({},g),e)):(null==(a=l._def)?void 0:a.typeName)==="ZodEnum"?n.push((0,o.jsx)(A0,A9({},g),e)):(null==(s=l._def)?void 0:s.typeName)==="ZodNumber"?n.push((0,o.jsx)(A1,A9({},g),e)):(null==(A=l._def)?void 0:A.typeName)==="ZodBoolean"?n.push((0,o.jsx)(A2,A9({},g),e)):n.push((0,o.jsx)(A_,A9({},g),e))}),"aiScroll"===p){let e=n.find(e=>a.isValidElement(e)&&"direction"===e.props.name),t=n.find(e=>a.isValidElement(e)&&"distance"===e.props.name),r=n.filter(e=>a.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&t)return(0,o.jsxs)("div",{className:"structured-params",children:[(0,o.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,t]}),r]})}return(0,o.jsx)("div",{className:"structured-params",children:n})}}return null},[p,G,k,em]),ev=(0,a.useCallback)(()=>{I(!0)},[]),eb=(0,a.useCallback)(()=>{I(!1)},[]),ew=(0,a.useCallback)(()=>{let e=e=>(0,o.jsx)(g.Ay,{type:"primary",icon:(0,o.jsx)(AI.A,{}),style:{borderRadius:20,zIndex:999},onClick:ef,disabled:!eh,loading:v,children:e});return f?"aiAct"===p?(0,o.jsx)(h.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry Run")}):e("Run"):y?(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(AO.A,{}),onClick:w,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[f,v,ef,w,eh,p,y]),eE=(0,a.useCallback)(()=>{let e=e=>(0,o.jsx)(g.Ay,{"aria-label":e,className:"minimal-run-trigger",type:"primary",icon:(0,o.jsx)(AP.A,{}),onClick:ef,disabled:!eh,loading:v});return f?"aiAct"===p?(0,o.jsx)(h.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry run")}):e("Run"):y?(0,o.jsx)(g.Ay,{"aria-label":"Stop running",className:"minimal-run-trigger minimal-run-trigger-stop",icon:(0,o.jsx)(AO.A,{}),onClick:w}):e("Run")},[f,v,ef,eh,w,p,y]),ek=V?G?ep?(0,o.jsx)(ay.A.Item,{name:["params",ep.name],style:{margin:0},children:(0,o.jsx)(le,{className:"main-side-console-input-textarea",disabled:!c,rows:3,placeholder:"prompt"===ep.name?N:ep.placeholder,autoFocus:!0,onKeyDown:em})}):ed?ey():(0,o.jsx)("div",{className:"structured-params-container",children:ey()}):(0,o.jsx)(ay.A.Item,{name:"prompt",style:{margin:0},children:(0,o.jsx)(le,{className:"main-side-console-input-textarea",disabled:!c,rows:3,placeholder:N,autoFocus:!0,onKeyDown:eg,onChange:eu,ref:D})}):(0,o.jsxs)("div",{className:"no-input-method",children:['Click "Run" to execute ',AQ(p)]}),ex=null!=(s=null==C||null==(t=C.icons)?void 0:t.action)?s:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAASdJREFUeAHtlt3NgjAUhg8/CVx+G8gGX5xAnUDdQMcgkIgJBLbQEXQD3MAR6gZewgXgOUn9iRp6vAC96JM07YG36Zv+nBZAwySO4ymWgUoXRdEfaYGJyRElSbKyLGuHJVdpHcc5khb7RMCAZcA0TU82PYZ8IPsoZ4ttoEu0ga8bMB6DNE1X8H6jTUBuLmQL7SxkLbDkzz/ruhZBEKxfDGRZNm2aZgc9UFXVLAzDPbVvS1AUxQGrE3SPwHK8BganBy7NBuTU+r5vKLSNbG5RuwQF+hRoA9rA76RifMl4+JjI4Z5yu0KUZTnE8c4U3GbAdd3/HgYnPNu2R9eg98uIvmOGfL2M2tCpWBv4BQPiqW7j9IGWZ4CODT7X5pRAVFrUjEn7eNQ0bVwAyWpjMDlJKpAAAAAASUVORK5CYII=",eS=null==C||null==(r=C.icons)?void 0:r.actionChevron,eC=null!=(A=null==C||null==(n=C.icons)?void 0:n.settings)?A:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAaFJREFUeAHtlt9tgzAQxi8EJa/pBMkIHYENygalG7RvSQQKlfjz2I5ANkg3oBukG6QbtI9IIPq5ihHQOBXmFImqPwnZBvtsf9ydTfQPA77vz4IguCENDGJgOp3ux+PxLgxDnzrCsgAw/zZmGPOO48iUFci4wE42xITKXlEUO9d1X34s4NjZISZU9qCSjeKqastKWZYpMaKyNxqNto02MRDHcXmsJqvV6q7LWBYnxK4+SBOTeHDw2HAwn4aGlg9EUfQE2e+xYwchtaUeaPmAmFyUyH4W9aThA9jZ7alOiN39crl8O/FpoRpzjrq96hcgj2/wwVcNQlxb6/X6VdRrYaeNtGfUVvXbgE9iRNprOCHktPF/Z+3OeZ4fPM9LZbumgHjX2Qnr9rSioE/ma6MVBZDvWWQ/cbLR0GE5jEQoQhFLpGIkpvcuY1nOAkyeiBKJSRSXPw37UCkgbrWmaSZwsBkxoLInHBgJ6EG2KwUgn801+Tl78hyRVApkWfaIexxp4rRfqOzBUdN6+29cyYAMvQN1hCUMIbc1mUyu4VzDz4wX5wvRfah9kIOcwwAAAABJRU5ErkJggg==",ej=null==C||null==(i=C.icons)?void 0:i.history;return T?(0,o.jsxs)("div",{className:"prompt-input-wrapper prompt-input-wrapper-minimal",children:[(0,o.jsx)(ay.A.Item,{hidden:!0,name:"type",style:{margin:0},children:(0,o.jsx)(m.A,{})}),(0,o.jsxs)("div",{className:`main-side-console-input minimal-main-side-console-input ${!c?"disabled":""} ${v?"loading":""}`,children:[ek,(0,o.jsxs)("div",{className:"minimal-toolbar-row",children:[(0,o.jsxs)("div",{className:"minimal-toolbar-left",children:[(0,o.jsx)(s$.A,{menu:eo,placement:"topLeft",trigger:["click"],disabled:!c,overlayClassName:"more-apis-dropdown",children:(0,o.jsxs)("button",{"aria-label":`Select action type (current: ${M})`,className:"minimal-action-trigger",disabled:!c,type:"button",children:[(0,o.jsx)("img",{alt:"",className:"minimal-action-icon",src:ex}),(0,o.jsx)("span",{className:"minimal-action-label",children:M}),eS?(0,o.jsx)("img",{alt:"",className:"minimal-action-chevron",src:eS}):(0,o.jsx)(AN,{"aria-hidden":"true",className:"minimal-action-chevron",focusable:"false"})]})}),(0,o.jsx)(A6,{onSelect:ec,history:Z,currentType:p,popupPlacement:"top",trigger:(0,o.jsx)("button",{"aria-label":"Open prompt history",className:"minimal-icon-trigger",type:"button",children:ej?(0,o.jsx)("img",{alt:"",className:"minimal-toolbar-icon minimal-toolbar-icon-history",src:ej}):(0,o.jsx)(AM,{"aria-hidden":"true",className:"minimal-toolbar-icon minimal-toolbar-icon-history",focusable:"false"})})}),_?(0,o.jsx)("div",{className:j?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ev,onMouseLeave:eb,children:(0,o.jsx)(AG,{enableTracking:"In-Browser-Extension"===d,showDeepLocateOption:W,showDeepThinkOption:Y,showDataExtractionOptions:q,hideDomAndScreenshotOptions:x,deviceType:S,popupPlacement:"topRight",trigger:(0,o.jsx)("button",{"aria-label":"Open run configuration",className:"minimal-icon-trigger",type:"button",children:(0,o.jsx)("img",{alt:"",className:"minimal-toolbar-icon",src:eC})})})}):null]}),(0,o.jsxs)("div",{className:"form-controller-wrapper",children:[null==C?void 0:C.inputActions,eE()]})]})]})]}):(0,o.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,o.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,o.jsxs)("div",{className:"mode-radio-group",ref:B,children:[(0,o.jsx)(ay.A.Item,{name:"type",style:{margin:0},children:(0,o.jsx)(AT.A.Group,{buttonStyle:"solid",disabled:!c,children:aH.map(e=>{var t;return(0,o.jsx)(h.A,{title:(null==(t=aX[e])?void 0:t.title)||"",children:(0,o.jsx)(AT.A.Button,{value:e,children:AQ(e)})},e)})})}),(0,o.jsx)(s$.A,{menu:ea,placement:"bottomLeft",trigger:["click"],disabled:!c,overlayClassName:"more-apis-dropdown",children:(0,o.jsxs)(g.Ay,{className:`more-apis-button ${!aH.includes(p)?"selected-from-dropdown":""}`,children:[p&&!aH.includes(p)?AQ(p):"more",(0,o.jsx)(AR.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,o.jsxs)("div",{className:"action-icons",children:[(0,o.jsx)(A6,{onSelect:ec,history:Z,currentType:p}),_&&(0,o.jsx)("div",{className:j?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ev,onMouseLeave:eb,children:(0,o.jsx)(AG,{enableTracking:"In-Browser-Extension"===d,showDeepLocateOption:W,showDeepThinkOption:Y,showDataExtractionOptions:q,hideDomAndScreenshotOptions:x,deviceType:S})})]})]}),(0,o.jsxs)("div",{className:`main-side-console-input ${!c?"disabled":""} ${v?"loading":""}`,children:[ek,(0,o.jsxs)("div",{className:"form-controller-wrapper",children:[null==C?void 0:C.inputActions,ew()]})]})]})};function lr(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ln(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){lr(o,n,i,a,s,"next",e)}function s(e){lr(o,n,i,a,s,"throw",e)}a(void 0)})}}let{Text:li}=u.A,lo=new Set;function la(e){let{error:t}=e;if(!t)return null;let r=t.replace(/^(Error:\s*)+/,"Error: ");return(0,o.jsx)(y.A,{message:(0,o.jsx)("span",{style:{color:"#ff4d4f"},children:r}),type:"error",showIcon:!0})}function ls(e){var t,r,n;let{playgroundSDK:i,storage:s,contextProvider:A,config:l={},branding:c={},className:u="",dryMode:d=!1,showContextPreview:p=!0}=e,[h]=ay.A.useForm(),{config:f}=X(),[m,y]=(0,a.useState)(!1),v=(0,a.useRef)(null);(0,a.useEffect)(()=>{ln(function*(){if(i&&"function"==typeof i.checkStatus)try{yield i.checkStatus(),y(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),y(!0)}else y(!0)})()},[i]);let b=(0,a.useMemo)(()=>{if(!1===l.persistMessages)return null;if(s)return s;if(!m)return null;let e=l.storageNamespace||(i&&i.id&&"string"==typeof i.id?`agent-${i.id}`:"playground-default"),t=sx();return console.log(`Using ${t} storage for namespace: ${e}`),sk(t,e)},[s,m,l.storageNamespace,l.persistMessages,i]),{loading:w,setLoading:E,infoList:k,setInfoList:x,actionSpace:S,actionSpaceLoading:C,uiContextPreview:j,setUiContextPreview:I,showScrollToBottomButton:O,verticalMode:P,replayCounter:R,setReplayCounter:T,messagesInitialized:N,infoListRef:M,currentRunningIdRef:D,interruptedFlagRef:B,clearInfoList:z,handleScrollToBottom:L}=function(e,t,r,n){let i=!(arguments.length>4)||void 0===arguments[4]||arguments[4],[o,s]=(0,a.useState)(!1),[A,l]=(0,a.useState)([]),[c,u]=(0,a.useState)([]),[d,p]=(0,a.useState)(!0),[h,f]=(0,a.useState)(),[g,m]=(0,a.useState)(!1),[y,v]=(0,a.useState)(!0),b=(0,a.useRef)(0),[w,E]=(0,a.useState)(!1),[k,x]=(0,a.useState)(0),S=(0,a.useRef)(null),C=(0,a.useRef)(null),j=(0,a.useRef)({}),I=(0,a.useRef)(),[,O]=(0,a.useState)(0);(0,a.useEffect)(()=>{let e=!1,r=null!=t?t:null,o=t=>{e||l(t)};return I.current!==r&&(t||0===A.length)&&sC(function*(){let a=sI(sj({},aG(n)),{id:"welcome",timestamp:new Date});if(null==t?void 0:t.loadMessages)try{let e=yield t.loadMessages();0===e.length&&(e=yield sC(function*(){if(!i)return[];let e=sk(sx(),"playground-default");try{if(null==e?void 0:e.loadMessages){let r=yield e.loadMessages();if(r.length>1)return console.log("Found data in old namespace, migrating..."),(null==t?void 0:t.saveMessages)&&(yield t.saveMessages(r)),e.clearMessages&&(yield e.clearMessages()),r}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),e.some(e=>"welcome"===e.id)?o(e):o([a,...e])}catch(e){console.error("Failed to load messages:",e),o([a])}else o([a]);e||(I.current=r,O(e=>e+1))})(),()=>{e=!0}},[i,t]),(0,a.useEffect)(()=>{(null==t?void 0:t.saveMessages)&&A.length>1&&t.saveMessages(A).catch(e=>{e instanceof DOMException&&"QuotaExceededError"===e.name?console.warn("Storage quota exceeded - some messages may not be saved persistently"):console.error("Failed to save messages:",e)})},[A,t]),(0,a.useEffect)(()=>{(null==r?void 0:r.getUIContext)&&!h&&r.getUIContext().then(e=>f(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[r,h]),(0,a.useEffect)(()=>{sC(function*(){p(!0);try{var t;if(!e)return void u([]);let n=h||(yield null==r||null==(t=r.getUIContext)?void 0:t.call(r)),i=yield e.getActionSpace(n);u(i||[])}catch(e){console.error("Failed to load action space:",e),u([])}finally{p(!1)}})()},[e,h,r]),(0,a.useEffect)(()=>{E(window.innerWidth<750);let e=()=>{E(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let P=(0,a.useCallback)(()=>{setTimeout(()=>{S.current&&(S.current.scrollTop=S.current.scrollHeight)},100)},[]),R=(0,a.useCallback)(()=>{if(S.current){let{scrollTop:e,scrollHeight:t,clientHeight:r}=S.current,n=e+r>=t-10;m(!n);let i=e<b.current;b.current=e,n?v(!0):i&&v(!1)}},[]),T=(0,a.useCallback)(()=>{S.current&&(S.current.scrollTo({top:S.current.scrollHeight,behavior:"smooth"}),m(!1),v(!0))},[]);(0,a.useEffect)(()=>{A.length>0&&y&&P()},[A,P,y]),(0,a.useEffect)(()=>{let e=S.current;if(e)return e.addEventListener("scroll",R),R(),()=>{e.removeEventListener("scroll",R)}},[R]);let N=(0,a.useCallback)(()=>sC(function*(){if(l([sI(sj({},aG(n)),{id:"welcome",timestamp:new Date})]),null==t?void 0:t.clearMessages)try{yield t.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[t,n]),M=(0,a.useCallback)(()=>sC(function*(){if(null==r?void 0:r.refreshContext)try{let e=yield r.refreshContext();f(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[r]);return{loading:o,setLoading:s,infoList:A,setInfoList:l,messagesInitialized:I.current===(null!=t?t:null),actionSpace:c,actionSpaceLoading:d,uiContextPreview:h,setUiContextPreview:f,showScrollToBottomButton:g,verticalMode:w,replayCounter:k,setReplayCounter:x,infoListRef:S,currentRunningIdRef:C,interruptedFlagRef:j,clearInfoList:N,refreshContext:M,handleScrollToBottom:T,scrollToBottom:P}}(i,b,A,c.targetName,!1!==l.persistMessages&&!l.storageNamespace),{handleRun:F,handleStop:K,canStop:U}=function(e){let{playgroundSDK:t,storage:r,actionSpace:n,loading:i,setLoading:o,setInfoList:s,replayCounter:A,setReplayCounter:l,verticalMode:c,currentRunningIdRef:u,interruptedFlagRef:d,deviceType:p}=e,{deepLocate:h,deepThink:f,screenshotIncluded:g,domIncluded:m,imeStrategy:y,autoDismissKeyboard:v,keyboardDismissStrategy:b,alwaysRefreshScreenInfo:w}=X(),E=(0,a.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a8(function*(){if(!t)return void console.warn("PlaygroundSDK is not available");let i=Date.now(),a=e.type,E=n.displayContent||`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:E,timestamp:new Date};s(e=>[...e,k]),o(!0);let x=a6({},aV),S={id:`system-${i}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};s(e=>[...e,S]);try{u.current=i,d.current[i]=!1,t.onDumpUpdate&&t.onDumpUpdate((e,t)=>{var r;if(d.current[i]||!(null==t||null==(r=t.tasks)?void 0:r.length))return;let n=t.tasks.map((e,t)=>{var r;let n,o;return{id:`progress-${i}-task-${t}`,type:"progress",content:(n=o4(e),(o=ae(e))?`${n} - ${o}`:n),actionKind:o4(e),timestamp:new Date((null==(r=e.timing)?void 0:r.start)||Date.now()),result:e.error?{error:se(e.error),result:null}:void 0}});s(e=>{let t=e.findIndex(e=>e.id===`system-${i}`);if(-1===t)return e;let r=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${i}-`)));return[...r.slice(0,t+1),...n,...r.slice(t+1)]})}),sr(a)||!0!==f||console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct and runMarkdown.",{actionType:a,requestId:i.toString()});let r="unset"===f?void 0:f,o=a6(a9(a6({requestId:i.toString(),deepLocate:h},sr(a)&&void 0!==r?{deepThink:r}:{}),{screenshotIncluded:g,domIncluded:m,deviceOptions:{imeStrategy:y,autoDismissKeyboard:v,keyboardDismissStrategy:b,alwaysRefreshScreenInfo:w}}),n.reportDisplay?{reportDisplay:n.reportDisplay}:{});if(x.result=yield t.executeAction(a,e,o),"object"==typeof x.result&&null!==x.result){let e=x.result;e.dump&&(x.dump=e.dump),e.reportHTML&&(x.reportHTML=e.reportHTML),e.error&&(x.error=se(e.error)),"result"in e&&(x.result=e.result)}}catch(e){x.error=se(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(x.dump=e.dump),e.reportHTML&&(x.reportHTML=e.reportHTML))}if(d.current[i])return;o(!1),u.current=null;let C=null,j=A;if(null==x?void 0:x.dump){let e=st(x.dump,p);e&&(l(e=>e+1),C=e,j=A+1)}s(e=>e.map(e=>e.id===`system-${i}`?a9(a6({},e),{content:"",loading:!1,loadingProgressText:""}):e));let I={id:`result-${i}`,type:"result",content:"Execution result",timestamp:new Date,result:x,loading:!1,replayScriptsInfo:C,replayCounter:j,loadingProgressText:"",verticalMode:c,actionType:a};if(s(e=>[...e,I]),null==r?void 0:r.saveResult)try{yield r.saveResult(I.id,I)}catch(e){console.error("Failed to save result:",e)}let O={id:`separator-${i}`,type:"separator",content:"New Session",timestamp:new Date};s(e=>[...e,O])})()},[t,r,n,o,s,A,l,c,u,d,h,f,g,m,p,y,v,b,w]),k=(0,a.useCallback)(()=>a8(function*(){let e=u.current;if(e&&t&&t.cancelExecution)try{let r=yield t.cancelExecution(e.toString()),n=null;if(r)n=r;else if(t.getCurrentExecutionData)try{n=yield t.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}if(d.current[e]=!0,o(!1),t.onProgressUpdate&&t.onProgressUpdate(()=>{}),t.onDumpUpdate&&t.onDumpUpdate(()=>{}),s(t=>t.map(t=>t.id===`system-${e}`?a9(a6({},t),{content:"",loading:!1,loadingProgressText:""}):t)),n&&(n.dump||n.reportHTML)){let t=null,r=A;(t=st(n.dump,p))&&(l(e=>e+1),r=A+1);let i={id:`stop-result-${e}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:n.dump,reportHTML:n.reportHTML,error:null},loading:!1,verticalMode:c,replayScriptsInfo:t,replayCounter:r};s(e=>[...e,i])}else{let t={id:`stop-${e}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1};s(e=>[...e,t])}let i={id:`separator-${e}`,type:"separator",content:"New Session",timestamp:new Date};s(e=>[...e,i])}catch(e){console.error("Failed to stop execution:",e)}})(),[t,u,d,o,s,c,A,p]);return{handleRun:E,handleStop:k,canStop:i&&!!u.current&&!!t&&!!t.cancelExecution}}({playgroundSDK:i,storage:b,actionSpace:S,loading:w,setLoading:E,setInfoList:x,replayCounter:R,setReplayCounter:T,verticalMode:P,currentRunningIdRef:D,interruptedFlagRef:B,deviceType:l.deviceType});(0,a.useEffect)(()=>{(null==i?void 0:i.overrideConfig)&&f&&i.overrideConfig(f).catch(e=>{console.error("Failed to override SDK config:",e),G(e,{title:"Failed to apply AI configuration"})})},[i,f]);let Q=(0,a.useCallback)(()=>ln(function*(){try{let e=h.getFieldsValue();yield F(e)}catch(e){G(e,{title:"Execution failed"})}})(),[h,F]);(0,a.useEffect)(()=>{let e=l.externalRunRequest;if(e&&function(e){let{request:t,handledRequestIds:r,lastRequestId:n,sdkReady:i,messagesInitialized:o}=e;return!!(t&&t.id!==n&&!(null==r?void 0:r.has(t.id))&&i&&o)}({request:e,handledRequestIds:lo,lastRequestId:v.current,sdkReady:m,messagesInitialized:N})){if(v.current=e.id,lo.add(e.id),lo.size>100){let e=lo.values().next().value;e&&lo.delete(e)}F(e.value,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({displayContent:e.displayContent},e.reportDisplay?{reportDisplay:e.reportDisplay}:{})).catch(e=>{G(e,{title:"Execution failed"})})}},[l.externalRunRequest,F,N,m]);let Z=Object.keys(f||{}).length>=1,J=l.serverMode||!d&&!C&&Z,H=ay.A.useWatch("type",h)||aH["0"],V=(0,a.useMemo)(()=>i&&"function"==typeof i.getServiceMode?i.getServiceMode():"Server",[i]),q=p&&!1!==l.showContextPreview,W=l.layout||"vertical",Y=!1!==l.showVersionInfo,_=l.deviceType,$=null!=(t=l.executionFlow)?t:{},ee=!0===$.collapsible,et=null!=(r=$.label)?r:"Execution Flow",[er,en]=(0,a.useState)(()=>new Set),ei=(0,a.useCallback)(e=>{en(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),{firstInProgressGroup:eo,visibleInfoList:ea}=(0,a.useMemo)(()=>{let e=new Set,t=[],r=null,n=k.length>1;for(let i of k)if(!n||"welcome"!==i.id)if("progress"===i.type){if(null===r){r=i.id,e.add(i.id),t.push(i);continue}ee&&er.has(r)||t.push(i)}else r=null,t.push(i);return{firstInProgressGroup:e,visibleInfoList:t}},[er,ee,k]),es=(0,a.useMemo)(()=>{for(let e=k.length-1;e>=0;e--)if("progress"===k[e].type)return k[e].id;return null},[k]),eA=void 0!==l.emptyState&&1===ea.length&&(null==(n=ea[0])?void 0:n.id)==="welcome",el=(0,a.useMemo)(()=>eA&&((e,t)=>{if(!(null==e?void 0:e.length)||!t||Aj(e,t))return!1;let r=e.find(e=>e.interfaceAlias===t||e.name===t);return!!(null==r?void 0:r.paramSchema)&&!!Ax(r.paramSchema)&&Object.keys(r.paramSchema.shape||{}).length>1})(S,H),[S,eA,H]);(0,a.useEffect)(()=>{if(!el)return;let e=()=>{let e=M.current;if(!e)return;let t=e.querySelector(".playground-empty-state-wrapper"),r=null==t?void 0:t.querySelector("[data-playground-empty-state-content-start]"),n=null==t?void 0:t.querySelector("[data-playground-empty-state-content-end]");if(!(r instanceof HTMLElement)||!(n instanceof HTMLElement))return;let i=e.getBoundingClientRect(),o=r.getBoundingClientRect(),a=n.getBoundingClientRect(),s=function(e){let{currentScrollTop:t,maxScrollTop:r,containerTop:n,containerBottom:i,contentStartTop:o,contentEndBottom:a,topSafeMargin:s=24,bottomSafeMargin:A=24}=e;return Math.max(0,Math.round(Math.min(t+a-(i-A),t+o-(n+s),r)))}({currentScrollTop:e.scrollTop,maxScrollTop:Math.max(0,e.scrollHeight-e.clientHeight),containerTop:i.top,containerBottom:i.bottom,contentStartTop:o.top,contentEndBottom:a.bottom});e.scrollTo({top:s,behavior:"auto"})},t=window.requestAnimationFrame(e),r=window.setTimeout(e,160);return()=>{window.cancelAnimationFrame(t),window.clearTimeout(r)}},[M,H,el]);let ec=["playground-empty-state-wrapper",el?"playground-empty-state-wrapper-offset-for-prompt":""].filter(Boolean).join(" ");return(0,o.jsx)("div",{className:`playground-container ${W}-mode ${u}`.trim(),children:(0,o.jsxs)(ay.A,{form:h,onFinish:Q,className:"command-form",initialValues:{type:aH["0"]},children:[q&&(0,o.jsx)("div",{className:"context-preview-section",children:(0,o.jsx)(sQ,{uiContextPreview:j,setUiContextPreview:I,showContextPreview:q})}),(0,o.jsxs)("div",{className:"middle-dialog-area",children:[!1!==l.showClearButton&&k.length>1&&(0,o.jsx)("div",{className:"clear-button-container",children:(0,o.jsx)(g.Ay,{size:"small",icon:(0,o.jsx)(aL.A,{}),onClick:z,type:"text",className:"clear-button"})}),(0,o.jsx)("div",{ref:M,className:"info-list-container",children:eA?(0,o.jsx)("div",{className:ec,children:l.emptyState}):(0,o.jsx)(aZ.A,{itemLayout:"vertical",dataSource:ea,renderItem:e=>{var t,r,n;let i,s,A,u,d,p,h,f=ee&&eo.has(e.id),g=f&&er.has(e.id);return(0,o.jsxs)(aZ.A.Item,{className:"list-item",children:[f?(0,o.jsxs)("button",{type:"button",className:`progress-group-toggle ${er.has(e.id)?"is-collapsed":"is-expanded"}`,"aria-expanded":!er.has(e.id),onClick:()=>ei(e.id),children:[(0,o.jsx)("span",{className:"progress-group-toggle-label",children:et}),(0,o.jsx)(aF.A,{className:"progress-group-toggle-chevron"})]}):null,g?null:"user"===e.type?(0,o.jsx)("div",{className:"user-message-container",children:(0,o.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,o.jsx)("div",{children:(s=null==(t=(i=e.content.split(" - "))[0])?void 0:t.trim(),A=i.slice(1).join(" - ").trim(),u=e.id===es,h="completed"==(p=(d=w&&u)?"loading":(null==(r=e.result)?void 0:r.error)?"error":"completed")?function(e,t){if(!e)return null;if(t){let r=t(e);if(void 0!==r)return r}return(0,a.createElement)(Ay)}(e.actionKind,$.resolveActionIcon):null,(0,o.jsxs)("div",{className:"progress-row",children:[s?(0,o.jsx)("span",{className:`progress-status-icon ${p}`,children:"loading"===p?(0,o.jsx)(aK.A,{spin:!0}):"error"===p?"✗":null!==h?h:"✓"}):null,(0,o.jsxs)("div",{className:"progress-row-content",children:[s?(0,o.jsx)("span",{className:"progress-action-item",children:s}):null,A?(0,o.jsx)("div",{className:"progress-description-wrap",children:(0,o.jsx)(sz,{text:A,className:"progress-description",disabled:!d})}):null,(null==(n=e.result)?void 0:n.error)&&(0,o.jsx)(la,{error:e.result.error})]})]}))}):"separator"===e.type?(0,o.jsxs)("div",{className:"new-conversation-separator",children:[(0,o.jsx)("div",{className:"separator-line"}),(0,o.jsx)("div",{className:"separator-text-container",children:(0,o.jsx)(li,{type:"secondary",className:"separator-text",children:e.content})})]}):(0,o.jsxs)("div",{className:"system-message-container",children:[!1!==l.showSystemMessageHeader&&(0,o.jsxs)("div",{className:"system-message-header",children:[(0,o.jsx)(aU.A,{component:c.icon||Am,style:{fontSize:20}}),(0,o.jsx)("span",{className:"system-message-title",children:c.title||"Playground"})]}),(e.content||e.result)&&(0,o.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,o.jsx)(Ag,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:V,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",actionType:e.actionType,onDownloadReport:l.onDownloadReport}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,o.jsx)("div",{className:"loading-progress-text",children:(0,o.jsx)("span",{children:e.loadingProgressText})})]})})]})]},e.id)}})}),O&&!1!==l.enableScrollToBottom&&(0,o.jsx)(g.Ay,{className:"scroll-to-bottom-button",type:"primary",shape:"circle",icon:(0,o.jsx)(aQ.A,{}),onClick:L,size:"large"})]}),(0,o.jsxs)("div",{className:"bottom-input-section",children:[l.showEnvConfigReminder?(0,o.jsx)(sJ,{}):null,(0,o.jsx)(lt,{runButtonEnabled:J,form:h,serviceMode:V,selectedType:H,dryMode:d,stoppable:U,loading:w,onRun:Q,onStop:K,actionSpace:S,chrome:l.promptInputChrome,deviceType:_})]}),Y&&c.version&&(0,o.jsx)("div",{className:"version-info-section",children:(0,o.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",c.version]})})]})})}let lA=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,o.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m12 6-4 4-4-4"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},ll=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:55,height:52,fill:"none",viewBox:"0 0 55 52"},e),r=r={children:[(0,o.jsxs)("mask",{id:"midscene-logo_svg__a",width:55.371,height:52.35,x:-.202,y:-.201,fill:"#000",maskUnits:"userSpaceOnUse",children:[(0,o.jsx)("path",{fill:"#fff",d:"M-.202-.201h55.371v52.35H-.202z"}),(0,o.jsx)("path",{fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"})]}),(0,o.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"}),(0,o.jsx)("path",{fill:"#3A4953",d:"m36.328 4.056 1.3 1.263zm-.83.853L34.2 3.646l-1.95 2.006 2.628.96zm13.968 14.069-1.707.609.14.39.295.291zm3.714 13.116 1.812.031zm-4.24 9.99 1.187 1.369zm-6.322 3.224.543 1.73.002-.002zm-.069.022-.543-1.729-.012.004zm-.088.029.546 1.727.01-.003zm-1.328.378-.446-1.757-.335.086-.28.202zm-13.634 4.399v1.812zm-13.632-4.399 1.06-1.47-.28-.202-.334-.084zm-1.328-.379-.55 1.727.004.001zm-.09-.028-.55 1.727zm-.067-.022.55-1.726-.005-.002zm-6.323-3.224-1.187 1.369zm-4.24-9.99-1.811.031zm3.715-13.116 1.272 1.29.295-.29.14-.391zm14.02-14.089.618 1.704 2.636-.955-1.954-2.011zm-.81-.833-1.3 1.262zm.948-2.244V0zm.563 4.935.615 1.704-1.23-3.409zM7.25 20.086l1.211 1.347.357-.32.151-.456zM3.803 32.06l-1.812.03zm9.244 11.378.55-1.726-.004-.002zm.09.029-.55 1.727h.004zm1.586.437 1.087-1.45-.304-.227-.369-.087zM27.5 48.152v1.812h.75l.532-.531zm.001-.001 1.282 1.281 3.093-3.093H27.5zm-12.776-4.247 1.087-1.45-.304-.227-.369-.087zm-1.586-.437-.55 1.727h.004zm-.09-.029.55-1.726-.004-.002zM3.805 32.06l-1.812.032zm3.447-11.973 1.211 1.347.357-.32.151-.456zm24.043 27.727.32 1.784-.64-3.567zm-.573.096-.271-1.792.542 3.584zm.892-.155-.348-1.778.695 3.557zm.255-.05.37 1.774.23-.048.21-.105zm.002 0 .81 1.62-1.179-3.395zm.623-.141L32.07 45.8l.845 3.524zm.215-.051.441 1.757.192-.048.177-.089zm.002-.001.81 1.62-1.251-3.378zM21.084 6.465V4.653h-.278l-.266.084zm-.572.191-.593-1.712 1.186 3.424zm.573-.19.545 1.728-.545-3.54zM35.38 1.811v1.812a.49.49 0 0 1-.351-.83l1.3 1.262 1.3 1.262C39.558 3.33 38.15 0 35.379 0zm.949 2.244-1.3-1.264-.829.854 1.3 1.263 1.298 1.263.83-.853zm-.83.853-.621 1.702a21.57 21.57 0 0 1 12.882 12.976l1.707-.61 1.706-.608A25.2 25.2 0 0 0 36.12 3.207zm13.968 14.069-1.272 1.29c2.043 2.015 3.29 5.063 3.174 11.795l1.812.03 1.812.032c.123-7.147-1.178-11.405-4.254-14.438zm3.714 13.116-1.812-.031c-.074 4.3-1.658 6.955-3.615 8.651l1.187 1.37 1.187 1.369c2.758-2.391 4.773-6.03 4.865-11.328zm-4.24 9.99-1.187-1.37c-1.919 1.663-4.188 2.395-5.68 2.866l.545 1.728.545 1.728c1.488-.469 4.421-1.379 6.964-3.583zm-6.322 3.224-.543-1.728-.069.021.543 1.729.544 1.729.068-.022zm-.069.022-.555-1.725-.089.029.556 1.724.556 1.725.088-.028zm-.088.029-.546-1.728q-.626.197-1.228.35l.446 1.756.445 1.756q.704-.178 1.429-.407zm-1.328.378-1.06-1.47a21.4 21.4 0 0 1-12.574 4.057v3.624c5.48 0 10.562-1.759 14.694-4.742zm-13.634 4.399v-1.812a21.4 21.4 0 0 1-12.571-4.056l-1.06 1.469-1.061 1.47a25.03 25.03 0 0 0 14.692 4.74zm-13.632-4.399.446-1.757q-.602-.151-1.228-.35l-.546 1.728-.546 1.728q.723.229 1.429.407zm-1.328-.379.55-1.726-.09-.029-.55 1.727-.55 1.727.09.028zm-.09-.028.55-1.727-.067-.021-.55 1.726-.55 1.727.067.022zm-.067-.022.545-1.728c-1.492-.47-3.762-1.202-5.681-2.866l-1.187 1.37-1.187 1.369c2.543 2.204 5.477 3.114 6.964 3.583zm-6.323-3.224 1.187-1.37c-1.957-1.696-3.54-4.35-3.615-8.651l-1.811.03-1.812.032c.091 5.297 2.106 8.937 4.864 11.328zm-4.24-9.99 1.812-.031c-.116-6.733 1.13-9.78 3.175-11.795l-1.272-1.29-1.272-1.29C1.185 20.72-.115 24.977.008 32.124zm3.715-13.116 1.707.609A21.57 21.57 0 0 1 20.172 6.593l-.617-1.704-.618-1.703a25.2 25.2 0 0 0-15.11 15.183zm14.02-14.089 1.3-1.262-.81-.834-1.3 1.263-1.3 1.262.811.834zm-.81-.833 1.3-1.263a.49.49 0 0 1-.351.831V1.812L19.691 0c-2.771 0-4.177 3.332-2.247 5.318zm.948-2.244v1.812H35.38V0H19.692zm.563 4.935-.616-1.705A23.2 23.2 0 0 0 5.53 19.514l1.72.572 1.72.571a19.58 19.58 0 0 1 11.9-12.206zM7.25 20.086l-1.212-1.348C3.27 21.228 1.866 24.83 1.99 32.091l1.812-.032 1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596zM3.803 32.06l-1.812.03c.082 4.753 1.861 7.854 4.18 9.864 2.236 1.938 4.852 2.746 6.33 3.212l.546-1.728.546-1.728c-1.511-.477-3.445-1.105-5.047-2.494-1.519-1.316-2.867-3.433-2.932-7.188zm9.244 11.378-.55 1.727.09.029.55-1.727.55-1.727-.09-.028zm.09.029-.546 1.728q.875.276 1.718.474l.414-1.765.414-1.764q-.706-.164-1.454-.401zm1.586.437-1.086 1.45a23.05 23.05 0 0 0 13.862 4.61V46.34a19.43 19.43 0 0 1-11.69-3.886zM27.5 48.152l1.282 1.281v-.001l-1.28-1.281-1.282-1.282-.001.001zm.001-.001v-1.812a19.43 19.43 0 0 1-11.69-3.885l-1.086 1.45-1.086 1.45A23.05 23.05 0 0 0 27.5 49.964zm-12.776-4.247.414-1.764c-.472-.11-.954-.243-1.454-.401l-.546 1.728-.546 1.728q.875.276 1.718.474zm-1.586-.437.55-1.727-.09-.028-.55 1.726-.55 1.727.09.029zm-.09-.029.546-1.728c-1.511-.477-3.444-1.105-5.047-2.494-1.518-1.316-2.866-3.433-2.93-7.188l-1.812.032-1.812.03c.082 4.752 1.86 7.853 4.18 9.864 2.235 1.938 4.85 2.745 6.33 3.212zM3.805 32.06l1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596l-1.211-1.347-1.212-1.348c-2.767 2.49-4.172 6.092-4.047 13.353zm3.447-11.973 1.72.571A19.58 19.58 0 0 1 20.87 8.451l-.615-1.704-.616-1.705A23.2 23.2 0 0 0 5.532 19.514zm24.043 27.727-.32-1.783q-.266.048-.524.087l.271 1.792.271 1.791q.319-.048.622-.103zm-.573.096.272 1.791q.316-.048.622-.103l-.32-1.784-.321-1.783a20 20 0 0 1-.524.087zm.892-.155.347 1.779c.061-.012.179-.034.278-.055l-.37-1.774-.369-1.774c-.071.015-.124.025-.234.046zm.255-.05.81 1.621h.003l-.81-1.622-.811-1.62h-.002zm.002 0-.369-1.775-.235.047.347 1.778.347 1.779.28-.056zm.623-.141.422 1.762c.023-.006.159-.037.234-.056l-.441-1.757-.441-1.758-.197.047zm.215-.051.81 1.62h.002l-.81-1.621-.81-1.621h-.002zm.002-.001-.441-1.758-.199.047.423 1.763.422 1.762.236-.057zM21.084 6.465l-.544-1.728q-.325.104-.621.207l.593 1.712.593 1.712q.273-.095.524-.174zm-.572.191.594 1.712q.27-.093.524-.174l-.545-1.729-.544-1.728q-.323.103-.622.207zm.573-.19V4.652zv1.812z",mask:"url(#midscene-logo_svg__a)"}),(0,o.jsx)("mask",{id:"midscene-logo_svg__b",width:53,height:50,x:1,y:1,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"},children:(0,o.jsx)("path",{fill:"#F0F0F0",fillRule:"evenodd",d:"M24.214 12.537a4.63 4.63 0 0 0 6.64 0l6.608-6.805a23.4 23.4 0 0 1 12 13.247c2.56 2.524 3.833 6.176 3.714 13.114-.083 4.8-1.883 7.947-4.24 9.991-2.231 1.934-4.833 2.755-6.322 3.225l-.158.05q-.675.213-1.328.378a23.22 23.22 0 0 1-13.632 4.399 23.22 23.22 0 0 1-13.632-4.399q-.654-.165-1.33-.378l-.157-.05c-1.49-.47-4.092-1.291-6.322-3.225-2.358-2.044-4.157-5.192-4.24-9.99-.12-6.941 1.155-10.593 3.716-13.117a23.4 23.4 0 0 1 12.05-13.27zM35.38 1.812c1.168 0 1.763 1.406.949 2.244l-6.895 7.1c-.52.534-1.21.8-1.899.8h-.012a2.65 2.65 0 0 1-1.536-.503 2.7 2.7 0 0 1-.35-.299L19.552 4.89l.001-.001-.808-.833c-.814-.838-.22-2.244.949-2.244z",clipRule:"evenodd"})}),(0,o.jsxs)("g",{mask:"url(#midscene-logo_svg__b)",children:[(0,o.jsx)("path",{fill:"#fff",d:"M-4.044-9.086h63.087V65.49H-4.044z"}),(0,o.jsx)("g",{filter:"url(#midscene-logo_svg__c)",opacity:.8,children:(0,o.jsx)("path",{fill:"#005EEC",fillOpacity:.01,d:"M41.85 43.36c-.378-.748-3.453.67-7.362 2.242s-7.175 2.702-6.798 3.45c.378.746 3.853.078 7.763-1.494s6.773-3.452 6.396-4.199"})})]}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__d)",d:"M5.773 18.412h43.601v24.223H5.773z"}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__e)",d:"M5.773 18.473h43.086v24.454H5.773z"}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__f)",d:"M5.926 18.075h43.092v24.457H5.926z"}),(0,o.jsx)("foreignObject",{width:27.157,height:19.138,x:21.193,y:36.687,children:(0,o.jsx)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{backdropFilter:"blur(2.96px)",clipPath:"url(#midscene-logo_svg__g)",height:"100%",width:"100%"}})}),(0,o.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",stroke:"#3A4953",strokeWidth:.514,d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253Zm17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901Z",clipRule:"evenodd","data-figma-bg-blur-radius":5.911}),(0,o.jsxs)("defs",{children:[(0,o.jsx)("pattern",{id:"midscene-logo_svg__d",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__h",transform:"scale(.00483 .0087)"})}),(0,o.jsx)("pattern",{id:"midscene-logo_svg__e",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__i",transform:"scale(.009 .01587)"})}),(0,o.jsx)("pattern",{id:"midscene-logo_svg__f",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__j",transform:"scale(.009 .01587)"})}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__h",width:207,height:115,preserveAspectRatio:"none"}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__i",width:111,height:63,preserveAspectRatio:"none"}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__j",width:111,height:63,preserveAspectRatio:"none"}),(0,o.jsx)("clipPath",{id:"midscene-logo_svg__g",transform:"translate(-21.193 -36.687)",children:(0,o.jsx)("path",{fillRule:"evenodd",d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253m17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901",clipRule:"evenodd"})}),(0,o.jsxs)("filter",{id:"midscene-logo_svg__c",width:27.157,height:19.138,x:21.193,y:36.687,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,o.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,o.jsx)("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),(0,o.jsx)("feGaussianBlur",{result:"effect1_foregroundBlur_8049_134028",stdDeviation:3.212})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function lc(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}function lu(){return(0,o.jsx)(lA,{"aria-hidden":"true",className:"session-setup-select-icon"})}let ld="Create Agent";function lp(e){var t,r,n,i;let{form:a,sessionSetup:s,sessionSetupError:A,sessionViewState:l,sessionLoading:c,sessionMutating:u,onCreateSession:d}=e,p=u||c||"blocked"===l.setupState,h=null!=(t=null==s?void 0:s.primaryActionLabel)?t:ld,f=null!=(r=null==s?void 0:s.title)?r:ld,g=null!=(n=null==s?void 0:s.description)?n:"Create a platform session before running actions.";return(0,o.jsx)("div",{className:"session-setup-panel",children:(0,o.jsxs)("div",{className:"session-setup-card",children:[(0,o.jsx)(ll,{"aria-hidden":"true",className:"session-setup-logo"}),(0,o.jsx)("h1",{className:"session-setup-title",children:f}),(0,o.jsx)("p",{className:"session-setup-description",children:g}),"blocked"===l.setupState&&l.setupBlockingReason&&(0,o.jsx)(y.A,{type:"error",showIcon:!0,message:"Setup blocked",description:l.setupBlockingReason,className:"session-setup-alert"}),A?(0,o.jsx)(y.A,{type:"error",showIcon:!0,message:"Failed to load setup",description:A,className:"session-setup-alert"}):null,(null==s?void 0:s.notice)?(0,o.jsx)(y.A,{type:s.notice.type,showIcon:!0,message:s.notice.message,description:s.notice.description,className:"session-setup-alert"}):null,(0,o.jsxs)(ay.A,{form:a,layout:"vertical",className:"session-setup-form",onFinish:()=>{p||d()},children:[(null!=(i=null==s?void 0:s.fields)?i:[]).map(e=>(0,o.jsx)(ay.A.Item,{label:e.label,name:e.key,tooltip:e.description,rules:e.required?[{required:!0,message:`${e.label} is required`}]:void 0,children:function(e,t){if("number"===e.type)return(0,o.jsx)(Aq.A,{style:{width:"100%"},placeholder:e.placeholder});if("select"===e.type){var r,n;let i=lc(t),a=function(e,t){var r;if(lc(t)!==e.key||!(null==t||null==(r=t.platformRegistry)?void 0:r.length))return e.options;let n=t.platformRegistry.map(e=>({label:e.label,value:e.id,description:[e.description,e.unavailableReason].filter(Boolean).join(" \xb7 ")||void 0}));return n.length>0?n:e.options}(e,t);return i===e.key&&(null==t||null==(r=t.platformSelector)?void 0:r.variant)==="cards"?(0,o.jsx)(AT.A.Group,{className:"platform-selector-group",children:(a||[]).map(e=>(0,o.jsxs)(AT.A.Button,{value:e.value,className:"platform-selector-card",children:[(0,o.jsx)("div",{className:"platform-selector-title",children:e.label}),e.description?(0,o.jsx)("div",{className:"platform-selector-description",children:e.description}):null]},String(e.value)))}):(0,o.jsx)(AV.A,{placeholder:e.placeholder,suffixIcon:(0,o.jsx)(lu,{}),options:(null!=(n=null!=a?a:e.options)?n:[]).map(e=>({label:e.label,value:e.value,description:e.description})),optionRender:e=>{let t=e.data.description;return t?(0,o.jsxs)("div",{className:"session-select-option",children:[(0,o.jsx)("div",{className:"session-select-option-label",children:e.data.label}),(0,o.jsx)("div",{className:"session-select-option-description",children:t})]}):e.data.label}})}return(0,o.jsx)(m.A,{placeholder:e.placeholder})}(e,s)},e.key)),(0,o.jsx)("button",{type:"submit",className:"session-setup-submit",disabled:p,children:u?"Creating...":h})]})]})})}function lh(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function lf(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function lg(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function lm(e){var t,r,n,i,a,s;let A,{controller:l,appVersion:c,title:u="Playground",branding:d,playgroundConfig:p,header:h,className:m,playgroundClassName:v,notConnectedFallback:b}=e,{state:w,actions:E}=l,k=lf(lh({},A={showContextPreview:!1,layout:"vertical",showVersionInfo:!1,enableScrollToBottom:!1,serverMode:!0,showEnvConfigReminder:!1,showClearButton:!1,showSystemMessageHeader:!1,promptInputChrome:{variant:"minimal"},executionFlow:{collapsible:!0},deviceType:w.deviceType,executionUx:{hints:w.executionUxHints,countdownSeconds:w.countdownSeconds}},p),{executionFlow:lh({},A.executionFlow,null==p?void 0:p.executionFlow),executionUx:lh({},A.executionUx,null==p?void 0:p.executionUx)}),x=(t=w.runtimeInfo,r=w.deviceType,lf(lh({},d),{title:null!=(n=null==t?void 0:t.title)?n:u,version:c,targetName:null!=(s=null!=(a=null!=(i=null==t?void 0:t.platformId)?i:null==d?void 0:d.targetName)?a:r)?s:"screen"}));return(0,o.jsxs)("div",{className:["playground-conversation-panel",m].filter(Boolean).join(" "),children:[(0,o.jsx)(f.A,{open:null!==w.countdown,footer:(0,o.jsx)(g.Ay,{onClick:E.finishCountdown,type:"default",children:"Skip countdown"}),closable:!0,maskClosable:!0,onCancel:E.finishCountdown,centered:!0,width:400,styles:{mask:{backgroundColor:"rgba(0, 0, 0, 0.75)"}},children:(0,o.jsxs)("div",{style:{textAlign:"center",padding:"40px 20px"},children:[(0,o.jsx)("div",{style:{fontSize:"120px",fontWeight:"bold",color:"GO!"===w.countdown?"#52c41a":"#1890ff",marginBottom:"24px",lineHeight:1},children:w.countdown}),(0,o.jsx)("div",{style:{fontSize:"18px",fontWeight:500,marginBottom:"12px"},children:"Automation Starting Soon"}),(0,o.jsxs)("div",{style:{fontSize:"14px",color:"var(--midscene-text-secondary)"},children:["The selected session requested a countdown before execution.",(0,o.jsx)("br",{}),"Please wait until the run starts."]})]})}),h,(0,o.jsx)("div",{className:"playground-conversation-body",children:w.serverOnline?w.sessionViewState.connected?(0,o.jsx)(ls,{playgroundSDK:w.playgroundSDK,config:k,branding:x,className:["playground-container","playground-conversation-skin",v].filter(Boolean).join(" ")}):void 0!==b?(0,o.jsx)(o.Fragment,{children:b}):(0,o.jsx)(lp,{form:w.form,sessionSetup:w.sessionSetup,sessionSetupError:w.sessionSetupError,sessionViewState:w.sessionViewState,sessionLoading:w.sessionLoading,sessionMutating:w.sessionMutating,onCreateSession:()=>{var e;return(e=function*(){yield E.createSession()},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){lg(o,n,i,a,s,"next",e)}function s(e){lg(o,n,i,a,s,"throw",e)}a(void 0)})})()}}):(0,o.jsx)("div",{className:"playground-conversation-offline",children:(0,o.jsx)(y.A,{type:"warning",showIcon:!0,message:"Playground server offline",description:"Reconnect the runtime to continue using the Android playground."})})})]})}let{Content:ly}=Y.A;function lv(e){var t;let{serverUrl:r,appVersion:n,title:i="Playground",defaultDeviceType:s="web",branding:l,playgroundConfig:c,offlineTitle:u="Midscene Playground",offlineStatusText:d="Server offline...",pollIntervalMs:h=5e3}=e,[f,g]=(0,a.useState)(!1),m=function(e){var t;let{serverUrl:r,defaultDeviceType:n="web",pollIntervalMs:i=5e3,countdownSeconds:s=3,initialFormValues:A,onCountdownFinish:l}=e,{message:c}=p.A.useApp(),[u]=ay.A.useForm(),d=(0,a.useRef)(A);(0,a.useLayoutEffect)(()=>{let e=d.current;if(e)for(let[t,r]of Object.entries(e))void 0===u.getFieldValue(t)&&u.setFieldsValue({[t]:r})},[u]);let h=null!=(t=ay.A.useWatch([],u))?t:{},[f,g]=(0,a.useState)(null),[m,y]=(0,a.useState)(null),[v,b]=(0,a.useState)(null),[w,E]=(0,a.useState)(!1),[k,x]=(0,a.useState)(!1),S=X(e=>e.config),C=(0,a.useMemo)(()=>JSON.stringify(Object.entries(S).sort((e,t)=>{let[r]=e,[n]=t;return r.localeCompare(n)})),[S]),j=aD(m),I="string"==typeof j?h[j]:void 0,O=(0,a.useMemo)(()=>new am({type:"remote-execution",serverUrl:r}),[r]),{serverOnline:P,isUserOperating:R,deviceType:T,runtimeInfo:N,executionUxHints:M,refreshServerState:D}=function(e,t,r){let[n,i]=(0,a.useState)(!1),[o,s]=(0,a.useState)(!1),[A,l]=(0,a.useState)(t),[c,u]=(0,a.useState)(null),[d,p]=(0,a.useState)([]),h=(0,a.useRef)(null),f=(0,a.useRef)(!0);(0,a.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,a.useEffect)(()=>{h.current=c},[c]),(0,a.useEffect)(()=>{e.onProgressUpdate(e=>{s(!!e)})},[e]);let g=(0,a.useCallback)(()=>{var r;return(r=function*(){try{let a=yield e.checkStatus();if(!f.current)return;if(i(a),!a){h.current=null,u(null),p([]);return}try{let r=yield e.getRuntimeInfo();if(!f.current)return;if(r){h.current=r,u(r),l(eS(r,t)),p(eC(r));return}}catch(e){console.warn("Failed to get runtime info:",e)}try{var r,n,o;let i=yield e.getInterfaceInfo();if(!f.current||!(null==i?void 0:i.type))return;let a=(r=h.current,n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},r),o=o={interface:i,preview:(null==r?void 0:r.preview)||{kind:"none",capabilities:[]},executionUxHints:(null==r?void 0:r.executionUxHints)||[],metadata:(null==r?void 0:r.metadata)||{}},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n);h.current=a,u(a),l(eS(a,t)),p(eC(a))}catch(e){console.warn("Failed to get interface info:",e)}}catch(e){if(!f.current)return;console.error("Failed to check server status:",e),i(!1)}},function(){var e=this,t=arguments;return new Promise(function(n,i){var o=r.apply(e,t);function a(e){aw(o,n,i,a,s,"next",e)}function s(e){aw(o,n,i,a,s,"throw",e)}a(void 0)})})()},[t,e]);return(0,a.useEffect)(()=>{g();let e=window.setInterval(()=>{g()},r);return()=>{window.clearInterval(e)}},[r,g]),{serverOnline:n,isUserOperating:o,deviceType:A,runtimeInfo:c,executionUxHints:d,refreshServerState:g}}(O,n,i),B=(0,a.useMemo)(()=>{let e,t;return t=(e=(null==N?void 0:N.metadata)||{}).setupState,{connected:!!e.sessionConnected,displayName:"string"==typeof e.sessionDisplayName?e.sessionDisplayName:void 0,setupState:"blocked"===t||"ready"===t||"required"===t?t:"ready",setupBlockingReason:"string"==typeof e.setupBlockingReason?e.setupBlockingReason:void 0}},[N]),z=(0,a.useRef)(null),L=(0,a.useRef)(null),F=(0,a.useRef)(!0),K=(0,a.useRef)(void 0),U=(0,a.useRef)(null),Q=(0,a.useRef)(null),Z=(0,a.useRef)(!1),J=(0,a.useRef)(null),H=(0,a.useRef)(null),V=(0,a.useRef)(null),q=(0,a.useCallback)(()=>aN(function*(){if(!ak(S))return J.current=null,V.current=null,!0;if(J.current===C)return!0;let e=V.current;if((null==e?void 0:e.signature)===C)return e.promise;let t={promise:Promise.resolve(!0),signature:C},r=aN(function*(){try{var e;return yield(e=function*(){return!!ak(S)&&(yield O.overrideConfig(S),!0)},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){aE(o,n,i,a,s,"next",e)}function s(e){aE(o,n,i,a,s,"throw",e)}a(void 0)})})(),J.current=C,!0}catch(e){return G(e,{title:"Failed to apply AI configuration"}),!1}finally{V.current===t&&(V.current=null)}})();return t.promise=r,V.current=t,r})(),[S,C,O]),W=(0,a.useCallback)(()=>{let e=null!==z.current;null!==z.current&&(window.clearInterval(z.current),z.current=null);let t=L.current;L.current=null,F.current&&g(null),null==t||t(),e&&F.current&&(null==l||l())},[l]),Y=(0,a.useCallback)(()=>aN(function*(){if(!(s<=0))return W(),new Promise(e=>{L.current=e;let t=s;F.current&&g(t),z.current=window.setInterval(()=>{if((t-=1)>0){F.current&&g(t);return}if(0===t){F.current&&g("GO!");return}W()},1e3)})})(),[s,W]);(0,a.useEffect)(()=>(F.current=!0,()=>{F.current=!1,W()}),[W]),(0,a.useEffect)(()=>M.includes("countdown-before-run")?(O.setBeforeActionHook(()=>aN(function*(){yield Y()})()),()=>{O.setBeforeActionHook(void 0)}):void O.setBeforeActionHook(void 0),[M,O,Y]);let _=(0,a.useCallback)(e=>aN(function*(){let t=aM({},u.getFieldsValue(!0),e||{});E(!0);try{let r=yield O.getSessionSetup(e);y(r),b(null);let n=aD(r);K.current=n&&"string"==typeof t[n]?t[n]:void 0,u.setFieldsValue(av(r,t))}catch(e){console.error("Failed to load session setup:",e),b(e instanceof Error?e.message:"Failed to load session setup")}finally{E(!1)}})(),[u,O]),$=(0,a.useCallback)((e,t)=>aN(function*(){if(H.current)return H.current;let r=aN(function*(){var r;let n;try{if(Z.current=!0,x(!0),!(yield q()))return!1;let r=null!=e?e:yield u.validateFields();return n=r,yield O.createSession(r),(null==t?void 0:t.silent)||(Q.current=null),(null==t?void 0:t.silent)||c.success("Agent created"),yield D(),!0}catch(e){if(e.errorFields)return!1;if(null==t?void 0:t.silent)return Q.current=ax(n),!1;return G(e,null!=(r=function(e){let t;if(t=aI(e).toLowerCase(),aj.test(t)&&(t.includes("puppeteer browsers install chrome")||t.includes("cache path")||t.includes("puppeteer")))return{description:(0,o.jsx)(aR,{error:e}),duration:0,title:"Failed to create Agent"}}(e))?r:{title:"Failed to create Agent"}),!1}finally{Z.current=!1,x(!1)}})(),n={promise:null};return n.promise=r.finally(()=>{H.current===n.promise&&(H.current=null)}),H.current=n.promise,n.promise})(),[q,u,c,O,D]),ee=(0,a.useCallback)(()=>aN(function*(){try{Q.current=ax(ab(m,u.getFieldsValue(!0))),Z.current=!0,x(!0),yield O.destroySession(),c.success("Session disconnected"),yield D(),yield _()}catch(e){G(e,{title:"Failed to disconnect session"})}finally{Z.current=!1,x(!1)}})(),[u,c,O,D,_,m]);return(0,a.useEffect)(()=>{P&&q()},[q,P]),(0,a.useEffect)(()=>{if(!P||B.connected)return;let e=!1,t=!1,r=()=>aN(function*(){if(!e&&!t){t=!0;try{yield _(u.getFieldsValue(!0))}finally{t=!1}}})();r();let n=window.setInterval(()=>{r()},i);return()=>{e=!0,window.clearInterval(n)}},[u,i,_,P,B.connected]),(0,a.useEffect)(()=>{if(!P||B.connected||!I)return;let e=aD(m);if(e&&K.current!==I){var t,r;_((t=aM({},u.getFieldsValue(!0)),r=r={[e]:I},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))}},[u,_,I,P,m,B.connected]),(0,a.useEffect)(()=>{if(B.connected){U.current=null;return}if(!P||w||k||Z.current||v)return;let e=ab(m,u.getFieldsValue(!0)),{signature:t,shouldCreate:r}=function(e){let{autoCreateInput:t,lastAttemptedSignature:r,blockedSignature:n}=e,i=ax(t);return i?{signature:i,shouldCreate:i!==r&&i!==n}:{signature:null,shouldCreate:!1}}({autoCreateInput:e,lastAttemptedSignature:U.current,blockedSignature:Q.current});if(!r||!t){t||(U.current=null);return}U.current=t,aN(function*(){(yield $(null!=e?e:void 0,{silent:!0}))||(U.current=null)})()},[$,u,P,w,k,m,v,B.connected]),{state:{playgroundSDK:O,form:u,formValues:h,serverOnline:P,isUserOperating:R,deviceType:T,runtimeInfo:N,executionUxHints:M,sessionViewState:B,sessionSetup:m,sessionSetupError:v,sessionLoading:w,sessionMutating:k,countdown:f,countdownSeconds:s},actions:{refreshServerState:D,refreshSessionSetup:_,createSession:$,destroySession:ee,finishCountdown:W}}}({serverUrl:r,defaultDeviceType:s,countdownSeconds:null==c||null==(t=c.executionUx)?void 0:t.countdownSeconds,pollIntervalMs:h});return((0,a.useEffect)(()=>{let e=()=>{g(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),m.state.serverOnline)?(0,o.jsx)(eT,{children:(0,o.jsx)(Y.A,{className:"app-container playground-container",children:(0,o.jsx)(ly,{className:"app-content",children:(0,o.jsxs)(_.YZ,{autoSaveId:"playground-layout",direction:f?"vertical":"horizontal",children:[(0,o.jsx)(_.Zk,{defaultSize:f?67:32,maxSize:f?85:60,minSize:f?67:25,className:"app-panel left-panel",children:(0,o.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,o.jsx)("div",{className:"playground-panel-header",children:(0,o.jsxs)("div",{className:"header-row",children:[(0,o.jsx)(A,{}),(0,o.jsx)(W,{showTooltipWhenEmpty:!1,showModelName:!1,playgroundSDK:m.state.playgroundSDK})]})}),(0,o.jsx)("div",{className:"playground-panel-playground",children:(0,o.jsx)(lm,{controller:m,appVersion:n,branding:l,playgroundConfig:c,title:i})})]})}),(0,o.jsx)(_.TW,{className:"panel-resize-handle"}),(0,o.jsx)(_.Zk,{defaultSize:f?33:68,minSize:f?15:40,className:"app-panel right-panel",children:(0,o.jsx)("div",{className:"panel-content right-panel-content",children:m.state.sessionViewState.connected?(0,o.jsx)(eP,{playgroundSDK:m.state.playgroundSDK,runtimeInfo:m.state.runtimeInfo,serverUrl:r,serverOnline:m.state.serverOnline,isUserOperating:m.state.isUserOperating}):(0,o.jsx)(ee,{})})})]})})})}):(0,o.jsx)(eT,{children:(0,o.jsx)("div",{className:"server-offline-container",children:(0,o.jsxs)("div",{className:"server-offline-message",children:[(0,o.jsx)(A,{}),(0,o.jsxs)("div",{className:"server-offline-content",children:[(0,o.jsxs)("div",{className:"server-offline-icon",children:[(0,o.jsx)(aB,{className:"icon-background"}),(0,o.jsx)(az,{className:"icon-foreground"})]}),(0,o.jsx)("h1",{children:u}),(0,o.jsx)("p",{className:"connection-status",children:d})]})]})})})}let lb=document.getElementById("root");if(!lb)throw Error("Root element not found");(0,s.createRoot)(lb).render((0,o.jsx)(a.StrictMode,{children:(0,o.jsx)(function(){return(0,o.jsx)(lv,{serverUrl:"",appVersion:"1.10.1",title:"Playground",offlineTitle:"Midscene Playground"})},{})}))},1182(){},3198(e,t,r){"use strict";r.d(t,{ZH:()=>d});var n=r(3244),i=r(5207),o=r(3078),a=r.n(o),s=r(217),A=r(6987),l=r(9152),c=r(5409);let u="midscene_run",d=e=>{if(!l.$9)return"";let t=(()=>{if(!l.$9)return"";let e=a().resolve(c.cwd(),l.$9?(0,s.j)(A.Tr)||u:"");if(!(0,n.existsSync)(e))try{(0,n.mkdirSync)(e,{recursive:!0})}catch(t){e=a().join((0,i.tmpdir)(),u),(0,n.mkdirSync)(e,{recursive:!0})}return e})(),r=a().join(t,e);return(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0}),r}},217(e,t,r){"use strict";r.d(t,{j:()=>o});var n=r(6987),i=r(5409);let o=e=>{if(!n.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return i.env[e]}},6987(e,t,r){"use strict";r.d(t,{$:()=>C,$H:()=>h,$L:()=>c,$l:()=>s,AU:()=>w,CA:()=>S,Cn:()=>el,DL:()=>ev,El:()=>B,FU:()=>d,G0:()=>i,HR:()=>o,I2:()=>n,IQ:()=>p,JM:()=>I,Jq:()=>E,Km:()=>m,Lg:()=>ew,Lh:()=>J,M1:()=>b,NF:()=>P,OK:()=>eo,OY:()=>ed,Od:()=>j,Pm:()=>H,Sk:()=>N,T4:()=>U,TN:()=>L,Tr:()=>F,UH:()=>eC,V7:()=>V,VM:()=>v,Vb:()=>ep,W4:()=>g,WH:()=>es,Wh:()=>em,XE:()=>eE,YK:()=>z,Yf:()=>Q,Yg:()=>G,Z$:()=>eA,Z7:()=>X,ZX:()=>l,_j:()=>ex,_q:()=>K,aK:()=>y,aO:()=>ef,ag:()=>ea,b6:()=>x,c$:()=>ey,d8:()=>D,fS:()=>ee,ho:()=>M,iw:()=>u,jG:()=>k,j_:()=>T,kX:()=>Z,mZ:()=>er,n0:()=>A,nc:()=>$,pp:()=>R,rd:()=>eb,sg:()=>ec,tk:()=>ek,u1:()=>eh,v:()=>Y,v4:()=>a,vC:()=>q,wu:()=>eu,xP:()=>et,xg:()=>W,y2:()=>_,yR:()=>eg,yb:()=>O,zD:()=>f,zG:()=>ei,zQ:()=>en});let n="MIDSCENE_MODEL_INIT_CONFIG_JSON",i="MIDSCENE_MODEL_EXTRA_BODY_JSON",o="MIDSCENE_MODEL_NAME",a="MIDSCENE_DEBUG_MODEL_PROFILE",s="MIDSCENE_DEBUG_MODEL_RESPONSE",A="MIDSCENE_DEBUG_MODE",l="MIDSCENE_LANGSMITH_DEBUG",c="MIDSCENE_LANGFUSE_DEBUG",u="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",p="MIDSCENE_MODEL_API_KEY",h="MIDSCENE_MODEL_BASE_URL",f="MIDSCENE_MODEL_TIMEOUT",g="MIDSCENE_MODEL_TEMPERATURE",m="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",v="MIDSCENE_MODEL_REASONING_EFFORT",b="MIDSCENE_MODEL_REASONING_ENABLED",w="MIDSCENE_MODEL_REASONING_BUDGET",E="OPENAI_API_KEY",k="OPENAI_BASE_URL",x="MIDSCENE_OPENAI_INIT_CONFIG_JSON",S="MIDSCENE_OPENAI_HTTP_PROXY",C="MIDSCENE_OPENAI_SOCKS_PROXY",j="MIDSCENE_CACHE",I="MIDSCENE_USE_VLM_UI_TARS",O="MIDSCENE_USE_QWEN_VL",P="MIDSCENE_USE_QWEN3_VL",R="MIDSCENE_USE_DOUBAO_VISION",T="MIDSCENE_USE_GEMINI",N="MATCH_BY_POSITION",M="MIDSCENE_REPORT_TAG_NAME",D="MIDSCENE_REPORT_QUIET",B="MIDSCENE_PREFERRED_LANGUAGE",z="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",L="MIDSCENE_REPLANNING_CYCLE_LIMIT",F="MIDSCENE_RUN_DIR",K="MIDSCENE_INSIGHT_MODEL_NAME",U="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",Q="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",Z="MIDSCENE_INSIGHT_MODEL_BASE_URL",J="MIDSCENE_INSIGHT_MODEL_API_KEY",X="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",H="MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON",G="MIDSCENE_INSIGHT_MODEL_TIMEOUT",V="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",q="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",W="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",Y="MIDSCENE_INSIGHT_MODEL_FAMILY",_="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",$="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",ee="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",et="MIDSCENE_PLANNING_MODEL_NAME",er="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",en="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",ei="MIDSCENE_PLANNING_MODEL_BASE_URL",eo="MIDSCENE_PLANNING_MODEL_API_KEY",ea="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",es="MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON",eA="MIDSCENE_PLANNING_MODEL_TIMEOUT",el="MIDSCENE_PLANNING_MODEL_TEMPERATURE",ec="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",eu="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",ed="MIDSCENE_PLANNING_MODEL_FAMILY",ep="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",eh="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",ef="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",eg="MIDSCENE_MODEL_FAMILY",em=[A,a,s,F],ey=[j,l,c,D],ev=[z,L],eb=["MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",M,B,N,"MIDSCENE_CHROME_PATH","MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],ew=[...ey,...ev,...eb],eE=[o,n,i,p,h,u,d,f,g,m,y,v,b,w,I,O,P,R,T,"MIDSCENE_USE_VL_MODEL",E,k,x,S,C,K,U,Q,Z,J,X,H,G,V,q,W,Y,_,$,ee,et,er,en,ei,eo,ea,es,eA,el,ec,eu,ed,ep,eh,ef,eg],ek=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...em,...ew,...eE],ex=["doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3","qwen3.5","qwen3.6","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5","kimi","xiaomi-mimo"];var eS,eC=((eS={}).V1_0="1.0",eS.V1_5="1.5",eS.DOUBAO_1_5_15B="doubao-1.5-15B",eS.DOUBAO_1_5_20B="doubao-1.5-20B",eS)},4565(e,t,r){"use strict";r.d(t,{N:()=>g,a:()=>function e(t,r){let n=`${p}:${t}`,o=(null==r?void 0:r.console)??!1,s=o?`${n}:withConsole`:n;if(!f.has(s))if(o){let r=e(t);f.set(s,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r(...t);try{console.warn("[Midscene]",...t)}catch{}})}else{let e=c()(n);f.set(s,function(){for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];d.$9&&function(e,t){if(!d.$9)return;let r=function(e){let t=e.replace(/:/g,"-");if(!h.has(t)){let e=a().join((0,u.ZH)("log"),`${t}.log`),r=i().createWriteStream(e,{flags:"a"});h.set(t,r)}return h.get(t)}(e),n=new Date,o=n.toLocaleDateString("sv-SE"),s=n.toLocaleTimeString("sv-SE"),A=n.getMilliseconds().toString().padStart(3,"0"),l=n.getTimezoneOffset(),c=Math.floor(Math.abs(l)/60).toString().padStart(2,"0"),p=(Math.abs(l)%60).toString().padStart(2,"0"),f=`${l<=0?"+":"-"}${c}:${p}`,g=`${o}T${s}.${A}${f}`;r.write(`[${g}] ${t}
|
|
953
|
+
`,loading:!1,result:void 0,replayScriptsInfo:null,replayCounter:0,loadingProgressText:"",verticalMode:!1}};aV();let aq={result:void 0,dump:null,reportHTML:null,error:null},aW="data:image/png;base64,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",aY="data:image/png;base64,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";function a_(e){return"object"==typeof e&&null!==e}let a$=e=>{let t=Math.round(e.center[0]),r=Math.round(e.center[1]),n=Math.ceil(4)-1;return{left:Math.max(t-n,0),top:Math.max(r-n,0),width:8,height:8}};function a0(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let a1=(e,t,r)=>{let n,i=(n=e.width/e.height>=t/r?e.width:e.height/r*t)>400?.1:n>50?.2:.3,o=Math.min(t,n+t*i*2),a=Math.min(e.left-t*i,t-o);a=Math.max(a,0);let s=Math.min(e.top-r*i,r-r/t*o);return{left:Math.round(a),top:Math.round(s=Math.max(s,0)),width:Math.round(o)}},a2=(e,t)=>a1({left:0,top:0,width:e,height:t},e,t),a3=(e,t,r)=>{var n;let i=null==e||null==(n=e.uiContext)?void 0:n.shotSize;return{width:(null==i?void 0:i.width)||t,height:(null==i?void 0:i.height)||r}},a5=e=>e.map((e,t)=>({execution:e,index:t})).sort((e,t)=>(Number.isFinite(e.execution.logTime)?e.execution.logTime:1/0)-(Number.isFinite(t.execution.logTime)?t.execution.logTime:1/0)||e.index-t.index).map(e=>{let{execution:t}=e;return t}),a7=e=>{var t,r;let n,i,o,a,s=e?Array.isArray(e.executions)?e:{sdkVersion:"",groupName:"Execution",modelBriefs:[],executions:[e]}:null;if(!s)return console.warn("[allScriptsFromDump] dump is empty"),{scripts:[],modelBriefs:[]};let A=(o=s.sdkVersion,a=[],(a5((null==(r=s.executions)?void 0:r.filter(Boolean))||[]).forEach(e=>{e.tasks.forEach(e=>{var t,r;let o=null==(t=e.uiContext)?void 0:t.shotSize;if(o){let e=o.width,t=o.height;n||(n=e,i=t)}if(e.usage){let{model_name:t,model_description:n,intent:i}=e.usage;r={intent:i,name:t,modelDescription:n},a.some(e=>e.intent===r.intent&&e.name===r.name&&e.modelDescription===r.modelDescription)||a.push(r)}})}),n&&i)?{width:n,height:i,sdkVersion:o,modelBriefs:a,deviceType:s.deviceType}:(console.warn("width or height is missing in dump file"),null));if(!A)return{scripts:[],sdkVersion:s.sdkVersion,modelBriefs:[]};let{width:l,height:c}=A,u=[],d=a5((null==(t=s.executions)?void 0:t.filter(Boolean))||[]);for(let e=0;e<d.length;e++){let t=a4(d[e],-1,l,c,e);t&&u.push(...t)}return{scripts:u.filter((e,t)=>t===u.length-1||"Done"!==e.title),width:l,height:c,sdkVersion:A.sdkVersion,modelBriefs:A.modelBriefs,deviceType:A.deviceType}},a4=function(e,t,r,n){let i,o;if(arguments.length>4&&void 0!==arguments[4]&&arguments[4],!e||!e.tasks.length||0===r||0===n)return null;let a=[];if(-1===t)a=e.tasks;else{let r=e.tasks.findIndex(e=>e===t);if(-1===r)return console.error("task not found, cannot generate animation scripts"),null;if(r===e.tasks.length-1)return null;for(let t=r;t<e.tasks.length&&(!(t>r)||"Planning"!==e.tasks[t].type||"Plan"!==e.tasks[t].subType);t++)a.push(e.tasks[t])}if(0===a.length)return null;let s=(e,t)=>{if(!t)return e;let r=a0({},e),n=null;return Object.defineProperty(r,"img",{get:()=>(null===n&&(n=t.base64),n),enumerable:!0}),r},A=[],l=!1,c="";a.forEach((e,t)=>{var u,d,p,h,f,g,m,y,v,b;let w=null==(b=a[t])?void 0:b.taskId;if(o=w,0===t&&(c=at(e)),"Planning"===e.type){let t=[];if("Plan"===e.subType){let r=(null==(d=e.output)?void 0:d.actions)||[];if(r.length>0){let e=r[0],n=["locate","start","end"];if(e.param)for(let r in n.forEach(r=>{e.param[r]&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}),e.param)!n.includes(r)&&"object"==typeof e.param[r]&&"center"in(e.param[r]||{})&&t.push(e.param[r])}}else"Locate"===e.subType&&(null==(u=e.output)?void 0:u.element)&&(t=[e.output.element]);let o=o8(e),a=at(e),c=e.uiContext,h=null==c?void 0:c.screenshot;if(c&&h){let{width:u,height:d}=a3(e,r,n);A.push(s({type:"img",duration:300,title:o,subTitle:a,imageWidth:u,imageHeight:d,taskId:w},h)),t.forEach(t=>{var r,n,p,f,g,m,y;let v,b=(r=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},t),n=n={center:[Math.round(t.center[0]),Math.round(t.center[1])],rect:a$(t)},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r);p=a0({},a1(a$(b),u,d)),f=f={pointerLeft:b.center[0],pointerTop:b.center[1]},Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(f)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(f)).forEach(function(e){Object.defineProperty(p,e,Object.getOwnPropertyDescriptor(f,e))}),i=p,A.push(s({type:"insight",context:c,camera:i,highlightElement:b,searchArea:(null==e?void 0:e.searchArea)??(null==(m=a_(v=null==e?void 0:e.log)&&a_(y=v.dump)&&"string"==typeof y.type&&a_(y.taskInfo)?v.dump:null)||null==(g=m.taskInfo)?void 0:g.searchArea),duration:400,insightCameraDuration:800,title:o,subTitle:b.description||a,imageWidth:u,imageHeight:d,taskId:w},h)),l=!0})}if(e.recorder&&e.recorder.length>0){let t=null==(p=e.recorder[0])?void 0:p.screenshot,{width:i,height:o}=a3(e,r,n);A.push(s({type:"img",duration:900,title:o8(e),subTitle:at(e),imageWidth:i,imageHeight:o,taskId:w},t))}}else if("Action Space"===e.type){let t=o8(e),i=at(e);A.push({type:"spinning-pointer",duration:300,title:t,subTitle:i,taskId:w}),l&&(A.push({type:"clear-insight",duration:200,title:t,subTitle:i,taskId:w}),l=!1),A.push({type:"pointer",img:aW,duration:0,title:t,subTitle:i,taskId:w});let o=null==(f=e.recorder)||null==(h=f[0])?void 0:h.screenshot,{width:a,height:c}=a3(e,r,n);A.push(s({type:"img",duration:500,camera:"Sleep"===e.subType?a2(a,c):void 0,title:t,subTitle:i,imageWidth:a,imageHeight:c,taskId:w},o))}else{let t=o8(e),i=at(e),o=null==(m=e.recorder)||null==(g=m[e.recorder.length-1])?void 0:g.screenshot;if(o){let{width:a,height:l}=a3(e,r,n);A.push(s({type:"img",duration:900,camera:a2(a,l),title:t,subTitle:i,imageWidth:a,imageHeight:l,taskId:w},o))}}if("finished"!==e.status){let t=o8(e),i=e.errorMessage||"unknown error",o=i.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":i,a=null==(v=e.recorder)||null==(y=v[e.recorder.length-1])?void 0:y.screenshot,{width:l,height:c}=a3(e,r,n);A.push(s({type:"img",camera:a2(l,c),duration:900,title:t,subTitle:o,imageWidth:l,imageHeight:c,taskId:w},a))}}),l&&(A.push({type:"clear-insight",duration:200,title:"",subTitle:"",taskId:o}),l=!1);let u=a.length>0?a3(a[a.length-1],r,n):{width:r,height:n};return A.push({title:"End",subTitle:c,type:"img",duration:200,camera:a2(u.width,u.height),taskId:void 0}),A};function a8(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function a6(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){a8(o,n,i,a,s,"next",e)}function s(e){a8(o,n,i,a,s,"throw",e)}a(void 0)})}}function a9(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function se(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function st(e){var t;if(!e)return"";if("string"==typeof e)return e;if(null==e||null==(t=e.dump)?void 0:t.error)return e.dump.error;if(e.message)return String(e.message);try{return JSON.stringify(e)}catch(t){return String(e)}}function sr(e,t){return e?Array.isArray(null==e?void 0:e.executions)?a7(e):e.tasks&&Array.isArray(e.tasks)?a7({sdkVersion:"",groupName:"Playground Execution",modelBriefs:[],executions:[e],deviceType:t}):null:null}function sn(e){return"aiAct"===e||"runMarkdown"===e}function si(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class so{initDB(){return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.version);r.onerror=()=>t(r.error),r.onsuccess=()=>e(r.result),r.onupgradeneeded=e=>{let t=e.target.result;this.storeConfigs.forEach(e=>{let{name:r,keyPath:n}=e;t.objectStoreNames.contains(r)||t.createObjectStore(r,{keyPath:n}).createIndex("timestamp","timestamp",{unique:!1})})}})}async withTransaction(e,t,r){let n=(await this.dbPromise).transaction(e,t);return r(Array.isArray(e)?e.map(e=>n.objectStore(e)):n.objectStore(e))}promisifyRequest(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}async put(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.put(t))})}async get(e,t){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.get(t)))}async getAll(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return this.withTransaction(e,"readonly",async e=>{let r=t?await this.promisifyRequest(e.index("timestamp").getAll()):await this.promisifyRequest(e.getAll());return t?r.sort((e,t)=>e.timestamp-t.timestamp):r})}async clear(e){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.clear())})}async delete(e,t){await this.withTransaction(e,"readwrite",async e=>{await this.promisifyRequest(e.delete(t))})}async count(e){return this.withTransaction(e,"readonly",async e=>this.promisifyRequest(e.count()))}getDBPromise(){return this.dbPromise}constructor(e,t,r){si(this,"dbPromise",void 0),si(this,"dbName",void 0),si(this,"version",void 0),si(this,"storeConfigs",void 0),this.dbName=e,this.version=t,this.storeConfigs=r,this.dbPromise=this.initDB()}}let sa=async(e,t,r,n)=>{try{return await e()}catch(e){return console.error(t,e),e instanceof Error&&"QuotaExceededError"===e.name&&n&&(console.log("Storage quota exceeded, running cleanup..."),await n()),r}},ss=(e,t,r)=>async()=>{try{let n=await e.getAll(t);if(n.length>r){let i=n.sort((e,t)=>e.timestamp-t.timestamp).slice(0,n.length-r);await Promise.all(i.map(r=>e.delete(t,r.id)))}}catch(e){console.error(`Failed to cleanup ${t}:`,e)}};function sA(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sl(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){sA(o,n,i,a,s,"next",e)}function s(e){sA(o,n,i,a,s,"throw",e)}a(void 0)})}}function sc(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function su(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){sc(e,t,r[t])})}return e}function sd(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let sp="playground_messages",sh="playground_results";class sf{saveMessages(e){return sl(function*(){yield sa(()=>sl(function*(){yield this.dbManager.clear(sp);let t=e.slice(-100);yield Promise.all(t.map((e,t)=>{let r=sd(su({},e),{result:"result"===e.type?void 0:e.result}),n={id:e.id||`msg-${t}`,data:r,timestamp:e.timestamp?e.timestamp.getTime():Date.now()+t};return this.dbManager.put(sp,n)}))}).call(this),"Failed to save messages to IndexedDB",void 0,this.messagesCleanup)}).call(this)}loadMessages(){return sl(function*(){return(yield sa(()=>sl(function*(){let e=yield this.dbManager.getAll(sp,!0);return 0===e.length?[]:Promise.all(e.map(e=>sl(function*(){let t=e.data,r=sd(su({},t),{timestamp:new Date(t.timestamp)});if("result"===t.type&&t.id){let e=yield this.loadResult(t.id);e&&(r.result=e.result,r.replayScriptsInfo=e.replayScriptsInfo,r.replayCounter=e.replayCounter,r.verticalMode=e.verticalMode)}return r}).call(this)))}).call(this),"Failed to load messages from IndexedDB",[],this.messagesCleanup))||[]}).call(this)}clearMessages(){return sl(function*(){yield sa(()=>sl(function*(){yield Promise.all([this.dbManager.clear(sp),this.dbManager.clear(sh)])}).call(this),"Failed to clear messages from IndexedDB")}).call(this)}saveResult(e,t){return sl(function*(){yield sa(()=>sl(function*(){let r=this.compressResultForStorage(t),n={id:e,data:r,timestamp:Date.now(),size:JSON.stringify(r).length};yield this.dbManager.put(sh,n)}).call(this),"Failed to save result to IndexedDB",void 0,this.resultsCleanup)}).call(this)}loadResult(e){return sl(function*(){return(yield sa(()=>sl(function*(){let t=yield this.dbManager.get(sh,e);return(null==t?void 0:t.data)||null}).call(this),"Failed to load result from IndexedDB",null))||null}).call(this)}compressResultForStorage(e){let t=e.result,r=null==t?void 0:t.dump;return t&&r?Array.isArray(null==r?void 0:r.executions)?sd(su({},e),{result:sd(su({},t),{dump:sd(su({},r),{executions:r.executions.map(e=>sd(su({},e),{tasks:this.compressExecutionTasks(e.tasks)}))})})}):r.tasks?sd(su({},e),{result:sd(su({},t),{dump:sd(su({},r),{tasks:this.compressExecutionTasks(r.tasks)})})}):e:e}compressExecutionTasks(e){return e.map(e=>{var t;return sd(su({},e),{uiContext:e.uiContext?sd(su({},e.uiContext),{screenshot:e.uiContext.screenshot}):e.uiContext,recorder:null==(t=e.recorder)?void 0:t.map(e=>sd(su({},e),{screenshot:e.screenshot}))})})}compressScreenshotIfNeeded(e){if(!e)return e;if(e.length>1048576){let t=Math.round(e.length/1024);return`[COMPRESSED: ${t}KB screenshot removed for storage]`}return e}getStorageStats(){return sl(function*(){return(yield sa(()=>sl(function*(){let[e,t]=yield Promise.all([this.dbManager.count(sp),this.dbManager.count(sh)]);return{messageCount:e,resultCount:t}}).call(this),"Failed to get storage statistics",{messageCount:0,resultCount:0}))||{messageCount:0,resultCount:0}}).call(this)}cleanup(){return sl(function*(){yield Promise.all([this.messagesCleanup(),this.resultsCleanup()])}).call(this)}constructor(e="playground"){sc(this,"dbManager",void 0),sc(this,"namespace",void 0),sc(this,"messagesCleanup",void 0),sc(this,"resultsCleanup",void 0),this.namespace=e,this.dbManager=new so(`midscene_playground_${e}`,1,[{name:sp,keyPath:"id"},{name:sh,keyPath:"id"}]),this.messagesCleanup=ss(this.dbManager,sp,100),this.resultsCleanup=ss(this.dbManager,sh,50)}}function sg(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sm(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){sg(o,n,i,a,s,"next",e)}function s(e){sg(o,n,i,a,s,"throw",e)}a(void 0)})}}function sy(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function sv(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){sy(e,t,r[t])})}return e}function sb(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}class sw{checkStorageSpace(){try{let e="storage-test",t="x".repeat(102400);return localStorage.setItem(e,t),localStorage.removeItem(e),!0}catch(e){return!1}}saveMessages(e){return sm(function*(){try{this.checkStorageSpace()||(console.warn("Low storage space detected, clearing old data..."),yield this.handleQuotaExceeded());let t=e.slice(-this.maxStorageItems).map(e=>sb(sv({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r)}catch(t){if(t instanceof DOMException&&"QuotaExceededError"===t.name){console.warn("LocalStorage quota exceeded, attempting to clear old data and retry..."),yield this.handleQuotaExceeded();try{let t=e.slice(-10).map(e=>sb(sv({},e),{result:"result"===e.type?void 0:e.result})),r=JSON.stringify(t);localStorage.setItem(this.messagesKey,r),console.info("Successfully saved recent messages after clearing storage")}catch(e){console.error("Failed to save even after clearing storage:",e),yield this.clearMessages()}}else console.error("Failed to save messages to localStorage:",t)}}).call(this)}loadMessages(){return sm(function*(){try{let e=localStorage.getItem(this.messagesKey);if(!e)return[];let t=JSON.parse(e);return yield Promise.all(t.map(e=>sm(function*(){if("result"===e.type&&e.id){let t=`${this.resultsKey}-${e.id}`,r=localStorage.getItem(t);if(r)try{let t=JSON.parse(r);return sv({},e,t)}catch(e){console.warn("Failed to parse stored result:",e)}}return e}).call(this)))}catch(e){return console.error("Failed to load messages from localStorage:",e),[]}}).call(this)}clearMessages(){return sm(function*(){try{localStorage.removeItem(this.messagesKey),Object.keys(localStorage).forEach(e=>{e.startsWith(this.resultsKey)&&localStorage.removeItem(e)})}catch(e){console.error("Failed to clear messages from localStorage:",e)}}).call(this)}saveResult(e,t){return sm(function*(){try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(r){if(r instanceof DOMException&&"QuotaExceededError"===r.name){console.warn("LocalStorage quota exceeded when saving result, clearing old results..."),yield this.handleQuotaExceeded();try{let r=`${this.resultsKey}-${e}`;localStorage.setItem(r,JSON.stringify(t))}catch(e){console.error("Failed to save result even after clearing storage:",e)}}else console.error("Failed to save result to localStorage:",r)}}).call(this)}handleQuotaExceeded(){return sm(function*(){try{let e=Object.keys(localStorage),t=e.filter(e=>e.startsWith(this.resultsKey)),r=t.slice(0,Math.max(1,Math.floor(t.length/2)));r.forEach(e=>{localStorage.removeItem(e)}),console.info(`Cleared ${r.length} old result entries to free up storage space`);let n=e.filter(e=>e.includes("playground")||e.includes("agent")||e.startsWith("midscene"));if(n.length>10){let e=n.slice(0,Math.floor(n.length/3));e.forEach(e=>{e!==this.messagesKey&&localStorage.removeItem(e)}),console.info(`Cleared ${e.length} additional playground-related entries`)}}catch(e){console.error("Failed to handle quota exceeded:",e)}}).call(this)}constructor(e="playground"){sy(this,"messagesKey",void 0),sy(this,"resultsKey",void 0),sy(this,"maxStorageItems",50),this.messagesKey=`${e}-messages`,this.resultsKey=`${e}-results`}}class sE{saveMessages(e){return sm(function*(){this.messages=[...e]}).call(this)}loadMessages(){return sm(function*(){return[...this.messages]}).call(this)}clearMessages(){return sm(function*(){this.messages=[],this.results.clear()}).call(this)}saveResult(e,t){return sm(function*(){this.results.set(e,t)}).call(this)}constructor(){sy(this,"messages",[]),sy(this,"results",new Map)}}class sk{saveMessages(e){return sm(function*(){})()}loadMessages(){return sm(function*(){return[]})()}clearMessages(){return sm(function*(){})()}saveResult(e,t){return sm(function*(){})()}}function sx(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"indexeddb",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"playground";switch(e){case"indexeddb":if("undefined"!=typeof indexedDB)return new sf(t);return console.warn("IndexedDB not available, falling back to localStorage"),sx("localStorage",t);case"localStorage":if("undefined"!=typeof localStorage)return new sw(t);return console.warn("localStorage not available, falling back to memory storage"),sx("memory",t);case"memory":return new sE;case"none":return new sk;default:throw Error(`Unknown storage type: ${e}`)}}function sS(){if("undefined"!=typeof indexedDB)try{return indexedDB.open("test",1).onerror=()=>{},"indexeddb"}catch(e){}if("undefined"!=typeof localStorage)try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),"localStorage"}catch(e){}return"memory"}function sC(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function sj(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){sC(o,n,i,a,s,"next",e)}function s(e){sC(o,n,i,a,s,"throw",e)}a(void 0)})}}function sI(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function sO(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}let sP=e=>{var t;let r=e.highlightElements||[],n=e.highlightRect,i=null==(t=e.uiContext)?void 0:t.shotSize;if(!i)return(0,o.jsx)("div",{className:"blackboard",children:(0,o.jsx)("div",{className:"blackboard-main-content",style:{padding:"20px"},children:"No UI context available"})});let s=e.uiContext,A=i.width,l=i.height,c=a.useMemo(()=>(function(e){if(!(null==e?void 0:e.length))return[];let t=new Map;return e.forEach((e,r)=>{var n,i;if(!(null==e?void 0:e.rect)||!(null==e?void 0:e.center))return;let o="content"in e&&e.content?e.content:"description"in e&&e.description?e.description:void 0,a=["id"in e?e.id:"",o||"",(n=e.center,`${n[0]}:${n[1]}`),(i=e.rect,`${i.left}:${i.top}:${i.width}:${i.height}`)].join("|");t.has(a)||t.set(a,{key:"id"in e&&e.id||`${a||"highlight"}-${r}`,label:o,center:e.center,rect:e.rect})}),Array.from(t.values())})(r),[r]),u=a.useMemo(()=>{var e;return(null==s||null==(e=s.screenshot)?void 0:e.base64)||""},[s]),d=c.map(e=>a$(e)),p=null;return 1===d.length?p=(0,o.jsx)("div",{className:"bottom-tip",children:(0,o.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d[0])]})}):d.length>1&&(p=(0,o.jsx)("div",{className:"bottom-tip",children:(0,o.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(d)]})})),(0,o.jsxs)("div",{className:"blackboard",children:[(0,o.jsxs)("div",{className:"blackboard-main-content",style:{width:"fit-content",maxWidth:"100%",position:"relative"},children:[u&&(0,o.jsx)("img",{src:u,alt:"screenshot",className:"blackboard-screenshot",draggable:!1}),(0,o.jsxs)("div",{className:"blackboard-overlay",style:{aspectRatio:`${A}/${l}`,"--ui-scale":Math.max(1,Math.sqrt(A/1920))},children:[n&&(0,o.jsx)("div",{className:"blackboard-rect blackboard-rect-search",style:{left:`${n.left/A*100}%`,top:`${n.top/l*100}%`,width:`${n.width/A*100}%`,height:`${n.height/l*100}%`},children:(0,o.jsx)("span",{className:"blackboard-rect-label",children:"Search Area"})}),c.map(e=>{let t=a$(e);return(0,o.jsx)("div",{className:"blackboard-rect blackboard-rect-highlight",style:{left:`${t.left/A*100}%`,top:`${t.top/l*100}%`,width:`${t.width/A*100}%`,height:`${t.height/l*100}%`}},`${e.key}-rect`)})]})]}),(0,o.jsx)("div",{className:"bottom-tip",style:{display:e.hideController?"none":"block"},children:p})]})};var sR=r(9783),sT=r(7294),sN=r(4985),sM=r(1090),sD=r(2946),sB=r(90),sz=r(3776);let sL=e=>{let{text:t,disabled:r=!1,speed:n=5,className:i="",colorTheme:a="blue"}=e,s={"--animation-duration":`${n}s`},A=`theme-${a}`;return(0,o.jsx)("div",{className:`shiny-text ${A} ${r?"disabled":""} ${i}`,style:s,children:t})},sF=(0,o.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,o.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,o.jsx)("br",{}),"a. ",(0,o.jsx)("strong",{children:"npx midscene-playground"}),(0,o.jsx)("br",{}),"b. ",(0,o.jsx)("strong",{children:"npx --yes @midscene/web"})]}),sK=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:sF;return(0,o.jsx)("div",{className:"server-tip",children:(0,o.jsx)(y.A,{message:"Playground Server Not Ready",description:e,type:"warning"})})},sU=(0,o.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,o.jsx)(sL,{disabled:!0,text:"The result will be shown here"})});var sQ=JSON.parse('{"content":[{"content":"Swag Labs","rect":{"left":895,"top":38,"width":130,"height":32,"zoom":1},"center":[960,54],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"d6c5e2f100","attributes":{"nodeType":"TEXT Node"},"indexId":0},{"content":"Username","rect":{"left":814,"top":154,"width":292,"height":40,"zoom":1},"center":[960,174],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'a9021f480e\']","id":"a9021f480e","attributes":{"class":".input_error.form_input","placeholder":"Username","type":"text","data-test":"username","id":"user-name","name":"user-name","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":1},{"content":"Password","rect":{"left":814,"top":209,"width":292,"height":40,"zoom":1},"center":[960,229],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'580f3b761d\']","id":"580f3b761d","attributes":{"class":".input_error.form_input","placeholder":"Password","type":"password","data-test":"password","id":"password","name":"password","autocorrect":"off","autocapitalize":"none","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":2},{"content":"","rect":{"left":814,"top":253,"width":292,"height":45,"zoom":1},"center":[960,275],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'3e1faf0fd6\']","id":"3e1faf0fd6","attributes":{"class":".error-message-container","nodeType":"CONTAINER Node"},"indexId":3},{"content":"Login","rect":{"left":814,"top":303,"width":292,"height":49,"zoom":1},"center":[960,327],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"[_midscene_retrieve_task_id=\'6db0b64062\']","id":"6db0b64062","attributes":{"type":"submit","class":".submit-button.btn_action","data-test":"login-button","id":"login-button","name":"login-button","value":"Login","htmlTagName":"<input>","nodeType":"FORM_ITEM Node"},"indexId":4},{"content":"Accepted usernames are:","rect":{"left":570,"top":435,"width":221,"height":21,"zoom":1},"center":[680,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"5ca36a5942","attributes":{"nodeType":"TEXT Node"},"indexId":5},{"content":"standard_user","rect":{"left":570,"top":479,"width":109,"height":19,"zoom":1},"center":[624,488],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"fd2fe54174","attributes":{"nodeType":"TEXT Node"},"indexId":6},{"content":"locked_out_user","rect":{"left":570,"top":503,"width":126,"height":19,"zoom":1},"center":[633,512],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"403daee75b","attributes":{"nodeType":"TEXT Node"},"indexId":7},{"content":"problem_user","rect":{"left":570,"top":527,"width":101,"height":19,"zoom":1},"center":[620,536],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"2b34f1e161","attributes":{"nodeType":"TEXT Node"},"indexId":8},{"content":"performance_glitch_user","rect":{"left":570,"top":551,"width":193,"height":19,"zoom":1},"center":[666,560],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"6ae63a4d9e","attributes":{"nodeType":"TEXT Node"},"indexId":9},{"content":"error_user","rect":{"left":570,"top":575,"width":84,"height":19,"zoom":1},"center":[612,584],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"76030282f1","attributes":{"nodeType":"TEXT Node"},"indexId":10},{"content":"visual_user","rect":{"left":570,"top":599,"width":92,"height":19,"zoom":1},"center":[616,608],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"f34b057726","attributes":{"nodeType":"TEXT Node"},"indexId":11},{"content":"Password for all users:","rect":{"left":960,"top":435,"width":221,"height":21,"zoom":1},"center":[1070,445],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"e693f608cd","attributes":{"nodeType":"TEXT Node"},"indexId":12},{"content":"secret_sauce","rect":{"left":960,"top":477,"width":101,"height":19,"zoom":1},"center":[1010,486],"page":{"page":{"_isDragging":false,"_timeoutSettings":{}},"pageType":"puppeteer"},"locator":"","id":"cde9de9828","attributes":{"nodeType":"TEXT Node"},"indexId":13}],"size":{"width":1920,"height":1080},"screenshotBase64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAIAAABnsVYUAAAAAXNSR0IArs4c6QAAIABJREFUeJzs3XeU3FXd+PE7W7IlyW7qppFGemc3CUkggBTFQKiRCEgRUBQeQUUsj4IiIIogKCq9qKABRKUIhCItPaSRSgshHVI2yfZsm98f8/zWGFARczMpr9fhj9k735n9fOecAOd9bu4kSuurAgAAAAAA7GoZ6R4AAAAAAIB9kwANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAAAAAARCFAAwAAAAAQhQANAAAAAEAUAjQAAAAAAFEI0AAApFlNzfZ0j7DnqqnZPmXqtNmz56R7EAAA+DgSpfVV6Z4BAID90Z///OjkZ59bsmTZhg0bunTuPGzYkAkTTjn8sLHpnuvju/FnP582bfrXv37pLryLtWvXfuKoYzt27DDl5b/tqvcEAIDdxg5oAAB2t4aGxquvue7b/3vFiy++XFa2bdCggZs2b37q6Wcu/NLFkyY9nO7pPr7Vq1cvXrJ029Zt6R4EAAD2FAI0AAC724svvXT/A38oLCy88/Zfz5k9/dE/PzxvzoxvffOyhobG71919cJFi9M9IAAAsGsI0AAA7G4vvzwlhHDxRRceeeQROTk5IYRmzZp98Qvnn3DC8SGEqVOmpXtAAABg1xCgAQDY3dauXRdCSKXnHX3uzNPPOedzbdu1/e9/RVVV1bsrV9bV1f3bKxsaGleuXJXGL0JMJpNr1qwtLd3yEa9fu25dQ0Pjv72svLxi+fJ3tpWV/dcDAgDAx5eV7gEAANjv9O3bZ8rUaU888eRnJpyyY4YeXlI8vKQ49bi8vOLYcSe0btXqyb/+JbVy6213PvDAHwoKCyY/9Xhq5c677vnNb+6/8MILPn/u2amVZDJ5z72/feihP65ctSqZTGZmZgwcMOCqq64cOmTwB8dYtHjJzTffMm/+gsrKyoyMjDZtWidCIvXUqFEjb77phsgfQ1i1avVVP7x2/oLXKioqQgiFBQVnnPHZS75yUbNmzT54cXV1zY+u+8kLL768cePGli1bjDr44LPPPvOQMaM/eOVfHn3817fevnLlqtSPXbp0ufiiCyeeNiH27QAAwAfZAQ0AwO529tln5ubmzJ03//Qzzp47b/6HXtOyZYvm+flvvvXWxk2bUivTpk/fuGnT8uXvrHj33dTK3HnzN27a1Kd376ZXXXTxpdf/9MY1a9eWFB903LhjmzXLWbR4ycTPnrlw4aKd3n/R4iWfP+8LU6ZOa9Gi+QknHN+mTetNmzZv3LSpoLBg9JhRQz4sWO9aM2fNPumU06ZMnZafnz9+/HH9+/fbVlZ2+x13XfLVyz54cW1t7QVf/PJDDz+SkZEYNmxoY2Py+b+98OWLvvLB+/r9Hx781re/u2bNmsGDBp56ykm9eh24du3a713xg9/d//vYdwQAAB8kQAMAsLt16dz5l7fcXFDQcvGSpaefcfbx40954PeTqqurd7qsuHhYCGHp0mUhhIaGhkWLFmdmZoQQ5s39v2a9dOmyjIyMYcOGpH6cPXvO3154MS8v99nJf31w0v2/+PnPZs145bTPnNrQ0PjTG27a6c2vvfbHZWXll339q6+89PxNN14/9ZUXv/CF80IIfXr3vunG688/79zYH8KvfnVbRUXF6adPnDblhZt/9tMnHvvTE4/9KScn54UXXpo9e85OF5eWblm6dNkvb7lp6isvPPLwH16dNfWcsz9XXV1z4Zf/Z/Pm0h2vvPue+0II117zw7/8+eHrf/KjyU89/uPrrgkh/OrXtyeTydg3BQAAOxGgAQBIg08ccfhfH//LF75wXqtWrd58660fXv2jww4/+oYbb66qqmq6pvigg0IIS5e+HkJYsnRZdXXNuE8fG0KYN39BCGHLli3vvfd+7169WrRokbp+7bp1J5xw/A+v+n7XrgekVvLy8k4/fWJqr3RDQ0PTO1dVVb22cFFeXt7ZZ52RkZERQsjMzDjv3LMzMzNmzJzV2PjvT1j+L1VVVXXo0OHkk0741uV/3+/cv3+/MaNHhRBmv/rqB1/yPxd/6dPHfir1ODs7+8or/nfo0CGbN5fOmv0PF6fOku7Zs0fTyoRTT/7+ld+98IsXVFZWxrwnAAD4EAI0AADp0alTx29/8xvTprxw8003jBk9qqy8/M677jn/gi+lDkTeaQf0/PkLQggnnXRChw5FqVM7UmE6dU3KKSefeNON159y8okhhJqa7Vu2bNmyZcsBXboUFhbW19evW7e+6cotW7Y0NDQUFhbk5+c3LRYWFubn51dUVGzfXhv73vPz8392409u+OmPW7ZskUwmt23blpp2xIiSEELT8c07mjjxMzutnPaZU0MIixcv2XExlbC//Z3v/fXJp9euW5dMJhOJxNlnnfmFCz7fVOoBAGC38SWEAACkU7NmzcYfP2788eNmzpp96Ve/MXfe/Kuvue6n118XQujTp09+fv7SZctCCHPnzk8kEsXFB40YXvLU089s27YttV5SfNCO77Z4ydI777xn1uzZqY3AO6qpqWl63Llz54KClu+99/6UqdOOOPyw1OIzzz5XXl5RXDwsLy93N9x4Tc32Bx96+KGHH1m1anVtbe1OT+10cUFBy8KCgp0Wux5wQAhhyZKlOy5e/5Nrv3H5d6ZOm/71y76ZeuGQIYOPPurIM884PXWACQAA7E4CNAAAu1VDQ2NlZWVGRmKnDbmjRx18043Xn3fBhdOmz0ytZGZmDB0yeNbsVysqKubOm9+nd+/CgoLhw0uefGry/PmvpXZGF+8QoF99dc65532xrq5uzOhR/fr1bXr/e+/77Y4ne4QQEonEpZf8z7U/+snl3/zf8cePGzN61JSp05586ulEInHOWZ/bPR/CJV/9+ksvvdK2bZsTTzi+qKh9RkZmCGHJ0qUvvvjyB69PPbvzYmZGCGGnA0MKCwvvvuu2rVu3Pvf8C8//7YU5c+ZOmzZj2rQZf/nLYw9Our9Zs2YxbwsAAHYmQAMAsFuVl5cdPPqwzMzMhQtezc7O3vGpgw8ekZWVtWHDho2bNrVv1y51wsbMWbOfe/6FDRs2HH30J0IIw0uKU2c6L1m6rLCwsEeP7k0vv/FnP6+rqzv3nLOu+N53mhbLysp/fevtHxyjoKAghLB169YHfj/pgd9PSh2sfO01V40ff1zkDyCEEGbOnPXSS680a9bsicf/nLrTlOt+/NMPvX7r1q2VlZXNmzffcXHt2nUhhEGDBn7w+latWp32mVNP+8ypyWRy/oLXzj7n/EWLl8yYOatpuzcAAOwe/hYeAAC7VatWrQYM6F9fX//yK1N2emrLlq319fVFRUVNTTb1PYSpQDxieEkIoV+/fs2bN586ddrKlauKDxqWSCSaXv76G2+GEE484fgd3/OVV6Ykk8mdftHy5e9c+f0f9uvb54XnJ991x63f++63H7j/vnlzZk48bUK0+/4Hb7z5Zuq85h3rc319/bRpM/7ZSx5//MkPrPw1hDBo4ICmlTlz5p5/wZe+890rm245kUiUFB+U+kzmzZsf4VYAAOBfsQMaAIDd7RNHHLZ06bKrr7nugAMO6N+vb2qxsrLyiiuvCiEccfjYpisPOmhoCGHhwkUhhOHDS1LnchQXD5s6dfpO52+EEHr3OnDhosXP/+2FoUOHpFbefnv5lT+4+oMDPPD7Sdu3b//sZ0/r2vWArl0PiHy7H+LAA3uGEGa/OqesrLygoGVq8QdXXfPmW2/9s5fc/Itf9u594MiRI0IIyWTy9jvunjFzVosWLVIrKT169Jg6bXoymRw2ZMgZZ0xMLW7fvn3a9BkhhIOGDftnbw4AAJEI0AAA7G6XfOXi1WvWPvHEk6dO+OzoUQf36NG9tLR0xsxZpaVbhgwe9PWvX9p0ZevWrbt377Zy5aqOHTt06dw5tThieMn/D9D/UFRPOeWkhYsW337H3dOmzSgpKV6ydNm8efNHjhgeQpg5a/aOV/br2yeEcM21P/7lr25LreTl5XboUDRyxIgzz5jYpUuX/+bubvjZzXfcefcH14uKiu69547U44NHjjjggC5r1qw9+pPjDjvs0JxmzaZMnbZp0+av/M9Fv/r1bR987ciRI+rq6s465/xBAwd07Nhx2euvr1mzNisr69e/+nnHjh2aLmvXru3XLv3Kzb/45fevuvrOu+8ZO/bQrVu2Tps+vby8on//foccMvq/uS8AAPgYBGgAAHa3rKysn93wk+7duj377PPTps+YMnVaCKFDh6KJp0244nv/m5eXu+PFxQcNW7lyVero55SmrdDD/v9O55SzPnfG9u3bb7/j7oWLFi9ctLhFixaf+uQxP77u6ut+/NOdAvRJJ5340xtvqqqq7t+vbyKRSCaTZeXlb7+9fP781/4w6aHf33/fwB3OtfhPrV//3vr1731wvaLy71+EmJ+fP+n3v7v0a5ctXLjoiSeeDCH06dP7e9/9dklx8YcG6D69e1329Usv/eo3Zr86Z9HiJZmZGcOGDf3CBZ8/ZMzOTfnii7/Urn27W2+7c82atQ8++HAIoXnz5hMmnPKDK7+Xk5PzsW8KAAA+nkRpfdVHuAwAAKKorKx8/Y03ux7QpaioaFe956pVq8vKywf075+Z+eFfeXLlD65+8MGHr77q+03nVKSOqrjs8m8/++zzxxx91G233rKrhvnXqqurX3/9zW7durZt2+ajXV/zxhtvHHjggU0Hd3yoxsbG99/fsHbt2rZt23bv3i0jw1e/AACQHgI0AAD7nZGjxm7dunX+3JktWrTYcX3JkqUnnzqxZ88ez07+a/qmAwCAfYetEAAA7Hdat2oVQliydNlO64sWLQ4hDBk8OE1zAQDAvsYZ0AAA7HeOO+7Tv7719i9fdMn448cNGTL4wJ49li57/dVX5z73/N8yMzNPPvmEdA8IAAD7CEdwAACw30kmkz+5/sY/THqwpmb7justW7b45S9uPvTQMekbDQAA9ikCNAAA+6ltZWVTXpm6/r33tm7d1qNH9/79+/Xp3Ts3NyfdcwEAwL5DgAYAAAAAIApfQggAAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEkZXuAQDYFzU0htqGUN+YbGxM9ygAAPwbiYyMkJURmmWGTNvUANjFBGgAdrXqukR9Y25ubnZedmZmZrqnAQDg32hoaKirq6upqklmZYS87HSPA8A+JVFaX5XuGQDYh1TWZmdmtWjePN1zAADwH6uorKxrqA/Nm6V7EAD2Hf5yDQC7TnWd+gwAsPdq0bx5dmZWqK5L9yAA7DsEaAB2kYbGRH2j+gwAsFdr0bx5or4xNPgmDwB2DQEagF2ktiE3NzfdQwAA8N/Kzc0NtQ3pngKAfYQADcAuUt+Yne0rawAA9nrZ2dmh3g5oAHYNARqAXSPZ2JiZmZnuKQAA+G9lZmYmGwVoAHYNARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAAAAAgCgEaAAAAAAAohCgAQAAAACIQoAGAAAAACAKARoAIG3q6upuueWWsrKyHRdvv/329evXp28oAACAXUaABgBIm2QyuWbNmoaGhh0X161bt3379vQNBQAAsMsI0AAAAAAARJGV7gEAAPhwpaWljzzyyNq1azt06DBmzJji4uLU+owZM+bMmbN58+Zu3bp98pOf7Nq1awhh0qRJQ4cOXbZs2ZIlSy6//PLHH3986NChr7322ptvvtmyZctjjjlm2LBhqZfPnDlz6tSp5eXlnTp1Ov7447t27drY2HjTTTeNGzfu2Wef3bx5c69evSZOnDhlypR58+YlEomRI0cec8wxqdcuX778xRdfXLNmTfv27UePHj18+PD0fTwAAMBewA5oAIA91GOPPVZUVHTFFVccd9xxjz76aOqo6OnTp8+cOXPixInf+c53Bg4cePfdd5eWlqZq9aOPPtq+ffvzzz8/Ly+vtLT0L3/5S3Fx8Xe+851Ro0ZNmjQpddmSJUueeuqpiRMnXnnllYMHD7777rsbGhqSyeSGDRuee+65c88999JLLy0rK7vxxhvLysq+9rWvnXbaaa+88sqSJUtCCKtXr540adLYsWOvuOKKY4455umnn160aFG6PyQAAGCPJkADAOyhksnkxo0bS0tLe/ToccUVV7Ro0SK1/fmYY44pKChIJpPDhg3r0KHD4sWLU9cPGDDgiCOO6Nq1a0ZGRghh8ODBAwYMyM3NPfTQQ1u0aLFq1aoQQqdOnS655JLOnTuXl5cPGDCgtrZ23bp1qZcfc8wxbdq0KSoqGj58eFVV1Yknnpifn9+7d+8+ffqsWLEihDBv3rzBgwd37969rq6uW7duJSUlc+fOTesnBAAA7OkcwQEAkDYZGRkZGRn19fVNK8lksr6+Pjs7O4QwceLEZ5999p577qmvry8pKTn22GNDCO+///6f//znwsLCppfU1tamHnTs2HHHN+/QoUPqQSKRaN++fUVFRerxn/70p23bthUWFiYSiRBCdXV16rL27dunHrRr165ly5a5ublNP27bti2EsH79+nfeeefdd99t+hWtWrWK9tkAAAD7AgEaACBtsrKyOnXqtG7duqb4u2nTpkQi0bFjx8bGxurq6pNPPjkjI2PTpk133313+/btR40a1b59+5NOOqlv376p6xsaGlIdOZWzd3zzpvUdPffcc61atfryl78cQqipqbnqqquantrx5R/62qKiou7du48bNy71Y2Nj4674DAAAgH2ZIzgAANJp6NChkydP3rBhQwihsrLy0UcfHThwYGZmZiKRuOuuu6ZOnRpCaN26dX5+fkNDQwihuLh48uTJlZWVIYQVK1ZcddVVmzdv/ui/rq6urq6uLplMNjY2PvHEEx8amv/FqK+++uqaNWtCCGVlZTfccMO8efM+1k0DAAD7CzugAQDS6cgjj6yvr7/11lsbGxsbGxuHDBnymc98JrUH+ayzzpo0adJLL73U2NjYvXv3kpKSEMLRRx9dU1Nzww03ZGVlNTY2fvazn23aPf1RfOpTn7rvvvuuueaaxsbGkSNH7nRqx7/Wu3fv8ePH/+53v0smk1VVVYcffvjw4cM/1k0DAAD7i0RpfVW6ZwBgX5DcVt2mTZt0TwF7sW3btrVs2XKnYzRCCBUVFVlZWU0nMqc0NjaWl5fveBL0f6SsrCw7OzsvL2/XjgrAPqO0tDRR+DH/MwEAOxKgAdg1BGgAgH2GAA3ArmLfCgAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBRZ6R4AAGD/VV1dne4RYL+Ql5eX7hEAAPZTdkADAAAAABCFHdAAAGljVyYAALBvswMaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgDgo6qtra2trU33FAAAwF4jK90DAADs12677ba6uroQQk5OTpcuXQ4++OCioqJ0D/VPPfbYY7m5uSeccEK6BwEAAPYOdkADAKTT2rVrx44de9pppx155JG1tbW33Xbb5s2b0z0UAADAriFAAwCkWdu2bTt16tS3b99TTz21efPmS5cuTfdEAAAAu4YjOAAA9iDt2rUrKysLIaxYseKpp556//3327RpM3bs2BEjRqSOYH7ssceWLVuWn58/ZMiQY4899kMXV6xY8dxzz1144YUhhPXr1z/wwAPHHXfcoEGDQgiPPPJIjx49RowYsXLlyr/97W+rVq1q06ZNSUnJ2LFjQwiNjY033XTT6aefPnny5Jqamq985Svbtm178skn33nnnezs7OHDhyeTyXR/QgAAwN5EgAYA2CM0NDQsX778zTffPPTQQysqKu68885TTjmlpKRk1apV9957b1FRUbdu3WbMmPHee+9dfvnltbW1d911V9euXQcOHPjBxT59+rz77rubN29u27bt4sWLq6urFyxYMGjQoIaGhgULFowdO3bt2rX33nvv+PHjzzrrrA0bNtx///0NDQ1HHHFEMpncsGHDn/70p8MOO6xLly41NTV33nlnz549L7nkkmQy+cwzzyxcuHD06NHp/qgAAIC9hgANAJBmv/nNbzIzM2tra1u3bj1hwoQ+ffpUVVVddNFFXbt2LSsra9WqVefOnd95551u3bqFECoqKtatW9ezZ8/LLrusaT/yTotZWVl9+vR54403DjnkkKVLl06YMOGPf/xjQ0PDihUrmjdv3rFjxyeeeGLgwIEjR44MIRxwwAEnnnji448/fsQRR6Te7YgjjjjooINCCIsWLaqvr58wYUIikQghnHbaaW+99VZaPyoAAGAvI0ADAKTZmWee2bVr1+zs7MzMzNRKdnb27Nmz77///tatW2dmZm7cuLG6ujqEcNhhh9XX1z/++ONbtmzp27fv+PHjW7du/aGLAwYMWLZs2aBBg7Zu3TpgwICOHTsuX7787bffHjBgQOqbDwcOHNg0QKdOnbZs2VJdXd2sWbMQQseOHVPr69ev79SpU6o+hxAyMjI6d+6cjk8IAADYW/kSQgCANGvWrFlubm5TfQ4hLFy4cMWKFd/61rcuvvjiL33pS23atEmtb926dezYsZdddtl3v/vdhoaGp59++p8tDhw4cPny5QsXLuzfv39GRsbAgQMXL178xhtvpLpzUVHRxo0bm37dhg0bCgoK8vLyUj82TbLTZakrd8tHAgAA7CMEaACAPU5dXV1DQ0NDQ0MIYc6cOevWrUutP/PMMw899FBDQ0NeXl6rVq1SF3zoYkFBQVFR0TPPPJP67sFBgwbNmTOntLS0V69eIYRhw4a99tprb7/9dgihrKzs6aefLikp+eAYffr02b59+3PPPVdfX19fXz958uStW7fu9g8DAADYizmCAwBgj1NSUrJkyZIf/ehHOTk5HTp0GDFiRGp9/PjxkyZN+uEPf5iTk5OTk3POOef8s8XUJuj33nuvb9++IYS2bdu2bdu2qKgotbu5V69eqYOh6+rqGhsbS0pKxo0b98ExmjdvfsEFFzz88MMvv/xyMpkcOHDgqFGjdu8nAQAA7N0SpfVV6Z4BgH1Bclt10ykBwC5RU1NTW1tbUFCw0/r27dtra2tbtmz5bxf/rbKyspYtWzad8vzPVFVVZWRk5Obm/kdvDsDeq7S0NFGYl+4pANgXCNAA7BoCNADAPkOABmBXcQY0AAAAAABRCNAAAAAAAEQhQAMAAAAAEIUADQAAAABAFAI0AAAAAABRCNAAAAAAAEQhQAMAAAAAEIUADQAAAABAFAI0AAAAAABRCNAAAAAAAEQhQAMAAAAAEIUADQAAAABAFFnpHgAAYP9VWlqa7hFgv9CmTZt0jwAAsJ8SoAEA0kYUAwAA9m2O4AAAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAAAsPld8AAAgAElEQVSAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKLLSPQAAwH7tze0b79syc3rlu8mQTPcssE9JhMQhzXuc13p035z26Z4FAGD/lSitr0r3DADsC5Lbqtu0aZPuKWAv8+b2jV9c86D0DPEkQuKuA07XoOE/VVpamijMS/cUAOwLHMEBAJA2922ZqT5DVMmQvG/LzHRPAQCw/xKgAQDSZnrlu+keAfZ9/qABAKSRAA0AkDa2P8Nu4A8aAEAaCdAAAAAAAEQhQAMAAAAAEIUADQAAAABAFAI0AAAAAABRCNAAAAAAAEQhQAMAAAAAEIUADQAAAABAFAI0AAAAAABRCNAAAAAAAEQhQAMAAAAAEIUADQAAAABAFAI0AAAAAABRCNAAAAAAAEQhQAMAwH+rsaq2fNryZENjugcBAIA9iwANAMD+qHzWiqXH/qKxpm6XvNu2F99YffVfq5eu3yXvBgAA+4ysdA8AAAB7vcIj+2W2yssb2CndgwAAwJ5FgAYAgP9WRn6zgkN7p3sKAADY4wjQAADwD5Lb6zf8dkbl/FV1myryB3VuPX5oixHdU081VtW+d9vLlQtWJ+sb60srs9o2zyrM63zZJ5PJ5Pqbn+9+/YTMgtzyGe9snbyk6LxD3r9rSvXr72V3LGh7SnHhMQPSfVsAAJAGzoAGAIC/S26vX/WDxytefbf9uWO6/+TUnJ7tVv/gifIZ76SeXX31k7VrtnT55rFdv398ZmFe/ebKzt88tlm3No01dTXvbEp9CWFDeU3lwjVrr5/c6tODul13cl7fDmtvfK5ywep03xkAAKSBHdAAAPB35bNWVC1a1+eB87Na54cQcnu1b6yu3XDP1JZjDmysqq1csLrbtSflD+0SQuj6g/HvXvbHrILcjJyd/6e6saq26IKxqX3TeX07lE1bXjFnZfODuqbpngAAIG3sgAYAgL+rWrQ2t3f7VH1OaTGix/bVW+q3VmXkZWe2zNm+cnNqffvK0kROVmZh3oe8SyKRP6RL0+Pmww6oXb1l98wPAAB7FDugAQDg7xq31yeyM3dcSf2YrG8MiUS700e+f+eUynmrElmZFfNXdTjvkJ0u/r+XNMvccVt0IjuzsaZut4wPAAB7FgEaAAD+Ln9w57KX3misrsvIy06tVC5Y3axTYXa7FvVbq7Y+uzRvQKeWYw4MIRR9fkxOz3bpnhcAAPZojuAAAGD/1VCxvaG8pumfZENjy0N6ZRe1XP2Dx7ev3tJYXbt18pLND89p+9kRIYSKWSu2v7s5kZGoe7882ZhsrKlL1jWk+w4AAGCPZgc0AAD7r7c+d8+OP3a//tTmB3Xtfv2EtTc8+85Fv0/WNzTrWNjx4k+0Hjc4hFBweN8Nv5lRtWRdbq/25dPfef+uKdlFBd1/ckp2+5bpuwMAANijJUrrq9I9AwD7guS26jZt2qR7CtjLHL78lnSPwD+V3F7fUF6T1a5F08qmP8ze9uIbve44K2QkQgiNVbVvnXtf21OK2515cFon5d97pdel6R4B9jKlpaWJD/2SVQD4D9kBDQAAHyKRk5WV02LHlcba+hBCSCRSP2bkZmfkNfvQLyEEAABSBGgAAPhICo/qv+Wvi9697OEWow8MiVA+fXkiM6PwqP7pngsAAPZcAjQAAHwkOd3a9Lrr7K2TF29fVZrISBQe1b/wE/0yC3LTPRcAAOy5BGgAAPioslrntzvDic8AAPBRZaR7AAAAAAAA9k0CNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAAAAAABEIUADAAAAABCFAA0AAAAAQBQCNAAAAAAAUQjQAABpkwiJdI8A+z5/0AAA0kiABgBIm0Oa90j3CLDv8wcNACCNBGgAgLQ5r/VoezMhqkRInNd6dLqnAADYfwnQAABp0zen/V0HnH5o854yNOxyiZA4tHnPuw44vW9O+3TPAgCw/0qU1lelewYA9gXJbdVt2rRJ9xQAAOwCpaWlicK8dE8BwL7ADmgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAoBGgAAAAAAKIQoAEAAAAAiEKABgAAAAAgCgEaAAAAAIAostI9AAD7jtLS0nSPAAAAAOxB7IAGAAAAACAKO6AB2GX6Hjwy3SMAALALvDn71XSPAMA+wg5oAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIAoBGgAAAACAKARoAAAAAACiEKABAAAAAIhCgAYAAAAAIIqsdA8AAP+B0SNHHj7mkBDCLXfeUVNTk+5xdoFBAwZcd8WVtXW1p33+8+meBfhICgsKvvT585p+XL12zZwFC95avjytQ+0aH+PfSMVDh5746XFDBw3Kzs6aNmv29b/4eeQZP9wpxx9/3uc+F0JYuXrNHx55ZMars3d89qF778vLzamtrZs2a9Zdv/ttRWVlWoYEANg/CdAA7E0u/eKFnzrqqBDCgsWLnn3hhXSPEwYNGNCqoGD23Ll19fUf7x0KWxYcOmpUbV3drh4NiKWwoOBbl1660+LsefPO+MIF28rK0jTUrvGf/hupXdu2T/xhUm5uburHzaVbYk73r3Tu1PmQg0eFEA45eNQpxx/fd+TIquqqpmfHjByRn5cfQvjE2LHZ2dk/veUX6ZoTAGA/JEADsNdolp39icMOSz0+9sij9oQAfe8tv+zVs2ffEcNLt25N9yzA7nbrPXdXVFaNHjHisDFjDi4p+eYll17xo2vTPdRu1a9379zc3PqGhosv/8b7GzZsLi1N1ySPPvnXBYsWZmdnP/Kb3+bm5vbo1nXpG280PTvx/PMzMzIuOPvsEz89bmC/fukaEgBg/yRAA7DXOPzQQ5tlZ6ceH3v0Ud+48h+ezcjIOHLs2AH9+r21/J3nX36poaFhx2eb5+d/6qijOhV1mLNg/ux583Z655HFxSNLhq9Y+e7zL73UtJe5X+/e7dq2ff3NN3Nzcz911FEbNm58Zfr08oqKEEJubu7wYcNaNG/Rs3v3EMLBw0eUV5SHEF5bvLjpb3ZnZmYedfjhfXv1njN/3qy5c3catWTosJHFxfMXLfzot9+rZ8+ORUUbNm1K/U3/Zs2ajSwuDiG8On9+bW1t6m0PGzNm8ICB7214/6WpU3cqQf9snt4HHtihffuamu3zFr6WkZExaviIEcUH5ebk/OKOO/Jycwf1779l69a333ln7Ogx/fv2nT137pwF83d824KWLY8+4ogunTqtXL36hVdeqayqCiEMH3ZQbm7OwiVLThp33LTZs1asXDl6xIj/x959hlVxtA0cn3MORUClFxFERVRERKwRe8feu4i9t1ijxq6xd2ONDVSMLdaIvYFKUVRUlCpiBaUJKNLeDxvPSywHovIQzP93+WF3Znfm3t3DcHE7Z7acjc2BI0dyc3+kqeW1a9R4m5rq7eMTFhGR+7v0yXiUIT2Pjg6LiNDW0q7n5FTRtnzMq1c7PDxyE09Z6zIrFyworKPz49Sp12/dzH08+L6t/e236JgYIcSk0aMnjR7T8P3/kKn4KEpUfMK1tbQb1q1jXarU/ZCQC15e0k93eRsbQwODx0+fRkZFVXFw0CpUKCIy8unz5zWrVlVTU7t7/358QoIQwsbaunG9ei9iYk6fP6/8WTM2MiprbZ2VJfxvBrx7965CuXK1a9bU19P74/hxaTD5shHJUF+/fNmyNapUFUIkJye/iI7++Jgvi0c1mUzWuH5927JlX0THePtce/LsmVT+5NmzJ8+eqav99deN+vtfFpJrfn7S9Gfp/zJzf5nS3Q4JD5cetBT827epynHgk89L6XMDS44jkrmZWT0nJwN9gxu3b0nBZ8eIBAAAChYS0ACAAqN5w0ZCiDMXLzauV8/MxNTO1vZuUJBUZVm8+M6Nm+zKl5d27z140GPgAGVion7t2ptXrTbQ05N2/zh2bPiE8VKiuWiRIlvXrJWyEkKIiMjIzn1dI6OihBATRo3u0KrVNT+/mtWqyWQyIUTi69dteva4GxRUzNT08K7dysB2btwobTTt2CHg9m0peb1r0+aSJUpI5WcuXOg7coS0aLWGhsberdvq/PCDVPXsxQshRFZmZo6XP6xf/749e3ocODBq8iQp+yPFUKlO7afPnxsZGh7etbtcmTLSwampqSMnT/rj2DFpV0U8IwcN6t2lqxAiNDw8OCysZdOm0jGbduyoZGd30M098nGUhrpGMVNTqXzRqpVL1qyRtivb2+/auMnUxETaffLsWQeX3uEPH25YvryUldXz6BdmJqaZmZnHT51q4+wshHDp2q1pxw5ZWVkq4lEoFJtWrmzXoqXywjft2DF17pzcfEI+F48QYuOKFVJ3h/48XqWSQwkLCyHE3aAgKd2jIh5Jv169alSpIoQYPnDAgFGjchMM/lMePoqSxhNpV8VHUfUnvEaVKrs2bdZ/P1g9e/Gig0vv0PDwru07jB4yZO+hP0ZOmnRk1+5ChQptdnObs2Tx8d/3CiGqNmiQnJy8dO68Xl26SCfGxccPGz/uzMWLQoiGdequW7pUGsH+OHbMtUcP6Zi79++HhIV98Yj0Q/XqO9atl7Z1ixaVhqNjJ0/2HTFcCKGupvZl8ajuVE9Xd8+WLdUqO0q7b9++HTR2zIkzZ3LxiL7Qr4uX2Fhbj5w0cc/Bg9Jvkw3LlkdERlZv3EjF85J2VQwsqkekYf36z/zpJzWFQjrxmr9/1379sq8owogEAAAKFnl+BwAAQG45N2kihPjj2FH/mzeFEC0aN5bKdYsWPbRrl1358qmpqbfu3HmXllahXLmta9dKtY6VKu3ZstVATy8uPv7egwdZWVkdWree8uM4KRP0+9ZtDerUSXz92v33PcFhoaWsrA7t3PVXFikrS0qyZGRm3g8JkbJLOzds1FBXf/v2rbePj3Lemc/1694+Pt4+PtIUv+LFih3/fW/JEiUiIiO37dr18tWrJg0abFm9Wjp4eP8BUq7nefSLV3FxysRujqQk+Me70sZgV9dyZcq8io3d7Obmc/26pqbm0jlz5XJ5jvGERURc8fXJzMwsU7q0MvucnZWFZTFT0/CHD9MzMoQQ40eOMjczkyaV/75lq6mJyVU/3x0eHm/fvi1erNj8aT8rT4yOeXkn6J5cLm/eqJGUu6lsb29laak6njo//NCuRcuMjIzd+/cf8TyRlZU12NW1om2FHO+P6nhu3Lp1++5dIUT7lq2kXI+S6ngkx056pqampmdkKHP6gJR/rF2zZoM6dQa49BZCBN69m+NHUfUnfMakyfp6evdDQjZu3/7w0aNipqYzJk4SQkjfPLAtW862XDlpwWXHSva2ZcsKIV7FxUU+jlqzaHGvLl2ysrIehIbGxsfr6+nt2rT5h+rVhRAxL196+/jExccXLVJEme1V+uIR6VVs7BVfn6DgYCFEWnr6FV8f5a4Q4ovjUe3XJUuqVXYMDQ/ftGPHi+joQoUK/bpk6T+a0fxPfTjwCpk0Z1za/dzzynFgUTEiaWhozJ4yRU2huOjtvW3XroTExB+qVXPp1jX7MYxIAACgYGEGNACgYLArX17KjJy5eNHK0rK6o2Ozho2Wrl0rhOjZqbOVhWXMy5d1Wji/iosrYWHhe/ZcVYfKle3tbwYGjh8xQl1N7dzlSz0GDszIyOjSrv36Zcv6dO++YMXyek5O1R0d09LTx/88LfrlywNHj/66ZKll8eJd23f4zd1NyGTSjLYGbVq/io2t88MPh3busixevG6tWmcvXWrXq2fpkiV9z5wVQvQZOuRV3P+/emtAbxc9Xd0nz56Nn/5zRkbG5atXN69a1bxRY9uyZYOCgwe4uAgh1m3dMmvhQoVcvmze/J6dO3/9/THUNxBCBAUHb9i29cnTp+NGjBRCFClcOCExUXU8azZtWrNp09WTp2ysrcMiIoZNGH/j1q0PGh8z5add+/ZZWVh6nTihpaVV2d7+6fPn9hUq3A8JSU5O7jl4kBDiip/vxuUrKtvbK89auGqlpXnxRbNm3b53d+Skia2bNy+so2Oob9CqWTMV8Rjo6wsh4hMTt+7aGXjvXo+OncyLFcvNHVAdz+Afx5oYG9+7ek0IcfLc2cmzZj1++jQ3z0s6xtvHp0KtHzQ1NaWv4QOS7b+uU24np6TMXrwox4+i6k+4kYGBEOLcpYsr1q/f7Laja/sOia8ThRA+/v5CiHI2NlUdHKQjHSra25W3FUL4B9wob2PTuV07IUSPgQPOXLwol8u3rF7Txtl56o8/tu3Z87zX5fNel5fOmdu3Z8/0jIwBo0aePHs2/f0iRV88Il3z92/bs2eLJk3cN2xMTExs27Onsupr4lGhsI5OYZ3C3j4+oydPjnwctXrjxjtXrhQtUqRkCavgsNBcP7Rv6XPPK8eBRcWIpKerKyW4d+79/cTZs0dPev5QrXrUkyfZ+2VEAgAABQsJaABAwdC0QUPpm+zlbWwSEhOlpTmNDA1fvnpVqaKd9NVvKQv86PFjs3JllSdWsqsohNi9b7+0KvS+w4f2HT4kVdlXsJO+Kr551d+mu9rZllduHzlxQlpM2evatcdPn1qYm1v+fbbax+ztKkjT3w66uWcvr2hb4Xl0tJRG99i/PzMzMzMzc9/hQz07d5bJv/Y7SW6/7+navn2dH364fv7Ci+jo4LCwfYcPSTdKRTzKBKtkh4fHx9nnjIwMjwMHhBCRj6NCIyLsK1QoZmompZ8Wrlw5ZsiQEP/rym+gGxsZKecMZmZmZmZlCiEyMjKlXalKdTznLl0Ki4iwLlXqzB+HklNSbt+9E3D79oOQYJETFfF8YNGqVcpcT+7vj3QzgY89efYs4PbtVRs3PAgNzfGjqPoTvn7b1mVz5w0fMHD4gIFBwcFPnj1bse5XaZpz1JMnlsWLd2rTVjpSXU2tU5s2Qgj/gJvSUPbw0SNpjYvMzMxtu3e1cXZ2qGj/QahnLpw/fuqUcldfTy8vRqQvjke1pOTk0ZMnTxw9+tCuXRbm5sq5yUaGhvmVgP7c8/pHA+8HI1J0TMwRzxNtnVtsXrU6PSPj1p3Ah5GP3Pbs+aBrRiQAAFCAkIAGABQMzRo1kv6Yz774crOGDXfv35+VlSWEyBJZnzxRqv0kKT2akJh45/1a0pKHjx4pt+XZEjFSU5k5rY4q5VsfPX78wZy12LhYZTDK1ImK8D6MNjNTCKFQ/BWP9DV8ZQu37txp2a3rhJGjipmaVra3NzUxqVur1q07d+7ev68ing8uMy4h/uN+36amKi9ZSuLL5TIhhJWl5f7t2zU1NZ9Hv/D28THQ15cWBMiR6ngSEhOdu3SePmGijXXpyhXta1WvUat6jafPn2/Ytk11sznGo7zn0uvachkP8DFpHQYhRIVaP3w8BVX1R1H1J3yHh0dcXLxL927mZsVsy5a1LVvW0d7evrbTu7S067duWhYvXrtmTSHEZje3QX36SEtnXL9108zEVFq64f8jlMmEEPJsy0dIP+PxCX/LWn7NiKTq/shkXxaPaupqanu3bbMuVep1UpL0Qr8fqlX7+mhVk35NKN4vxywNvMohUcXzynFg+dyIJIQYNGbM3aFB9ZxqlytTpqpD5aoOlbW0tPoMG5rXFwsAAJBHWAMaAFAAGOjpVatcWQjhvvf3xatXL169+k7QPSFEs4aNhBB37z8QQrRp7myory+tWfz8QfDL0LCGdeoKIe7dvy+E6NW1i7qamhCiS7v2L0PDngbdL6yjI1XJZDLX4cPa9erZrlfPJ8+eSslcZdetmjXT0dYWQlR1qGxZvLgQIjj0r6l2aWlp0sYHswWDHjwQQjyPjpbalF7JJYS4GRiYkJgYFx8vhGjfqpVU2Klt21y+8ivm1SshRLkyNsrAstduW/vrvGk//+bu1qxTxyoN6kuTwR3tK6mO5yueiejYuo2mpub9kJCKTk7tevX88/TpXJ6oOp7xI0Zs/3VdaHh4mx49ytescfnqVSFEJTu7/IpHUta6zLqlS7esWVPl/QIIwOeo/iiq+IRL/8E2wMVl8NixtZ2bdx84QAhhaGAgrdFxPeCvRecfPX585sJ5ZYMBt2/fvntHCGFuZla/dm0pt9uvZy8hREDgbdWhfs2IpMIXx6OaY6VK1qVKCSGqNqjfunu3JWtW5+Kkr/Xyr4G3jHQhLZs0UVapfl5fPPA2b9T4oJu7dalS7Xr1rFDrh9UbNwohHCpWzH4MIxIAAChYmAENACgAmjZsKJfL36WlTZ45811amhDiRUz0srnzGterp6Guvnv/vrFDhxobGV09fSbowYOKtrZqCsXjp08vXb0ihFizeXPThg0b1ql79dTp5y9eVK9SRQjxx7FjScnJ57287gYF2dna7t++49T5cxXKlW/dvHnk46hr/v7i/UsIzc3MLh3/8/HTp/YVKkjv6fILCJCievr8eWpqqqam5vE9vz+PjhZCSCuT/ubuNqhPnxpVqmxdu/Z+cHDLpk0r2lb449gxKSl81NOzT/fu44aPqF3zB3U1tdynD/xu3JDSEKcP/pGamiq9zkspLS2tds2apaysdu/fb6ivb6CnJ4QIe/hQCKE6nsWzZ5crYyO9V3D04CHdO3aKevJk5KSJOcYjTZe2KV16ztSpae/ShvXvn8sLUR1PzKtXtWvWrO7oaF6sWMqbFOm2Z5+T/gXxqKup7d/hpv7+TWWbVq5MTX134sxpac6p6ngkA1x6d23fQfrviv4jR+bySvHfpPpHQ8Un/MmzZ6VLlixmarp782/nL1+S/gPpdVKStAqQ8q2nN+8EKkehB6Ghr5OS7oeEnDp3rlmjRh6/bfG7ccPczKyUlZUQYvWmTUIIl27dO7dta12qpBCiUd260pdIXIcPi09IyMrK+uIRSYUvjkd1s8rp0otmzwkJC+3dtVv22sljxtauWUM5rXj5vPnJKcnPnr8YMu5HKwvLNYsXCSFKWFgKIapVqXJk924hxPJ16y54eanu1PfGDacaNQf37VfZ3l5PV69CuXLKKtXPS8XAonpECnsYIc1zV8gVYQ8jmjdu/PEYyIgEAAAKFhLQAIACoGnDhtKLnt69n3R8+vx5IYSWlpZTzZoXvLyG/PjjjnXrDPT0pL/bX8XF9R0xXFov4oqvz4IVy6f8OK5kiRIlS5QQQtwJujdt3lxpQYnBP479w31nZXt76RVhT5496z148Nu3b7P3bmVpaWVpKa1AOmrS5Iz3L8vKyMhYtHrVjImTrEuVkubl6ehoS40MnzBh48qVbZ1btHVuIYS46uc7duoU6azFq1c71ahRpnTpmlWrCiH8AgKqOzrm5iac97rsefaMc+MmjpUqCSFu371rXaqUNDtbCDFjwYLK9valS5acMHKkEOJdWtqUObOv+vnmGE8lO7tqlf8KwMba2sbaOperqe7au7dpgwbNGzUe3n+AlB2rUslBlu0r9p+jOp5d+/Y1bdCwRZMmQ/v1k0rcf9+zYt06lU3mEI9MLpc+GBLpepUz2VXHIwm8e0/auH3nbm5uDr5vn1vwR6L6R0P1J3zExAk71q2v7ugoDQvPXrwYOHrU66QkaaZzWnq6uprajVu3El+/lpaE9n+fiR47bepBN/fyNjbKj/rStWvPXLgghChpaaksNDE2NjE2FkKoqf31V8AXj0iqfXE8KgSHhc5atHDW5J86tGolhIh5+TIyKkoanKU3HzrV+P8fc2nKcGRUlBBCW1sre5WBnp60u3Pvvhw73V5fyPkAACAASURBVLBtW4fWra0sLKVTrvr51qpeQ1mr4nmpGFhUj0ih4eFzliyeOm68NBtdeiiDxo7JHhUjEgAAKFhksekp+R0DAOB7kJXwpmyN6rk48EtUdahcqJBm1JMnjx4/VhbWrFpVTU3t4aNHT549E0JYFi/epV37zMzMe8EPLnh5vXv3LnsL1R0dG9atl5SUFBAYKKVllfR0dXt26qytrRUeGXnq3Lmk5GSpfPOq1R1atVq/besOD49mDRqqa6jv2rdP+jp2dhXKlVO+ZyzgdmDKm79+sZYuWbJj69bp6Rm3794973U5+8qq6mpqPbt0MTIwuObvf9XPr1b16pmZWR9E9UkymaxxvXrly5a9fvOW743rlSvaFyqk6RcQIF2sXC53qlGjUgW7p8+fX/D2+mA64efiqWRnV6Rw4exHprx5E3D7tnRn7MqXz8jMvObnl/3g8IcPn714IZVUtrd3ql4jMOjeFV/f6o6OCoXC28dHel73HjzQ1NC0LlUy8fXrwHv3fqhWTaFQ3L57V8rOqLg/0l2tXqWKTCY7f+ly5OOoHO+M0ifjkcvltap/+OF89uJF+MOHOd4fpWqVHdXUFL43buS4CDi+e5qamtKiQH43bij/V+wDn/woKmtVfMK1tbTr13ayLlXqbtB9b59r2duvVtlRU1PjfkjIq9hYO1tbvaJFI6OilO+v09DQ6NWli7GhkfSqQ/+bf+WmrSwtLczNPwjP9/r1tPR0afuLRyQhRIsmTdw3bHwVG1vuo/H/i+NRzbJ48WYNG72IiT5/+XIJCwsDff07QUEJiYnlbWwMDQw+OPjt29Trt25qa2k7Vvrw/YdCiOCwsJiXL3PssbCOTvPGjU0MjS54e4U9fFjd0VFqVqpV8bw+N7DkZkQqZmpa54daxoaGV/39bgYGMiIhXwT7+sl0tfI7CgDA94AENADg28jTBHS+UCagp8+fn9+xAMC/S7kyZYwMDXt37dqlXfsHoaG1nZvnd0QAvjES0ACAb4UlOAAAAAD8MxNGje7w/tWFOa6kDAAAgP8yEtAAAHzag5Bgbx+jiIeR+R0IAPzrBIeGXPH1EUKER0YuWrUyv8MBAADAvxdLcAAAvo3vbwkOAACA/yyW4AAAfCvy/A4AAAAAAAAAAPB9IgENAAAAAAAAAMgTJKABAAAAAAAAAHmCBDQAAAAAAAAAIE+QgAYAAAAAAAAA5AkS0AAAAAAAAACAPEECGgAAAAAAAACQJ0hAAwAAAAAAAADyBAloAAAAAAAAAECeIAENAAAAAAAAAMgTJKABAAAAAAAAAHmCBDQAAAAAAAAAIE+QgAYAAAAAAAAA5AkS0AAAAAAAAACAPEECGgAAAAAAAACQJ0hAAwAAAAAAAADyBAloAAAAAAAAAECeIAENAAAAAAAAAMgTJKABAAAAAAAAAHmCBDQAAAAAAAAAIE+QgAYAAAAAAAAA5AkS0AAAAAAAAACAPEECGgAAAAAAAACQJ0hAAwAAAAAAAADyBAloAAAAAAAAAECeIAENAAAAAAAAAMgTJKABAPg0E2PjKg4O36QpTU3Nek5OCoXim7QGAEKIC0ePFilcOL+jAAAAAHJAAhoAgE9rWKfOsrnzvklTxoaGB93ctbW0vklrAGBibGxX3lYmk+V3IAAAAEAOSEADAL4HHdu0mTpuXH5HAeC/QiaTTZ8w0euE563LXivmz9ctWlRZVcLCYuvatQ98/S4eOz56yBBluUKhmDlpst/Zc9fPX5g37WcjQ0OpvI2zs7fnyaMeHg4VKx7/fe+LB8HL581X3dRBN/erJ0/JZLJTBw56e57cuXFjjgGbGBuvXrgo0PvKxWPHJ4wcmb3KuXGTC0ePRgXeuXryVMumTaXCxvXq7d60WXnMQJc+c6dNU+5279jx9ME/Hvj6rVu6tJKdXY7XDgAAgP8yEtAAgO9BrWrVtbW08zsKAP8VbZo7t3F27j1kcKtuXS2KFx8+YKBUrqere9DN/VHU4+adO81auLB7x47KqoUzZjZr1GjU5EmDxo4pZ1Nm5qTJUvlFb+9+I0ZYmBffunbtRW+vNj26r9q4QXVTP06b2mfYUCHE0PHjXIcPmzp3bo4Bjx8xQltbq2HbNiMmTuzXs1c9Jyep3MrS0m39+jWbN1euV3e7x+6lc+bK5XIhRJHCRUpalVCebmRoaG5mJm13aNVqwYyZazdvbtuzx8vY2M0rV2moq6sOGAAAAP9lJKABAAXD5+YbtmrWzPfM2X69enXr0MHb86S358lGdetJVbpFi65dvCTomk+I//VNK1YWLVJEKh/s6jqkb9+Zkybf9vL23L+/S7v2yl6qOzoe3rU7PODm4V27S1hYKMvlcvm44SP8z52PvB14bM/v5cqUkcotzM29PU+eO3yknpPTxuUrHgUG+pw+I1UZGhhsW/trsP/1i8eON6pXL8cLVDHf8AvmWh7aucvrhOeQvn1HDBx07+q1l6FhpiYmX3TjAXxCfGKCrq5umVKl4uLjew8Zsn7rFqm8vlPtrKws972/y+XyyMdRHgcO9OjUSQihplB069hh1ORJ1/z9b9y6NWjMmBNnTkup3sTXr4PDQl/Fxl66cmXx6tW+N25ERkWpaEoIERkV9fDRIyFE+MOHoeHhjx4/zjnghMRipmYlLUvcD35Qs2mT6zdvSuWJr1/Xa9XywJEjGZmZ+48cUVdXr1m1muqmenTuvHzdr4dP/PkgNHTmggUzFy4sUqSI6oABAADwX6aW3wEAAJAr0nzDrv37paenr/jll+EDBi5YsVwIcenKlZ6DB00bNz45JWXlhvVCiGfPn0un/DJ9hmVxc+fOnXV0tNcsWty5bbutu3ZKU/mG9x+w+8D+XoMH1XOqvXbx4rMXL8TGx5ubme3e/NtRT89ZixbWc3IaP2JEWMRDqanuHTsO6du324D+0TExU8eNnzRmzIBRo4QQL6KjXYcPmzZu/OaVqzzPnu05aFB8QqJ0isfm31LevBkwamQxU7NJo0fneIEq5ht+7tql+YbHTp6cs3hxqRJW86f/nJ6esW7Lb0KIMVN+atuixcRRowPv3ZswY3p0zMvY2Ng8eCzAf9SlK1cWr1o1dthwtw0OwaEhsxctPu91WQhhZ1veQF9/x7r1yiMz0tOFECWtrLS1tO/evy8Vxick/Hn69Adt+gcEZN/9XFNfZu3mTXK5bM2iRZbFi3v7+v40e1ZEZKQUyZQff2xUt156enp6RoaOjk4xM1PVTVUsb7th6zZpOysry/PsmbwIGAAAAN8NEtAAgIJBOd/wqp9f7yFDtAoVkspfJyW9TkpKfP36dVJSaHh49lPWbNr4IiYmOSWlsLb2UU/Pti1aSAlo6awpc+ZkZGQE3rvXp1u3RvXr7z98uH7t2pmZmRNmTM/MzAy4fbuqQ2XL4sWl4y9fvdq4fbunz5/rFS26a9++vVu3FipU6O3bt2np6aHh4Y8eR1W0tR0z5Sdl1yUsLKo4ONRr1fLegwdCCH093fk/T//m1/7J+YZSAjoyKup+SIhu0aIjJk54+j4jD+BbKV6s2MFjR7fsdC+sozN22LC1ixdXrO2UlZUVEhYeHBbWoktn6TBtLW0trUJCiEePH79LSyttZRUUHCyE0NDQsCldOig4ODMzU9lmVlZW9i4+19SXMTUxWbp27fxly0xNTH5dvGTqj+MGjR0jhGjZtGnDOnXrt26VnJKiUCge3rwlHf8y9pWpsYlCocjIyBBCVK3s8DopSaoKjQgvXbLkucuXpN1yZco8efYsKTn52wYMAACA7wZLcAAACgblfMOQ6zdO7t/vaF8px1MM9A22rf3V7+y5Ix57+vfuXcz0/6f1XfHzlbIqQoiwiAiLYuZCiLLWZa76+SnzQV7XriqPT0tLn//z9JuXLh/x2LNi/nwtLa3s62AIIfwCbmTfLWttHRcfL2WfhRBe167lxbUr5xu6rd/gtn5Dtw4dM99flOTp8+dkn4G80Na5xR/u7ibGxilv3sS8fJn5Pnd88Yp3aSurfr16qaupFTM1Perh0a5FSyHEu3fvTp8/P//n6YYGBnq6uotnz548Zqw02shkMrlcLpPJlBuqm5I8e/EiOiamXctW+np6hXV0cgx41uTJC2fO1NbSjk9IiE9MUA50NqWtpX41NDSmT5ioqakplfv4+8vl8oEuLjra2h1atapby0nZ1LGTJ8cMHWpXvryGhkaf7t33bd8hpc5VBwwAAID/LBLQAICCQZpv2Lp7t7LVqp65eHHt4sXKNM0nyWSyBdOn/3H8mEPdOnVaOG/Z6Z69NjMz6+NTIh5FVra3V+5WqeSg3B49ZEjKm5Qq9evVaeE8ctKkj8/9+8xFEfHokb6enpWl5cdNfY5yvqG0W7Wyg/ICP3ft0nzDOi2cpX/NOnbs6Nrn71F94jIBfL0tu3beDw7xPuEZdiNg9OAhoyZPkn7comNiug8cMNClz8Nbty8cPeYXcGO7x27plOETxr99+zbQyzvQy9vMxHTq3DlS+S/TZ0QHhzhUrLhqwcLo4JB5036WylU0JYTIzMxctHrV2GFDQ/yvnzxwMMeAZy1aZGle/N61a2HXb5S0LPHL8uVSufvve2Lj4oL9r9+7ek1DQ+Pcpb/mNaelp89evGhov/7hATeH9u//y/JlyqY27dix79ChY3t+f3jrtkvXbqMmT0pOSckxYAAAAPxnsQQHAKBgaOvcolvHDl3793/56lX2+YaSm3cCe3fpWrJEibj4+JSUlLT0dIVcXqqklfSOr3Jlygzq0yc5OUV1F94+PgtnzBw9ZIjbnj11a9Vq0qBB1JMnUpWNdenY2DiZTKavpzdt/PjsZylnLMrl8qysLCkJFf7wYWRU1LRx4+cuXWJqbNKvV68cL1A533Dn3r3NGjasW8vpz9OnVF/7xSve86ZN69er187ffzcyNNy5cdOuffukZUbkcrlcJpc2pFzVP7zfAFR59+7d0PHjFAqFsaHR8+gX2asCbt+u7dzc0MAgPiEhI9uXEpJTUnoOHqStpS2Xy5KSk5XlU+bMnjJn9id7+VxTkh0eHjs8PLKXDB8wcM6UKdlLwiIiajZtIoQIDQ/v3NdVW0u7kKZGbHy88oBXcXHNOnU0MjR8nZSUmpqa/dztu3e77dmjr6v7Ki7ug67nLFk8f/kyPV3dV39fXF51wAAAAPhvksWm5/DXOAAAuZGV8KZsjep5176GhsbqBQsb16+vpqaWkpIyYtLEC15eylojQ8O1i5fUq1VLQ0NjwKhRh0/8KYRw7dFj/rSf36WlxcXHL/t17ZghQ6VEzNRx40pZlRw05q8XA+7etNn3xg3pBYZtnVssmjXLyNDw2YsXi1etGuDi0rBtGyFEFQeHnRs26ujovE1NnTZv7vJ586o3bvwiOrp18+bbf12nDONuUFD9Nq2l7TKlS7utX29T2jrlzZuJM2YsnzfP9oeaykVUP6lvz55jhgw1NzO7eSfw+KlTle3t+48cqfraHStVWrt4SUlLy6Tk5D+OH5s6d25mZqa+nl6I//XsLVtXcUxITPymDwTAv46mpqaOllb2kozMTH72AXyZYF8/ma5WLg4EACAHJKABAN9GXiegJZ+cb6iCmkJh9E+Ol5iZmH7ylGKmpi9iYv7RbGJjI6O4uLj0bDMBd2/a3KxRo+zHuO3ZM+7nadK2XC7/5HxD1dfOfEMAAPBtkYAGAHwrJKABAN/G/yYB/R0orKOjoa6eveRt6ruUN/w6BgAA/yIkoAEA3wprQAMA8D+Vfe1XAAAAAAC+b/L8DgAAAAAAAAAA8H0iAQ0AAAAAAAAAyBMkoAEAAAAAAAAAeYIENAAAAAAAAAAgT5CABgAAAAAAAADkCRLQAAAAAAAAAIA8QQIaAAAAAAAAAJAnSEADAAAAAAAAAPIECWgAAAAAAAAAQJ4gAQ0AAAAAAAAAyBMkoAEABYOdrW09Jyf7ChW+vqnCOjp1a9X6mhZqVKliqK//9ZEAAAAAAPB9IwENACgY2jR3Hj14yJHdHoP69PnKpkqXLLl32/avaWH98uXVq1T9yjAAAAAAAPjuqeV3AAAA5MrClSuEEEtmzylXxia/Y8lDHdu0KW9j88vy5fkdCAAAAAAA3wAJaABAQZIlsmRClt9R5KFa1aqnvnuX31EAAAAAAPBtsAQHAKDAK29js2vTphD/62cPHR7Q20VZrlAoZk6a7Hf23PXzF+ZN+9nI0PDjc4cPGLhv+3Y9XV1pt4SFxda1ax/4+l08dnz0kCHKw+Ry+ZypU29euhxw8dKowYNzE1VhHZ1VCxbeuuzlf+78L9NnaKirS+UTRo6cMHKk8rB1S5d2bNNGCNGqWTPfM2f79erVrUMHb8+T3p4nG9Wtp7qLxvXq7d60Wbk70KXP3GnTpG0TY+PVCxcFel+5eOx49u6EEA3q1Dno5h52I+DI7t3NGzWWCi3Mzb09T547fKSek9PG5SseBQb6nD6Tm8sEAAAAAEAFEtAAgILN3MzsoJt7SFh4mx7dl6xZM3HUqP69ektVC2fMbNao0ajJkwaNHVPOpszMSZM/OHf0kCGDXV0nTJ8en5AghNDT1T3o5v4o6nHzzp1mLVzYvWPH4QMGSkfOmDipVdNm85YtHTPlp6YNGliaF1cdlUwm2/PbFjNT074jhg+fMN6xUqX171fVMDU2MTU2UR5ZoriFXlFdIcSlK1d6Dh501NPz5LlzrsOHuQ4f5nPdX3UvRQoXKWlVQrlrZGhobmYmbY8fMUJbW6th2zYjJk7s17NXPScnqbyqQ+Utq9fsP3K4XquWO/fuW79sWXVHRyHEi+ho1+HDIqOiNq9c9TY1teegQQNGj87dEwAAAAAA4LNYggMAULA5N27y6MnjWYsWCiHuh4TMWlR0WL/+W3ftVFMounXs0L537xu3bgkhBo0Z41Sjhlwuz8zMlE4cM3Ron+7d2/ToHvXkiVRS36l2VlaW+97f5XJ55OMojwMHenTqtG7Lb0KIdi1brtvy2/7Dh4UQr+LiLh49pjqqstbW1apUsXasnJySIoQYPHbMjQsX9XR1pUz3J71OSnqdlJT4+vXrpKTQ8PCvvC3xCYkVbSuUtCxxM/B2zaZNsrKypPJuHTucuXDhmr+/pqam/82AS1eudGrb1i8gIC09PTQ8/NHjqIq2tmOm/PSVvQMAAAAAICEBDQAo2Cra2gYFByt37z14UL5sWTWFoqSVlbaW9t3796Xy+ISEP0+fVh4ml8lcunY75umpzD4LIexsyxvo6+9Yt15ZkpGeLoTQ0tKyLF7c28dHKrwbFKQij/y+Kduox4+l7LMQIurJk+SUFLvy5ZWN5LW1mzfJ5bI1ixZZFi/u7ev70+xZEZGRQgi78rYlLCzc1m9QHhkXH5f9RL+AG/+bCAEAAAAA/wUkoAEABVtoeHi/Xr2Uu6VKWEVERqZnZDx6/PhdWlppKyspPa2hoWFTunRQcLA0AzozK6tTnz7H9/7+6PGTLTvdpXNDwsKDw8JadOks7WpraWtpFRJCvHnz5kV0tGOlSvcePBBClLKyUq4ZrSKqkiVKmJuZPX3+XAhhaGBQWEcnJDxcCPEyNtbBzk46TFNT087W9o/jx7/s2l/GvjI1NlEoFBkZGUKIqpUdXiclSVWmJiZL166dv2yZqYnJr4uXTP1x3KCxY4QQIeFhV/185y1dKh1moKeXlp6evc33U6UBAAAAAPgGWAMaAFAwyGQyuVwuE7K/NmQyqfzUhfOmJsajhwzR09UtV6bM1HHjDv35pxDi3bt3p8+fn//zdEMDAz1d3cWzZ08eM1a5/oYQIvJxVGdX10ljxnRp114quXjFu7SVVb9evdTV1IqZmh718GjXoqVUdfbSpYEufao6VC5hYTF13Pjs7XzS3fv3wyIiZk6abGVpaWRouHTO3Gt+ftExMUKIMxcu1K1Vq3bNmvp6epNHjymso5P9xJt3AmtVr16yRAndokXV1XL4f2Iff3+5XD7QxUVHW7tDq1Z1azkpq2ZNnrxw5kxtLe34hIT4xARlwEf+POHSrXut6jVkMlkVB4drZ86WsLCQqpR3NfvtBQAAAADga8hi01PyOwYAwPcgK+FN2RrV8679yNuBOtrayt03b95Y2leUthvUqbNk9hwrS8uUN2/2HDwwZc4cacljHW3tzStXNahTJyMjw9vXd8L0nx8/fSqEqGRnd/LAwWLlywkhqjg47Nu2ffiECSfPnRVCOFaqtHbxkpKWlknJyX8cPzZ17lwpdaulpbVt7a8N69TJzMpy2+NRsoTVtl27PM+eURFw8WLFflu9xrFSpaysLO9r1waNHRMXHy9l0hfNmtWlXXtNDY2Dx44pFHL/gJvKWdhGhoZrFy+pV6uWhobGgFGjDp/4U/Vt6duz55ghQ83NzG7eCTx+6lRle/v+I0cKIcqULr1wxsxqjo5qCsX9kJABo0ZFPo6STnHp2m3y2DH6unpRT56s37Z1h4eHEKJ18+bbf12nbPZuUFD9Nq2/4nEBAICCLdjXT6arld9RAAC+BySgAQDfRl4noHNkbGQUFxeXnpHxQbm2lrZcLktKTs59U4YGBvEJCRkfNVW0SJGMjAzlys5CiOEDBs6ZMiX7MWERETWbNsl+Snp6RsqbD3/bamlpyWWy7E2p8EHyXQgx+MexB48elbblcrm+ru6ruLiPT9TW0i6kqREbH/9xlYmxsTQjGwAA4GMkoAEA3woJaADAt5HvCeh8oampqaP1t7/NMjIzExITv20v+np6H6yIkZSc/C4t7dv2AgAAoEQCGgDwrfASQgAAvlxqampqampe9xL3qSnMAAAAAAD8+/ESQgAAAAAAAABAniABDQAAAAAAAADIEySgAQAAAAAAAAB5ggQ0AAAAAAAAACBPkIAGAAAAAAAAAOQJEtAAAAAAAAAAgDxBAhoAAAAAAAAAkCdIQAMAAAAAAAAA8gQJaAAAAAAAAABAniABDQAAAAAAAADIE2r5HQAAAP9rtmXLvnn79uGjRx+UF9bRqeLgkJWVFXjvXnxCQj5FBwAAAADA94MENADgP2fciJERkQ9/Wb78g3JjI6PRg4cYGRqYmZjaOdXKyMjIpwABAAAAAPhOkIAGAOAvEZGRnfu6Ghka3vfxNdDXj3n5Mr8jAgAAAACgYGMNaAAA/iYrKyu/QwAAAAAA4DtBAhoAUDAc89hjX6HCvu3bQ6/fOLDDrbyNjVRuYW7u7Xny3OEj9ZycNi5f8Sgw0Of0GamqsI7OqgULb1328j93/pfpMzTU1ZWtFSlcZNOKlSH+108dONi6efPcBDDY1fXsocPB/tfdN2wsU7q0VHjx2PFRgwc/8PPfuHzF8P4D7vv4/rpkqep2JowcOWHkSOXuuqVLO7ZpI21Xd3R037AxxP/64V272zq3yLF3FdcOAAAAAMC/AQloAEDBYF2q1NY1az3PnO0xcEB8YsKeLVuLFC4shHgRHe06fFhkVNTmlavepqb2HDRowOjRQgiZTLbnty1mpqZ9RwwfPmG8Y6VK67Mt+jygd++nz5936df37KVLG5evqOLgoLr3wa6uA136LFi5omn79vdDgg/scNPT1RVClLOxMTU26da/X8c2bcralOnYx6VDq1a2ZcuqaMrU2MTU2ES5W6K4hV5RXSng5fN/uebvX61Rw81uO1b88ou+np7q3j937QAAAAAA/EuQgAYAFBinL1zYstPdLyBg7JQpJsbGVStXFkKkpaeHhoc/ehyV+Pr1mCk/eV27difonhCirLV1tSpV+o8cEXD7tu+NG4PHjmnr3ELK2wohQsLDZy1aeDMwcNGqlbfv3WvZtKnqrl179Nyy0z384UOFmmLPwYNCiLq1aklV+w4fuhkYGBsXd/Do0XsPHkQ9eWJpYfEFV5eVlZWQmFjaysrYyOjYyZPVGzVMTk5W3fvnrh0AAAAAgH8JXkIIACgwvH2uSRuvk5Ju371T3sbmgpeXstYv4Eb2g+1sbaMeP05OSZF2o548SU5JsStf3tvHJ3tTQogrPj7lytio6FdDXb2stXX/Xr1dunVXBqCn+9f05PT0dGkjLS39Ky/wx2lTh/fvf8xjj1yhOObpOWPBL+/S0lT3/slrBwAAAADgX4IENACgwHCsVOn4qVNCCE1NzQrlyi1fty577QfvDgwNDy9ZooS5mdnT58+FEIYGBoV1dELCw/9qyr6S8sjK9vZ37wep6PddWlpkVNRPs2ef97oslZiZmMbGx33ZVbyMjXWws5O2NTU17Wxt/zh+XAihpaWVmZn547RpP06bVq5MmUM7d926e2eHh0dueue9iQAAAACAfyeW4AAAFBhd2rVvVLeeoYHBtHHj0tLSrwcESOVyuVwmk2XfEELcvX8/LCJi5qTJVpaWRoaGS+fMvebnFx0TI9VWsrPr0727btGiXdt3qFWjxrnLl5VNyeXy7BuSP44fmzFpkoW5ubqaWu8uXf/cu1ehUHzZVZy5cKFurVq1a9bU19ObPHpMYR0dZdWRXbt7d+mqUChevnqV8uZNZmZWjr1/8toBAAAAAPiXYAY0AKDAOOJ5YuOKFXq6uk+ePXMZOvRVXJwQonXz5tt//WsqdLcOHe4GBdVv01oIkZGR0cm1z2+r1/icOZuVleV97ZrLsKHKpuYvXzbYte+yufNeJyXNW7pUWspj+ICBc6ZMkQ64e+WqEGLWooVrN28WQixYsUK3aFGvE55qCsXNO3dGTJz45s2bL7uKG7dveRw8sHPjJk0NjYPHju0/clgqf/Pmzfjp0yeOGjV32jRNTc2jJ04oqz7X++euHQAAAACAfwlZbHpKfscAAPgeZCW8KVujet61H3TNZ+j4cZevXjU2MnoRHZ37E4sWKZKenpHy5hO/70yMjV/FxmZkZOSyKTWFQrdoUSnxrZpDxYpnDx3+oNDOqZYyci0tLblMplyiOjtDff3kN2/evn37xb0DAAB8pWBfP5muVn5HAQD4NpE1OwAAIABJREFUHjADGgBQkGRmZv6j7LMQIvH1689VKVfkyKX0jIxc5n/vBAWVrVb1g8K4hATltooJ1J/rIve9AwAAAADwL0ECGgCAby8jIyM2Pj6/owAAAAAAIJ+RgAYAFAxOzs2TkpLyOwoAAAAAAPAPkIAGABQMcUwoBgAAAACgoJHndwAAAAAAAAAAgO8TCWgAAAAAAAAAQJ4gAQ0AAAAAAAAAyBMkoAEAAAAAAAAAeYIENAAAAAAAAAAgT5CABgAAAAAAAADkCRLQAAAAAAAAAIA8QQIaAAAAAAAAAJAnSEADAP67NDQ0fqhWrZ6Tk6amZn7H8j9iYW5ez8nph2rVNNTVP3lAuTJl1NXUvqYLdTW1ek5OX9kIAAAAAOD7QAIaAPAfZV+hQrCf/5I5c6eNH69btGh+h/M/4lip0ujBQ9YvW75p5aqPa51q1PT2PDly0OCv6UJXV/egm7uuru7XNAIAAAAA+D6QgAYA/Ee1cXY+efZs3ZYtmnfqFB0Tk9/h/I8c9fTs3Nd19qJF5cqU+bg28N7dDdu2HT3p+XHVhaNHixQu/D+JEQAAAADw/eDrsQCA/yhzs2IvYqLzO4r8kZWV9cny10lJP8+f93G5ibGxXXlbmUyW96EBAAAAAL4rzIAGABQMxzz22FeosG/79tDrNw7scCtvY6OsKmFhsXXt2ge+fhePHR89ZIiy/NDOXV4nPIf07Tti4KB7V6+9DA0zNTERQjRp0MDb82TLpk27d+rs7XnS2/OkmYmpdEp5G5tdmzaF+F8/e+jwgN4uyqZmTprs7Xly/bJlDevUvXLy5MvQsI5t2gghLh47Pmrw4Ad+/huXrxjef8B9H99flyyVTtEtWnTt4iVB13xC/K9vWrGyaJEiUvlgV9chffvOnDT5tpe35/79Xdq1V/ZiaGCweeWqoGs+pw4cHDN0aPaE72BX17OHDgf7X3ffsLFM6dI53q7COjobl6944Ocf6H1FusbeXbqqPmXvtm3enifd1m8oVKhQ9vKDbu5XT56SyWSnDhz09jy5c+PG3ARcs2pVz/37H/j6LZo1y7J4cdVdN65Xb/emzcrdgS595k6bJm3LZLLpEyZ6nfC8ddlrxfz52RdL+afPHQAAAADwv0cCGgBQMFiXKrV1zVrPM2d7DBwQn5iwZ8tWaUUIPV3dg27uj6IeN+/cadbChd07dhw+YKB0ypgpP/3+x8GJo0Y3qV9/wozpzp07x8bGCiGu+fm5Dh/mde3aidOnXYcPcx0+7OWrl0IIczOzg27uIWHhbXp0X7JmzcRRo/r36i01tWH7tokzZnRp1/6nH8eu37rNuXPnC5cvCyHK2diYGpt069+vY5s2ZW3KdOzj0qFVK9uyZYUQv0yfUcKiuHPnzu169bQuVapz23ZSU0aGhtMnTNTR0e41eNBRz5NrFy820NMTQmioqx/c4SZXyDu59lm4cmXfHj27deggnTLY1XWgS58FK1c0bd/+fkjwgR1uejmtsLxgxkzdokWbtG83aOwYC3PzuUuW7Dl4QPUpE6fPGDx2TO2aNWtUqZK9/MdpU/sMGyqEGDp+nOvwYVPnzpXKVQQshJg0esysRYtchw9zqFjxx2HDVXddpHCRklYllLtGhobmZmbSdpvmzm2cnXsPGdyqW1eL4sWVD/cLnjsAAAAA4H+PJTgAAAXG6QsXtux0F0LcnzLlgZ9/1cqVL3h51XeqnZWV5b73d7lcHvk4yuPAgR6dOq3b8psQIjIq6n5IiG7RoiMmTnj6/LmynaTk5NDw8MTXrxMSE0LDw5Xlzo2bPHryeNaihUKI+yEhsxYVHdav/9ZdO4UQL6KjX79OEkJsdnPbf/hw9qj2HT50686d2Li4g0eP3nvwIOrJE0sLi6Dg4DWbNr6IiUlOSSmsrX3U07NtixZSU9JKF1PmzMnIyAi8d69Pt26N6tfff/hwJbuKJSwtm3Ron5aefu/Bg859XU2MjKXjXXv03LLTPfzhQ4WaYs/Bg13bd6hbq9ZRz0+s1KzkULHi0jVrop48iXry5Kqvb5nSpTzPnlF9eyMfRwkhklNSNNTV/1YeFZWeni6ECH/4MPH1a2W5ioCFENN/mX/Nz08IsWrDhmVz542f/vPn1v1QLT4xQVdXt0ypUlf9/HoPGaL1fnb2Fzx3AAAAAMD/HgloAECB4e1zTdp4nZR0++6d8jY2F7y87GzLG+jr71i3XnlYRnp69rOePn+eyyxkRVvboOBg5e69Bw/Kly2rplCkZ2QoC/1u3PjgrPT33aWl/a1fA32DhTNnlbKyep2UVLRIkTdv3iirrvj5ZrxvMywiwqKYuRDCzrb8g9CQtPethUVEhEVESBONy1pb9+/V26Vbd+Xl6+nqqb6WYydPunTvFhh0z8Lc3KlmjZUb1qs+/gt8LmDJ/ZAQaeNBaKiJsbG6uvq7d+++oJdLV64sXrVq7LDhbhscgkNDZi9afN7rstT7t3ruAAAAAIC8QwIaAFBgOFaqdPzUKSGEpqZmhXLllq9bJ4QICQsPDgtr0aWzdIy2lraW1t+WMM79xNvQ8PB+vXopd0uVsIqIjMyefRZCiNw1JpPJFkyfvnX3rh0eHkKIMUOH9uzUWVmbmfmJVkLDw0tZlVTuGujp6erqRkRGvktLi4yK+mn2bCnxKoQwMzGNjY9THYCamsLSvPhRD4+Xr15NnTP3mr9/ruL+Jz4XsLSbmZmZ+6Zexr4yNTZRKBRSXr5qZYfXSUlSVfFixQ4eO7plp3thHZ2xw4atXby4Ym2nrKysb/jcAQAAAAB5hzWgAQAFRpd27RvVrWdoYDBt3Li0tPTrAQFCiItXvEtbWfXr1UtdTa2YqelRD492LVpKx8vlcrlM/teGPOdfeacunDc1MR49ZIierm65MmWmjht36M8/pSqZTCaXy4QQMrksN00p5PJSJa2kI8uVKTOoT58cT7lx+/a7d+9mTJxUqFChEhYW+3e4NWvYUKr64/ixGZMmWZibq6up9e7S9c+9exUKhYqmihQuPHLQ4KHjxzl37ty6e/ed+/Yqq2QymVwul94W+MFtUe7K5HLlMZJnL15Ex8S0a9lKX0+vsI5OjgH/Uz7+/nK5fKCLi462dodWrerWclJWtXVu8Ye7u4mxccqbNzEvX2a+Tyt/w+cOAAAAAMg7/FUGACgwjnie2LhixX0f37YtWroMHfoqLk4IER0T033ggIEufR7eun3h6DG/gBvbPXYLIfT19KKDQ3Zt2mRhbh4dHBIdHKJbtKjq9kPDw/sMG+bStVuwn//JAwfPe11etGqlVHXx2PGHt24LIfzPnY8ODmnZtKnqptIzMqb/8svcKVPDA27u3vzbL8uX53h1b9686dSnT+P69cMDbp47fOT2vbu/ubtLVQtWrPALuOF1wjPi5q3unTqNmDgx+4IeH0tOSXn85MnuTZv3b99x67LXhaNHnWrUlKp2bdwUHRzy2+rVNtbW0m1xrFRJCGFqYiLtmpuZeWz+LTo4ZOKoUcoGMzMzF61eNXbY0BD/6ycPHMwx4H8qLT199uJFQ/v1Dw+4ObR//1+WL1NWbdm1835wiPcJz7AbAaMHDxk1eZI0tfkbPncAAAAAQN6Rxaan5HcMAIDvQVbCm7I1qudd+0HXfIaOH3f56lVjI6MX0dEfH2BoYBCfkJDxwYoZn7d28ZLYuNgZCxZ8XGVsZBQXF/fh4hv/nJpCYWRo9Dz6xT86y1BfPyEx8ePe1RQK3aJFpbS7ZPiAgXOmTMl+TFhERM2mTao6VD7o7l69caPomBi5XD7Y1bVD69bNO3X6uqv5xwF/bPemzc0aNcpe4rZnz7ifp0nbcrlcX1c3+wUqKRQK48/cyX/63AEAQG4E+/rJdLXyOwoAwPeANaABAAVJZmbmJ7PPQohXsbG5b0dHW7ustbX73uufrI15+fJLA/yb9IyMf5p9FkJ8MgMrtfZB1Zad7nsO7M9ekpGZKYQoWqSIQi4vrKMTHROTlZVlZGioVSgP/4D8XMAfG/zjWA119ewlb1P//82EmZmZn2sq4/N38h89dwAAAADA/xgJaADAf86owYOnT5joFxDw56mT+R3LV0lNTU1NTf24/NLVK3sPHfLcfyAuLs5AX//du3f9Ro7IjwA/lJScnN8hAAAAAAD+p1iCAwDwbeT1Ehz6enpJSUlp6elf31ShQoUUcnlyynf+G1Amk9mUtn6b+jbqyZOs9+/uAwAAyA2W4AAAfCvMgAYAFAxx8fHfqqm3b99+q6b+zbKysoLDQvM7CgAAAADAf5o8vwMAAAAAAAAAAHyfSEADAAAAAAAAAPIECWgAAAAAAAAAQJ4gAQ0AAAAAAAAAyBMkoAEAAAAAAAAAeYIENAAAAAAAAAAgT5CABgAAAAAAAADkCRLQAAAAAAAAAIA8QQIaAAAAAAAAAJAnSEADAAAAAAAAAPIECWgAAAAAAAAAQJ4gAQ0AAAAAAAAAyBMkoAEABcZgV9ezhw4H+19337CxTOnSUqGFubm358lzh4/Uc3LauHzFo8BAn9NnpKpDO3d5nfAc0rfviIGD7l299jI0zNTERKpq3bz5MY89YTcCDrq5161VK8emPqdxvXq7N21W7g506TN32jRp28TYePXCRYHeVy4eOz5h5MjsZzWoU+egm3vYjYAju3c3b9T4i3sHAAAAAOBfjgQ0AKBgGOzqOtClz4KVK5q2b38/JPjADjc9XV0hxIvoaNfhwyKjojavXPU2NbXnoEEDRo+WThkz5aff/zg4cdToJvXrT5gx3blz59jYWClr/OuSpR4HDzh36ex59oz7ho2V7e1VN/U5RQoXKWlVQrlrZGhobmYmbY8fMUJbW6th2zYjJk7s17NXPScnqbyqQ+Utq9fsP3K4XquWO/fuW79sWXVHxy/rHQAAAACAfzm1/A4AAIBcce3Rc8tO9/CHDxVqij0HD3Zt36FurVpHPT3T0tNDw8MfPY6qaGs7ZspP2U+JjIq6HxKiW7ToiIkTnj5/rizv2aXLb25uu/btE0KEhIXZV7Dr0q79zcBAFU19gfiExIq2FUpalrgZeLtm0yZZWVlSebeOHc5cuHDN319TU9P/ZsClK1c6tW3rFxDwbXsHAAAAAODfgAQ0AKAA0FBXL2tt3b9Xb5du3aWS10lJerp62Y/xC7jxyXOfPn+ePfsshKhY3vbEmf9f3SLowQPnJo1z09Q/snbzJrlctmbRIsvixb19fX+aPSsiMlIIYVfetoSFhdv6Dcoj4+LjvnnvAAAAAAD8G5CABgAUAO/S0iKjon6aPfu812WpxMzENPbvedv3M4w/lPVRRWhEeO2aNfcfPiztlrQqERIWnpumPvYy9pWpsYlCocjIyBBCVK3s8DopSaoyNTFZunbt/GXLTE1Mfl28ZOqP4waNHSOECAkPu+rnO2/pUukwAz29tPT0L+sdAAAAAIB/OdaABgAUDH8cPzZj0iQLc3N1NbXeXbr+uXevQqGQquRyuUwmy76hLJfL5H9tyP//V96h43+2ae7c1rlFoUKFmjRo0LV9h6MnPVU39Tk+/v5yuXygi4uOtnaHVq3q1nJSVs2aPHnhzJnaWtrxCQnxiQmZmZlS+ZE/T7h0616reg2ZTFbFweHambMlLCy+rHcAAAAAAP7lZLHpKfkdAwDge5CV8KZsjep5175cLl84c2bX9h3UFIqbd+7MX7bsqp+vEKJ18+bbf12nPOxuUFD9Nq2FEPp6eiH+17O3YF3FMSExUdoeOWjQqEGD9fX0ol/G/LJ8+e79+1U0pVrfnj3HDBlqbmZ2807g8VOnKtvb9x85UghRpnTphTNmVnN0VFMo7oeEDBg1KvJxlHSKS9duk8eO0dfVi3ryZP22rTs8PL64dwDA/7V390FW1fcdx8+9u+yyS2EXkUWLmMRSKeIDooiiJNJgo53xGbVqqziiRPAxRtE8CJqYAGpjEMUxIFaSiI7RpkJGYqbVWtSINVZGqxIxVDtGBAQFEVh2+8eNW6pGE9yPK9vX6697f/fcc77LP8y+5+zvAAkvPL641FDX0VMA0BkI0AC0j3SArqiuqmro0WPVG2/8Acd+hFKp1Kd3029XvPaHHLz86SXd6uu3Xjn7ogvvue++yutyudyzoeEDp6qvq+9aW7N6zZr3f9TUu/eK11/f1vEBAIIEaADaiwANQPv4ZAJ0R+nZ2PieHTHWrV+/afPmjpoHACBKgAagvXgIIQB8tDc+6BZmAAAA4MN5CCEAAAAAABECNAAAAAAAEQI0AAAAAAARAjQAAAAAABECNAAAAAAAEQI0AAAAAAARAjQAAAAAABECNAAAAAAAEQI0AAAAAAARAjQAAAAAABECNACdxID+/btUV4dOPmjgwM8PH77XHnuEzg8AAACdkgANQGcw/IBhi+5feO5ZZ4fOf+SXDj//7HH/9OM7zjrttNAlAAAAoPNJ3SkGAJ+kJc8+c/OcOfctvD90/inXf68oimuuvGpA/z8PXQIAAAA6HwEagM7grXXrvnH1t9NXaS1aS0UpfRUAAADoNGzBAcB24LCRIx+4597a2tq2lYvOGT9j2jWV13fNmbPo/oW3z7y5a9euW3+rqXfv6VOmLln0yEPzF3z13HPb1r967rlbv73p2muPO/LIyuvd/6z/PbfPfemp/3j63xZdev4F2zxwz8bGRfcv7NnYWHm73z6DF9x5V9unJx177Pw75r3wxL/PmXHjngP/d1/pXXfZ5dYZM55/fPFD8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC","screenshotBase64WithElementMarker":"data:image/png;base64,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vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe97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3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC","url":"https://www.saucedemo.com/"}');let sZ=e=>{let{uiContextPreview:t,setUiContextPreview:r,showContextPreview:n}=e;return n?(0,o.jsxs)("div",{className:"form-part context-panel",children:[(0,o.jsx)("h3",{children:"UI Context"}),t?(0,o.jsx)(sP,{uiContext:t,hideController:!0}):(0,o.jsxs)("div",{children:[(e=>{switch(e){case"finished":case"passed":case"success":case"connected":return(0,o.jsx)("span",{style:{color:"#00AD4B"},children:(0,o.jsx)(sR.A,{})});case"finishedWithWarning":return(0,o.jsx)("span",{style:{color:"#f7bb05"},children:(0,o.jsx)(sT.A,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,o.jsx)("span",{style:{color:"#FF0A0A"},children:(0,o.jsx)(sN.A,{})});case"pending":return(0,o.jsx)(sM.A,{});case"cancelled":case"skipped":return(0,o.jsx)("span",{style:{color:"#8c8c8c"},children:(0,o.jsx)(sD.A,{})});case"running":return(0,o.jsx)(sB.A,{});default:return(0,o.jsx)(sz.A,{})}})("failed")," No UI context",(0,o.jsx)(g.Ay,{type:"link",onClick:e=>{e.preventDefault(),r(sQ)},children:"Load Demo"}),(0,o.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null};var sJ=r(4291);let sX=e=>{let{className:t=""}=e,{config:r}=X();return Object.keys(r||{}).length>=1?null:(0,o.jsxs)("div",{className:`env-config-reminder ${t}`,children:[(0,o.jsx)(sJ.A,{className:"reminder-icon"}),(0,o.jsx)("span",{className:"reminder-text",children:"Please set up your environment variables before using."}),(0,o.jsx)(q,{mode:"text",showTooltipWhenEmpty:!1})]})};var sH=r(7062),sG=r(6130),sV=r(2297),sq=r(5862),sW=r(7615),sY=r(2107),s_=r(4544),s$=r(3616),s0=r(1879),s1=r(9876),s2=r(1269);let s3=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,o.jsx)("path",{fill:"currentColor",d:"M1.333 13v-2.5a.667.667 0 0 1 1.334 0V13c0 .184.149.333.333.333h2.5a.667.667 0 0 1 0 1.334H3c-.92 0-1.667-.746-1.667-1.667m12 0v-2.5a.667.667 0 0 1 1.334 0V13c0 .92-.746 1.667-1.667 1.667h-2.5a.667.667 0 0 1 0-1.334H13a.333.333 0 0 0 .333-.333m-12-7.5V3c0-.92.747-1.667 1.667-1.667h2.5a.667.667 0 0 1 0 1.334H3A.333.333 0 0 0 2.667 3v2.5a.667.667 0 0 1-1.334 0m12 0V3A.333.333 0 0 0 13 2.667h-2.5a.667.667 0 0 1 0-1.334H13c.92 0 1.667.747 1.667 1.667v2.5a.667.667 0 0 1-1.334 0M5.667 10.333h4.666V5.667H5.667zm6 .167c0 .644-.523 1.167-1.167 1.167h-5A1.167 1.167 0 0 1 4.333 10.5v-5c0-.644.523-1.167 1.167-1.167h5c.644 0 1.167.523 1.167 1.167z"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},s5=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,o.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M11.333 13.667 14.667 8l-3.334-5.667H4.667L1.333 8l3.334 5.667z"}),(0,o.jsx)("path",{stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1.333,d:"M8 9.667a1.667 1.667 0 1 0 0-3.334 1.667 1.667 0 0 0 0 3.334Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function s7(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function s4(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function s8(e,t){return{left:0,top:0,width:e,pointerLeft:Math.round(e/2),pointerTop:Math.round(t/2)}}function s6(e,t,r,n){if(!t.img)return;e.img&&t.img!==e.img&&(e.prevImg=e.img,e.imageChanged=!0);let i=t.imageWidth||r,o=t.imageHeight||n,a=e.imgW!==i||e.imgH!==o;if(e.img=t.img,e.imgW=i,e.imgH=o,a){let t=s8(i,o);e.camera=s4({},t),e.prevCamera=s4({},t),e.pointerMoved=!1}}function s9(e,t){return Math.abs(e.pointerLeft-t.pointerLeft)>1||Math.abs(e.pointerTop-t.pointerTop)>1}function Ae(e,t,r,n,i){let o=Math.round(n/2),a=Math.round(i/2);return e||Math.abs(t.pointerLeft-o)>1||Math.abs(t.pointerTop-a)>1||Math.abs(r.pointerLeft-o)>1||Math.abs(r.pointerTop-a)>1}function At(e,t,r,n,i){let o=s8(r,n),a={img:"",imgW:r,imgH:n,camera:s4({},o),prevCamera:s4({},o),prevImg:null,insights:[],spinning:!1,spinningElapsedMs:0,pointerImg:aW,pointerVisible:!1,title:"",subTitle:"",taskId:void 0,frameInScript:0,scriptIndex:0,imageChanged:!1,pointerMoved:!1,rawProgress:0};for(let o=0;o<e.length;o++){var s,A;let l=e[o],c=l.startFrame+l.durationInFrames;if(0===l.durationInFrames){l.startFrame<=t&&("pointer"===l.type&&l.pointerImg&&(a.pointerImg=l.pointerImg,a.pointerVisible=!0),a.title=l.title||a.title,a.subTitle=l.subTitle||a.subTitle,a.taskId=null!=(s=l.taskId)?s:a.taskId,a.scriptIndex=o);continue}if(t<l.startFrame)break;switch(a.title=l.title||a.title,a.subTitle=l.subTitle||a.subTitle,a.taskId=null!=(A=l.taskId)?A:a.taskId,a.scriptIndex=o,a.frameInScript=t-l.startFrame,a.rawProgress=Math.min(a.frameInScript/l.durationInFrames,1),l.type){case"img":!function(e,t,r,n,i){s6(e,t,n,i);let o=t.startFrame+t.durationInFrames;t.cameraTarget?(e.prevCamera=s4({},e.camera),e.camera=s4({},t.cameraTarget),e.pointerMoved=s9(e.prevCamera,e.camera)):r>=o&&(e.pointerMoved=!1,e.imageChanged=!1),e.spinning=!1}(a,l,t,r,n);break;case"insight":!function(e,t,r,n,i){if(s6(e,t,n,i),e.insights.some(e=>e.highlightElement===t.highlightElement&&e.searchArea===t.searchArea)||e.insights.push({highlightElement:t.highlightElement,searchArea:t.searchArea,alpha:1}),t.cameraTarget&&void 0!==t.insightPhaseFrames){let n=t.startFrame+t.insightPhaseFrames;r>=n&&(e.prevCamera=s4({},e.camera),e.camera=s4({},t.cameraTarget),e.rawProgress=Math.min((r-n)/(t.cameraPhaseFrames||1),1),e.pointerMoved=s9(e.prevCamera,e.camera))}e.spinning=!1}(a,l,t,r,n);break;case"clear-insight":!function(e,t,r){let n=t.startFrame+t.durationInFrames,i=1-e.rawProgress;e.insights=e.insights.map(e=>{var t,r;return t=s4({},e),r=r={alpha:i},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t}),r>=n&&(e.insights=[]),e.spinning=!1}(a,l,t);break;case"spinning-pointer":a.spinning=!0,a.spinningElapsedMs=a.frameInScript/i*1e3;break;case"sleep":a.spinning=!1}t>=c&&("clear-insight"!==l.type&&(a.imageChanged=!1),a.pointerMoved=!1,a.rawProgress=1,l.cameraTarget&&(a.prevCamera=s4({},a.camera)))}if(!a.img){let t=e.find(e=>"img"===e.type&&e.img);t&&(a.img=t.img,a.imgW=t.imageWidth||r,a.imgH=t.imageHeight||n)}return{img:a.img,imageWidth:a.imgW,imageHeight:a.imgH,prevImg:a.imageChanged?a.prevImg:null,camera:a.camera,prevCamera:a.prevCamera,insights:a.insights,spinning:a.spinning,spinningElapsedMs:a.spinningElapsedMs,currentPointerImg:a.pointerImg,pointerVisible:a.pointerVisible,title:a.title,subTitle:a.subTitle,taskId:a.taskId,frameInScript:a.frameInScript,scriptIndex:a.scriptIndex,imageChanged:a.imageChanged,pointerMoved:a.pointerMoved,rawProgress:a.rawProgress}}function Ar(e,t,r,n){let i=Math.min(e/r,t/n),o=r*i,a=n*i;return{offsetX:(e-o)/2,offsetY:(t-a)/2,contentWidth:o,contentHeight:a}}function An(e,t){if(!Number.isFinite(e)||e<=0)throw Error(`${t} must be a positive finite number`)}function Ai(e){return{scale:e,width:44*e,height:56*e,hotspotX:6*e,hotspotY:4*e,centerOffsetX:44*e/2,centerOffsetY:56*e/2}}function Ao(e){return An(e,"imageWidth"),Ai(Math.max(1,Math.sqrt(e/1920)))}function Aa(e){let t=e.height;return{size:t,centerOffset:t/2}}let As=e=>{let{frameMap:t,autoZoom:r,frame:n,width:i,height:s,fps:A}=e,{scriptFrames:l,imageWidth:c,imageHeight:u}=t,d=(0,a.useMemo)(()=>At(l,n,c,u,A),[l,n,c,u,A]);if(!d.img)return null;let{img:p,imageWidth:h,imageHeight:f,prevImg:g,camera:m,prevCamera:y,insights:v,spinning:b,spinningElapsedMs:w,currentPointerImg:E,pointerVisible:k,title:x,subTitle:S,frameInScript:C,imageChanged:j,pointerMoved:I,rawProgress:O}=d,P=r?I?Math.min(O/.375,1):O:1,R=I?O<=.375?0:Math.min((O-.375)/.625,1):O,T=y.pointerLeft+(m.pointerLeft-y.pointerLeft)*P,N=y.pointerTop+(m.pointerTop-y.pointerTop)*P,M=r?y.left+(m.left-y.left)*R:0,D=r?y.top+(m.top-y.top)*R:0,B=r?y.width+(m.width-y.width)*R:h,{offsetX:z,offsetY:L,contentWidth:F,contentHeight:K}=Ar(i,s,h,f),U=h/B,Q=-(F/h*M),Z=-(K/f*D),J=`scale(${U}) translate(${Q}px, ${Z}px)`,X=f/h*B,H=(T-M)/B*F,G=(N-D)/X*K,V=Ae(k,m,y,h,f),q=Ao(h),W=Aa(q),Y=q.scale,_=j?Math.min(C/10,1):1,$=b?(Math.sin(w/500-Math.PI/2)+1)/2*Math.PI*2:0;return(0,o.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"#000"},children:(0,o.jsx)("div",{style:{position:"absolute",left:z,top:L,width:F,height:K,overflow:"hidden"},children:(0,o.jsxs)("div",{style:{width:F,height:K,position:"relative",overflow:"hidden"},children:[j&&g&&_<1&&(0,o.jsx)("div",{style:{position:"absolute",width:F,height:K,overflow:"hidden",opacity:1-_},children:(0,o.jsx)("img",{alt:"",src:g,style:{width:F,height:K,transformOrigin:"0 0",transform:J}})}),(0,o.jsxs)("div",{style:{position:"absolute",width:F,height:K,overflow:"hidden",opacity:j?_:1},children:[(0,o.jsx)("img",{alt:"",src:p,style:{width:F,height:K,transformOrigin:"0 0",transform:J}}),(0,o.jsx)("div",{style:{position:"absolute",top:0,left:0,width:F,height:K,transformOrigin:"0 0",transform:J,pointerEvents:"none"},children:0===v.length?null:v.map((e,t)=>{let r=[];if(e.highlightElement){let n=a$(e.highlightElement);r.push((0,o.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(253, 89, 7, 0.4)",border:`${2*Y}px solid #fd5907`,boxShadow:`${2*Y}px ${2*Y}px ${+Y}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`highlight-${t}`))}if(e.searchArea){let n=e.searchArea;r.push((0,o.jsx)("div",{style:{position:"absolute",left:n.left,top:n.top,width:n.width,height:n.height,background:"rgba(2, 131, 145, 0.4)",border:`${2*Y}px solid #028391`,boxShadow:`${2*Y}px ${2*Y}px ${+Y}px rgba(51, 51, 51, 0.3)`,opacity:e.alpha,pointerEvents:"none"}},`search-${t}`))}return r})})]}),b&&(0,o.jsx)("img",{alt:"",src:aY,style:{position:"absolute",left:H-W.centerOffset,top:G-W.centerOffset,width:W.size,height:W.size,transform:`rotate(${$}rad)`,transformOrigin:"center center",filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}}),V&&!b&&(0,o.jsx)("img",{alt:"",src:E,style:{position:"absolute",left:H-q.hotspotX,top:G-q.hotspotY,width:q.width,height:q.height,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.3))"}})]})})})};function AA(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function Al(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){AA(o,n,i,a,s,"next",e)}function s(e){AA(o,n,i,a,s,"throw",e)}a(void 0)})}}let Ac=!1;function Au(e){return new Promise((t,r)=>{let n=new Image;n.crossOrigin="anonymous",n.onload=()=>t(n),n.onerror=r,n.src=e})}function Ad(e,t,r){let n=r.contentWidth/r.imageWidth,i=r.contentHeight/r.imageHeight;return{left:r.offsetX+(e.left*n+t.tx)*t.zoom,top:r.offsetY+(e.top*i+t.ty)*t.zoom,width:e.width*n*t.zoom,height:e.height*i*t.zoom}}function Ap(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function Ah(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){Ap(o,n,i,a,s,"next",e)}function s(e){Ap(o,n,i,a,s,"throw",e)}a(void 0)})}}function Af(e,t){let r=Math.floor(e/t),n=Math.floor(r/60);return`${String(n).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`}function Ag(e){var t,r,n,i;let s,{message:A}=p.A.useApp(),{autoZoom:l,setAutoZoom:c,playbackSpeed:u,setPlaybackSpeed:d,subtitleEnabled:f,setSubtitleEnabled:m}=R();(0,a.useEffect)(()=>{(null==e?void 0:e.autoZoom)!==void 0&&c(e.autoZoom)},[null==e?void 0:e.autoZoom,c]);let y=null==e?void 0:e.replayScripts,v=(0,a.useMemo)(()=>y&&0!==y.length?function(e,t){let r=(null==t?void 0:t.imageWidth)||1920,n=(null==t?void 0:t.imageHeight)||1080;for(let t of e)if(("img"===t.type||"insight"===t.type)&&t.img){r=t.imageWidth||r,n=t.imageHeight||n;break}let i=[],o=0;for(let t of e){var a,s,A,l;let e=t.duration;switch(t.type){case"sleep":{let r=Math.ceil(e/1e3*30);i.push({type:"sleep",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"img":{let A=Math.max(Math.ceil(e/1e3*30),1),l=t.camera,c=t.imageWidth||r,u=t.imageHeight||n,d={type:"img",startFrame:o,durationInFrames:A,img:t.img,imageWidth:c,imageHeight:u,title:t.title,subTitle:t.subTitle,taskId:t.taskId};l&&(d.cameraTarget={left:l.left,top:l.top,width:l.width,pointerLeft:null!=(a=l.pointerLeft)?a:Math.round(c/2),pointerTop:null!=(s=l.pointerTop)?s:Math.round(u/2)}),i.push(d),o+=A;break}case"insight":{let a=Math.max(Math.ceil(e/1e3*30),1),s=Math.ceil((t.insightCameraDuration||0)/1e3*30),c=a+s,u=t.imageWidth||r,d=t.imageHeight||n,p=t.camera,h={type:"insight",startFrame:o,durationInFrames:c,img:t.img,imageWidth:u,imageHeight:d,insightPhaseFrames:a,cameraPhaseFrames:s,highlightElement:t.highlightElement,searchArea:t.searchArea,title:t.title,subTitle:t.subTitle,taskId:t.taskId};p&&(h.cameraTarget={left:p.left,top:p.top,width:p.width,pointerLeft:null!=(A=p.pointerLeft)?A:Math.round(u/2),pointerTop:null!=(l=p.pointerTop)?l:Math.round(d/2)}),i.push(h),o+=c;break}case"clear-insight":{let r=Math.max(Math.ceil(e/1e3*30),1);i.push({type:"clear-insight",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"spinning-pointer":{let r=Math.max(Math.ceil(e/1e3*30),1);i.push({type:"spinning-pointer",startFrame:o,durationInFrames:r,title:t.title,subTitle:t.subTitle,taskId:t.taskId}),o+=r;break}case"pointer":i.push({type:"pointer",startFrame:o,durationInFrames:0,pointerImg:t.img,title:t.title,subTitle:t.subTitle,taskId:t.taskId})}}let c=Math.max(o,1);return{scriptFrames:i,totalDurationInFrames:c,fps:30,stepsDurationInFrames:c,imageWidth:r,imageHeight:n}}(y,{imageWidth:null==e?void 0:e.imageWidth,imageHeight:null==e?void 0:e.imageHeight}):null,[null==e?void 0:e.imageHeight,null==e?void 0:e.imageWidth,y]),b=(0,a.useRef)(null),w=(0,a.useRef)(null),E=(0,a.useRef)(null),[k,x]=(0,a.useState)({width:0,height:0});(0,a.useEffect)(()=>{let e=w.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e){let{width:e,height:r}=t.contentRect;x(t=>t.width===e&&t.height===r?t:{width:e,height:r})}});return t.observe(e),()=>t.disconnect()},[]);let S=function(e){var t,r;let{durationInFrames:n,fps:i,autoPlay:o=!1,loop:s=!1}=e,[A,l]=(0,a.useState)(0),[c,u]=(0,a.useState)(o),d=(0,a.useRef)(c),p=(0,a.useRef)(A),h=(0,a.useRef)(null!=(t=e.playbackRate)?t:1),f=(0,a.useRef)(n),g=(0,a.useRef)(i),m=(0,a.useRef)(s);d.current=c,p.current=A,h.current=null!=(r=e.playbackRate)?r:1,f.current=n,g.current=i,m.current=s,(0,a.useEffect)(()=>{let e;if(!c)return;let t=null,r=0,n=i=>{if(null!==t){let e=(i-t)*h.current;r+=e;let n=1e3/g.current;for(;r>=n;){r-=n;let e=p.current+1;if(e>=f.current)if(m.current)p.current=0,l(0);else{p.current=f.current-1,l(f.current-1),u(!1);return}else p.current=e,l(e)}}t=i,e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[c]);let y=()=>{p.current>=f.current-1&&(p.current=0,l(0))},v=(0,a.useCallback)(()=>{y(),u(!0)},[]),b=(0,a.useCallback)(()=>u(!1),[]);return{currentFrame:A,playing:c,play:v,pause:b,toggle:(0,a.useCallback)(()=>{d.current?u(!1):(y(),u(!0))},[]),seekTo:(0,a.useCallback)(e=>{let t=Math.max(0,Math.min(e,f.current-1));p.current=t,l(t)},[])}}({durationInFrames:Math.max(null!=(t=null==v?void 0:v.totalDurationInFrames)?t:1,1),fps:null!=(r=null==v?void 0:v.fps)?r:30,autoPlay:null==(n=null==e?void 0:e.autoPlay)||n,loop:!1,playbackRate:u}),C=(0,a.useMemo)(()=>{if(!v)return 0;for(let e=v.scriptFrames.length-1;e>=0;e--){let t=v.scriptFrames[e];if(t.taskId)return t.startFrame+t.durationInFrames-1}return Math.max(0,v.totalDurationInFrames-1)},[v]),j=(0,a.useCallback)(()=>{var e;S.playing?S.pause():(e=S.currentFrame,C>0&&e>=C&&S.seekTo(0),S.play())},[C,S.currentFrame,S.pause,S.play,S.playing,S.seekTo]);(0,a.useEffect)(()=>{!v||S.playing||!(S.currentFrame<v.totalDurationInFrames-1)&&C>0&&S.seekTo(C)},[C,v,S.currentFrame,S.playing,S.seekTo]),(0,a.useEffect)(()=>{if(!v||!(null==e?void 0:e.onTaskChange))return;if(!S.playing){null!==E.current&&(E.current=null,e.onTaskChange(null));return}let t=function(e,t){let r=null;for(let o of e){var n,i;if(0===o.durationInFrames){o.startFrame<=t&&(r=null!=(n=o.taskId)?n:r);continue}if(t<o.startFrame)break;r=null!=(i=o.taskId)?i:r}return r}(v.scriptFrames,S.currentFrame);t!==E.current&&(E.current=t,e.onTaskChange(t))},[v,null==e?void 0:e.onTaskChange,S.currentFrame,S.playing]);let I=(0,a.useMemo)(()=>{var e;let t;return v?(e=S.currentFrame,(t=At(v.scriptFrames,e,v.imageWidth,v.imageHeight,v.fps)).img?t:null):null},[v,S.currentFrame]),O=(0,a.useCallback)(()=>Ah(function*(){if(null==e?void 0:e.reportFileContent)try{var t,r;yield(t={content:e.reportFileContent,onDownloadReport:e.onDownloadReport},(r=function*(){let{content:e,defaultFileName:r="midscene_report.html",onDownloadReport:n,documentRef:i,urlRef:o,blobFactory:a,scheduleRevoke:s}=t;if(n)return void(yield n({content:e,defaultFileName:r}));let A=null!=i?i:globalThis.document;if(!A)throw Error("Report download requires a document context.");let l=null!=o?o:globalThis.URL;if(!(null==l?void 0:l.createObjectURL)||!(null==l?void 0:l.revokeObjectURL))throw Error("Report download requires URL.createObjectURL support.");let c=(null!=a?a:(e,t)=>new Blob(e,t))([e],{type:"text/html"}),u=l.createObjectURL(c),d=A.createElement("a");d.href=u,d.download=r,d.style.display="none",A.body.appendChild(d);try{d.click()}finally{A.body.removeChild(d),(null!=s?s:e=>setTimeout(e,0))(()=>{l.revokeObjectURL(u)})}},function(){var e=this,t=arguments;return new Promise(function(n,i){var o=r.apply(e,t);function a(e){s7(o,n,i,a,s,"next",e)}function s(e){s7(o,n,i,a,s,"throw",e)}a(void 0)})})())}catch(e){G(e,{title:"Failed to download report"})}})(),[null==e?void 0:e.onDownloadReport,null==e?void 0:e.reportFileContent]),P=(0,a.useMemo)(()=>I&&(I.title||I.subTitle)?{title:I.title,subTitle:I.subTitle}:null,[I]),[T,N]=(0,a.useState)(!1),[M,D]=(0,a.useState)(0),B=(0,a.useRef)(!1),[z,L]=(0,a.useState)(!0),F=(0,a.useRef)(null),K=(0,a.useCallback)(()=>{L(!0),F.current&&clearTimeout(F.current),T||(F.current=setTimeout(()=>L(!1),3e3))},[T]),U=(0,a.useCallback)(()=>{L(!0),F.current&&clearTimeout(F.current)},[]),Q=(0,a.useCallback)(()=>{F.current&&clearTimeout(F.current),T||(F.current=setTimeout(()=>L(!1),1e3))},[T]);(0,a.useEffect)(()=>{T&&(L(!0),F.current&&(clearTimeout(F.current),F.current=null))},[T]),(0,a.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.target)?void 0:t.tagName;"INPUT"!==r&&"TEXTAREA"!==r&&"SELECT"!==r&&"Space"===e.code&&(e.preventDefault(),j())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[j]);let Z=(0,a.useRef)(null),J=(0,a.useCallback)(e=>{if(!v||!Z.current)return;let t=Z.current;t.setPointerCapture(e.pointerId);let r=e=>{let r=t.getBoundingClientRect(),n=Math.max(0,Math.min(1,(e-r.left)/r.width));S.seekTo(Math.round(n*C))};r(e.clientX);let n=e=>r(e.clientX),i=()=>{t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",i)};t.addEventListener("pointermove",n),t.addEventListener("pointerup",i)},[v,S,C]),[X,H]=(0,a.useState)(!1),V=(0,a.useCallback)(()=>{let e=b.current;e&&(document.fullscreenElement?document.exitFullscreen().then(()=>H(!1)):e.requestFullscreen().then(()=>H(!0)))},[]);(0,a.useEffect)(()=>{let e=()=>H(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);let q=(0,a.useCallback)(()=>Ah(function*(){if(v&&!B.current){B.current=!0,N(!0),D(0);try{var e,t;yield(e={autoZoom:l},t=e=>D(Math.round(100*e)),Al(function*(){if(Ac)throw Error("Video export is already in progress");Ac=!0;try{var r,n,i;yield(r=v,n=e,i=t,Al(function*(){var e;let{totalDurationInFrames:t,fps:o}=r,a=null==(e=null==n?void 0:n.autoZoom)||e,s=new Set;for(let e of r.scriptFrames)e.img&&s.add(e.img);let A=new Map;yield Promise.all([...s].map(e=>Al(function*(){try{A.set(e,(yield Au(e)))}catch(e){}})()));let l=new Set([aW]);for(let e of r.scriptFrames)e.pointerImg&&l.add(e.pointerImg);let c=new Map;yield Promise.all([...l].map(e=>Al(function*(){try{c.set(e,(yield Au(e)))}catch(e){}})()));let u=null;try{u=yield Au(aY)}catch(e){}let d=document.createElement("canvas");d.width=960,d.height=540;let p=d.getContext("2d"),h=d.captureStream(o),f=new MediaRecorder(h,{mimeType:"video/webm"}),g=[];return f.ondataavailable=e=>{e.data.size>0&&g.push(e.data)},new Promise((e,n)=>{let s=null,l=!1,d=0,m=performance.now(),y=m,v=null,b=null,w=1e3/o,E=()=>{v&&clearTimeout(v),b&&clearTimeout(b),document.removeEventListener("visibilitychange",x),h.getTracks().forEach(e=>e.stop())},k=e=>{l||s||(s=e,"inactive"!==f.state?f.stop():(E(),l=!0,n(e)))},x=()=>{document.hidden&&k(Error("Video export was interrupted because the report tab was hidden"))};f.onerror=()=>{k(Error("MediaRecorder error"))},f.onstop=()=>{if(E(),l)return;if(l=!0,s)return void n(s);if(0===g.length)return void n(Error("No video data"));let t=new Blob(g,{type:"video/webm"}),r=URL.createObjectURL(t),i=document.createElement("a");i.href=r,i.download="midscene_replay.webm",i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3),e()},document.addEventListener("visibilitychange",x),f.start();let S=e=>{if(!l&&"inactive"!==f.state){if(d>0&&e-y>Math.max(2e3,10*w))return void k(Error("Video export was interrupted because rendering stalled"));y=e,p.clearRect(0,0,960,540),function(e,t,r,n,i,o,a){var s,A,l,c,u,d,p,h,f,g,m,y,v,b,w,E,k;let x,{scriptFrames:S,imageWidth:C,imageHeight:j,fps:I}=r,O=At(S,t,C,j,I);if(!O.img)return;let{img:P,prevImg:R,imageWidth:T,imageHeight:N,camera:M,prevCamera:D,pointerMoved:B,imageChanged:z,rawProgress:L,frameInScript:F,spinning:K,spinningElapsedMs:U,currentPointerImg:Q,pointerVisible:Z,insights:J}=O,X=a?B?Math.min(L/.375,1):L:1,{camLeft:H,camTop:G,camWidth:V}=(h=D,f=M,g=T,m=B?L<=.375?0:Math.min((L-.375)/.625,1):L,a?{camLeft:(y=h.left,v=f.left,y+(v-y)*m),camTop:(b=h.top,w=f.top,b+(w-b)*m),camWidth:(E=h.width,k=f.width,E+(k-E)*m)}:{camLeft:0,camTop:0,camWidth:g}),q=(A=D.pointerLeft,l=M.pointerLeft,A+(l-A)*X),W=(c=D.pointerTop,u=M.pointerTop,c+(u-c)*X),Y=T/V,{offsetX:_,offsetY:$,contentWidth:ee,contentHeight:et}=Ar(960,540,T,N),er=-(ee/T*H),en=-(et/N*G),ei=z?Math.min(Math.max(F/10,0),1):1;e.fillStyle="#000",e.fillRect(0,0,960,540);let eo=(t,r)=>{let i=n.get(t);i&&!(r<=0)&&(e.save(),e.globalAlpha=r,e.beginPath(),e.rect(0,0,960,540),e.clip(),e.translate(_+er*Y,$+en*Y),e.scale(Y,Y),e.drawImage(i,0,0,ee,et),e.restore())};z&&R&&ei<1&&eo(R,1-ei),eo(P,z?ei:1),J.length>0&&function(e,t,r,n){for(let i of(e.save(),e.beginPath(),e.rect(n.offsetX,n.offsetY,n.contentWidth,n.contentHeight),e.clip(),t))if(!(i.alpha<=0)){if(e.save(),e.globalAlpha*=i.alpha,i.highlightElement){let t=Ad(a$(i.highlightElement),r,n);e.fillStyle="rgba(253, 89, 7, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#fd5907",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowColor="rgba(51, 51, 51, 0.4)",e.shadowBlur=2,e.shadowOffsetX=4,e.shadowOffsetY=4,e.strokeRect(t.left,t.top,t.width,t.height),e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}if(i.searchArea){let t=Ad(i.searchArea,r,n);e.fillStyle="rgba(2, 131, 145, 0.4)",e.fillRect(t.left,t.top,t.width,t.height),e.strokeStyle="#028391",e.lineWidth=1,e.strokeRect(t.left,t.top,t.width,t.height)}e.restore()}e.restore()}(e,J,{zoom:Y,tx:er,ty:en},{offsetX:_,offsetY:$,contentWidth:ee,contentHeight:et,imageWidth:T,imageHeight:N});let ea=N/T*V,es=_+(q-H)/V*ee,eA=$+(W-G)/ea*et,el=(An(ee,"contentWidth"),Ai(Ao(T).scale*(ee/T))),ec=Aa(el),eu=null!=(s=i.get(Q))?s:i.get(aW),ed=Ae(Z,M,D,T,N);K&&o&&(d=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},el),p=p={width:ec.size,height:ec.size,centerOffsetX:ec.centerOffset,centerOffsetY:ec.centerOffset},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(p)).forEach(function(e){Object.defineProperty(d,e,Object.getOwnPropertyDescriptor(p,e))}),x=(Math.sin(U/500-Math.PI/2)+1)/2*Math.PI*2,e.save(),e.translate(es,eA),e.rotate(x),e.drawImage(o,-d.centerOffsetX,-d.centerOffsetY,d.width,d.height),e.restore()),!K&&ed&&eu&&e.drawImage(eu,es-el.hotspotX,eA-el.hotspotY,el.width,el.height)}(p,d,r,A,c,u,a),null==i||i((d+1)/t),(d+=1)<t?(m+=w,b=setTimeout(()=>{requestAnimationFrame(S)},Math.max(0,m-performance.now()))):v=setTimeout(()=>{"inactive"!==f.state&&f.stop()},2*w)}};requestAnimationFrame(e=>{y=e,m=e,S(e)})})})())}finally{Ac=!1}})()),A.success("Video exported")}catch(e){console.error("Export failed:",e),G(e,{title:"Video export failed"})}finally{B.current=!1,N(!1),D(0)}}})(),[l,v]),W=(0,a.useMemo)(()=>{if(!v||C<=0)return[];let e=[];for(let t of v.scriptFrames){if("img"!==t.type&&"insight"!==t.type||0===t.durationInFrames)continue;let r=t.startFrame,n=r/C*100;if(n>1&&n<99){let i=[t.title,t.subTitle].filter(Boolean);e.push({percent:n,title:i.length>0?i.join(": "):`Chapter ${e.length+1}`,frame:r})}}return e},[v,C]),Y=null!=(i=null==e?void 0:e.reportFileContent)?i:null,_=(null==e?void 0:e.canDownloadReport)!==!1;if(!y||0===y.length||!v)return Y&&_?(0,o.jsx)("div",{className:"player-container player-container-empty",children:(0,o.jsxs)("div",{className:"player-empty-state",children:[(0,o.jsx)("span",{className:"player-empty-text",children:"No replay available"}),(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(sH.A,{}),onClick:()=>{O()},children:"Download report"})]})}):null;let $=(null==I?void 0:I.imageWidth)||v.imageWidth,ee=(null==I?void 0:I.imageHeight)||v.imageHeight,et=ee>$,er=C>0?Math.min(100,S.currentFrame/C*100):0;return(0,o.jsx)("div",{className:"player-container","data-fit-mode":null==e?void 0:e.fitMode,children:(0,o.jsxs)("div",{className:"canvas-container",ref:b,onMouseMove:K,onMouseEnter:U,onMouseLeave:Q,children:[(0,o.jsx)("div",{className:"player-wrapper","data-portrait":et?"":void 0,style:{aspectRatio:`${$}/${ee}`},children:(0,o.jsx)("div",{ref:w,style:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",overflow:"hidden"},onClick:j,children:(s=k.width>0&&k.height>0?Math.min(k.width/$,k.height/ee):1,(0,o.jsx)("div",{style:{width:$*s,height:ee*s,flexShrink:0,position:"relative",overflow:"hidden"},children:(0,o.jsx)("div",{style:{width:$,height:ee,transformOrigin:"0 0",transform:`scale(${s})`},children:(0,o.jsx)(As,{frameMap:v,autoZoom:l&&S.playing,frame:S.currentFrame,width:$,height:ee,fps:v.fps})})}))})}),f&&P&&(0,o.jsxs)("div",{className:"player-subtitle",children:[P.title&&(0,o.jsx)("span",{className:"player-subtitle-badge",children:P.title}),P.subTitle&&(0,o.jsx)("span",{className:"player-subtitle-text",children:P.subTitle})]}),!(null==e?void 0:e.hideControls)&&(0,o.jsxs)("div",{className:`control-bar ${z?"":"hidden"}`,onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("div",{className:"status-icon",onClick:j,children:S.playing?(0,o.jsx)(sG.A,{}):(0,o.jsx)(sV.A,{})}),(0,o.jsxs)("span",{className:"time-display",children:[Af(Math.min(S.currentFrame,C),v.fps)," ","/ ",Af(C+1,v.fps)]}),(0,o.jsxs)("div",{className:"seek-bar-track",ref:Z,onPointerDown:J,children:[(0,o.jsx)("div",{className:"seek-bar-fill",style:{width:`${er}%`}}),(0,o.jsx)("div",{className:"seek-bar-knob",style:{left:`${er}%`}}),W.map(e=>(0,o.jsx)(h.A,{title:e.title,overlayClassName:"chapter-tooltip",children:(0,o.jsx)("div",{className:"chapter-marker",style:{left:`${e.percent}%`},onClick:t=>{t.stopPropagation(),S.seekTo(e.frame)}})},e.percent))]}),(0,o.jsxs)("div",{className:"player-custom-controls",children:[Y&&_?(0,o.jsx)(h.A,{title:"Download Report",children:(0,o.jsx)("div",{className:"status-icon",onClick:()=>{O()},children:(0,o.jsx)(sH.A,{})})}):null,(0,o.jsx)(s0.A,{trigger:["hover","click"],placement:"topRight",overlayStyle:{minWidth:"148px"},dropdownRender:()=>(0,o.jsxs)("div",{className:"player-settings-dropdown",children:[(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px",borderRadius:"4px",cursor:T?"not-allowed":"pointer",opacity:T?.5:1},onClick:T?void 0:q,children:[(0,o.jsx)("span",{style:{width:16,height:16,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:T?(0,o.jsx)(s1.A,{type:"circle",percent:M,size:16,strokeWidth:14,showInfo:!1,strokeColor:"#1677ff",trailColor:"rgba(0, 0, 0, 0.12)"}):(0,o.jsx)(sq.A,{style:{width:"16px",height:"16px"}})}),(0,o.jsx)("span",{className:"player-export-label",children:T?`Exporting ${M}%`:"Export video"})]}),(0,o.jsx)("div",{className:"player-settings-divider"}),(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,o.jsx)(s3,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Focus on cursor"})]}),(0,o.jsx)(s2.A,{size:"small",checked:l,onChange:e=>c(e)})]}),(0,o.jsxs)("div",{className:"player-settings-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 8px",borderRadius:"4px"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[(0,o.jsx)(sW.A,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px",marginRight:"16px"},children:"Subtitle"})]}),(0,o.jsx)(s2.A,{size:"small",checked:f,onChange:e=>m(e)})]}),(0,o.jsx)("div",{className:"player-settings-divider"}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"4px",height:"32px",padding:"0 8px"},children:[(0,o.jsx)(sY.A,{style:{width:"16px",height:"16px"}}),(0,o.jsx)("span",{style:{fontSize:"14px"},children:"Playback speed"})]}),[.5,1,1.5,2].map(e=>(0,o.jsxs)("div",{onClick:()=>d(e),style:{height:"32px",lineHeight:"32px",padding:"0 8px 0 28px",fontSize:"14px",cursor:"pointer",borderRadius:"4px"},className:`player-speed-option${u===e?" active":""}`,children:[e,"x"]},e))]}),menu:{items:[]},children:(0,o.jsx)("div",{className:"status-icon",children:(0,o.jsx)(s5,{style:{width:"16px",height:"16px"}})})}),(0,o.jsx)("div",{className:"status-icon",onClick:V,children:X?(0,o.jsx)(s_.A,{}):(0,o.jsx)(s$.A,{})})]})]})]})})}let Am=e=>{let{result:t,loading:r,serverValid:n,serviceMode:i,replayScriptsInfo:a,replayCounter:s,loadingProgressText:A,verticalMode:l=!1,notReadyMessage:c,fitMode:u,autoZoom:d,actionType:p,canDownloadReport:h,onDownloadReport:f}=e,g="result-wrapper";l&&(g+=" vertical-mode-result"),a&&l&&(g+=" result-wrapper-compact");let m=sU,y=p&&iz.includes(p);if(n||"Server"!==i)if(r)m=(0,o.jsxs)("div",{className:"loading-container",children:[(0,o.jsx)(en.A,{spinning:r,indicator:(0,o.jsx)(aU.A,{spin:!0})}),(0,o.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,o.jsx)(sL,{text:A,speed:3})})]});else if(null==t?void 0:t.error){let e=(0,o.jsx)("pre",{style:{color:"#ff4d4f",whiteSpace:"pre-wrap"},children:null==t?void 0:t.error});m=t.reportHTML||a?(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto",maxHeight:"40%",overflow:"auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Error:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Ag,{replayScripts:null==a?void 0:a.scripts,imageWidth:null==a?void 0:a.width,imageHeight:null==a?void 0:a.height,reportFileContent:t.reportHTML||null,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]}):e}else if(y&&(null==t?void 0:t.result)!==void 0&&a){let e="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}),r=(null==t?void 0:t.reportHTML)||null;m=(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Ag,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:r,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]})}else if(a){let e=(null==t?void 0:t.reportHTML)||null;m=(0,o.jsx)(Ag,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:e,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)}else if(y&&(null==t?void 0:t.result)!==void 0&&(null==t?void 0:t.reportHTML)){let e="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)});m=(0,o.jsxs)("div",{className:"combined-result-layout",children:[(0,o.jsxs)("div",{style:{flex:"0 0 auto"},children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Output:"}),e]}),(0,o.jsxs)("div",{className:"combined-result-section",children:[(0,o.jsx)("div",{style:{fontWeight:"bold",marginBottom:"8px"},children:"Report:"}),(0,o.jsx)("div",{className:"combined-result-player",children:(0,o.jsx)(Ag,{reportFileContent:t.reportHTML,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s)})]})]})}else y&&(null==t?void 0:t.result)!==void 0?m="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}):(null==t?void 0:t.reportHTML)?m=(0,o.jsx)(Ag,{reportFileContent:t.reportHTML,fitMode:u,autoZoom:d,canDownloadReport:null!=h?h:"In-Browser"!==i,onDownloadReport:f},s):(null==t?void 0:t.result)!==void 0&&(m="string"==typeof(null==t?void 0:t.result)?(0,o.jsx)("pre",{children:null==t?void 0:t.result}):(0,o.jsx)("pre",{children:JSON.stringify(null==t?void 0:t.result,null,2)}));else m=sK(c);return(0,o.jsx)("div",{className:g,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto",justifyContent:"center"},children:m})},Ay=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none","aria-label":"Playground",viewBox:"0 0 20 20"},e),r=r={children:[(0,o.jsx)("rect",{width:20,height:20,fill:"#2B83FF",rx:10}),(0,o.jsx)("path",{fill:"#2B83FF",stroke:"#fff",strokeLinejoin:"round",strokeWidth:1.125,d:"M6.866 5.882a.56.56 0 0 1 .667-.078l3.248 1.875 3.247 1.875a.563.563 0 0 1 0 .974l-3.247 1.875-3.248 1.875a.563.563 0 0 1-.784-.74l1.749-3.497-1.75-3.498a.56.56 0 0 1 .118-.661Z"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function Av(){return(0,a.createElement)("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,focusable:!1},(0,a.createElement)("path",{d:"M3 7.99984L6.33333 11.3332L13 4.6665",stroke:"#188F4D",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}))}let Ab="ZodOptional",Aw="ZodDefault",AE="ZodNullable",Ak="ZodObject",Ax="midscene_location_field_flag",AS=e=>"object"==typeof e&&null!==e&&("shape"in e||"ZodObject"===e.type),AC=e=>{var t,r,n;if((null==(t=e._def)?void 0:t.typeName)===Ak){let t;if(e._def.shape&&(t="function"==typeof e._def.shape?e._def.shape():e._def.shape),!t&&e.shape&&(t=e.shape),t&&Ax in t)return!0;let n=(null==(r=e._def)?void 0:r.description)||e.description||"";if("string"==typeof n&&n.toLowerCase().includes("input field"))return!0}if("object"==typeof e&&null!==e){let t=e.description||(null==(n=e._def)?void 0:n.description)||"";if("string"==typeof t){let e=t.toLowerCase();if(e.includes("input field")||e.includes("element")||e.includes("locate"))return!0}if("ZodObject"===e.typeName||"ZodObject"===e.type)return"string"==typeof t&&t.toLowerCase().includes("input field")}return!1},Aj=e=>{var t,r,n,i,o;let a=e,s=!1,A=!1;for(;(null==(t=a._def)?void 0:t.typeName)===Ab||(null==(r=a._def)?void 0:r.typeName)===Aw||(null==(n=a._def)?void 0:n.typeName)===AE;)(null==(i=a._def)?void 0:i.typeName)===Ab&&(s=!0),(null==(o=a._def)?void 0:o.typeName)===Aw&&(A=!0),a=a._def.innerType||a;return{actualField:a,isOptional:s,hasDefault:A}},AI=(e,t)=>{var r,n;if(!(null==e?void 0:e.length)||!t)return null;let i=e.find(e=>e.interfaceAlias===t||e.name===t);if(!(null==i?void 0:i.paramSchema)||!AS(i.paramSchema))return null;let o=i.paramSchema.shape||{},a=Object.keys(o);if(1!==a.length)return null;let[s]=a,{actualField:A}=Aj(o[s]),l=AC(A);if(!("ZodString"===(null==(r=A._def)?void 0:r.typeName)||l))return null;let c=(null==(n=A._def)?void 0:n.description)||A.description||(l?"Describe the element you want to interact with":`Enter ${s}`);return{name:s,placeholder:c}};var AO=r(8460),AP=r(3896),AR=r(3246),AT=r(1631),AN=r(4665);let AM=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:6,height:10,fill:"none",viewBox:"0 0 6 10"},e),r=r={children:(0,o.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M.195 9.138a.667.667 0 0 1 0-.943l3.529-3.528L.195 1.138a.667.667 0 0 1 .943-.943l4 4c.26.26.26.683 0 .943l-4 4a.667.667 0 0 1-.943 0",clipRule:"evenodd"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},AD=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:[(0,o.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M1.505 4.164c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,o.jsx)("path",{stroke:"#878787",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.33,d:"M7.57 3.465v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};var AB={};AB.d=(e,t)=>{for(var r in t)AB.o(t,r)&&!AB.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},AB.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),AB.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var Az={};function AL(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}AB.r(Az),AB.d(Az,{create:()=>v.vt});let{create:AF}=Az,AK="midscene-prompt-history-v2",AU="midscene-last-selected-type",AQ=AF((e,t)=>{let r;return{history:(r=localStorage.getItem(AK))?JSON.parse(r):{},lastSelectedType:localStorage.getItem(AU)||"aiAct",clearHistory:r=>{let n=AL({},t().history);delete n[r],e({history:n}),localStorage.setItem(AK,JSON.stringify(n))},addHistory:r=>{var n,i;let{type:o}=r,a=t().history,s=a[o]||[],A=JSON.stringify({prompt:r.prompt,params:r.params}),l=[r,...s.filter(e=>JSON.stringify({prompt:e.prompt,params:e.params})!==A)];l.length>10&&(l.length=10);let c=(n=AL({},a),i=i={[o]:l},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))}),n);e({history:c}),localStorage.setItem(AK,JSON.stringify(c))},getHistoryForType:e=>t().history[e]||[],setLastSelectedType:t=>{e({lastSelectedType:t}),localStorage.setItem(AU,t)}}}),AZ=e=>{if(!e)return"";if("aiAct"===e)return"Action";let t=e.startsWith("ai")?e.slice(2):e;if(t.startsWith("IOS"))return t.substring(3).replace(/([A-Z])/g," $1").replace(/^/,"IOS").trim();let r=t.replace(/([A-Z])/g," $1").trim(),n=r.split(" ");return(n.length>3?n.slice(-3).join(" "):r).replace(/\b\w/g,e=>e.toUpperCase())};function AJ(e){return{supportsImeStrategy:"android"===e,supportsKeyboardDismissStrategy:"android"===e||"harmony"===e,supportsAutoDismissKeyboard:"android"===e||"ios"===e||"harmony"===e,supportsAlwaysRefreshScreenInfo:"android"===e}}function AX(e){return Object.values(AJ(e)).some(Boolean)}var AH=r(6356);let AG=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27"},e),r=r={children:(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},AV=e=>{let t,{showDeepLocateOption:r=!1,showDeepThinkOption:n=!1,enableTracking:i=!1,showDataExtractionOptions:a=!1,hideDomAndScreenshotOptions:s=!1,deviceType:A,trigger:l,popupPlacement:c="bottomRight"}=e,u=X(e=>e.forceSameTabNavigation),d=X(e=>e.setForceSameTabNavigation),p=X(e=>e.deepLocate),f=X(e=>e.setDeepLocate),g=X(e=>e.deepThink),m=X(e=>e.setDeepThink),y=X(e=>e.screenshotIncluded),v=X(e=>e.setScreenshotIncluded),b=X(e=>e.domIncluded),w=X(e=>e.setDomIncluded),E=X(e=>e.imeStrategy),k=X(e=>e.setImeStrategy),x=X(e=>e.autoDismissKeyboard),S=X(e=>e.setAutoDismissKeyboard),C=X(e=>e.keyboardDismissStrategy),j=X(e=>e.setKeyboardDismissStrategy),I=X(e=>e.alwaysRefreshScreenInfo),O=X(e=>e.setAlwaysRefreshScreenInfo),P=AJ(A),R=AX(A);if(!i&&!r&&!n&&!a&&!R)return null;let T=(t=[],i&&t.push({label:(0,o.jsx)(AH.A,{onChange:e=>d(e.target.checked),checked:u,children:"Limit popup to current tab"}),key:"track-config"}),r&&t.push({label:(0,o.jsx)(AH.A,{onChange:e=>{f(e.target.checked)},checked:p,children:"Deep Locate"}),key:"deep-locate-config"}),n&&t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Deep Think"}),(0,o.jsxs)(AN.A.Group,{size:"small",value:g,onChange:e=>m(e.target.value),children:[(0,o.jsx)(h.A,{title:"Controlled by MIDSCENE_MODEL_REASONING_ENABLED env variable",children:(0,o.jsx)(AN.A,{value:"unset",children:"Auto"})}),(0,o.jsx)(AN.A,{value:!0,children:"On"}),(0,o.jsx)(AN.A,{value:!1,children:"Off"})]})]}),key:"deep-think-config"}),a&&!s&&(t.push({label:(0,o.jsx)(AH.A,{onChange:e=>{v(e.target.checked)},checked:y,children:"Include screenshot in request"}),key:"screenshot-included-config"}),t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Include DOM info in request"}),(0,o.jsxs)(AN.A.Group,{size:"small",value:b,onChange:e=>w(e.target.value),children:[(0,o.jsx)(AN.A,{value:!1,children:"Off"}),(0,o.jsx)(AN.A,{value:!0,children:"All"}),(0,o.jsx)(AN.A,{value:"visible-only",children:"Visible only"})]})]}),key:"dom-included-config"})),P.supportsImeStrategy&&(t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"IME strategy"}),(0,o.jsxs)(AN.A.Group,{size:"small",value:E,onChange:e=>k(e.target.value),children:[(0,o.jsx)(AN.A,{value:"always-yadb",children:"Always YADB"}),(0,o.jsx)(AN.A,{value:"yadb-for-non-ascii",children:"YADB for non-ASCII"})]})]}),key:"ime-strategy-config"}),P.supportsAutoDismissKeyboard&&t.push({label:(0,o.jsx)(AH.A,{onChange:e=>S(e.target.checked),checked:x,children:aX}),key:"auto-dismiss-keyboard-config"}),P.supportsKeyboardDismissStrategy&&t.push({label:(0,o.jsxs)("div",{style:{padding:"4px 0"},children:[(0,o.jsx)("div",{style:{marginBottom:"4px",fontSize:"14px"},children:"Keyboard dismiss strategy"}),(0,o.jsxs)(AN.A.Group,{size:"small",value:C,onChange:e=>j(e.target.value),children:[(0,o.jsx)(AN.A,{value:"esc-first",children:"ESC first"}),(0,o.jsx)(AN.A,{value:"back-first",children:"Back first"})]})]}),key:"keyboard-dismiss-strategy-config"}),P.supportsAlwaysRefreshScreenInfo&&t.push({label:(0,o.jsx)(AH.A,{onChange:e=>O(e.target.checked),checked:I,children:"Always refresh screen info"}),key:"always-refresh-screen-info-config"})),!P.supportsImeStrategy&&P.supportsAutoDismissKeyboard&&t.push({label:(0,o.jsx)(AH.A,{onChange:e=>S(e.target.checked),checked:x,children:aX}),key:"auto-dismiss-keyboard-config"}),t),N=null!=l?l:(0,o.jsx)("button",{"aria-label":"Open run configuration",className:"selector-trigger-button",type:"button",children:(0,o.jsx)(AG,{width:24,height:24})});return(0,o.jsx)("div",{className:"selector-trigger",children:(0,o.jsx)(s0.A,{getPopupContainer:e=>e.ownerDocument.body,menu:{items:T},overlayClassName:"config-selector-dropdown",overlayStyle:{zIndex:10010},placement:c,trigger:["click"],children:N})})};var Aq=r(7991),AW=r(2752);let{TextArea:AY}=m.A,A_=(e,t)=>`${e}${t?" (Optional)":""}`,A$=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=a||`Enter ${t}`;return(0,o.jsx)(av.A.Item,{name:["params",t],label:A_(r,!n),rules:n?[{required:!0,message:`Please input ${t}`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(m.A,{placeholder:s})},t)},A0=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=a||`Describe the ${t}, use natural language`;return(0,o.jsx)(av.A.Item,{name:["params",t],label:A_(r,!n),rules:n?[{required:!0,message:`The ${t} is required`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(AY,{rows:2,placeholder:s})},t)},A1=e=>{var t;let{name:r,label:n,fieldSchema:i,isRequired:a,marginBottom:s,placeholder:A}=e,l=((null==(t=i._def)?void 0:t.values)||[]).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}));return(0,o.jsx)(av.A.Item,{name:["params",r],label:n,rules:a?[{required:!0,message:`Please select ${r}`}]:[],style:{marginBottom:s},colon:!1,children:(0,o.jsx)(Aq.A,{placeholder:A||`Select ${r}`,options:l})},r)},A2=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e,s=500*("distance"===t),A=a&&Number(a)||s,l="distance"===t?1e4:void 0;return(0,o.jsx)(av.A.Item,{name:["params",t],label:`${r}${"distance"===t?" (px)":""}`,rules:n?[{required:!0,message:`Please input ${t}`},{type:"number",min:0,message:`${r} must be at least 0`}]:[{type:"number",min:0,message:`${r} must be at least 0`}],style:{flex:"distance"===t?1:void 0,marginBottom:i},colon:!1,children:(0,o.jsx)(AW.A,{placeholder:A.toString(),min:0,max:l,step:"distance"===t?10:1,style:{width:"100%"}})},t)},A3=e=>{let{name:t,label:r,isRequired:n,marginBottom:i,placeholder:a}=e;return(0,o.jsx)(av.A.Item,{name:["params",t],label:A_(r,!n),rules:n?[{required:!0,message:`Please select ${t}`}]:[],style:{marginBottom:i},colon:!1,children:(0,o.jsx)(Aq.A,{placeholder:a||`Select ${t}`,options:[{value:!0,label:"True"},{value:!1,label:"False"}]})},t)};var A5=r(316);let A7=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16"},e),r=r={children:(0,o.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},A4=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25"},e),r=r={children:[(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"}),(0,o.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},A8=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19"},e),r=r={children:[(0,o.jsxs)("g",{stroke:"currentColor",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,o.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,o.jsx)("path",{strokeLinecap:"round",d:"M10.519 5.42a3 3 0 0 0-2.122-.88 3 3 0 0 0-2.121.88M12.98 12.499l3.182 3.182"})]}),(0,o.jsx)("defs",{children:(0,o.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,o.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},{Text:A6}=u.A,A9=e=>{let{onSelect:t,history:r,currentType:n,trigger:i,popupPlacement:s="bottom",title:A="History",showClear:l=!0,onClear:c,searchPlaceholder:u="Search",emptyText:d="No history record",noMatchText:p="No matching history record",renderItemActions:h,renderItemLabel:f,overlayClassName:y,popupWidth:v=320,popupHeight:b=400,portalContainerSelector:w}=e,[E,k]=(0,a.useState)(!1),[x,S]=(0,a.useState)(""),[C,j]=(0,a.useState)(0),I=AQ(e=>e.clearHistory),O=(0,a.useRef)(null),P=(0,a.useRef)(null),[R,T]=(0,a.useState)(null),[N,M]=(0,a.useState)(null),[D,B]=(0,a.useState)(!1),z=(0,a.useMemo)(()=>{let e=Date.now(),t=e-6048e5,n=e-31536e6,i=r.filter(e=>e.prompt.toLowerCase().includes(x.toLowerCase()));return{recent7Days:i.filter(e=>e.timestamp>=t),recent1Year:i.filter(e=>e.timestamp<t&&e.timestamp>=n),older:i.filter(e=>e.timestamp<n)}},[r,x]),L=()=>{k(!1)};(0,a.useEffect)(()=>{if(!E)return;let e=()=>{var e,t;if(!P.current)return;let r=P.current.getBoundingClientRect(),n=w?P.current.closest(w):null,i=null==n?void 0:n.getBoundingClientRect(),o=null!=(e=null==i?void 0:i.width)?e:window.innerWidth,a=null!=(t=null==i?void 0:i.height)?t:window.innerHeight,A=i?r.right-i.left:r.right,l=i?r.top-i.top:r.top,c=i?r.bottom-i.top:r.bottom,u=Math.max(16,o-v-16),d=Math.max(16,a-b-16);T({left:Math.min(Math.max(16,A-v),u),top:Math.min(Math.max(16,"top"===s?l-b-8:c+8),d)}),M(null!=n?n:document.body),B(!!n)},t=e=>{O.current&&!O.current.contains(e.target)&&P.current&&!P.current.contains(e.target)&&k(!1)};e();let r=setTimeout(()=>{document.addEventListener("click",t)},100);return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{clearTimeout(r),document.removeEventListener("click",t),window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[E,b,s,v,w]);let F=(e,r)=>0===r.length?null:(0,o.jsxs)("div",{className:"history-group",children:[(0,o.jsx)("div",{className:"history-group-title",children:e}),r.map((e,r)=>(0,o.jsxs)("div",{className:"history-item",onClick:()=>{t(e),k(!1)},children:[(0,o.jsx)("span",{className:"history-item-label",children:f?f(e,{close:L}):e.prompt}),h?(0,o.jsx)("span",{className:"history-item-actions",onClick:e=>e.stopPropagation(),children:h(e,{close:L,scrollVersion:C})}):null]},`${e.timestamp}-${r}`))]},e);return(0,o.jsxs)("div",{className:"history-selector-wrapper",children:[(0,o.jsx)("div",{className:"selector-trigger",onClick:()=>k(e=>!e),ref:P,children:null!=i?i:(0,o.jsx)(A4,{width:24,height:24})}),E&&R&&N&&(0,A5.createPortal)((0,o.jsx)("div",{className:y?`history-modal-overlay ${y}${D?" history-modal-overlay-in-container":""}`:`history-modal-overlay${D?" history-modal-overlay-in-container":""}`,ref:O,style:R,children:(0,o.jsxs)("div",{className:"history-modal-container",children:[(0,o.jsxs)("div",{className:"history-modal-header",children:[(0,o.jsxs)(A6,{strong:!0,style:{fontSize:"16px"},children:[A," (",r.length,")"]}),(0,o.jsx)(g.Ay,{size:"small",type:"text",icon:(0,o.jsx)(A7,{width:16,height:16}),onClick:()=>k(!1),className:"close-button"})]}),(0,o.jsx)("div",{className:"history-search-section",children:(0,o.jsxs)("div",{className:"search-input-wrapper",children:[(0,o.jsx)(m.A,{placeholder:u,value:x,onChange:e=>S(e.target.value),prefix:(0,o.jsx)(A8,{width:18,height:18}),className:"search-input",allowClear:!0}),l?(0,o.jsx)(g.Ay,{type:"link",onClick:()=>{c?c():I(n),S(""),k(!1)},className:"clear-button",disabled:0===r.length,children:"Clear"}):null]})}),(0,o.jsx)("div",{className:"history-content",onScroll:()=>{j(e=>e+1)},children:0===r.length?(0,o.jsx)("div",{className:"no-results",children:(0,o.jsx)(A6,{type:"secondary",children:d})}):(0,o.jsxs)(o.Fragment,{children:[F("Last 7 days",z.recent7Days),F("Last 1 year",z.recent1Year),F("Earlier",z.older),x&&0===z.recent7Days.length&&0===z.recent1Year.length&&0===z.older.length&&(0,o.jsx)("div",{className:"no-results",children:(0,o.jsx)(A6,{type:"secondary",children:p})})]})})]})}),N)]})};function le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}let{TextArea:lt}=m.A,lr=e=>{var t,r,n,i,s,A,l;let{runButtonEnabled:c,form:u,serviceMode:d,selectedType:p,dryMode:f,stoppable:y,loading:v,onRun:b,onStop:w,clearPromptAfterRun:E=!0,actionSpace:k,hideDomAndScreenshotOptions:x=!1,deviceType:S,chrome:C}=e,[j,I]=(0,a.useState)(!1),[O,P]=(0,a.useState)(""),R="aiQuery"===p?"What do you want to query?":"aiAssert"===p?"What do you want to assert?":"aiTap"===p?"What element do you want to tap?":"aiDoubleClick"===p?"What element do you want to double-click?":"aiHover"===p?"What element do you want to hover over?":"aiInput"===p?"Format: <value> | <element>\nExample: hello world | search box":"aiRightClick"===p?"What element do you want to right-click?":"aiKeyboardPress"===p?"Format: <key> | <element (optional)>\nExample: Enter | text field":"aiScroll"===p?"Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content":"aiLocate"===p?"What element do you want to locate?":"aiBoolean"===p?"What do you want to check (returns true/false)?":"aiNumber"===p?"What number do you want to extract?":"aiString"===p?"What text do you want to extract?":"aiAsk"===p?"What do you want to ask?":"aiWaitFor"===p?"What condition do you want to wait for?":"What do you want to do?",T=(null==C?void 0:C.variant)==="minimal",N=(null==C?void 0:C.placeholder)||R,M=(l=null==C?void 0:C.primaryActionLabel)?l:AZ(p)||"Action",D=(0,a.useRef)(null),B=(0,a.useRef)(null),z=av.A.useWatch("params",u),L=(0,a.useRef)(null),F=AQ(e=>e.history),K=AQ(e=>e.lastSelectedType),U=AQ(e=>e.addHistory),Q=AQ(e=>e.setLastSelectedType),Z=(0,a.useMemo)(()=>F[p]||[],[F,p]),{markExplicitSelection:J,skipNextRestore:X,shouldSkipRestoreOnce:H}=function(e){let{enabled:t,form:r,selectedType:n,onAfterReset:i,defaultType:o="aiAct"}=e,[s,A]=(0,a.useState)(!1),l=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t&&!s&&n&&n!==o&&(l.current=!1,r.setFieldsValue({type:o,prompt:"",params:{}}),null==i||i())},[t,s,n,o,r,i]);let c=(0,a.useCallback)(()=>{t&&A(!0)},[t]),u=(0,a.useCallback)(()=>{l.current=!0},[]),d=(0,a.useCallback)(()=>!!l.current&&(l.current=!1,!0),[]);return(0,a.useMemo)(()=>({markExplicitSelection:c,skipNextRestore:u,shouldSkipRestoreOnce:d}),[c,u,d])}({enabled:T,form:u,selectedType:p,onAfterReset:(0,a.useCallback)(()=>{L.current=null,P("")},[])}),G=(0,a.useMemo)(()=>{if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);return!!(null==e?void 0:e.paramSchema)&&(!AS(e.paramSchema)||Object.keys(e.paramSchema.shape||{}).length>0)}return!1},[p,k]),V=(0,a.useMemo)(()=>{if(k&&k.length>0){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if(e){if(e.paramSchema&&AS(e.paramSchema)){let t=e.paramSchema.shape||{};return Object.keys(t).some(e=>{let{isOptional:r}=Aj(t[e]);return!r})}return!!e.paramSchema}}return!0},[p,k]),q=(0,a.useMemo)(()=>["aiQuery","aiBoolean","aiNumber","aiString","aiAsk","aiAssert"].includes(p),[p]),W=(0,a.useMemo)(()=>{if("aiAct"===p||"aiLocate"===p)return!0;if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&AS(e.paramSchema)){let t=e.paramSchema.shape||{};return Object.keys(t).some(e=>{let{actualField:r}=Aj(t[e]);return AC(r)})}}return!1},[p,k]),Y=(0,a.useMemo)(()=>"aiAct"===p,[p]),_=(0,a.useMemo)(()=>{let e="In-Browser-Extension"===d,t=q&&!x,r=AX(S);return e||W||Y||t||r},[d,W,Y,q,x,S]),$=(0,a.useMemo)(()=>(e=>{let t=Object.keys(aH);if(!(null==e?void 0:e.length))return t;let r=e.map(e=>e.interfaceAlias||e.name),n=new Set;return t.forEach(e=>{let t=aH[e];"aiAct"===e||(null==t?void 0:t.group)==="extraction"||(null==t?void 0:t.group)==="validation"?n.add(e):r.includes(e)&&n.add(e)}),r.forEach(e=>{n.add(e)}),Array.from(n)})(k),[k]),ee=(0,a.useMemo)(()=>$.filter(e=>!aG.includes(e)),[$]),et=(0,a.useCallback)(e=>{J(),u.setFieldValue("type",e)},[u,J]),er=(0,a.useMemo)(()=>[{key:"interaction-group",label:"Interaction APIs",match:e=>{var t;return(null==(t=aH[e])?void 0:t.group)==="interaction"}},{key:"extraction-group",label:"Data Extraction APIs",match:e=>{var t;return(null==(t=aH[e])?void 0:t.group)==="extraction"}},{key:"validation-group",label:"Validation APIs",match:e=>{var t;return(null==(t=aH[e])?void 0:t.group)==="validation"}},{key:"device-specific-group",label:"Device-Specific APIs",match:e=>!aH[e]}],[]),en=(0,a.useCallback)(e=>{var t;return{key:e,label:AZ(e),title:(null==(t=aH[e])?void 0:t.title)||"",onClick:()=>et(e)}},[et]),ei=(0,a.useMemo)(()=>{let e=[];for(let t of er){let r=ee.filter(t.match);0!==r.length&&e.push({key:t.key,type:"group",label:t.label,children:r.map(en)})}return e},[er,ee,en]),eo=(0,a.useMemo)(()=>{let e=aG.filter(e=>$.includes(e)),t=[];return e.length>0&&t.push({key:"primary-group",type:"group",label:"Primary APIs",children:e.map(en)}),t.push(...ei),{items:t}},[$,en,ei]),ea=(0,a.useMemo)(()=>({items:ei}),[ei]),es=(0,a.useCallback)(()=>{if(!G||!k)return{};let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&AS(e.paramSchema)){let t={},r=e.paramSchema.shape||{};return Object.keys(r).forEach(e=>{let n=(e=>{var t;let r=e;for(;null==(t=r._def)?void 0:t.innerType;){if(r._def.typeName===Aw){if("function"==typeof r._def.defaultValue)return r._def.defaultValue();if(void 0!==r._def._serializedDefaultValue)return r._def._serializedDefaultValue}r=r._def.innerType}})(r[e]);void 0!==n&&(t[e]=n)}),t}return{}},[p,G,k]);(0,a.useEffect)(()=>{T||u.getFieldValue("type")||!K||u.setFieldValue("type",K)},[u,T,K]),(0,a.useEffect)(()=>{!T&&p&&p!==K&&Q(p)},[p,T,K,Q]);let eA=(0,a.useCallback)(()=>{let e=B.current;if(!e)return;let t=null,r=e.querySelector(".ant-radio-button-wrapper-checked"),n=e.querySelector(".more-apis-button.selected-from-dropdown");if(r?t=r:n&&(t=n),t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),i=n.left-r.left+e.scrollLeft,o=n.width,a=r.width;e.scrollTo({left:Math.max(0,i-(a-o)/2),behavior:"smooth"})}},[]);(0,a.useEffect)(()=>{if(H())return;if(T){let e=es();u.setFieldsValue({prompt:"",params:e}),P(""),L.current=null;return}let e=Z[0];if(!e||!L.current||e.timestamp!==L.current.timestamp)if(e)u.setFieldsValue({type:e.type,prompt:e.prompt||"",params:e.params}),P(e.prompt||""),L.current=e;else{let e=es();u.setFieldsValue({prompt:"",params:e}),P(""),L.current=null}},[p,Z,u,es,T,H]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{eA()},100);return()=>clearTimeout(e)},[p,eA]);let el=av.A.useWatch("prompt",u);(0,a.useEffect)(()=>{el!==O&&P(el||"")},[el,O]);let ec=(0,a.useCallback)(e=>{J(),e.type!==p&&X(),u.setFieldsValue({prompt:e.prompt,type:e.type,params:e.params}),P(e.prompt)},[u,J,p,X]),eu=(0,a.useCallback)(e=>{P(e.target.value)},[]),ed=(0,a.useMemo)(()=>{if(!G||!k)return!1;let e=k.find(e=>e.interfaceAlias===p||e.name===p);return!!((null==e?void 0:e.paramSchema)&&AS(e.paramSchema))&&1===Object.keys(e.paramSchema.shape||{}).length},[p,G,k]),ep=(0,a.useMemo)(()=>T?AI(k,p):null,[k,T,p]),eh=(0,a.useMemo)(()=>((e,t,r,n,i,o)=>{if(!e)return!1;if(!(()=>{if(n){let e=n.find(e=>e.interfaceAlias===i||e.name===i);if(e){if(!e.paramSchema)return!1;if("object"==typeof e.paramSchema&&"shape"in e.paramSchema)return Object.keys(e.paramSchema.shape||{}).length>0}}return!0})())return!0;if(t){let e=r||{},t=null==n?void 0:n.find(e=>e.interfaceAlias===i||e.name===i);if((null==t?void 0:t.paramSchema)&&AS(t.paramSchema)){let r=t.paramSchema.shape||{};return Object.keys(r).every(t=>{let{isOptional:n}=Aj(r[t]),i=e[t];return n||void 0!==i&&""!==i&&null!==i})}return!0}return o.trim().length>0})(c,!!G,z,k,p,O),[c,G,p,k,O,z]),ef=(0,a.useCallback)(()=>{let e=u.getFieldsValue(),t="";if(G&&e.params&&k){let r=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==r?void 0:r.paramSchema)&&AS(r.paramSchema)){let n="",i=[],o=r.paramSchema.shape||{};Object.keys(o).forEach(t=>{var r;let a=null==(r=e.params)?void 0:r[t];if(null!=a&&""!==a){let{actualField:e}=Aj(o[t]);AC(e)?n=String(a):"distance"===t?i.push(`${a}`):i.push(String(a))}});let a=i.join(" ");t=n?`${n} - ${a}`:a}else t=e.prompt||""}else t=e.prompt||"";let r={type:e.type,prompt:t,params:e.params,timestamp:Date.now()};if(U(r),b(),E)if(L.current=r,P(""),G){let e=es();u.setFieldValue("params",e)}else u.setFieldValue("prompt","")},[u,U,b,G,p,E,k,es]),eg=(0,a.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eh?(ef(),e.preventDefault(),e.stopPropagation()):"Enter"===e.key&&setTimeout(()=>{if(D.current){var e;let t=null==(e=D.current.resizableTextArea)?void 0:e.textArea;if(t){let e=t.selectionStart,r=t.value.lastIndexOf("\n");(-1===r||e>r)&&(t.scrollTop=t.scrollHeight)}}},0)},[ef,eh]),em=(0,a.useCallback)(e=>{"Enter"===e.key&&e.metaKey&&eh&&(ef(),e.preventDefault(),e.stopPropagation())},[ef,eh]),ey=(0,a.useCallback)(()=>{if(!G)return null;if(k){let e=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==e?void 0:e.paramSchema)&&AS(e.paramSchema)){let t=e.paramSchema.shape||{},r=Object.keys(t);if(1===r.length){let e=r[0],{actualField:n}=Aj(t[e]),i=AC(n),a=(()=>{var t,r;if(null==(t=n._def)?void 0:t.description)return n._def.description;if(n.description)return n.description;if(k){let t=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==t?void 0:t.paramSchema)&&"object"==typeof t.paramSchema&&"shape"in t.paramSchema){let n=(t.paramSchema.shape||{})[e];if(null==n||null==(r=n._def)?void 0:r.description)return n._def.description;if(null==n?void 0:n.description)return n.description}}return i?"Describe the element you want to interact with":"keyName"===e?"Enter key name or text to type":"value"===e?"Enter text to input":`Enter ${e}`})();return(0,o.jsx)(av.A.Item,{name:["params",e],style:{margin:0},children:(0,o.jsx)(m.A.TextArea,{className:"main-side-console-input-textarea",rows:3,placeholder:a,autoFocus:!0,onKeyDown:em})})}let n=[],i=r.sort((e,r)=>{let n=t[e],i=t[r],{isOptional:o}=Aj(n),{isOptional:a}=Aj(i);return!o&&a?-1:o&&!a?1:0});if(i.forEach((e,r)=>{var a,s,A;let{actualField:l,isOptional:c}=Aj(t[e]),u=AC(l),d=e.charAt(0).toUpperCase()+e.slice(1),h=12*(r!==i.length-1),f=(()=>{var t,r;if(null==(t=l._def)?void 0:t.description)return l._def.description;if(l.description)return l.description;if(k){let t=k.find(e=>e.interfaceAlias===p||e.name===p);if((null==t?void 0:t.paramSchema)&&"object"==typeof t.paramSchema&&"shape"in t.paramSchema){let n=(t.paramSchema.shape||{})[e];if(null==n||null==(r=n._def)?void 0:r.description)return n._def.description;if(null==n?void 0:n.description)return n.description}}if(u)return"Describe the element you want to interact with"})(),g={name:e,label:d,fieldSchema:l,isRequired:!c,marginBottom:h,placeholder:f};u?n.push((0,o.jsx)(A0,le({},g),e)):(null==(a=l._def)?void 0:a.typeName)==="ZodEnum"?n.push((0,o.jsx)(A1,le({},g),e)):(null==(s=l._def)?void 0:s.typeName)==="ZodNumber"?n.push((0,o.jsx)(A2,le({},g),e)):(null==(A=l._def)?void 0:A.typeName)==="ZodBoolean"?n.push((0,o.jsx)(A3,le({},g),e)):n.push((0,o.jsx)(A$,le({},g),e))}),"aiScroll"===p){let e=n.find(e=>a.isValidElement(e)&&"direction"===e.props.name),t=n.find(e=>a.isValidElement(e)&&"distance"===e.props.name),r=n.filter(e=>a.isValidElement(e)&&"direction"!==e.props.name&&"distance"!==e.props.name);if(e&&t)return(0,o.jsxs)("div",{className:"structured-params",children:[(0,o.jsxs)("div",{style:{display:"flex",gap:12,marginBottom:12},children:[e,t]}),r]})}return(0,o.jsx)("div",{className:"structured-params",children:n})}}return null},[p,G,k,em]),ev=(0,a.useCallback)(()=>{I(!0)},[]),eb=(0,a.useCallback)(()=>{I(!1)},[]),ew=(0,a.useCallback)(()=>{let e=e=>(0,o.jsx)(g.Ay,{type:"primary",icon:(0,o.jsx)(AO.A,{}),style:{borderRadius:20,zIndex:999},onClick:ef,disabled:!eh,loading:v,children:e});return f?"aiAct"===p?(0,o.jsx)(h.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry Run")}):e("Run"):y?(0,o.jsx)(g.Ay,{icon:(0,o.jsx)(AP.A,{}),onClick:w,style:{borderRadius:20,zIndex:999},children:"Stop"}):e("Run")},[f,v,ef,w,eh,p,y]),eE=(0,a.useCallback)(()=>{let e=e=>(0,o.jsx)(g.Ay,{"aria-label":e,className:"minimal-run-trigger",type:"primary",icon:(0,o.jsx)(AR.A,{}),onClick:ef,disabled:!eh,loading:v});return f?"aiAct"===p?(0,o.jsx)(h.A,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:e("Dry run")}):e("Run"):y?(0,o.jsx)(g.Ay,{"aria-label":"Stop running",className:"minimal-run-trigger minimal-run-trigger-stop",icon:(0,o.jsx)(AP.A,{}),onClick:w}):e("Run")},[f,v,ef,eh,w,p,y]),ek=V?G?ep?(0,o.jsx)(av.A.Item,{name:["params",ep.name],style:{margin:0},children:(0,o.jsx)(lt,{className:"main-side-console-input-textarea",disabled:!c,rows:3,placeholder:"prompt"===ep.name?N:ep.placeholder,autoFocus:!0,onKeyDown:em})}):ed?ey():(0,o.jsx)("div",{className:"structured-params-container",children:ey()}):(0,o.jsx)(av.A.Item,{name:"prompt",style:{margin:0},children:(0,o.jsx)(lt,{className:"main-side-console-input-textarea",disabled:!c,rows:3,placeholder:N,autoFocus:!0,onKeyDown:eg,onChange:eu,ref:D})}):(0,o.jsxs)("div",{className:"no-input-method",children:['Click "Run" to execute ',AZ(p)]}),ex=null!=(s=null==C||null==(t=C.icons)?void 0:t.action)?s:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAASdJREFUeAHtlt3NgjAUhg8/CVx+G8gGX5xAnUDdQMcgkIgJBLbQEXQD3MAR6gZewgXgOUn9iRp6vAC96JM07YG36Zv+nBZAwySO4ymWgUoXRdEfaYGJyRElSbKyLGuHJVdpHcc5khb7RMCAZcA0TU82PYZ8IPsoZ4ttoEu0ga8bMB6DNE1X8H6jTUBuLmQL7SxkLbDkzz/ruhZBEKxfDGRZNm2aZgc9UFXVLAzDPbVvS1AUxQGrE3SPwHK8BganBy7NBuTU+r5vKLSNbG5RuwQF+hRoA9rA76RifMl4+JjI4Z5yu0KUZTnE8c4U3GbAdd3/HgYnPNu2R9eg98uIvmOGfL2M2tCpWBv4BQPiqW7j9IGWZ4CODT7X5pRAVFrUjEn7eNQ0bVwAyWpjMDlJKpAAAAAASUVORK5CYII=",eS=null==C||null==(r=C.icons)?void 0:r.actionChevron,eC=null!=(A=null==C||null==(n=C.icons)?void 0:n.settings)?A:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAaFJREFUeAHtlt9tgzAQxi8EJa/pBMkIHYENygalG7RvSQQKlfjz2I5ANkg3oBukG6QbtI9IIPq5ihHQOBXmFImqPwnZBvtsf9ydTfQPA77vz4IguCENDGJgOp3ux+PxLgxDnzrCsgAw/zZmGPOO48iUFci4wE42xITKXlEUO9d1X34s4NjZISZU9qCSjeKqastKWZYpMaKyNxqNto02MRDHcXmsJqvV6q7LWBYnxK4+SBOTeHDw2HAwn4aGlg9EUfQE2e+xYwchtaUeaPmAmFyUyH4W9aThA9jZ7alOiN39crl8O/FpoRpzjrq96hcgj2/wwVcNQlxb6/X6VdRrYaeNtGfUVvXbgE9iRNprOCHktPF/Z+3OeZ4fPM9LZbumgHjX2Qnr9rSioE/ma6MVBZDvWWQ/cbLR0GE5jEQoQhFLpGIkpvcuY1nOAkyeiBKJSRSXPw37UCkgbrWmaSZwsBkxoLInHBgJ6EG2KwUgn801+Tl78hyRVApkWfaIexxp4rRfqOzBUdN6+29cyYAMvQN1hCUMIbc1mUyu4VzDz4wX5wvRfah9kIOcwwAAAABJRU5ErkJggg==",ej=null==C||null==(i=C.icons)?void 0:i.history;return T?(0,o.jsxs)("div",{className:"prompt-input-wrapper prompt-input-wrapper-minimal",children:[(0,o.jsx)(av.A.Item,{hidden:!0,name:"type",style:{margin:0},children:(0,o.jsx)(m.A,{})}),(0,o.jsxs)("div",{className:`main-side-console-input minimal-main-side-console-input ${!c?"disabled":""} ${v?"loading":""}`,children:[ek,(0,o.jsxs)("div",{className:"minimal-toolbar-row",children:[(0,o.jsxs)("div",{className:"minimal-toolbar-left",children:[(0,o.jsx)(s0.A,{menu:eo,placement:"topLeft",trigger:["click"],disabled:!c,overlayClassName:"more-apis-dropdown",children:(0,o.jsxs)("button",{"aria-label":`Select action type (current: ${M})`,className:"minimal-action-trigger",disabled:!c,type:"button",children:[(0,o.jsx)("img",{alt:"",className:"minimal-action-icon",src:ex}),(0,o.jsx)("span",{className:"minimal-action-label",children:M}),eS?(0,o.jsx)("img",{alt:"",className:"minimal-action-chevron",src:eS}):(0,o.jsx)(AM,{"aria-hidden":"true",className:"minimal-action-chevron",focusable:"false"})]})}),(0,o.jsx)(A9,{onSelect:ec,history:Z,currentType:p,popupPlacement:"top",trigger:(0,o.jsx)("button",{"aria-label":"Open prompt history",className:"minimal-icon-trigger",type:"button",children:ej?(0,o.jsx)("img",{alt:"",className:"minimal-toolbar-icon minimal-toolbar-icon-history",src:ej}):(0,o.jsx)(AD,{"aria-hidden":"true",className:"minimal-toolbar-icon minimal-toolbar-icon-history",focusable:"false"})})}),_?(0,o.jsx)("div",{className:j?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ev,onMouseLeave:eb,children:(0,o.jsx)(AV,{enableTracking:"In-Browser-Extension"===d,showDeepLocateOption:W,showDeepThinkOption:Y,showDataExtractionOptions:q,hideDomAndScreenshotOptions:x,deviceType:S,popupPlacement:"topRight",trigger:(0,o.jsx)("button",{"aria-label":"Open run configuration",className:"minimal-icon-trigger",type:"button",children:(0,o.jsx)("img",{alt:"",className:"minimal-toolbar-icon",src:eC})})})}):null]}),(0,o.jsxs)("div",{className:"form-controller-wrapper",children:[null==C?void 0:C.inputActions,eE()]})]})]})]}):(0,o.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,o.jsxs)("div",{className:"mode-radio-group-wrapper",children:[(0,o.jsxs)("div",{className:"mode-radio-group",ref:B,children:[(0,o.jsx)(av.A.Item,{name:"type",style:{margin:0},children:(0,o.jsx)(AN.A.Group,{buttonStyle:"solid",disabled:!c,children:aG.map(e=>{var t;return(0,o.jsx)(h.A,{title:(null==(t=aH[e])?void 0:t.title)||"",children:(0,o.jsx)(AN.A.Button,{value:e,children:AZ(e)})},e)})})}),(0,o.jsx)(s0.A,{menu:ea,placement:"bottomLeft",trigger:["click"],disabled:!c,overlayClassName:"more-apis-dropdown",children:(0,o.jsxs)(g.Ay,{className:`more-apis-button ${!aG.includes(p)?"selected-from-dropdown":""}`,children:[p&&!aG.includes(p)?AZ(p):"more",(0,o.jsx)(AT.A,{style:{fontSize:"10px",marginLeft:"2px"}})]})})]}),(0,o.jsxs)("div",{className:"action-icons",children:[(0,o.jsx)(A9,{onSelect:ec,history:Z,currentType:p}),_&&(0,o.jsx)("div",{className:j?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:ev,onMouseLeave:eb,children:(0,o.jsx)(AV,{enableTracking:"In-Browser-Extension"===d,showDeepLocateOption:W,showDeepThinkOption:Y,showDataExtractionOptions:q,hideDomAndScreenshotOptions:x,deviceType:S})})]})]}),(0,o.jsxs)("div",{className:`main-side-console-input ${!c?"disabled":""} ${v?"loading":""}`,children:[ek,(0,o.jsxs)("div",{className:"form-controller-wrapper",children:[null==C?void 0:C.inputActions,ew()]})]})]})};function ln(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function li(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ln(o,n,i,a,s,"next",e)}function s(e){ln(o,n,i,a,s,"throw",e)}a(void 0)})}}let{Text:lo}=u.A,la=new Set;function ls(e){let{error:t}=e;if(!t)return null;let r=t.replace(/^(Error:\s*)+/,"Error: ");return(0,o.jsx)(y.A,{message:(0,o.jsx)("span",{style:{color:"#ff4d4f"},children:r}),type:"error",showIcon:!0})}function lA(e){var t,r,n;let{playgroundSDK:i,storage:s,contextProvider:A,config:l={},branding:c={},className:u="",dryMode:d=!1,showContextPreview:p=!0}=e,[h]=av.A.useForm(),{config:f}=X(),[m,y]=(0,a.useState)(!1),v=(0,a.useRef)(null);(0,a.useEffect)(()=>{li(function*(){if(i&&"function"==typeof i.checkStatus)try{yield i.checkStatus(),y(!0)}catch(e){console.warn("Failed to initialize SDK, using default namespace:",e),y(!0)}else y(!0)})()},[i]);let b=(0,a.useMemo)(()=>{if(!1===l.persistMessages)return null;if(s)return s;if(!m)return null;let e=l.storageNamespace||(i&&i.id&&"string"==typeof i.id?`agent-${i.id}`:"playground-default"),t=sS();return console.log(`Using ${t} storage for namespace: ${e}`),sx(t,e)},[s,m,l.storageNamespace,l.persistMessages,i]),{loading:w,setLoading:E,infoList:k,setInfoList:x,actionSpace:S,actionSpaceLoading:C,uiContextPreview:j,setUiContextPreview:I,showScrollToBottomButton:O,verticalMode:P,replayCounter:R,setReplayCounter:T,messagesInitialized:N,infoListRef:M,currentRunningIdRef:D,interruptedFlagRef:B,clearInfoList:z,handleScrollToBottom:L}=function(e,t,r,n){let i=!(arguments.length>4)||void 0===arguments[4]||arguments[4],[o,s]=(0,a.useState)(!1),[A,l]=(0,a.useState)([]),[c,u]=(0,a.useState)([]),[d,p]=(0,a.useState)(!0),[h,f]=(0,a.useState)(),[g,m]=(0,a.useState)(!1),[y,v]=(0,a.useState)(!0),b=(0,a.useRef)(0),[w,E]=(0,a.useState)(!1),[k,x]=(0,a.useState)(0),S=(0,a.useRef)(null),C=(0,a.useRef)(null),j=(0,a.useRef)({}),I=(0,a.useRef)(),[,O]=(0,a.useState)(0);(0,a.useEffect)(()=>{let e=!1,r=null!=t?t:null,o=t=>{e||l(t)};return I.current!==r&&(t||0===A.length)&&sj(function*(){let a=sO(sI({},aV(n)),{id:"welcome",timestamp:new Date});if(null==t?void 0:t.loadMessages)try{let e=yield t.loadMessages();0===e.length&&(e=yield sj(function*(){if(!i)return[];let e=sx(sS(),"playground-default");try{if(null==e?void 0:e.loadMessages){let r=yield e.loadMessages();if(r.length>1)return console.log("Found data in old namespace, migrating..."),(null==t?void 0:t.saveMessages)&&(yield t.saveMessages(r)),e.clearMessages&&(yield e.clearMessages()),r}}catch(e){console.debug("No data found in old namespace:",e)}return[]})()),e.some(e=>"welcome"===e.id)?o(e):o([a,...e])}catch(e){console.error("Failed to load messages:",e),o([a])}else o([a]);e||(I.current=r,O(e=>e+1))})(),()=>{e=!0}},[i,t]),(0,a.useEffect)(()=>{(null==t?void 0:t.saveMessages)&&A.length>1&&t.saveMessages(A).catch(e=>{e instanceof DOMException&&"QuotaExceededError"===e.name?console.warn("Storage quota exceeded - some messages may not be saved persistently"):console.error("Failed to save messages:",e)})},[A,t]),(0,a.useEffect)(()=>{(null==r?void 0:r.getUIContext)&&!h&&r.getUIContext().then(e=>f(e)).catch(e=>{console.error("Failed to get UI context:",e)})},[r,h]),(0,a.useEffect)(()=>{sj(function*(){p(!0);try{var t;if(!e)return void u([]);let n=h||(yield null==r||null==(t=r.getUIContext)?void 0:t.call(r)),i=yield e.getActionSpace(n);u(i||[])}catch(e){console.error("Failed to load action space:",e),u([])}finally{p(!1)}})()},[e,h,r]),(0,a.useEffect)(()=>{E(window.innerWidth<750);let e=()=>{E(window.innerWidth<750)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let P=(0,a.useCallback)(()=>{setTimeout(()=>{S.current&&(S.current.scrollTop=S.current.scrollHeight)},100)},[]),R=(0,a.useCallback)(()=>{if(S.current){let{scrollTop:e,scrollHeight:t,clientHeight:r}=S.current,n=e+r>=t-10;m(!n);let i=e<b.current;b.current=e,n?v(!0):i&&v(!1)}},[]),T=(0,a.useCallback)(()=>{S.current&&(S.current.scrollTo({top:S.current.scrollHeight,behavior:"smooth"}),m(!1),v(!0))},[]);(0,a.useEffect)(()=>{A.length>0&&y&&P()},[A,P,y]),(0,a.useEffect)(()=>{let e=S.current;if(e)return e.addEventListener("scroll",R),R(),()=>{e.removeEventListener("scroll",R)}},[R]);let N=(0,a.useCallback)(()=>sj(function*(){if(l([sO(sI({},aV(n)),{id:"welcome",timestamp:new Date})]),null==t?void 0:t.clearMessages)try{yield t.clearMessages()}catch(e){console.error("Failed to clear stored messages:",e)}})(),[t,n]),M=(0,a.useCallback)(()=>sj(function*(){if(null==r?void 0:r.refreshContext)try{let e=yield r.refreshContext();f(e)}catch(e){console.error("Failed to refresh context:",e)}})(),[r]);return{loading:o,setLoading:s,infoList:A,setInfoList:l,messagesInitialized:I.current===(null!=t?t:null),actionSpace:c,actionSpaceLoading:d,uiContextPreview:h,setUiContextPreview:f,showScrollToBottomButton:g,verticalMode:w,replayCounter:k,setReplayCounter:x,infoListRef:S,currentRunningIdRef:C,interruptedFlagRef:j,clearInfoList:N,refreshContext:M,handleScrollToBottom:T,scrollToBottom:P}}(i,b,A,c.targetName,!1!==l.persistMessages&&!l.storageNamespace),{handleRun:F,handleStop:K,canStop:U}=function(e){let{playgroundSDK:t,storage:r,actionSpace:n,loading:i,setLoading:o,setInfoList:s,replayCounter:A,setReplayCounter:l,verticalMode:c,currentRunningIdRef:u,interruptedFlagRef:d,deviceType:p}=e,{deepLocate:h,deepThink:f,screenshotIncluded:g,domIncluded:m,imeStrategy:y,autoDismissKeyboard:v,keyboardDismissStrategy:b,alwaysRefreshScreenInfo:w}=X(),E=(0,a.useCallback)(function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a6(function*(){if(!t)return void console.warn("PlaygroundSDK is not available");let i=Date.now(),a=e.type,E=n.displayContent||`${e.type}: ${e.prompt||JSON.stringify(e.params)}`,k={id:`user-${Date.now()}`,type:"user",content:E,timestamp:new Date};s(e=>[...e,k]),o(!0);let x=a9({},aq),S={id:`system-${i}`,type:"system",content:"",timestamp:new Date,loading:!0,loadingProgressText:""};s(e=>[...e,S]);try{u.current=i,d.current[i]=!1,t.onDumpUpdate&&t.onDumpUpdate((e,t)=>{var r;if(d.current[i]||!(null==t||null==(r=t.tasks)?void 0:r.length))return;let n=t.tasks.map((e,t)=>{var r;let n,o;return{id:`progress-${i}-task-${t}`,type:"progress",content:(n=o8(e),(o=at(e))?`${n} - ${o}`:n),actionKind:o8(e),timestamp:new Date((null==(r=e.timing)?void 0:r.start)||Date.now()),result:e.error?{error:st(e.error),result:null}:void 0}});s(e=>{let t=e.findIndex(e=>e.id===`system-${i}`);if(-1===t)return e;let r=e.filter(e=>!("progress"===e.type&&e.id.startsWith(`progress-${i}-`)));return[...r.slice(0,t+1),...n,...r.slice(t+1)]})}),sn(a)||!0!==f||console.warn("[Playground] Non-aiAct action will be executed without deepThink. deepThink is only forwarded for aiAct and runMarkdown.",{actionType:a,requestId:i.toString()});let r="unset"===f?void 0:f,o=a9(se(a9({requestId:i.toString(),deepLocate:h},sn(a)&&void 0!==r?{deepThink:r}:{}),{screenshotIncluded:g,domIncluded:m,deviceOptions:{imeStrategy:y,autoDismissKeyboard:v,keyboardDismissStrategy:b,alwaysRefreshScreenInfo:w}}),n.reportDisplay?{reportDisplay:n.reportDisplay}:{});if(x.result=yield t.executeAction(a,e,o),"object"==typeof x.result&&null!==x.result){let e=x.result;e.dump&&(x.dump=e.dump),e.reportHTML&&(x.reportHTML=e.reportHTML),e.error&&(x.error=st(e.error)),"result"in e&&(x.result=e.result)}}catch(e){x.error=st(e),console.error("Playground execution error:",e),"object"==typeof e&&null!==e&&(e.dump&&(x.dump=e.dump),e.reportHTML&&(x.reportHTML=e.reportHTML))}if(d.current[i])return;o(!1),u.current=null;let C=null,j=A;if(null==x?void 0:x.dump){let e=sr(x.dump,p);e&&(l(e=>e+1),C=e,j=A+1)}s(e=>e.map(e=>e.id===`system-${i}`?se(a9({},e),{content:"",loading:!1,loadingProgressText:""}):e));let I={id:`result-${i}`,type:"result",content:"Execution result",timestamp:new Date,result:x,loading:!1,replayScriptsInfo:C,replayCounter:j,loadingProgressText:"",verticalMode:c,actionType:a};if(s(e=>[...e,I]),null==r?void 0:r.saveResult)try{yield r.saveResult(I.id,I)}catch(e){console.error("Failed to save result:",e)}let O={id:`separator-${i}`,type:"separator",content:"New Session",timestamp:new Date};s(e=>[...e,O])})()},[t,r,n,o,s,A,l,c,u,d,h,f,g,m,p,y,v,b,w]),k=(0,a.useCallback)(()=>a6(function*(){let e=u.current;if(e&&t&&t.cancelExecution)try{let r=yield t.cancelExecution(e.toString()),n=null;if(r)n=r;else if(t.getCurrentExecutionData)try{n=yield t.getCurrentExecutionData()}catch(e){console.error("Failed to get execution data before stop:",e)}if(d.current[e]=!0,o(!1),t.onProgressUpdate&&t.onProgressUpdate(()=>{}),t.onDumpUpdate&&t.onDumpUpdate(()=>{}),s(t=>t.map(t=>t.id===`system-${e}`?se(a9({},t),{content:"",loading:!1,loadingProgressText:""}):t)),n&&(n.dump||n.reportHTML)){let t=null,r=A;(t=sr(n.dump,p))&&(l(e=>e+1),r=A+1);let i={id:`stop-result-${e}`,type:"result",content:"Execution stopped by user",timestamp:new Date,result:{result:null,dump:n.dump,reportHTML:n.reportHTML,error:null},loading:!1,verticalMode:c,replayScriptsInfo:t,replayCounter:r};s(e=>[...e,i])}else{let t={id:`stop-${e}`,type:"system",content:"Operation stopped",timestamp:new Date,loading:!1};s(e=>[...e,t])}let i={id:`separator-${e}`,type:"separator",content:"New Session",timestamp:new Date};s(e=>[...e,i])}catch(e){console.error("Failed to stop execution:",e)}})(),[t,u,d,o,s,c,A,p]);return{handleRun:E,handleStop:k,canStop:i&&!!u.current&&!!t&&!!t.cancelExecution}}({playgroundSDK:i,storage:b,actionSpace:S,loading:w,setLoading:E,setInfoList:x,replayCounter:R,setReplayCounter:T,verticalMode:P,currentRunningIdRef:D,interruptedFlagRef:B,deviceType:l.deviceType});(0,a.useEffect)(()=>{(null==i?void 0:i.overrideConfig)&&f&&i.overrideConfig(f).catch(e=>{console.error("Failed to override SDK config:",e),G(e,{title:"Failed to apply AI configuration"})})},[i,f]);let Q=(0,a.useCallback)(()=>li(function*(){try{let e=h.getFieldsValue();yield F(e)}catch(e){G(e,{title:"Execution failed"})}})(),[h,F]);(0,a.useEffect)(()=>{let e=l.externalRunRequest;if(e&&function(e){let{request:t,handledRequestIds:r,lastRequestId:n,sdkReady:i,messagesInitialized:o}=e;return!!(t&&t.id!==n&&!(null==r?void 0:r.has(t.id))&&i&&o)}({request:e,handledRequestIds:la,lastRequestId:v.current,sdkReady:m,messagesInitialized:N})){if(v.current=e.id,la.add(e.id),la.size>100){let e=la.values().next().value;e&&la.delete(e)}F(e.value,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({displayContent:e.displayContent},e.reportDisplay?{reportDisplay:e.reportDisplay}:{})).catch(e=>{G(e,{title:"Execution failed"})})}},[l.externalRunRequest,F,N,m]);let Z=Object.keys(f||{}).length>=1,J=l.serverMode||!d&&!C&&Z,H=av.A.useWatch("type",h)||aG["0"],V=(0,a.useMemo)(()=>i&&"function"==typeof i.getServiceMode?i.getServiceMode():"Server",[i]),q=p&&!1!==l.showContextPreview,W=l.layout||"vertical",Y=!1!==l.showVersionInfo,_=l.deviceType,$=null!=(t=l.executionFlow)?t:{},ee=!0===$.collapsible,et=null!=(r=$.label)?r:"Execution Flow",[er,en]=(0,a.useState)(()=>new Set),ei=(0,a.useCallback)(e=>{en(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),{firstInProgressGroup:eo,visibleInfoList:ea}=(0,a.useMemo)(()=>{let e=new Set,t=[],r=null,n=k.length>1;for(let i of k)if(!n||"welcome"!==i.id)if("progress"===i.type){if(null===r){r=i.id,e.add(i.id),t.push(i);continue}ee&&er.has(r)||t.push(i)}else r=null,t.push(i);return{firstInProgressGroup:e,visibleInfoList:t}},[er,ee,k]),es=(0,a.useMemo)(()=>{for(let e=k.length-1;e>=0;e--)if("progress"===k[e].type)return k[e].id;return null},[k]),eA=void 0!==l.emptyState&&1===ea.length&&(null==(n=ea[0])?void 0:n.id)==="welcome",el=(0,a.useMemo)(()=>eA&&((e,t)=>{if(!(null==e?void 0:e.length)||!t||AI(e,t))return!1;let r=e.find(e=>e.interfaceAlias===t||e.name===t);return!!(null==r?void 0:r.paramSchema)&&!!AS(r.paramSchema)&&Object.keys(r.paramSchema.shape||{}).length>1})(S,H),[S,eA,H]);(0,a.useEffect)(()=>{if(!el)return;let e=()=>{let e=M.current;if(!e)return;let t=e.querySelector(".playground-empty-state-wrapper"),r=null==t?void 0:t.querySelector("[data-playground-empty-state-content-start]"),n=null==t?void 0:t.querySelector("[data-playground-empty-state-content-end]");if(!(r instanceof HTMLElement)||!(n instanceof HTMLElement))return;let i=e.getBoundingClientRect(),o=r.getBoundingClientRect(),a=n.getBoundingClientRect(),s=function(e){let{currentScrollTop:t,maxScrollTop:r,containerTop:n,containerBottom:i,contentStartTop:o,contentEndBottom:a,topSafeMargin:s=24,bottomSafeMargin:A=24}=e;return Math.max(0,Math.round(Math.min(t+a-(i-A),t+o-(n+s),r)))}({currentScrollTop:e.scrollTop,maxScrollTop:Math.max(0,e.scrollHeight-e.clientHeight),containerTop:i.top,containerBottom:i.bottom,contentStartTop:o.top,contentEndBottom:a.bottom});e.scrollTo({top:s,behavior:"auto"})},t=window.requestAnimationFrame(e),r=window.setTimeout(e,160);return()=>{window.cancelAnimationFrame(t),window.clearTimeout(r)}},[M,H,el]);let ec=["playground-empty-state-wrapper",el?"playground-empty-state-wrapper-offset-for-prompt":""].filter(Boolean).join(" ");return(0,o.jsx)("div",{className:`playground-container ${W}-mode ${u}`.trim(),children:(0,o.jsxs)(av.A,{form:h,onFinish:Q,className:"command-form",initialValues:{type:aG["0"]},children:[q&&(0,o.jsx)("div",{className:"context-preview-section",children:(0,o.jsx)(sZ,{uiContextPreview:j,setUiContextPreview:I,showContextPreview:q})}),(0,o.jsxs)("div",{className:"middle-dialog-area",children:[!1!==l.showClearButton&&k.length>1&&(0,o.jsx)("div",{className:"clear-button-container",children:(0,o.jsx)(g.Ay,{size:"small",icon:(0,o.jsx)(aF.A,{}),onClick:z,type:"text",className:"clear-button"})}),(0,o.jsx)("div",{ref:M,className:"info-list-container",children:eA?(0,o.jsx)("div",{className:ec,children:l.emptyState}):(0,o.jsx)(aJ.A,{itemLayout:"vertical",dataSource:ea,renderItem:e=>{var t,r,n;let i,s,A,u,d,p,h,f=ee&&eo.has(e.id),g=f&&er.has(e.id);return(0,o.jsxs)(aJ.A.Item,{className:"list-item",children:[f?(0,o.jsxs)("button",{type:"button",className:`progress-group-toggle ${er.has(e.id)?"is-collapsed":"is-expanded"}`,"aria-expanded":!er.has(e.id),onClick:()=>ei(e.id),children:[(0,o.jsx)("span",{className:"progress-group-toggle-label",children:et}),(0,o.jsx)(aK.A,{className:"progress-group-toggle-chevron"})]}):null,g?null:"user"===e.type?(0,o.jsx)("div",{className:"user-message-container",children:(0,o.jsx)("div",{className:"user-message-bubble",children:e.content})}):"progress"===e.type?(0,o.jsx)("div",{children:(s=null==(t=(i=e.content.split(" - "))[0])?void 0:t.trim(),A=i.slice(1).join(" - ").trim(),u=e.id===es,h="completed"==(p=(d=w&&u)?"loading":(null==(r=e.result)?void 0:r.error)?"error":"completed")?function(e,t){if(!e)return null;if(t){let r=t(e);if(void 0!==r)return r}return(0,a.createElement)(Av)}(e.actionKind,$.resolveActionIcon):null,(0,o.jsxs)("div",{className:"progress-row",children:[s?(0,o.jsx)("span",{className:`progress-status-icon ${p}`,children:"loading"===p?(0,o.jsx)(aU.A,{spin:!0}):"error"===p?"✗":null!==h?h:"✓"}):null,(0,o.jsxs)("div",{className:"progress-row-content",children:[s?(0,o.jsx)("span",{className:"progress-action-item",children:s}):null,A?(0,o.jsx)("div",{className:"progress-description-wrap",children:(0,o.jsx)(sL,{text:A,className:"progress-description",disabled:!d})}):null,(null==(n=e.result)?void 0:n.error)&&(0,o.jsx)(ls,{error:e.result.error})]})]}))}):"separator"===e.type?(0,o.jsxs)("div",{className:"new-conversation-separator",children:[(0,o.jsx)("div",{className:"separator-line"}),(0,o.jsx)("div",{className:"separator-text-container",children:(0,o.jsx)(lo,{type:"secondary",className:"separator-text",children:e.content})})]}):(0,o.jsxs)("div",{className:"system-message-container",children:[!1!==l.showSystemMessageHeader&&(0,o.jsxs)("div",{className:"system-message-header",children:[(0,o.jsx)(aQ.A,{component:c.icon||Ay,style:{fontSize:20}}),(0,o.jsx)("span",{className:"system-message-title",children:c.title||"Playground"})]}),(e.content||e.result)&&(0,o.jsx)("div",{className:"system-message-content",children:"result"===e.type?(0,o.jsx)(Am,{result:e.result||null,loading:e.loading||!1,serverValid:!0,serviceMode:V,replayScriptsInfo:e.replayScriptsInfo||null,replayCounter:e.replayCounter||0,loadingProgressText:e.loadingProgressText||"",verticalMode:e.verticalMode||!1,fitMode:"width",actionType:e.actionType,onDownloadReport:l.onDownloadReport}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"system-message-text",children:e.content}),e.loading&&e.loadingProgressText&&(0,o.jsx)("div",{className:"loading-progress-text",children:(0,o.jsx)("span",{children:e.loadingProgressText})})]})})]})]},e.id)}})}),O&&!1!==l.enableScrollToBottom&&(0,o.jsx)(g.Ay,{className:"scroll-to-bottom-button",type:"primary",shape:"circle",icon:(0,o.jsx)(aZ.A,{}),onClick:L,size:"large"})]}),(0,o.jsxs)("div",{className:"bottom-input-section",children:[l.showEnvConfigReminder?(0,o.jsx)(sX,{}):null,(0,o.jsx)(lr,{runButtonEnabled:J,form:h,serviceMode:V,selectedType:H,dryMode:d,stoppable:U,loading:w,onRun:Q,onStop:K,actionSpace:S,chrome:l.promptInputChrome,deviceType:_})]}),Y&&c.version&&(0,o.jsx)("div",{className:"version-info-section",children:(0,o.jsxs)("span",{className:"version-text",children:["Midscene.js version: ",c.version]})})]})})}let ll=e=>{var t,r;return(0,o.jsx)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r=r={children:(0,o.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m12 6-4 4-4-4"})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))},lc=e=>{var t,r;return(0,o.jsxs)("svg",(t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:55,height:52,fill:"none",viewBox:"0 0 55 52"},e),r=r={children:[(0,o.jsxs)("mask",{id:"midscene-logo_svg__a",width:55.371,height:52.35,x:-.202,y:-.201,fill:"#000",maskUnits:"userSpaceOnUse",children:[(0,o.jsx)("path",{fill:"#fff",d:"M-.202-.201h55.371v52.35H-.202z"}),(0,o.jsx)("path",{fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"})]}),(0,o.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",d:"M35.38 1.812c1.168 0 1.762 1.405.948 2.244l-.83.853a23.38 23.38 0 0 1 13.968 14.069c2.56 2.523 3.834 6.176 3.714 13.116-.083 4.799-1.883 7.946-4.24 9.99-2.23 1.933-4.832 2.754-6.322 3.224l-.069.022-.088.029q-.675.212-1.328.378a23.22 23.22 0 0 1-13.634 4.399 23.22 23.22 0 0 1-13.632-4.399q-.653-.165-1.328-.379l-.09-.028-.067-.022c-1.49-.47-4.092-1.29-6.323-3.224-2.357-2.044-4.157-5.191-4.24-9.99C1.7 25.154 2.975 21.5 5.535 18.978a23.39 23.39 0 0 1 14.02-14.089l-.81-.833c-.814-.839-.22-2.244.948-2.244zM20.254 6.747A21.4 21.4 0 0 0 7.25 20.086C5.046 22.067 3.68 25.032 3.803 32.06c.146 8.506 6.254 10.434 9.244 11.378l.09.029q.811.256 1.586.437A21.24 21.24 0 0 0 27.5 48.152l.001-.001a21.24 21.24 0 0 1-12.776-4.247 22 22 0 0 1-1.586-.437l-.09-.029c-2.99-.944-9.097-2.872-9.243-11.379-.122-7.027 1.243-9.992 3.447-11.973a21.4 21.4 0 0 1 13.003-13.34m11.359 41.007q.128-.023.255-.05h.002zm.88-.191.215-.051.002-.001zM21.084 6.465h.001",clipRule:"evenodd"}),(0,o.jsx)("path",{fill:"#3A4953",d:"m36.328 4.056 1.3 1.263zm-.83.853L34.2 3.646l-1.95 2.006 2.628.96zm13.968 14.069-1.707.609.14.39.295.291zm3.714 13.116 1.812.031zm-4.24 9.99 1.187 1.369zm-6.322 3.224.543 1.73.002-.002zm-.069.022-.543-1.729-.012.004zm-.088.029.546 1.727.01-.003zm-1.328.378-.446-1.757-.335.086-.28.202zm-13.634 4.399v1.812zm-13.632-4.399 1.06-1.47-.28-.202-.334-.084zm-1.328-.379-.55 1.727.004.001zm-.09-.028-.55 1.727zm-.067-.022.55-1.726-.005-.002zm-6.323-3.224-1.187 1.369zm-4.24-9.99-1.811.031zm3.715-13.116 1.272 1.29.295-.29.14-.391zm14.02-14.089.618 1.704 2.636-.955-1.954-2.011zm-.81-.833-1.3 1.262zm.948-2.244V0zm.563 4.935.615 1.704-1.23-3.409zM7.25 20.086l1.211 1.347.357-.32.151-.456zM3.803 32.06l-1.812.03zm9.244 11.378.55-1.726-.004-.002zm.09.029-.55 1.727h.004zm1.586.437 1.087-1.45-.304-.227-.369-.087zM27.5 48.152v1.812h.75l.532-.531zm.001-.001 1.282 1.281 3.093-3.093H27.5zm-12.776-4.247 1.087-1.45-.304-.227-.369-.087zm-1.586-.437-.55 1.727h.004zm-.09-.029.55-1.726-.004-.002zM3.805 32.06l-1.812.032zm3.447-11.973 1.211 1.347.357-.32.151-.456zm24.043 27.727.32 1.784-.64-3.567zm-.573.096-.271-1.792.542 3.584zm.892-.155-.348-1.778.695 3.557zm.255-.05.37 1.774.23-.048.21-.105zm.002 0 .81 1.62-1.179-3.395zm.623-.141L32.07 45.8l.845 3.524zm.215-.051.441 1.757.192-.048.177-.089zm.002-.001.81 1.62-1.251-3.378zM21.084 6.465V4.653h-.278l-.266.084zm-.572.191-.593-1.712 1.186 3.424zm.573-.19.545 1.728-.545-3.54zM35.38 1.811v1.812a.49.49 0 0 1-.351-.83l1.3 1.262 1.3 1.262C39.558 3.33 38.15 0 35.379 0zm.949 2.244-1.3-1.264-.829.854 1.3 1.263 1.298 1.263.83-.853zm-.83.853-.621 1.702a21.57 21.57 0 0 1 12.882 12.976l1.707-.61 1.706-.608A25.2 25.2 0 0 0 36.12 3.207zm13.968 14.069-1.272 1.29c2.043 2.015 3.29 5.063 3.174 11.795l1.812.03 1.812.032c.123-7.147-1.178-11.405-4.254-14.438zm3.714 13.116-1.812-.031c-.074 4.3-1.658 6.955-3.615 8.651l1.187 1.37 1.187 1.369c2.758-2.391 4.773-6.03 4.865-11.328zm-4.24 9.99-1.187-1.37c-1.919 1.663-4.188 2.395-5.68 2.866l.545 1.728.545 1.728c1.488-.469 4.421-1.379 6.964-3.583zm-6.322 3.224-.543-1.728-.069.021.543 1.729.544 1.729.068-.022zm-.069.022-.555-1.725-.089.029.556 1.724.556 1.725.088-.028zm-.088.029-.546-1.728q-.626.197-1.228.35l.446 1.756.445 1.756q.704-.178 1.429-.407zm-1.328.378-1.06-1.47a21.4 21.4 0 0 1-12.574 4.057v3.624c5.48 0 10.562-1.759 14.694-4.742zm-13.634 4.399v-1.812a21.4 21.4 0 0 1-12.571-4.056l-1.06 1.469-1.061 1.47a25.03 25.03 0 0 0 14.692 4.74zm-13.632-4.399.446-1.757q-.602-.151-1.228-.35l-.546 1.728-.546 1.728q.723.229 1.429.407zm-1.328-.379.55-1.726-.09-.029-.55 1.727-.55 1.727.09.028zm-.09-.028.55-1.727-.067-.021-.55 1.726-.55 1.727.067.022zm-.067-.022.545-1.728c-1.492-.47-3.762-1.202-5.681-2.866l-1.187 1.37-1.187 1.369c2.543 2.204 5.477 3.114 6.964 3.583zm-6.323-3.224 1.187-1.37c-1.957-1.696-3.54-4.35-3.615-8.651l-1.811.03-1.812.032c.091 5.297 2.106 8.937 4.864 11.328zm-4.24-9.99 1.812-.031c-.116-6.733 1.13-9.78 3.175-11.795l-1.272-1.29-1.272-1.29C1.185 20.72-.115 24.977.008 32.124zm3.715-13.116 1.707.609A21.57 21.57 0 0 1 20.172 6.593l-.617-1.704-.618-1.703a25.2 25.2 0 0 0-15.11 15.183zm14.02-14.089 1.3-1.262-.81-.834-1.3 1.263-1.3 1.262.811.834zm-.81-.833 1.3-1.263a.49.49 0 0 1-.351.831V1.812L19.691 0c-2.771 0-4.177 3.332-2.247 5.318zm.948-2.244v1.812H35.38V0H19.692zm.563 4.935-.616-1.705A23.2 23.2 0 0 0 5.53 19.514l1.72.572 1.72.571a19.58 19.58 0 0 1 11.9-12.206zM7.25 20.086l-1.212-1.348C3.27 21.228 1.866 24.83 1.99 32.091l1.812-.032 1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596zM3.803 32.06l-1.812.03c.082 4.753 1.861 7.854 4.18 9.864 2.236 1.938 4.852 2.746 6.33 3.212l.546-1.728.546-1.728c-1.511-.477-3.445-1.105-5.047-2.494-1.519-1.316-2.867-3.433-2.932-7.188zm9.244 11.378-.55 1.727.09.029.55-1.727.55-1.727-.09-.028zm.09.029-.546 1.728q.875.276 1.718.474l.414-1.765.414-1.764q-.706-.164-1.454-.401zm1.586.437-1.086 1.45a23.05 23.05 0 0 0 13.862 4.61V46.34a19.43 19.43 0 0 1-11.69-3.886zM27.5 48.152l1.282 1.281v-.001l-1.28-1.281-1.282-1.282-.001.001zm.001-.001v-1.812a19.43 19.43 0 0 1-11.69-3.885l-1.086 1.45-1.086 1.45A23.05 23.05 0 0 0 27.5 49.964zm-12.776-4.247.414-1.764c-.472-.11-.954-.243-1.454-.401l-.546 1.728-.546 1.728q.875.276 1.718.474zm-1.586-.437.55-1.727-.09-.028-.55 1.726-.55 1.727.09.029zm-.09-.029.546-1.728c-1.511-.477-3.444-1.105-5.047-2.494-1.518-1.316-2.866-3.433-2.93-7.188l-1.812.032-1.812.03c.082 4.752 1.86 7.853 4.18 9.864 2.235 1.938 4.85 2.745 6.33 3.212zM3.805 32.06l1.811-.03c-.117-6.794 1.208-9.122 2.847-10.596l-1.211-1.347-1.212-1.348c-2.767 2.49-4.172 6.092-4.047 13.353zm3.447-11.973 1.72.571A19.58 19.58 0 0 1 20.87 8.451l-.615-1.704-.616-1.705A23.2 23.2 0 0 0 5.532 19.514zm24.043 27.727-.32-1.783q-.266.048-.524.087l.271 1.792.271 1.791q.319-.048.622-.103zm-.573.096.272 1.791q.316-.048.622-.103l-.32-1.784-.321-1.783a20 20 0 0 1-.524.087zm.892-.155.347 1.779c.061-.012.179-.034.278-.055l-.37-1.774-.369-1.774c-.071.015-.124.025-.234.046zm.255-.05.81 1.621h.003l-.81-1.622-.811-1.62h-.002zm.002 0-.369-1.775-.235.047.347 1.778.347 1.779.28-.056zm.623-.141.422 1.762c.023-.006.159-.037.234-.056l-.441-1.757-.441-1.758-.197.047zm.215-.051.81 1.62h.002l-.81-1.621-.81-1.621h-.002zm.002-.001-.441-1.758-.199.047.423 1.763.422 1.762.236-.057zM21.084 6.465l-.544-1.728q-.325.104-.621.207l.593 1.712.593 1.712q.273-.095.524-.174zm-.572.191.594 1.712q.27-.093.524-.174l-.545-1.729-.544-1.728q-.323.103-.622.207zm.573-.19V4.652zv1.812z",mask:"url(#midscene-logo_svg__a)"}),(0,o.jsx)("mask",{id:"midscene-logo_svg__b",width:53,height:50,x:1,y:1,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"},children:(0,o.jsx)("path",{fill:"#F0F0F0",fillRule:"evenodd",d:"M24.214 12.537a4.63 4.63 0 0 0 6.64 0l6.608-6.805a23.4 23.4 0 0 1 12 13.247c2.56 2.524 3.833 6.176 3.714 13.114-.083 4.8-1.883 7.947-4.24 9.991-2.231 1.934-4.833 2.755-6.322 3.225l-.158.05q-.675.213-1.328.378a23.22 23.22 0 0 1-13.632 4.399 23.22 23.22 0 0 1-13.632-4.399q-.654-.165-1.33-.378l-.157-.05c-1.49-.47-4.092-1.291-6.322-3.225-2.358-2.044-4.157-5.192-4.24-9.99-.12-6.941 1.155-10.593 3.716-13.117a23.4 23.4 0 0 1 12.05-13.27zM35.38 1.812c1.168 0 1.763 1.406.949 2.244l-6.895 7.1c-.52.534-1.21.8-1.899.8h-.012a2.65 2.65 0 0 1-1.536-.503 2.7 2.7 0 0 1-.35-.299L19.552 4.89l.001-.001-.808-.833c-.814-.838-.22-2.244.949-2.244z",clipRule:"evenodd"})}),(0,o.jsxs)("g",{mask:"url(#midscene-logo_svg__b)",children:[(0,o.jsx)("path",{fill:"#fff",d:"M-4.044-9.086h63.087V65.49H-4.044z"}),(0,o.jsx)("g",{filter:"url(#midscene-logo_svg__c)",opacity:.8,children:(0,o.jsx)("path",{fill:"#005EEC",fillOpacity:.01,d:"M41.85 43.36c-.378-.748-3.453.67-7.362 2.242s-7.175 2.702-6.798 3.45c.378.746 3.853.078 7.763-1.494s6.773-3.452 6.396-4.199"})})]}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__d)",d:"M5.773 18.412h43.601v24.223H5.773z"}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__e)",d:"M5.773 18.473h43.086v24.454H5.773z"}),(0,o.jsx)("path",{fill:"url(#midscene-logo_svg__f)",d:"M5.926 18.075h43.092v24.457H5.926z"}),(0,o.jsx)("foreignObject",{width:27.157,height:19.138,x:21.193,y:36.687,children:(0,o.jsx)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{backdropFilter:"blur(2.96px)",clipPath:"url(#midscene-logo_svg__g)",height:"100%",width:"100%"}})}),(0,o.jsx)("path",{fill:"#3A4953",fillRule:"evenodd",stroke:"#3A4953",strokeWidth:.514,d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253Zm17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901Z",clipRule:"evenodd","data-figma-bg-blur-radius":5.911}),(0,o.jsxs)("defs",{children:[(0,o.jsx)("pattern",{id:"midscene-logo_svg__d",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__h",transform:"scale(.00483 .0087)"})}),(0,o.jsx)("pattern",{id:"midscene-logo_svg__e",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__i",transform:"scale(.009 .01587)"})}),(0,o.jsx)("pattern",{id:"midscene-logo_svg__f",width:1,height:1,patternContentUnits:"objectBoundingBox",children:(0,o.jsx)("use",{xlinkHref:"#midscene-logo_svg__j",transform:"scale(.009 .01587)"})}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__h",width:207,height:115,preserveAspectRatio:"none"}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__i",width:111,height:63,preserveAspectRatio:"none"}),(0,o.jsx)("image",{xlinkHref:"data:image/png;base64,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",id:"midscene-logo_svg__j",width:111,height:63,preserveAspectRatio:"none"}),(0,o.jsx)("clipPath",{id:"midscene-logo_svg__g",transform:"translate(-21.193 -36.687)",children:(0,o.jsx)("path",{fillRule:"evenodd",d:"m14.619 40.412.082.025c2.186.657 4.053.825 6.578.932.365.016.704-.127.932-.363l3.08-5.674c.94-1.735 3.484-1.735 4.426 0l3.08 5.674c.227.236.566.379.931.363 2.525-.107 4.392-.275 6.578-.932l.082-.025c1.384-.416 3.235-.984 4.774-2.253 1.475-1.216 2.74-3.144 2.8-6.483.066-3.66-.372-5.858-1.066-7.316-.672-1.411-1.641-2.254-2.965-3.093-1.305-.828-2.922-1.54-4.435-1.54H37.44c-1.566 0-3.128.159-4.66.473l-.265.055a24.45 24.45 0 0 1-10.02-.043 22 22 0 0 0-4.582-.484h-2.402c-1.895 0-3.3.818-4.435 1.539-1.359.862-2.325 1.704-2.988 3.106-.686 1.45-1.11 3.637-1.043 7.303.06 3.339 1.325 5.267 2.8 6.483 1.539 1.269 3.39 1.837 4.774 2.253m17.133 1.319-3.146-5.796c-.463-.854-1.742-.854-2.205 0l-3.146 5.796a2.48 2.48 0 0 1-2.03.901c-2.556-.11-4.549-.282-6.888-.985l-.082-.024c-2.74-.824-8.339-2.505-8.473-9.924-.136-7.494 1.7-9.65 4.617-11.5 1.164-.738 2.832-1.735 5.112-1.735h2.402c1.63 0 3.256.172 4.847.512 3.127.67 6.368.683 9.5.04l.266-.054a24.5 24.5 0 0 1 4.914-.498h2.056c1.865 0 3.727.857 5.112 1.736 2.852 1.808 4.753 4.005 4.618 11.499-.135 7.419-5.733 9.1-8.474 9.924l-.082.024c-2.339.703-4.332.876-6.888.985a2.48 2.48 0 0 1-2.03-.901",clipRule:"evenodd"})}),(0,o.jsxs)("filter",{id:"midscene-logo_svg__c",width:27.157,height:19.138,x:21.193,y:36.687,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse",children:[(0,o.jsx)("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),(0,o.jsx)("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),(0,o.jsx)("feGaussianBlur",{result:"effect1_foregroundBlur_8049_134028",stdDeviation:3.212})]})]})]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))};function lu(e){var t;return null==e||null==(t=e.platformSelector)?void 0:t.fieldKey}function ld(){return(0,o.jsx)(ll,{"aria-hidden":"true",className:"session-setup-select-icon"})}let lp="Create Agent";function lh(e){var t,r,n,i;let{form:a,sessionSetup:s,sessionSetupError:A,sessionViewState:l,sessionLoading:c,sessionMutating:u,onCreateSession:d}=e,p=u||c||"blocked"===l.setupState,h=null!=(t=null==s?void 0:s.primaryActionLabel)?t:lp,f=null!=(r=null==s?void 0:s.title)?r:lp,g=null!=(n=null==s?void 0:s.description)?n:"Create a platform session before running actions.";return(0,o.jsx)("div",{className:"session-setup-panel",children:(0,o.jsxs)("div",{className:"session-setup-card",children:[(0,o.jsx)(lc,{"aria-hidden":"true",className:"session-setup-logo"}),(0,o.jsx)("h1",{className:"session-setup-title",children:f}),(0,o.jsx)("p",{className:"session-setup-description",children:g}),"blocked"===l.setupState&&l.setupBlockingReason&&(0,o.jsx)(y.A,{type:"error",showIcon:!0,message:"Setup blocked",description:l.setupBlockingReason,className:"session-setup-alert"}),A?(0,o.jsx)(y.A,{type:"error",showIcon:!0,message:"Failed to load setup",description:A,className:"session-setup-alert"}):null,(null==s?void 0:s.notice)?(0,o.jsx)(y.A,{type:s.notice.type,showIcon:!0,message:s.notice.message,description:s.notice.description,className:"session-setup-alert"}):null,(0,o.jsxs)(av.A,{form:a,layout:"vertical",className:"session-setup-form",onFinish:()=>{p||d()},children:[(null!=(i=null==s?void 0:s.fields)?i:[]).map(e=>(0,o.jsx)(av.A.Item,{label:e.label,name:e.key,tooltip:e.description,rules:e.required?[{required:!0,message:`${e.label} is required`}]:void 0,children:function(e,t){if("number"===e.type)return(0,o.jsx)(AW.A,{style:{width:"100%"},placeholder:e.placeholder});if("select"===e.type){var r,n;let i=lu(t),a=function(e,t){var r;if(lu(t)!==e.key||!(null==t||null==(r=t.platformRegistry)?void 0:r.length))return e.options;let n=t.platformRegistry.map(e=>({label:e.label,value:e.id,description:[e.description,e.unavailableReason].filter(Boolean).join(" \xb7 ")||void 0}));return n.length>0?n:e.options}(e,t);return i===e.key&&(null==t||null==(r=t.platformSelector)?void 0:r.variant)==="cards"?(0,o.jsx)(AN.A.Group,{className:"platform-selector-group",children:(a||[]).map(e=>(0,o.jsxs)(AN.A.Button,{value:e.value,className:"platform-selector-card",children:[(0,o.jsx)("div",{className:"platform-selector-title",children:e.label}),e.description?(0,o.jsx)("div",{className:"platform-selector-description",children:e.description}):null]},String(e.value)))}):(0,o.jsx)(Aq.A,{placeholder:e.placeholder,suffixIcon:(0,o.jsx)(ld,{}),options:(null!=(n=null!=a?a:e.options)?n:[]).map(e=>({label:e.label,value:e.value,description:e.description})),optionRender:e=>{let t=e.data.description;return t?(0,o.jsxs)("div",{className:"session-select-option",children:[(0,o.jsx)("div",{className:"session-select-option-label",children:e.data.label}),(0,o.jsx)("div",{className:"session-select-option-description",children:t})]}):e.data.label}})}return(0,o.jsx)(m.A,{placeholder:e.placeholder})}(e,s)},e.key)),(0,o.jsx)("button",{type:"submit",className:"session-setup-submit",disabled:p,children:u?"Creating...":h})]})]})})}function lf(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function lg(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function lm(e,t,r,n,i,o,a){try{var s=e[o](a),A=s.value}catch(e){r(e);return}s.done?t(A):Promise.resolve(A).then(n,i)}function ly(e){var t,r,n,i,a,s;let A,{controller:l,appVersion:c,title:u="Playground",branding:d,playgroundConfig:p,header:h,className:m,playgroundClassName:v,notConnectedFallback:b}=e,{state:w,actions:E}=l,k=lg(lf({},A={showContextPreview:!1,layout:"vertical",showVersionInfo:!1,enableScrollToBottom:!1,serverMode:!0,showEnvConfigReminder:!1,showClearButton:!1,showSystemMessageHeader:!1,promptInputChrome:{variant:"minimal"},executionFlow:{collapsible:!0},deviceType:w.deviceType,executionUx:{hints:w.executionUxHints,countdownSeconds:w.countdownSeconds}},p),{executionFlow:lf({},A.executionFlow,null==p?void 0:p.executionFlow),executionUx:lf({},A.executionUx,null==p?void 0:p.executionUx)}),x=(t=w.runtimeInfo,r=w.deviceType,lg(lf({},d),{title:null!=(n=null==t?void 0:t.title)?n:u,version:c,targetName:null!=(s=null!=(a=null!=(i=null==t?void 0:t.platformId)?i:null==d?void 0:d.targetName)?a:r)?s:"screen"}));return(0,o.jsxs)("div",{className:["playground-conversation-panel",m].filter(Boolean).join(" "),children:[(0,o.jsx)(f.A,{open:null!==w.countdown,footer:(0,o.jsx)(g.Ay,{onClick:E.finishCountdown,type:"default",children:"Skip countdown"}),closable:!0,maskClosable:!0,onCancel:E.finishCountdown,centered:!0,width:400,styles:{mask:{backgroundColor:"rgba(0, 0, 0, 0.75)"}},children:(0,o.jsxs)("div",{style:{textAlign:"center",padding:"40px 20px"},children:[(0,o.jsx)("div",{style:{fontSize:"120px",fontWeight:"bold",color:"GO!"===w.countdown?"#52c41a":"#1890ff",marginBottom:"24px",lineHeight:1},children:w.countdown}),(0,o.jsx)("div",{style:{fontSize:"18px",fontWeight:500,marginBottom:"12px"},children:"Automation Starting Soon"}),(0,o.jsxs)("div",{style:{fontSize:"14px",color:"var(--midscene-text-secondary)"},children:["The selected session requested a countdown before execution.",(0,o.jsx)("br",{}),"Please wait until the run starts."]})]})}),h,(0,o.jsx)("div",{className:"playground-conversation-body",children:w.serverOnline?w.sessionViewState.connected?(0,o.jsx)(lA,{playgroundSDK:w.playgroundSDK,config:k,branding:x,className:["playground-container","playground-conversation-skin",v].filter(Boolean).join(" ")}):void 0!==b?(0,o.jsx)(o.Fragment,{children:b}):(0,o.jsx)(lh,{form:w.form,sessionSetup:w.sessionSetup,sessionSetupError:w.sessionSetupError,sessionViewState:w.sessionViewState,sessionLoading:w.sessionLoading,sessionMutating:w.sessionMutating,onCreateSession:()=>{var e;return(e=function*(){yield E.createSession()},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){lm(o,n,i,a,s,"next",e)}function s(e){lm(o,n,i,a,s,"throw",e)}a(void 0)})})()}}):(0,o.jsx)("div",{className:"playground-conversation-offline",children:(0,o.jsx)(y.A,{type:"warning",showIcon:!0,message:"Playground server offline",description:"Reconnect the runtime to continue using the Android playground."})})})]})}let{Content:lv}=Y.A;function lb(e){var t;let{serverUrl:r,appVersion:n,title:i="Playground",defaultDeviceType:s="web",branding:l,playgroundConfig:c,offlineTitle:u="Midscene Playground",offlineStatusText:d="Server offline...",pollIntervalMs:h=5e3}=e,[f,g]=(0,a.useState)(!1),m=function(e){var t;let{serverUrl:r,defaultDeviceType:n="web",pollIntervalMs:i=5e3,countdownSeconds:s=3,initialFormValues:A,onCountdownFinish:l}=e,{message:c}=p.A.useApp(),[u]=av.A.useForm(),d=(0,a.useRef)(A);(0,a.useLayoutEffect)(()=>{let e=d.current;if(e)for(let[t,r]of Object.entries(e))void 0===u.getFieldValue(t)&&u.setFieldsValue({[t]:r})},[u]);let h=null!=(t=av.A.useWatch([],u))?t:{},[f,g]=(0,a.useState)(null),[m,y]=(0,a.useState)(null),[v,b]=(0,a.useState)(null),[w,E]=(0,a.useState)(!1),[k,x]=(0,a.useState)(!1),S=X(e=>e.config),C=(0,a.useMemo)(()=>JSON.stringify(Object.entries(S).sort((e,t)=>{let[r]=e,[n]=t;return r.localeCompare(n)})),[S]),j=aB(m),I="string"==typeof j?h[j]:void 0,O=(0,a.useMemo)(()=>new ay({type:"remote-execution",serverUrl:r}),[r]),{serverOnline:P,isUserOperating:R,deviceType:T,runtimeInfo:N,executionUxHints:M,refreshServerState:D}=function(e,t,r){let[n,i]=(0,a.useState)(!1),[o,s]=(0,a.useState)(!1),[A,l]=(0,a.useState)(t),[c,u]=(0,a.useState)(null),[d,p]=(0,a.useState)([]),h=(0,a.useRef)(null),f=(0,a.useRef)(!0);(0,a.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,a.useEffect)(()=>{h.current=c},[c]),(0,a.useEffect)(()=>{e.onProgressUpdate(e=>{s(!!e)})},[e]);let g=(0,a.useCallback)(()=>{var r;return(r=function*(){try{let a=yield e.checkStatus();if(!f.current)return;if(i(a),!a){h.current=null,u(null),p([]);return}try{let r=yield e.getRuntimeInfo();if(!f.current)return;if(r){h.current=r,u(r),l(eS(r,t)),p(eC(r));return}}catch(e){console.warn("Failed to get runtime info:",e)}try{var r,n,o;let i=yield e.getInterfaceInfo();if(!f.current||!(null==i?void 0:i.type))return;let a=(r=h.current,n=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},r),o=o={interface:i,preview:(null==r?void 0:r.preview)||{kind:"none",capabilities:[]},executionUxHints:(null==r?void 0:r.executionUxHints)||[],metadata:(null==r?void 0:r.metadata)||{}},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n);h.current=a,u(a),l(eS(a,t)),p(eC(a))}catch(e){console.warn("Failed to get interface info:",e)}}catch(e){if(!f.current)return;console.error("Failed to check server status:",e),i(!1)}},function(){var e=this,t=arguments;return new Promise(function(n,i){var o=r.apply(e,t);function a(e){aE(o,n,i,a,s,"next",e)}function s(e){aE(o,n,i,a,s,"throw",e)}a(void 0)})})()},[t,e]);return(0,a.useEffect)(()=>{g();let e=window.setInterval(()=>{g()},r);return()=>{window.clearInterval(e)}},[r,g]),{serverOnline:n,isUserOperating:o,deviceType:A,runtimeInfo:c,executionUxHints:d,refreshServerState:g}}(O,n,i),B=(0,a.useMemo)(()=>{let e,t;return t=(e=(null==N?void 0:N.metadata)||{}).setupState,{connected:!!e.sessionConnected,displayName:"string"==typeof e.sessionDisplayName?e.sessionDisplayName:void 0,setupState:"blocked"===t||"ready"===t||"required"===t?t:"ready",setupBlockingReason:"string"==typeof e.setupBlockingReason?e.setupBlockingReason:void 0}},[N]),z=(0,a.useRef)(null),L=(0,a.useRef)(null),F=(0,a.useRef)(!0),K=(0,a.useRef)(void 0),U=(0,a.useRef)(null),Q=(0,a.useRef)(null),Z=(0,a.useRef)(!1),J=(0,a.useRef)(null),H=(0,a.useRef)(null),V=(0,a.useRef)(null),q=(0,a.useCallback)(()=>aM(function*(){if(!ax(S))return J.current=null,V.current=null,!0;if(J.current===C)return!0;let e=V.current;if((null==e?void 0:e.signature)===C)return e.promise;let t={promise:Promise.resolve(!0),signature:C},r=aM(function*(){try{var e;return yield(e=function*(){return!!ax(S)&&(yield O.overrideConfig(S),!0)},function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){ak(o,n,i,a,s,"next",e)}function s(e){ak(o,n,i,a,s,"throw",e)}a(void 0)})})(),J.current=C,!0}catch(e){return G(e,{title:"Failed to apply AI configuration"}),!1}finally{V.current===t&&(V.current=null)}})();return t.promise=r,V.current=t,r})(),[S,C,O]),W=(0,a.useCallback)(()=>{let e=null!==z.current;null!==z.current&&(window.clearInterval(z.current),z.current=null);let t=L.current;L.current=null,F.current&&g(null),null==t||t(),e&&F.current&&(null==l||l())},[l]),Y=(0,a.useCallback)(()=>aM(function*(){if(!(s<=0))return W(),new Promise(e=>{L.current=e;let t=s;F.current&&g(t),z.current=window.setInterval(()=>{if((t-=1)>0){F.current&&g(t);return}if(0===t){F.current&&g("GO!");return}W()},1e3)})})(),[s,W]);(0,a.useEffect)(()=>(F.current=!0,()=>{F.current=!1,W()}),[W]),(0,a.useEffect)(()=>M.includes("countdown-before-run")?(O.setBeforeActionHook(()=>aM(function*(){yield Y()})()),()=>{O.setBeforeActionHook(void 0)}):void O.setBeforeActionHook(void 0),[M,O,Y]);let _=(0,a.useCallback)(e=>aM(function*(){let t=aD({},u.getFieldsValue(!0),e||{});E(!0);try{let r=yield O.getSessionSetup(e);y(r),b(null);let n=aB(r);K.current=n&&"string"==typeof t[n]?t[n]:void 0,u.setFieldsValue(ab(r,t))}catch(e){console.error("Failed to load session setup:",e),b(e instanceof Error?e.message:"Failed to load session setup")}finally{E(!1)}})(),[u,O]),$=(0,a.useCallback)((e,t)=>aM(function*(){if(H.current)return H.current;let r=aM(function*(){var r;let n;try{if(Z.current=!0,x(!0),!(yield q()))return!1;let r=null!=e?e:yield u.validateFields();return n=r,yield O.createSession(r),(null==t?void 0:t.silent)||(Q.current=null),(null==t?void 0:t.silent)||c.success("Agent created"),yield D(),!0}catch(e){if(e.errorFields)return!1;if(null==t?void 0:t.silent)return Q.current=aS(n),!1;return G(e,null!=(r=function(e){let t;if(t=aO(e).toLowerCase(),aI.test(t)&&(t.includes("puppeteer browsers install chrome")||t.includes("cache path")||t.includes("puppeteer")))return{description:(0,o.jsx)(aT,{error:e}),duration:0,title:"Failed to create Agent"}}(e))?r:{title:"Failed to create Agent"}),!1}finally{Z.current=!1,x(!1)}})(),n={promise:null};return n.promise=r.finally(()=>{H.current===n.promise&&(H.current=null)}),H.current=n.promise,n.promise})(),[q,u,c,O,D]),ee=(0,a.useCallback)(()=>aM(function*(){try{Q.current=aS(aw(m,u.getFieldsValue(!0))),Z.current=!0,x(!0),yield O.destroySession(),c.success("Session disconnected"),yield D(),yield _()}catch(e){G(e,{title:"Failed to disconnect session"})}finally{Z.current=!1,x(!1)}})(),[u,c,O,D,_,m]);return(0,a.useEffect)(()=>{P&&q()},[q,P]),(0,a.useEffect)(()=>{if(!P||B.connected)return;let e=!1,t=!1,r=()=>aM(function*(){if(!e&&!t){t=!0;try{yield _(u.getFieldsValue(!0))}finally{t=!1}}})();r();let n=window.setInterval(()=>{r()},i);return()=>{e=!0,window.clearInterval(n)}},[u,i,_,P,B.connected]),(0,a.useEffect)(()=>{if(!P||B.connected||!I)return;let e=aB(m);if(e&&K.current!==I){var t,r;_((t=aD({},u.getFieldsValue(!0)),r=r={[e]:I},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}),t))}},[u,_,I,P,m,B.connected]),(0,a.useEffect)(()=>{if(B.connected){U.current=null;return}if(!P||w||k||Z.current||v)return;let e=aw(m,u.getFieldsValue(!0)),{signature:t,shouldCreate:r}=function(e){let{autoCreateInput:t,lastAttemptedSignature:r,blockedSignature:n}=e,i=aS(t);return i?{signature:i,shouldCreate:i!==r&&i!==n}:{signature:null,shouldCreate:!1}}({autoCreateInput:e,lastAttemptedSignature:U.current,blockedSignature:Q.current});if(!r||!t){t||(U.current=null);return}U.current=t,aM(function*(){(yield $(null!=e?e:void 0,{silent:!0}))||(U.current=null)})()},[$,u,P,w,k,m,v,B.connected]),{state:{playgroundSDK:O,form:u,formValues:h,serverOnline:P,isUserOperating:R,deviceType:T,runtimeInfo:N,executionUxHints:M,sessionViewState:B,sessionSetup:m,sessionSetupError:v,sessionLoading:w,sessionMutating:k,countdown:f,countdownSeconds:s},actions:{refreshServerState:D,refreshSessionSetup:_,createSession:$,destroySession:ee,finishCountdown:W}}}({serverUrl:r,defaultDeviceType:s,countdownSeconds:null==c||null==(t=c.executionUx)?void 0:t.countdownSeconds,pollIntervalMs:h});return((0,a.useEffect)(()=>{let e=()=>{g(window.innerWidth<=1024)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),m.state.serverOnline)?(0,o.jsx)(eT,{children:(0,o.jsx)(Y.A,{className:"app-container playground-container",children:(0,o.jsx)(lv,{className:"app-content",children:(0,o.jsxs)(_.YZ,{autoSaveId:"playground-layout",direction:f?"vertical":"horizontal",children:[(0,o.jsx)(_.Zk,{defaultSize:f?67:32,maxSize:f?85:60,minSize:f?67:25,className:"app-panel left-panel",children:(0,o.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,o.jsx)("div",{className:"playground-panel-header",children:(0,o.jsxs)("div",{className:"header-row",children:[(0,o.jsx)(A,{}),(0,o.jsx)(W,{showTooltipWhenEmpty:!1,showModelName:!1,playgroundSDK:m.state.playgroundSDK})]})}),(0,o.jsx)("div",{className:"playground-panel-playground",children:(0,o.jsx)(ly,{controller:m,appVersion:n,branding:l,playgroundConfig:c,title:i})})]})}),(0,o.jsx)(_.TW,{className:"panel-resize-handle"}),(0,o.jsx)(_.Zk,{defaultSize:f?33:68,minSize:f?15:40,className:"app-panel right-panel",children:(0,o.jsx)("div",{className:"panel-content right-panel-content",children:m.state.sessionViewState.connected?(0,o.jsx)(eP,{playgroundSDK:m.state.playgroundSDK,runtimeInfo:m.state.runtimeInfo,serverUrl:r,serverOnline:m.state.serverOnline,isUserOperating:m.state.isUserOperating}):(0,o.jsx)(ee,{})})})]})})})}):(0,o.jsx)(eT,{children:(0,o.jsx)("div",{className:"server-offline-container",children:(0,o.jsxs)("div",{className:"server-offline-message",children:[(0,o.jsx)(A,{}),(0,o.jsxs)("div",{className:"server-offline-content",children:[(0,o.jsxs)("div",{className:"server-offline-icon",children:[(0,o.jsx)(az,{className:"icon-background"}),(0,o.jsx)(aL,{className:"icon-foreground"})]}),(0,o.jsx)("h1",{children:u}),(0,o.jsx)("p",{className:"connection-status",children:d})]})]})})})}let lw=document.getElementById("root");if(!lw)throw Error("Root element not found");(0,s.createRoot)(lw).render((0,o.jsx)(a.StrictMode,{children:(0,o.jsx)(function(){return(0,o.jsx)(lb,{serverUrl:"",appVersion:"1.10.2-beta-20260706032158.0",title:"Playground",offlineTitle:"Midscene Playground"})},{})}))},1182(){},3198(e,t,r){"use strict";r.d(t,{ZH:()=>d});var n=r(3244),i=r(5207),o=r(3078),a=r.n(o),s=r(217),A=r(6987),l=r(9152),c=r(5409);let u="midscene_run",d=e=>{if(!l.$9)return"";let t=(()=>{if(!l.$9)return"";let e=a().resolve(c.cwd(),l.$9?(0,s.j)(A.Tr)||u:"");if(!(0,n.existsSync)(e))try{(0,n.mkdirSync)(e,{recursive:!0})}catch(t){e=a().join((0,i.tmpdir)(),u),(0,n.mkdirSync)(e,{recursive:!0})}return e})(),r=a().join(t,e);return(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0}),r}},217(e,t,r){"use strict";r.d(t,{j:()=>o});var n=r(6987),i=r(5409);let o=e=>{if(!n.Wh.includes(e))throw Error(`getBasicEnvValue with key ${e} is not supported.`);return i.env[e]}},6987(e,t,r){"use strict";r.d(t,{$:()=>C,$H:()=>h,$L:()=>c,$l:()=>s,AU:()=>w,CA:()=>S,Cn:()=>el,DL:()=>ev,El:()=>B,FU:()=>d,G0:()=>i,HR:()=>o,I2:()=>n,IQ:()=>p,JM:()=>I,Jq:()=>E,Km:()=>m,Lg:()=>ew,Lh:()=>J,M1:()=>b,NF:()=>P,OK:()=>eo,OY:()=>ed,Od:()=>j,Pm:()=>H,Sk:()=>N,T4:()=>U,TN:()=>L,Tr:()=>F,UH:()=>eC,V7:()=>V,VM:()=>v,Vb:()=>ep,W4:()=>g,WH:()=>es,Wh:()=>em,XE:()=>eE,YK:()=>z,Yf:()=>Q,Yg:()=>G,Z$:()=>eA,Z7:()=>X,ZX:()=>l,_j:()=>ex,_q:()=>K,aK:()=>y,aO:()=>ef,ag:()=>ea,b6:()=>x,c$:()=>ey,d8:()=>D,fS:()=>ee,ho:()=>M,iw:()=>u,jG:()=>k,j_:()=>T,kX:()=>Z,mZ:()=>er,n0:()=>A,nc:()=>$,pp:()=>R,rd:()=>eb,sg:()=>ec,tk:()=>ek,u1:()=>eh,v:()=>Y,v4:()=>a,vC:()=>q,wu:()=>eu,xP:()=>et,xg:()=>W,y2:()=>_,yR:()=>eg,yb:()=>O,zD:()=>f,zG:()=>ei,zQ:()=>en});let n="MIDSCENE_MODEL_INIT_CONFIG_JSON",i="MIDSCENE_MODEL_EXTRA_BODY_JSON",o="MIDSCENE_MODEL_NAME",a="MIDSCENE_DEBUG_MODEL_PROFILE",s="MIDSCENE_DEBUG_MODEL_RESPONSE",A="MIDSCENE_DEBUG_MODE",l="MIDSCENE_LANGSMITH_DEBUG",c="MIDSCENE_LANGFUSE_DEBUG",u="MIDSCENE_MODEL_SOCKS_PROXY",d="MIDSCENE_MODEL_HTTP_PROXY",p="MIDSCENE_MODEL_API_KEY",h="MIDSCENE_MODEL_BASE_URL",f="MIDSCENE_MODEL_TIMEOUT",g="MIDSCENE_MODEL_TEMPERATURE",m="MIDSCENE_MODEL_RETRY_COUNT",y="MIDSCENE_MODEL_RETRY_INTERVAL",v="MIDSCENE_MODEL_REASONING_EFFORT",b="MIDSCENE_MODEL_REASONING_ENABLED",w="MIDSCENE_MODEL_REASONING_BUDGET",E="OPENAI_API_KEY",k="OPENAI_BASE_URL",x="MIDSCENE_OPENAI_INIT_CONFIG_JSON",S="MIDSCENE_OPENAI_HTTP_PROXY",C="MIDSCENE_OPENAI_SOCKS_PROXY",j="MIDSCENE_CACHE",I="MIDSCENE_USE_VLM_UI_TARS",O="MIDSCENE_USE_QWEN_VL",P="MIDSCENE_USE_QWEN3_VL",R="MIDSCENE_USE_DOUBAO_VISION",T="MIDSCENE_USE_GEMINI",N="MATCH_BY_POSITION",M="MIDSCENE_REPORT_TAG_NAME",D="MIDSCENE_REPORT_QUIET",B="MIDSCENE_PREFERRED_LANGUAGE",z="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",L="MIDSCENE_REPLANNING_CYCLE_LIMIT",F="MIDSCENE_RUN_DIR",K="MIDSCENE_INSIGHT_MODEL_NAME",U="MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",Q="MIDSCENE_INSIGHT_MODEL_HTTP_PROXY",Z="MIDSCENE_INSIGHT_MODEL_BASE_URL",J="MIDSCENE_INSIGHT_MODEL_API_KEY",X="MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON",H="MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON",G="MIDSCENE_INSIGHT_MODEL_TIMEOUT",V="MIDSCENE_INSIGHT_MODEL_TEMPERATURE",q="MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",W="MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",Y="MIDSCENE_INSIGHT_MODEL_FAMILY",_="MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",$="MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",ee="MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",et="MIDSCENE_PLANNING_MODEL_NAME",er="MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",en="MIDSCENE_PLANNING_MODEL_HTTP_PROXY",ei="MIDSCENE_PLANNING_MODEL_BASE_URL",eo="MIDSCENE_PLANNING_MODEL_API_KEY",ea="MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON",es="MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON",eA="MIDSCENE_PLANNING_MODEL_TIMEOUT",el="MIDSCENE_PLANNING_MODEL_TEMPERATURE",ec="MIDSCENE_PLANNING_MODEL_RETRY_COUNT",eu="MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",ed="MIDSCENE_PLANNING_MODEL_FAMILY",ep="MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",eh="MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",ef="MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",eg="MIDSCENE_MODEL_FAMILY",em=[A,a,s,F],ey=[j,l,c,D],ev=[z,L],eb=["MIDSCENE_ADB_PATH","MIDSCENE_ADB_REMOTE_HOST","MIDSCENE_ADB_REMOTE_PORT","MIDSCENE_ANDROID_IME_STRATEGY","MIDSCENE_IOS_DEVICE_UDID","MIDSCENE_IOS_SIMULATOR_UDID",M,B,N,"MIDSCENE_CHROME_PATH","MIDSCENE_MCP_CHROME_PATH","DOCKER_CONTAINER"],ew=[...ey,...ev,...eb],eE=[o,n,i,p,h,u,d,f,g,m,y,v,b,w,I,O,P,R,T,"MIDSCENE_USE_VL_MODEL",E,k,x,S,C,K,U,Q,Z,J,X,H,G,V,q,W,Y,_,$,ee,et,er,en,ei,eo,ea,es,eA,el,ec,eu,ed,ep,eh,ef,eg],ek=["MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",...em,...ew,...eE],ex=["doubao-vision","doubao-seed","gemini","qwen2.5-vl","qwen3-vl","qwen3","qwen3.5","qwen3.6","vlm-ui-tars","vlm-ui-tars-doubao","vlm-ui-tars-doubao-1.5","glm-v","auto-glm","auto-glm-multilingual","gpt-5","kimi","xiaomi-mimo"];var eS,eC=((eS={}).V1_0="1.0",eS.V1_5="1.5",eS.DOUBAO_1_5_15B="doubao-1.5-15B",eS.DOUBAO_1_5_20B="doubao-1.5-20B",eS)},4565(e,t,r){"use strict";r.d(t,{N:()=>g,a:()=>function e(t,r){let n=`${p}:${t}`,o=(null==r?void 0:r.console)??!1,s=o?`${n}:withConsole`:n;if(!f.has(s))if(o){let r=e(t);f.set(s,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];r(...t);try{console.warn("[Midscene]",...t)}catch{}})}else{let e=c()(n);f.set(s,function(){for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];d.$9&&function(e,t){if(!d.$9)return;let r=function(e){let t=e.replace(/:/g,"-");if(!h.has(t)){let e=a().join((0,u.ZH)("log"),`${t}.log`),r=i().createWriteStream(e,{flags:"a"});h.set(t,r)}return h.get(t)}(e),n=new Date,o=n.toLocaleDateString("sv-SE"),s=n.toLocaleTimeString("sv-SE"),A=n.getMilliseconds().toString().padStart(3,"0"),l=n.getTimezoneOffset(),c=Math.floor(Math.abs(l)/60).toString().padStart(2,"0"),p=(Math.abs(l)%60).toString().padStart(2,"0"),f=`${l<=0?"+":"-"}${c}:${p}`,g=`${o}T${s}.${A}${f}`;r.write(`[${g}] ${t}
|
|
954
954
|
`)}(t,A().format(...n)),e(...n)})}return f.get(s)}});var n=r(3244),i=r.n(n),o=r(3078),a=r.n(o),s=r(1344),A=r.n(s),l=r(7617),c=r.n(l),u=r(3198),d=r(9152);let p="midscene",h=new Map,f=new Map;function g(e){d.$9||c().enable(`${p}:${e}`)}},9152(e,t,r){"use strict";r.d(t,{$9:()=>l,NB:()=>v,Qd:()=>E,gQ:()=>h,gV:()=>w,ht:()=>s,rS:()=>A,tD:()=>d,uR:()=>c,vA:()=>p,x3:()=>b});var n,i=r(7086),o=r(3961),a=r(5409);let s="undefined"!=typeof window,A="undefined"!=typeof WorkerGlobalScope,l=void 0!==a&&(null==(n=a.versions)?void 0:n.node);function c(){return(0,o.A)()}let u={};function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=JSON.stringify({content:t,rect:e}),n=5,o="",a=i.sha256.create().update(r).hex().split("").map(e=>String.fromCharCode(97+Number.parseInt(e,16)%26)).join("");for(;n<a.length-1;){if(u[o=a.slice(0,n)]&&u[o]!==r){n++;continue}u[o]=r;break}return o}function p(e,t){if(!e)throw Error(t||"Assertion failed")}function h(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log(...t)}let f=/</g,g=/>/g,m="__midscene_lt__",y="__midscene_gt__",v=e=>e.replace(f,m).replace(g,y),b=e=>{let t=RegExp(m,"g"),r=RegExp(y,"g");return e.replace(t,"<").replace(r,">")};function w(e){return e.replace(/[:*?"<>|# ]/g,"-")}function E(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}},4678(e){"use strict";if("undefined"==typeof sharp){var t=Error("Cannot find module 'sharp'");throw t.code="MODULE_NOT_FOUND",t}e.exports=sharp},6122(){},7407(){},9140(){},8973(){},3009(){},2801(){},6390(){},6970(){},3147(){},3612(){},3244(){},5592(){}},A={};function l(e){var t=A[e];if(void 0!==t)return t.exports;var r=A[e]={exports:{}};return s[e].call(r.exports,r,r.exports,l),r.exports}l.m=s,l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(r,n){if(1&n&&(r=this(r)),8&n||"object"==typeof r&&r&&(4&n&&r.__esModule||16&n&&"function"==typeof r.then))return r;var i=Object.create(null);l.r(i);var o={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&r;("object"==typeof a||"function"==typeof a)&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach(e=>{o[e]=()=>r[e]});return o.default=()=>r,l.d(i,o),i},l.d=(e,t)=>{for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,r)=>(l.f[r](e,t),t),[])),l.u=e=>"static/js/async/"+e+"."+({195:"0366f6e8",236:"a5d2c1b1",271:"72510be8",467:"710fa05a",985:"c09263d7"})[e]+".js",l.miniCssF=e=>""+e+".css",l.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}})(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},l.l=function(e,t,n,i){if(r[e])return void r[e].push(t);if(void 0!==n)for(var o,a,s=document.getElementsByTagName("script"),A=0;A<s.length;A++){var c=s[A];if(c.getAttribute("src")==e||c.getAttribute("data-rspack")=="playground:"+n){o=c;break}}o||(a=!0,(o=document.createElement("script")).timeout=120,l.nc&&o.setAttribute("nonce",l.nc),o.setAttribute("data-rspack","playground:"+n),o.src=e),r[e]=[t];var u=function(t,n){o.onerror=o.onload=null,clearTimeout(d);var i=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),a&&document.head.appendChild(o)},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n=[],l.O=(e,t,r,i)=>{if(t){i=i||0;for(var o=n.length;o>0&&n[o-1][2]>i;o--)n[o]=n[o-1];n[o]=[t,r,i];return}for(var a=1/0,o=0;o<n.length;o++){for(var[t,r,i]=n[o],s=!0,A=0;A<t.length;A++)(!1&i||a>=i)&&Object.keys(l.O).every(e=>l.O[e](t[A]))?t.splice(A--,1):(s=!1,i<a&&(a=i));if(s){n.splice(o--,1);var c=r();void 0!==c&&(e=c)}}return e},l.p="/",l.b=document.baseURI||self.location.href,i={410:0},l.f.j=function(e,t){var r=l.o(i,e)?i[e]:void 0;if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((t,n)=>r=i[e]=[t,n]);t.push(r[2]=n);var o=l.p+l.u(e),a=Error();l.l(o,function(t){if(l.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",a.name="ChunkLoadError",a.type=n,a.request=o,r[1](a)}},"chunk-"+e,e)}},l.O.j=e=>0===i[e],o=(e,t)=>{var r,n,[o,a,s]=t,A=0;if(o.some(e=>0!==i[e])){for(r in a)l.o(a,r)&&(l.m[r]=a[r]);if(s)var c=s(l)}for(e&&e(t);A<o.length;A++)n=o[A],l.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return l.O(c)},(a=self.webpackChunkplayground=self.webpackChunkplayground||[]).forEach(o.bind(null,0)),a.push=o.bind(null,a.push.bind(a));var c=l.O(void 0,["783","905"],()=>l(8087));c=l.O(c)})();
|
|
955
|
-
//# sourceMappingURL=index.
|
|
955
|
+
//# sourceMappingURL=index.4b541d73.js.map
|