‪Circuit Construction Kit: DC - Virtual Lab‬ (2024)

`)}popupDebug(){window.open(this.getDebugURI())}iframeDebug(){const e=document.createElement("iframe");e.width=""+window.innerWidth,e.height=""+window.innerHeight,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.zIndex="10000",document.body.appendChild(e),e.contentWindow.document.open(),e.contentWindow.document.write(this.getDebugHTML()),e.contentWindow.document.close(),e.contentWindow.document.body.style.background="white";const t=document.createElement("button");t.style.position="absolute",t.style.top="0",t.style.right="0",t.style.zIndex="10001",document.body.appendChild(t),t.textContent="close",["pointerdown","click","touchdown"].forEach(i=>{t.addEventListener(i,()=>{document.body.removeChild(e),document.body.removeChild(t)},!0)})}getPDOMDebugHTML(){let e="";const t="font-weight: bold; font-size: 120%; margin-top: 5px;",i="";e+=`

Accessible Instances

`,function t(s,n){e+=n+Bn(`${s.isRootInstance?"":s.node.tagName} ${s.toString()}`)+"
",s.children.forEach(e=>{t(e,n+i)})}(this._rootPDOMInstance,""),e+=`

Parallel DOM

`;let s=this._rootPDOMInstance.peer.primarySibling.outerHTML;s=s.replace(/>\n<");const n=s.split("\n");let r="";for(let o=0;o",s||(r+=i)}return e}foreignObjectRasterization(e){const t={};let i=0;function s(e){e.id||(e.id="unknown-canvas-"+i++),t[e.id]=e.toDataURL()}!function e(t){if(t instanceof Lu)_.each(t.blocks,t=>{e(t)});else if(t instanceof ru&&t.firstDrawable&&t.lastDrawable){for(let i=t.firstDrawable;i!==t.lastDrawable;i=i.nextDrawable)e(i);e(t.lastDrawable),(t instanceof uu||t instanceof vu)&&t.canvas&&t.canvas instanceof window.HTMLCanvasElement&&s(t.canvas)}_d&&t instanceof _d&&(t.domElement instanceof window.HTMLCanvasElement&&s(t.domElement),Array.prototype.forEach.call(t.domElement.getElementsByTagName("canvas"),e=>{s(e)}))}(this._rootBackbone);const n=document.implementation.createHTMLDocument("");n.documentElement.innerHTML=this.domElement.outerHTML,n.documentElement.setAttribute("xmlns",n.documentElement.namespaceURI),n.documentElement.appendChild(document.createElement("style")).innerHTML=`.${Pi.ROOT_CLASS_NAME} { display:none; } `;let r=n.documentElement.getElementsByTagName("canvas");r=Array.prototype.slice.call(r);for(let u=0;u{ep.elementToSVGDataURL(n.documentElement,o,a,e)};let l=0,d=!1;const c=Array.prototype.slice.call(n.documentElement.getElementsByTagName("image"));for(let u=0;u{const i=new window.Image,s=e;i.onload=()=>{const e=document.createElement("canvas");e.width=i.width,e.height=i.height,e.getContext("2d").drawImage(i,0,0),s.setAttribute("xlink:href",e.toDataURL()),0==--l&&h()},i.onerror=()=>{0==--l&&h()},i.src=t})())}d||h()}popupRasterization(){this.foreignObjectRasterization(e=>{e&&window.open(e)})}getTrailFromPDOMIndicesString(e){if(!this._rootPDOMInstance)return null;let t=this._rootPDOMInstance;const i=e.split(xi.PDOM_UNIQUE_ID_SEPARATOR);for(let s=0;s

${(new window.XMLSerializer).serializeToString(e)}

`,a=new window.Image;a.onload=()=>{r.drawImage(a,0,0),s(n.toDataURL())},a.onerror=()=>{s(null)};const h=new window.TextEncoderLite("utf-8").encode(o),l=window.fromByteArray(h);a.src="data:image/svg+xml;base64,"+l}static assertSubtreeDisposed(e){0}static addInputListener(e){_.includes(ep.inputListeners,e)||ep.inputListeners.push(e)}static removeInputListener(e){ep.inputListeners.splice(_.indexOf(ep.inputListeners,e),1)}static interruptInput(){const e=ep.inputListeners.slice(0);for(let t=0;t0&&s=0&&s{const t={index:null};return e.parents[0]&&(t.index=e.parents[0].indexOfChild(e)),t},applyState:(e,t)=>{const i=e.parents[0];if(i&&t.index){const s=i.children;s[i.indexOfChild(e)]=s[t.index],s[t.index]=e,i.setChildren(s)}},stateSchema:{index:(0,ut.Z)(te.Z)},methods:{linkIndex:{returnType:te.Z,parameterTypes:[(0,tp.Z)(ip.Z,[te.Z])],documentation:"Following the PropertyIO.link pattern, subscribe for notifications when the index in the parent changes, and receive a callback with the current value. The return value is a numeric ID for use with clearLinkIndex.",implementation:function(e){const t=()=>{const t=this.parents[0].indexOfChild(this);e(t)};this.parents[0].childrenChangedEmitter.addListener(t),t();const i=np;return sp[i]=t,np++,i}},unlinkIndex:{returnType:ip.Z,parameterTypes:[te.Z],documentation:"Unlink a listener that has been added using linkIndex, by its numerical ID (like setTimeout/clearTimeout)",implementation:function(e){const t=sp[e];this.parents[0].childrenChangedEmitter.removeListener(t),delete sp[e]}},clearLinkIndex:{returnType:ip.Z,parameterTypes:[te.Z],documentation:'Deprecated, see "unlinkIndex".',implementation:function(e){const t=sp[e];this.parents[0].childrenChangedEmitter.removeListener(t),delete sp[e]}},moveForward:{returnType:ip.Z,parameterTypes:[],implementation:function(){var e;(e=this)._parents.forEach(t=>rp(t,e,1))},documentation:"Move this Node one index forward in each of its parents, skipping invisible Nodes. If the Node is already at the front, this is a no-op."},moveBackward:{returnType:ip.Z,parameterTypes:[],implementation:function(){var e;(e=this)._parents.forEach(t=>rp(t,e,-1))},documentation:"Move this Node one index backward in each of its parents, skipping invisible Nodes. If the Node is already at the back, this is a no-op."}}});W.register("IndexedNodeIO",op);const ap=op;class hp extends yo.ZP{constructor(e,t,i){i=(0,Rt.Z)({nodeTandem:Ee.Z.REQUIRED},i),super([new Lt.Z(!0,{tandem:i.nodeTandem.createTandem("visibleProperty")}),...e],(function(e){for(var i=arguments.length,s=new Array(i>1?i-1:0),n=1;n{"use strict";i.d(t,{Z:()=>l});var s=i(1603),n=i(3600),r=i(2643),o=i(538),a=i(5687),h=i(2550);class l extends((0,a.E0)(a.NBX)){constructor(e,t){const i=(0,h.ZP)()({image:e},t);super(),this._imageBounds=null,this.mutate(i),this.invalidateSupportedRenderers()}invalidateImage(){this._image?this.invalidateSelf(this._imageBounds||new s.Z(0,0,this.getImageWidth(),this.getImageHeight())):this.invalidateSelf(s.Z.NOTHING);const e=this._drawables.length;for(let t=0;t{const e=window.phet.chipper.queryParameters.gameUpLogging,t=window.phet.chipper.queryParameters.gameUp,i=window.phet.chipper.queryParameters.gameUpTestHarness,s=t=>e&&console.log(t);if(t){s("Enabled Game Up Camera");const e=".brainpop.com";let t=!1,n=0;const r=()=>{!t&&n<10&&(parent.postMessage("captureReady","*"),n++,s("Posted captureReady, number of checks: "+n),setTimeout(r,1e3))},o=n=>{if(-1!==n.origin.indexOf(e,n.origin.length-e.length)||i)if("captureImage"===n.data){const e=window.phet.joist.ScreenshotGenerator.generateScreenshot(window.phet.joist.sim,"image/jpeg");a(e,n.origin,n.source),s("Sent image")}else"GameUpCaptureReady"===n.data&&(s("GameUpCaptureReady"),t=!0)},a=(e,t,i)=>{e=e.replace("data:image/jpeg;base64,",""),i.postMessage(e,t)};window.addEventListener?window.addEventListener("message",o,!1):window.attachEvent&&window.attachEvent("onmessage",o),r()}},7298:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var s=i(4974);class n extends Error{constructor(){super("CouldNotYetDeserializeError")}}s.Z.register("CouldNotYetDeserializeError",n);const r=n},2976:(e,t,i)=>{"use strict";var s;let n;i.d(t,{Z:()=>c});var r=i(2956),o=i(4676),a=i(1091),h=i(4974),l=i(3409);n=a.Z.EVENT_TYPE_MODEL;class d extends o.Z{}_defineProperty(d,"USER",new(s=d)),_defineProperty(d,n,new s),_defineProperty(d,"WRAPPER",new s),_defineProperty(d,"OPT_OUT",new s),_defineProperty(d,"enumeration",new r.Z(s)),_defineProperty(d,"phetioType",(0,l.Z)(s)),h.Z.register("EventType",d);const c=d},5281:(e,t,i)=>{"use strict";var s;i.d(t,{Z:()=>y});var n=i(4974),r=i(3600),o=i(2550),a=i(1005),h=i(538),l=i(516),d=i(3061),c=i(1617);const u=[];class p extends l.Z{constructor(e,t){const i=(0,o.ZP)()({parameters:u,phetioOuterType:p.PhetioActionIO,tandem:a.Z.OPTIONAL,phetioState:!1,phetioReadOnly:c.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioHighFrequency:c.Z.DEFAULT_OPTIONS.phetioHighFrequency,phetioEventType:c.Z.DEFAULT_OPTIONS.phetioEventType,phetioDocumentation:"A class that wraps a function, adding API to execute that function and data stream capture."},t);super(i),this.action=e,this.isExecutingCount=0,this.disposeOnExecuteCompletion=!1,this.executedEmitter=new d.Z({parameters:i.parameters,tandem:i.tandem.createTandem("executedEmitter"),phetioState:i.phetioState,phetioReadOnly:i.phetioReadOnly,phetioHighFrequency:i.phetioHighFrequency,phetioEventType:i.phetioEventType,phetioDocumentation:"Emitter that emits when this actions work is complete"}),this.disposePhetioAction=()=>{this.executedEmitter.dispose()}}execute(){this.isExecutingCount++;for(var e=arguments.length,t=new Array(e),i=0;i0?this.disposeOnExecuteCompletion=!0:this.disposePhetioAction(),super.dispose()}}s=p,_defineProperty(p,"PhetioActionIO",e=>{const t=e.map(m).join(",");return g.has(t)||g.set(t,new r.Z(`PhetioActionIO<${e.map(m).join(", ")}>`,{valueType:s,documentation:"Executes when an event occurs",events:["executed"],parameterTypes:e,metadataDefaults:{phetioState:!1},methods:{execute:{returnType:h.Z,parameterTypes:e,implementation:function(){const e=this.getValidationErrors(...arguments);if(e.length>0)throw new Error("Validation errors: "+e.join(", "));this.execute(...arguments)},documentation:"Executes the function the PhetioAction is wrapping.",invocableForReadOnlyElements:!1}}})),g.get(t)});const m=e=>e.typeName,g=new Map;n.Z.register("PhetioAction",p);const y=p},516:(e,t,i)=>{"use strict";i.d(t,{Z:()=>m});i(6212);var s=i(2550),n=i(1617),r=i(1005),o=i(7922),a=i(7959),h=i(4865);const l={validateValidator:!1},d=[],c=(["name","phetioType","phetioDocumentation","phetioPrivate"].concat(h.Z.VALIDATOR_KEYS),e=>e.phetioType),u=e=>e.name;class p extends n.Z{constructor(e){const t=(0,s.ZP)()({parameters:d,tandem:r.Z.OPTIONAL,phetioPlayback:n.Z.DEFAULT_OPTIONS.phetioPlayback,phetioEventMetadata:n.Z.DEFAULT_OPTIONS.phetioEventMetadata,phetioDocumentation:""},e),i=t.parameters.filter(c);t.phetioType=t.phetioOuterType(i.map(c)),t.phetioPlayback&&(t.phetioEventMetadata=t.phetioEventMetadata||{},t.phetioEventMetadata.dataKeys=t.parameters.map(u)),t.phetioDocumentation=p.getPhetioDocumentation(t.phetioDocumentation,i),super(t),this.parameters=t.parameters}static validateParameters(e,t){(0,a.Z)(e,{valueType:Array});let i=!1;for(let s=0;s0){e={};for(var t=arguments.length,i=new Array(t),s=0;sNo parameters.":`
The parameters are:
    ${t.map(e=>{const t=e.phetioDocumentation?" - "+e.phetioDocumentation:"";return`
  1. ${e.name}: ${e.phetioType.typeName}${t}
  2. `}).join("
    ")}
`)}}o.Z.register("PhetioDataHandler",p);const m=p},1617:(e,t,i)=>{"use strict";i.d(t,{V:()=>v,Z:()=>E});i(732),i(7959);var s=i(9059),n=(i(6212),i(831)),r=i(2550),o=i(2976),a=i(1005),h=i(4974),l=i(3600),d=i(2643);const c=new l.Z("LinkedElementIO",{isValidValue:()=>!0,documentation:"A LinkedElement",toStateObject:e=>({elementID:e.element.tandem.phetioID}),applyState:_.noop,stateSchema:{elementID:d.Z}});h.Z.register("LinkedElementIO",c);const u=c,p=["phetioDynamicElement","phetioEventType","phetioIsArchetype","phetioPlayback","phetioReadOnly","phetioState","phetioTypeName"];const m=new class{constructor(){_defineProperty(this,"apiMismatches",[]),_defineProperty(this,"simHasStarted",!1),_defineProperty(this,"enabled",!1),_defineProperty(this,"everyPhetioType",{})}onSimStarted(){this.enabled&&phet.joist.sim.allScreensCreated&&(this.validateOverridesFile(),this.validatePreferencesModel()),phet.preloads.phetio.queryParameters.phetioPrintAPIProblems&&this.apiMismatches&&console.log("PhET-iO api problems detected: ",this.apiMismatches),this.simHasStarted=!0}validatePreferencesModel(){Object.keys(phet.phetio.phetioEngine.phetioObjectMap).filter(e=>e.includes(".preferencesModel.")).forEach(e=>{let t=phet.phetio.phetioEngine.phetioObjectMap[e];for(;t instanceof v;)t=t.element})}onPhetioObjectRemoved(e){if(!this.enabled)return;const t=e.tandem.phetioID;e.phetioDynamicElement||this.assertAPIError({phetioID:t,ruleInViolation:"2. Any static, registered PhetioObject can never be deregistered."})}onPhetioObjectAdded(e){if(!this.enabled)return;const t=e.phetioType;this.everyPhetioType[t.typeName]||(this.everyPhetioType[t.typeName]=t),this.simHasStarted&&phet.axon.animationFrameTimer.runOnNextTick(()=>{if(e.phetioDynamicElement){if(phet.preloads.phetio.createArchetypes&&!e.isDisposed){const t=e.tandem.getArchetypalPhetioID(),i=phet.phetio.phetioEngine.getPhetioObject(t).getMetadata();this.checkDynamicInstanceAgainstArchetype(e,i,"simulation archetype")}}else this.assertAPIError({phetioID:e.tandem.phetioID,ruleInViolation:"1. After startup, only dynamic instances prescribed by the baseline file can be registered."})})}validateOverridesFile(){const e=phet.phetio.phetioEngine.getPhetioElementsBaseline();for(const t in window.phet.preloads.phetio.phetioElementsOverrides){t.includes(a.i);if(phet.preloads.phetio.createArchetypes||e.hasOwnProperty(t))if(e.hasOwnProperty(t)){const i=window.phet.preloads.phetio.phetioElementsOverrides[t],s=e[t];0===Object.keys(i).length&&this.assertAPIError({phetioID:t,ruleInViolation:"4. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"no metadata keys found for this override."});for(const e in i)s.hasOwnProperty(e)||this.assertAPIError({phetioID:t,ruleInViolation:"8. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"phetioID metadata key not found in the baseline: "+e}),i[e]===s[e]&&this.assertAPIError({phetioID:t,ruleInViolation:"8. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"phetioID metadata override value is the same as the corresponding metadata value in the baseline."})}else this.assertAPIError({phetioID:t,ruleInViolation:"3. Any schema entries in the overrides file must exist in the baseline file.",message:"phetioID expected in the baseline file but does not exist"});else;}}assertAPIError(e){e.phetioID?(e.phetioID,e.ruleInViolation):e.ruleInViolation;this.apiMismatches.push(e),this.simHasStarted||phet.preloads.phetio.queryParameters.phetioPrintAPIProblems}checkDynamicInstanceAgainstArchetype(e,t,i){const s=e.getMetadata();p.forEach(n=>{"phetioDynamicElement"!==n&&"phetioArchetypePhetioID"!==n&&"phetioIsArchetype"!==n&&t[n]!==s[n]&&e.tandem&&this.assertAPIError({phetioID:e.tandem.phetioID,ruleInViolation:"5. Dynamic element metadata should match the archetype in the API.",source:i,message:"mismatched metadata: "+n})})}};h.Z.register("phetioAPIValidation",m);const g=m;var y=i(1091),A=i(1731);const f=a.Z.PHET_IO_ENABLED,P=(l.Z,o.Z,e=>e.tandem.phetioID),b={tandem:a.Z.OPTIONAL,phetioType:l.Z.ObjectIO,phetioDocumentation:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDocumentation,phetioState:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioState,phetioReadOnly:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioReadOnly,phetioEventType:o.Z.MODEL,phetioHighFrequency:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioHighFrequency,phetioPlayback:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioPlayback,phetioFeatured:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioFeatured,phetioDynamicElement:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDynamicElement,phetioDesigned:y.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDesigned,phetioEventMetadata:null,tandemNameSuffix:null};class E extends A.Z{constructor(e){super(e),this.tandem=b.tandem,this.phetioID=this.tandem.phetioID,this.phetioObjectInitialized=!1,e&&this.initializePhetioObject({},e)}initializePhetioObject(e,t){if(t.tandem&&a.Z.onMissingTandem(t.tandem),a.Z.VALIDATION&&t.tandem&&t.tandem.required,!(f&&t.tandem&&t.tandem.supplied))return void(t.tandem&&(this.tandem=t.tandem,this.phetioID=this.tandem.phetioID));const i=(0,r.JA)({},b,e);let s=(0,r.ZP)()(i,t);this.phetioIsArchetype=!1,this.phetioBaselineMetadata=g.enabled||phet.preloads.phetio.queryParameters.phetioEmitAPIBaseline?this.getMetadata((0,n.Z)({phetioIsArchetype:this.phetioIsArchetype,phetioArchetypePhetioID:this.phetioArchetypePhetioID},s)):null;const o=s.tandem.getArchetypalPhetioID();if(window.phet.preloads.phetio.phetioElementsOverrides){const e=window.phet.preloads.phetio.phetioElementsOverrides[o];e&&(s=(0,r.ZP)()(s,e))}this.tandem=s.tandem,this.phetioID=this.tandem.phetioID,this._phetioType=s.phetioType,this._phetioState=s.phetioState,this._phetioReadOnly=s.phetioReadOnly,this._phetioDocumentation=s.phetioDocumentation,this._phetioEventType=s.phetioEventType,this._phetioHighFrequency=s.phetioHighFrequency,this._phetioPlayback=s.phetioPlayback,this._phetioDynamicElement=s.phetioDynamicElement,this._phetioFeatured=s.phetioFeatured,this._phetioEventMetadata=s.phetioEventMetadata,this._phetioDesigned=s.phetioDesigned,this.phetioArchetypePhetioID=null,this.linkedElements=[],this.phetioNotifiedObjectCreated=!1,this.phetioMessageStack=[],this._phetioPlayback&&(this._phetioEventMetadata=this._phetioEventMetadata||{},this._phetioEventMetadata.playback=!0),this.tandem.addPhetioObject(this),this.phetioObjectInitialized=!0}static swapCaseOfFirstCharacter(e){const t=e[0];return(t===t.toLowerCase()?t.toUpperCase():t.toLowerCase())+e.substring(1)}get phetioType(){return this._phetioType}get phetioState(){return this._phetioState}get phetioReadOnly(){return this._phetioReadOnly}get phetioDocumentation(){return this._phetioDocumentation}get phetioEventType(){return this._phetioEventType}get phetioHighFrequency(){return this._phetioHighFrequency}get phetioPlayback(){return this._phetioPlayback}get phetioDynamicElement(){return this._phetioDynamicElement}get phetioFeatured(){return this._phetioFeatured}get phetioEventMetadata(){return this._phetioEventMetadata}get phetioDesigned(){return this._phetioDesigned}phetioStartEvent(e,t){if(f&&this.isPhetioInstrumented()){const i=(0,r.ZP)()({data:null,getData:null},t);if(!_.hasIn(window,"phet.phetio.dataStream"))return void this.phetioMessageStack.push(-1);const s=this.phetioHighFrequency&&_.hasIn(window,"phet.preloads.phetio.queryParameters")&&!window.phet.preloads.phetio.queryParameters.phetioEmitHighFrequencyEvents&&!phet.phetio.dataStream.isEmittingLowFrequencyEvent(),n=!_.hasIn(window,"phet.phetio.dataStream");if(s||this.phetioEventType===o.Z.OPT_OUT||n)return void this.phetioMessageStack.push(-1);const a=i.getData?i.getData():i.data;this.phetioMessageStack.push(phet.phetio.dataStream.start(this.phetioEventType,this.tandem.phetioID,this.phetioType,e,a,this.phetioEventMetadata,this.phetioHighFrequency)),this.phetioPlayback&&phet.phetio.dataStream.pushNonPlaybackable()}}phetioEndEvent(){if(f&&this.isPhetioInstrumented()){const e=this.phetioMessageStack.pop();if(-1===e)return;this.phetioPlayback&&phet.phetio.dataStream.popNonPlaybackable(),phet.phetio.dataStream.end(e)}}propagateDynamicFlagsToDescendants(){const e=phet.phetio.phetioEngine,t=a.Z.launched?[]:a.Z.bufferedPhetioObjects.map(P);this.tandem.iterateDescendants(i=>{const s=i.phetioID;if(e.hasPhetioObject(s)||!a.Z.launched&&t.includes(s)){const i=e.hasPhetioObject(s)?e.getPhetioObject(s):a.Z.bufferedPhetioObjects[t.indexOf(s)];i.phetioIsArchetype=this.phetioIsArchetype,i.setPhetioDynamicElement(this.phetioDynamicElement),i.phetioBaselineMetadata&&(i.phetioBaselineMetadata.phetioIsArchetype=this.phetioIsArchetype)}})}setPhetioDynamicElement(e){this._phetioDynamicElement=!this.phetioIsArchetype&&e,this.phetioArchetypePhetioID=e?this.tandem.getArchetypalPhetioID():null,this.phetioBaselineMetadata&&(this.phetioBaselineMetadata.phetioDynamicElement=this.phetioDynamicElement)}markDynamicElementArchetype(){this.phetioIsArchetype=!0,this.setPhetioDynamicElement(!1),this.phetioBaselineMetadata&&(this.phetioBaselineMetadata.phetioIsArchetype=this.phetioIsArchetype),a.Z.PHET_IO_ENABLED&&this.propagateDynamicFlagsToDescendants()}isPhetioInstrumented(){return this.tandem&&this.tandem.supplied}addLinkedElement(e,t){this.isPhetioInstrumented()?f&&e.isPhetioInstrumented()&&this.linkedElements.push(new v(e,t)):this.linkedElements=null}removeLinkedElements(e){if(this.isPhetioInstrumented()&&this.linkedElements){this.linkedElements.filter(t=>t.element===e).forEach(e=>{e.dispose(),(0,s.Z)(this.linkedElements,e)})}}onSimulationConstructionCompleted(){this.phetioBaselineMetadata=null}dispose(){const e=[];if(a.Z.PHET_IO_ENABLED&&this.tandem.supplied){const t=phet.phetio.phetioEngine;this.tandem.iterateDescendants(i=>{t.hasPhetioObject(i.phetioID)&&e.push(t.getPhetioObject(i.phetioID))})}this.tandem.removePhetioObject(this),this.linkedElements&&(this.linkedElements.forEach(e=>e.dispose()),this.linkedElements.length=0),super.dispose()}getMetadata(e){const t={phetioTypeName:(e=e||this).phetioType.typeName,phetioDocumentation:e.phetioDocumentation,phetioState:e.phetioState,phetioReadOnly:e.phetioReadOnly,phetioEventType:o.Z.phetioType.toStateObject(e.phetioEventType),phetioHighFrequency:e.phetioHighFrequency,phetioPlayback:e.phetioPlayback,phetioDynamicElement:e.phetioDynamicElement,phetioIsArchetype:e.phetioIsArchetype,phetioFeatured:e.phetioFeatured,phetioDesigned:e.phetioDesigned};return e.phetioArchetypePhetioID&&(t.phetioArchetypePhetioID=e.phetioArchetypePhetioID),t}static create(e){return new E(e)}}_defineProperty(E,"DEFAULT_OPTIONS",b);class v extends E{constructor(e,t){const i=(0,r.ZP)()({phetioType:u,phetioState:!0},t);i.phetioReadOnly=!0,i.phetioFeatured=e.phetioFeatured,super(i),this.element=e}getMetadata(e){const t=super.getMetadata(e);return delete t.phetioFeatured,t}}h.Z.register("PhetioObject",E)},1005:(e,t,i)=>{"use strict";var s;i.d(t,{Z:()=>V,i:()=>y});var n=i(9059),r=i(831),o=i(2550),a=i(4974);const h=_.hasIn(window,"phet.chipper.packageObject")?phet.chipper.packageObject:{name:"placeholder"},l=_.hasIn(window,"phet.preloads.phetio"),d=l&&phet.preloads.phetio.queryParameters.phetioPrintMissingTandems,c=!_.hasIn(h,"phet.phet-io.validation")||!!h.phet["phet-io"].validation,u=window.QueryStringMachine&&QueryStringMachine.containsKey("phetioValidation"),p=l&&u?!!phet.preloads.phetio.queryParameters.phetioValidation:l&&c,m=l&&p&&!d,g=phetio.PhetioIDUtils.INTER_TERM_SEPARATOR,y="archetype",A={required:[],optional:[]},f=[],P=[];class b{constructor(e,t,i){_defineProperty(this,"children",{}),_defineProperty(this,"isDisposed",!1),this.parentTandem=e,this.name=t,this.phetioID=this.parentTandem?window.phetio.PhetioIDUtils.append(this.parentTandem.phetioID,this.name):this.name;const s=(0,o.ZP)()({required:!0,supplied:!0,isValidTandemName:e=>/^[a-zA-Z0-9[\],]+$/.test(e)},i);this.children={},this.parentTandem&&this.parentTandem.addChild(t,this),this.required=s.required,this.supplied=s.supplied}static onMissingTandem(e){if(d&&!e.supplied){const t=(new Error).stack;e.required?A.required.push({phetioID:e.phetioID,stack:t}):t.includes("Font")||A.optional.push({phetioID:e.phetioID,stack:t})}}addPhetioObject(e){if(l){if(!this.required&&!this.supplied)return;if(b.launched)for(let t=0;te.includes("_")?y:e).join(g)}return e}createGroupTandem(e){return this.children[e]?this.children[e]:new w(this,e)}equals(e){return this.phetioID===e.phetioID}static addPhetioObjectListener(e){f.push(e)}static launch(){for(b.launched=!0;P.length>0;)P.shift()()}static unlaunch(){b.launched=!1,b.bufferedPhetioObjects.length=0,P.length=0}static addLaunchListener(e){P.push(e)}createTandemFromPhetioID(e){return this.createTandem(e.split(window.phetio.PhetioIDUtils.SEPARATOR).join(g),{isValidTandemName:e=>/^[a-zA-Z0-9[\],-_]+$/.test(e)})}}s=b,_defineProperty(b,"SCREEN_TANDEM_NAME_SUFFIX","Screen"),_defineProperty(b,"missingTandems",A),_defineProperty(b,"PHET_IO_ENABLED",l),_defineProperty(b,"API_GENERATION",s.PHET_IO_ENABLED&&(phet.preloads.phetio.queryParameters.phetioPrintAPI||phet.preloads.phetio.queryParameters.phetioCompareAPI)),_defineProperty(b,"VALIDATION",m),_defineProperty(b,"METADATA_KEY","_metadata"),_defineProperty(b,"DATA_KEY","_data"),_defineProperty(b,"launched",!1),_defineProperty(b,"bufferedPhetioObjects",[]),b.addLaunchListener(()=>{for(;b.bufferedPhetioObjects.length>0;){const e=b.bufferedPhetioObjects.shift();e.tandem.addPhetioObject(e)}});b.ROOT=new class extends b{createTandem(e,t){if(b.VALIDATION){e===window.phetio.PhetioIDUtils.GLOBAL_COMPONENT_NAME||"requiredTandem"===e||"optionalTandem"===e||"test"===e||e===window.phetio.PhetioIDUtils.GENERAL_COMPONENT_NAME||_.endsWith(e,b.SCREEN_TANDEM_NAME_SUFFIX)}return super.createTandem(e,t)}}(null,_.camelCase(h.name));const E=b.ROOT.createTandem(window.phetio.PhetioIDUtils.GENERAL_COMPONENT_NAME);b.ROOT_TEST=b.ROOT.createTandem("test"),b.GENERAL_MODEL=E.createTandem(window.phetio.PhetioIDUtils.MODEL_COMPONENT_NAME),b.GENERAL_VIEW=E.createTandem(window.phetio.PhetioIDUtils.VIEW_COMPONENT_NAME),b.GENERAL_CONTROLLER=E.createTandem(window.phetio.PhetioIDUtils.CONTROLLER_COMPONENT_NAME);const v=b.ROOT.createTandem(window.phetio.PhetioIDUtils.GLOBAL_COMPONENT_NAME);b.GLOBAL_MODEL=v.createTandem(window.phetio.PhetioIDUtils.MODEL_COMPONENT_NAME),b.GLOBAL_VIEW=v.createTandem(window.phetio.PhetioIDUtils.VIEW_COMPONENT_NAME),b.COLORS=b.GLOBAL_VIEW.createTandem(window.phetio.PhetioIDUtils.COLORS_COMPONENT_NAME),b.OPTIONAL=b.ROOT.createTandem("optionalTandem",{required:!1,supplied:!1}),b.OPT_OUT=b.OPTIONAL,b.REQUIRED=b.ROOT.createTandem("requiredTandem",{required:m||d,supplied:!1}),b.PREFERENCES=b.GLOBAL_MODEL.createTandem("preferences");class w extends b{constructor(e,t){super(e,t),this.groupName=t,this.groupMemberIndex=0}createNextTandem(){const e=this.parentTandem.createTandem(`${this.groupName}${this.groupMemberIndex}`);return this.groupMemberIndex++,e}}a.Z.register("Tandem",b);const V=b},1091:(e,t,i)=>{"use strict";i.d(t,{Z:()=>n});const s={OBJECT_IO_TYPE_NAME:"ObjectIO",EVENT_TYPE_MODEL:"MODEL",PHET_IO_OBJECT_METADATA_DEFAULTS:{phetioTypeName:"ObjectIO",phetioDocumentation:"",phetioState:!0,phetioReadOnly:!1,phetioEventType:"MODEL",phetioHighFrequency:!1,phetioPlayback:!1,phetioDynamicElement:!1,phetioIsArchetype:!1,phetioFeatured:!1,phetioDesigned:!1,phetioArchetypePhetioID:null},METADATA_KEY_NAME:"_metadata",DATA_KEY_NAME:"_data"};i(4974).Z.register("TandemConstants",s);const n=s},4974:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});const s=new(i(2492).Z)("tandem")},0:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var s=i(4865),n=i(4974),r=i(3600),o=i(9196);const a=new Map,h=e=>(a.has(e)||a.set(e,new r.Z(`ArrayIO<${e.typeName}>`,{valueType:Array,isValidValue:t=>_.every(t,t=>s.Z.isValueValid(t,e.validator)),parameterTypes:[e],toStateObject:t=>t.map(e.toStateObject),fromStateObject:t=>t.map(e.fromStateObject),documentation:"IO Type for the built-in JS array type, with the element type specified.",stateSchema:o.Z.asValue(`Array<${e.typeName}>`,{isValidValue:t=>_.every(t,t=>e.isStateObjectValid(t))})})),a.get(e));n.Z.register("ArrayIO",h);const l=h},5602:(e,t,i)=>{"use strict";i.d(t,{Z:()=>h});var s=i(4974),n=i(3600),r=i(9196),o=i(6540);const a=new n.Z("BooleanIO",{supertype:o.Z,valueType:"boolean",documentation:"IO Type for Javascript's boolean primitive type",stateSchema:r.Z.asValue("boolean",{valueType:"boolean"}),toStateObject:_.identity});s.Z.register("BooleanIO",a);const h=a},3409:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var s=i(3600),n=i(9196),r=i(4974);const o=new Map,a=e=>e.join("|"),h=e=>{const t=e.enumeration;if(!o.has(t)){const e=t.phetioDocumentation?" "+t.phetioDocumentation:"",i=t.keys,r=t.values,h=`EnumerationIO(${a(i)})`;o.set(t,new s.Z(h,{validValues:r,documentation:`Possible values: ${i.join(", ")}.${e}`,toStateObject:e=>t.getKey(e),fromStateObject:e=>t.getValue(e),stateSchema:n.Z.asValue(""+a(i),{isValidValue:e=>i.includes(e)})}))}return o.get(t)};r.Z.register("EnumerationIO",h);const l=h},6292:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(4974),n=i(3600);const r=new Map,o=(e,t)=>{for(let s=0;se.typeName).join(",")}`;if(!r.has(i)){let s=t.map(e=>e.typeName).join(", ");""===s&&(s="none");const o=t.map(e=>e.typeName).join(",");r.set(i,new n.Z(`FunctionIO(${o})=>${e.typeName}`,{valueType:"function",isFunctionType:!0,parameterTypes:t.concat([e]),documentation:`Wrapper for the built-in JS function type.
Arguments: ${s}
Return Type: `+e.typeName}))}return r.get(i)};s.Z.register("FunctionIO",o);const a=o},3600:(e,t,i)=>{"use strict";i.d(t,{Z:()=>p});var s=i(7959),n=i(4865),r=i(2550),o=i(4974);const a={IO_TYPE_SUFFIX:"IO"};o.Z.register("PhetioConstants",a);const h=a;var l=i(1091),d=i(9196);const c={validateValidator:!1},u=e=>{const t=e.indexOf(h.IO_TYPE_SUFFIX);return e.substring(0,t)};class p{constructor(e,t){this.typeName=e;const i=t.supertype||p.ObjectIO,o=!!t.toStateObject,a=!!t.applyState,h=!!t.stateSchema,l=(0,r.ZP)()({supertype:p.ObjectIO,methods:{},events:[],metadataDefaults:{},dataDefaults:{},methodOrder:[],parameterTypes:[],documentation:"IO Type for "+u(e),isFunctionType:!1,toStateObject:i&&i.toStateObject,fromStateObject:i&&i.fromStateObject,stateObjectToCreateElementArguments:i&&i.stateObjectToCreateElementArguments,applyState:i&&i.applyState,stateSchema:null,defaultDeserializationMethod:"fromStateObject",addChildElement:i&&i.addChildElement},t);if(this.supertype=i,this.documentation=l.documentation,this.methods=l.methods,this.events=l.events,this.metadataDefaults=l.metadataDefaults,this.dataDefaults=l.dataDefaults,this.methodOrder=l.methodOrder,this.parameterTypes=l.parameterTypes,this.validator=_.pick(l,n.Z.VALIDATOR_KEYS),this.validator.validationMessage=this.validator.validationMessage||"Validation failed IOType Validator: "+this.typeName,this.defaultDeserializationMethod=l.defaultDeserializationMethod,null===l.stateSchema||l.stateSchema instanceof d.Z)this.stateSchema=l.stateSchema;else{const e="function"==typeof l.stateSchema?l.stateSchema(this):l.stateSchema;this.stateSchema=new d.Z({compositeSchema:e})}this.toStateObject=e=>{let t;return(0,s.Z)(e,this.validator,c),t=!o&&h&&this.stateSchema&&this.stateSchema.isComposite()?this.stateSchema.defaultToStateObject(e):l.toStateObject(e),t},this.fromStateObject=l.fromStateObject,this.stateObjectToCreateElementArguments=l.stateObjectToCreateElementArguments,this.applyState=(e,t)=>{(0,s.Z)(e,this.validator,c),!a&&h&&this.stateSchema&&this.stateSchema.isComposite()?this.stateSchema.defaultApplyState(e,t):l.applyState(e,t)},this.isFunctionType=l.isFunctionType,this.addChildElement=l.addChildElement}getTypeHierarchy(){const e=[];let t=this;for(;t;)e.push(t),t=t.supertype;return e}extends(e){return this.getTypeHierarchy().includes(e)}getAllMetadataDefaults(){return _.merge({},this.supertype?this.supertype.getAllMetadataDefaults():{},this.metadataDefaults)}getAllDataDefaults(){return _.merge({},this.supertype?this.supertype.getAllDataDefaults():{},this.dataDefaults)}isStateObjectValid(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],n=!0;if(this.stateSchema){const n=this.stateSchema.checkStateObjectValid(e,t,i,s);if(null!==n)return n}if(this.supertype)return n&&this.supertype.isStateObjectValid(e,t,i,s);if(!this.supertype&&e&&"string"!=typeof e&&!Array.isArray(e)){const t=(e,t)=>{const r=("public"===e?i:s).includes(t);r||(n=!1)};return Object.keys(e).filter(e=>"_private"!==e).forEach(e=>t("public",e)),e._private&&Object.keys(e._private).forEach(e=>t("private",e)),n}return!0}validateStateObject(e){this.isStateObjectValid(e,!0)}toString(){return this.typeName}}p.ObjectIO=new p(l.Z.OBJECT_IO_TYPE_NAME,{isValidValue:()=>!0,supertype:null,documentation:"The root of the IO Type hierarchy",toStateObject:e=>(phet&&phet.tandem&&phet.tandem.Tandem.VALIDATION,null),fromStateObject:()=>{throw new Error("ObjectIO.fromStateObject should not be called")},stateObjectToCreateElementArguments:e=>[],applyState:_.noop,metadataDefaults:l.Z.PHET_IO_OBJECT_METADATA_DEFAULTS,dataDefaults:{initialState:null},stateSchema:null}),o.Z.register("IOType",p)},4792:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(4974),n=i(3600),r=i(9196);const o=new n.Z("InfiniteNumberIO",{valueType:"number",documentation:"IO Type for Javascript's number primitive type",toStateObject:e=>e===Number.POSITIVE_INFINITY?"POSITIVE_INFINITY":e===Number.NEGATIVE_INFINITY?"NEGATIVE_INFINITY":e,fromStateObject:e=>"POSITIVE_INFINITY"===e?Number.POSITIVE_INFINITY:"NEGATIVE_INFINITY"===e?Number.NEGATIVE_INFINITY:e,stateSchema:r.Z.asValue("'POSITIVE_INFINITY'|'NEGATIVE_INFINITY'|number",{isValidValue:e=>"POSITIVE_INFINITY"===e||"NEGATIVE_INFINITY"===e||"number"==typeof e&&!isNaN(e)})});s.Z.register("InfiniteNumberIO",o);const a=o},2306:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var s=i(4865),n=i(4974),r=i(3600),o=i(9196);const a=new Map,h=e=>(a.has(e)||a.set(e,new r.Z(`NullableIO<${e.typeName}>`,{documentation:"An IOType adding support for null in addition to the behavior of its parameter.",isValidValue:t=>null===t||s.Z.isValueValid(t,e.validator),parameterTypes:[e],toStateObject:t=>null===t?null:e.toStateObject(t),fromStateObject:t=>null===t?null:e.fromStateObject(t),stateSchema:o.Z.asValue(`null|<${e.typeName}>`,{isValidValue:t=>null===t||e.isStateObjectValid(t)})})),a.get(e));n.Z.register("NullableIO",h);const l=h},8585:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(4974),n=i(3600),r=i(9196);const o=new n.Z("NumberIO",{valueType:"number",documentation:"IO Type for Javascript's number primitive type",toStateObject:_.identity,fromStateObject:e=>e,stateSchema:r.Z.asValue("number",{isValidValue:e=>"number"==typeof e&&!isNaN(e)&&e!==Number.POSITIVE_INFINITY&&e!==Number.NEGATIVE_INFINITY})});s.Z.register("NumberIO",o);const a=o},170:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var s=i(4974),n=i(3600),r=i(9196),o=i(6540);const a=e=>Object.getPrototypeOf(e)===Object.prototype,h=new n.Z("ObjectLiteralIO",{documentation:"IO Type for object literals",isValidValue:a,supertype:o.Z,stateSchema:r.Z.asValue("object",{valueType:Object,isValidValue:a}),toStateObject:_.identity});s.Z.register("ObjectLiteralIO",h);const l=h},1039:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var s=i(4865),n=i(4974),r=i(3600),o=i(9196);const a=new Map,h=e=>{const t=e.map(e=>e.typeName),i=t.join(",");if(!a.has(i)){const n=t=>{for(let i=0;i`,{documentation:"An IOType adding support for a composite type that can be any of its parameters.",parameterTypes:e,isValidValue:n,toStateObject:t=>{for(let i=0;ie[t.index].fromStateObject(t.state),stateSchema:o.Z.asValue(""+t.join("|"),{isValidValue:t=>"number"==typeof t.index&&e[t.index].isStateObjectValid(t.state)})}))}return a.get(i)};n.Z.register("OrIO",h);const l=h},9883:(e,t,i)=>{"use strict";i.d(t,{Z:()=>d});var s=i(4865),n=i(7298),r=i(4974),o=i(3600),a=i(2643);const h=new Map,l=e=>{const t=e;return h.has(t)||h.set(t,new o.Z(`ReferenceIO<${e.typeName}>`,{isValidValue:t=>s.Z.isValueValid(t,e.validator),documentation:"Uses reference identity for serializing and deserializing, and validates based on its parameter IO Type.",parameterTypes:[e],toStateObject:e=>({phetioID:e.tandem.phetioID}),stateSchema:{phetioID:a.Z},fromStateObject(e){if(phet.phetio.phetioEngine.hasPhetioObject(e.phetioID))return phet.phetio.phetioEngine.getPhetioObject(e.phetioID);throw new n.Z},applyState(e){}})),h.get(t)};r.Z.register("ReferenceIO",l);const d=l},9196:(e,t,i)=>{"use strict";i.d(t,{Z:()=>h});var s=i(7959),n=i(4865),r=(i(6212),i(2550)),o=i(4974),a=i(3600);class h{constructor(e){const t=(0,r.ZP)()({displayString:"",validator:null,compositeSchema:null},e);this.displayString=t.displayString,this.validator=t.validator,this.compositeSchema=t.compositeSchema}validateStateSchema(e){0}defaultApplyState(e,t){const i=(t,s)=>{for(const n in t)if(t.hasOwnProperty(n))if("_private"===n)i(t._private,s._private);else{const i=t[n];"fromStateObject"===i.defaultDeserializationMethod?e[n]=t[n].fromStateObject(s[n]):t[n].applyState(e[n],s[n])}};i(this.compositeSchema,t)}defaultToStateObject(e){const t=i=>{const s={};for(const n in i)i.hasOwnProperty(n)&&("_private"===n?s._private=t(i._private):s[n]=i[n].toStateObject(e[n]));return s};return t(this.compositeSchema)}isComposite(){return!!this.compositeSchema}checkStateObjectValid(e,t,i,r){if(this.isComposite()){const t=e,s=this.compositeSchema;let n=null;const o=(e,t,i,s)=>{t?Object.keys(e).filter(e=>e!==s).forEach(s=>{const r=t.hasOwnProperty(s);r||(n=!1),e[s].validateStateObject(t[s]),i.push(s)}):n=!1};return o(s,t,i,"_private"),s._private&&o(s._private,t._private,r,null),n}{const i=e;return t&&(0,s.Z)(i,this.validator),n.Z.isValueValid(i,this.validator)}}getRelatedTypes(){const e=[],t=t=>{Object.keys(t).forEach(i=>{t[i]instanceof a.Z&&e.push(t[i])})};return this.compositeSchema&&(t(this.compositeSchema),this.compositeSchema._private&&t(this.compositeSchema._private)),e}getStateSchemaAPI(){if(this.isComposite()){const e=_.mapValues(this.compositeSchema,e=>e.typeName);return this.compositeSchema._private&&(e._private=_.mapValues(this.compositeSchema._private,e=>e.typeName)),e}return this.displayString}static asValue(e,t){return new h({validator:t,displayString:e})}}o.Z.register("StateSchema",h)},2643:(e,t,i)=>{"use strict";i.d(t,{Z:()=>h});var s=i(4974),n=i(3600),r=i(9196),o=i(6540);const a=new n.Z("StringIO",{supertype:o.Z,valueType:"string",documentation:"IO Type for Javascript's string primitive type",stateSchema:r.Z.asValue("string",{valueType:"string"}),toStateObject:_.identity});s.Z.register("StringIO",a);const h=a},6540:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(4974),n=i(3600),r=i(9196);const o=new n.Z("ValueIO",{isValidValue:_.stubTrue,supertype:n.Z.ObjectIO,toStateObject:e=>e,fromStateObject:e=>e,stateSchema:r.Z.asValue("*",{isValidValue:_.stubTrue})});s.Z.register("ValueIO",o);const a=o},538:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var s=i(4974);const n=new(i(3600).Z)("VoidIO",{isValidValue:()=>!0,documentation:"Type for which there is no instance, usually to mark functions without a return value",toStateObject:()=>{}});s.Z.register("VoidIO",n);const r=n},2391:(e,t,i)=>{"use strict";var s;i.d(t,{Z:()=>y});var n=i(3061),r=i(2550),o=i(1617),a=i(1005),h=i(3600),l=i(2306),d=i(8585),c=i(1039),u=i(2643),p=i(428),m=i(6692);class g extends o.Z{constructor(e){const t=(0,r.ZP)()({respectResponseCollectorProperties:!0,tandem:a.Z.OPTIONAL,phetioType:g.AnnouncerIO,phetioState:!1},e);super(t),_defineProperty(this,"readyToAnnounce",!0),_defineProperty(this,"hasSpoken",!1),this.respectResponseCollectorProperties=t.respectResponseCollectorProperties,this.announcementCompleteEmitter=new n.Z({parameters:[{name:"utterance",phetioType:p.Z.UtteranceIO},{name:"text",phetioType:(0,l.Z)((0,c.Z)([u.Z,d.Z]))}],tandem:t.tandem.createTandem("announcementCompleteEmitter"),phetioReadOnly:!0,phetioDocumentation:"The announcement that has just completed. The Utterance text could potentially differ from the exact text that was announced, so both are emitted. Use `text` for an exact match of what was announced."})}shouldUtteranceCancelOther(e,t){return t.priorityProperty.value{"use strict";i.d(t,{Z:()=>d});var s=i(5264),n=i(8292),r=i(2550),o=i(6975),a=i(6692);const h={nameResponse:null,objectResponse:null,contextResponse:null,hintResponse:null,ignoreProperties:!1,responsePatternCollection:o.Z.DEFAULT_RESPONSE_PATTERNS};class l{constructor(e){const t=(0,r.lB)()({},h,e);this._nameResponse=t.nameResponse,this._objectResponse=t.objectResponse,this._contextResponse=t.contextResponse,this._hintResponse=t.hintResponse,this.ignoreProperties=t.ignoreProperties,this.responsePatternCollection=t.responsePatternCollection}getNameResponse(){return l.getResponseText(this._nameResponse)}get nameResponse(){return this.getNameResponse()}set nameResponse(e){this.setNameResponse(e)}setNameResponse(e){this._nameResponse=e}getObjectResponse(){return l.getResponseText(this._objectResponse)}get objectResponse(){return this.getObjectResponse()}set objectResponse(e){this.setObjectResponse(e)}setObjectResponse(e){this._objectResponse=e}getContextResponse(){return l.getResponseText(this._contextResponse)}get contextResponse(){return this.getContextResponse()}set contextResponse(e){this.setContextResponse(e)}setContextResponse(e){this._contextResponse=e}getHintResponse(){return l.getResponseText(this._hintResponse)}get hintResponse(){return this.getHintResponse()}set hintResponse(e){this.setHintResponse(e)}setHintResponse(e){this._hintResponse=e}static getResponseText(e){return e instanceof s.Z||e instanceof n.Z?e.value:"function"==typeof e?e():e}copy(){return new l(this.serialize())}serialize(){return{nameResponse:this.nameResponse,objectResponse:this.objectResponse,contextResponse:this.contextResponse,hintResponse:this.hintResponse,ignoreProperties:this.ignoreProperties,responsePatternCollection:this.responsePatternCollection}}}_defineProperty(l,"DEFAULT_OPTIONS",h),a.Z.register("ResponsePacket",l);const d=l},6975:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(2550),n=i(6692);const r={nameObjectContextHint:"{{NAME}}, {{OBJECT}}, {{CONTEXT}} {{HINT}}",nameObjectContext:"{{NAME}}, {{OBJECT}}, {{CONTEXT}}",nameObjectHint:"{{NAME}}, {{OBJECT}}, {{HINT}}",nameContextHint:"{{NAME}}, {{CONTEXT}} {{HINT}}",nameObject:"{{NAME}}, {{OBJECT}}",nameContext:"{{NAME}}, {{CONTEXT}}",nameHint:"{{NAME}}, {{HINT}}",name:"{{NAME}}",objectContextHint:"{{OBJECT}}, {{CONTEXT}} {{HINT}}",objectContext:"{{OBJECT}}, {{CONTEXT}}",objectHint:"{{OBJECT}}, {{HINT}}",contextHint:"{{CONTEXT}} {{HINT}}",object:"{{OBJECT}}",context:"{{CONTEXT}}",hint:"{{HINT}}"};class o{constructor(e){const t=(0,s.lB)()({},r,e);this.nameObjectContextHint=t.nameObjectContextHint,this.nameObjectContext=t.nameObjectContext,this.nameObjectHint=t.nameObjectHint,this.nameContextHint=t.nameContextHint,this.nameObject=t.nameObject,this.nameContext=t.nameContext,this.nameHint=t.nameHint,this.name=t.name,this.objectContextHint=t.objectContextHint,this.objectContext=t.objectContext,this.objectHint=t.objectHint,this.contextHint=t.contextHint,this.object=t.object,this.context=t.context,this.hint=t.hint}getResponsePattern(e){const t=this[e];return t}static createPatternKey(e,t,i,s){let n="";return e&&(n=n.concat("NAME".concat("_"))),t&&(n=n.concat("OBJECT".concat("_"))),i&&(n=n.concat("CONTEXT".concat("_"))),s&&(n=n.concat("HINT".concat("_"))),_.camelCase(n)}}_defineProperty(o,"DEFAULT_RESPONSE_PATTERNS",new o),n.Z.register("ResponsePatternCollection",o);const a=o},621:(e,t,i)=>{"use strict";i.d(t,{Z:()=>k});var s=i(9806),n=i(4075),r=i(3061),o=i(4317),a=i(8036),h=i(592),l=i(5428),d=i(2550),c=i(8377),u=i(2391),p=i(428),m=i(6692);const g={initialize(){if(window.speechSynthesis||window.SpeechSynthesis||window.SpeechSynthesisUtterance)throw new Error("SpeechSynthesis is supported here, the polyfill should not overwrite it");window.SpeechSynthesis=window.parent.SpeechSynthesis,window.speechSynthesis=new window.parent.SpeechSynthesis,window.SpeechSynthesisUtterance=window.parent.SpeechSynthesisUtterance}};m.Z.register("SpeechSynthesisParentPolyfill",g);const y=g;var A=i(2221),f=i(2823),P=i(9969),b=i(1005),E=i(3600),v=i(2306),w=i(7959),V=i(4865);window.phet&&phet.chipper&&phet.chipper.queryParameters&&phet.chipper.queryParameters.speechSynthesisFromParent&&y.initialize();const S=["Albert","Bad News","Bahh","Bells","Boing","Bubbles","Cellos","Good News","Jester","Organ","Superstar","Trinoids","Whisper","Wobble","Zarvox","Flo","Grandma","Grandpa","Junior"],T={cancelSelf:!0,cancelOther:!0};class C extends u.Z{constructor(e){const t=(0,d.ZP)()({respectResponseCollectorProperties:!1,debug:!1,tandem:b.Z.OPTIONAL},e);super(t),this.debug=t.debug,this.voiceProperty=new h.Z(null,{tandem:t.tandem.createTandem("voiceProperty"),phetioValueType:(0,v.Z)(x),phetioState:!1}),this.voiceRateProperty=new a.Z(1,{range:new l.Z(.75,2),tandem:t.tandem.createTandem("voiceRateProperty"),phetioState:!1}),this.voicePitchProperty=new a.Z(1,{range:new l.Z(.5,2),tandem:t.tandem.createTandem("voicePitchProperty"),phetioState:!1}),this.voiceVolumeProperty=new a.Z(1,{range:new l.Z(0,1)}),this.hasSpoken=!1,this.timeSinceWakingEngine=0,this.timeSincePauseResume=0,this.timeSincePendingUtterance=0,this.timeSinceUtteranceEnd=125,this.startSpeakingEmitter=new r.Z({parameters:[{valueType:"string"},{valueType:p.Z}]}),this.endSpeakingEmitter=new r.Z({parameters:[{valueType:"string"},{valueType:p.Z}]}),this.enabledComponentImplementation=new o.Z({enabled:!1,tandem:t.tandem,enabledPropertyOptions:{phetioState:!1,phetioFeatured:!1}}),this.enabledProperty=this.enabledComponentImplementation.enabledProperty,this.mainWindowVoicingEnabledProperty=new s.Z(!0,{tandem:t.tandem.createTandem("mainWindowVoicingEnabledProperty"),phetioState:!1}),this.voicingFullyEnabledProperty=n.ZP.and([this.enabledProperty,this.mainWindowVoicingEnabledProperty]),this._speechAllowedAndFullyEnabledProperty=new s.Z(!1),this.speechAllowedAndFullyEnabledProperty=this._speechAllowedAndFullyEnabledProperty,this.synth=null,this.voicesProperty=new h.Z([]),this.speakingSpeechSynthesisUtteranceWrapper=null,this.isInitializedProperty=new s.Z(!1),this.canSpeakProperty=null,this.boundHandleCanSpeakChange=this.handleCanSpeakChange.bind(this),this.boundHandleCanAnnounceChange=this.handleCanAnnounceChange.bind(this),this.debug&&(this.announcementCompleteEmitter.addListener((e,t)=>{console.log("announcement complete",t)}),this.startSpeakingEmitter.addListener(e=>{this.debug&&console.log("startSpeakingListener",e)}),this.endSpeakingEmitter.addListener(e=>{this.debug&&console.log("endSpeakingListener",e)}))}get initialized(){return this.isInitializedProperty.value}initialize(e,t){const i=(0,d.ZP)()({speechAllowedProperty:new s.Z(!0)},t);this.synth=window.speechSynthesis,this.canSpeakProperty=n.ZP.and([i.speechAllowedProperty,this.enabledProperty]),this.canSpeakProperty.link(this.boundHandleCanSpeakChange),P.Z.multilink([i.speechAllowedProperty,this.voicingFullyEnabledProperty],(e,t)=>{this._speechAllowedAndFullyEnabledProperty.value=e&&t}),this.getSynth().addEventListener("voiceschanged",()=>{this.populateVoices()}),this.populateVoices();const r=()=>{this.timeSinceWakingEngine=5e3,e.removeListener(r)};e.addListener(r),A.Z.addListener(this.step.bind(this)),this.isInitializedProperty.value=!0}step(e){e*=1e3;const t=this.getSynth();this.initialized&&t&&(this.hasSpoken||(this.hasSpoken=t.speaking),this.timeSinceUtteranceEnd=t.speaking?0:this.timeSinceUtteranceEnd+e,this.timeSincePendingUtterance=this.speakingSpeechSynthesisUtteranceWrapper&&!this.speakingSpeechSynthesisUtteranceWrapper.started?this.timeSincePendingUtterance+e:0,this.timeSincePendingUtterance>5e3&&(this.handleSpeechSynthesisEnd(this.speakingSpeechSynthesisUtteranceWrapper.announceText,this.speakingSpeechSynthesisUtteranceWrapper),this.speakingSpeechSynthesisUtteranceWrapper=null,this.cancelSynth()),this.timeSinceUtteranceEnd>125&&!this.speakingSpeechSynthesisUtteranceWrapper&&(this.readyToAnnounce=!0),f.Z.chromium&&!f.Z.android&&this.voiceProperty.value&&!this.voiceProperty.value.localService&&(this.timeSincePauseResume=t.speaking?this.timeSincePauseResume+e:0,this.timeSincePauseResume>1e4&&(this.timeSincePauseResume=0,t.pause(),t.resume())),this.timeSinceWakingEngine+=e,!t.speaking&&this.timeSinceWakingEngine>5e3&&(this.timeSinceWakingEngine=0,t.speak(new SpeechSynthesisUtterance(" "))))}handleCanSpeakChange(e){e||this.cancel()}populateVoices(){const e=this.getSynth();e&&(this.voicesProperty.value=_.uniqBy(e.getVoices(),e=>e.name))}getPrioritizedVoices(){const e=this.voicesProperty.value.slice(),t=_.filter(e,e=>!_.some(S,t=>e.name.includes(t))),i=e=>e.name.includes("Google")?-1:e.name.includes("Fred")?t.length:t.indexOf(e);return t.sort((e,t)=>i(e)-i(t))}getEnglishPrioritizedVoices(){return _.filter(this.getPrioritizedVoices(),e=>"en-US"===e.lang||"en_US"===e.lang)}getPrioritizedVoicesForLocale(e){const t=e,i=e.replace("_","-");return _.filter(this.getPrioritizedVoices(),e=>e.lang.includes(t)||e.lang.includes(i))}announce(e,t){this.initialized&&this.canSpeakProperty&&this.canSpeakProperty.value?this.requestSpeech(e,t):this.handleAnnouncementFailure(t,e)}handleAnnouncementFailure(e,t){this.debug&&console.log("announcement failure",t),this.announcementCompleteEmitter.emit(e,t)}speakIgnoringEnabled(e){this.initialized&&(this.cancel(),this.requestSpeech(e.getAlertText(this.respectResponseCollectorProperties),e))}requestSpeech(e,t){if(this.debug&&console.log("requestSpeech",e),!e)return void this.handleAnnouncementFailure(t,e);const i=(0,c.Z)(e+"").split("
").join(" ").split("
").join(" ");(0,w.Z)(i,V.Z.STRING_WITHOUT_TEMPLATE_VARS_VALIDATOR);const s=new SpeechSynthesisUtterance(i);s.voice=this.voiceProperty.value,s.pitch=this.voicePitchProperty.value,s.rate=this.voiceRateProperty.value,s.volume=this.voiceVolumeProperty.value;const n=()=>{this.startSpeakingEmitter.emit(i,t),this.speakingSpeechSynthesisUtteranceWrapper.started=!0,s.removeEventListener("start",n)},r=()=>{this.handleSpeechSynthesisEnd(i,o)},o=new I(t,e,s,!1,r,n);this.speakingSpeechSynthesisUtteranceWrapper=o,s.addEventListener("start",n),s.addEventListener("end",r),s.addEventListener("error",r),this.readyToAnnounce=!1,this.timeSinceUtteranceEnd=0,t.canAnnounceProperty.link(this.boundHandleCanAnnounceChange),t.voicingCanAnnounceProperty.link(this.boundHandleCanAnnounceChange),this.getSynth().speak(s)}handleCanAnnounceChange(){this.speakingSpeechSynthesisUtteranceWrapper&&this.cancelUtteranceIfCanAnnounceFalse(this.speakingSpeechSynthesisUtteranceWrapper.utterance)}cancelUtteranceIfCanAnnounceFalse(e){e.canAnnounceProperty.value&&e.voicingCanAnnounceProperty.value||this.cancelUtterance(e)}handleSpeechSynthesisEnd(e,t){this.endSpeakingEmitter.emit(e,t.utterance),this.announcementCompleteEmitter.emit(t.utterance,t.speechSynthesisUtterance.text),t.speechSynthesisUtterance.removeEventListener("error",t.endListener),t.speechSynthesisUtterance.removeEventListener("end",t.endListener),t.speechSynthesisUtterance.removeEventListener("start",t.startListener);const i=t.utterance.canAnnounceProperty;i.hasListener(this.boundHandleCanAnnounceChange)&&i.unlink(this.boundHandleCanAnnounceChange);const s=t.utterance.voicingCanAnnounceProperty;s.hasListener(this.boundHandleCanAnnounceChange)&&s.unlink(this.boundHandleCanAnnounceChange),this.speakingSpeechSynthesisUtteranceWrapper=null}getSynth(){return this.synth}cancel(){this.initialized&&this.speakingSpeechSynthesisUtteranceWrapper&&this.cancelUtterance(this.speakingSpeechSynthesisUtteranceWrapper.utterance)}cancelUtterance(e){const t=this.speakingSpeechSynthesisUtteranceWrapper;t&&e===t.utterance&&(this.handleSpeechSynthesisEnd(t.announceText,t),this.cancelSynth())}shouldUtteranceCancelOther(e,t){const i=(0,d.lB)()({},T,e.announcerOptions);let s;return t.priorityProperty.value!==e.priorityProperty.value?s=t.priorityProperty.value!0,toStateObject:e=>e.name});m.Z.register("SpeechSynthesisAnnouncer",C);const k=C},428:(e,t,i)=>{"use strict";var s;i.d(t,{Z:()=>w});var n=i(4075),r=i(5264),o=i(8292),a=i(1383),h=i(8036),l=i(2550),d=i(3600),c=i(2643),u=i(6103),p=i(6629),m=i(6692),g=i(2306),y=i(8585),A=i(1039),f=i(592),P=i(1731);let b=1;class E extends P.Z{constructor(e){const t=(0,l.ZP)()({alert:null,predicate:function(){return!0},canAnnounceProperties:[],descriptionCanAnnounceProperties:[],voicingCanAnnounceProperties:[],alertStableDelay:200,alertMaximumDelay:Number.MAX_VALUE,announcerOptions:{},priority:1},e);super(t),this.id=b++,this._alert=t.alert,this.predicate=t.predicate,this.canAnnounceProperty=new v({dependentProperties:t.canAnnounceProperties}),this.descriptionCanAnnounceProperty=new v({dependentProperties:t.descriptionCanAnnounceProperties}),this.voicingCanAnnounceProperty=new v({dependentProperties:t.voicingCanAnnounceProperties}),this.alertStableDelay=t.alertStableDelay,this.alertMaximumDelay=t.alertMaximumDelay,this.announcerOptions=t.announcerOptions,this.priorityProperty=new h.Z(t.priority),this.previousAlertText=null}static getAlertStringFromResponsePacket(e,t){const i=e.serialize();return t||(i.ignoreProperties=!0),u.Z.collectResponses(i)}getAlertText(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=E.alertableToText(this._alert,e);return this.previousAlertText=t,t}getAlert(){return this._alert}get alert(){return this.getAlert()}set alert(e){this.setAlert(e)}setAlert(e){this._alert=e}setAlertStableDelay(e){this.alertStableDelay=e}toString(){return`Utterance_${this.id}#${this.getAlertText()}`}toStateObject(){return{alert:(0,g.Z)((0,A.Z)([c.Z,y.Z])).toStateObject(this.getAlertText())}}reset(){this.previousAlertText=null}setCanAnnounceProperties(e){this.canAnnounceProperty.setDependentProperties(e)}set canAnnounceProperties(e){this.setCanAnnounceProperties(e)}get canAnnounceProperties(){return this.getCanAnnounceProperties()}getCanAnnounceProperties(){return this.canAnnounceProperty.getDependentProperties()}setDescriptionCanAnnounceProperties(e){this.descriptionCanAnnounceProperty.setDependentProperties(e)}set descriptionCanAnnounceProperties(e){this.setDescriptionCanAnnounceProperties(e)}get descriptionCanAnnounceProperties(){return this.getDescriptionCanAnnounceProperties()}getDescriptionCanAnnounceProperties(){return this.descriptionCanAnnounceProperty.getDependentProperties()}setVoicingCanAnnounceProperties(e){this.voicingCanAnnounceProperty.setDependentProperties(e)}set voicingCanAnnounceProperties(e){this.setVoicingCanAnnounceProperties(e)}get voicingCanAnnounceProperties(){return this.getVoicingCanAnnounceProperties()}getVoicingCanAnnounceProperties(){return this.voicingCanAnnounceProperty.getDependentProperties()}dispose(){this.canAnnounceProperty.dispose(),this.descriptionCanAnnounceProperty.dispose(),this.voicingCanAnnounceProperty.dispose(),this.priorityProperty.dispose(),super.dispose()}static alertableToText(e){let t,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("function"==typeof e)t=e();else if(e instanceof p.Z)t=E.getAlertStringFromResponsePacket(e,i);else{if(e instanceof E)return e.getAlertText(i);t=e instanceof r.Z||e instanceof o.Z?e.value:e}return t}}s=E,_defineProperty(E,"TOP_PRIORITY",10),_defineProperty(E,"HIGH_PRIORITY",5),_defineProperty(E,"MEDIUM_PRIORITY",2),_defineProperty(E,"DEFAULT_PRIORITY",1),_defineProperty(E,"LOW_PRIORITY",0),_defineProperty(E,"UtteranceIO",new d.Z("UtteranceIO",{valueType:s,documentation:"Announces text to a specific browser technology (like aria-live or web speech)",toStateObject:e=>e.toStateObject(),stateSchema:{alert:(0,g.Z)((0,A.Z)([c.Z,y.Z]))}}));class v extends a.Z{constructor(e){const t=(0,l.ZP)()({dependentProperties:[]},e),i=new f.Z(new o.Z(!1));super(i),this._dependentProperties=[],this.implementationProperty=i,this.setDependentProperties(t.dependentProperties)}setDependentProperties(e){this.implementationProperty.value&&this.implementationProperty.value.dispose();const t=0===e.length?[new o.Z(!0)]:e;this.implementationProperty.value=n.ZP.and(t),this._dependentProperties=e}set dependentProperties(e){this.setDependentProperties(e)}get dependentProperties(){return this.getDependentProperties()}getDependentProperties(){return this._dependentProperties.slice(0)}dispose(){this.implementationProperty.dispose(),this._dependentProperties=[],super.dispose()}}m.Z.register("Utterance",E);const w=E},6103:(e,t,i)=>{"use strict";i.d(t,{Z:()=>p});var s=i(9806),n=i(6114),r=i(6692),o=i(6629),a=i(6975),h=i(2550),l=i(1005),d=i(1617);class c extends d.Z{constructor(e){super(),this.nameResponsesEnabledProperty=new s.Z(!0,{tandem:e.tandem.createTandem("nameResponsesEnabledProperty"),phetioState:!1}),this.objectResponsesEnabledProperty=new s.Z(!1,{tandem:e.tandem.createTandem("objectResponsesEnabledProperty"),phetioState:!1}),this.contextResponsesEnabledProperty=new s.Z(!1,{tandem:e.tandem.createTandem("contextResponsesEnabledProperty"),phetioState:!1}),this.hintResponsesEnabledProperty=new s.Z(!1,{tandem:e.tandem.createTandem("hintResponsesEnabledProperty"),phetioState:!1})}reset(){this.nameResponsesEnabledProperty.reset(),this.objectResponsesEnabledProperty.reset(),this.contextResponsesEnabledProperty.reset(),this.hintResponsesEnabledProperty.reset()}collectResponses(e){const t=(0,h.lB)()({},o.Z.DEFAULT_OPTIONS,e),i=!(!t.nameResponse||!this.nameResponsesEnabledProperty.get()&&!t.ignoreProperties),s=!(!t.objectResponse||!this.objectResponsesEnabledProperty.get()&&!t.ignoreProperties),r=!(!t.contextResponse||!this.contextResponsesEnabledProperty.get()&&!t.ignoreProperties),l=!(!t.hintResponse||!this.hintResponsesEnabledProperty.get()&&!t.ignoreProperties),d=a.Z.createPatternKey(i,s,r,l);let c="";if(d){const e=t.responsePatternCollection.getResponsePattern(d);c=n.Z.fillIn(e,{NAME:t.nameResponse,OBJECT:t.objectResponse,CONTEXT:t.contextResponse,HINT:t.hintResponse})}return c}}const u=new c({tandem:l.Z.GENERAL_MODEL.createTandem("responseCollector"),phetioState:!1,phetioDocumentation:'A collection of Properties that determine what level of responses to provide through the "voicing" feature.'});r.Z.register("responseCollector",u);const p=u},6692:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});const s=new(i(2492).Z)("utteranceQueue")}},t={};function i(s){var n=t[s];if(void 0!==n)return n.exports;var r=t[s]={id:s,loaded:!1,exports:{}};return e[s](r,r.exports,i),r.loaded=!0,r.exports}i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},((e,t,s,n,r,o,a,h,l,d,c,u,p,m,g,y,A,f,P,b,E,v,w,V,S,T,C,I,x,k,B,M,D,O,L)=>{"use strict";var R=i(5687),N=i(2550),Z=i(2530);const q=(e,t)=>{const i=t.replace(new RegExp("^.*,"),""),s=atob(i),n=new Uint8Array(s.length);for(let r=0;r{j||(K(),j=!0)},te=W.decodeAudioData(X.buffer,e=>{null===J.audioBufferProperty.value&&(J.audioBufferProperty.set(e),ee())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),J.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),ee()});te&&te.then(e=>{null===J.audioBufferProperty.value&&(J.audioBufferProperty.set(e),ee())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),ee()});const ie=J;var se=i(9806);const ne=[],re=[],oe={addStateChangeListener(e,t){let i,s=ne.indexOf(e);-1===s?(ne.push(e),s=ne.length-1,i=[],re.push(i),e.onstatechange=()=>{_.clone(i).forEach(t=>{t(e.state)})}):i=re[s],i.push(t)},removeStateChangeListener(e,t){const i=ne.indexOf(e),s=re[i],n=s.indexOf(t);s.splice(n,1)},hasListener(e,t){let i=!1;const s=ne.indexOf(e);if(s>=0){const e=re[s];e&&(i=e.includes(t))}return i}};H.register("audioContextStateChangeMonitor",oe);const ae=oe,he={DEFAULT_PARAM_CHANGE_TIME_CONSTANT:.015,DEFAULT_LINEAR_GAIN_CHANGE_TIME:.1,TWELFTH_ROOT_OF_TWO:Math.pow(2,1/12)};H.register("soundConstants",he);const le=he,de={detectSoundBounds:e=>{const t=e.length,i=[],s=[];for(let r=0;r{let s,n=0,r=!1;for(s=0;si&&e[s+1]>e[s]&&(n=s,r=!0);let o=0;for(r=!1,s=n;s>0&&!r;s--){const t=e[s];t<=0&&(o=0===t?s:s+1,r=!0)}let a=0,h=0;for(s=0;s{let s,n=t-1,r=!1;for(s=t-1;s>0&&!r;s--)e[s]<=-i&&e[s-1]=0&&(o=s,r=!0);let a=0,h=0;for(s=o;s{this.fullyEnabledProperty.value=_.every(this.enableControlProperties,e=>e.value)};this.enableControlProperties.addItemAddedListener(e=>{e.link(i);const t=s=>{s===e&&(s.unlink(i),this.enableControlProperties.removeItemRemovedListener(t))};this.enableControlProperties.addItemRemovedListener(t)}),t.enableControlProperties.forEach(e=>{this.addEnableControlProperty(e)}),this.locallyEnabledProperty=new se.Z(!0),this.addEnableControlProperty(this.locallyEnabledProperty),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.gain.setValueAtTime(this._outputLevel,this.audioContext.currentTime),t.connectImmediately&&this.masterGainNode.connect(this.audioContext.destination),this.fullyEnabledProperty.link(e=>{const t=e?0:this._outputLevel,i=e?this._outputLevel:0,s=this.audioContext.currentTime;this.masterGainNode.gain.setValueAtTime(t,s),this.masterGainNode.gain.linearRampToValueAtTime(i,this.audioContext.currentTime+le.DEFAULT_LINEAR_GAIN_CHANGE_TIME)}),this.soundSourceDestination=this.masterGainNode;for(let s=t.additionalAudioNodes.length-1;s>=0;s--){const e=t.additionalAudioNodes[s];e.connect(this.soundSourceDestination),this.soundSourceDestination=e}ye.Z.PHET_IO_ENABLED&&!t.enabledDuringPhetioStateSetting&&(ye.Z.launched?this.addEnableControlProperty(fe):ye.Z.addLaunchListener(()=>{fe||(fe=me.ZP.not(phet.phetio.phetioEngine.phetioStateEngine.isSettingStateProperty)),this.addEnableControlProperty(fe)})),this.disposeSoundGenerator=()=>{this.enableControlProperties.clear()}}connect(e){this.masterGainNode.connect(e),this.connectionList.push(e)}disconnect(e){this.masterGainNode.disconnect(e),this.connectionList=_.without(this.connectionList,e)}isConnectedTo(e){return this.connectionList.includes(e)}setOutputLevel(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ae;if(e!==this._outputLevel){const i=this.audioContext.currentTime;this.fullyEnabledProperty.value&&(this.masterGainNode.gain.cancelScheduledValues(i),0===t?this.masterGainNode.gain.setValueAtTime(e,i):"running"===this.audioContext.state?this.masterGainNode.gain.setTargetAtTime(e,i,t):this.masterGainNode.gain.linearRampToValueAtTime(e,i+le.DEFAULT_LINEAR_GAIN_CHANGE_TIME)),this._outputLevel=e}}set outputLevel(e){this.setOutputLevel(e)}get outputLevel(){return this.getOutputLevel()}getOutputLevel(){return this._outputLevel}addEnableControlProperty(e){this.enableControlProperties.push(e)}removeEnableControlProperty(e){this.enableControlProperties.remove(e)}get locallyEnabled(){return this.locallyEnabledProperty.value}set locallyEnabled(e){this.locallyEnabledProperty.value=e}get fullyEnabled(){return this.fullyEnabledProperty.value}dispose(){this.disposeSoundGenerator()}}H.register("SoundGenerator",Pe);const be=Pe,Ee=le.DEFAULT_PARAM_CHANGE_TIME_CONSTANT;class ve extends be{constructor(e,t){const i=(0,N.ZP)()({loop:!1,trimSilence:!0,initialPlaybackRate:1,initiateWhenDisabled:!1,rateChangesAffectPlayingSounds:!0},t);if(super(i),this.wrappedAudioBuffer=e,this.loop=i.loop,this.rateChangesAffectPlayingSounds=i.rateChangesAffectPlayingSounds,this.initiateWhenDisabled=i.initiateWhenDisabled,this.soundStart=0,this.soundEnd=null,i.trimSilence){const e=t=>{if(t){const i=pe.detectSoundBounds(t);this.soundStart=i.soundStart,this.soundEnd=i.soundEnd,this.wrappedAudioBuffer.audioBufferProperty.unlink(e)}};this.wrappedAudioBuffer.audioBufferProperty.link(e)}this.activeBufferSources=[],this.localGainNode=this.audioContext.createGain(),this.localGainNode.connect(this.soundSourceDestination),this._playbackRate=i.initialPlaybackRate,this.isPlayingProperty=new se.Z(!1),this.timeOfDeferredPlayRequest=Number.NEGATIVE_INFINITY,this.audioContextStateChangeListener=e=>{"running"===e&&((this.loop||(Date.now()-this.timeOfDeferredPlayRequest)/1e3<.2)&&this.play(.1),ae.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener))},this.fullyEnabledProperty.lazyLink(e=>{this.loop||e||this.stop()})}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if("running"===this.audioContext.state&&this.wrappedAudioBuffer.audioBufferProperty.value){const t=this.audioContext.currentTime;if(this.loop&&!this.isPlayingProperty.get()||!this.loop&&(this.fullyEnabled||this.initiateWhenDisabled)){const i=this.audioContext.createBufferSource();i.buffer=this.wrappedAudioBuffer.audioBufferProperty.value,i.loop=this.loop,i.loopStart=this.soundStart,this.soundEnd&&(i.loopEnd=this.soundEnd),this.localGainNode.gain.cancelScheduledValues(t),this.localGainNode.gain.setValueAtTime(1,t),i.connect(this.soundSourceDestination),this.activeBufferSources.push(i),this.loop||(i.onended=()=>{const e=this.activeBufferSources.indexOf(i);e>-1&&this.activeBufferSources.splice(e,1),this.isPlayingProperty.value=this.activeBufferSources.length>0}),i.playbackRate.setValueAtTime(this._playbackRate,t),i.start(t+e,this.soundStart),this.isPlayingProperty.value=!0}}else"suspended"===this.audioContext.state&&(this.timeOfDeferredPlayRequest=Date.now(),ae.hasListener(this.audioContext,this.audioContextStateChangeListener)||ae.addStateChangeListener(this.audioContext,this.audioContextStateChangeListener))}stop(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.1;const t=e>0?e/4.61:le.DEFAULT_PARAM_CHANGE_TIME_CONSTANT,i=this.audioContext.currentTime,s=i+e;this.localGainNode.gain.cancelScheduledValues(i),this.localGainNode.gain.setTargetAtTime(0,i,t),this.activeBufferSources.forEach(e=>{e.stop(s)}),this.activeBufferSources.length=0,this.isPlayingProperty.value=!1,ae.hasListener(this.audioContext,this.audioContextStateChangeListener)&&ae.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener)}setPlaybackRate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ee;if(this.rateChangesAffectPlayingSounds){const i=this.audioContext.currentTime;this.activeBufferSources.forEach(s=>{s.playbackRate.cancelScheduledValues(i),s.playbackRate.setTargetAtTime(e,i,t)})}this._playbackRate=e}getPlaybackRate(){return this._playbackRate}get playbackRate(){return this.getPlaybackRate()}get isPlaying(){return this.isPlayingProperty.value}getNumberOfPlayingInstances(){return this.activeBufferSources.length}}H.register("SoundClip",ve);const we=ve;var Ve=i(8964),Se=i(1617);const Te="data:audio/mpeg;base64,//twxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAvAAA6xgAFBQoKEBAVFRsbICAmJisrKzExNjY7O0FBRkZMTFFRV1dXXFxiYmdnbGxycnd3fX2CgoKIiI2Nk5OYmJ2do6OoqK6urrOzubm+vsTEycnOztTU2dnZ39/k5Orq7+/19fr6//8AAAA5TEFNRTMuOTlyAc0AAAAAAAAAABRgJAW0QgAAYAAAOsbaTGT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7cMQAAA7dBSqUMwACca6u+zCwACApgAAXXczyPLdxZhAGAydwQABDIj/xEZEREf+Lu7u7/u7ve0Rd3etERv//7EAGAydsYQhyCEf3va73/vdxEREREE78RGRBMmnYPg+DgIHC5QH3rB/EAIHCCgQBAoCDsEfa*gCBQ5BAMS4P8Hwff8Tg+/Ln/wfw/dtCpCmhkRCphx5RJJZZeBkRuhKWvyydbusLOy2X0io3WgGaNyeDJBmxPyYwBMkkASVLji*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*C70VWTRzUd1M62cEwKBUtblBrNWgP+1tQl4narNNVyvN1JM4KtSYivVLZG7SgIwJmy9FrU1LF//7csTugZLaCx8sPFFCABUkJPCPgIfaRLNS7bkSqLO0+Sm79Oa4y468Rgq3KYdfyhm7NemsS6Qclli6Ugo4kzkOHEqLJIjmuqsrKt2L2Stey/+pG7/s6IY3ZOm/TT99/29ao6K19DWUZLsc99W7677UI+dZsPbaskn29eWslcWmMJ1STmmSJ0+0JBQBwB3CHkuLkYgfxxjcliqBkTxxp0g2HNUGc0jyP5JCzIhFGOZLcpELlUrUizlq8W4D9FK05SiJ7EXcRjrZunzeDFhXbWa8sTVcS7vb2xXOtdjiNOCKX/zMn7aVHL/19cv6+//X/+XX6LI2IVjkbPidcstTLfBE8JtYiGx1hZoQICJyEbBDAExQNABVQfiPHQr3BdjFUyyPS2l+fGlHGKu08YB1IUecx0ql+qFtNJaF//twxPWAk3YHHSwMXIp9wSLBgRupz2LkWFpxMxTajVPlQNCEl9WGBXQWHN4keNmWka9N4pm0B7rd/XeM42bKsyEJ5Wj2Qv8lij8R8aczFLIZ9WFbzS8uFo//RYq+d5Kcpl/1Tm9O+hEthuQ0mwzMBDgi0yMaBhaIY6BGECAAM1AD0axcbKMx0y2rqj06TkI2eJ1KI51stxOT6Sb8cYt7YdKNRjgezqEpXzlHmhRoz9V6jxe4s81I6hdqSytcYVXKsDGuFSOYM6tsHL2ZFbbRdva57tVrUZ69bsjMZnfZ2borP9NNbc23b//66PYspVqWoCetmD97O2e4lnoih0WOTlvyWHR9HZzJWrbAZxZIkEokIABkBnEGUjMql+KczfNQ/lajC+mil2JZRqzOonJOn8yOSkXMW+lc2P/7csTqABEaAxinhH8KOMEjGPCP4Y6LXUkeeR+3xFE5xlqFAravpamcQa43q2fnMusZrrOs6yTTmVcfOf6nJfCRSs5VCgy/6bYnRCej+W//mL8Sy+VG8jKUGN8mzXrbq5VM2ukNPKd5kDppMw82z9TyYMCUi5pc0xGHKW5wjR11eGpY6tcWa0CV7NKhs7hBRKNiqtmVVmp+yKp3veu+pbCGtEzdXLx7FpPVgk4eUpxWqlmNZW+h+b06a6J61Wrb6tM07KRN+itqltdNfr+9nka6zGqqIxequWhh0wuVzzWj3GJpwgnUUnqjKNlAcP5aJcsyyKRQqsREy4ofIU6uaIzRUNKxgTmDY+ICBQKEmAELDTZX1WGYk2vJFnBSHuqkhycqwzWtTUfMCwsKm+utfk7/8J/538PPIQsw//twxPEAkroNFMeI3UIowWKk8Jvh4SvCGEn0WisTCEJh/PDFMJC89a/huGxz+W7GHr1NDcSFyzV+KuNXFYVIiIlgiFSMMwKqQOjoJPIhsDKAKoDQpgVJVRSdHQDIyh9g0KYgMIwZJlYkpECwrAlEIQRBE8iZlUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUECAAACodnazoqLWqX+iqnqi/1RF+5Sy/LLSMjVlBAnQ/n//2Wkf/ZKR+Utl/VgoOOllIzWXsshl/y2X4stIyNWChgQdHlQyrauK2gtzXDef/7csTzAxK+DwwnlTuCM8GghICnaTzRor5hXS6b3kel6brXGab1bP+f7zMxym8dyTTivZGdwVSdUq8xxMvlKulOzuDkyqI0SfFCVBgHWmlUrW6G6ZmJhXTe8fuDNBSqTEFNRTMuOTkuM6qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//twxLqD0y4KxQEN+0gAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==",Ce=q(W,Te),Ie=Z.Z.createLock(Te),xe=new U;let ke=!1;const Be=()=>{ke||(Ie(),ke=!0)},Me=W.decodeAudioData(Ce.buffer,e=>{null===xe.audioBufferProperty.value&&(xe.audioBufferProperty.set(e),Be())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),xe.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Be()});Me&&Me.then(e=>{null===xe.audioBufferProperty.value&&(xe.audioBufferProperty.set(e),Be())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Be()});const De=xe;var Oe=i(2956),Le=i(4676);class Re extends Le.Z{}_defineProperty(Re,"BASIC",new(e=Re)),_defineProperty(Re,"EXTRA",new e),_defineProperty(Re,"enumeration",new Oe.Z(e,{phetioDocumentation:"describes whether a sound is considered part of the basic or the extra sounds for the sim"})),H.register("SoundScope",Re);const Ne=Re;var Ze=i(9969),qe=i(9059);const Fe=le.DEFAULT_LINEAR_GAIN_CHANGE_TIME;class Ye extends Se.Z{constructor(e){super({tandem:e,phetioState:!1,phetioDocumentation:"Controls the simulation's sound. For sims that do not support sound, this element and its children can be ignored."}),this.enabledProperty=new se.Z(phet.chipper.queryParameters.supportsSound,{tandem:e.createTandem("enabledProperty"),phetioState:!1,phetioDocumentation:"Determines whether sound is enabled."}),this.extraSoundEnabledProperty=new se.Z(phet.chipper.queryParameters.extraSoundInitiallyEnabled,{tandem:e.createTandem("extraSoundEnabledProperty"),phetioState:!1,phetioDocumentation:"Determines whether extra sound is enabled. Extra sound is additional sounds that can serve to improve the learning experience for individuals with visual disabilities. Note that not all simulations that support sound also support extra sound. Also note that the value is irrelevant when enabledProperty is false."}),this.soundGeneratorInfoArray=[],this._masterOutputLevel=1,this._reverbLevel=.02,this.gainNodesForCategories=new Map,this.duckingProperties=(0,ge.Z)(),this.initialized=!1,this.soundGeneratorsAwaitingAdd=[],this.masterGainNode=null,this.duckingGainNode=null,this.convolver=null,this.reverbGainNode=null,this.dryGainNode=null}initialize(e,t,i,s,n,r){const o=(0,N.ZP)()({categories:["sim-specific","user-interface"]},r),a=W.currentTime,h=W.createDynamicsCompressor();h.threshold.setValueAtTime(-6,a),h.knee.setValueAtTime(5,a),h.ratio.setValueAtTime(12,a),h.attack.setValueAtTime(0,a),h.release.setValueAtTime(.25,a),h.connect(W.destination),this.duckingGainNode=W.createGain(),this.duckingGainNode.connect(h),this.masterGainNode=W.createGain(),this.masterGainNode.connect(this.duckingGainNode),this.convolver=W.createConvolver();const l=e=>{e&&(this.convolver.buffer=e,De.audioBufferProperty.unlink(l))};De.audioBufferProperty.link(l),this.reverbGainNode=W.createGain(),this.reverbGainNode.connect(this.masterGainNode),this.reverbGainNode.gain.setValueAtTime(this._reverbLevel,W.currentTime),this.convolver.connect(this.reverbGainNode),this.dryGainNode=W.createGain(),this.dryGainNode.gain.setValueAtTime(1-this._reverbLevel,W.currentTime),this.dryGainNode.gain.linearRampToValueAtTime(1-this._reverbLevel,W.currentTime+Fe),this.dryGainNode.connect(this.masterGainNode),o.categories.forEach(e=>{const t=W.createGain();t.connect(this.convolver),t.connect(this.dryGainNode),this.gainNodesForCategories.set(e,t)}),Ze.Z.multilink([this.enabledProperty,t,e,i,s,n],(e,t,i,s,n,r)=>{const o=e&&t&&i&&s&&n&&!r?this._masterOutputLevel:0;this.masterGainNode.gain.linearRampToValueAtTime(o,W.currentTime+Fe)});const d=new se.Z(!1),c=()=>{d.value=this.duckingProperties.reduce((e,t)=>e||t.value,!1)};d.lazyLink(e=>{var t,i;const s=e?.05:.5,n=W.currentTime;null===(t=this.duckingGainNode)||void 0===t||t.gain.cancelScheduledValues(n),null===(i=this.duckingGainNode)||void 0===i||i.gain.setTargetAtTime(e?.15:1,n,s)}),this.duckingProperties.addItemAddedListener(e=>{e.link(c);const t=i=>{i===e&&(i.unlink(c),this.duckingProperties.removeItemRemovedListener(t))};this.duckingProperties.addItemRemovedListener(t)});const u=()=>{window.removeEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.hasListener(p)&&R.sSl.userGestureEmitter.removeListener(p)},p=()=>{"running"!==W.state?(phet.log&&phet.log("audio context not running, attempting to resume, state = "+W.state),W.resume().then(()=>{phet.log&&phet.log("resume appears to have succeeded, phetAudioContext.state = "+W.state),u()}).catch(e=>{const t="error when trying to resume audio context, err = "+e;console.error(t)})):u()};window.addEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.addListener(p);let m=W.state;ae.addStateChangeListener(W,e=>{phet.log&&phet.log(`audio context state changed, old state = ${m}, new state = ${e}, audio context time = ${W.currentTime}`),"running"!==e?(window.addEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.hasListener(p)||R.sSl.userGestureEmitter.addListener(p)):console.log("AudioContext is now running."),m=e}),this.initialized=!0,this.soundGeneratorsAwaitingAdd.forEach(e=>{this.addSoundGenerator(e.soundGenerator,e.soundGeneratorAddOptions)}),this.soundGeneratorsAwaitingAdd.length=0}hasSoundGenerator(e){return _.some(this.soundGeneratorInfoArray,t=>t.soundGenerator===e)}addSoundGenerator(e,t){if(void 0===t&&(t={}),!this.initialized)return void this.soundGeneratorsAwaitingAdd.push({soundGenerator:e,soundGeneratorAddOptions:t});this.hasSoundGenerator(e);const i=(0,N.ZP)()({sonificationLevel:Ne.BASIC,associatedViewNode:null,categoryName:null},t);null===i.categoryName?(e.connect(this.convolver),e.connect(this.dryGainNode)):e.connect(this.gainNodesForCategories.get(i.categoryName));const s={soundGenerator:e,sonificationLevel:i.sonificationLevel};this.soundGeneratorInfoArray.push(s),e.addEnableControlProperty(this.enabledProperty),i.sonificationLevel===Ne.EXTRA&&e.addEnableControlProperty(this.extraSoundEnabledProperty),i.associatedViewNode&&e.addEnableControlProperty(new R.ljG(i.associatedViewNode))}removeSoundGenerator(e){if(!this.initialized){const t=this.soundGeneratorsAwaitingAdd.filter(t=>t.soundGenerator===e);for(;t.length>0;)(0,qe.Z)(this.soundGeneratorsAwaitingAdd,t[0]),t.shift();return void console.warn("an attempt was made to remove a sound generator from an uninitialized sound manager, ignoring")}let t=null;for(let i=0;i{e.isConnectedTo(t)&&e.disconnect(t)}),t&&this.soundGeneratorInfoArray.splice(this.soundGeneratorInfoArray.indexOf(t),1)}setMasterOutputLevel(e){this.initialized?(this._masterOutputLevel=e,this.enabledProperty.value&&this.masterGainNode.gain.linearRampToValueAtTime(e,W.currentTime+Fe)):console.warn("an attempt was made to set the master output level on an uninitialized sound manager, ignoring")}set masterOutputLevel(e){this.setMasterOutputLevel(e)}get masterOutputLevel(){return this.getMasterOutputLevel()}getMasterOutputLevel(){return this._masterOutputLevel}setOutputLevelForCategory(e,t){if(!this.initialized)return void console.warn("an attempt was made to set the output level for a sound category on an uninitialized sound manager, ignoring");const i=this.gainNodesForCategories.get(e);i&&i.gain.setValueAtTime(t,W.currentTime)}addDuckingProperty(e){this.duckingProperties.add(e)}removeDuckingProperty(e){this.duckingProperties.remove(e)}getOutputLevelForCategory(e){if(!this.initialized)return console.warn("an attempt was made to get the output level for a sound category on an uninitialized sound manager, returning 0"),0;const t=this.gainNodesForCategories.get(e);return t.gain.value}setReverbLevel(e){if(this.initialized){if(e!==this._reverbLevel){const t=W.currentTime;this.reverbGainNode.gain.linearRampToValueAtTime(e,t+Fe),this.dryGainNode.gain.linearRampToValueAtTime(1-e,t+Fe),this._reverbLevel=e}}else console.warn("an attempt was made to set the reverb level on an uninitialized sound manager, ignoring")}set reverbLevel(e){this.setReverbLevel(e)}get reverbLevel(){return this.getReverbLevel()}getReverbLevel(){return this._reverbLevel}set enabled(e){this.enabledProperty.value=e}get enabled(){return this.enabledProperty.value}set sonificationLevel(e){this.extraSoundEnabledProperty.value=e===Ne.EXTRA}get sonificationLevel(){return this.extraSoundEnabledProperty.value?Ne.EXTRA:Ne.BASIC}logGain(e,t){t=t||1;Date.now()}logMasterGain(e){this.masterGainNode&&this.logGain(this.masterGainNode,e)}logReverbGain(e){this.reverbGainNode&&this.logGain(this.reverbGainNode,e)}}const He=new Ye(ye.Z.GENERAL_VIEW.createTandem("soundManager"));H.register("soundManager",He);const Ge=He;class Ue{constructor(e,t){this.soundPlayer=e,this.playbackRate=t}play(){this.soundPlayer.setPlaybackRate(this.playbackRate),this.soundPlayer.play()}stop(){this.soundPlayer.stop()}}const ze=new class{constructor(){this._basisSoundClip=null,this.soundPlayers=[]}getSoundClipInstance(){return this._basisSoundClip||(this._basisSoundClip=new we(ie,{initialOutputLevel:.7,rateChangesAffectPlayingSounds:!1}),Ge.addSoundGenerator(this._basisSoundClip,{categoryName:"user-interface"})),this._basisSoundClip}getSelectionSoundPlayer(e){if(!this.soundPlayers[e]){const t=Math.pow(2,-e/12);this.soundPlayers[e]=new Ue(this.getSoundClipInstance(),t)}return this.soundPlayers[e]}};H.register("multiSelectionSoundPlayerFactory",ze);const We=ze;var Qe=i(8378);const Xe={};class Ke{static registerDataURL(e,t,i){if(phet.chipper.queryParameters.binder){const n=`${e}/${t}`;Xe[n]=Xe[n]||[];try{i.toDataURL(e=>{Xe[n].push(e)})}catch(s){}}}}Ke.map=Xe,Qe.Z.register("InstanceRegistry",Ke);const Je=new Y.Z("sun");class je extends((0,R.CHP)(R.NBX)){constructor(e,t,i,s){const n=(0,N.ZP)()({centerColor:"black",radius:je.DEFAULT_RADIUS,selectedColor:"rgb( 143, 197, 250 )",deselectedColor:"white",xSpacing:8,stroke:"black",soundPlayer:We.getSelectionSoundPlayer(0),a11yNameAttribute:null,cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:ye.Z.REQUIRED,tandemNameSuffix:"RadioButton",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"input",inputType:"radio",containerTagName:"li",labelTagName:"label",appendLabel:!0,appendDescription:!0},s);super(),this.value=t;const r=new R.NBX,o=new R.Cdc(n.radius/3,{fill:n.centerColor}),a=new R.Cdc(n.radius,{fill:n.selectedColor,stroke:n.stroke}),h=new R.NBX({children:[a,o]});r.addChild(h),r.addChild(i);const l=new R.NBX,d=new R.Cdc(n.radius,{fill:n.deselectedColor,stroke:n.stroke});l.addChild(d),l.addChild(i);const c=()=>{i.left=d.right+n.xSpacing,i.centerY=d.centerY};i.boundsProperty.link(c);const u=new R.AeJ(r.bounds.union(l.bounds));r.pickable=l.pickable=!1,this.addChild(u),this.addChild(r),this.addChild(l);const p=e=>{r.visible=e===t,l.visible=!r.visible};e.link(p);const m=()=>{e.set(t),n.soundPlayer.play()},g=new R.eMb({fire:m,tandem:n.tandem.createTandem("fireListener")});this.addInputListener(g);const y={change:m};this.addInputListener(y),e.value===t&&this.setPDOMAttribute("checked","checked");const A=e=>{this.pdomChecked=e===t};e.link(A),null!==n.a11yNameAttribute&&this.setPDOMAttribute("name",n.a11yNameAttribute),this.mutate(n),this.disposeAquaRadioButton=()=>{this.removeInputListener(g),this.removeInputListener(y),e.unlink(A),e.unlink(p),i.boundsProperty.hasListener(c)&&i.boundsProperty.unlink(c),g.dispose()}}dispose(){this.disposeAquaRadioButton(),super.dispose()}}function _e(e,t){return e.map(e=>e.createNode(e.tandemName?t.createTandem(e.tandemName):ye.Z.OPTIONAL))}_defineProperty(je,"DEFAULT_RADIUS",7),_defineProperty(je,"TANDEM_NAME_SUFFIX","RadioButton"),Je.register("AquaRadioButton",je);let $e=0;class et extends R.N52{constructor(e,t,i){$e++;const s=(0,N.ZP)()({touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,orientation:"vertical",spacing:3,disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:ye.Z.REQUIRED,tandemNameSuffix:"RadioButtonGroup",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"ul",labelTagName:"h3",ariaRole:"radiogroup",groupFocusHighlight:!0},i),n=_e(t,s.tandem),r=_.maxBy(n,e=>e.width).width,o=[];for(let h=0;h{"vertical"===s.orientation?(d.mouseArea=e.dilatedXY(s.mouseAreaXDilation,s.spacing/2),d.touchArea=e.dilatedXY(s.touchAreaXDilation,s.spacing/2)):(d.mouseArea=e.dilatedXY(s.mouseAreaXDilation,s.mouseAreaYDilation),d.touchArea=e.dilatedXY(s.touchAreaXDilation,s.touchAreaYDilation))}),o.push(d)}s.children=o,super(s),this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:this,otherElementName:R.Grz.LABEL_SIBLING});const a={keydown:e=>e.pointer.reserveForKeyboardDrag()};this.addInputListener(a),this.addLinkedElement(e,{tandem:s.tandem.createTandem("property")}),this.disposeAquaRadioButtonGroup=()=>{this.removeInputListener(a),o.forEach(e=>e.dispose()),n.forEach(e=>e.dispose())},this.radioButtons=o}dispose(){this.disposeAquaRadioButtonGroup(),super.dispose()}getButton(e){const t=_.find(this.radioButtons,t=>t.value===e);return t}}Je.register("AquaRadioButtonGroup",et);class tt extends et{constructor(e,t,i){super(e,t,(0,N.ZP)()({orientation:"vertical",align:"left"},i))}}Je.register("VerticalAquaRadioButtonGroup",tt);const it=new Y.Z("circuitConstructionKitCommon");var st=i(8194);const nt=(0,st.Z)("CIRCUIT_CONSTRUCTION_KIT_COMMON");it.register("CircuitConstructionKitCommonStrings",nt);const rt=nt;var ot=i(592),at=i(3409),ht=i(7922);class lt extends ot.Z{constructor(e,t){const i=(0,N.ZP)()({enumeration:e.enumeration},t);super(e,(0,N.ZP)()({validValues:i.enumeration.values,phetioValueType:(0,at.Z)({enumeration:i.enumeration})},i))}}ht.Z.register("EnumerationProperty",lt);const dt=QueryStringMachine.getAll({currentType:{public:!0,type:"string",defaultValue:"electrons",validValues:["electrons","conventional"]},showCurrent:{public:!0,type:"boolean",defaultValue:!0},addRealBulbs:{type:"flag",public:!0},moreInductors:{public:!0,type:"flag"},schematicStandard:{public:!0,type:"string",defaultValue:"ieee",validValues:["ieee","iec","british"]},ammeterReadout:{public:!0,type:"string",defaultValue:"magnitude",validValues:["magnitude","signed"]},vertexDisplay:{type:"flag"},showDepictValuesToggleButton:{type:"flag"},showVoltmeterSamplePoints:{type:"flag"},batteryMinimumResistance:{type:"number",defaultValue:1e-4},capacitorResistance:{type:"number",defaultValue:1e-4},inductorResistance:{type:"number",defaultValue:1e-4},fullPrecisionAmmeter:{type:"flag"},wireResistivity:{type:"number",defaultValue:1e-10},showCurrents:{type:"flag"},inductanceMin:{type:"number",defaultValue:.1},inductanceMax:{type:"number",defaultValue:10},inductanceStep:{type:"number",defaultValue:.001},inductanceDefault:{type:"number",defaultValue:5},inductorNumberDecimalPlaces:{type:"number",defaultValue:3},capacitanceMin:{type:"number",defaultValue:.05},capacitanceMax:{type:"number",defaultValue:.2},capacitanceStep:{type:"number",defaultValue:.01},capacitanceDefault:{type:"number",defaultValue:.1},capacitorNumberDecimalPlaces:{type:"number",defaultValue:2},minDT:{type:"number",defaultValue:.001},searchTimeStep:{type:"boolean",defaultValue:!0},codap:{type:"flag"}});it.register("CCKCQueryParameters",dt);const ct=dt;class ut extends Le.Z{}_defineProperty(ut,"IEC",new(t=ut)),_defineProperty(ut,"IEEE",new t),_defineProperty(ut,"BRITISH",new t),_defineProperty(ut,"enumeration",new Oe.Z(t)),it.register("SchematicType",ut);const pt=new lt("ieee"===ct.schematicStandard?ut.IEEE:"iec"===ct.schematicStandard?ut.IEC:ut.BRITISH,{tandem:ye.Z.PREFERENCES.createTandem("schematicTypeProperty")});it.register("schematicTypeProperty",pt);const mt=pt;class gt extends Le.Z{}_defineProperty(gt,"MAGNITUDE",new(s=gt)),_defineProperty(gt,"SIGNED",new s),_defineProperty(gt,"enumeration",new Oe.Z(s)),it.register("AmmeterReadoutType",gt);const yt=new lt("magnitude"===ct.ammeterReadout?gt.MAGNITUDE:gt.SIGNED,{tandem:ye.Z.PREFERENCES.createTandem("ammeterReadoutTypeProperty")});it.register("ammeterReadoutTypeProperty",yt);const At=yt,ft=new Y.Z("sceneryPhet"),Pt=QueryStringMachine.getAll({backgroundColor:{type:"string",defaultValue:"white"},slider:{type:"string",defaultValue:null},component:{type:"string",defaultValue:null},fontFamily:{type:"string",defaultValue:"Arial"}});ft.register("sceneryPhetQueryParameters",Pt);const bt=Pt;class Et extends R.Zxw{constructor(e){let t;t="number"==typeof e||"string"==typeof e?{size:e}:e||{},t=(0,N.JA)({family:bt.fontFamily},t),t.family=t.family+", sans-serif",super(t)}}ft.register("PhetFont",Et);var vt=i(1603),wt=i(9972);const Vt=(0,st.Z)("SCENERY_PHET");ft.register("SceneryPhetStrings",Vt);const St=Vt;class Tt extends R.NBX{constructor(e,t){super((0,N.ZP)()({containerTagName:"section",tagName:"div",labelContent:e,labelTagName:"h2"},t))}}ft.register("PDOMSectionNode",Tt);class Ct extends Tt{constructor(e){super(St.a11y.simSection.controlAreaStringProperty,e)}}ft.register("ControlAreaNode",Ct);class It extends Tt{constructor(e){super(St.a11y.simSection.playAreaStringProperty,e)}}ft.register("PlayAreaNode",It);var xt=i(6114);class kt extends R.NBX{constructor(){super(),this.openingSummaryNode=new R.NBX({tagName:"p"});const e=new R.NBX({tagName:"p",innerContent:St.a11y.simSection.screenSummary.keyboardShortcutsHintStringProperty});this.addChild(this.openingSummaryNode),this.addChild(e),this.pdomOrder=[this.openingSummaryNode,null,e]}setIntroString(e,t,i){this.openingSummaryNode.innerContent=i&&t?xt.Z.fillIn(St.a11y.simSection.screenSummary.multiScreenIntroStringProperty,{screen:t}):xt.Z.fillIn(St.a11y.simSection.screenSummary.singleScreenIntroPatternStringProperty,{sim:e})}}ft.register("ScreenSummaryNode",kt);var Bt=i(9362);const Mt=new vt.Z(0,0,1024,618);class Dt extends R.NBX{constructor(e){const t=(0,N.ZP)()({layoutBounds:Mt.copy(),layerSplit:!0,excludeInvisible:!0,tandem:ye.Z.REQUIRED,visiblePropertyOptions:{phetioState:!1,phetioReadOnly:!0},containerTagName:"article",tagName:"div",screenSummaryContent:null,includePDOMNodes:!0},e);super(t),this.layoutBounds=t.layoutBounds,this.visibleBoundsProperty=new ot.Z(t.layoutBounds),this.pdomTitleNode=new R.NBX({tagName:"h1",focusHighlight:"invisible"}),this.pdomPlayAreaNode=new It,this.pdomControlAreaNode=new Ct,this.pdomScreenSummaryNode=new kt,this.screenSummaryContent=null,t.screenSummaryContent&&this.setScreenSummaryContent(t.screenSummaryContent),this.visibleProperty.lazyLink(e=>{e?(this.pdomTitleNode.focusable=!0,this.pdomTitleNode.focus()):this.pdomTitleNode.focusable=!1}),this.pdomTitleNode.addInputListener({blur:()=>{this.pdomTitleNode.focusable=!1}}),this.pdomParentNode=new R.NBX({children:t.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomControlAreaNode,this.pdomPlayAreaNode]:[this.pdomTitleNode]}),this.addChild(this.pdomParentNode),this.pdomParentNode.pdomOrder=t.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomPlayAreaNode,this.pdomControlAreaNode]:[this.pdomTitleNode]}setPDOMOrder(e){throw new Error("should not need to set accessible order on a ScreenView")}setChildren(e){return R.NBX.prototype.setChildren.call(this,e),this.pdomParentNode&&!this.hasChild(this.pdomParentNode)&&(this.addChild(this.pdomParentNode),this.pdomParentNode.moveToBack()),this}getLayoutScale(e){return Dt.getLayoutScale(this.layoutBounds,e)}layout(e){this.matrix=Dt.getLayoutMatrix(this.layoutBounds,e),this.visibleBoundsProperty.value=this.parentToLocalBounds(e)}setScreenSummaryContent(e){this.screenSummaryContent&&this.pdomScreenSummaryNode.removeChild(this.screenSummaryContent),this.screenSummaryContent=e,this.pdomScreenSummaryNode.addChild(e)}setScreenSummaryIntroAndTitle(e,t,i,s){this.pdomScreenSummaryNode.setIntroString(e,t,s),this.pdomTitleNode.innerContent=i}getVoicingOverviewContent(){throw new Error("The ScreenView should implement getVoicingOverviewContent if Voicing is enabled")}getVoicingDetailsContent(){throw new Error("The ScreenView should implement getVoicingDetailsContent when the Voicing feature is enabled.")}getVoicingHintContent(){throw new Error("The ScreenView should implement getVoicingHintContent when Voicing is enabled.")}static getLayoutScale(e,t){return Math.min(t.width/e.width,t.height/e.height)}static getLayoutMatrix(e,t,i){const s=(0,N.ZP)()({verticalAlign:"center"},i),n=t.width,r=t.height,o=Dt.getLayoutScale(e,t);let a=0,h=0;return o===n/e.width?(h=r/o-e.height,"center"===s.verticalAlign&&(h/=2)):o===r/e.height&&(a=(n/o-e.width)/2),wt.Z.rowMajor(o,0,a*o+t.left,0,o,h*o+t.top,0,0,1)}step(e){}}_defineProperty(Dt,"DEFAULT_LAYOUT_BOUNDS",Mt),Bt.Z.register("ScreenView",Dt);const Ot=Dt,Lt=e=>{const t=_.get(window,e);return void 0!==t?t:null};Qe.Z.register("getGlobal",Lt);const Rt=Lt;var Nt=i(6572);const Zt="data:audio/mpeg;base64,//swxAAABlAhPLTAgDE1De+/HoACAH4CwkCAJDo5gDgPRksn2WLHOB8EHShd5cHwfBBwgBBOJw/UCAY/lAxWD/4DB9+CH/6XQjMTIIcYUIQPQIRAIBAACUIawkYq7IQ/BawVqEc7mTjD+OFygBAnHbHq7UkLJ8aCnnrZlPpg3IkRJBgPH/MCQCI985/yAnHAAhmv3lHuAgAgAxJF//syxAOACHQpa7zBAAD8EunxpI3HUCEZHQlA2EYuDsSjE5EkSQGhUDYDxOARLoiBmIgalVgq4qWeWBqsNYKywNO+p/sxFyKwVOlXRFDtZ0S86oQ0C2W+wBOmlaWuS6+BIqZMz+AYy3FuwBkKXM2idVoKlYwUd/oIGgsbLpEbaCsmIyZRtbw6TPwj+mYmGr8QqnGHBLo3LKAAxKabZ//7MsQGAAhsl1OsPMcxAo3mpbCaAvIuuQRmW4WNHhDBJnoBORIlh+I9dvGCTCKP0kzo7rHHTi87diQ2XqnRN77y8lnKUl8zf+X0Fu0iCDV/9AP7el8Cw8raZKqiYShe+6bzYk0zXmEuGnBDcQhyRzPeI4Jbsmj5OxzZVhSX9adVU4Kk9r9esE3etv+/6wUIg3Wm62nA3Ab0EIcLUQ7/+zLECABGICs9oemDMLwEZrQcvFYyDBCUCgUAwQCUSvgROof5poGn9O7o70P/X9P/T+360+lAhIJVtyuNDljXzM7Ek0fGUB/ltZQF8iD7dBcVTs00f31POqR0/V/q/pjEe1z3jyAAQRBHGmSBEEVK6QIYH2miQZKNfgCVtiH9vVLp+w7an/d0jdUx9VnqZIJSvFtsaUFKKFBVCzoe//swxBwABSAhLaDl4nCsA+a0fDyG3vbgKx5OhNXyuPYt7kJJSg9B6heqxP93q/9P6IwSQ8LbYIFBVUF85RwseJPX6+Q7qIq7f/8ayokh7P//V8oyAABbhbGEIBBhOJgEGTBx6KjUiosS54l6y0i3jOz/6f///RVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//syxDWABEQTMaCF4HCNAmL0EJgGVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==",qt=q(W,Zt),Ft=Z.Z.createLock(Zt),Yt=new U;let Ht=!1;const Gt=()=>{Ht||(Ft(),Ht=!0)},Ut=W.decodeAudioData(qt.buffer,e=>{null===Yt.audioBufferProperty.value&&(Yt.audioBufferProperty.set(e),Gt())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),Yt.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Gt()});Ut&&Ut.then(e=>{null===Yt.audioBufferProperty.value&&(Yt.audioBufferProperty.set(e),Gt())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Gt()});const zt=Yt;class Wt{constructor(e,t){const i=(0,N.ZP)()({soundClipOptions:{},soundManagerOptions:{}},t);this._soundClip=new we(e,i.soundClipOptions),Ge.addSoundGenerator(this._soundClip,i.soundManagerOptions)}play(){this._soundClip.play()}stop(){this._soundClip.stop()}getSoundClip(){return this._soundClip}}H.register("SoundClipPlayer",Wt);const Qt=Wt,Xt=new Qt(zt,{soundClipOptions:{initialOutputLevel:.5},soundManagerOptions:{categoryName:"user-interface"}});H.register("pushButtonSoundPlayer",Xt);const Kt=Xt;class Jt extends Le.Z{}_defineProperty(Jt,"IDLE",new(n=Jt)),_defineProperty(Jt,"OVER",new n),_defineProperty(Jt,"PRESSED",new n),_defineProperty(Jt,"enumeration",new Oe.Z(n)),Je.register("ButtonInteractionState",Jt);class jt extends me.Nt{constructor(e){super([e.focusedProperty,e.overProperty,e.looksOverProperty,e.looksPressedProperty],(e,t,i,s)=>i&&!s?Jt.OVER:(t||e)&&s?Jt.PRESSED:Jt.IDLE,{valueType:Jt})}}Je.register("PushButtonInteractionStateProperty",jt);var _t=i(2558),$t=i(3061),ei=i(2976),ti=i(4317);class ii extends ti.Z{constructor(e){const t=(0,N.ZP)()({startCallback:_.noop,endCallback:_.noop,tandem:ye.Z.REQUIRED,phetioState:Se.Z.DEFAULT_OPTIONS.phetioState,phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioFeatured:Se.Z.DEFAULT_OPTIONS.phetioFeatured},e);t.enabledPropertyOptions=(0,N.JA)({phetioState:t.phetioState,phetioReadOnly:t.phetioReadOnly,phetioDocumentation:"When disabled, the button is grayed out and cannot be pressed",phetioFeatured:!0},t.enabledPropertyOptions),super(t),this.overProperty=new se.Z(!1),this.downProperty=new se.Z(!1,{reentrant:!0}),this.focusedProperty=new se.Z(!1),this.looksPressedProperty=new se.Z(!1),this.looksOverProperty=new se.Z(!1),this.produceSoundEmitter=new $t.Z,this.interrupted=!1,this.listeners=[],this.looksPressedMultilink=null,this.looksOverMultilink=null,this.downProperty.lazyLink(e=>{e?t.startCallback():t.endCallback(this.looksOverProperty.get())}),this.enabledProperty.link(e=>{if(!e)for(let t=0;t{this.overProperty.dispose(),this.downProperty.dispose(),this.produceSoundEmitter.dispose(),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose(),this.listeners=[]}}dispose(){this.disposeButtonModel(),super.dispose()}createPressListener(e){var t=this;e=(0,N.JA)({canStartPress:()=>this.enabledProperty.value},e);const i=new R.$o8(e);this.listeners.push(i),i.isPressedProperty.lazyLink(e=>{this.interrupted=i.interrupted,this.downProperty.set(e)}),i.isOverProperty.lazyLink(this.overProperty.set.bind(this.overProperty)),i.isFocusedProperty.lazyLink(this.focusedProperty.set.bind(this.focusedProperty)),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose();const s=this.listeners.map(e=>e.looksPressedProperty);s.push(this.downProperty),this.looksPressedMultilink=Ze.Z.multilinkAny(s,(function(){for(var e=arguments.length,i=new Array(e),s=0;se||t,!1)}));const n=this.listeners.map(e=>e.looksOverProperty);return this.looksOverMultilink=Ze.Z.multilinkAny(n,(function(){for(var e=arguments.length,i=new Array(e),s=0;se||t,!1)})),i}}Je.register("ButtonModel",ii);class si extends ii{constructor(e){const t=(0,N.ZP)()({fireOnDown:!1,listener:null,fireOnHold:!1,fireOnHoldDelay:400,fireOnHoldInterval:100,tandem:ye.Z.REQUIRED,phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly},e);super(t),this.isFiringProperty=new se.Z(!1),this.firedEmitter=new $t.Z({tandem:t.tandem.createTandem("firedEmitter"),phetioDocumentation:"Emits when the button is fired",phetioReadOnly:t.phetioReadOnly,phetioEventType:ei.Z.USER}),null!==t.listener&&this.firedEmitter.addListener(t.listener),t.fireOnHold&&(this.timer=new _t.Z({callback:this.fire.bind(this),delay:t.fireOnHoldDelay,interval:t.fireOnHoldInterval}));const i=e=>{if(e)this.enabledProperty.get()&&(t.fireOnDown&&this.fire(),this.timer&&this.timer.start(),(t.fireOnDown||this.timer)&&this.produceSoundEmitter.emit());else{const e=!t.fireOnDown&&(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted;this.timer?this.timer.stop(e):e&&(this.produceSoundEmitter.emit(),this.fire())}};this.downProperty.link(i);const s=e=>{!e&&this.timer&&this.timer.stop(!1)};this.enabledProperty.link(s),this.disposePushButtonModel=()=>{this.isFiringProperty.value=!1,this.isFiringProperty.dispose(),this.firedEmitter.dispose(),this.downProperty.unlink(i),this.enabledProperty.unlink(s),this.timer&&(this.timer.dispose(),this.timer=null)}}dispose(){this.disposePushButtonModel(),super.dispose()}addListener(e){this.firedEmitter.addListener(e)}removeListener(e){this.firedEmitter.removeListener(e)}fire(){this.isFiringProperty.value=!0,this.firedEmitter.emit(),this.isFiringProperty.value=!1}}Je.register("PushButtonModel",si);var ni=i(6243);const ri={LIGHT_BLUE:new R.Ilk(153,206,255),LIGHT_GRAY:new R.Ilk(220,220,220)},oi=new R.mnm(.7),ai=new R.UlH(1.2);class hi extends((0,R.tTM)((0,R.CHP)(R.NBX))){constructor(e,t,i,s){const n=(0,N.ZP)()({content:null,minUnstrokedWidth:null,minUnstrokedHeight:null,xMargin:10,yMargin:5,xAlign:"center",yAlign:"center",xContentOffset:0,yContentOffset:0,baseColor:ri.LIGHT_BLUE,cursor:"pointer",buttonAppearanceStrategy:hi.FlatAppearanceStrategy,buttonAppearanceStrategyOptions:{},contentAppearanceStrategy:null,contentAppearanceStrategyOptions:{},enabledAppearanceStrategy:(e,t,i,s)=>{i.filters=e?[]:[oi,ai],s&&(s.filters=e?[]:[R.P5k.FULL],s.opacity=e?1:R.iaM.DISABLED_OPACITY)},disabledColor:ri.LIGHT_GRAY,tagName:"button",tandem:ye.Z.OPTIONAL,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s);n.listenerOptions=(0,N.JA)({tandem:n.tandem.createTandem("pressListener")},n.listenerOptions),n.enabledProperty=e.enabledProperty,super(),_defineProperty(this,"buttonNodeConstraint",null),this.content=n.content,this.buttonModel=e,this._settableBaseColorProperty=new R.M4p(n.baseColor),this._disabledColorProperty=new R.M4p(n.disabledColor),this.baseColorProperty=new me.ZP([this._settableBaseColorProperty,this.enabledProperty,this._disabledColorProperty],(e,t,i)=>t?e:i),this._pressListener=e.createPressListener(n.listenerOptions),this.addInputListener(this._pressListener),t.fill=this.baseColorProperty,this.addChild(t);const r=new n.buttonAppearanceStrategy(t,i,this.baseColorProperty,n.buttonAppearanceStrategyOptions);let o;n.contentAppearanceStrategy&&n.content&&(o=new n.contentAppearanceStrategy(n.content,i,n.contentAppearanceStrategyOptions)),this.maxLineWidth=r.maxLineWidth;let a=null,h=null;if(n.content){const e=n.content;e.pickable=!1,this.buttonNodeConstraint=new li(this,{content:n.content,xMargin:n.xMargin,yMargin:n.yMargin,maxLineWidth:this.maxLineWidth,minUnstrokedWidth:n.minUnstrokedWidth,minUnstrokedHeight:n.minUnstrokedHeight}),this.layoutSizeProperty=this.buttonNodeConstraint.layoutSizeProperty,a=new R.DbO(e,{xAlign:n.xAlign,yAlign:n.yAlign,leftMargin:n.xMargin+n.xContentOffset,rightMargin:n.xMargin-n.xContentOffset,topMargin:n.yMargin+n.yContentOffset,bottomMargin:n.yMargin-n.yContentOffset}),h=Ze.Z.multilink([t.boundsProperty,this.layoutSizeProperty],(e,t)=>{a.alignBounds=vt.Z.point(e.center).dilatedXY(t.width/2,t.height/2)}),this.addChild(a)}else this.layoutSizeProperty=new F.Z(new ni.Z(n.minUnstrokedWidth+this.maxLineWidth,n.minUnstrokedHeight+this.maxLineWidth));this.mutate(n),this.enabledProperty.link(e=>n.enabledAppearanceStrategy(e,this,t,a)),this.disposeButtonNode=()=>{a&&a.dispose(),h&&h.dispose(),r.dispose&&r.dispose(),o&&o.dispose&&o.dispose(),this._pressListener.dispose(),this.baseColorProperty.dispose()}}dispose(){this.buttonNodeConstraint&&this.buttonNodeConstraint.dispose(),this.disposeButtonNode(),super.dispose()}setBaseColor(e){this._settableBaseColorProperty.paint=e}set baseColor(e){this.setBaseColor(e)}get baseColor(){return this.getBaseColor()}getBaseColor(){return this._settableBaseColorProperty.paint}pdomClick(){this._pressListener.click(null)}isPDOMClicking(){return this._pressListener.pdomClickingProperty.get()}}class li extends R.dmK{constructor(e,t){super(e),_defineProperty(this,"layoutSizeProperty",new F.Z(new ni.Z(0,0))),_defineProperty(this,"isFirstLayout",!0),_defineProperty(this,"localPreferredWidth",0),_defineProperty(this,"localPreferredHeight",0),this.buttonNode=e,this.content=t.content,this.xMargin=t.xMargin,this.yMargin=t.yMargin,this.maxLineWidth=t.maxLineWidth,this.minUnstrokedWidth=t.minUnstrokedWidth,this.minUnstrokedHeight=t.minUnstrokedHeight,this.buttonNode.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.addNode(this.content,!1),this.layout()}layout(){super.layout();const e=this.buttonNode,t=this.content,i=Math.max(this.isFirstLayout||e.widthSizable?((0,R.S3T)(t)?t.minimumWidth||0:t.width)+2*this.xMargin:e.localMinimumWidth,null===this.minUnstrokedWidth?0:this.minUnstrokedWidth+this.maxLineWidth),s=Math.max(this.isFirstLayout||e.heightSizable?((0,R.fJO)(t)?t.minimumHeight||0:t.height)+2*this.yMargin:e.localMinimumHeight,null===this.minUnstrokedHeight?0:this.minUnstrokedHeight+this.maxLineWidth);this.localPreferredWidth=this.isFirstLayout||(0,R.S3T)(e)?null===e.localPreferredWidth?i:e.localPreferredWidth:this.localPreferredWidth,this.localPreferredHeight=this.isFirstLayout||(0,R.fJO)(e)?null===e.localPreferredHeight?s:e.localPreferredHeight:this.localPreferredHeight,this.isFirstLayout=!1,this.layoutSizeProperty.value=new ni.Z(this.localPreferredWidth,this.localPreferredHeight),e.localMinimumWidth=i,e.localMinimumHeight=s}dispose(){this.buttonNode.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}}hi.FlatAppearanceStrategy=class{constructor(e,t,i,s){const n=new R.M4p(i,{luminanceFactor:.4}),r=new R.M4p(i,{luminanceFactor:-.4}),o=i,a=n,h=r,l=(0,N.JA)({stroke:r},s),d="number"==typeof l.lineWidth?l.lineWidth:1;function c(t){switch(t){case Jt.IDLE:e.fill=o;break;case Jt.OVER:e.fill=a;break;case Jt.PRESSED:e.fill=h;break;default:throw new Error("unsupported interactionState: "+t)}}e.stroke=l.stroke||r,e.lineWidth=d,this.maxLineWidth=e.hasStroke()?d:0,e.cachedPaints=[o,a,h],t.link(c),this.disposeFlatAppearanceStrategy=()=>{t.hasListener(c)&&t.unlink(c),n.dispose(),r.dispose()}}dispose(){this.disposeFlatAppearanceStrategy()}},Je.register("ButtonNode",hi);class di extends hi{constructor(e,t,i){const s=(0,N.ZP)()({size:null,minWidth:10,minHeight:10,xMargin:8,yMargin:5,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,stroke:null,lineWidth:.5,cornerRadius:4,leftTopCornerRadius:null,rightTopCornerRadius:null,leftBottomCornerRadius:null,rightBottomCornerRadius:null,buttonAppearanceStrategy:di.ThreeDAppearanceStrategy},i);let n,r;s.content,s.size?(s.minUnstrokedWidth=s.size.width,s.minUnstrokedHeight=s.size.height):(void 0!==s.minWidth&&(s.minUnstrokedWidth=s.minWidth),void 0!==s.minHeight&&(s.minUnstrokedHeight=s.minHeight)),s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth}),s.size?(n=s.size.width,r=s.size.height):(n=Math.max(s.content?s.content.width+2*s.xMargin:0,s.minWidth),r=Math.max(s.content?s.content.height+2*s.yMargin:0,s.minHeight));const o=new R.y$t(ci(n,r,s));if(s.size&&s.content){const e=s.content,t=Math.min((s.size.width-2*s.xMargin)/e.width,(s.size.height-2*s.yMargin)/e.height);s.content=new R.NBX({children:[e],scale:t})}super(e,o,t,s);let a=!0;Ze.Z.multilink([this.isWidthResizableProperty,this.isHeightResizableProperty,this.layoutSizeProperty],(e,t,i)=>{(e||t)&&(o.shape=ci(e?i.width-this.maxLineWidth:n,t?i.height-this.maxLineWidth:r,s)),(a||e||t)&&(this.touchArea=o.localBounds.dilatedXY(s.touchAreaXDilation,s.touchAreaYDilation).shiftedXY(s.touchAreaXShift,s.touchAreaYShift),this.mouseArea=o.localBounds.dilatedXY(s.mouseAreaXDilation,s.mouseAreaYDilation).shiftedXY(s.mouseAreaXShift,s.mouseAreaYShift)),a=!1})}}function ci(e,t,i){const s=Math.min(e/2,t/2);return Nt.bn.roundedRectangleWithRadii(0,0,e,t,{topLeft:Math.min(s,null!==i.leftTopCornerRadius?i.leftTopCornerRadius:i.cornerRadius),topRight:Math.min(s,null!==i.rightTopCornerRadius?i.rightTopCornerRadius:i.cornerRadius),bottomLeft:Math.min(s,null!==i.leftBottomCornerRadius?i.leftBottomCornerRadius:i.cornerRadius),bottomRight:Math.min(s,null!==i.rightBottomCornerRadius?i.rightBottomCornerRadius:i.cornerRadius)})}di.ThreeDAppearanceStrategy=class{constructor(e,t,i,s){const n=s&&s.stroke?s.stroke:new R.M4p(i,{luminanceFactor:-.4}),r=s&&void 0!==s.lineWidth?s.lineWidth:.5,o=(0,N.ZP)()({stroke:n,lineWidth:r,overStroke:n,overLineWidth:r,overFill:i,overButtonOpacity:1,selectedStroke:n,selectedLineWidth:r,selectedButtonOpacity:1,deselectedStroke:n,deselectedLineWidth:r,deselectedButtonOpacity:1},s),a=new R.M4p(i,{luminanceFactor:.7}),h=new R.M4p(i,{luminanceFactor:.5}),l=new R.M4p(i,{luminanceFactor:.2}),d=new R.M4p(i,{luminanceFactor:-.3}),c=new R.M4p(i,{luminanceFactor:-.4}),u=new R.M4p(i,{luminanceFactor:-.5}),p=new me.ZP([i],e=>e.withAlpha(0)),m=new R.Ilk(255,255,255,.7),g=new R.y$t(null,{stroke:o.stroke,lineWidth:o.lineWidth,pickable:!1});let y;e.addChild(g),this.maxLineWidth="number"==typeof o.lineWidth?o.lineWidth:0;const A=()=>{const s=e.shape.bounds.width,n=e.shape.bounds.height;g.shape=e.shape;const r=Math.min(7/n,1),c=Math.max(1-3/n,0),A=Math.min(7/s,1),f=Math.max(1-3/s,0),P=new R.oas(0,0,0,n).addColorStop(0,a).addColorStop(r,i).addColorStop(c,i).addColorStop(1,u),b=new R.oas(0,0,s,0).addColorStop(0,m).addColorStop(A,p).addColorStop(f,p).addColorStop(1,u),E=new R.oas(0,0,0,n).addColorStop(0,a).addColorStop(r,h).addColorStop(c,h).addColorStop(1,u),v=new R.oas(0,0,s,0).addColorStop(0,m).addColorStop(A/2,new R.Ilk(255,255,255,0)).addColorStop(f,p).addColorStop(1,d),w=new R.oas(0,0,0,n).addColorStop(0,a).addColorStop(.67*r,d).addColorStop(c,l).addColorStop(1,u);e.cachedPaints=[P,E,w],g.cachedPaints=[b,v],y&&t.unlink(y),y=t=>{switch(t){case Jt.IDLE:e.fill=P,e.stroke=o.deselectedStroke,e.lineWidth=o.deselectedLineWidth,e.opacity=o.deselectedButtonOpacity,g.fill=b,g.opacity=o.deselectedButtonOpacity;break;case Jt.OVER:e.fill=E,e.stroke=o.overStroke,e.lineWidth=o.overLineWidth,e.opacity=o.overButtonOpacity,g.fill=v,g.opacity=o.overButtonOpacity;break;case Jt.PRESSED:e.fill=w,e.stroke=o.selectedStroke,e.lineWidth=o.selectedLineWidth,e.opacity=o.selectedButtonOpacity,g.fill=v,g.opacity=o.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}},t.link(y)};e.selfBoundsProperty.link(A),this.disposeThreeDAppearanceStrategy=()=>{e.selfBoundsProperty.unlink(A),t.hasListener(y)&&t.unlink(y),a.dispose(),h.dispose(),l.dispose(),d.dispose(),c.dispose(),u.dispose(),p.dispose()}}dispose(){this.disposeThreeDAppearanceStrategy()}},Je.register("RectangularButton",di);class ui extends di{constructor(e){const t=(0,N.ZP)()({soundPlayer:Kt,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},e),i=t.listener,s=_.omit(t,["listener"]),n=new si(s);super(n,new jt(n),s),this.pushButtonModel=n,i&&this.addListener(i);const r=()=>{t.soundPlayer.play()};n.produceSoundEmitter.addListener(r),this.disposeRectangularPushButton=function(){n.produceSoundEmitter.removeListener(r),n.dispose()}}dispose(){super.dispose(),this.disposeRectangularPushButton()}addListener(e){this.pushButtonModel.addListener(e)}removeListener(e){this.pushButtonModel.removeListener(e)}}Je.register("RectangularPushButton",ui);const pi=new R.Ilk(0,200,0),mi=new R.Ilk(255,85,0),gi=new R.Ilk(0,135,0),yi=new R.Ilk(106,206,245),Ai=new R.Ilk(254,225,5),fi={ACCELERATION:new R.Ilk(255,255,50),APPLIED_FORCE:new R.Ilk(236,153,55),BUTTON_YELLOW:Ai,ELASTIC_POTENTIAL_ENERGY:new R.Ilk(0,204,255),FRICTION_FORCE:mi,GRAVITATIONAL_FORCE:new R.Ilk(50,130,215),GRAVITATIONAL_POTENTIAL_ENERGY:new R.Ilk(55,130,215),HEAT_THERMAL_ENERGY:mi,IMAGINARY_PART:new R.Ilk(153,51,102),KINETIC_ENERGY:new R.Ilk(30,200,45),MOMENTUM:new R.Ilk(50,50,255),NET_WORK:pi,NORMAL_FORCE:new R.Ilk(255,235,0),PHET_LOGO_BLUE:yi,PHET_LOGO_YELLOW:Ai,POSITION:R.Ilk.BLUE,REAL_PART:new R.Ilk(255,153,0),RED_COLORBLIND:mi,RESET_ALL_BUTTON_BASE_COLOR:new R.Ilk(247,151,34),GREEN_COLORBLIND:gi,TOTAL_ENERGY:new R.Ilk(180,180,0),TOTAL_FORCE:pi,VELOCITY:new R.Ilk(50,255,50),WALL_FORCE:new R.Ilk(153,51,0),SCREEN_ICON_FRAME:"#dddddd"};ft.register("PhetColorScheme",fi);const Pi=fi;class bi extends ui{constructor(e){const t=(0,N.ZP)()({iconLength:16,pathOptions:{stroke:"white",lineWidth:2.5,lineCap:"round"},baseColor:Pi.RED_COLORBLIND,xMargin:4,yMargin:4,innerContent:St.a11y.closeStringProperty,voicingNameResponse:St.a11y.closeStringProperty},e),i=(new Nt.bn).moveTo(-t.iconLength/2,-t.iconLength/2).lineTo(t.iconLength/2,t.iconLength/2).moveTo(t.iconLength/2,-t.iconLength/2).lineTo(-t.iconLength/2,t.iconLength/2);t.content=new R.y$t(i,t.pathOptions),super(t)}}ft.register("CloseButton",bi);const Ei="data:audio/mpeg;base64,//swxAAAB5gnMzRhAAEHDWyDNLAAAAAaAQAu7tjAQAAABgMBgNNiBBAWD7ykMQf1g+D5/qBMHwfB/iAEPWCDv+o5wfPg+8EAQBMHz6gQB8Hwfsu2uWDrkw/a9xgUaMwFxxwCLsWS7MHN7VJki8fVT75eTqpn7/Xt1QxW//lJVbnfNuFRTzwrLn/5GVBnKMy/FVs5dTYABARKCMRm//syxAQACHBHWZ2kAAEJi+jxpg1Qlry2AYclVGyMwNoFJ29hqHqa1TRqRMCoetKstcqUzHBxQdCJmVcSJ/EQdEo0FXSoNLGkav/ljqPtEvjAoAE0zuEoM3lMJlLY3Uj65AMeMzQN6QWeLFdCcxLNFy4dBVXVfZ1L+gIki4KPQVBb4dERU6CrsFSoaLVHv/Ev9Hw4ANdAAG7VBBhVdP/7MsQFAAh8YybVowABG49vdx6AAm8ODBg8FDy9pmwIBsHPVGiPMueyERxZdIFnSpkzI8fezb+0z6OJVv7HHw7XBWdXwa6/y34l6sq7uitTjFTEgsFYrFQqFQDAGrQXMbpbb3ZGQWPWvTnyyeKKHgQ/nvlUf/u74oOHp/8v3R/dl/UcSXDz+kMBEHI0p5efiDJqb/64foFiBSWqB2r/+zLEA4AIVDlivZGAAQePKiWmDNhtwTYmBYyxnJdmZwmMtZ8ZjInEMMpo+VFWESqmhsWBoClhKKEhCW5UNPCsFVgqImyWS6KTAhEUrYoO7kaAWIJCwQzbgl5XrFBB27xoQwfnY6kozJtFz0SgICsWM3VIKWs6qr0tgI15/pQomHhblqjycRUCWe1dUOpxFOiJ/ooQC+IEEBlVdh0r//swxAUACGCjMy0kSsDoiCAA95gpQaBI041ceup5PSlsv5QNXMyixFLVkTXWpYUBYy/lEl4YCdWlLoZ//zGlKUBEhV0SiFT+us7WdBXqAbQ2hdxgDfH4RQsI+kgo2RnWVECiCa0TrUSNjalrUVVKyg0yapYqqVlRTNVLFf/2P/1qVadsTFKlitVMQU1FMy45OS4zVVVVVVVVVVVV",vi=q(W,Ei),wi=Z.Z.createLock(Ei),Vi=new U;let Si=!1;const Ti=()=>{Si||(wi(),Si=!0)},Ci=W.decodeAudioData(vi.buffer,e=>{null===Vi.audioBufferProperty.value&&(Vi.audioBufferProperty.set(e),Ti())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),Vi.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Ti()});Ci&&Ci.then(e=>{null===Vi.audioBufferProperty.value&&(Vi.audioBufferProperty.set(e),Ti())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Ti()});const Ii=new Qt(Vi,{soundClipOptions:{initialOutputLevel:.4},soundManagerOptions:{categoryName:"user-interface"}});H.register("generalCloseSoundPlayer",Ii);const xi=Ii,ki="data:audio/mpeg;base64,//swxAAABswbPzQxABEQFyzDMlAAAAGoGRIdz0AAARQAAAAAMCd5QEAxBA4sPlz/BAMfw+ooc8EA/EAYKAh/qBBYfwfD4jB/4nD98ZXetEKIxIqnuursF7pTGkY4dNYcaZhOjzgxDNndb75ggdCsIvV3qoeM9HIX215a6Hftuc5FhwFRhvuJuhxbMPp+ir0KlAaCTHVtZuCsLISS//syxAYACGhJXR2jABEVIGmw8YpieZwGg6y5/p6bf69uls4kMS9HVvrXl8hI5WPBY8FawqGh3PYlLA0HQm6ZHvUe/4UB4ChNzls1AZIAAxJNQMBOy4KAeSsL0QgRcxFInzpyhsQ6tvdvaM160ZnbY/2bY19dTlJVJmhrQpT/Vf0eVjfzG////6PMYzmtqJdg0WqADvRwaGDBgBO5T//7MsQFgAkEZSA1swABDRYvdx5QAhmAEZHdFc2HHLBy/LcmfqWvq1yftVsQSJAxzSi25i5w6qqvMy/cjgNSoKu2Q1LHp1S4NCJQsHfLUSINPxK6oxocyIhmMRkMhQAQBuyhLerW2u5zoV4af2nULcHzwOiPxQjFU/nvIyflMKARabfnQqGI/v/FAIV6UJnPAgAca//9NZUgFEnVWuP/+zLEA4AIVL1vnYQAEQkIajDMpMja7T9a7DL+uzSEg2RRajlNmUzFPCBtL7Uyoa/iVlabnj1+Pi9f61X5WuJ9V1XhkOmtYltLGPI1//8s/0PMAKmLuWQPy0Hrh0Uy4C5MCaWoC5bwOjrQpVOQIn9JNDksr2zEBLvAp3LCI8Is9BX1FTsS50j5Us8OCIqEg73ZZ9QByyIAiddlUPU0//swxAUCSEyXLMywatDDBOHA8zBIRfBtlFDU3P7EItHsWE51WgaTVpJLPMzOMYE1qUSth4pRSd1WkZLqqrnGPUobBm4oDUDHol//+rJBUlwL0rYuAoOSuFITEsfTp5a46IhKRBQ6FQkBQCWJESR0KhIeNASKGnsJgJCf///1VUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVV",Bi=q(W,ki),Mi=Z.Z.createLock(ki),Di=new U;let Oi=!1;const Li=()=>{Oi||(Mi(),Oi=!0)},Ri=W.decodeAudioData(Bi.buffer,e=>{null===Di.audioBufferProperty.value&&(Di.audioBufferProperty.set(e),Li())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),Di.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Li()});Ri&&Ri.then(e=>{null===Di.audioBufferProperty.value&&(Di.audioBufferProperty.set(e),Li())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Li()});const Ni=new Qt(Di,{soundClipOptions:{initialOutputLevel:.4},soundManagerOptions:{categoryName:"user-interface"}});H.register("generalOpenSoundPlayer",Ni);const Zi=Ni;const qi=new class{play(){}stop(){}};H.register("nullSoundPlayer",qi);const Fi=qi;var Yi=i(4974),Hi=i(3600);const Gi=new Hi.Z("DynamicMarkerIO",{supertype:Hi.Z.ObjectIO,applyState:_.noop,toStateObject:()=>({}),isValidValue:_.stubTrue,documentation:"IO Type used as a place holder for dynamic elements to be created when set for state."});Yi.Z.register("DynamicMarkerIO",Gi);const Ui=Gi;var zi=i(428);const Wi={fill:"white",stroke:"black",lineWidth:1,lineDash:[],xMargin:5,yMargin:5,cornerRadius:10,resize:!0,backgroundPickable:!0,excludeInvisibleChildrenFromBounds:!0,align:"left",minWidth:0,minHeight:0,tandem:ye.Z.OPTIONAL};class Qi extends((0,R.tTM)(R.NBX)){constructor(e,t){const i=(0,N.lB)()({},Wi,t);super(),this._content=e,this._backgroundContainer=new R.NBX,this._background=new R.AeJ(0,0,1,1,{lineWidth:i.lineWidth,pickable:i.backgroundPickable,lineDash:i.lineDash,cornerRadius:i.cornerRadius}),this.setStroke(i.stroke),this.setFill(i.fill),this.addChild(this._backgroundContainer),this.addChild(e),this.constraint=new Xi(this,i),this.constraint.updateLayout(),this.constraint.enabled=i.resize,this.mutate(i)}getStroke(){return this._background.stroke}get stroke(){return this.getStroke()}set stroke(e){this.setStroke(e)}setStroke(e){this._background.stroke=e,this.constraint&&this.constraint.updateLayoutAutomatically()}getFill(){return this._background.fill}get fill(){return this.getFill()}set fill(e){this.setFill(e)}setFill(e){this._background.fill=e}setExcludeInvisibleChildrenFromBounds(e){super.setExcludeInvisibleChildrenFromBounds(e),this.constraint.updateLayoutAutomatically()}dispose(){this.constraint.dispose(),super.dispose()}}_defineProperty(Qi,"DEFAULT_PANEL_OPTIONS",Wi);class Xi extends R.dmK{constructor(e,t){super(e),this.panel=e,this.minWidth=t.minWidth,this.minHeight=t.minHeight,this.xMargin=t.xMargin,this.yMargin=t.yMargin,this.lineWidth=t.lineWidth,this.align=t.align,this.panel.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.addNode(e._content)}layout(){super.layout();const e=this.panel,t=e._content,i=e._background,s=null===e.stroke?0:this.lineWidth,n=e.isChildIncludedInLayout(t);if(e._backgroundContainer.children=n?[i]:[],!n)return e.localMinimumWidth=null,void(e.localMinimumHeight=null);const r=(0,R.S3T)(t)&&null!==t.minimumWidth?t.minimumWidth:t.width,o=(0,R.fJO)(t)&&null!==t.minimumHeight?t.minimumHeight:t.height,a=Math.max(this.minWidth,r+2*this.xMargin)+s,h=Math.max(this.minHeight,o+2*this.yMargin)+s,l=null===e.localPreferredWidth?a:e.localPreferredWidth,d=null===e.localPreferredHeight?h:e.localPreferredHeight;(0,R.S3T)(t)&&null!==e.localPreferredWidth&&(t.preferredWidth=l-s-2*this.xMargin),(0,R.fJO)(t)&&null!==e.localPreferredHeight&&(t.preferredHeight=d-s-2*this.yMargin),i.setRect(0,0,l-s,d-s),"center"===this.align?t.center=i.center:"left"===this.align?(t.left=i.centerX-i.rectWidth/2+this.xMargin,t.centerY=i.centerY):(t.right=i.centerX+i.rectWidth/2-this.xMargin,t.centerY=i.centerY),e.localMinimumWidth=a,e.localMinimumHeight=h}dispose(){this.panel.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}}Je.register("Panel",Qi);const Ki=e=>{const t=e.split("."),i=t.pop(),s=_.get(window,t);return s?s[i].bind(s):null};Qe.Z.register("gracefulBind",Ki);const Ji=Ki,ji=(e,t)=>class extends e{constructor(){for(var e=arguments.length,i=new Array(e),s=0;s{e?a.showPopup(this.popupParent,a.isModal):a.hidePopup(this.popupParent,a.isModal)})}layout(e){this.layoutBounds&&(this.popupParent.matrix=Ot.getLayoutMatrix(this.layoutBounds,e))}show(){this._nodeToFocusOnHide=this._focusOnHideNode||R.IKS.pdomFocusedNode,this.isShowingProperty.value=!0,this._focusOnShowNode&&this._focusOnShowNode.focusable&&this._focusOnShowNode.focus()}hide(){this.interruptSubtreeInput(),this.isShowingProperty.value=!1,this._nodeToFocusOnHide&&this._nodeToFocusOnHide.focusable&&this._nodeToFocusOnHide.focus()}dispose(){this.hide(),this.isShowingProperty.dispose(),super.dispose()}};class _i extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({children:[e]},t);super(i),this.show=i.show,this.hide=i.hide,this.layout=i.layout}}Je.register("Popupable",ji);const $i=ji,es=(0,st.Z)("SUN");Je.register("SunStrings",es);const ts=es;var is=i(5264),ss=i(2643);const ns=e=>""+e;class rs extends me.ZP{constructor(e,t,i){const s=(0,N.ZP)()({formatNames:[],decimalPlaces:null,phetioValueType:ss.Z},i),n=[e],r={},o=Object.keys(t);o.forEach(e=>{const i=t[e];(i instanceof is.Z||i instanceof F.Z)&&n.push(i);let o=ns;if(null!==s.decimalPlaces&&("number"==typeof s.decimalPlaces||null!==s.decimalPlaces[e])){const t="number"==typeof s.decimalPlaces||null===s.decimalPlaces?s.decimalPlaces:s.decimalPlaces[e];o=e=>ns("number"==typeof e?Ve.Z.toFixed(e,t):e)}s.maps&&s.maps.hasOwnProperty(e)?r[e]=t=>o(s.maps[e](t)):r[e]=o}),super(n,(function(){for(var i=arguments.length,a=new Array(i),h=0;h{const t=n.indexOf(e);return t>=0?a[t]:e};let d=""+l(e);s.formatNames.forEach((e,t)=>{d=d.replace(new RegExp(`\\{${t}\\}`,"g"),`{{${e}}}`)});const c=d.match(/\{\{[^{}]+\}\}/g)||[];for(let e=0;ethis.hide(),closeButtonColor:"black",closeButtonTouchAreaXDilation:0,closeButtonTouchAreaYDilation:0,closeButtonMouseAreaXDilation:0,closeButtonMouseAreaYDilation:0,closeButtonVoicingDialogTitle:null,closeButtonLastInPDOM:!1,openedSoundPlayer:Zi,closedSoundPlayer:xi,sim:Rt("phet.joist.sim"),showCallback:null,hideCallback:null,layoutBounds:Ot.DEFAULT_LAYOUT_BOUNDS,focusOnShowNode:null,cornerRadius:10,resize:!0,fill:"white",stroke:"black",backgroundPickable:!0,maxHeight:null,maxWidth:null,tandem:ye.Z.OPTIONAL,phetioType:os.DialogIO,phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioState:Se.Z.DEFAULT_OPTIONS.phetioState,visiblePropertyOptions:{phetioReadOnly:!0},tagName:"div",ariaRole:"dialog"},t);i.xMargin=0,i.yMargin=0,null===i.leftMargin&&(i.leftMargin=i.xSpacing+i.closeButtonLength+i.closeButtonRightMargin),!i.maxWidth&&i.layoutBounds&&(i.maxWidth=hs(i.layoutBounds.width,i.maxWidthMargin)),!i.maxHeight&&i.layoutBounds&&(i.maxHeight=hs(i.layoutBounds.height,i.maxHeightMargin));const s=new zi.Z({priority:zi.Z.MEDIUM_PRIORITY,voicingCanAnnounceProperties:[R.LY3.voicingFullyEnabledProperty]}),n=new bi({iconLength:i.closeButtonLength,baseColor:"transparent",buttonAppearanceStrategy:hi.FlatAppearanceStrategy,xMargin:0,yMargin:0,listener:()=>{n.voicingSpeakContextResponse({utterance:s}),i.closeButtonListener()},pathOptions:{stroke:i.closeButtonColor},tandem:i.tandem.createTandem("closeButton"),phetioReadOnly:i.phetioReadOnly,phetioState:!1,visiblePropertyOptions:{phetioFeatured:!1,phetioState:!1},enabledPropertyOptions:{phetioFeatured:!1},soundPlayer:Fi,tagName:"button",innerContent:ts.a11y.closeStringProperty,voicingContextResponse:ts.a11y.closedStringProperty});let r;if(i.closeButtonVoicingDialogTitle){const e="string"==typeof i.closeButtonVoicingDialogTitle?new F.Z(i.closeButtonVoicingDialogTitle):i.closeButtonVoicingDialogTitle;r=n.voicingNameResponse=new rs(ts.a11y.titleClosePatternStringProperty,{title:e})}n.touchArea=n.bounds.dilatedXY(i.closeButtonTouchAreaXDilation,i.closeButtonTouchAreaYDilation),n.mouseArea=n.bounds.dilatedXY(i.closeButtonMouseAreaXDilation,i.closeButtonMouseAreaYDilation);let o=[i.title,e];i.closeButtonLastInPDOM?o.push(n):o.unshift(n),o=o.filter(e=>null!=e),i.focusOnShowNode=i.focusOnShowNode?i.focusOnShowNode:o[0].focusable?o[0]:n;const a=new R.SHm({children:i.title?[i.title,e]:[e],spacing:i.ySpacing,align:i.titleAlign}),h=new R.DbO(a,{topMargin:i.topMargin,bottomMargin:i.bottomMargin,leftMargin:i.leftMargin}),l=new R.DbO(n,{topMargin:i.closeButtonTopMargin,rightMargin:i.closeButtonRightMargin}),d=new R.BET({children:[h,l],spacing:i.xSpacing,align:"top"});super(d,i),this.isShowingProperty.lazyLink(e=>{e?(i.openedSoundPlayer.play(),i.showCallback&&i.showCallback()):(i.closedSoundPlayer.play(),i.hideCallback&&i.hideCallback())}),this.sim=i.sim,this.closeButton=n;const c=Ze.Z.multilink([this.sim.boundsProperty,this.sim.screenBoundsProperty,this.sim.scaleProperty,this.sim.selectedScreenProperty,this.isShowingProperty,this.localBoundsProperty],(e,t,s)=>{e&&t&&s&&i.layoutStrategy(this,e,t,s)});this.pdomOrder=o,i.title&&i.title.tagName&&i.addAriaLabelledByFromTitle&&this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:i.title,otherElementName:R.Grz.PRIMARY_SIBLING});const u={keydown:e=>{const t=e.domEvent;if(R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_ESCAPE))t.preventDefault(),this.hide();else if(R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_TAB)&&R.ITT.isFullScreen()){const e=R.IKS.pdomFocus.trail.getUniqueId(),i=R.eDZ.getNextFocusable().id===e,s=R.eDZ.getPreviousFocusable().id===e;i&&s&&t.preventDefault()}}};this.addInputListener(u),this.disposeDialog=()=>{c.dispose(),l.dispose(),this.removeInputListener(u),r&&r.dispose(),n.dispose(),a.dispose(),d.removeAllChildren(),d.detach()}}dispose(){this.disposeDialog(),super.dispose()}}function as(e,t,i,s){e.layoutBounds&&(e.center=e.layoutBounds.center)}function hs(e,t){return e>2*t?e-2*t:e}r=os,_defineProperty(os,"DialogIO",new Hi.Z("DialogIO",{valueType:r,supertype:Ui})),Je.register("Dialog",os);var ls=i(7055);class ds extends R.zch{constructor(e){const t=(0,N.ZP)()({headingControl:!1,labelSpacing:10,valueLabelXSpacing:8,ySpacing:5,nestedContent:[],grow:1,layoutOptions:{stretch:!(null!=e&&e.headingControl)}},e);super(t),t.controlNode&&(this.enabledProperty.link(e=>{t.controlNode.enabled=e}),t.controlNode.layoutOptions={row:0,column:1,xAlign:"right"},this.addChild(t.controlNode)),t.labelNode&&(t.labelNode.layoutOptions={row:0,column:0,xAlign:"left",rightMargin:t.labelSpacing},this.addChild(t.labelNode)),t.descriptionNode&&t.labelNode?(t.descriptionNode.layoutOptions={row:1,column:0,horizontalSpan:2,xAlign:"left"},this.addChild(t.descriptionNode)):t.descriptionNode&&(t.descriptionNode.layoutOptions={row:0,column:0,xAlign:"left"},this.addChild(t.descriptionNode)),this.disabledOpacity=R.iaM.DISABLED_OPACITY}}Bt.Z.register("PreferencesControl",ds);const cs=ds;var us=i(831),ps=i(5281),ms=i(7959);const gs=new Nt.bn("M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z").makeImmutable(),ys=new Nt.bn("M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z").makeImmutable(),As="data:audio/mpeg;base64,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VxjMbjCAqV6+9lyLbLv3a0X6ESHnjmkrTgX6ewW628bWpy6aAAAEIBKAAYVGgQJzEA7MHBAeERhQBG6YsEF4lDMeEoCAUYKgI6ZVAYEguZjC2ZGtMcWpghOAQLKNr1LwVPu2Wuurc61Zm1tOXWe/o1tDZJ5cXoLq47k/vbkMSqQ57UHqbUISVThclJqqsAa1V3dqUsXjENcTVSBUCQHmLDZKQCFtO+lwC+DVGKFZhA8Ck5ACX2THBAR54Dl4c+jQuNtZdZ7rPuOGX//7cMTJAk6AYtSvdwcB3graIe684Jd3Kc5TLcMqa1j+V2z++ZfljKYdvVqa/VlNNTWpkJR7VjzOVVd5NBQlGc8z5NIkUcNIozLbzkcqq84/8kUcf1PnK74dLEkq30DAFGtNIonJMclvNIy5wMFJGkUZk4lppFE4ldVr+qreaiclZEjO/scSJEtxTEFNRTMuOTguM6qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCQACQKKEgQswmgpKTiyiyizTjSizDzDy2eLzc/ypo0osoCEihIoDEA5BDcqWco0FBgUUBgQsQLAzjSizDzDy2drzcqpo0ov/+3LE5QJOoF7PjnWHApQz1oW8mbkoso404so8w+GdnZ4tv//+7VNSUWUWUKEihIELECxAoSBFmHxcNebNGlFmnCRQkCFiBYkUJFAYgWIFgZRZRZh5h9VVVUUJppI1VUxBTUUzLjk4LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7cMS2A9IFejpDGM3IAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",fs=q(W,As),Ps=Z.Z.createLock(As),bs=new U;let Es=!1;const vs=()=>{Es||(Ps(),Es=!0)},ws=W.decodeAudioData(fs.buffer,e=>{null===bs.audioBufferProperty.value&&(bs.audioBufferProperty.set(e),vs())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),bs.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),vs()});ws&&ws.then(e=>{null===bs.audioBufferProperty.value&&(bs.audioBufferProperty.set(e),vs())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),vs()});const Vs=new Qt(bs,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("checkboxCheckedSoundPlayer",Vs);const Ss=Vs,Ts="data:audio/mpeg;base64,//swxAAAB3BPLHWkgAEQCy03MPADAYAEAMYCIAZnV5vYJv2ZoxqgRhBhkBBkRJhwZa9g7/tbYe1+jC4beogQMZ4Z5zn7mgQQdxOH//////6SQAIzbNJJdtgAAAAAAHjcV2B1EBJLBB4wV9rCWp5eq0EHE43FpgLhkjdNEqGhFqhSQlQ4TwqZdZ7fN/Hm6YKiu/33NoUAACApAAAI//syxAOCSGxzQ123gDkDjCZJvLDmDQ0HhMRgBVEjBws2OIM9Cky1VU0REAhgK47nqWwHAkIYcB7ePHvXeo2cV1nG4uL6rjXjzXt951bbjQs/hQuyxEeFQaEGUgRohuYvQkhIfrBnlFyQoUla/qMye4qGxUqjhxTJIFPCOfamTewcOH2SkYCFVa21OLZrySygx+bV4B1xgBhA1DB0Bf/7MsQFAAfISyw1x4AxL4ssNzGAAigYRigH0YoI18mGQKOgZ+FY0UWnyRsLJgZYCShStOpdQYKdeV5/q9jbIDYPkLAYtiTETvrZLIYEb2u2uogAAAAAAhkChusjjbfkXleOGpiySKjhjUIlMla3JEsHQqgBs2ns50DIPtDIgjJE46JnUPRPPPOG5G8/yKxQADAZFTP1KgAAIX0AGkv/+zLEA4IIRJ9DPaUAMQuN5o2tmYqinck4ucZbhxEBHFls3WFfhr6dyvz3zgxEmEABChAREwQIwJRfc1jx6QHFWNNqQkrG5wvNNbdf1b//kxUACACHIGAlgmUgpccbebl+BkKCZXQyCAwpKkwRUzEk7AIAwgTBahUNNHisAuFoYmM12rXbbUJ2v5Cwa++fDf///+mgDERUoJgUemjg//swxAUDSExLJi3phxEQCmQBrbx0BkCOdSyG/xxiJyFwYUOAZiABRh0Zh64k8Pj7NAJTjWFStFgyvxBK5IhTLDstCt9Y/SAqpLqiYU1gRqYoIfCMbtwYtoG77YMaQdBGoPhoQOPIxjIsCrswBnOHTzqNAI9TIQEiAQc0oSX9JssKWBt5O9HJA8fEWBHxeXEQzXUAKsQAXwMjEM3O//syxAUCSDxVLM1lJzEbCWPFrmxBNqHM4RC+k5ZUzwUcEaSmKZZCdwJRBNZkJiwDdFN36YdSqdqUT6pYDZ5ScxSDVfZPSpL8M//b6NxDNtjDhTpxDmMDKQMMw1k08tNDTxrGMKLQxRDCMevDKlACBZi1WYsoiEOBwEwdI9e0vdBptNKZfgzJsVH29qtOpUET8k9v4mAAAExTEHgUKP/7MsQEggfQUyJNc0QA2AklmY2YpukjMG6N4KPFG4xmOjdBnIQqBgcbgGQGmcNGdaHtBQplqcsNdnbkroa0zXiUXxyr9wz/WF9usagQAkSHDHulGU3DjA44xIgQwADplHVAGUl7G/MbPAcXSMAgRGUSoN9OUp+zGuLf///V3//+ugKcCSTofFaj5oNcoyUgyJfAIDMwsQBGeEBQiGf/+zLEDgJHUD8UDOksQN6F39wxsAA60sBDGHr5bR5oZBEMkscKhnEIJPCh6j//////+n6AmBgKjhFZNEIgmCyGD2UQjAVEweC2peqxVyOIpL/WDXZ7cNcFTtQdJCEFQVGLPFgaUHJ6dhojDlVttOCJU4BB0qsXplV/tncqptv/p//+n//6abf////9QTTTTRVV9UEJK0kIixWmqoc///swxBiDxvgCi4CEYAgAADSAAAAE/1TTVEWK6UxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Cs=q(W,Ts),Is=Z.Z.createLock(Ts),xs=new U;let ks=!1;const Bs=()=>{ks||(Is(),ks=!0)},Ms=W.decodeAudioData(Cs.buffer,e=>{null===xs.audioBufferProperty.value&&(xs.audioBufferProperty.set(e),Bs())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),xs.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Bs()});Ms&&Ms.then(e=>{null===xs.audioBufferProperty.value&&(xs.audioBufferProperty.set(e),Bs())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Bs()});const Ds=new Qt(xs,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("checkboxUncheckedSoundPlayer",Ds);const Os=Ds,Ls={valueType:"boolean"},Rs=wt.Z.pool.create(.025,0,0,0,-.025,0,0,0,1),Ns=gs.transformed(Rs),Zs=ys.transformed(Rs);class qs extends((0,R.pL8)((0,R.CHP)(R.NBX))){constructor(e,t,i){const s=(0,N.ZP)()({spacing:5,boxWidth:21,checkboxColor:"black",checkboxColorBackground:"white",touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,checkedSoundPlayer:Ss,uncheckedSoundPlayer:Os,phetioLinkProperty:!0,cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Checkbox",phetioEventType:ei.Z.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly,tagName:"input",inputType:"checkbox",appendDescription:!0,voicingCheckedObjectResponse:null,voicingUncheckedObjectResponse:null,checkedContextResponse:null,uncheckedContextResponse:null,voiceNameResponseOnSelection:!0},i);super(),_defineProperty(this,"_isMouseAreaCustomized",!1),_defineProperty(this,"_isTouchAreaCustomized",!1),_defineProperty(this,"_isSettingAreas",!1);const n=new ps.Z(()=>{e.value=!e.value,(0,ms.Z)(e.value,Ls),e.value?(s.checkedSoundPlayer.play(),s.checkedContextResponse&&this.alertDescriptionUtterance(s.checkedContextResponse),this.voicingSpeakResponse({nameResponse:s.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:zi.Z.alertableToText(s.voicingCheckedObjectResponse),contextResponse:zi.Z.alertableToText(s.checkedContextResponse)})):(s.uncheckedSoundPlayer.play(),s.uncheckedContextResponse&&this.alertDescriptionUtterance(s.uncheckedContextResponse),this.voicingSpeakResponse({nameResponse:s.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:zi.Z.alertableToText(s.voicingUncheckedObjectResponse),contextResponse:zi.Z.alertableToText(s.uncheckedContextResponse)}))},{parameters:[],tandem:s.tandem.createTandem("toggleAction"),phetioDocumentation:"Emits when user input causes the checkbox to toggle, emitting a single arg: the new boolean value of the checkbox state.",phetioReadOnly:!0,phetioEventType:ei.Z.USER});this.backgroundNode=new R.AeJ(0,-s.boxWidth,.95*s.boxWidth,.95*s.boxWidth,.2*s.boxWidth,.2*s.boxWidth,{fill:s.checkboxColorBackground}),this.uncheckedNode=new R.y$t(Ns,{fill:s.checkboxColor});const r=s.boxWidth/this.uncheckedNode.width;this.uncheckedNode.scale(r),this.checkedNode=new R.y$t(Zs,{scale:r,fill:s.checkboxColor});const o=new R.NBX({children:[this.backgroundNode,this.checkedNode,this.uncheckedNode]}),a=new R.AeJ({});this.children=[o,t,a],this.constraint=new Fs(this,o,this.checkedNode,t,a,s),this.constraint.updateLayout(),t.pickable=!1,t.pdomVisible=!1;const h=new R.eMb({fire:()=>n.execute(),tandem:s.tandem.createTandem("fireListener")});this.addInputListener(h);const l=e=>{this.checkedNode.visible=e,this.uncheckedNode.visible=!e,this.pdomChecked=e};e.link(l),this.mutate(s),this.setExcludeLabelSiblingFromInput(),s.phetioLinkProperty&&this.addLinkedElement(e,{tandem:s.tandem.createTandem("property")}),this.disposeCheckbox=()=>{a.dispose(),this.backgroundNode.dispose(),this.uncheckedNode.dispose(),this.checkedNode.dispose(),o.dispose(),h.dispose(),e.hasListener(l)&&e.unlink(l),n.dispose()}}dispose(){this.constraint.dispose(),this.disposeCheckbox(),super.dispose()}setCheckboxColorBackground(e){this.backgroundNode.fill=e}set checkboxColorBackground(e){this.setCheckboxColorBackground(e)}get checkboxColorBackground(){return this.getCheckboxColorBackground()}getCheckboxColorBackground(){return this.backgroundNode.fill}setCheckboxColor(e){this.checkedNode.fill=this.uncheckedNode.fill=e}set checkboxColor(e){this.setCheckboxColor(e)}get checkboxColor(){return this.getCheckboxColor()}getCheckboxColor(){return this.checkedNode.fill}setMouseArea(e){return this._isSettingAreas||(this._isMouseAreaCustomized=!0),super.setMouseArea(e)}setTouchArea(e){return this._isSettingAreas||(this._isTouchAreaCustomized=!0),super.setTouchArea(e)}}class Fs extends R.dmK{constructor(e,t,i,s,n,r){super(e),this.checkbox=e,this.checkboxNode=t,this.checkedNode=i,this.content=s,this.rectangle=n,this.options=r,this.checkbox.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.addNode(s)}layout(){super.layout();const e=this.createLayoutProxy(this.content),t=e.minimumWidth,i=this.checkedNode.right-this.checkboxNode.left,s=i+this.options.spacing+t,n=null===this.checkbox.localPreferredWidth?s:this.checkbox.localPreferredWidth;(0,R.S3T)(this.content)&&(e.preferredWidth=n-i-this.options.spacing),e.left=this.checkedNode.right+this.options.spacing,e.centerY=this.checkedNode.centerY,this.rectangle.rectBounds=this.checkboxNode.bounds.union(e.bounds).withMaxX(Math.max(this.checkboxNode.left+n,e.right)),this.checkbox._isSettingAreas=!0,this.checkbox._isTouchAreaCustomized||(this.checkbox.touchArea=this.checkbox.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation)),this.checkbox._isMouseAreaCustomized||(this.checkbox.mouseArea=this.checkbox.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation)),this.checkbox._isSettingAreas=!1,e.dispose(),this.checkbox.localMinimumWidth=s}dispose(){this.checkbox.localPreferredWidthProperty.unlink(this._updateLayoutListener),super.dispose()}}Je.register("Checkbox",qs);var Ys=i(668);const Hs="data:audio/mpeg;base64,//swxAAAA8ADNZQRgDGHni23MIAC1bbaiNgdgM+wEHBiogUAbxA4MT+////gh//8Mf4YzNI0kYiNYjDZaLJCYAZZgbhKQTNx5Vp34WpSu/bhLvzLYwWSHokUhx0EBR4FA/Mp8sOz3gcWfL9YqH7kKIkzd9fLvSkB201St7337UyHKf7X9Pf//Ue9/6irjy/l3s5gqCo1lPVlVSBj//syxAOACFB7hZyUgDEUCu008ZpKfZq0pMq3UhCDwXYfD+n5X+IUp5YiEYMB0CgRCwfQF0AmAUjAlZVJuE4ZaTbKK0AIJCxUAwrWLf////l1oFP9Yo2m1QI89G8bsISUXc8TjPs5pDlVUzUq1VJLFYcIlvdQS0P1lohZFx5hFpVDCPaSKlRsdgIslDzfeqxt8iVd+v6aClA3ydRso//7MsQDgAhYV13sGEqhEJFpcZMJqE0gGS8ZU3ekWmMRbO4kqZnMgAHAFiPmBRdQFgRZHZrTNwZcRTYLKU4qxy3ieKohBwSNif5UwYc4W/ywiEYAtIWoggTByJ+YPcFxgdYE5MVlD41ZJSYBdPF8gQIZtZPy/cZWxBR5Bm7WwZdGkolTRTQXLpSOcoUvf3in/dyBZwzRXAF3ieJEAxD/+zLEBAAIkJlXlYaAARIWb3MegACpLHqwdgk0mfJ913UT0LiL5W+nIh+DsKATQJ4F0E4PF8c7FxaaaCZ80SpqZbfX7J/99fN0p/Onf+zSaVmKSAKAgKAgMAAAAAEBCVMt4sfsyRdHO3PTH0SBFi4jhEgNBinEXeeDSKeby9zBMKun3/pKZ6L//H/6T/p/82bkkAyj/5m7WOWuRFpI//swxAOACDgvi7zDADEQkW289AoWMABHxkZCUEwfjodDiYmpiWw9NWjIAhJEFkFSo4GnxwiDsrBoGn/g0DT64Kgq9BUFQWBo3WFDf4B//ljZRUwaFSyREkApYqDmkM8qYgtylZx9ZL7knEF4rFKLgqfa4GHahJbD5q+ZdeybNpd1LOzqJVWdmJgs9uNUoK61I9Pf1runDP5da2kA//syxAQACHita6eYTzEMFSdkzAigHGL2uEMDLL6xtFmUuujunUP9ODzjFKbt2J5yt77uOmiJWXQ6GAbIjvu17WVn/dDEccwhLJLW6dXU/dcsEAvP8BAST22Qg8WJEX2Cxxs84/BnOt15rGZwVs2FEtKWVPRHZitdbuySkumtHlb0M/U5QwcQRYSLI91T/epbUqPPogEGy4Ldq0ABj//7MsQEgAfcrTesFG1owIRiqMyYmD9U8MBcisSsURTFgBykNZkSUjL+oDB8VGCT310AYfb2ZlVRgEvbASNp8ptD8y7lYYlvxtFsCgAAYAQABAzjzrwIrmT2cuLIZOOOhHHQELC2rOtlix709VXnYiej4dx2rz2Vd/xL6QQAAHCikADAVHicCJrfesiRcXCNaoKuuneW+r1dXxFDvZf/+zLEEQBFcCEJoLHi8JuFVvDMGGz/vqeWI50KHuGnJHLWAAQIl4qgkpSn8oGq1rUCoSk3UAhEYtCgKWWwwIDo////4sLVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Gs=q(W,Hs),Us=Z.Z.createLock(Hs),zs=new U;let Ws=!1;const Qs=()=>{Ws||(Us(),Ws=!0)},Xs=W.decodeAudioData(Gs.buffer,e=>{null===zs.audioBufferProperty.value&&(zs.audioBufferProperty.set(e),Qs())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),zs.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Qs()});Xs&&Xs.then(e=>{null===zs.audioBufferProperty.value&&(zs.audioBufferProperty.set(e),Qs())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Qs()});const Ks=new Qt(zs,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});H.register("switchToLeftSoundPlayer",Ks);const Js=Ks,js="data:audio/mpeg;base64,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",_s=q(W,js),$s=Z.Z.createLock(js),en=new U;let tn=!1;const sn=()=>{tn||($s(),tn=!0)},nn=W.decodeAudioData(_s.buffer,e=>{null===en.audioBufferProperty.value&&(en.audioBufferProperty.set(e),sn())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),en.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),sn()});nn&&nn.then(e=>{null===en.audioBufferProperty.value&&(en.audioBufferProperty.set(e),sn())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),sn()});const rn=new Qt(en,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});H.register("switchToRightSoundPlayer",rn);const on=rn;i(6212);const an=new ni.Z(60,30);class hn extends((0,R.CHP)(R.NBX)){constructor(e,t,i,s){const n=(0,N.ZP)()({size:an,toggleWhileDragging:null,dragThreshold:3,toggleThreshold:1,thumbFill:null,thumbStroke:"black",thumbTouchAreaXDilation:8,thumbTouchAreaYDilation:8,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,trackFillLeft:null,trackFillRight:null,trackStroke:"black",cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,switchToLeftSoundPlayer:Js,switchToRightSoundPlayer:on,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Switch",phetioEventType:ei.Z.USER,phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"button",ariaRole:"switch",a11yName:null,leftValueContextResponse:null,rightValueContextResponse:null},s);let r=null;n.trackFillLeft&&n.trackFillRight||(r=new R.oas(0,0,0,n.size.height).addColorStop(0,"rgb( 40, 40, 40 )").addColorStop(1,"rgb( 200, 200, 200 )")),n.trackFillLeft=n.trackFillLeft||r,n.trackFillRight=n.trackFillRight||r,n.thumbFill=n.thumbFill||new R.oas(0,0,0,n.size.height).addColorStop(0,"white").addColorStop(1,"rgb( 200, 200, 200 )"),n.a11yName&&(n.voicingNameResponse=n.a11yName,n.innerContent=n.a11yName),super();const o=n.size.height/2,a=new R.AeJ(0,0,n.size.width,n.size.height,o,o,{stroke:n.trackStroke,fill:n.trackFillLeft});this.addChild(a);const h=new R.AeJ(0,0,n.size.width,n.size.height,o,o,{stroke:n.trackStroke,fill:n.trackFillRight});this.addChild(h);const l=new R.AeJ(0,0,.5*n.size.width,n.size.height,o,o,{fill:n.thumbFill,stroke:n.thumbStroke});this.addChild(l),(n.thumbTouchAreaXDilation||n.thumbTouchAreaYDilation)&&(l.touchArea=Nt.bn.roundRect(-n.thumbTouchAreaXDilation,-n.thumbTouchAreaYDilation,.5*n.size.width+2*n.thumbTouchAreaXDilation,n.size.height+2*n.thumbTouchAreaYDilation,o,o)),(n.thumbMouseAreaXDilation||n.thumbMouseAreaYDilation)&&(l.mouseArea=Nt.bn.roundRect(-n.thumbMouseAreaXDilation,-n.thumbMouseAreaYDilation,.5*n.size.width+2*n.thumbMouseAreaXDilation,n.size.height+2*n.thumbMouseAreaYDilation,o,o));const d=e=>{const i=a.lineWidth/2;e===t?l.left=-i:l.right=n.size.width+i,h.rectWidth=l.right-i,this.setPDOMAttribute("aria-pressed",e!==t),this.setPDOMAttribute("aria-checked",e!==t)};e.link(d);const c=n.dragThreshold*n.dragThreshold,u=new Ys.Z(0,0);let p=!1;const m=new ps.Z(s=>{e.value=s,s===t?n.switchToLeftSoundPlayer.play():n.switchToRightSoundPlayer.play();const r=s===i?n.rightValueContextResponse:n.leftValueContextResponse;r&&(this.alertDescriptionUtterance(r),this.voicingSpeakResponse({contextResponse:zi.Z.alertableToText(r)}))},{parameters:[{validValues:[t,i],phetioPrivate:!0}],tandem:n.tandem.createTandem("toggleAction"),phetioDocumentation:"Occurs when the switch is toggled via user interaction",phetioReadOnly:n.phetioReadOnly,phetioEventType:ei.Z.USER}),g=()=>l.centerX!e||"move"!==e.type&&"enter"!==e.type||_.includes(e.trail.nodes,l),start:()=>{u.setXY(0,0),p=!1},drag:(t,i)=>{u.add(i.modelDelta),p=p||u.magnitudeSquared>c;const s=i.getCurrentTarget().globalToLocalPoint(t.pointer.point),r=l.width/2,o=a.lineWidth/2;l.centerX=Ve.Z.clamp(s.x,r-o,n.size.width-r+o),h.rectWidth=l.right-o;const d=s.x<(1-2*n.toggleThreshold)*r||s.x>(2*n.toggleThreshold-1)*r+n.size.width,y=g();(!0===n.toggleWhileDragging||d&&null===n.toggleWhileDragging)&&e.value!==y&&m.execute(y)},end:()=>{const s=e.value===t?i:t,n=p?g():s;e.value!==n&&m.execute(n),d(n)},canClick:!0});this.addInputListener(y),this.mutate(n),this.addLinkedElement(e,{tandem:n.tandem.createTandem("property")}),this.switchToLeftSoundPlayer=n.switchToLeftSoundPlayer,this.switchToRightSoundPlayer=n.switchToRightSoundPlayer,this.disposeToggleSwitch=()=>{a.dispose(),h.dispose(),e.unlink(d),m.dispose(),y.dispose()}}dispose(){this.disposeToggleSwitch(),super.dispose()}}Je.register("ToggleSwitch",hn);class ln extends R.SHm{constructor(e){const t=(0,N.ZP)()({spacing:fh.CONTENT_SPACING,titleNode:null,contentNode:null,contentNodeOptions:{},contentLeftMargin:30},e),i=new R.Lkj({matchVertical:!1}),s=[];if(t.titleNode&&s.push(i.createBox(t.titleNode,{xAlign:"left"})),t.contentNode){const e=(0,N.JA)({children:[t.contentNode]},t.contentNodeOptions);s.push(i.createBox(new R.NBX(e),{leftMargin:t.contentLeftMargin,xAlign:"left"}))}t.children=s,super(t),this.disposePreferencesPanelSection=()=>{i.dispose()}}dispose(){this.disposePreferencesPanelSection(),super.dispose()}}Bt.Z.register("PreferencesPanelSection",ln);const dn=ln,cn=new Et({weight:"bold",size:16}),un=new Et(16),pn={TOGGLE_SWITCH_OPTIONS:{size:new ni.Z(36,18),trackFillRight:"#64bd5a",enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.queryParameters.supportsVoicing),voicingIgnoreVoicingManagerProperties:!0,tandem:ye.Z.OPT_OUT},CONTROL_LABEL_OPTIONS:{font:cn,maxWidth:360},CONTROL_DESCRIPTION_OPTIONS:{font:un,maxWidth:500,lineWrap:480}},mn=ls.Z.preferences.tabs.audio.sounds.titleStringProperty,gn=ls.Z.preferences.tabs.audio.sounds.extraSounds.titleStringProperty,yn=ls.Z.preferences.tabs.audio.sounds.descriptionStringProperty,An=ls.Z.preferences.tabs.audio.sounds.extraSounds.descriptionStringProperty,fn=ls.Z.a11y.preferences.tabs.audio.sounds.soundsOnStringProperty,Pn=ls.Z.a11y.preferences.tabs.audio.sounds.soundsOffStringProperty,bn=ls.Z.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOnStringProperty,En=ls.Z.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOffStringProperty,vn=ls.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class wn extends dn{constructor(e,t){const i=(0,N.ZP)()({includeTitleToggleSwitch:!0},t),s=new R.xvT(mn,fh.PANEL_SECTION_LABEL_OPTIONS),n=new rs(vn,{label:mn,description:yn}),r=new R.JxC(yn,(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:n})),o=new hn(e.soundEnabledProperty,!1,!0,(0,N.JA)({visible:i.includeTitleToggleSwitch,a11yName:mn,leftValueContextResponse:Pn,rightValueContextResponse:fn},pn.TOGGLE_SWITCH_OPTIONS)),a=new cs({labelNode:s,descriptionNode:r,controlNode:o});let h=null;if(e.supportsExtraSound){const t=new R.xvT(gn,fh.PANEL_SECTION_CONTENT_OPTIONS),i=new qs(e.extraSoundEnabledProperty,t,{labelTagName:"label",labelContent:gn,voicingNameResponse:gn,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:bn,uncheckedContextResponse:En,tandem:ye.Z.OPT_OUT}),s=new rs(vn,{label:gn,description:An}),n=new R.yhY(An,(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:300,maxHeight:100,readingBlockNameResponse:s}));h=new R.SHm({children:[i,n],align:"left",spacing:5,tagName:"div"});const r=e=>{h.enabled=e,i.inputEnabled=e};e.soundEnabledProperty.link(r),h.disposeEmitter.addListener(()=>{t.dispose(),i.dispose(),n.dispose(),s.dispose(),e.soundEnabledProperty.unlink(r)})}super({titleNode:a,contentNode:h}),this.disposeSoundPanelSection=()=>{s.dispose(),o.dispose(),r.dispose(),n.dispose(),h&&h.dispose()}}dispose(){this.disposeSoundPanelSection(),super.dispose()}}Bt.Z.register("SoundPanelSection",wn);const Vn=wn;var Sn=i(5428);class Tn extends ui{constructor(e,t,i){const s=(0,N.ZP)()({cursor:"pointer",baseColor:"white",stroke:"black",lineWidth:1,cornerRadius:4,xMargin:7,yMargin:5,touchAreaXDilation:7,touchAreaYDilation:7,arrowHeight:20,arrowWidth:20*Math.sqrt(3)/2,arrowFill:"black",arrowStroke:null,arrowLineWidth:1,numberOfArrows:1,arrowSpacing:-10,fireOnHold:!0,fireOnHoldDelay:400,fireOnHoldInterval:100,startCallback:_.noop,endCallback:_.noop},i);s.listener=t;const n=new Nt.bn;for(let r=0;re.x).concat(e.points.map(e=>e.x)))}getIntersectedXValues(e){const t=this.getCombinedXValues(e),i=[];for(let n=0;ns)&&(n===t.length-2||o.xnew Ys.Z(i,t(this.evaluate(i),e.evaluate(i)))))}binaryPointwiseOperation(e,t){return this.binaryXOperation(e,t,this.getCombinedXValues(e))}binaryIntersectingOperation(e,t){return this.binaryXOperation(e,t,this.getIntersectedXValues(e))}plus(e){return this.binaryPointwiseOperation(e,(e,t)=>e+t)}minus(e){return this.binaryPointwiseOperation(e,(e,t)=>e-t)}min(e){return this.binaryIntersectingOperation(e,Math.min)}max(e){return this.binaryIntersectingOperation(e,Math.max)}withXValues(e){return new xn(e.map(e=>new Ys.Z(e,this.evaluate(e))))}inverted(){const e=this.points.map(e=>new Ys.Z(e.y,e.x));return e.length>1&&e[0].x>e[1].x&&e.reverse(),new xn(e)}static sum(){for(var e=arguments.length,t=new Array(e),i=0;ie.plus(t))}static min(){for(var e=arguments.length,t=new Array(e),i=0;ie.min(t))}static max(){for(var e=arguments.length,t=new Array(e),i=0;ie.max(t))}static constant(e){return new xn([new Ys.Z(0,e)])}static linear(e,t){return new xn([new Ys.Z(0,t),new Ys.Z(1,e+t)])}static sortedUniqueEpsilon(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;e=_.sortBy(e);for(let i=0;i{let s=Bn,n=Bn;return e.hasOwnProperty(t)&&(s=e[t]),e.hasOwnProperty(i)&&(n=e[i]),s!==Bn?e[i]=s:delete e[i],n!==Bn?e[t]=n:delete e[t],e};Qe.Z.register("swapObjectKeys",Mn);const Dn=Mn,On="data:audio/mpeg;base64,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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xDE1gPAAAGkAAAAIAAANIAAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7EMTWA8AAAaQAAAAgAAA0gAAABKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQxNYDwAABpAAAACAAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xDE1gPAAAGkAAAAIAAANIAAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==",Ln=q(W,On),Rn=Z.Z.createLock(On),Nn=new U;let Zn=!1;const qn=()=>{Zn||(Rn(),Zn=!0)},Fn=W.decodeAudioData(Ln.buffer,e=>{null===Nn.audioBufferProperty.value&&(Nn.audioBufferProperty.set(e),qn())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),Nn.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),qn()});Fn&&Fn.then(e=>{null===Nn.audioBufferProperty.value&&(Nn.audioBufferProperty.set(e),qn())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),qn()});const Yn=Nn,Hn="data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAEAAAE/QCbm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5vBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4P////////////////////////////////8AAAAUTEFNRTMuMTAwBJgAAAAAAAAAABUgJAXmQQABpAAABP2CPnqIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//ugxAAAAZABXJQAACjSBy/7MvJBlbA24AeHxx+Z+DJ48Acl/O7e/c+wAAAAAAAEggodS1KhDIMHY9Flj8OAaLhIDnqje9htgSxoj0q3Fksjnr007hUgBFiJkAAAAJRul9HpGarkErUNUSqvEO5RRnr0CYblhVBIAACITTDJN3xrY6pMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpcJoKAAAAAArSgBAzM3OFUFV0GH4AAagOAQ5P8ZoVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sgxNoAw8QpV9zxgCg6A+w4kAkEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMTlgMI4H1/EgQggMYHqUBQYBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQxNYDwAAB/gAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",Gn=q(W,Hn),Un=Z.Z.createLock(Hn),zn=new U;let Wn=!1;const Qn=()=>{Wn||(Un(),Wn=!0)},Xn=W.decodeAudioData(Gn.buffer,e=>{null===zn.audioBufferProperty.value&&(zn.audioBufferProperty.set(e),Qn())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),zn.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),Qn()});Xn&&Xn.then(e=>{null===zn.audioBufferProperty.value&&(zn.audioBufferProperty.set(e),Qn())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),Qn()});const Kn=zn,Jn=new Qt(Yn,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});H.register("generalBoundaryBoopSoundPlayer",Jn);const jn=Jn,_n=new Qt(Kn,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});H.register("generalSoftClickSoundPlayer",_n);const $n=_n,er=new Qt(Yn,{soundClipOptions:{initialOutputLevel:.2,initialPlaybackRate:1/Math.pow(2,1/6)},soundManagerOptions:{categoryName:"user-interface"}}),tr=new Qt(Kn,{soundClipOptions:{initialOutputLevel:.2,initialPlaybackRate:1/Math.pow(2,1/6)},soundManagerOptions:{categoryName:"user-interface"}}),ir=e=>Ve.Z.roundToInterval(e,1e-9),sr=()=>1;class nr{constructor(e,t){const i=(0,N.ZP)()({middleMovingUpSoundPlayer:$n,middleMovingDownSoundPlayer:tr,middleMovingUpPlaybackRateMapper:sr,middleMovingDownPlaybackRateMapper:sr,numberOfMiddleThresholds:null,interThresholdDelta:null,constrainValue:ir,minSoundPlayer:er,maxSoundPlayer:jn,minimumInterMiddleSoundTime:.035},t);null===i.numberOfMiddleThresholds&&null===i.interThresholdDelta&&(i.numberOfMiddleThresholds=5),null!==i.numberOfMiddleThresholds?this.interThresholdDistance=e.getLength()/(i.numberOfMiddleThresholds+1):null!==i.interThresholdDelta?this.interThresholdDistance=i.interThresholdDelta:this.interThresholdDistance=e.getLength()/2,this.valueRange=e,this.middleMovingUpSoundPlayer=i.middleMovingUpSoundPlayer,this.middleMovingDownSoundPlayer=i.middleMovingDownSoundPlayer,this.middleMovingUpPlaybackRateMapper=i.middleMovingUpPlaybackRateMapper,this.middleMovingDownPlaybackRateMapper=i.middleMovingDownPlaybackRateMapper,this.minSoundPlayer=i.minSoundPlayer,this.maxSoundPlayer=i.maxSoundPlayer,this.minimumInterMiddleSoundTime=i.minimumInterMiddleSoundTime,this.timeOfMostRecentMiddleSound=0,this.constrainValue=i.constrainValue}playSoundIfThresholdReached(e,t){if(e!==t){const i=this.constrainValue(e),s=this.constrainValue(t),n=this.getSurroundingThresholds(s),r=this.getSurroundingThresholds(i),o=1===n.length&&1===r.length&&Math.abs(n[0]-r[0])>this.interThresholdDistance||1===n.length&&2===r.length&&n[0]!==r[0]&&n[0]!==r[1]||2===n.length&&1===r.length&&r[0]!==n[0]&&r[0]!==n[1]||2===n.length&&2===r.length&&r[0]!==n[0],a=1===r.length&&(2===n.length||n[0]!==r[0]);(o||a||i===this.valueRange.min||i===this.valueRange.max)&&this.playSoundForValueChange(e,t)}}playSoundForValueChange(e,t){const i=this.constrainValue(e),s=this.constrainValue(t);if(i!==s||t!==e&&(e===this.valueRange.min||e===this.valueRange.max))if(e===this.valueRange.min)this.minSoundPlayer.play();else if(e===this.valueRange.max)this.maxSoundPlayer.play();else{const t=W.currentTime;if(t-this.timeOfMostRecentMiddleSound>this.minimumInterMiddleSoundTime){let n,r;i>s?(n=this.middleMovingUpPlaybackRateMapper,r=this.middleMovingUpSoundPlayer):(n=this.middleMovingUpPlaybackRateMapper,r=this.middleMovingDownSoundPlayer),n!==sr&&r.setPlaybackRate(n(e)),r.play(),this.timeOfMostRecentMiddleSound=t}}}getSurroundingThresholds(e){const t=Math.floor(Ve.Z.roundToInterval((e-this.valueRange.min)/this.interThresholdDistance,1e-7)),i=Ve.Z.roundToInterval(t*this.interThresholdDistance+this.valueRange.min,1e-7),s=[i];if(i!==e){const e=Math.min(Ve.Z.roundToInterval(i+this.interThresholdDistance,1e-7),this.valueRange.max);e>i&&s.push(e)}return s}}_defineProperty(nr,"NO_SOUND",new nr(new Sn.Z(0,1),{middleMovingUpSoundPlayer:Fi,minSoundPlayer:Fi,maxSoundPlayer:Fi})),H.register("ValueChangeSoundPlayer",nr);const rr=nr;var or=i(2573);const ar=e=>""+e,hr={withNameResponse:!1,withObjectResponse:!0,onlyOnValueChange:!0},lr=(e,t)=>class extends((0,R.CHP)(e)){constructor(){for(var e=arguments.length,i=new Array(e),s=0;s{const t=this._getMappedValue(e.min),i=this._getMappedValue(e.max);this.setPDOMAttribute("min",t),this.setPDOMAttribute("max",i),this._updateSiblingStepAttribute()};this._enabledRangeProperty.link(h);const l=()=>{const e=this._getMappedValue();this.setPDOMAttribute("aria-valuenow",e),this.inputValue=e};this._valueProperty.link(l),this._disposeAccessibleValueHandler=()=>{this._enabledRangeProperty.unlink(h),this._valueProperty.unlink(l),this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._panTargetNode=null}}setA11yDependencies(e){this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._dependenciesMultilink=Ze.Z.multilinkAny(e.concat([this._valueProperty]),()=>{this._updateAriaValueText(this._oldValue),this._oldValue=this._valueProperty.value})}_updateAriaValueText(e){const t=this._getMappedValue(),i=this._a11yCreateAriaValueText(t,this._valueProperty.value,e);let s=R.eDZ.unwrapStringProperty(i);this._a11yRepeatEqualValueText&&this.ariaValueText&&s===this.ariaValueText.replace(new RegExp(" ","g"),"")&&(s=this.ariaValueText+" "),this.ariaValueText=s}alertContextResponse(){let e=!1;if(this._a11yCreateContextResponseAlert){const t=this._getMappedValue(),i=this._a11yCreateContextResponseAlert(t,this._valueProperty.value,this._valueOnStart);i&&(this._contextResponseUtterance.alert=i,this.forEachUtteranceQueue(t=>{e||(t.hasUtterance(this._contextResponseUtterance)?(e=!0,this._timesChangedBeforeAlerting++):this._timesChangedBeforeAlerting=1),this._contextResponseUtterance.alertStableDelay=Math.min(this._contextResponseMaxDelay,this._timesChangedBeforeAlerting*this._contextResponsePerValueChangeDelay),t.addToBack(this._contextResponseUtterance)}))}}reset(){this._a11yCreateAriaValueText.reset&&this._a11yCreateAriaValueText.reset(),this._a11yCreateContextResponseAlert&&this._a11yCreateContextResponseAlert.reset&&this._a11yCreateContextResponseAlert.reset(),this._timesChangedBeforeAlerting=0,this._updateAriaValueText(null)}_getMappedValue(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._valueProperty.value;return this._a11yMapPDOMValue(e)}getAccessibleValueHandlerInputListener(){return{keydown:this.handleKeyDown.bind(this),keyup:this.handleKeyUp.bind(this),input:this.handleInput.bind(this),change:this.handleChange.bind(this),blur:this.handleBlur.bind(this)}}handleKeyDown(e){const t=e.domEvent,i=R.ntP.getEventCode(t);if(i&&(this._shiftKey=t.shiftKey,R.ntP.isKeyEvent(t,R.ntP.KEY_TAB)&&(this._blockInput=!0),this.enabledProperty.get()&&R.ntP.isRangeKey(t)&&(t.preventDefault(),!t.metaKey))){e.pointer.reserveForKeyboardDrag();let s=!0;this._anyKeysDown()||this._onInteractionStart(e),this._rangeKeysDown[i]=!0;let n=this._valueProperty.get();if(R.ntP.isAnyKeyEvent(t,[R.ntP.KEY_END,R.ntP.KEY_HOME]))i===R.ntP.KEY_END?n=this._enabledRangeProperty.get().max:i===R.ntP.KEY_HOME&&(n=this._enabledRangeProperty.get().min);else{let e;i===R.ntP.KEY_PAGE_UP||i===R.ntP.KEY_PAGE_DOWN?(e=this.pageKeyboardStep,i===R.ntP.KEY_PAGE_UP?n=this._valueProperty.get()+e:i===R.ntP.KEY_PAGE_DOWN&&(n=this._valueProperty.get()-e)):R.ntP.isArrowKey(t)&&(e=t.shiftKey?this.shiftKeyboardStep:this.keyboardStep,s=!t.shiftKey,i===R.ntP.KEY_RIGHT_ARROW||i===R.ntP.KEY_UP_ARROW?n=this._valueProperty.get()+e:i!==R.ntP.KEY_LEFT_ARROW&&i!==R.ntP.KEY_DOWN_ARROW||(n=this._valueProperty.get()-e),this._roundToStepSize&&(n=dr(n,this._valueProperty.get(),e)))}const r=this._a11yMapValue(n,this._valueProperty.get());let o=r;s&&(o=this._constrainValue(r)),this._valueProperty.set(Ve.Z.clamp(o,this._enabledRangeProperty.get().min,this._enabledRangeProperty.get().max)),this._onInput(e)}}handleKeyUp(e){const t=R.ntP.getEventCode(e.domEvent);this._allKeysUp()||(R.ntP.SHIFT_KEYS.includes(t)&&(this._shiftKey=!1),this.enabledProperty.get()&&R.ntP.isRangeKey(e.domEvent)&&(this._rangeKeysDown[t]=!1,this._allKeysUp()&&this._onInteractionEnd(e)))}handleChange(e){this._a11yInputHandled||this.handleInput(e),this._a11yInputHandled=!1}handleInput(e){if(this.enabledProperty.get()&&!this._blockInput){this._a11yInputHandled=!0;let t=this._valueProperty.get();const i=parseFloat(e.domEvent.target.value),s=this._shiftKey?this.shiftKeyboardStep:this.keyboardStep,n=this._getMappedValue();this._onInteractionStart(e),i>n?t=this._valueProperty.get()+s:i!e)}_anyKeysDown(){return!!_.find(this._rangeKeysDown,e=>e)}_updateSiblingStepAttribute(){const e=Math.min(this.keyboardStep,this.shiftKeyboardStep,this.pageKeyboardStep);let t=Math.pow(10,-Ve.Z.numberOfDecimalPlaces(e));const i=this._getMappedValue(this._enabledRangeProperty.get().min),s=this._getMappedValue(this._enabledRangeProperty.get().max);t/(s-i)<1e-5&&(t=s/100),this.setPDOMAttribute("step",t)}voicingOnEndResponse(e,t){const i=(0,N.JA)({},this._voicingOnEndResponseOptions,t),s=e!==this._valueProperty.value,n=this._valueProperty.value===this._enabledRangeProperty.value.min||this._valueProperty.value===this._enabledRangeProperty.value.max;(!i.onlyOnValueChange||n||s)&&this.voicingSpeakFullResponse({nameResponse:i.withNameResponse?this.voicingNameResponse:null,objectResponse:i.withObjectResponse?this.voicingObjectResponse:null,hintResponse:null})}dispose(){this._disposeAccessibleValueHandler(),super.dispose()}};Je.register("AccessibleValueHandler",lr);const dr=function(e,t,i){let s=e;return 0!==i&&(s=Ve.Z.roundSymmetric(s/i)*i,s=cr(s,t,i)),s},cr=function(e,t,i){let s=e;const n=Math.abs(e-t),r=n>i,o=Ve.Z.equalsEpsilon(n,i,1e-14);return r&&!o&&(s+=e>t?-1*i:i),s};lr.DEFAULT_TAG_NAME="input";const ur=lr,pr=(e,t)=>class extends(ur(e,t)){constructor(){for(var e=arguments.length,i=new Array(e),s=0;s{this.removeInputListener(o)}}dispose(){this._disposeAccessibleSlider(),super.dispose()}};Je.register("AccessibleSlider",pr);const mr=pr;class gr{constructor(e,t,i,s){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this.a1=e,this.a2=t,this.b1=i,this.b2=s,this.clamp=n}evaluate(e){return yr(this.a1,this.a2,this.b1,this.b2,e,this.clamp)}inverse(e){return yr(this.b1,this.b2,this.a1,this.a2,e,this.clamp)}}const yr=(e,t,i,s,n,r)=>{let o=Ve.Z.linear(e,t,i,s,n);if(r){const e=Math.max(i,s),t=Math.min(i,s);o=Ve.Z.clamp(o,t,e)}return o};In.Z.register("LinearFunction",gr);class Ar extends((0,R.pL8)(R.NBX)){constructor(e,t,i,s){super(),this.rangeProperty=i instanceof Sn.Z?new F.Z(i):i;const n=(0,N.ZP)()({size:new ni.Z(100,5),startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,enabledRangeProperty:this.rangeProperty,soundGenerator:Sr.DEFAULT_SOUND,valueChangeSoundGeneratorOptions:{},voicingOnEndResponse:_.noop,leftVisualOverflow:0,rightVisualOverflow:0,tandem:ye.Z.REQUIRED,tandemNameSuffix:"TrackNode"},s);n.soundGenerator===Sr.DEFAULT_SOUND?n.soundGenerator=new rr(this.rangeProperty.value,n.valueChangeSoundGeneratorOptions||{}):null===n.soundGenerator&&(n.soundGenerator=rr.NO_SOUND),this.leftVisualOverflow=n.leftVisualOverflow,this.rightVisualOverflow=n.rightVisualOverflow,this.minimumSize=n.size,this.minimumWidth=this.minimumSize.width,this.internalWidthProperty=new me.ZP([this.localPreferredWidthProperty],e=>(null===e?this.minimumSize.width:Math.max(this.minimumSize.width,e))-n.leftVisualOverflow-n.rightVisualOverflow),this.sizeProperty=new me.ZP([this.internalWidthProperty],e=>new ni.Z(e,this.minimumSize.height)),this.valueToPositionProperty=new me.ZP([this.rangeProperty,this.internalWidthProperty],(e,t)=>new gr(e.min,e.max,0,t,!0));const r=(t,i)=>{const s=e.value,r=i.subtrailTo(this).getTransform().inversePosition2(t.pointer.point).x,o=this.valueToPositionProperty.value.inverse(r),a=n.enabledRangeProperty.value.constrainValue(o),h=n.constrainValue(a);e.set(h),"down"===t.type&&n.soundGenerator.playSoundIfThresholdReached(h,s)};this.addChild(t);let o=e.value;this.dragListener=new R._U3({tandem:n.tandem.createTandem("dragListener"),start:(t,i)=>{n.startDrag(t),o=e.value,r(t,i.pressedTrail)},drag:(e,t)=>{n.drag(e),r(e,t.pressedTrail)},end:e=>{n.endDrag(e),n.voicingOnEndResponse(o)}}),t.addInputListener(this.dragListener),this.mutate(n),this.disposeSliderTrack=()=>{t.removeInputListener(this.dragListener),this.dragListener.dispose()}}dispose(){this.disposeSliderTrack(),super.dispose()}}Je.register("SliderTrack",Ar);class fr extends Ar{constructor(e,t,i){const s=(0,N.ZP)()({fillEnabled:"white",fillDisabled:"gray",stroke:"black",lineWidth:1,cornerRadius:0},i),n=new R.AeJ({fill:s.fillDisabled,stroke:s.stroke,lineWidth:s.lineWidth,cornerRadius:s.cornerRadius,cursor:"default",pickable:!1}),r=new R.AeJ({fill:s.fillEnabled,stroke:s.stroke,lineWidth:s.lineWidth,cornerRadius:s.cornerRadius});super(e,new R.NBX({children:[n,r]}),t,(0,N.JA)({leftVisualOverflow:null!==s.stroke?s.lineWidth/2:0,rightVisualOverflow:null!==s.stroke?s.lineWidth/2:0},s));const o=Ze.Z.multilink([s.enabledRangeProperty,this.valueToPositionProperty,this.sizeProperty],(e,t,i)=>{const s=t.evaluate(e.min),o=t.evaluate(e.max);n.setRect(0,0,i.width,i.height),r.setRect(s,0,o-s,i.height)});this.disposeDefaultSliderTrack=()=>{o.dispose()}}dispose(){this.disposeDefaultSliderTrack(),super.dispose()}}Je.register("DefaultSliderTrack",fr);class Pr extends R.AeJ{constructor(e){const t=(0,N.ZP)()({size:new ni.Z(22,45),fillHighlighted:"rgb( 71, 207, 255 )",centerLineStroke:"white",fill:"rgb( 50, 145, 184 )",stroke:"black",lineWidth:1,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ThumbNode"},e);void 0===t.cornerRadius&&(t.cornerRadius=.25*t.size.width),t.cachedPaints=[t.fill,t.fillHighlighted],super(0,0,t.size.width,t.size.height,t);const i=R.AeJ.bounds(this.bounds.dilated(5),{fill:"transparent",localBounds:this.bounds,pickable:!1});this.addChild(i);this.addChild(new R.y$t(Nt.bn.lineSegment(t.size.width/2,3,t.size.width/2,t.size.height-3),{stroke:t.centerLineStroke}));const s=new R.$o8({attach:!1,tandem:ye.Z.OPT_OUT});s.isHighlightedProperty.link(e=>{this.fill=e?t.fillHighlighted:t.fill}),this.addInputListener(s)}}Je.register("SliderThumb",Pr);const br={VALUE_NAMED_PLACEHOLDER:"{{value}}",VALUE_NUMBERED_PLACEHOLDER:"{0}",SLIDER_VERTICAL_ROTATION:-Math.PI/2};Je.register("SunConstants",br);const Er=br;class vr{constructor(e,t,i,s,n,r,o,a,h){this.parent=e,this.value=t,this.label=i,this.labelXProperty=new me.ZP([h.valueToPositionProperty],e=>e.evaluate(t)),this.tickNode=new R.NBX,e.addChild(this.tickNode);const l=new R.y$t((new Nt.bn).moveTo(0,h.top).lineTo(0,h.top-s),{stroke:n,lineWidth:r});this.labelXProperty.link(e=>{l.x=e}),this.tickNode.addChild(l),i&&(a===Cn.Z.VERTICAL&&(i.rotation=-Er.SLIDER_VERTICAL_ROTATION),this.tickNode.addChild(i),this.manualConstraint=R.bGt.create(this.tickNode,[l,i],(e,t)=>{t.centerX=e.centerX,t.bottom=e.top-o.tickLabelSpacing}),i.pickable=!1)}dispose(){this.parent.removeChild(this.tickNode),this.labelXProperty.dispose(),this.manualConstraint&&this.manualConstraint.dispose()}}Je.register("SliderTick",vr);const wr=new ni.Z(100,5),Vr=new ni.Z(17,34);class Sr extends((0,R.tTM)(mr(R.NBX,0))){constructor(e,t,i){const s=(0,N.ZP)()({orientation:Cn.Z.HORIZONTAL,trackNode:null,trackSize:null,trackFillEnabled:"white",trackFillDisabled:"gray",trackStroke:"black",trackLineWidth:1,trackCornerRadius:0,trackPickable:!0,thumbNode:null,thumbSize:null,thumbFill:"rgb(50,145,184)",thumbFillHighlighted:"rgb(71,207,255)",thumbStroke:"black",thumbLineWidth:1,thumbCenterLineStroke:"white",thumbTouchAreaXDilation:11,thumbTouchAreaYDilation:11,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,thumbYOffset:0,tickLabelSpacing:6,majorTickLength:25,majorTickStroke:"black",majorTickLineWidth:1,minorTickLength:10,minorTickStroke:"black",minorTickLineWidth:1,cursor:"pointer",startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,disabledOpacity:R.iaM.DISABLED_OPACITY,soundGenerator:Sr.DEFAULT_SOUND,valueChangeSoundGeneratorOptions:{},phetioLinkedProperty:null,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Slider",phetioType:Sr.SliderIO,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},i),n=t instanceof Sn.Z?new F.Z(t):t;if(s.ariaOrientation=s.orientation,s.soundGenerator===Sr.DEFAULT_SOUND?s.soundGenerator=new rr(n.value,s.valueChangeSoundGeneratorOptions||{}):null===s.soundGenerator&&(s.soundGenerator=rr.NO_SOUND),s.soundGenerator!==rr.NO_SOUND){let t=e.value;const i=s.drag;s.drag=n=>{n.isFromPDOM()?s.soundGenerator.playSoundForValueChange(e.value,t):s.soundGenerator.playSoundIfThresholdReached(e.value,t),i(n),t=e.value}}const r=_.pick(s,R.NBX.REQUIRES_BOUNDS_OPTION_KEYS),o=_.omit(s,R.NBX.REQUIRES_BOUNDS_OPTION_KEYS);o.orientation===Cn.Z.VERTICAL&&(o.trackSize&&(o.trackSize=o.trackSize.swapped()),o.thumbSize&&(o.thumbSize=o.thumbSize.swapped()),Dn(o,"thumbTouchAreaXDilation","thumbTouchAreaYDilation"),Dn(o,"thumbMouseAreaXDilation","thumbMouseAreaYDilation")),o.trackSize=o.trackSize||wr,o.thumbSize=o.thumbSize||Vr;const a=s.tandem.createTandem(Sr.THUMB_NODE_TANDEM_NAME);ye.Z.VALIDATION&&o.thumbNode;const h=o.thumbNode||new Pr({size:o.thumbSize,fill:o.thumbFill,fillHighlighted:o.thumbFillHighlighted,stroke:o.thumbStroke,lineWidth:o.thumbLineWidth,centerLineStroke:o.thumbCenterLineStroke,tandem:a}),l=!o.enabledRangeProperty;o.enabledRangeProperty=o.enabledRangeProperty||(t instanceof Sn.Z?new ot.Z(t,{valueType:Sn.Z,isValidValue:e=>e.min>=t.min&&e.max<=t.max,tandem:s.tandem.createTandem("enabledRangeProperty"),phetioValueType:Sn.Z.RangeIO,phetioDocumentation:"Sliders support two ranges: the outer range which specifies the min and max of the track and the enabledRangeProperty, which determines how low and high the thumb can be dragged within the track."}):t),o.panTargetNode=h,o.valueProperty=e,super(o),_defineProperty(this,"ticks",(0,ge.Z)()),_defineProperty(this,"proposedValue",null),this.orientation=o.orientation,this.enabledRangeProperty=o.enabledRangeProperty,this.tickOptions=_.pick(s,"tickLabelSpacing","majorTickLength","majorTickStroke","majorTickLineWidth","minorTickLength","minorTickStroke","minorTickLineWidth");const d=[];this.majorTicksParent=new R.NBX,this.minorTicksParent=new R.NBX,d.push(this.majorTicksParent),d.push(this.minorTicksParent);const c=s.tandem.createTandem(Sr.TRACK_NODE_TANDEM_NAME);ye.Z.VALIDATION&&s.trackNode;const u=new R.NBX;d.push(u),this.track=s.trackNode||new fr(e,t,{size:o.trackSize,fillEnabled:o.trackFillEnabled,fillDisabled:o.trackFillDisabled,stroke:o.trackStroke,lineWidth:o.trackLineWidth,cornerRadius:o.trackCornerRadius,startDrag:o.startDrag,drag:o.drag,endDrag:o.endDrag,constrainValue:o.constrainValue,enabledRangeProperty:this.enabledRangeProperty,soundGenerator:s.soundGenerator,pickable:o.trackPickable,voicingOnEndResponse:this.voicingOnEndResponse.bind(this),tandem:c}),d.push(this.track),h.setCenterY(this.track.centerY+s.thumbYOffset),d.push(h);const p=new R.NBX({children:d});s.orientation===Cn.Z.VERTICAL&&(p.rotation=Er.SLIDER_VERTICAL_ROTATION),this.addChild(p),s.thumbNode||!s.thumbTouchAreaXDilation&&!s.thumbTouchAreaYDilation||(h.touchArea=h.localBounds.dilatedXY(s.thumbTouchAreaXDilation,s.thumbTouchAreaYDilation)),s.thumbNode||!s.thumbMouseAreaXDilation&&!s.thumbMouseAreaYDilation||(h.mouseArea=h.localBounds.dilatedXY(s.thumbMouseAreaXDilation,s.thumbMouseAreaYDilation));let m=0,g=e.value;const y=new R._U3({tandem:h.tandem.createTandem("dragListener"),start:(t,i)=>{if(this.enabledProperty.get()){g=e.value,s.startDrag(t);const n=i.pressedTrail.subtrailTo(p).getTransform();m=n.inversePosition2(t.pointer.point).x-h.centerX}},drag:(t,i)=>{if(this.enabledProperty.get()){const n=i.pressedTrail.subtrailTo(p).getTransform().inversePosition2(t.pointer.point).x-m;this.proposedValue=this.track.valueToPositionProperty.value.inverse(n);const r=this.enabledRangeProperty.get().constrainValue(this.proposedValue);e.set(s.constrainValue(r)),s.drag(t)}},end:e=>{this.enabledProperty.get()&&(s.endDrag(e),this.voicingOnEndResponse(g)),this.proposedValue=null}});h.addInputListener(y),this.thumbDragListener=y,this.trackDragListener=this.track.dragListener;const A=Ze.Z.multilink([e,this.track.valueToPositionProperty],(e,t)=>{h.centerX=t.evaluate(e)}),f=t=>{if(!e.isPhetioInstrumented()||!phet.joist.sim.isSettingPhetioStateProperty.value)if(null===this.proposedValue)e.set(Ve.Z.clamp(e.value,t.min,t.max));else{const i=Ve.Z.clamp(this.proposedValue,t.min,t.max),n=s.constrainValue(i);e.set(n)}};this.enabledRangeProperty.link(f);const P=new Tr(this,this.track,h,p,s.orientation,u,this.ticks);this.disposeSlider=()=>{P.dispose(),h.dispose&&h.dispose(),this.track.dispose&&this.track.dispose(),l?this.enabledRangeProperty.dispose():this.enabledRangeProperty.unlink(f),A.dispose(),y.dispose()},this.focusHighlight=new R.UQs(h);const b=s.phetioLinkedProperty||(e instanceof is.Z?e:null);b&&this.addLinkedElement(b,{tandem:s.tandem.createTandem("valueProperty")}),!l&&this.enabledRangeProperty instanceof is.Z&&this.addLinkedElement(this.enabledRangeProperty,{tandem:s.tandem.createTandem("enabledRangeProperty")}),this.mutate(r)}get majorTicksVisible(){return this.getMajorTicksVisible()}set majorTicksVisible(e){this.setMajorTicksVisible(e)}get minorTicksVisible(){return this.getMinorTicksVisible()}set minorTicksVisible(e){this.setMinorTicksVisible(e)}dispose(){this.disposeSlider(),this.ticks.forEach(e=>{e.dispose()}),super.dispose()}addMajorTick(e,t){this.addTick(this.majorTicksParent,e,t,this.tickOptions.majorTickLength,this.tickOptions.majorTickStroke,this.tickOptions.majorTickLineWidth)}addMinorTick(e,t){this.addTick(this.minorTicksParent,e,t,this.tickOptions.minorTickLength,this.tickOptions.minorTickStroke,this.tickOptions.minorTickLineWidth)}addTick(e,t,i,s,n,r){this.ticks.push(new vr(e,t,i,s,n,r,this.tickOptions,this.orientation,this.track))}setMajorTicksVisible(e){this.majorTicksParent.visible=e}getMajorTicksVisible(){return this.majorTicksParent.visible}setMinorTicksVisible(e){this.minorTicksParent.visible=e}getMinorTicksVisible(){return this.minorTicksParent.visible}}a=Sr,_defineProperty(Sr,"DEFAULT_SOUND",new rr(new Sn.Z(0,1))),_defineProperty(Sr,"THUMB_NODE_TANDEM_NAME","thumbNode"),_defineProperty(Sr,"TRACK_NODE_TANDEM_NAME","trackNode"),_defineProperty(Sr,"SliderIO",new Hi.Z("SliderIO",{valueType:a,documentation:"A traditional slider component, with a knob and possibly tick marks",supertype:R.NBX.NodeIO}));class Tr extends R.dmK{constructor(e,t,i,s,n,r,o){super(e),this.slider=e,this.track=t,this.thumb=i,this.sliderPartsNode=s,this.orientation=n,this.trackSpacer=r,this.ticks=o,n===Cn.Z.HORIZONTAL?(e.heightSizable=!1,this.preferredProperty=this.slider.localPreferredWidthProperty):(e.widthSizable=!1,this.preferredProperty=this.slider.localPreferredHeightProperty),this.preferredProperty.lazyLink(this._updateLayoutListener),this.track.rangeProperty.lazyLink(this._updateLayoutListener),this.thumb.localBoundsProperty.lazyLink(this._updateLayoutListener);const a=e=>{e.tickNode.localBoundsProperty.lazyLink(this._updateLayoutListener),o.addItemRemovedListener(t=>{t===e&&t.tickNode.localBoundsProperty.hasListener(this._updateLayoutListener)&&e.tickNode.localBoundsProperty.unlink(this._updateLayoutListener)})};o.addItemAddedListener(a),this.addNode(t),this.layout(),this.disposeSliderConstraint=()=>{o.removeItemAddedListener(a),this.preferredProperty.unlink(this._updateLayoutListener),this.track.rangeProperty.unlink(this._updateLayoutListener),this.thumb.localBoundsProperty.unlink(this._updateLayoutListener)}}layout(){super.layout();const e=this.slider,t=this.track,i=this.thumb;this.trackSpacer.localBounds=t.localBounds.dilatedX(i.width/2);const s=t.leftVisualOverflow+t.rightVisualOverflow,n=t.minimumWidth,r=n-s,o=e=>Ve.Z.linear(t.rangeProperty.value.min,t.rangeProperty.value.max,0,1,e),a=-i.width/2-t.leftVisualOverflow,h=i.width/2-t.leftVisualOverflow,l=new Sn.Z(a,n+h);if(this.ticks.forEach(e=>{const t=r*o(e.value),i=e.tickNode.width/2;l.includeRange(new Sn.Z(-i,i).shifted(t))}),e.widthSizable&&null!==this.preferredProperty.value){const e=kn.max(kn.linear(1,h),...this.ticks.map(e=>{const t=o(e.value);return kn.linear(t,e.tickNode.width/2-s*t)})).minus(kn.min(kn.constant(a),...this.ticks.map(e=>{const t=o(e.value);return kn.linear(t,-e.tickNode.width/2-s*t)}))),i=e.withXValues([n-1,n,...e.points.map(e=>e.x).filter(e=>e>n+1e-10)]).inverted();t.preferredWidth=Math.max(n,i.evaluate(this.preferredProperty.value))}else t.preferredWidth=t.minimumWidth;const d=l.getLength();this.orientation===Cn.Z.HORIZONTAL?e.localMinimumWidth=d:e.localMinimumHeight=d}dispose(){this.disposeSliderConstraint(),super.dispose()}}Je.register("Slider",Sr);class Cr extends Sr{constructor(e,t,i){super(e,t,(0,N.ZP)()({orientation:Cn.Z.HORIZONTAL},i))}}Je.register("HSlider",Cr);const Ir={PLUS:"+",MINUS:"−",TIMES:"×",DIVIDE:"÷",DOT:"⋅",UNARY_PLUS:"+",UNARY_MINUS:"-",EQUAL_TO:"=",NOT_EQUAL_TO:"≠",GREATER_THAN:">",LESS_THAN:"<",LESS_THAN_OR_EQUAL:"≤",GREATER_THAN_OR_EQUAL:"≥",PERCENT:"%",INFINITY:"∞",PI:"π",PLUS_MINUS:"±",THETA:"θ",NO_VALUE:"—",DEGREES:"°"};ft.register("MathSymbols",Ir);const xr=Ir,kr=new Et(20);class Br extends R.NBX{constructor(e,t,i){const s=(0,N.ZP)()({align:"right",valuePattern:Er.VALUE_NAMED_PLACEHOLDER,decimalPlaces:0,numberFormatter:null,useRichText:!1,useFullHeight:!1,textOptions:{font:kr,fill:"black",maxWidth:null,phetioReadOnly:!0},xMargin:8,yMargin:2,cornerRadius:0,backgroundFill:"white",backgroundStroke:"lightGray",backgroundLineWidth:1,backgroundLineDash:[],minBackgroundWidth:0,noValueString:xr.NO_VALUE,noValueAlign:null,noValuePattern:null,tandem:ye.Z.OPTIONAL,phetioType:Br.NumberDisplayIO},i);const n=new F.Z(s.numberFormatter?s.numberFormatter:e=>null===s.decimalPlaces?""+e:Ve.Z.toFixed(e,s.decimalPlaces));s.noValueAlign||(s.noValueAlign=s.align);const r=e=>e.includes(Er.VALUE_NUMBERED_PLACEHOLDER)?xt.Z.format(e,Er.VALUE_NAMED_PLACEHOLDER):e,o="string"==typeof s.valuePattern?new F.Z(r(s.valuePattern)):new me.ZP([s.valuePattern],r);s.noValuePattern||(s.noValuePattern=new me.ZP([o],e=>e));const a="string"==typeof s.noValuePattern?new F.Z(s.noValuePattern):s.noValuePattern,h=new me.ZP([n],e=>Mr(t.min,s.noValueString,e)),l=new me.ZP([n],e=>Mr(t.max,s.noValueString,e)),d=new me.ZP([o,h,l],(e,t,i)=>xt.Z.fillIn(e,{value:t.length>i.length?t:i})),c=s.useRichText?R.Hof:R.xvT,u=s.tandem.createTandem("valueText"),p=new me.ZP([e,a,o,n],(e,t,i,n)=>{const r=null===e&&t?t:i,o=Mr(e,s.noValueString,n);return xt.Z.fillIn(r,{value:o})},{tandem:u.createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z}),m=(0,N.JA)({},s.textOptions,{maxWidth:null}),g=new c(p,(0,N.JA)({tandem:u},m)),y=g.height,A=new R.AeJ({cornerRadius:s.cornerRadius,fill:s.backgroundFill,stroke:s.backgroundStroke,lineWidth:s.backgroundLineWidth,lineDash:s.backgroundLineDash});d.link(e=>{const t=new c(e,_.omit(m,"tandem"));g.maxWidth=null!==s.textOptions.maxWidth?s.textOptions.maxWidth:0!==t.width?t.width:null,t.maxWidth=g.maxWidth,A.rectWidth=Math.max(s.minBackgroundWidth,t.width+2*s.xMargin),A.rectHeight=(s.useFullHeight?y:t.height)+2*s.yMargin}),s.children=[A,g],super(),this.numberFormatterProperty=n,this.valueText=g,this.backgroundNode=A,R.bGt.create(this,[g,A],(t,i)=>{const n=null===e.value?s.noValueAlign:s.align;"center"===n?t.centerX=i.centerX:"left"===n?t.left=i.left+s.xMargin:t.right=i.right-s.xMargin,t.centerY=i.centerY}),this.mutate(s),this.disposeNumberDisplay=()=>{p.dispose(),o.dispose()}}setNumberFormatter(e){this.numberFormatterProperty.value=e}recomputeText(){}dispose(){this.disposeNumberDisplay(),super.dispose()}setNumberFont(e){this.valueText.font=e}set numberFont(e){this.setNumberFont(e)}setNumberFill(e){this.valueText.fill=e}set numberFill(e){this.setNumberFill(e)}setBackgroundFill(e){this.backgroundNode.fill=e}set backgroundFill(e){this.setBackgroundFill(e)}get backgroundFill(){return this.getBackgroundFill()}getBackgroundFill(){return this.backgroundNode.fill}setBackgroundStroke(e){this.backgroundNode.stroke=e}set backgroundStroke(e){this.setBackgroundStroke(e)}getBackgroundWidth(){return this.backgroundNode.getRectWidth()}setBackgroundWidth(e){this.backgroundNode.setRectWidth(e)}get backgroundWidth(){return this.getBackgroundWidth()}set backgroundWidth(e){this.setBackgroundWidth(e)}}h=Br,_defineProperty(Br,"NumberDisplayIO",new Hi.Z("NumberDisplayIO",{valueType:h,supertype:R.NBX.NodeIO,documentation:"A numeric readout with a background"})),ft.register("NumberDisplay",Br);const Mr=(e,t,i)=>{let s=t;return null!==e&&(s=i(e)),s},Dr=["startDrag","endDrag","leftStart","leftEnd","rightStart","rightEnd"],Or=["touchAreaXDilation","touchAreaYDilation","mouseAreaXDilation","mouseAreaYDilation"];class Lr extends R.NBX{constructor(e,t,i,s){!function(e){!e.startCallback&&e.endCallback;let t=!1,i=!1;e.arrowButtonOptions&&(t=Rr(e.arrowButtonOptions));e.sliderOptions&&(i=Rr(e.sliderOptions))}(s||{});const n=(0,N.ZP)()({numberDisplayOptions:{},sliderOptions:{},arrowButtonOptions:{},titleNodeOptions:{},startCallback:_.noop,endCallback:_.noop,delta:1,disabledOpacity:.5,layoutFunction:Lr.createLayoutFunction1(),includeArrowButtons:!0,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Control",phetioType:Lr.NumberControlIO,phetioEnabledPropertyInstrumented:!0,visiblePropertyOptions:{phetioFeatured:!0}},s);super();const r=n.arrowButtonOptions&&n.arrowButtonOptions.hasOwnProperty("scale"),o=()=>h.enabledRangeProperty?h.enabledRangeProperty.value:i,a=e=>{const t=Ve.Z.roundToInterval(e,h.delta);return o().constrainValue(t)},h=(0,N.JA)({arrowButtonOptions:{touchAreaXDilation:3.5,touchAreaYDilation:7,mouseAreaXDilation:0,mouseAreaYDilation:0,enabledEpsilon:0,leftStart:n.startCallback,leftEnd:n.endCallback,rightStart:n.startCallback,rightEnd:n.endCallback,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}},sliderOptions:{startDrag:n.startCallback,endDrag:n.endCallback,majorTickLength:20,minorTickStroke:"rgba( 0, 0, 0, 0.3 )",majorTicks:[],minorTickSpacing:0,constrainValue:a,valueChangeSoundGeneratorOptions:{interThresholdDelta:n.delta,constrainValue:a},tandem:n.tandem.createTandem(Lr.SLIDER_TANDEM_NAME)},numberDisplayOptions:{textOptions:{font:new Et(12),stringPropertyOptions:{phetioFeatured:!0}},tandem:n.tandem.createTandem("numberDisplay"),visiblePropertyOptions:{phetioFeatured:!0}},titleNodeOptions:{font:new Et(12),maxWidth:null,fill:"black",tandem:n.tandem.createTandem("titleText")}},n);h.enabledRangeProperty&&(h.sliderOptions.enabledRangeProperty=h.enabledRangeProperty);const l=_.pick(h.arrowButtonOptions,Or);h.arrowButtonOptions=_.omit(h.arrowButtonOptions,Or),h.arrowButtonOptions.tagName=null,this.groupFocusHighlight=h.includeArrowButtons,h.sliderOptions.trackNode||(h.sliderOptions=(0,N.JA)({trackSize:new ni.Z(180,3)},h.sliderOptions)),h.sliderOptions.thumbNode||(h.sliderOptions=(0,N.JA)({thumbSize:new ni.Z(17,34),thumbTouchAreaXDilation:6},h.sliderOptions)),h.sliderOptions=(0,N.JA)({shiftKeyboardStep:h.delta,phetioType:Sr.SliderIO},h.sliderOptions),h.sliderOptions.thumbFill&&!h.sliderOptions.thumbFillHighlighted&&(this.thumbFillProperty=new R.M4p(h.sliderOptions.thumbFill),h.sliderOptions.thumbFillHighlighted=new me.ZP([this.thumbFillProperty],e=>e.brighterColor()));const d=new R.xvT(e,h.titleNodeOptions),c=new Br(t,i,h.numberDisplayOptions);this.slider=new Cr(t,i,h.sliderOptions);let u=null,p=null,m=null;if(h.includeArrowButtons){if(u=new Tn("left",()=>{let e=t.get()-h.delta;e=Ve.Z.roundToInterval(e,h.delta),e=Math.max(e,o().min),t.set(e)},(0,N.JA)({startCallback:h.arrowButtonOptions.leftStart,endCallback:h.arrowButtonOptions.leftEnd,tandem:h.tandem.createTandem("decrementButton")},h.arrowButtonOptions)),p=new Tn("right",()=>{let e=t.get()+h.delta;e=Ve.Z.roundToInterval(e,h.delta),e=Math.min(e,o().max),t.set(e)},(0,N.JA)({startCallback:h.arrowButtonOptions.rightStart,endCallback:h.arrowButtonOptions.rightEnd,tandem:h.tandem.createTandem("incrementButton")},h.arrowButtonOptions)),!r){u.setScaleMagnitude(1);const e=c.localBounds.height/u.height;u.setScaleMagnitude(e),p.setScaleMagnitude(e)}u.touchArea=u.localBounds.dilatedXY(l.touchAreaXDilation,l.touchAreaYDilation).shiftedX(-l.touchAreaXDilation),p.touchArea=p.localBounds.dilatedXY(l.touchAreaXDilation,l.touchAreaYDilation).shiftedX(l.touchAreaXDilation),u.mouseArea=u.localBounds.dilatedXY(l.mouseAreaXDilation,l.mouseAreaYDilation).shiftedX(-l.mouseAreaXDilation),p.mouseArea=p.localBounds.dilatedXY(l.mouseAreaXDilation,l.mouseAreaYDilation).shiftedX(l.mouseAreaXDilation),m=()=>{const e=t.value;u.enabled=e-h.arrowButtonOptions.enabledEpsilon>o().min&&!this.slider.isFocused(),p.enabled=e+h.arrowButtonOptions.enabledEpsilon{u.enabled=!1,p.enabled=!1},blur:()=>m()})}const g=h.sliderOptions.majorTicks;for(let y=0;y0)for(let y=i.min;y<=i.max;)_.find(g,e=>e.value===y)||this.slider.addMinorTick(y),y+=h.sliderOptions.minorTickSpacing;h.children=[h.layoutFunction(d,c,this.slider,u,p)],this.mutate(h),this.numberDisplay=c,this.disposeNumberControl=()=>{d.dispose(),c.dispose(),this.slider.dispose(),this.thumbFillProperty&&this.thumbFillProperty.dispose(),u&&u.dispose(),p&&p.dispose(),m&&t.unlink(m),m&&h.enabledRangeProperty&&h.enabledRangeProperty.unlink(m)}}redrawNumberDisplay(){this.numberDisplay.recomputeText()}dispose(){this.disposeNumberControl(),super.dispose()}setNumberFormatter(e){this.numberDisplay.setNumberFormatter(e)}static withMinMaxTicks(e,t,i,s){const n=(0,N.ZP)()({tickLabelFont:new Et(12)},s);return n.sliderOptions=(0,N.JA)({majorTicks:[{value:i.min,label:new R.xvT(i.min,{font:n.tickLabelFont})},{value:i.max,label:new R.xvT(i.max,{font:n.tickLabelFont})}]},n.sliderOptions),new Lr(e,t,i,n)}static createLayoutFunction1(e){const t=(0,N.ZP)()({align:"center",titleXSpacing:5,arrowButtonsXSpacing:15,ySpacing:5},e);return(e,i,s,n,r)=>new R.SHm({align:t.align,spacing:t.ySpacing,children:[new R.BET({spacing:t.titleXSpacing,children:[e,i]}),new R.BET({spacing:t.arrowButtonsXSpacing,resize:!1,children:[n,s,r]})]})}static createLayoutFunction2(e){const t=(0,N.ZP)()({align:"center",xSpacing:5,ySpacing:5},e);return(e,i,s,n,r)=>new R.SHm({align:t.align,spacing:t.ySpacing,resize:!1,children:[new R.BET({spacing:t.xSpacing,children:[e,n,i,r]}),s]})}static createLayoutFunction3(e){const t=(0,N.ZP)()({alignTitle:"center",alignNumber:"center",titleLeftIndent:0,xSpacing:5,ySpacing:5},e);return(e,i,s,n,r)=>{const o=new R.SHm({spacing:t.ySpacing,resize:!1,align:t.alignTitle,children:[new R.DbO(e,{leftMargin:t.titleLeftIndent}),new R.SHm({spacing:t.ySpacing,resize:!1,align:t.alignNumber,children:[new R.BET({spacing:t.xSpacing,children:[n,i,r]}),s]})]});return e.boundsProperty.lazyLink(()=>{o.updateLayout()}),o}}static createLayoutFunction4(e){const t=(0,N.ZP)()({sliderPadding:0,verticalSpacing:5,arrowButtonSpacing:5,hasReadoutProperty:null,layoutInvisibleButtons:!1,createBottomContent:null},e);return(e,i,s,n,r)=>{const o=!!n,a=new R.BET({spacing:t.arrowButtonSpacing,children:o?[n,s,r]:[s],excludeInvisibleChildrenFromBounds:!t.layoutInvisibleButtons});return new R.SHm({spacing:t.verticalSpacing,children:[new R.BET({spacing:t.sliderPadding,children:[e,new R.NBX({children:[i],visibleProperty:t.hasReadoutProperty||null,excludeInvisibleChildrenFromBounds:!0})],layoutOptions:{stretch:!0}}),new R.NBX({children:[t.createBottomContent?t.createBottomContent(a):a],layoutOptions:{xMargin:t.sliderPadding}})]})}}}function Rr(e){const t=Object.keys(e);return Dr.filter(e=>_.includes(t,e)).length>0}l=Lr,_defineProperty(Lr,"NumberControlIO",new Hi.Z("NumberControlIO",{valueType:l,documentation:"A number control with a title, slider and +/- buttons",supertype:R.NBX.NodeIO})),_defineProperty(Lr,"SLIDER_TANDEM_NAME","slider"),ft.register("NumberControl",Lr);var Nr=i(6918);const Zr=(e,t,i)=>(t.labelTagName="p",t.labelContent=i,t);class qr extends ui{constructor(e,t,i,s){const n=(0,N.ZP)()({align:"left",arrowDirection:"down",arrowFill:"black",comboBoxVoicingNameResponsePattern:Er.VALUE_NAMED_PLACEHOLDER,cursor:"pointer",baseColor:"white",buttonAppearanceStrategy:hi.FlatAppearanceStrategy,xMargin:12,yMargin:8,stroke:"black",lineWidth:1,soundPlayer:Fi,enabledPropertyOptions:{phetioFeatured:!1},visiblePropertyOptions:{phetioFeatured:!1},localPreferredWidthProperty:new F.Z(null),localMinimumWidthProperty:new F.Z(null),tandem:ye.Z.OPTIONAL,containerTagName:"div",accessibleNameBehavior:Zr},s),r=n.xMargin,o=n.yMargin,a=Ur.getMaxItemWidthProperty(i),h=Ur.getMaxItemHeightProperty(i),l=new R.y$t(null,{fill:n.arrowFill}),d=_.find(t,t=>t.value===e.value),c=t.indexOf(d),u=new R.NBX({layoutOptions:{yMargin:o,grow:1,xAlign:n.align},children:[i[c]]}),p=new R.x12(0,0,0,0,{stroke:"black",lineWidth:n.lineWidth});n.content=new R.zch({rows:[[u,p,l]]}),Ze.Z.multilink([a,h],(e,t)=>{const i=t+2*o,s=i,a=.35*s,h=2*a*Math.sqrt(3)/3,d=r,c=r-n.lineWidth/2,m=-n.lineWidth/2;var g,y,A;l.shape=(g=n.arrowDirection,y=h,A=a,"up"===g?(new Nt.bn).moveTo(0,A).lineTo(y/2,0).lineTo(y,A).close():(new Nt.bn).moveTo(0,0).lineTo(y,0).lineTo(y/2,A).close()),l.mutateLayoutOptions({minContentWidth:s,minContentHeight:s}),u.mutateLayoutOptions({minContentWidth:e,minContentHeight:t,leftMargin:d,rightMargin:c}),p.y2=i,p.mutateLayoutOptions({rightMargin:m})}),n.xMargin=0,n.yMargin=0,super(n),this.minimumWidthProperty.link(e=>{n.localMinimumWidthProperty.value=e});const m=e=>{this.preferredWidth=e};n.localPreferredWidthProperty.link(m),this._blockNextVoicingFocusListener=!1,this.voicingFocusListener=()=>{!this._blockNextVoicingFocusListener&&this.defaultFocusListener(),this._blockNextVoicingFocusListener=!1};let g=null,y=null;const A=e=>{u.removeAllChildren(),y=_.find(t,t=>t.value===e);const s=t.indexOf(y),r=i[s];u.addChild(r),this.innerContent=y.a11yName||null;const o="string"==typeof n.comboBoxVoicingNameResponsePattern?new ot.Z(n.comboBoxVoicingNameResponsePattern):n.comboBoxVoicingNameResponsePattern;g&&g.dispose(),this.voicingNameResponse=g=new rs(o,{value:y.a11yName})};e.link(A),this.ariaLabelledbyAssociations=[{otherNode:this,otherElementName:R.Grz.LABEL_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING},{otherNode:this,otherElementName:R.Grz.PRIMARY_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING}],R.uai.mutateNode(this,"listbox"),this.disposeComboBoxButton=()=>{a.dispose(),h.dispose(),e.unlink(A),n.localPreferredWidthProperty.unlink(m),g&&g.dispose()},this.arrow=l,this.separatorLine=p}setDisplayOnly(e){this.arrow.visible=!e,this.separatorLine.visible=!e}blockNextVoicingFocusListener(){this._blockNextVoicingFocusListener=!0}dispose(){this.disposeComboBoxButton(),super.dispose()}}Je.register("ComboBoxButton",qr);class Fr extends((0,R.CHP)(R.NBX)){constructor(e,t,i,s,n){const r=(0,N.ZP)()({cursor:"pointer",align:"left",xMargin:6,highlightFill:"rgb( 245, 245, 245 )",highlightCornerRadius:4,tagName:"li",focusable:!0,ariaRole:"option",positionInPDOM:!0,voicingFocusListener:()=>this.comboBoxListItemNodeVoicingFocusListener(),comboBoxVoicingNameResponsePattern:Er.VALUE_NAMED_PLACEHOLDER,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Item",phetioType:R.RnV,phetioState:!0,visiblePropertyOptions:{phetioFeatured:!0}},n);r.comboBoxVoicingNameResponsePattern=r.comboBoxVoicingNameResponsePattern.get?r.comboBoxVoicingNameResponsePattern.get():r.comboBoxVoicingNameResponsePattern,r.innerContent=e.a11yName||null,r.voicingObjectResponse=e.a11yName||null;const o="string"==typeof r.comboBoxVoicingNameResponsePattern?new ot.Z(r.comboBoxVoicingNameResponsePattern):r.comboBoxVoicingNameResponsePattern,a=new rs(o,{value:e.a11yName});r.voicingNameResponse=a;const h=new R.AeJ({cornerRadius:r.highlightCornerRadius}),l=new R.NBX({children:[t]}),d=e=>{h.rectWidth=e,l.maxWidth=e};i.link(d);const c=e=>{h.rectHeight=e,l.maxHeight=e};s.link(c);const u=()=>{"left"===r.align?l.left=h.left+r.xMargin:"right"===r.align?l.right=h.right-r.xMargin:l.centerX=h.centerX,l.centerY=h.centerY};l.boundsProperty.lazyLink(u),u(),r.children=[h,l],super(r),this._supplyOpenResponseOnNextFocus=!1,this.item=e,this.localBoundsProperty.link(e=>{this.focusHighlight=Nt.bn.bounds(e)}),this.addInputListener({enter(){h.fill=r.highlightFill},exit(){h.fill=null}}),this.disposeComboBoxListItemNode=()=>{a.dispose(),i.unlink(d),s.unlink(c)}}supplyOpenResponseOnNextFocus(){this._supplyOpenResponseOnNextFocus=!0}dispose(){this.disposeComboBoxListItemNode(),super.dispose()}comboBoxListItemNodeVoicingFocusListener(){this.voicingSpeakFullResponse({nameResponse:this._supplyOpenResponseOnNextFocus?this.voicingNameResponse:null,objectResponse:this._supplyOpenResponseOnNextFocus?null:this.voicingObjectResponse,contextResponse:null,hintResponse:this._supplyOpenResponseOnNextFocus?this.voicingHintResponse:null}),this._supplyOpenResponseOnNextFocus=!1}}Je.register("ComboBoxListItemNode",Fr);class Yr extends Qi{constructor(e,t,i,s,n,r,o,a){const h=(0,N.ZP)()({highlightFill:"rgb( 245, 245, 245 )",comboBoxListItemNodeOptions:{},xMargin:12,yMargin:8,backgroundPickable:!0,tagName:"ul",ariaRole:"listbox",groupFocusHighlight:!0,focusable:!0,openedSoundPlayer:Zi,closedNoChangeSoundPlayer:xi,visiblePropertyOptions:{phetioReadOnly:!0}},a),l=new ps.Z(t=>{const i=e.value,r=t.currentTarget;n(),e.value=r.item.value,s(),this.voiceOnNewSelection(e.value,i,r),t.abort()},{parameters:[{phetioPrivate:!0,valueType:R.IAx}],tandem:o.createTandem("fireAction"),phetioEventType:ei.Z.USER}),d={up(e){l.execute(e)},keyup:e=>{e.domEvent&&R.ntP.isAnyKeyEvent(e.domEvent,[R.ntP.KEY_ENTER,R.ntP.KEY_SPACE])&&l.execute(e)},click:e=>{l.execute(e)}},c=Ur.getMaxItemWidthProperty(i),u=Ur.getMaxItemHeightProperty(i),p=new me.ZP([c],e=>e+h.xMargin),m=new me.ZP([u],e=>e+h.yMargin),g=[];let y;t.forEach((e,t)=>{const s=new Fr(e,i[t],p,m,(0,N.JA)({align:h.align,highlightFill:h.highlightFill,highlightCornerRadius:h.cornerRadius,xMargin:.5*h.xMargin,tandem:e.tandemName?o.createTandem(e.tandemName):ye.Z.OPTIONAL},h.comboBoxListItemNodeOptions));g.push(s),s.addInputListener(d)}),super(new R.SHm({spacing:0,excludeInvisibleChildrenFromBounds:!0,children:g}),(0,N.JA)({},h,{xMargin:h.xMargin/2,yMargin:h.yMargin/2})),this.voiceOnSelectionNode=r;const A=t.map(e=>e.soundPlayer?e.soundPlayer:We.getSelectionSoundPlayer(t.indexOf(e)));this.visibleProperty.lazyLink(i=>{if(i)h.openedSoundPlayer.play(),y=e.value;else if(y===e.value)h.closedNoChangeSoundPlayer.play();else{const i=t.findIndex(t=>t.value===e.value);A[i].play()}}),this.addInputListener({focus:()=>{if(this.visible){const t=this.getListItemNode(e.value);t.supplyOpenResponseOnNextFocus(),t.focus()}},keydown:e=>{if(e.domEvent&&R.ntP.isAnyKeyEvent(e.domEvent,[R.ntP.KEY_ESCAPE,R.ntP.KEY_TAB]))s(),n();else if(e.domEvent&&R.ntP.isAnyKeyEvent(e.domEvent,[R.ntP.KEY_DOWN_ARROW,R.ntP.KEY_UP_ARROW])){e.domEvent.preventDefault();const t=R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_DOWN_ARROW)?1:-1,i=this.visibleListItemNodes.indexOf(this.getFocusedItemNode()),s=i+t;this.visibleListItemNodes[s]&&this.visibleListItemNodes[s].focus(),e.pointer.reserveForKeyboardDrag()}else e.domEvent&&R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_HOME)?this.visibleListItemNodes[0].focus():e.domEvent&&R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_END)&&this.visibleListItemNodes[this.visibleListItemNodes.length-1].focus()}}),this.listItemNodes=g,this.visibleListItemNodes=g.slice(),this.disposeComboBoxListBox=()=>{for(let e=0;ee.visible)}isItemVisible(e){return this.getListItemNode(e).visible}getListItemNode(e){const t=_.find(this.listItemNodes,t=>t.item.value===e);return t}getFocusedItemNode(){const e=_.find(this.listItemNodes,e=>e.focused);return e}voiceOnNewSelection(e,t,i){const s={nameResponse:i.voicingNameResponse,objectResponse:null,contextResponse:i.voicingContextResponse,hintResponse:null};t===e&&(s.contextResponse=null),this.voiceOnSelectionNode.voicingSpeakResponse(s)}}Je.register("ComboBoxListBox",Yr);const Hr=(e,t,i,s)=>(s.push(()=>{e.button.accessibleName=i}),t),Gr=(e,t,i,s)=>(s.push(()=>{e.button.helpText=i}),t);class Ur extends((0,R.pL8)(R.NBX)){constructor(e,t,i,s){const n=(0,N.ZP)()({align:"left",listPosition:"below",labelXSpacing:10,disabledOpacity:.5,cornerRadius:4,highlightFill:"rgb( 245, 245, 245 )",xMargin:12,yMargin:8,buttonFill:"white",buttonStroke:"black",buttonLineWidth:1,buttonTouchAreaXDilation:0,buttonTouchAreaYDilation:0,buttonMouseAreaXDilation:0,buttonMouseAreaYDilation:0,listFill:"white",listStroke:"black",listLineWidth:1,openedSoundPlayer:Zi,closedNoChangeSoundPlayer:xi,tagName:"div",accessibleNameBehavior:Hr,helpTextBehavior:Gr,comboBoxVoicingNameResponsePattern:Er.VALUE_NAMED_PLACEHOLDER,comboBoxVoicingContextResponse:null,comboBoxVoicingHintResponse:null,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ComboBox",phetioType:Ur.ComboBoxIO,phetioEventType:ei.Z.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s),r=!!t[0].node?t.map(e=>e.node):_e(t,n.tandem.createTandem("items")),o=[];for(let a=0;a{this.button.blockNextVoicingFocusListener(),this.button.focus()},this.button,n.tandem.createTandem("listBox"),{align:n.align,highlightFill:n.highlightFill,xMargin:n.xMargin,yMargin:n.yMargin,cornerRadius:n.cornerRadius,fill:n.listFill,stroke:n.listStroke,lineWidth:n.listLineWidth,visible:!1,comboBoxListItemNodeOptions:{comboBoxVoicingNameResponsePattern:n.comboBoxVoicingNameResponsePattern,voicingContextResponse:n.comboBoxVoicingContextResponse,voicingHintResponse:n.comboBoxVoicingHintResponse},openedSoundPlayer:n.openedSoundPlayer,closedNoChangeSoundPlayer:n.closedNoChangeSoundPlayer,ariaLabelledbyAssociations:[{otherNode:this.button,otherElementName:R.Grz.LABEL_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING}]}),i.addChild(this.listBox),this.listParent=i,this.opacityProperty.link(e=>{this.listBox.opacityProperty.value=e}),this.mutate(n),this.button.addListener(()=>{this.listBox.visibleProperty.value=!this.listBox.visibleProperty.value,this.listBox.visibleProperty.value&&this.listBox.focus()}),this.display=null,this.clickToDismissListener={down:e=>{(!phet.chipper.isFuzzEnabled()||Nr.Z.nextDouble()<.005)&&(e.trail.containsNode(this.button)||e.trail.containsNode(this.listBox)||this.hideListBox())}},this.dismissWithFocusListener=e=>{e&&!e.trail.containsNode(this.listBox)&&this.hideListBox()},R.IKS.pdomFocusProperty.link(this.dismissWithFocusListener),this.listBox.localBoundsProperty.lazyLink(()=>this.moveListBox()),this.listBox.visibleProperty.link(e=>{e?(this.scaleListBox(),this.listBox.moveToFront(),this.moveListBox(),this.display=this.getUniqueTrail().rootNode().getRootedDisplays()[0],this.display.addInputListener(this.clickToDismissListener)):this.display&&this.display.hasInputListener(this.clickToDismissListener)&&(this.display.removeInputListener(this.clickToDismissListener),this.display=null)}),this.displayOnlyProperty=new se.Z(!1,{tandem:n.tandem.createTandem("displayOnlyProperty"),phetioFeatured:!0,phetioDocumentation:"disables interaction with the ComboBox and makes it appear like a display that shows the current selection"}),this.displayOnlyProperty.link(e=>{this.hideListBox(),this.button.setDisplayOnly(e),this.pickable=!e}),this.addLinkedElement(e,{tandem:n.tandem.createTandem("property")}),this.disposeComboBox=()=>{r.forEach(e=>e.dispose()),this.display&&this.display.hasInputListener(this.clickToDismissListener)&&this.display.removeInputListener(this.clickToDismissListener),R.IKS.pdomFocusProperty.unlink(this.dismissWithFocusListener),this.displayOnlyProperty.dispose(),this.listBox.dispose(),this.button.dispose()}}dispose(){this.disposeComboBox(),super.dispose()}showListBox(){this.listBox.visibleProperty.value=!0}hideListBox(){this.listBox.visibleProperty.value=!1}scaleListBox(){if(!this.listBox.localBounds.isEmpty()){const e=this.button.localToGlobalBounds(this.button.localBounds).width/this.button.localBounds.width,t=this.listBox.localToGlobalBounds(this.listBox.localBounds).width/this.listBox.localBounds.width;this.listBox.scale(e/t)}}moveListBox(){if("above"===this.listPosition){const e=this.localToGlobalPoint(new Ys.Z(this.button.left,this.button.top)),t=this.listParent.globalToLocalPoint(e);this.listBox.left=t.x,this.listBox.bottom=t.y}else{const e=this.localToGlobalPoint(new Ys.Z(this.button.left,this.button.bottom)),t=this.listParent.globalToLocalPoint(e);this.listBox.left=t.x,this.listBox.top=t.y}}setItemVisible(e,t){this.listBox.setItemVisible(e,t)}isItemVisible(e){return this.listBox.isItemVisible(e)}static getMaxItemWidthProperty(e){const t=_.flatten(e.map(e=>{const t=[e.boundsProperty];return(0,R.AXx)(e)&&(t.push(e.isWidthResizableProperty),t.push(e.minimumWidthProperty)),t}));return me.ZP.deriveAny(t,()=>Math.max(...e.map(e=>(0,R.S3T)(e)?e.minimumWidth||0:e.width)))}static getMaxItemHeightProperty(e){const t=e.map(e=>e.boundsProperty);return me.ZP.deriveAny(t,()=>Math.max(...e.map(e=>e.height)))}}d=Ur,_defineProperty(Ur,"ITEM_TANDEM_NAME_SUFFIX","Item"),_defineProperty(Ur,"ComboBoxIO",new Hi.Z("ComboBoxIO",{valueType:d,documentation:"A combo box is composed of a push button and a listbox. The listbox contains items that represent choices. Pressing the button pops up the listbox. Selecting from an item in the listbox sets the value of an associated Property. The button shows the item that is currently selected.",supertype:R.NBX.NodeIO,events:["listBoxShown","listBoxHidden"]})),Je.register("ComboBox",Ur);class zr extends R.NBX{constructor(e,t,i){const s=(0,N.ZP)()({alignChildren:zr.CENTER,tandem:ye.Z.OPTIONAL},i),n=_e(t,s.tandem.createTandem("elements")),r=e=>{for(let i=0;ie.dispose())}}dispose(){this.disposeToggleNode(),super.dispose()}static CENTER(e){for(let t=1;tt},{value:!1,createNode:()=>i}],s)}}Je.register("BooleanToggleNode",Wr);const Qr="data:audio/mpeg;base64,//swxAAABdzxBVQRADFFHaWrNxAA6lqlJJEQAExvBGPAACkboRpPkaQjfnfz5z/zvk6HfzvO//6nzn/8n8Wo50RIcE5h04AwQBAIwAHAAGGKl44UnQFxrI7b6JARZgWfzRC7X2cjUCZG/TgeAfXziIB7AOgm3/Dlw5chhj/4aoJEnxOhr/+bkURTNP+37dN///zd5/WqMcFKOhHs//syxAMACFBlQBnXgAEQCuRbvLAAMh2cNcpzMDxDOxVSMlAjYsYOAlbMUQJ8hAkSABkLAPbGhQfrk7xotjWuYO3uc9FKLMWDXX39eK91WL8a4ARAYAYFAQZg2BpmMcTuZ9zx5rwEJFAZZgjA1mC8BuLASofGAOAMhs/U/GV40k0Dkso2K6Npbban/lI2Pnd6J3///t66ABTcYocjaf/7MsQDgAX8JTutseaw6RRnNZCJDkFdpsKMGTznDUOCFN3UBmSx0M4MasPlPO6Ar07embS//T/2f27SK//YUG03dpZI2oMaBN8MJA5tI6MkldtNZgLZ+dUe9LvQy6Odv9a9cr9VPRUaBtgq9EWmz6Xj3KZTzOv1ylUAC+0kk0oAEUn+I0HZ6jICCWahweFTlrz07qq2Ls9T3N/Xljr/+zLEEgAFSBMjQWBgUI8CIvA3vAbc1Vf//uoAABTglUoQoEElDJAFw2zpqMe6sqMzu59/9uvz32/t/onv/5FMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxC8DwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Xr=q(W,Qr),Kr=Z.Z.createLock(Qr),Jr=new U;let jr=!1;const _r=()=>{jr||(Kr(),jr=!0)},$r=W.decodeAudioData(Xr.buffer,e=>{null===Jr.audioBufferProperty.value&&(Jr.audioBufferProperty.set(e),_r())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),Jr.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),_r()});$r&&$r.then(e=>{null===Jr.audioBufferProperty.value&&(Jr.audioBufferProperty.set(e),_r())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),_r()});const eo=Jr,to=new Qt(eo,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("toggleOffSoundPlayer",to);const io=to,so="data:audio/mpeg;base64,//swxAAAByAnDnWRADEZkyy3M0ALJQcEAMk013znpOVkWGNCg9vD4oJlTQcNxQBIJ0PxSUlJSCwfB8Hz+CAIAN/DH/gg78EHS7//9QIJSLq/wFHg+AwFAAAAAAfFvo6+SmoCLgXFVlJaBRlrks8EfgdfwNGNDIX1icAtgSPunkTDV42yCf+OWMmXBP4hJ/+RAZg8nmowgLA3CbIw//syxAOACDxjRhnXgAEOCqVnuqAERLIypm8wTCMyMagDMoYEAyRAAgCAQ9za/ELra7bNcNI9BMVmPx3pF7P7a/wstMTOL6//gwrwjSeVKioAAkqgEBggJpjMDZgiPBm+0xy7jJ482ppET4kOhhSHhg8CKMhgGASP09uliMpAaC+Gyqiiyjd9/QiJjzxL//////p9lUBqv86UKJp6wP/7MsQEgAWgKTMsbMLwvwUmdaCI3g146KXMwJVAHDYhAjvxQKf+SIBJPJWbIrZ/1aVs/k7Lf2//7QQilFbJGkVBjWeEsADYyEamuw0dNdmGxS1qmJCrAKrGJZ+TX/V+1zX0fitWyROXKQQiijI22kTAod9keTOhUgChZfu1VSXOv2ubHdG+h4jXu2fLMV00rQvomqNH8kAAAARGFj3/+zLEGgDFrBkvoeWAcKKCYxBngBYhtAWgNUjlVDuFH+de4qlT5ENEZ7/8t7K3cKjB1Q/kmOcRTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxDMDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",no=q(W,so),ro=Z.Z.createLock(so),oo=new U;let ao=!1;const ho=()=>{ao||(ro(),ao=!0)},lo=W.decodeAudioData(no.buffer,e=>{null===oo.audioBufferProperty.value&&(oo.audioBufferProperty.set(e),ho())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),oo.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),ho()});lo&&lo.then(e=>{null===oo.audioBufferProperty.value&&(oo.audioBufferProperty.set(e),ho())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),ho()});const co=oo,uo=new Qt(co,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("toggleOnSoundPlayer",uo);const po=uo;class mo extends me.WZ{constructor(e){super([e.looksOverProperty,e.looksPressedProperty],(e,t)=>e&&!t?Jt.OVER:t?Jt.PRESSED:Jt.IDLE,{valueType:Jt})}}Je.register("ToggleButtonInteractionStateProperty",mo);class go extends ii{constructor(e,t,i,s){const n=(0,N.ZP)()({tandem:ye.Z.REQUIRED},s);super(n),this.valueOff=e,this.valueOn=t,this.valueProperty=i;const r=e=>{(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted&&(e||this.toggle())};this.downProperty.link(r),this.toggledEmitter=new $t.Z({tandem:n.tandem.createTandem("toggledEmitter"),phetioDocumentation:"Emits when the button is toggled",phetioEventType:ei.Z.USER});this.toggledEmitter.addListener(()=>{this.valueProperty.value=this.valueProperty.value===this.valueOff?this.valueOn:this.valueOff}),this.disposeToggleButtonModel=()=>{this.downProperty.unlink(r),this.toggledEmitter.dispose()}}dispose(){this.disposeToggleButtonModel(),super.dispose()}toggle(){this.toggledEmitter.emit(),this.produceSoundEmitter.emit()}}Je.register("ToggleButtonModel",go);class yo extends di{constructor(e,t,i,s){const n=(0,N.ZP)()({valueOffSoundPlayer:io,valueOnSoundPlayer:po,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},s),r=new go(t,i,e,n),o=new mo(r);super(r,o,n),this.addLinkedElement(e,{tandem:n.tandem.createTandem("property")});const a=()=>{e.value===t?n.valueOffSoundPlayer.play():e.value===i&&n.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(a),this.disposeRectangularToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(a),r.dispose()}}dispose(){this.disposeRectangularToggleButton(),super.dispose()}}Je.register("RectangularToggleButton",yo);class Ao extends yo{constructor(e,t,i,s){const n=new Wr(e,t,i);super(e,!1,!0,(0,N.ZP)()({content:n,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},s)),this.disposeBooleanRectangularToggleButton=()=>{n.dispose()}}dispose(){this.disposeBooleanRectangularToggleButton(),super.dispose()}}Je.register("BooleanRectangularToggleButton",Ao);class fo extends Ao{constructor(e,t){const i=(0,N.ZP)()({sideLength:25,stroke:"black",touchAreaXDilation:5,touchAreaYDilation:5,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},t);i.cornerRadius=.1*i.sideLength,i.xMargin=.2*i.sideLength,i.yMargin=i.xMargin,i.buttonAppearanceStrategy=hi.FlatAppearanceStrategy;const s=.6*i.sideLength,n={lineWidth:.15*i.sideLength,stroke:"white",centerX:i.sideLength/2,centerY:i.sideLength/2,pickable:!1},r=(new Nt.bn).moveTo(s/2,0).lineTo(s/2,s).moveTo(0,s/2).lineTo(s,s/2),o=new R.y$t(r,n),a=(new Nt.bn).moveTo(-s/2,0).lineTo(s/2,0),h=new R.y$t(a,n);super(e,h,o,i);const l=e=>{this.baseColor=e?"rgb( 255, 85, 0 )":"rgb( 0, 179, 0 )",this.setPDOMAttribute("aria-expanded",e)};e.link(l),this.disposeExpandCollapseButton=()=>{e.unlink(l)}}dispose(){this.disposeExpandCollapseButton(),super.dispose()}}Je.register("ExpandCollapseButton",fo);var Po=i(8588);const bo=ls.Z.a11y.preferences.tabs.audio.voicing.titleStringProperty,Eo=ls.Z.a11y.preferences.tabs.audio.voicing.toolbar.titleStringProperty,vo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.titleStringProperty,wo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.labelStringStringProperty,Vo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.pitch.titleStringProperty,So=ls.Z.a11y.preferences.tabs.audio.voicing.voicingOnStringProperty,To=ls.Z.a11y.preferences.tabs.audio.voicing.voicingOffStringProperty,Co=ls.Z.a11y.preferences.tabs.audio.voicing.voicingOffOnlyAvailableInEnglishStringProperty,Io=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.variablesPatternStringProperty,xo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.titleStringProperty,ko=ls.Z.a11y.preferences.tabs.audio.voicing.toolbar.toolbarRemovedStringProperty,Bo=ls.Z.a11y.preferences.tabs.audio.voicing.toolbar.toolbarAddedStringProperty,Mo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.titleStringProperty,Do=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.descriptionStringProperty,Oo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.labelStringProperty,Lo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.labelStringProperty,Ro=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.labelStringProperty,No=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.enabledAlertStringProperty,Zo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.disabledAlertStringProperty,qo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.enabledAlertStringProperty,Fo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.disabledAlertStringProperty,Yo=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.enabledAlertStringProperty,Ho=ls.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.disabledAlertStringProperty,Go=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titleStringProperty,Uo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titlePatternStringProperty,zo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.noVoicesAvailableStringProperty,Wo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.expandedAlertStringProperty,Qo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.collapsedAlertStringProperty,Xo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.writtenVariablesPatternStringProperty,Ko=ls.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,Jo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.voiceRateNormalStringProperty,jo=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.lowStringProperty,_o=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.normalStringProperty,$o=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.aboveNormalStringProperty,ea=ls.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.highStringProperty,ta=ls.Z.preferences.tabs.audio.voicing.titleEnglishOnlyStringProperty,ia=ls.Z.preferences.tabs.audio.voicing.descriptionStringProperty,sa=new Map;sa.set(new Sn.Z(.5,.75),jo),sa.set(new Sn.Z(.75,1.25),_o),sa.set(new Sn.Z(1.25,1.5),$o),sa.set(new Sn.Z(1.5,2),ea);const na=new ni.Z(13,26),ra=new ni.Z(100,5);class oa extends dn{constructor(e,t){const i=Po.Z.validValues&&Po.Z.validValues.length>1?ta:bo,s=new R.xvT(i,fh.PANEL_SECTION_LABEL_OPTIONS),n=new rs(Ko,{label:i,description:ia}),r=new R.JxC(ia,(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:n})),o=new hn(e.voicingEnabledProperty,!1,!0,(0,N.JA)({a11yName:i},pn.TOGGLE_SWITCH_OPTIONS)),a=new cs({labelNode:s,descriptionNode:r,controlNode:o}),h=new R.xvT(Eo,fh.PANEL_SECTION_LABEL_OPTIONS),l=new hn(e.toolbarEnabledProperty,!1,!0,(0,N.JA)({a11yName:Eo,leftValueContextResponse:ko,rightValueContextResponse:Bo},pn.TOGGLE_SWITCH_OPTIONS)),d=new cs({labelNode:h,controlNode:l}),c=new R.xvT(Mo,(0,us.Z)({},fh.PANEL_SECTION_LABEL_OPTIONS,{tagName:"h3",innerContent:Mo})),u=new rs(Ko,{label:Mo,description:Do}),p=new R.JxC(Do,(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:u})),m=(e,t,i,s,n)=>{const r=new R.xvT(e,fh.PANEL_SECTION_CONTENT_OPTIONS),o=new qs(t,r,{labelTagName:"label",labelContent:e,voicingNameResponse:e,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:i,uncheckedContextResponse:s,disposer:n,tandem:ye.Z.OPT_OUT});return r.disposer=o,o},g=new R.NBX,y=new R.SHm({align:"left",spacing:5,children:[m(Oo,e.voicingObjectResponsesEnabledProperty,No,Zo,c),m(Lo,e.voicingContextResponsesEnabledProperty,qo,Fo,c),m(Ro,e.voicingHintResponsesEnabledProperty,Yo,Ho,c)]});g.children=[c,p,y],p.leftTop=c.leftBottom.plusXY(0,5),y.leftTop=p.leftBottom.plusXY(fh.CONTENT_INDENTATION_SPACING,5);const A=new aa(vo,wo,e.voiceRateProperty),f=new la(Vo,e.voicePitchProperty),P=new R.SHm({spacing:5,align:"left",children:[A,f]}),b=new R.xvT(xo,(0,us.Z)({},fh.PANEL_SECTION_LABEL_OPTIONS,{cursor:"pointer"})),E=new se.Z(!1),v=new fo(E,{sideLength:16,innerContent:xo,voicingNameResponse:xo,voicingIgnoreVoicingManagerProperties:!0,tandem:ye.Z.OPT_OUT}),w=new R.NBX({children:[b,v]}),V=new R.$o8({press:()=>{E.toggle()},tandem:ye.Z.OPT_OUT});b.addInputListener(V);const S=new R.NBX({children:[g,d,w,P]});d.leftTop=g.leftBottom.plusXY(0,20),b.leftTop=d.leftBottom.plusXY(0,20),v.leftCenter=b.rightCenter.plusXY(10,0),P.leftTop=b.leftBottom.plusXY(0,10),E.link(e=>{P.visible=e}),v.focusHighlight=new R.UQs(w),super({titleNode:a,contentNode:S});const T=e=>{S.visible=e};e.voicingEnabledProperty.link(T);const C=e=>{a.enabledProperty.value=e.startsWith("en")};Po.Z.link(C);const I=new zi.Z,x=t=>{e.voicingMainWindowVoicingEnabledProperty.value&&(I.alert=t?So:Po.Z.value.startsWith("en")?To:Co,this.isInsidePhetioArchetype()||R.LY3.speakIgnoringEnabled(I),this.alertDescriptionUtterance(I))};e.voicingEnabledProperty.lazyLink(x);let k=null;const B=t=>{k&&(P.removeChild(k),k.dispose());let i=[];if(t.length>0){i=R.LY3.getEnglishPrioritizedVoices().slice(0,12)}const s=phet.joist.sim.topLayer||new R.NBX;k=new ha(e.voiceProperty,i,s),P.addChild(k)};R.LY3.voicesProperty.link(B),E.lazyLink(e=>{const t=e?Wo:Qo;v.voicingSpeakContextResponse({contextResponse:t}),this.alertDescriptionUtterance(t)}),this.disposeVoicingPanelSection=()=>{h.dispose(),c.dispose(),b.dispose(),s.dispose(),f.dispose(),A.dispose(),e.voicingEnabledProperty.unlink(x),e.voicingEnabledProperty.unlink(T),R.LY3.voicesProperty.unlink(B),Po.Z.unlink(C),a.dispose(),E.dispose(),v.dispose(),d.dispose(),l.dispose(),I.dispose(),o.dispose(),r.dispose(),p.dispose(),n.dispose(),u.dispose(),k&&k.dispose()}}dispose(){this.disposeVoicingPanelSection(),super.dispose()}}class aa extends Lr{constructor(e,t,i){super(e,i,i.range,{includeArrowButtons:!1,layoutFunction:Lr.createLayoutFunction4(),delta:.25,titleNodeOptions:(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45}),numberDisplayOptions:{decimalPlaces:2,valuePattern:Io,textOptions:(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45})},sliderOptions:{thumbSize:na,trackSize:ra,keyboardStep:.25,minorTickSpacing:.25,labelTagName:"label",labelContent:t,voicingOnEndResponseOptions:{withNameResponse:!0}},tandem:ye.Z.OPT_OUT}),this.slider.voicingNameResponse=t,this.slider.voicingIgnoreVoicingManagerProperties=!0;const s=new rs(Xo,{value:i}),n=new me.ZP([i,Jo,s],(e,t,i)=>1===e?t:i);this.slider.voicingObjectResponse=n,this.disposeVoiceRateNumberControl=()=>{n.dispose(),s.dispose()}}dispose(){this.disposeVoiceRateNumberControl(),super.dispose()}}class ha extends Ur{constructor(e,t,i,s){const n=(0,N.ZP)()({listPosition:"above",accessibleName:Go,comboBoxVoicingNameResponsePattern:Uo.value,tandem:ye.Z.OPT_OUT},s),r=[];0===t.length&&r.push({value:null,createNode:e=>new R.xvT(zo,fh.PANEL_SECTION_CONTENT_OPTIONS),a11yName:zo}),t.forEach(e=>{r.push({value:e,createNode:t=>new R.xvT(e.name,fh.PANEL_SECTION_CONTENT_OPTIONS),a11yName:e.name})}),e.set(r[0].value),super(e,r,i,n),this.button.voicingIgnoreVoicingManagerProperties=!0,this.disposeVoiceComboBox=()=>{r.forEach(e=>{e.value=null})}}dispose(){this.disposeVoiceComboBox(),super.dispose()}}class la extends R.SHm{constructor(e,t){const i=new R.xvT(e,fh.PANEL_SECTION_CONTENT_OPTIONS),s=t.range,n=new Cr(t,s,{majorTickLength:10,thumbSize:na,trackSize:ra,keyboardStep:.25,shiftKeyboardStep:.1,constrainValue:e=>Ve.Z.roundToInterval(e,.01),labelTagName:"label",labelContent:e,voicingNameResponse:e,voicingIgnoreVoicingManagerProperties:!0,tandem:ye.Z.OPT_OUT}),r=new R.xvT("Low",{font:new Et(14)});n.addMajorTick(s.min,r);const o=new R.xvT("High",{font:new Et(14)});n.addMajorTick(s.max,o),super();const a=(e,t)=>{n.voicingObjectResponse=this.getPitchDescriptionString(e)};t.link(a),this.mutate({children:[i,n],spacing:5}),this.disposeVoicePitchSlider=()=>{i.dispose(),n.dispose(),r.dispose(),o.dispose(),t.unlink(a)}}dispose(){this.disposeVoicePitchSlider(),super.dispose()}getPitchDescriptionString(e){let t="";return sa.forEach((i,s)=>{s.contains(e)&&(t=i)}),t}}Bt.Z.register("VoicingPanelSection",oa);const da=oa;class ca extends R.NBX{constructor(e,t,i,s){super((0,N.ZP)()({tagName:"div",labelTagName:"h2",tandem:ye.Z.OPTIONAL},s));const n=Ze.Z.multilink([t,i],(t,i)=>{this.visible=t===e&&i});this.disposePreferencesPanel=()=>{Ze.Z.unmultilink(n)}}dispose(){this.disposePreferencesPanel(),super.dispose()}}Bt.Z.register("PreferencesPanel",ca);const ua=ca;class pa extends Le.Z{}_defineProperty(pa,"OVERVIEW",new(c=pa)),_defineProperty(pa,"SIMULATION",new c),_defineProperty(pa,"VISUAL",new c),_defineProperty(pa,"AUDIO",new c),_defineProperty(pa,"INPUT",new c),_defineProperty(pa,"LOCALIZATION",new c),_defineProperty(pa,"enumeration",new Oe.Z(c)),Bt.Z.register("PreferencesType",pa);const ma=ls.Z.preferences.tabs.audio.audioFeatures.titleStringProperty;class ga extends ua{constructor(e,t,i,s){super(pa.AUDIO,t,i,{labelContent:ma});const n={align:"left",spacing:fh.CONTENT_SPACING,excludeInvisibleChildrenFromBounds:!1},r=new R.SHm(n),o=new R.SHm(n);if(e.supportsVoicing){const t=new da(e);r.addChild(t),this.disposeEmitter.addListener(()=>t.dispose())}if(e.supportsSound){const t=e.supportsVoicing!==e.supportsSound,i=new Vn(e,{includeTitleToggleSwitch:!t});o.addChild(i),this.disposeEmitter.addListener(()=>i.dispose())}const a=new R.BET({align:"top",spacing:10,children:[r,o],tagName:"div"});e.customPreferences.forEach((e,t)=>{const i=t%2==0?r:o,n=e.createContent(s.tandem),a=new dn({contentNode:n,contentNodeOptions:{excludeInvisibleChildrenFromBounds:!0},contentLeftMargin:0});i.addChild(a),this.disposeEmitter.addListener(()=>{n.dispose(),a.dispose()})});const h=new R.xvT(ma,fh.PANEL_SECTION_LABEL_OPTIONS),l=new hn(e.audioEnabledProperty,!1,!0,(0,N.JA)({a11yName:ma,disposer:this},pn.TOGGLE_SWITCH_OPTIONS)),d=new cs({labelNode:h,controlNode:l,headingControl:!0}),c=e=>{a.enabled=e};e.audioEnabledProperty.link(c);const u=new R.SHm({align:"center",spacing:25,children:[d,a]});this.addChild(u),this.disposeAudioPreferencesPanel=()=>{r.dispose(),o.dispose(),d.dispose(),h.dispose(),a.dispose(),u.dispose(),e.audioEnabledProperty.unlink(c)}}dispose(){this.disposeAudioPreferencesPanel(),super.dispose()}}Bt.Z.register("AudioPreferencesTabPanel",ga);const ya=ga;class Aa extends ua{constructor(e,t,i,s){const n=(0,N.ZP)()({labelContent:"Simulation",phetioVisiblePropertyInstrumented:!1},s);super(pa.SIMULATION,t,i,n);const r=new R.SHm({align:"left",spacing:fh.CONTENT_SPACING});this.addChild(r);const o=[];e.customPreferences.forEach(e=>{const t=e.createContent(n.tandem),i=new dn({contentNode:t});this.disposeEmitter.addListener(()=>{i.dispose(),t.dispose()}),o.push(i)}),r.children=o,this.disposeSimulationPreferencesPanel=()=>{r.dispose()}}dispose(){this.disposeSimulationPreferencesPanel(),super.dispose()}}Bt.Z.register("SimulationPreferencesPanel",Aa);const fa=Aa,Pa=ls.Z.a11y.preferences.tabs.input.gestureControl.enabledAlertStringProperty,ba=ls.Z.a11y.preferences.tabs.input.gestureControl.disabledAlertStringProperty,Ea=ls.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class va extends ua{constructor(e,t,i,s){super(pa.INPUT,t,i,{labelContent:"Input"});const n=new R.SHm({spacing:fh.CONTENT_SPACING,align:"left"});if(this.addChild(n),e.supportsGestureControl){const t=new R.xvT("Gesture Control",(0,us.Z)({disposer:this},fh.PANEL_SECTION_LABEL_OPTIONS)),i=new R.yhY("Use touch with custom swipes and taps instead. No direct touch with gesture control enabled.",(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:350,maxHeight:100,disposer:this,readingBlockNameResponse:xt.Z.fillIn(Ea,{label:"Gesture Control",description:"Use touch with custom swipes and taps instead. No direct touch with gesture control enabled."})})),s=new hn(e.gestureControlsEnabledProperty,!1,!0,(0,N.JA)({a11yName:"Gesture Control",leftValueContextResponse:ba,rightValueContextResponse:Pa,disposer:this},pn.TOGGLE_SWITCH_OPTIONS)),r=new cs({labelNode:t,descriptionNode:i,controlNode:s,disposer:this}),o=new dn({titleNode:r,contentLeftMargin:0,disposer:this});n.addChild(o)}const r=new R.SHm({spacing:fh.CONTENT_SPACING,align:"left"});e.customPreferences.forEach(e=>{const t=e.createContent(s.tandem);this.disposeEmitter.addListener(()=>t.dispose()),r.addChild(new R.NBX({children:[t]}))});const o=new dn({contentNode:r,contentLeftMargin:0});n.addChild(o),this.disposeInputPreferencesPanel=()=>{n.dispose(),o.dispose(),r.children.forEach(e=>e.dispose()),r.dispose()}}dispose(){this.disposeInputPreferencesPanel(),super.dispose()}}Bt.Z.register("InputPreferencesPanel",va);const wa=va;class Va extends cs{constructor(e,t){const i=new R.JxC(ls.Z.projectorModeStringProperty,fh.PANEL_SECTION_LABEL_OPTIONS),s=new R.JxC(ls.Z.preferences.tabs.visual.projectorModeDescriptionStringProperty,fh.PANEL_SECTION_CONTENT_OPTIONS),n=phet.chipper.colorProfiles.find(e=>e!==R.iaM.PROJECTOR_COLOR_PROFILE),r=new hn(e,n,R.iaM.PROJECTOR_COLOR_PROFILE,pn.TOGGLE_SWITCH_OPTIONS),o=new rs(ls.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,{label:ls.Z.projectorModeStringProperty,description:ls.Z.preferences.tabs.visual.projectorModeDescriptionStringProperty});s.readingBlockNameResponse=o,super((0,N.ZP)()({labelNode:i,descriptionNode:s,controlNode:r},t)),this.disposeProjectorModeToggleSwitch=()=>{i.dispose(),s.dispose(),r.dispose(),o.dispose()}}dispose(){this.disposeProjectorModeToggleSwitch(),super.dispose()}}Bt.Z.register("ProjectorModeToggleSwitch",Va);const Sa=Va,Ta=ls.Z.preferences.tabs.visual.interactiveHighlightsStringProperty,Ca=ls.Z.preferences.tabs.visual.interactiveHighlightsDescriptionStringProperty,Ia=ls.Z.a11y.preferences.tabs.visual.interactiveHighlights.enabledAlertStringProperty,xa=ls.Z.a11y.preferences.tabs.visual.interactiveHighlights.disabledAlertStringProperty,ka=ls.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class Ba extends ua{constructor(e,t,i,s){const n=(0,N.ZP)()({labelContent:"Visual"},s),r=n.tandem;n.tandem=ye.Z.OPTIONAL,super(pa.VISUAL,t,i,n);const o=new R.SHm({spacing:fh.CONTENT_SPACING,align:"left"});if(e.supportsProjectorMode){const t=new Sa(e.colorProfileProperty);o.addChild(t),this.disposeEmitter.addListener(()=>t.dispose())}if(e.supportsInteractiveHighlights){const t=new R.xvT(Ta,fh.PANEL_SECTION_LABEL_OPTIONS);t.disposer=this;const i=new rs(ka,{label:Ta,description:Ca},{disposer:this}),s=new R.JxC(Ca,(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:i,disposer:this})),n=new hn(e.interactiveHighlightsEnabledProperty,!1,!0,(0,N.JA)({a11yName:Ta,leftValueContextResponse:xa,rightValueContextResponse:Ia,disposer:this},pn.TOGGLE_SWITCH_OPTIONS)),r=new cs({labelNode:t,descriptionNode:s,controlNode:n,disposer:this});o.addChild(r)}e.customPreferences.forEach(e=>{const t=e.createContent(r),i=new R.NBX({children:[t]});o.addChild(i),this.disposeEmitter.addListener(()=>{t.dispose(),i.dispose()})});const a=new dn({contentNode:o,contentLeftMargin:0});this.addChild(a),this.disposeVisualPreferencesPanel=()=>{a.dispose(),o.dispose()}}dispose(){this.disposeVisualPreferencesPanel(),super.dispose()}}Bt.Z.register("VisualPreferencesPanel",Ba);const Ma=Ba;class Da extends Ur{constructor(e,t,i){const s=(0,N.ZP)()({yMargin:3,tandem:ye.Z.OPT_OUT},i);super(e,t.map((e,t)=>{const i=new R.NBX({children:[e.icon]}),s=new R.BET({children:[i,new R.xvT(e.label,fh.PANEL_SECTION_CONTENT_OPTIONS)],spacing:10});return{value:e,createNode:e=>s}}),phet.joist.sim.topLayer,s)}}Bt.Z.register("RegionAndCultureComboBox",Da);const Oa=Da;class La extends R.AeJ{constructor(e,t){const i=xt.Z.localeToLocalizedName(t),s=phet.chipper.queryParameters.dev?xt.Z.wrapLTR(`${i} (${t})`):i,n=new R.xvT(s,{font:fh.CONTENT_FONT});super(n.bounds.dilated(5),{cursor:"pointer",tagName:"button"}),n.center=this.center,this.addChild(n),this.locale=t;const r=new R.eMb({fire:()=>{e.value=t},tandem:ye.Z.OPT_OUT});this.addInputListener(r),r.isOverProperty.link(e=>{this.stroke=e?R.JPB.getInnerGroupHighlightColor():R.Ilk.TRANSPARENT});const o=e=>{this.fill=e===t?Pi.PHET_LOGO_BLUE:null};e.link(o),this.disposeLanguageSelectionNode=()=>{n.dispose(),e.unlink(o),this.removeInputListener(r),r.dispose()}}dispose(){this.disposeLanguageSelectionNode(),super.dispose()}}Bt.Z.register("LanguageSelectionNode",La);class Ra extends Qi{constructor(e){const t=e.validValues.slice().sort((e,t)=>{const i=xt.Z.localeToLocalizedName(e).toLowerCase(),s=xt.Z.localeToLocalizedName(t).toLowerCase();return i.localeCompare(s,"en-US",{sensitivity:"base"})}),i=new R.zch({xMargin:5,xAlign:"left",autoRows:15,maxWidth:1e3,resize:!1,children:t.map(t=>new La(e,t))});super(i),this.disposeLocalePanel=()=>{i.children.forEach(e=>{e.dispose()}),i.dispose()}}dispose(){this.disposeLocalePanel(),super.dispose()}}Bt.Z.register("LocalePanel",Ra);const Na=Ra,Za=ls.Z.preferences.tabs.localization.titleStringProperty,qa=ls.Z.preferences.tabs.localization.regionAndCulture.titleStringProperty;class Fa extends ua{constructor(e,t,i,s){const n=(0,N.ZP)()({labelContent:Za,phetioVisiblePropertyInstrumented:!1},s);super(pa.LOCALIZATION,t,i,n);const r=new R.SHm({spacing:fh.CONTENT_SPACING});if(e.regionAndCultureProperty.value){const t=new Oa(e.regionAndCultureProperty,e.characterSets);r.addChild(new R.BET({spacing:10,children:[new R.xvT(qa,fh.PANEL_SECTION_CONTENT_OPTIONS),t]})),this.disposeEmitter.addListener(()=>t.dispose())}if(e.supportsDynamicLocales&&e.includeLocalePanel){const t=new Na(e.localeProperty);r.addChild(t),this.disposeEmitter.addListener(()=>t.dispose())}e.customPreferences.forEach(e=>{const t=e.createContent(s.tandem);this.disposeEmitter.addListener(()=>t.dispose()),r.addChild(new R.NBX({children:[t]}))}),r.align=r.children.length>1?"left":"center";const o=new dn({contentNode:r,contentLeftMargin:0});this.addChild(o)}}Bt.Z.register("LocalizationPreferencesPanel",Fa);const Ya=Fa,Ha=new me.ZP([Po.Z],e=>"ltr"===phet.chipper.localeData[e].direction);Bt.Z.register("isLeftToRightProperty",Ha);const Ga=Ha;class Ua extends ua{constructor(e,t){super(pa.OVERVIEW,e,t);const i=(0,us.Z)({},fh.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:null,lineWrap:600,maxHeight:600,tagName:"p"}),s=[new R.yhY(ls.Z.preferences.tabs.general.accessibilityIntroStringProperty,i),new R.yhY(ls.Z.preferences.tabs.general.moreAccessibilityStringProperty,i)],n=new R.SHm({spacing:10,children:s});this.addChild(n);const r=e=>{s.forEach(t=>{const i=e?"left":"right";t.align=i,n.align=i})};Ga.link(r),this.disposeOverviewPreferencesPanel=()=>{Ga.unlink(r),n.dispose(),s.forEach(e=>e.dispose())}}dispose(){this.disposeOverviewPreferencesPanel(),super.dispose()}}Bt.Z.register("OverviewPreferencesPanel",Ua);const za=Ua;class Wa extends R.NBX{constructor(e,t,i,s,n){const r=(0,N.ZP)()({phetioVisiblePropertyInstrumented:!1},n);super(r),_defineProperty(this,"content",[]),this.selectedTabProperty=i;const o=new R.Lkj({matchVertical:!1});let a=null;if(t.includes(pa.OVERVIEW)){a=new za(i,s.getTabVisibleProperty(pa.OVERVIEW));const e=o.createBox(a);this.addChild(e),this.content.push(new Qa(a,pa.OVERVIEW))}let h=null;if(t.includes(pa.SIMULATION)){h=new fa(e.simulationModel,i,s.getTabVisibleProperty(pa.SIMULATION),{tandem:r.tandem.createTandem("simulationPreferencesPanel")});const t=o.createBox(h);this.addChild(t),this.content.push(new Qa(h,pa.SIMULATION))}let l=null;if(t.includes(pa.VISUAL)){l=new Ma(e.visualModel,i,s.getTabVisibleProperty(pa.VISUAL),{tandem:r.tandem.createTandem("visualPreferencesPanel")});const t=o.createBox(l);this.addChild(t),this.content.push(new Qa(l,pa.VISUAL))}let d=null;if(t.includes(pa.AUDIO)){d=new ya(e.audioModel,i,s.getTabVisibleProperty(pa.AUDIO),{tandem:r.tandem.createTandem("audioPreferencesPanel")});const t=o.createBox(d);this.addChild(t),this.content.push(new Qa(d,pa.AUDIO))}let c=null;if(t.includes(pa.INPUT)){c=new wa(e.inputModel,i,s.getTabVisibleProperty(pa.INPUT),{tandem:r.tandem.createTandem("inputPreferencesPanel")});const t=o.createBox(c);this.addChild(t),this.content.push(new Qa(c,pa.INPUT))}let u=null;if(t.includes(pa.LOCALIZATION)){u=new Ya(e.localizationModel,i,s.getTabVisibleProperty(pa.LOCALIZATION),{tandem:r.tandem.createTandem("localizationPreferencesPanel")});const t=o.createBox(u);this.addChild(t),this.content.push(new Qa(u,pa.LOCALIZATION))}this.disposePreferencesPanel=()=>{o.dispose(),this.content.forEach(e=>e.dispose()),a&&a.dispose(),h&&h.dispose(),l&&l.dispose(),d&&d.dispose(),c&&c.dispose(),u&&u.dispose()}}dispose(){this.disposePreferencesPanel(),super.dispose()}getSelectedContent(){for(let e=0;e{e.focusable=!1}})}}Bt.Z.register("PreferencesPanels",Wa);const Xa=Wa,Ka=new Nt.bn("M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z").makeImmutable();class Ja extends((0,R.CHP)(R.NBX)){constructor(e,t,i,s){const n=(0,N.ZP)()({iconNode:null,phetioFeatured:!0,visiblePropertyOptions:{phetioFeatured:!0},cursor:"pointer",tagName:"button",innerContent:e,ariaRole:"tab",focusable:!0,containerTagName:"li",containerAriaRole:"presentation"},s),r=new R.xvT(e,fh.TAB_OPTIONS),o=[r];n.iconNode&&o.push(n.iconNode);const a=new R.BET({children:o,spacing:8}),h=new R.AeJ({children:[a]}),l=new R.x12(0,0,0,0,{stroke:R.YiU.INNER_FOCUS_COLOR,lineWidth:5});a.boundsProperty.link(e=>{h.rectBounds=e.dilatedXY(15,10),l.x2=e.width,l.centerTop=e.centerBottom.plusXY(0,5)}),super(n),this.children=[h,l],this.value=i;const d=new rs(ls.Z.a11y.preferences.tabs.tabResponsePatternStringProperty,{title:e});this.voicingNameResponse=d;const c=new R.$o8({press:()=>{t.set(i),this.voicingSpeakNameResponse()},tandem:ye.Z.OPT_OUT});this.addInputListener(c);const u=Ze.Z.multilink([t,c.isOverProperty],(e,t)=>{h.opacity=e===i?1:t?.8:.6,this.focusable=e===i,l.visible=e===i});this.disposePreferencesTab=()=>{u.dispose(),c.dispose(),d.dispose(),a.dispose(),h.dispose(),r.dispose()}}dispose(){this.disposePreferencesTab(),super.dispose()}}Bt.Z.register("PreferencesTab",Ja);const ja=Ja;class _a extends R.BET{constructor(e,t,i){const s=(0,N.ZP)()({tagName:"ul",ariaRole:"tablist",groupFocusHighlight:!0,spacing:10},i);super(s),_defineProperty(this,"selectedButton",null),_defineProperty(this,"content",[]),this.selectedPanelProperty=t;const n=t=>_.includes(e,t);n(pa.OVERVIEW)&&this.content.push(new ja(ls.Z.preferences.tabs.overview.titleStringProperty,t,pa.OVERVIEW,{tandem:s.tandem.createTandem("overviewTab")})),n(pa.SIMULATION)&&this.content.push(new ja(ls.Z.preferences.tabs.simulation.titleStringProperty,t,pa.SIMULATION,{tandem:s.tandem.createTandem("simulationTab")})),n(pa.VISUAL)&&this.content.push(new ja(ls.Z.preferences.tabs.visual.titleStringProperty,t,pa.VISUAL,{tandem:s.tandem.createTandem("visualTab")})),n(pa.AUDIO)&&this.content.push(new ja(ls.Z.preferences.tabs.audio.titleStringProperty,t,pa.AUDIO,{tandem:s.tandem.createTandem("audioTab")})),n(pa.INPUT)&&this.content.push(new ja(ls.Z.preferences.tabs.input.titleStringProperty,t,pa.INPUT,{tandem:s.tandem.createTandem("inputTab")})),n(pa.LOCALIZATION)&&this.content.push(new ja(ls.Z.preferences.tabs.localization.titleStringProperty,t,pa.LOCALIZATION,{iconNode:new R.y$t(Ka,{scale:.04,fill:"black"}),tandem:s.tandem.createTandem("localizationTab")})),this.children=this.content;const r=Ze.Z.multilinkAny([t,...this.content.map(e=>e.visibleProperty)],()=>{if(!this.content.find(e=>e.value===t.value).visibleProperty.value){const e=this.content.find(e=>e.visibleProperty.value);e&&(t.value=e.value)}}),o={keydown:e=>{e.pointer.reserveForKeyboardDrag()},keyup:e=>{if(R.ntP.isAnyKeyEvent(e.domEvent,[R.ntP.KEY_RIGHT_ARROW,R.ntP.KEY_LEFT_ARROW])){e.domEvent.preventDefault();const i=R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_RIGHT_ARROW)?1:-1;for(let e=0;e{this.content.forEach(e=>{e.value===this.selectedPanelProperty.value&&(this.selectedButton=e)})};t.link(a),1===e.length&&(this.focusable=!1,this.inputEnabledProperty.value=!1),this.disposePreferencesTabs=()=>{this.removeInputListener(o),t.unlink(a),Ze.Z.unmultilink(r),this.content.forEach(e=>e.dispose())}}getTabVisibleProperty(e){const t=_.find(this.content,t=>t.value===e);return t.visibleProperty}focusSelectedTab(){this.content.forEach(e=>{e.value===this.selectedPanelProperty.value&&e.focus()})}dispose(){this.disposePreferencesTabs(),super.dispose()}}Bt.Z.register("PreferencesTabs",_a);const $a=_a,eh="data:audio/mpeg;base64,//u0xAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAJAAAWgAAcHBwcHBwcHBwcHDg4ODg4ODg4ODg4VVVVVVVVVVVVVVVxcXFxcXFxcXFxcY6Ojo6Ojo6Ojo6OqqqqqqqqqqqqqqrHx8fHx8fHx8fHx+Pj4+Pj4+Pj4+Pj//////////////8AAAA8TEFNRTMuOTlyAc0AAAAAAAAAADTAJAZWgQAAwAAAFoAfYOmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//u0xAAAGVl/C7SWAAQ5waj/NTAAIMASBDAKik4AwBgmKw2TmwUFAAwTJ3kABAMHguIANBIJlSWDc/gJYlmY7vHAgExOeMksRz8qAgIhfAAAIWOvixxODQRDzpYWONiQIijb4s5sSBIMHNXg3J9iWJYlmZmfr7LBLM38WU6ZpSjCwwPIiWBAGh5Vu/62YGCzm169+W1699gkA0LCcCAHDyFev9hYvMzMzfgODyEkGDmnZLJ75wBMG5+jWOThIAmFatgwWUYMAbg3BuI5PfxYsXvnxOHxGH1HIY0c51BgoGERbZnQ1MHMXUMxqvH6a3ojLAnpD8qAQzRkIBkSZ01QEgUw4sxYxd7X5oeca*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*ntKoZy2uKuVrpmmL8QpCoLi2vVC2vUNYXj9Qv1kgzk4FuRKtYVQnl8qk8jle9YVaX0kydeIlU97Q0sSF+PnmiCAVSDVhewqSFr4V10qweTxcZCUyAKDUdVmNAkAEXC+aGx48nEEBp9GSR1OhSsAUAZI+5HuqPGPLNs53sAIKhqSCaYLhwnDOcqSrIhS5MyRJpIiIw9WMUI0GrRSRJVUkQCkaiKARLSKNFgECHEWsUtKpCoVNikyRJAk9VmOWhIXESKVktJ2z4qoUibZXEhJVmo54y2pTCpKrkqInxtCMiURCZMUikUkts1JpZqUkLOLbHCI0RE1oSXNz+SbNkLMYykmzS0yFmTUlVCZ6udDBEKnkJlZCQhktiVP8kt2mGpHnoyCiA//u0xFQAFJGA2aSZNKMnNZKxzTAlCSoDGlYIaVGpygYYefKF0UpWkqkrtgp6HRRPZ5axHA+enRVOHHuXIak+k6KgHkM9YJwSlxO+7i7XWv7etVMjdXHJVJA/RPnrxiHQnFtT7Ubs7M81d1qM5hc9lw+EkhHZdLh2oMkqI6XmSVTa388cpVBk+crFS06YfpGtgvy6B6ubzT5iVVCpnL8ZJXz2BGeprtHKHFuQrC0SWDoeSoZnhGAiKi22w9p6SjtQfUMkPvmzPZvfXN6zV52lmQL/9EfSDeEzcSop1UxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//u0xAADwAAAAAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",th=q(W,eh),ih=Z.Z.createLock(eh),sh=new U;let nh=!1;const rh=()=>{nh||(ih(),nh=!0)},oh=W.decodeAudioData(th.buffer,e=>{null===sh.audioBufferProperty.value&&(sh.audioBufferProperty.set(e),rh())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),sh.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),rh()});oh&&oh.then(e=>{null===sh.audioBufferProperty.value&&(sh.audioBufferProperty.set(e),rh())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),rh()});const ah=sh;class hh extends we{constructor(e,t){super(ah,t);const i=()=>{this.play()};e.lazyLink(i),this.disposePreferencesTabSwitchSoundGenerator=()=>{e.unlink(i)}}dispose(){this.disposePreferencesTabSwitchSoundGenerator(),super.dispose()}}Bt.Z.register("PreferencesTabSwitchSoundGenerator",hh);const lh=hh,dh=new Et({size:24,weight:"bold"}),ch=new Et(20),uh={font:ch,maxWidth:120},ph=new Et(16),mh={font:ph,maxWidth:500},gh=new Et({weight:"bold",size:16}),yh={font:gh,maxWidth:360};class Ah extends os{constructor(e,t){const i=new R.xvT(ls.Z.preferences.titleStringProperty,{font:dh,tagName:"h1",innerContent:ls.Z.preferences.titleStringProperty,stringProperty:ls.Z.preferences.titleStringProperty}),s=(0,N.ZP)()({titleAlign:"center",title:i,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:ls.Z.preferences.titleStringProperty,positionInPDOM:!0},t),n=[pa.OVERVIEW];e.supportsSimulationPreferences()&&n.push(pa.SIMULATION),e.supportsVisualPreferences()&&n.push(pa.VISUAL),e.supportsAudioPreferences()&&n.push(pa.AUDIO),e.supportsInputPreferences()&&n.push(pa.INPUT),e.supportsLocalizationPreferences()&&n.push(pa.LOCALIZATION);const r=new lt(pa.OVERVIEW,{validValues:n,tandem:s.tandem.createTandem("selectedTabProperty")}),o=new $a(n,r,{tandem:s.tandem.createTandem("preferencesTabs")}),a=new Xa(e,n,r,o,{tandem:s.tandem.createTandem("preferencesPanels")}),h=new R.SHm({children:[o,new R.qYj({layoutOptions:{bottomMargin:20,stretch:!0}}),a]}),l=new lh(r,{initialOutputLevel:.2});Ge.addSoundGenerator(l,{categoryName:"user-interface"}),super(h,s),this.preferencesTabs=o,this.preferencesPanels=a,o.addInputListener({keydown:e=>{R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_DOWN_ARROW)&&this.focusSelectedPanel()}}),h.addInputListener({keydown:e=>{R.ntP.isKeyEvent(e.domEvent,R.ntP.KEY_UP_ARROW)&&this.preferencesPanels.isFocusableSelectedContent(e.target)&&this.focusSelectedTab()}}),this.disposePreferencesDialog=()=>{h.dispose(),Ge.removeSoundGenerator(l),l.dispose(),o.dispose(),r.dispose(),a.dispose(),i.dispose()}}focusSelectedTab(){this.preferencesTabs.focusSelectedTab()}focusSelectedPanel(){this.preferencesPanels.focusSelectedPanel()}dispose(){this.disposePreferencesDialog(),super.dispose()}}_defineProperty(Ah,"TAB_FONT",ch),_defineProperty(Ah,"TAB_OPTIONS",uh),_defineProperty(Ah,"TITLE_FONT",dh),_defineProperty(Ah,"CONTENT_FONT",ph),_defineProperty(Ah,"CONTENT_MAX_WIDTH",500),_defineProperty(Ah,"PANEL_SECTION_CONTENT_OPTIONS",mh),_defineProperty(Ah,"PANEL_SECTION_LABEL_FONT",gh),_defineProperty(Ah,"PANEL_SECTION_LABEL_MAX_WIDTH",360),_defineProperty(Ah,"PANEL_SECTION_LABEL_OPTIONS",yh),_defineProperty(Ah,"CONTENT_SPACING",20),_defineProperty(Ah,"CONTENT_INDENTATION_SPACING",15),_defineProperty(Ah,"LABEL_CONTENT_SPACING",10),Bt.Z.register("PreferencesDialog",Ah);const fh=Ah;class Ph extends R.SHm{constructor(e){const t=fh.PANEL_SECTION_CONTENT_OPTIONS,i=new tt(mt,[{createNode:()=>new R.xvT(rt.ieeeStringProperty,t),value:ut.IEEE,tandemName:"ieeeRadioButton"},{createNode:()=>new R.xvT(rt.iecStringProperty,t),value:ut.IEC,tandemName:"iecRadioButton"},{createNode:()=>new R.xvT(rt.britishStringProperty,t),value:ut.BRITISH,tandemName:"britishRadioButton"}],{tandem:e.createTandem("schematicTypeRadioButtonGroup"),radioButtonOptions:{radius:8}}),s=new tt(At,[{createNode:()=>new R.xvT(rt.magnitudeStringProperty,t),value:gt.MAGNITUDE,tandemName:"magnitudeRadioButton"},{createNode:()=>new R.xvT(rt.signedStringProperty,t),value:gt.SIGNED,tandemName:"signedRadioButton"}],{tandem:e.createTandem("ammeterReadoutRadioButtonGroup"),radioButtonOptions:{radius:8}});super({align:"left",spacing:fh.CONTENT_SPACING,tandem:e,children:[new R.xvT(rt.schematicStandardStringProperty,fh.PANEL_SECTION_LABEL_OPTIONS),i,new R.qYj,new R.xvT(rt.ammeterReadoutStringProperty,fh.PANEL_SECTION_LABEL_OPTIONS),s]}),this.disposeCCKCSimulationPreferencesContentNode=()=>{i.dispose(),s.dispose()}}dispose(){this.disposeCCKCSimulationPreferencesContentNode(),super.dispose()}}it.register("CCKCSimulationPreferencesContentNode",Ph);const bh={PAUSED_DT:1e-6,ZOOM_SCALES:[.5,1,1.6],RETURN_ITEM_HIT_BOX_RATIO:.2,TOOLBOX_ICON_HEIGHT:31,TOOLBOX_ICON_WIDTH:60,METER_PRECISION:2,DEFAULT_RESISTANCE:10,DEFAULT_CAPACITANCE:.1,DEFAULT_BATTERY_RESISTANCE:ct.batteryMinimumResistance,BATTERY_RESISTANCE_RANGE:new Sn.Z(ct.batteryMinimumResistance,10),RIGHT_SIDE_PANEL_MIN_WIDTH:190,VERTICAL_MARGIN:5,HORIZONTAL_MARGIN:10,TAP_THRESHOLD:15,SLIDER_TRACK_SIZE:new ni.Z(160,5),FONT_AWESOME_ICON_SCALE:.07,HIGHLIGHT_LINE_WIDTH:5,WIRE_RESISTIVITY_RANGE:new Sn.Z(ct.wireResistivity,.0168),WIRE_CROSS_SECTIONAL_AREA:5e-4,MINIMUM_WIRE_RESISTANCE:1e-14,MINIMUM_RESISTANCE:1.1e-10,DRAG_BOUNDS_EROSION:20,CHARGE_SEPARATION:28,BATTERY_LENGTH:102,AC_VOLTAGE_LENGTH:68,SWITCH_LENGTH:112,SWITCH_START:1/3,SWITCH_END:2/3,RESISTOR_LENGTH:110,FUSE_LENGTH:110,WIRE_LENGTH:100,CAPACITOR_LENGTH:110,INDUCTOR_LENGTH:110,COIN_LENGTH:85,ERASER_LENGTH:90,PENCIL_LENGTH:130,HAND_LENGTH:140,DOG_LENGTH:170,DOLLAR_BILL_LENGTH:140,PAPER_CLIP_LENGTH:75,SERIES_AMMETER_LENGTH:121,CORNER_RADIUS:6,SCHEMATIC_LINE_WIDTH:4,MAX_RESISTANCE:1e9,BULB_SCALE:2.52,HIGH_EDITOR_DELTA:100,HIGH_RESISTANCE:1e3,HIGH_RESISTANCE_RANGE:new Sn.Z(100,1e4),PANEL_LINE_WIDTH:1.3,THUMB_SIZE:new ni.Z(13,24),MAJOR_TICK_LENGTH:18,MINOR_TICK_LENGTH:12,FONT_SIZE:14,DEFAULT_FONT:new Et(14),NUMBER_OF_WIRES:50,NUMBER_OF_TIME_DIVISIONS:4,CHART_SERIES_COLOR:"#404041",DC_CAROUSEL_SCALE:1.2,AC_CAROUSEL_SCALE:.85,MAX_DT:.5};it.register("CCKCConstants",bh);const Eh=bh,vh=ye.Z.GLOBAL_VIEW.createTandem("colorProfile"),wh={screenBackgroundColorProperty:new R.rtN(it,"screenBackgroundColor",{default:"#99c1ff"}),textFillProperty:new R.rtN(it,"textFill",{default:"black"}),panelFillProperty:new R.rtN(it,"panelFill",{default:"#f1f1f2"}),panelStrokeProperty:new R.rtN(it,"panelStroke",{default:"black"}),highlightStrokeProperty:new R.rtN(it,"highlightStroke",{default:"yellow"}),editPanelFillProperty:new R.rtN(it,"editPanelFill",{default:"rgba( 255, 255, 255, 0.5 )"}),conventionalCurrentArrowFillProperty:new R.rtN(it,"conventionalCurrentArrowFill",{default:"red"},{tandem:vh.createTandem("conventionalCurrentArrowFillProperty")}),conventionalCurrentArrowStrokeProperty:new R.rtN(it,"conventionalCurrentArrowStroke",{default:"white"},{tandem:vh.createTandem("conventionalCurrentArrowStrokeProperty")})};it.register("CCKCColors",wh);const Vh=wh;var Sh=i(9883);class Th extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({size:Rh.MINIMUM_HOME_SCREEN_ICON_SIZE,maxIconWidthProportion:.85,maxIconHeightProportion:.85,fill:"white",stroke:null},t),s=new R.AeJ(0,0,i.size.width,i.size.height,{fill:i.fill,stroke:i.stroke});e.pickable=!1;const n=()=>{e.setScaleMagnitude(1),e.setScaleMagnitude(Math.min(i.maxIconWidthProportion*s.width/e.width,i.maxIconHeightProportion*s.height/e.height)),e.center=s.center};e.localBoundsProperty.link(n),i.children=[s,e],super(i),this.disposeScreenIcon=()=>{e.localBoundsProperty.hasListener(n)&&e.localBoundsProperty.unlink(n)}}dispose(){this.disposeScreenIcon(),super.dispose()}}Bt.Z.register("ScreenIcon",Th);const Ch=ls.Z.a11y.screenNamePatternStringProperty,Ih=ls.Z.a11y.screenSimPatternStringProperty,xh=ls.Z.a11y.simScreenStringProperty,kh=new ni.Z(548,373),Bh=new ni.Z(147,100),Mh=Bh.width/Bh.height,Dh=kh.width/kh.height;class Oh extends Se.Z{constructor(e,t,i){const s=(0,N.ZP)()({name:null,instrumentNameProperty:!0,backgroundColorProperty:new ot.Z("white"),homeScreenIcon:null,showUnselectedHomeScreenIconFrame:!1,navigationBarIcon:null,showScreenIconFrameForNavigationBarFill:null,maxDT:.5,createKeyboardHelpNode:null,descriptionContent:null,tandem:ye.Z.REQUIRED,phetioType:Oh.ScreenIO,phetioState:!1,phetioFeatured:!0},i);if(super(s),!s.homeScreenIcon){const e=new R.AeJ(0,0,kh.width,kh.height);s.homeScreenIcon=new Th(e,{fill:s.backgroundColorProperty.value,maxIconWidthProportion:1,maxIconHeightProportion:1})}s.navigationBarIcon||(s.navigationBarIcon=s.homeScreenIcon),Lh(s.homeScreenIcon,kh,Dh,"homeScreenIcon"),Lh(s.navigationBarIcon,Bh,Mh,"navigationBarIcon"),this.backgroundColorProperty=s.backgroundColorProperty,s.name?(this.nameProperty=s.name,s.instrumentNameProperty&&this.addLinkedElement(s.name,{tandem:s.tandem.createTandem("nameProperty")})):this.nameProperty=new ot.Z(""),this.homeScreenIcon=s.homeScreenIcon,this.navigationBarIcon=s.navigationBarIcon,this.showUnselectedHomeScreenIconFrame=s.showUnselectedHomeScreenIconFrame,this.showScreenIconFrameForNavigationBarFill=s.showScreenIconFrameForNavigationBarFill,this.createKeyboardHelpNode=s.createKeyboardHelpNode,this.pdomDisplayNameProperty=new me.ZP([this.nameProperty],e=>null===e?"":xt.Z.fillIn(Ch,{name:e})),this.maxDT=s.maxDT,this.createModel=e,this.createView=t,this._model=null,this._view=null,this.activeProperty=new se.Z(!0,{tandem:s.tandem.createTandem("activeProperty"),phetioReadOnly:!0,phetioDocumentation:"Indicates whether the screen is currently displayed in the simulation. For single-screen simulations, there is only one screen and it is always active."}),this.descriptionContent="",s.descriptionContent?this.descriptionContent=s.descriptionContent:this.nameProperty.value?this.descriptionContent=new rs(Ch,{name:this.nameProperty}):this.descriptionContent=xh}get model(){return this._model}get view(){return this._view}hasModel(){return!!this._model}hasView(){return!!this._view}reset(){}initializeModel(){this._model=this.createModel()}initializeView(e,t,i,s){var n;this._view=this.createView(this.model),this._view.setVisible(!1),phet.chipper.queryParameters.dev&&this._view.addChild((n=this._view.layoutBounds,new R.y$t(Nt.bn.bounds(n),{stroke:"red",lineWidth:3,pickable:!1}))),phet.chipper.queryParameters.showVisibleBounds&&this._view.addChild(function(e){const t=new R.y$t(Nt.bn.bounds(e.visibleBoundsProperty.value),{stroke:"blue",lineWidth:6,pickable:!1});return e.visibleBoundsProperty.link(e=>{t.shape=Nt.bn.bounds(e)}),t}(this._view)),Ze.Z.multilink([t,e,this.pdomDisplayNameProperty],(e,t,n)=>{let r;r=1===i?e:s?t:xt.Z.fillIn(Ih,{screenName:n,simName:t}),this._view.setScreenSummaryIntroAndTitle(t,n,r,i>1)})}}function Lh(e,t,i,s){e.width,e.height}u=Oh,_defineProperty(Oh,"HOME_SCREEN_ICON_ASPECT_RATIO",Dh),_defineProperty(Oh,"MINIMUM_HOME_SCREEN_ICON_SIZE",kh),_defineProperty(Oh,"MINIMUM_NAVBAR_ICON_SIZE",Bh),_defineProperty(Oh,"ScreenIO",new Hi.Z("ScreenIO",{valueType:u,supertype:(0,Sh.Z)(Hi.Z.ObjectIO),documentation:"Section of a simulation which has its own model and view."})),Bt.Z.register("Screen",Oh);const Rh=Oh,Nh=new Image,Zh=Z.Z.createLock(Nh);Nh.onload=Zh,Nh.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAF1CAYAAADYyfG/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAydpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LmRlZTNhNzcwMywgMjAyMi8wOC8xOC0xNjo1MDozMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRkU3ODRBNEM5MTFFRDhENkFCQzIwODFBMDY4ODAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRkU3ODNBNEM5MTFFRDhENkFCQzIwODFBMDY4ODAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ0QTlENDc5NjkwQTExRTlBQjc2OTAwRTBGQkM2REFEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ0QTlENDdBNjkwQTExRTlBQjc2OTAwRTBGQkM2REFEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bgytBgABTBpJREFUeNrsvQm0bUdZJ/7V3vvMdx7efVPyMocEJDKD2gTQRaORLFtUoDV/sZtO2kWriN29EOzJoVGUFtv+q2FonHBqZZIAAkYUfa*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*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*k5af1PYDLrnkiXHHjc4QFhtdboYZzk/ictmXBTLsBv/fhL8Cb3/1p2JkggbLTrMEd//TJ8OJnXQNT7bqwkIgQEuVO5TFqN2psrIfwgU+fgnd98uvw1TNbY5/3xPI0vPgZV8ALn3Y1XHN0EXpDd2SdksgEzUSJ6EJ8i2kKlT5LJDLEz2E5HrSmTsP04ueh1uixMdeRl2z8TmZUGHnbWf9W2F37Vvb52GUju7qk300WHtlNZfqsXshHnx36gXgWn/zqGfjwvQ/Bpc0eLM+24aojc/DM647CDSeWocWeV605BW7rGGxM3QTbs0/77lfccvmHxnleb797z7JCj8/qeM3W3Ve+oBXuxzrwpvet23u7G1dalj1oTc+fe41ERso05YPuI3RQhKxISf1GxH2U1QLRtQqZpEDdpKX4x/l+2XPAOiT/l+MX//jB42ce+vJfPPDFv3/mIyc/K1wHl197E1x9w7MvXP3EZz/zZ196xZrau8JE1Oxgz3rHR4YzEA6utwL3akKDRbbR8h9ohO5VFvg3JBGelNjn/uD99UfZtr7B/eTUctYpaXw4tGq74DQv/YsXTPm8roId9q2pwenfXe597bb57hegycgIoUOAJoFOqw0Lc+14tVliUw9CmloZLCBKZgakJEUlJMl2MNrMjMmsqZbLC0ZZNuwrWtviGjRP0qSRBQYyVgolboJEQa0W+3xkAZoc/P4t22LntgQhicwBxKjJ88/xz1v7dADwAFr+Y8fnTsgdofmAVaKMhjnkVGd+UllGVG+GWPu9Bx78DNG1C29gEhREtIRET6gSQkLT72VJcT6cNzo2hd2+C+fWuvDQhU347Knz8MC5DVhiZORJVx6CGy9fgm+5+jAcXZoSLhESdCFwH4BadwgOoR/8g7vc/zJoHfv5f8VIRbIhve2vdx22VqcsOmAr3LvW4t/jaxb8qxqBN0uofzS5DrY22ZqtxWvWYuvVWWevPRjazfup3ehyBaNsQ/+ZWxcDgMUHJrHiIhCphaSsZPntBa6ESdOdqrLPg8qBPsjywVWsKqZaLeNYciaxFo20lUv2A/d96u9O3vs333b+4ftge/0SnHjC0+CZL3jpXUcvv+6VP/uyKy9Uve//+dGNOdvvfY/t7bzUcreey36fI+GQKZE+F3Bp5kpmr48DLyhPa7SbEDjTW74z9YWwPvdW3576AK+aOuOe/cih3hefN7d3EurDs3E2yEhflDVTUkQgDBkk+a2D5rM49Du6OOfmpdPw4H3/ADubkYWEGJT4TAwJHVlIrrjhSXDNt3ybuK8o9da02UavCwtJpw7v+NAX4df+16dg1x3fgsktJD/+PTfB933bdTDdjmNI0iwb0BIAbiHZZBvbXZ+6H/78E/fDV06PbyG54tAMfN+zr4IXPv1quO74IuwNPMW+QTWEBAqsInpDMYFszAdIJJNYHjTaj0B7/l5waj3GYbMWjIwVLeP6iY7Bp3Jv66mwt/lU8VoUQ0IN16wjUcYkaeP9kTj4lXPu06s78PlTF+HzD5yHr51eBZ89t2ddfwye/5Qr4ejiNCxON6Hm2Jnzc+7Uq5+AS62bYHP6Sb952y3X/mRk/Rgctt3tlxBv97scf/u7bH+vTUKXrVkvjr4NRxQ9TRsj4kJCu8aWb4Ot2amLQW32w2F9+kNBbeYDodXceeXzm+F+LARFsriszMEdEzQLHadeyLj74CSWhKJ7KqqQPm6V1bJmeADjNb08SIuVCdoYkiJ/11sKTDW6zoVFMRGmqGNTGd4iclI2iAfFzNVrLiJLRHPNxPDwxukwWTWqebC3s7y7tXrT3u4m1OttuOqJz4brbvqOSyvHr35VQkaKirK97e6eY/l7h+yg/7y6t/siy+89l/i9o7a/W7N5ETLKCUmQ8ZULgU8SgR8TC65V8oJlgTtnsWMN3f5K3bJ+rk361y96j1nzwwfA8daY/A9ETYYq2fT8lNxa4gWh2Gy5Vt6s2+CIFFf9ppa8YhVsfyRzHyTK7OCad8y1dLXJqOHB0/g4Nq/lIf6ISQHJx6QkL3FCksbIkMmjSCxxXiKOZ1tW4ZjyZ5VYNviPKcah3CqT3G90TmtCU0VqgSCGpGEeuiFnKhErJbD89yQbR3WlGB+2lAAj7GKEW3f4PAwjCwlMXqNBvuYMYSbZOip8LvOU4W7fhe29Aez2hzA/1RJumqdccwSOL82yv5vQZMQx6wZiz46tm6lwDRz/q2Dvuj/xzndt3lpzOn/H3pt1vO5NJOhdZvtdywoGgozwdQZxTFFyVVbmmbMxDGxRvI0pHSuM2Pww9bvPDWrdFwVW+0Pv+Kv2xyync+GV39kJq3SGV2XYHRPGwY3T6Z1OKPOpImfVzMxxleM7Sr53x83lGSuTKOamOJ2y/VPef+XvH4RCb8o2uv1mdNn8PwHPdY8y0RdOzSzC/OJRTkj+4cT1T3nha6UqirrJ+baP9S3iu3XH3fz+2nDjp+1g9ybb69W4RYRyDUtUQg2ZTPMjLUsqapUKd5q1lFh0wPudM0G3Bx3YvKFj7cE82YKZ4CLUg00IrEBUUlU3E73UiFw3fc+Djd0B9IdMK2Zk5NDcFDTbNiMkVNGcs0XE8sGUectKcj/Wfuz/NPq+4zjs3giMbi2vLSdnFoTEqUUb+j6ePXc58PPyH34sEoaFBCD6rCe+NykhScbLYRp8dLzJCBVN8nCl2iTZ5yi5P9J4IRJbQALhetqH0Th9ZqIqCVFtO9VCccE4xyC7XpJvBoFI9w3ZWqnXHFia7cD8sSY8+8bjcNnyLMwyctKs2eLeovktXQ+12TMeQis8CzVvAE1//cQ2WbjNpQ3hKmOLWRRmI4EvSFZizUyuId/1IIjnCxtLyuZE0Lco2TrhDJu3BXbnJUFt6qteY/HX/+dH/Xfd8V2zg3FG903vXbO7O+s3esO9K1ud2Xtf//KrzhyUFRzxfz5KK7XqrBcJ4yuzSHBWVVRXo4pZ5/aK1oFxm92N4x4pi5oepz5Lldfeso/sFRHVHJdst+36zszc8ueDy697drM9e+H41U96iUxGdN99+909xwl6VxO39zRnuP5zdXftBuL3wAr7whpCU9cMiWWiNUoPyGi3quWACkLCLSWzjgvL9i5MkR7YMGAClmvVbBOOAw1lER+qGjh/jX0+8AMYsJ8LW13Y2OnDTLsO7WZduch*eDAaxpDoT2cJaims/tfBQqUYIic3XfHMl1uiadPsOUbRtCjFPo1FMiMM2GLZngJXUl6DSRkCyZEhYF9jGwzX0iJyNn4IrrBTsumvsvA4/liAkpMAbwsuQRyTCsvdjISEREeKBx/x4fpgPVSUmS4c8hiNCoj67nKskrUoXTziL91KyRsXxhKGJQJGPKHuNUTwNH7voy0FmjozmfSGn0RyYKtONSNasaBlx/jbdbsLRxRnhlllZmILrTxyCuU4zJnuQumiywdARAeM5QfO1LjTgPNjDLmz7HXChJZ4plVYTjcfL9Jxp7HPk1Y4JrxIc+vGaZ3LA7rct2n86G9SfYyrE4js+4v9FwK0lz2+GVSwevZ2N69bOP/wG9u+3Ts+v/N2b3jdzG+95FblqrUI3RtX9qaoMr2K9qVoVvIpVfRKrUNH9lwW9mvaaslYoye/y94lm3EzXXpRxo7t2+ZrJ79xDnXi0R51M6ZhSUP6e3A1VPQ5J5U+SCRhmvq97rcpnTNds6swqf7ase+s4n61ynEmPMc73eRNPJkd//DkQ/vJdO5bvDmtOveG99paZ8G33QpPJGJ/QuIxHrMj/67gz7Ds+unZ9vX/hd+z+xefa7pZlid4wXqQ1ZQzF2Y1It3Fk4j+Y0PR9D7xhD5Zru3C83YOZOjcfu+D6oWR2p4UuAeGqYTfQ7Xtw6uwafPyLj8LD5zfg0PwUvOBpV8NTrz0iSEDdjogEqEWtCvRZqrps2F+Xzj0C993zN7C5tg2NVnWbb1I5/oanPhW+5dnfKSp5Br6v0alJRofmm+FcpwF3vvce+MU//FvY6o9PSKZadXjNS54BP/i8JzKi1hSEJAiLj9Nu1gSxe/cnvgJ/9NH74EuPrI993qsPz8EP3nw9fO9zrocnsI2013cVG9UotNjkPTFZFggo1ecy35SeHHGB1B8Eu/lJ9vx3lc2fZi15ijCKCBDbhgfPBjr4tpiMBBWYx3jbFdXcB18rASOsvPbI3tAD1wtELNDSXEe4IcXzU7KE5HFJSETNYr/ZvIpNBy4NO7A2nAIPasL9YqkWOqr4C+PX1BiZKC4qLqzH08J5KwKrBWGdZ/kc/wO3c/z2f/n8aWEp4f2fdPLqjmdE8uXfvPnjv3XqC3/z45dOf10UZHz6C1765F+47bovi+/eIzxHFjXtI0Tk+ed/L5P5POPemnBvq+rfMU0HUmX7hML1cPsz4+q694ixycjC6lu0/hy3x/2mREdzqBZaLtxhmu+lJEXqYcXfT85x56dHz+YO6TX5WI51/oKz/6chm08LPkoqCCB1jdCCEc1/u2nUUOjE8oNf0yC+puZkYyQ2xoG4vrKdUB0LIsRXm31mLz5Um/2Pd+1qxx+Iu8DStvw724733v4+Gw7bzoA0bfbR4czb33tObIwWP0YIe9EYs++xX97+nmDapv2X18LdH6q5azfYwzWmbA5E8/RUAyW6mhDVwOtg2MSHZm3IiMgAWoyMODVhgwDijDabUFMWXP6dsyg7cKBBLdH3pTf0RSDgRncAK0szsLI4DUfZv/VGLSqZTmmVoc4p0AmJEpryPhJeuKWjwa4lCC1huclP5SwhcRghaTTqwqqyH1g2t5DU0nGwSghJnZ2z3vCZZu5M7qYi0f3W6tF53VAvsYmmJkk1QZoXAiQlsSR9gpST0YkfGomsU42a6HcE4BcE3xYLlKLvyY6g5Or5bjwz0xKxP/z3MI6R4nPYiqud6MSinMDMNZE6W0/TDUZwLBe6Xh887rEhPC7JHv+BpkQvqfnDFBNGrB26B9Tf4ebK28BzZ3/3Pe0/9a3m5yxqXcxeYPT93/rzIbj97kpw7uQ/333kS3DpwftguHURlucWP/dfumv/ZmFh+f2NZmuPX2OcKTeI5QyTmWSg3UuoySJFzPJVkwyVFQrKM6W6SsPgS5924k/6hIw8DhIB96XhdKrM9fiv9Htv+ctoI4/D2hLClz1ffE2j16TzynxdGZe3vn907FQRo5rPSuPNP/LWu5TvSf9/6wdiUhm9b73lrtQSmAoW/pnEOvjWD0YmPu5edOzP/EU/NyBEw6Lj9L1U81UDGUEOZIRMDn5Ga44FYz59rqKIovqlnQQu0CK9xFSnguajC2im0Hj+XkemTcUknLEOqJq5ohuVbOokp0uR7PUUfF9OLaXxZLIjepEZd7FJ8lnDtDFnimnT7TpY9ajaJCUO5Lzmhuduso4kv/uBLywiR2YBltm52jYTtD53AVnpNajfK9Iwm806XHV0AW68cgU2dvuwtbsH9z+6Bivz07A0PyU2xRrb3LlAL1z4Be4JHmBr1xWXTQVmQ2PjuHBJcPM/uxYrsFLzINEQOxpfC79mh22G3OUyscuGExtGLOp8DPi5uSQIwkJLFo9bEC4edl6LTEZI+DjxFGfubmiwY7l+mCF46tqT5xItcAPlLG7yc5NcNtHbPBbJgoDQNKhYDj6W69JQRbbFjgwx9pblpGNPZHXUYE0gBpOeabyJJOMzJDhe32EsrW1GJGzNeGSOK10bpTywmz8HRjIJL8nH1n3IKxvXxHuZtgWaNSdns6UyTFNohzcD5HEmTvc8kOHZW4O+e6vdG4Lf94TWkMzn5GicEDfZr4dXz8Ea7UG/TmDv0kPw0N2/X+s8/Ok756+4Gpz2lOguHfa*gmUmbAGraTSV7bfJZGMUTqVxCW39H3kUyBRI1Y5ROEzJ67vJYRU7RyFpA5OlJQv15ieQBjPyC3OMZD3dAib7UI7GSZwYe0QTHZ9abtBmzz/M6hfXsXgwuuwPecKoh2jHEz4t9djhyB8pWPZ2CQXhZ5GZ8NxFxtJjiTqPfafIgCOEKcDvv4xYDtpd81qmf+jtlYSfnogWSQrEXET2jzAgQrcpAK1lTxuErJhpNdVYXMIc70kwXUl05LQ0hsbKERE6SEF09gablIGhmLLIUPhlai+gsR9n0Drn6ppqVQDPPY5Sbmq5xns1RrwNpd8BeWGC/zwFpzvD5FXWXJVb+2jQbhU5QJq9xMzSvfdJgGtv8DIHlKQvmeHxB4IDP/qVhtOgpKX/WVNqM6jy4z5qFJ159GDZ7fTj5yCV45NwmLDzcgqfccAwO80254Qi/fGRqptmMFs08S4MlSdLvxhabOsn0JAGtENAZ8Ph3eDxDq1UXab++T9LwG60gIZGFhLDP10RjtkmVfCK+32THabaiANlAEBLDvsp+aozgtZgqXauz89qTx5Dw7/Pz1toNaBF13irkXgkF0Q2izignE5KRVTZyt4h6uKEj4oxCZdWm82C0KHPuIf4KH7uG3WB/BaJQGpBMqE/monUvp8+U5G1DGbkRywEroSdx5ossiiktVKOzojruSyD8Hkx4LM6xMWgwQrxDYX0QgMcD0QtiR8osiDqFgQfMEroHlrsLdncTnK0tCHu7QD0vrQKQbja2A4u9PTjubcLQ9uDB3jo8unYGFvYuwdWDcxAyOcSJrE1DSZhSbTB6liMRrWUnVSqliU8BRsHlun4PUvBbPFqjXcSK/6JhnpCIYZeLNCaW4Vj7VwlJJiRp9JnEhW4iUNI5aoTq96vc5hHdUzvZo6StvZ0ycUpHLThofj+h2jk4cn+S3DlVewYZyV0qDTPJLhSn0b+kJySFOz8pdd9oVxOp4HvJWBvKlodKPuRuroqjTdY2aQXfkdYNZWQ02vvLcDq5YiWBwnaxqhA3WSHkzweiV0o0J0QQo87oLQsuPh5M6BJe02CmBdYCIyPtGaDNNgj1qnyAtFqslqDQAGaaFBanKUyxf2vxTKxJ59ESHWouN15jG/30VBOuvmxRpEj2hz7c9+AFeODMOlxY3xUxJQ22GbfqkcuCX4dWq8wJuZHAFi4b28qm+47ps+UbA9+kqUhNpqVWMVGQq84tFWRf3bMth583cjmJomdBaO73w1UzXvlTnNeamAjx7/HvC1LDrTNBIMWnVrV0VLA8KJs7keyJIQ+JC2xwPaI1LulGlSiiymL3wIlo0kHYaFXLyTeSs3oR3f1xRxAP5ArC9GvRmqVpMC4xnIMWWKVlacm3zOkGI/5tRqhrBPwtCht7ARsfO+qMbXrIVGNlNn1WXDhTaFqRLZ7RXqiFfQjcLQC3x28Sohz82B3J1tN86MNldfbadB02dm14bNOFS9ubsLt1gRHiDky1GoKUZ4Ljqezqy2/6WnGvWqcyhflofisaDZxkbzdsRVRhggUar45EZwsX6bdPSk3DrzkGjRtOmhR61cqkMyaElcV9uRGhKBBF6TGZ3YoJOHXGSs3frEBIxELTqQRqO/GSTZ2o3lUDIdH2elcFm07TUko+l3IqA7EiJWqciYxByUMjpHiGFjwJX2jfvvA5C96V1IEgVvZyZdMA01Zoiz37DiMhi4eAzi4AZa8JRqMIT60bpeAzsrCzRJdcKrroztIhNHjqL5v9ASVZN1p6nFD7TEZt3KNnzlMkuSa4PNeBK48uwmOXtsT1XNrswtnVXTi8OMMIS4Pt7VFNjxBCreaqPltKw9RKwn2aYWJxVJ6ZyeKWCkaS1oWLTfCcMIZ5f7WqccrSdR91SPhx+XygdLRGQqOLJCqSFaakje7ntPEtham2n6nRKs2NUD6XmmUDWctRTqOV5okhcSiqHZMxXZsstNmSe6JTMw2VeSmXjg8NJ87ZzZXPxho3e91jmzUP+uVjwINWuWWgzjOiHCtjaDbJEWqQEfIz9l1fXEO75cC0T6AbEBgOKQRU03+niGUWybPILwmEKTLcxSkyxTgJ4cqG6zJy6EXPikQuyyn+XrMhLLMP7/TAg03YZmOxy16e5WS82RRjQRXtWm+/KdiEVfqduX5asmckm1EoPwjt3kWpzpKRbxeQd9FLLhu5mnRySSEtj3XRuc9DquxhNG3cqLottd+zJIs/qMHTtHDa666TqIkKNL/Nysdzmq3WGP4S08rXTVqDFJA+qzXzA9EKIv26oGMRHW2X0WSnCdUJZSAZljm2phoh0S0CUnHI8/fIi2ht9QdwaXcPNti/XAC2a3U4MjMFy9NNIexIMsapIGdj0WhBMDMvfsLZefF3QvDIfgSUBF4rhHfPna7zHx/q4QDCgQ/crZoSEkM57bx1kGRcVEG8PpqMcCzONOHw/BRcdmgG1jZ7cObSJhyaa4nX20y4WZSm2mjRWKpaFRewPL1YO+OIwYyp3AZ3lfiuJ6q08iyb0iDOkJFJz4/Ouw8+EvKCcewYgYhopCIziRbYJ7kLLIjPO2l/K7GM2G7ns+NQthn6Q1+fiFASL1Rqp9VauBIzvSdiEGiFwSMa6wmFKIvLH3rxrPQzV0JKpE72/bxilxSsW13fhVOn12C7OxTUjfequeLIgkj1jYri6a14Om6mc5NDrKgQm8JM24YdphQQrwaeVxfKME8tNylrOsXCOJoi+4cIBQeaTNYweSKstI4DpLsF1nAgLKRRgHAkPhtNyt6vw9GtXViZWRcWzB2PETThO6xBq92OSDylGuZvqphbZLk3pKSYCIkUgiDXuymLICCavlplbt3SfVf13xniH3TXqY8XMhGmCv2ZCBSOhW6mEtWdJO//ekLSNOyhGtZmYOVEK2AMTaVKCEnm2GRkBSFycA3dTx/UonOUXI+WGZWJqHJSkT0GHflPSWxLo3oywP9qsgW8PnThNCMkj6xvCEKyPD0N050OHGOaSI0JCi4KgjRALapRHbSngHJCMjsHtN7MMnKDzzjXNr3kOfg+jx3xYabpQ9thm7LvwsD34v4g5d9XzcojsjAahpC7nJhQnGnW4YbLl+Hr7M2La9twZrYFJ5ZnYIkH6vIIMD8wnkPXOC0hJL7naa1upngM2U8qsoLYGLhcEw7LCYk4PyMG9f4w0m4nnuacFITg8fRRh9ch8SX3gH6O19jL/PM+2xhoOHlBM/59fpxg4II7cMsJmM5NU2KdI9rAQxILWxd4z2LKNmJKslZUkmnsRyTzv7LHsntwqRuHlvoABbZjXZBp0bzmZIQ/43MXt+CzXzktMsT4NV17fBEa7PXZVi2KI9IExGqbRhY0/uPP0XFC6DgU6i4jum4dqN+JWjlQy+BqnUC8Js+OD3W9AXR2UQS81nkBRX4vvCBbHLjBCVmdE2R2DUcWZuGGlQXY2RvCNiPtPTbunNi02y1BRgI6Xg6WMZmcVmncSA17HxljE4aCPZFKgbojH4kxe4zEljLjPlnu0UhcXJlCghBCeX6yYT/LBBqbnwDAKJhZdQEWjSeJCElDS0i01KOi5Szv9SBjKdvEZFaWNOVK7JKM8fyItoaR/p5o3neZ8xmSbDCW6nbMdCyVghQydRNIPJ1ijkKVtEn+cKcadbC6e9Blm90OW9StGlvQrTp0Ok1oNpsia8LmKYSpLZ2IOgJeZxr8qTZTjZtRmqT0LEwZQFEWMi32K0sbxYAJmCYZQjMcQIv2GTHwYOjF2ispJ2pGMSErPtwtwTZbXsWS9/o4fXEbzq3uwlynBZuXD8BlWjqvSeJ5gXa6EG3tkyjtkp9IbNA0VNLbIG9JUkKZSKwNitRNdoxAEJKgcIIKAsMtFcNAWFYm5SNRrRYfPEZqvJoPIdNA/ZDmTM0jrYddox19Xpw3nPS8Udopv1/Pjf5VRZcaXJytbUMr0Xp9iTRRRD1yFXEyYsXmZzAQBMVUnmq2oh4IOwZ/ViSqVpq3otAxDMrysUGQEa4gdNkmfHGzK354Ub+6qHZGxbhRh6bkImOULXGoq3M5aq8QRjVEfBumG2zds4voK2OXyXxSNGsoI4lKtVdOdgIeu9TugONNi5gi2x/GmyuJaqFwQsJeX56dhisWF+CkewlWe31YnHHBZx+oMyWZ30dKSCovBKqQs7weWejhSflrcU8svRwpvbKsR5IU8yKi1jGkSiiI0oogFxapxGkQgAJSW4GbKK0ytLFVkG/5QFW5XbCwRQxae2bKKNRyX7DS0GE5CFpPSIgUvWt6XAQKw1WyRghaaEas2sQ8N94anmOZvpexMUm6FtEFMREldVjjkgKaPa6GOaaP1qKZSZB8qtVghHJjG7psA+qzzWC21YHDSwtwaGkeOnPTQtviJuAkvZnXI/CcOoTNKaCtNhN+TGvibp0DsTpl2TIv0tQkHtSCPtDhHniMkHh+bIol6qauz/CiBQSW/x3wWiNs82gxQnJ8aRoeW+hAt8eICBPsQ24hYITE4+m/nq+NZSLS3KLpNZG0l00UmzO5EY5n1/BrCEJfkASilNRX4yZ4AKrHSKXP7mk/FZz4psoJhlvzRC+diOBQRaCNNktuIXEZoeVWrUnPy8UC/77HjsPHnltKwpyLVIn7khY5lQogjMLS8uZqYsr8E9V5fVFhlFdjsCaau5zgBsLNRhILCcmua3WejxYkydxf1p1Co6JrvNGhR9iS3YNVRka2u2wjnmrAwlSTrZd4ngaWFFsg+e6JXn6RTDNLmjPXcfeTbdVhvs4zbQJhLfTCKLaKEDhQcPIrelc12+DQOUYualBnhISn/aYJAjyGha2rI2FEjrbYPa8zpYoHVjeYIjXF5JawkCgLrzThKBO4ng2Mze2x1KwvZzxFxt5Hyo6cdtWsQKmNNbEMbqFkcypKv8oxLjWkgGqU7bI2o/kSF+qyVSl9xqsSRUJok3CNhKTFHn5lT6smYpxUiZUw27XyUb9VJp7RD1jgTqlgizT1OskRkoyKrKSUlZjRMquDanpzqA3ZVTYrCX/u62aMA1ybCDISMgk8M92GI4eXYHllETqddpRhkcSpcoM24TUJ6kwiNEVHzyDWJJL8elJi/cilckO+oJjw/rDPzTQoTDtc4/agP3SFhYTHjpTE61VNYhB/h0yL5RYSbu5emm7BlYfnhVXiyMIUNB1LjJHLBJ5vcNkYpwiJys/zmIi0HDwYYsponkslZf*ck+/JNhm0EYZJ1UjBlhdvD98T39sMRaRw3ImJCrEjrN1nzBIHxo7EK441jUtNMErvix2NOwSw3jYqPLNvLIvdl6s7LOXBCYoVsruVFS2FwXbz+o7L/cY0ciCq1FomOqiIn+d1jx+a1cda3erC7NxRj1WEbMSckIo6Hz1NrlBGlcLZ8lESFPYpbGup1C9qWB3VejiKos9fs2C1p5VxAha5Tpb6QycZJedVDpvDYTRsa1IVaGGTIm8Puc9lxGHGpww6bd2s7u3BsYQ7mF2ehPTcVE5Kq5hF9DKNMcHMpM1T/3YxlhRSZwWmeNEiCoqhGk8klXi3u0KC4SiaVpJEjIXqzR/X1bUpagNJjJfV/TC6n7LdGxNOZZpq02S+rfpnmNDuSSxdWHiYtN+9nZzPN+dVIkR2JQDV7Zok+r7XpVeBBGQ0mM24k44bJC42RZYVmJnCYCUDK52VF7J9vuv3hEFzuqmFCrsf+JbYD8/NzcPz4YTh8bEUUqBKZNjByI+0x1jLweRoq+6HOaG3JnrCC+B7t6xl/T5xZwQsh1QJoWT5YAScikZWgkt5aVs1WKf7Ax6xZY4Rkpg03nliClbk2dJhmtjDTFO9xQhKOZeaIOxZbNNqgY0GqumhIEfeMszxC0cU1EIREEEhassnGcRiibsg+iEEQn5f/2Im2WVCt2Gfzgn9WBL9OeN4oEDGM3FPJsaq6UYuUykprOi5uxkiJHYQjiwpVY9hAqymOjLVEjF3gh6PS8UXnL/MtUdlaBqIRJE9Tv7QdERI+1txlwwlJo2ZFPR8oKT9X1RTLeK3WHZ/pLux8PrfC1MCHWtzR2LyuiS67RWJIxjRb/g127NBpgmXXoWn7jAyFGTnJH1GDKcNzy/MwvTALu4MBTLeacIxbdmemo7y0UKNHEp35vNjCLsIxQsmdoHme+jgcUlAJY1QzZjRWxeHOclE+7UENGaI0Y100BDRQkiHzkUUuT0gIMRMfSqmiBBvSzwk1XL4SAEuh9NmocT9OY7qjJYDa/dkwCcwp7TT/UDNWJV0VQz1hyKcLJqb1vNZs0h6KsnNJQdXN7BrIO/kyZco*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*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*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*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*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*zmzi0OFDeO75vTgxmoQn0osVG86V1535srd29q758Uer2o4TK9oXfzLmKZXysWIht87FuaeD4fj+T1zZLhpd6yt3TXJiPtXpKswM+cTER7zl2ShNDS5nEpAK02DLKbioFi7RelACGFFU/kUd66vKlF7jR6G1PhiOMkkR4U+AB6314Y2CDbSDIwep6OlAVvIeE0Qxh+T+TezII2TApgl8d+vQbRoZYGh0KulX/59AXvnKhyCJQQKgAlWTvr/atZwqbdRfAwwetze3Z8/O+NNPPtqVyaSI5lmeTw9uLBQZhUXT5/fj7HNfKqxff/oBNwEklToqErk+OTkXOuivHoHKe0p2VTHvP370kHff3ue6xkaPK8RcrMtaMUWhLCDe1oG16zfJq9dsPh5v68yVy0Vyj8r1Vam8qn7IdX1SVRP1W3jW3MJn6c8KaMjyTHFzm+egv9//GALcDAEkbl0Mo40hpW4aiehnohzASP4ijObPu5O8F2YYsQt1/an2VyzFIRRCQTnt95anUJgbh5ibASsXwZE16JIra5Fa1yipH6Oy1NTH0TCVCrwut1KDhrKj0mByyeWFK9ABd6iHALsYip72JPydPxc88c9nikIhNZe88uTR3Z8/cXBXaHL0MCjPh0TuFQjFaDYLBjack1696aLLPvvu07Y7lcnX351kSoWcl+zXPqGc73F7AweC4baJjxBQcv1/P3NN9uC9N3R2xNC/ap1S3+bYkSM4fOSosq+CKy/97HXv2PJPdu5t9HczBdRI0x/a2tqzRu89tQw2yszUs2QM2eDgstMfo8+YjaGVMTY7N+0Spum1ZR6SP8KmFLv6SWGDmy2v9Xi5CrEYkZiFQgG5QpEIcR6sl8hbZFBKJYjmk2ZkUYw1AiOf+96+TVOjh78oCuUYOfwqlToZVhBEIVIu5tvyuVR7LpXgSoUM8tk0op192HDWxZ8C2v/VSNMIdXRK772ocxRY+0/f/MX09aXC3BYxO3l12Tt9EXLjXe5SAjw5AFiCG2QxD1YoUj6Uas0YdeXJBUAiMzzRPj3Vl4+AkQBKLPnX2yGxoa597nDPD1lf/DbI/CFWFDhE+z/Atm34NEqZOCWLItcpVU83t1FtFRmVipmMXPbKkdX/V4qt+VyFrlWqEr7JbPWz0oLFovIeQ+nhyMHUfUZP50u7T7+mWMiuJ4Ckk2HZggHuqY51hX5TLAvtvMdznGjJ/8bHup5iOV6qqN1KJ1UWqXkKOuU9mUyWSxLQE1kf9fef8671c7OXS5LoZV2ujLoiatUCtFAJu9pEUQh6/cFdoVjHd3yRzickX7DMSAKNxJHq0ACjMG9JC8+80CdVhIcpCmIMrkfa*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*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*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*kKMZDIiUjAjyumQxtVaAyKyH2vpEJYAjy2SbmT1mCEmfGIQ6uOXSSMv884Cue/sFAH2j8TWl3orA76rMqZbei/+hb019Qi+JA2nXW+X1+1xF1F63LFt909iz9clP7Niy0crfcFxZz1bC0EZhG9oosZW4SCh5df/+/VZlDXlLKFxDnydwQq92OMbmHqlmZ/0DCyz9D7S0dWPJkaeN/NOHjv81j8fD5NzHg3jd+oVZ833TYWUleay23Z6Nn4Q5UR6L/jXOK2VeXhA3fg+n1bhTXxfhWRGpMqnuM6aAZ9RpLHuV/Iu4fmtXTW7vu3k53Z6DUz8UUdStPo96toynL4ZR9dUXclWcV2n0Wh/Jzm73sPozL7Eb6SQ+esVJt93yzKpb07vbMalHGBiRkIowO0thGqmSU5cvllCYmGIAg9nLSBS9yTg6mZ2U0lmU2f/TtPiLxBBLtyIRjyJWmIRammI2tmJ/Tas3VFKXLRBCFTaURyJV2FwJlEhs6W7kRhggeQHR7lV/vfbexff1X9BiVPeD/jX17aEId0i9+ymB38u2TiDc6XU+TmO1ehyZHJ4XEY+KdMOs2q9fxV0/n/HzWb9ImzcHwa1q4qyLPmxu+OXNVgeGQ84N6dUQAVpvb6+l7EveEqKHJ08IadXQRhwkpF1DxGgETmyxvHqlwzZAsbwykmzpOMxfuArHnXY+Tn/7n56+ZPXRG686zZl7JGhWvVdYLEjYh9dg1sbXRciiwsp5cAMyYfxG2FUNQScjnuZHnt4vaZIfAjC3Y/jJL+MljDNdAKWoXHyYBFh+bDJQf5HIE6pzegZ+yQ9v+c4Dz8vP3HmkNrAZ7fkBdCklxKMx5MtljOeLKFKOKrvDmWgELclEhcE1m4HBAIieaSa3MuRYHAoBDb0E48BeFNk2XSxjqqxhRoMFZoiTpKSbf*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*gIUA5R5B6wgGsyJLK2bZYDArumtMRd+BgQFKFY+CerzpvrH6VnjDeZfDeZd89F++dt2bv+S2m5aAL92Q1d3CYrGwQ88iLLF+5LD3uwinsaByUbp4nl0Mz07G7bx2PmMeNdtjwZEiuqPzGi/DKxQpcs+l/dPN4sHSDqJyBjxBu7zPzGrh0kGMdZjF4iIidWH32W0//POHgk/cfk/s+fshShBCXNEhGpShBqnkyd+xYABiBGTUtHQBdC4Hua4Z5Np6CkSovg3O85k06IenITcxCJnRA1RwL6nKsFDQIVXKSaIalhKTn4QyuJKNrKZEQW5YCvG3Xjv7+S9/vNGvOURkjS7vv6yijKXfd5u33Pq93bxu6bJxWxRYzKs8EumVmlTM5/jSHTuufOrR++596r9+ClMjeyx/i8Cjo6ODAhIkQ0NwghwkZrovBrEiVTwSoR04cIBaSrgsJJICHcvWwPq3XAlnXnDlqhuvWr1XZBLwS/2RJfrfjwWi/Ho6iHOiWA2CxRjEIpOkBP6pZnsFoiIuskoADh4g6ta+Xhcu0Xp1Io/zov3ktNHyqiq8GBkyLHXs1UXPAuqsym2/PNAVeOb+4fDO+yB2eADi2gLEwiECSJAkjRwUkJBXzLZp6wapgbzWNxnZNsg/pRUMFeD5OVCnhiA3NgjJmUlI5lRYyGswTwEJfa*gJdgSQGK9IJ1+gvCfICBt/+/Vwwy3/InkF5bzznh9jVkQagCfAf9PrXe0XK+IbD8zIY4Mv/evowIuwMG+t7IuxIwg+0FWDAa3lqr5oCUEmVrSQIDDBWBLe7JpIbQN09q6B9p4Td8frW/ZXjXPVUi3VUi2VL1KscUxb8obN+Y5TIAeYjpsx1H91UwXY0J9BQTyMFYH0vJHyi9pk5HMa3IrAJFQDUjgOCpnLQ+EoVQGmnCTUTWO4ZxTTjSMXPT70swBZaDXQMylQx/fAt3648+xqq1gXxQqRJRgibu2QnBuCtdvlWqH3hAUDqNPO0yo8Nzk7sXZ8cE8PZtdk0ylb60hpqi/GjpipvqXMrGgVwQwbjCXhLfUEfXf0rIamtt5bP3dps2ZVp071xmORYmlTN6G227e8UtduAl5W1OPllhAel43E0M/8smQkGHaNOsc1WAK+3Yih3Ha0PFZGp2wip2wZluBFP10zEvBlj/GkHSZcdmt2O3e3DJmjFj6BHa9Z56VtJjk8Ew+Tql2AMu8ul6WeE33W2RderZel57Obi9zmhsRF9dptP+/dUGjsuSwfCNJYEgQhCBrQxl3AGEEEJrksyAtJkGMpI5YEU371oJH+GwjQjBkpFAE5SkAJEmam5gwdGxnZX430X8ysCVCSNIm8x2wbnaYCy5gCHKkB9dAIZHZtee*zW+5rqQkuW5D51FmhWfdXO2mDXD1n6mVt7O11PAnvBTqdrJDgEE/H9q1w2oqZkHrVCP4mnWMrnb9nytcd+/d2/e+YPv4JcJmlETZcVBCFLly6lsSNdXV1HgAkWtIzgMTw8TF01qF+DoIS3rDjlfDj/sk9NrDnzrT0tHR35q8+VNBFzmGhuOMtE4weBEgu5E2u8EEtGgx2YYk1BY6VV9sstwlvnborJCRteEREzLk+mi1O9VQpEitarWxaV2/Xt3DR+yrSzjmXWdOjy9nGKd7FqM7dndvrcrk5FY7986Q8PHZKl5x9KBrd/Pxob3wl1AY26aiJK0W1DUEQ0qEBNLA7B1m5Q2ntAitaDHI/jjtVIhMhmQU/OgpacgezIPpgfI2tBtgBzKtBMGyRIS2saVQM2VICL7htKlGZQ1WtSEILLzoTGD3ztnMippwx+4lQYMdvNixQB61rLA05F1X69uOde1y6b//fL4cjE8P7E9Oh+yKXnLMGIqVtjZtYg94ipW1NKhIbWEXTZIFMrl7mQoOuaSC20dq0kx/Jv3vDuzqysSH9RKsvVUi3VUi3HsiQuadSgsfe7atfpkIt3Qk7NGdk2qARcTM/NY6xHPgdaOgU6um1ymaLbRjNgfkABKVQDcjgGATKnB8krzbghy3wQ1X6LWjZIivZK1k2RVh4XW9THmZ8CdfgZKEzsv1lPG1Thr2W5Br/Lq9R+j1XF+HXt8vN8YeMfr3vm8Qdv2fHoL2BycJclGEH3DAazLlu2jHKPNDc3U1CC8SMIRhCIYEYNZtcg9wim/Npxt1gV7LTtPWvgjL73wul/9a41N/7N6l2sO33enZbI7l40yJR3t5oQpNv2W2rAapd4PATDWt1nqeneSzBwvw+7HK/XE3EFmc/Ns4v2ap3xg9/GD8tZpbgneH5nZ+1wo75nUVpmpb73Q4DyyP/d+9Jq2PvEzvCffxysHdoK0XAE4kEFoooMoQDQ10hNDYTrGkBp6QK5qRPkukZKJ0+J0oqcJMjsqk4OQ3piEBYOzcBcKgUpTaIcJHiYnCRoIcnoRrZNVi2CnoU5cs4OiF14LcTO/ZvGDe9aOuvlmSo9P4lyCjlZyux+i38rfiw2oh1QREmQZaK8azsoM+PT2uTwy184uOdpODw1ZI3GCCBB8GHGj5hCenbcI2gp4QEjWBSCilu7VkDXsrWPWoER1mK3qLhp0pT6wu2UPv0kGbPcnThMOk5qziz9gwdkJCpobreLf3Dyq7MsBlb+XK8TEDAu8qIxOU6yBCwLjFv/cetrmxjjZrymqvf3iY9bq+eyen67jBtRF5nbeVn6XYIhfkqk39vFULD2SdcxUtu2R2tb/Xk13nlLXg9QDhLkI8EDYz6o2J6ap+q/AeQlqW0EnawBElpIEJCguQNVgUNkwxqthWC0DkLJwxACDXKyQnlNqNBekU4eN7UKASW4yBYkch2y3iAnCWh5yO/bBvklp90CsPQjAEcDcC/AgnXcmn3Hq9SFVd8RBdSKHyfxumD5tUM1z6MVNC15aBKDWZdMDO6GXDpp+X0EHuimQXdNuW6NGcxqZtcgKOHlHcHo7Fh9M7QtWQktXcu//L2tIF9tQYTmh54M7+Ll50Ln131Xsm+8psyWFs/ulUKfd5H3q0+ygkw/rWFeJ1evz+2nxIKX8Smyyz5WnDWLMTckLmnQNv6i6+5C84pbcrWdEMzPQb6QgzwBCQhIaGArum0yaVDS8yBlUhAI11LWVgOQKMVsGwJKqAJwLYTI/4XQbaNJhr5NkRzNVP2lGTfFbJ6ArIOmEPiik2sM7ID8we0fBrj4I3dsA/lTZ9sTZCYWIb1etI77fVSspuJ6LLsDJytFgtHiUbpbZNmh2A1Mlsq8+lxZ+8wTw188ND0CeQtFX7OgNQSBiJlZY6b6ohXEVPZFqwiSomGWDa91RFZqoL5tGTS29eSj8bodEiNoswpOtDLj2xHKmcQ1OrgHjyV8VtfVwd2cy8pzIioaZmdCL7030d0tD28Er9SCXwKWrM9jt7PiGZ/m7xIOEfhetTp4eFTcdor9PnPYiIiBSi7nsQOidv2RxdIlOYwbp3v2EwhbZQ1auWicfu8WZGn+3q4+5ZpIRm9ZsaC2rY6q48+AmktBIYTklwQs4EYUhfc0DbSi6B5EyPqRjxnxIwhKSE3qMmbcEFASjoAci4OSmgclkwNFQn0bsnagng2mAZP1QjPBiWwI8qn4W52c//AIFCb3wsYHxsIb3tmR4a1vJze/lUU84ZLB5QeotAqodgJAVm0sWw0Ivayxdc6OyCLsw/P/bohv05ZXn+OmewcbRw/uft/YwRchg6Y3K7BAgAdyj5hCeqZ1BAuCETOY1eQeQXDCC0jiDa3QuWwtqvr++O+v6E450cTzLAB+dSJWl5lZx4tR3MztvH2F9/t2zypybS/PWn5dK6VmKAGedv/PU3Qf+00l+2el+qLZ13Uf5yfWfi06B+ge2nIx55FKjFWReTRxaVtG71zzKbVjLeQgAPnsAiUto5wkRfcNHoVcBrS5GQJKkqCrJZwkZN2Q0IqOsiI1UVBi9aBEipwkAEfSgKllRDIWWDO41Xg1llyNnE+dPgj5A0//1K0uKjnmykUdy5XS/b6201rCFUPilRvAa/AgD1KfnRq+enTghcDU8D7I5zK21hEEI0gPj8DE5B7BYsaOoGUEwYiIbg2WptalsGTZGrW1s/dLPLu9BGP8A2/7+FHPrG1f3t6JPm9t6kfxY3fAkmtfzqPjZvU7VsUvvohSNwev2rHdYly+w719C//zWFll7b4vYunwUl8iYMbKqrFpS2Xu0Y+dMsscluDkOrE7b3nMitMz6009P9FaT7hbDTfJ+bkRAkiM+A5V1mlcCQIJzLYJLMxBIJ0ECdcQJURQRIiq/0oISoJBGksSQG0bVAEmG98gQTaKhmq/YPCPmBk3YCgBB0CnB14L3UDqoXHIPPfIZbf+uOfsmhPXPvXJM0BlXTMXQ0mcpR967V+byqx3Es+unyWQarHzy0vvLVgD8tzMYf3FHb/f+uiv7zjrxad+Q5Go1X4BgQjyjvT29tIsG/wbg1qxIADBAzNrkCp+fHycumz4igynnPdO6Lus/zf//oV3XORm4pI4Oh0vnXYluB5YeE9YOTtEgqqsTL0sGRk8ej88dexHXXvJLnGaMETuz61N7HR2EpwTXr+PgbU8bcarYCzSh1jbpHzeLOeREdVgqgSoYBnjrBtUnvY3x4TbPMka7Lvp2w89qTz5ozNjA48bVPJB5CEJUDr5MNmXxgiaCJNNaqitGwKobxNvBKm2jlpG6I3k86CjGN/8LOUkSY8PQjKVgbk8wAKli9fokSsUKeXp38WMG/L7HKr8FfIQbO6Ghg//++bomy684eq1sNupjlg39Txj0Sk8gCUcw86NyEJkavWcrxs+DHwYdInMTo2cMja056xDEwcJGMlbghF015jBrGgdKXfXmNYR0WDWAEHT9W090N59IjS1d//zbf+twZ1boco9Ui3VUi3VcjyUhiXfKCx9I+Tquw1OEjLvIx8JZW7ViirAZDNbQD4SdPtnM4bInmkpx3iSoBFHomDGTSRO/gwW6eSlV/OQwCvcJOjKwffI3KrnU1CYPgD50ZcuVWdT49VGIQBm0+9133bVbvTWdiqAXgT1Sss3fn1IfumZxx57+g+/Om/Xk7+Buemj033NVF9kZF25ciXlHcEDQQkWBCMoojcxMUFVfUdGRmimDY8lKVrbBMvXvhlO73v34VPOenv7De/pyoo0jlsdugmS+R0kyavaa8f06Kdrz2/rj5/iVn7wB/gpjOaHijeL9IOfFjceq2zCg1hhpVSSWa2WbtYGs+79EO5zqqvye/JzbLHWffnOndWaxjNeNm0eDeuDTz8W+tPdZ8ZeeoSq/daFayCskPUBrSRoIUFekkgMwq2dILf2gNzYCkD+RncNbY1cBvQ0ARVTo5CdIOvE9Bgk55KQ0mWYVzVYoBYSragATL5OOUnAsJIgKVt2AaRQFMLrPwix8z95yd9+5LSHRcevk9XZy5wqOoeJ/s4SkFRiwvPDTO/0sHdtA3lscCjy1JZfJLf+5ofS6Ms7oZA/Ggdgqi/GjqCrBgFJfX09PTCmBK0j6JqZnp6GwcFB2LdvH0xOTnIL6dU1dcJpfVfCWRe+7x++du2bbrKb2HndDZXqPKwTBuvkxtNBF5MIiKfeygd0qQnSbYHhIXdym0h5TJ9W7lIWKXCeCd3qOaUKLORewaAoILNrRz+IBEUBkoh7w81dyvIcdpIgfoIXN9eZF1JFt7LxR89dHPjj9x6K/fknEJcLUBsKFgEJGK8BmQAVGcJNrRDoOgHk5g6QorUg4eYVLSQowJdJQ+HQJKgEjGSG98PczDTMgwLzBHhQQKJpRWI0ibzXqfJvhioBo8hfDnQ5CEr7SRB789Wzn7nx6sbvbAdZS4PmhzK3Wx9iyUrzg6CPx/DwunEjfOxs0A5Nj1w1PrRXOjQ+YAlGsKBrBgFJKfeISYRWmuqLwayoWcMHRiSQZQXqW5ZA+9IT9Ka27lu//6QROHz7FqiWaqmWaqmW46XUtv1WazkB1KaVkA9EIJdH101RaM888nkooAowclllFmjcB/Xp0NUzYAjwhaMQQMG9SJS6bdBlEyQoPSjJoMjGga4bRSrhKaHEacUkipHnIXdgW8PGX0/JaIj/S6aSFwpqBUYzGg+FrNdG+LcHpuQX/vS7vdt/+5Pl+579PaTnZ62tFwSImEJ6nZ2dFJRgHAkCDwQj6K5BNw0Gs46OjnIp+0qkA4ZjjXDyWRfB+rdcsePE0/5qfWNLMxBspLHuJliC7VgsCKy7dFFq8fJzsFp43J6Pd0fvR39iNas78Y0kBHfebvXMQ/HOa1laDEuU6HVZrQk65/N6tVrxfkdUPLHfZ1es17mdR+SR5fkrxQ7NY7W77ZE5Gfb+8XfBnZv/OnLg9xBPDkIsUgsRdNUQ9FBDUENU1iEWr4VQYxsorUuplUSOxIHsZMmz65TJFVJJ0A5PQ378IKQmhmE+tQDzORVSBYlaQ9LUbaNRJljqstFM4T1UGiZHchpqTn0b1L77pqtCy874UYKRJNBPHh0voq6i/deqbygsA9epg7IOfqcO6scAOzwzvn704O7lEyP7bVN90RKC4AMzasrJ0DDVt5R7RIiZlXTQ2qZ2Gsza3Nn7T5+7tNnSvOLGPuhGFiQxmDOtfsszsJ1iU8rPYZeWKTKB6uAPUyarorBduqkVn4Fdn+UBhqXtxwIGeNKwJc6FICEQy+MHUJVc+pQbyOK9N7eUZLv75HGRuN0Hq6q01VgVIQvj3Ty6fYc3Rfx2F3VhVuJNXtCS4ACw11xUp21MnniVOr1uOHfwcVAzKSiEayknSQFJzdB6gQyuZB0IpA6DHK8HSW02QAhm22D6rkmSVmOmAM9CKJOGoGzQyGP6ryG6J0EBvy4Z1PI0sFXC+5EoeZqWnAL1wFN3KQ1dvwTozLjJLtilxfO6W6xI1ErnHt1m7hC5ntN8av7+Ne+yuXMbyN98cFaaHhv43yMvPweGu8baqoEABC0kprIvgpFS7hG0kCAYEdWtkQIhaOlcDktWnPJ8U1vPr6s20WqplmqpluO3bLhi+UihfdXd+bpuyAXj1IqhUhVgnXpmEJzk1Tyo6SRoSJKWTYOO4QCqQRmCau6AnCQ1EQjECSCJxqEmqNBsm1er/0oEgEgUhChFS0CgSJyGga0ISHJ/3hwsjO3+6nd2QPgvtT1ss2ycUJmTC0EE2dtFmLMG9N3888HYzm0PTz7x4J2RgV3bCJA42jCB2TUYvIqqvuiuaWtro6AEQQoCD7SI4IGZNXig64bXQhKKNMP6C6+E8y+9+uM3JdbfxWM2Y1H7FQ189WoGFT2Hn7wYor/jdUu4udN4dm1uu3sWKmy3XZ7o87pRvPvVF0QCfN2eg9clZzc/VarPsmSIsGb1eAn+Z+U74ml7N3O83c7bj6B7p/Hn1s+c2uzbd+/4kPyne++J7X4I4plxiKObJhikWTZhgibQfRNBjpLmTggiJ0ldM8i1jYamDQa3FvIErKQoJ0l+dAAyYwM02+ZwXoM0WYoW1CL/iFZ8pYcGmWJ6MWbiYMxjkFyv7kPfWoi+46OrPrkORpzuvZy3xmlt8CO7TjTpgPfaip8LRXmn1D1OaAlG1dfp8YPXjw/ujczNjFmCESxoDUEAggGtVsysaB3BIFa0kCAHiaqqfGAkHIOOnhPpUdfU8UvRBdGuLkonFSvVXtF2YlVrZjH3lU8AovEWogDA6ndmnAbrwOjnyHziIQe0clvaFat7dlI/5VFHdlo4eU3CLMXNnZXoY+uHXvzlou5hls2VaLql3eLi5d7s5gyWvm4HnsvHgO5hsREBC3bPWn6/XkQDpXjLg9qSdbO5iV0NucFhyMsEIJD1wqCRN0X3NFAyC6DMzwHURAlKiRtCe0gFLwXIvyBZZMKG6B7ykmSyEFIzlJXVsJTo1GWDrhuVunEk4zN02sgSWbcKUEiTdWd8T1Qdm1yAda2O917eTpJH8MFSb5ss5lU7ojpWuZjyfqD4cdMi+c4JhxgEHgGur943HhobeOmLw/uehYXkjOV3MEYEuUfMFF98Xyqkh+AD030xs0ZUtwa5R3pWnwZdy9be/8Uru+d4G511UkocA2Xg47HwDDrJx2vy1L2d8B9LnUuCbcbK5lkaUCsKaPxoN7vYo0SFhQZFABRv3/NjYfBTDE3y+d5YnrVS19m0xb+63/Duntlbf3DyB9WWlQ/lhp6EnJ6hlgvMjDHiSdCSIUEwvQDa/CGQY3Wg53NU00ZHCwmCEgpIakCO1IJC1oJgeh5CZE1BG7tChfYMQjQU3KNie7oZY0J+Tj6TlSBNAc4N7QLlxR23wNsvclUBdpuXvI5nycMYEb6mufDa7QhFKZZZImr9mGD+709e7tj6yA9HH3/oezA7eRB0izRdtIQg+Rm6a/DAGBK0lODnZiArEqFhZg0eCEp4AUlb92o475JPwBvPv2zN0hWrdqsEZjsF6fGa11h2aG7qrSw7Gx6CKKfAJh3Yg/gWq/Degwgduh8kaZV0oSxmO/BmqfAEIovUsd3Yc+LVKL+30n7N4vZyc7PxBJ374d7kcV+xZFCIZNGwbFytMtGc2s3qWjyU+7feP6pIT96TD2+/E+qyU1AXlCESVCBSpJKvUSSISxJE6hpAWboS5JalIEXj1CICBEwAsoIXBfm0QxOQGdoLc1PjMF8IkEOHFBKjadoRCvkcOdLoytF06rLJUaZYGZTGHoie9X6IX7ghEGhvCH3ydMhY9SG3dmBJRuFZJyrFL1R+bZn1R+YN2XUwp6huL0hNd0HDs5PD102PD0Dq8JQlGMGC7plyIT2TewTjRJCJ1XTX8LKyYmyKEopCc8cKaO1a8XxtQ8tuRZFl1jpiqfdK7FzdFHz9vq4O7CqqourCVr873vlfnJR8K1Gs2sHPScXtmfxUhmU5l5OyKGudmJs1XaA/LuazVmLc8oxP1nGrO4xVq3tPOGSE6T7NDde+q1OVmlfsKrSthVyoHnJkXaCie6YCML5HFfh8FgoL8wDpFAEhRRVgXC8w40YxBPdk6raJk3WmBoIBwzVjcpCYrzINdpWMg/4t03MUZgZAHXoGCsnJVXoecqwANNHnb2xhed3qPvQXlr6hWKFnt4mDBS2V/7+IMJSbefumew82jg68+Nnp8QPUB2cHGBCE2GXWIM8IghHMrMFX3tgRKaBAXVMXdC0/BZrbl97y2UubtTu32qfFsvg6WWmTndLj3NIKN7mIJYlSlusCA8BpxysSb+IkBHX7FnYOCsmDhaH8HlhTM72MORGTtVOsjFeeAxYXl1X/tVPodbsHyQUQlO+ub3ewVtrtKhM26d52fYtnnuzv86dNnX5nx+DLcw+LoTBsNV4km7mGRV2YyU3asvyftZ719+TnBiGbHIFQsAYUcpGgLhn6NgQ5BMmmV54/DEq0HqRolMaN0FgSmgIsG+8JEMEUYAXTgLU5UPIqjY3AFUolT6Gg4i+8AlAKmH1DE4CRjn4eCocGQR3Zddun37fqLXb1ztNX3PqkXy5bEQveUThBlBitv0KmZxbTNgrVoZDeP9z+1Ie2/9dP73lqy89hbnIItMLRWTEIPlDNd/ny5ZQIraWl5Qg7K4IRdNeYRGhDQ0MUlPDUiRIMQe/qc+Dst12VO/Xci1v//sqeOS91KBpM6ZcekNd7BnA34S62+rCTG0pEedbqOdwUMkVM1+WBnl4pxEXHnJ3b1o1G3kv7e+0jPNkyPHVaCZVnL+fjdanyAFyWe2B12XjJ9ABgn8943DTl945Mqdqex7eFtnzjzNqXt2ByAsRCCkQDADXkhKhvEw2HaAxiTXs3yJhxE6sFKVJrABFcNzJp0BeSUJgZg8zYQViYGYfDqTTMF2RIo9qvZhCiob4NkqVldSPrJk2J0whgyaZA6VgFkTe+FyJnf+Ckaz9w0m6WNllMl3Al3b6vWR6Sf9s8FZiZGPz86IHnYW56BDTtaMuGGcyK7ho8kAwNLSQIRrCguwYDWDHdFy0kGNjKGzuC7pq27lXQtezkW9zASLVUS7VUS7Ucn2XDpS2a3tLzDbV5JeRjrdRfki+ohvIvGAGuqorZMAugLZCNa4a85rIABdNtIxvxJKEaClSC5AiRDWsNWYcMKvkiJ4lccsCrXTlIRV+Yn4bs8w9DYeT5+77zlD+JJ6+V8ioLCQ+6tEPaIjthXtM8nu8rP3zx5Oe2PvzCHx/6Hozs32n5XQQfDQ0N1DqC3CMY2IpuGwQkqFuDwasIRPbu3UstJJjuWygU2CuPdLT23nVw7tuvgvUXXNH0xfctO8Ry/6LppDwI1Y/dkUhuu5+WEF6uDJGgx8Wg6WZNrWZlP2QJLBSpL5bdqFerj1erhtV9lJb+Pm/zDIslpNI03eDT/Os0llkDFiu1G3YKrnVqJ1ZLnN04cpMa+PbP93XBsw8Oh5+7D+KHdkNcz0BtTYTSyEfQQoKiexgG0NQKoc4ekOpbQW5opsRoNNOGbIz1bAZgYQ7U8SHIjg3A/Mw0zGXysECATaqgF6njjaDWbJGfJEsDW43PCwTgBLQ81F32jxB/9/8MfuqcgOpn3YtaBkXZf52sZuXn8NVlw0L0xBpJX37jZkcyr3H9vz7ys6f/8MAVzz3xK5idHLK8X7SIIAEaApKuri5obGykFhN8ZnTXzMzMUGVfBCSo7ouf8dRHU/syOPVNl8Npb3rnD775uQs/yjqY/ZQ6F5nEWSL+vUx+PICE1w3B4pby4r7iyU5xi353yw6wk1vndYcuhrm2nKwwUQFg5Qf4rrQ7kEVWw0112Y+xzAOuvS5c/YLS8xLwkTlaBVQm+vxXNHeaf297cErRDu78enDHj66L7NoMtYU01MXrIRzQKSBBnZsaAkii8VoIt3RAoK0L5MYOAAji*zAQlqG+Ty4C+QDa302OQnxqC1MQozM2nYIHAinkHQJJFFw4yxaLFJZ+F6Js+BvGLrr/k0+9f+7BIH/HaliycOn4SW74mqeOxgm7+2WDd6MsvXDHw4nZYSFobJdBdg8GsJvcIvkeLCQa5ohXEzK5BRla0lPCCESxtS1dRMLJ05bpPVA2e1VIt1VItr+1yzTtaVKln7Q2F7jMgW9MIOV0uUskXXTbmazYNhflZ6rYxsm3yAFrhCCeJFKwxSNJqGyGEmZ2STlWAFTyk4iHDkcNUAcb3MoYUBCOgzs9Afnxgw19S/dtaSESZWv1AUW7f/193PnvBYw/c8butD38fsigLbVEwtbe9vR16e3vpgaAELSYISBB8oHsGg1mRJh6tI/g3bzn34o/DexI3B//uXW2qF4vFseSK8Ku4sZPaWcVERaF4rHeiO0+R3QhrhlQl6p6XcZeH1t2JhdlJMsLNGlhOge1XfbHeD4ulwylQWcRKyCsDUQlVZh4ldpY2cRNJFL23/j6261h930sg8sY7tvxA/s+vfrhu4llokLIQCYaodQSp5GsIcMBA12gsDqHOZaB09IAUraW8JEiOhvEkElljNLJZ1uamITu0B+bHhiCpSuTQYaHomklrhoXEcNVoRUr5AuQo6AlA8MQ+iJ5z1e8ja/76wmsuadS8qOj62cdYlKFFldBfBUhEJL3dFhWnDmFHfuNk7vz6A9Pynp1PPPbEQ3ee99wTD1gGs2LBINbu7m56LFmyhHKQYHaNhuQ0RVbWgwcP0tiRsbExLt2agBKCuual0Hd5Au7bdIPkZYBVauI9HorXiHA/fP5+AGCRgcna5pXKnBEBNAkPpEgi9N+V6LN+m5BZ5i8WqXs/Jn+We2OlgPeS9ZLw+Due2DDeLBu/3MS3/WzPamn7j1+M7HoA6g7tgXgkRvVsIopuuGxkAkgiYUPfhgASub4ZpFgddd3QFGBVBX1hztC3GdkPKQJI5hcykMwVYJ4sWQYg0WjWTY4SpMERQGLEk2ig9KyH6JlXLkTWXbTk0+9dNisKEOxcL15iQvxw11uV15zLJjk7uXbk5RfOmxx52ZbbFt01GLyKVhETiji*zNeiuQQuJqeorwj0SCkdg+dpzoHvVG39eNXJWS7VUS7W8vopU17pPOumCb+UauiGdnodsmQIwrhh5ZFdNHQaNgA4NA1lxU4tJEbjJp5wkIYMoLVYPSrweQgTQBEEzMm7koupv0VUjF7NsAkVOElkngGZ+CtTJl6Pq1MBn/lLqXWFBRyImIFZ2uSMdAI62zlihrHwus2RqbACmx6xp4hGMoLsGAQkeGMSKXCSmbo0JSBCIoJWEl5mVApJQBHpXrYO2JSs/67TbsAtUFDUlWrWDCKmN38rBPDt5N50SOxIqlqBP0aDdfpfMAyvkr4P9fSb6jo5Kt8sq8GM3LRok65adY0U2128jhidKhuRW91b36LRL1wUtJSLWAsnheVjnPdH74kkqsBrrortYO8p5t7nOiVCO9Xos/Z5lTnWznuD/Jy5qUG97+NTPaLGW6/L5AgEfGhTIakkBCXnIPKnUEPlDyyyAnk6Cns+CVsgRIBEBSUJ9mwCa0skKSzbDNTHyEgWFbIqRtZWm++oGEAlosvE3Eq7JBIhoCE4C5DNy7izymRyEwtTANRvvH7l5w7u6Mqx9ZdMWtrEnmtFpR7jp1SqplDeEyIJl9Tue1OHSyc1V4VfXQnPTg5BbmAUrXlAEHhgrYlLFm4AEY0dMqnh02SAgwYPHVWOWWEMHdPauefTLH1wxxNIQdgNXdKG36yQ6o0mNFTixftdtwtAFJ2ERRmCn59c9guzyidLJzegEFvv7/AH9fhenVNpNDMyzVnOA0zXs9I68LOBeQYZV32Eh0qsUaSTvZscNPNmNaacsMB722UoINfrtAmPtF9dcXK9tfGItqG2rIa8lIafmICiHaF0aAa64nmQhSECJlEmBjro2NWQ9QWt8wGBt1WlwaxQCUQJKyEY5SD4PkjNQ8T4yAuhRDHJFNWC0vMjkfUBWQE1NQ35sNwTbVrbry87sBejazVo/rDFwrC48nnrz4g5UWCffY1VKH+zrm6fl2anR/5E8NE7+statQdcMWkZMIjRTtwYLumZKdWuQpVXTNK77CUXrYcnKN0JTW89NXuqtX+D/JOBXnPVzohYBFLzXZqGB5tnFidYLy3uR3bQI8PFyPUfZ9WPQN5zq3mqRTvSJ1clrKSDcr5Lo4+t7fip+S8egHazun8UK6rRgHkVl3nPGt7Txt1yX2/sI5LJJCCGxpoY08ARUoEYN0sDnMiCn5gDCMdDJAaYCMFpKkCgNU4IJWFGitRBKZyCUyZHfFhNycM0qFK0mmlS0nuigYRwKEq/NjYA6uR8Kh4avBVhzfSXnDqt6WUwlcFrfprvCjrypPBiJB5WzRnLbmRrLK+jGO3eev+Ox+x/d9sj3YWpkn+W50CqCFPEm9whq2GAMCbpqkJV1cnISxsfHYd++fTA6OspFhIZl2clnwzkXfzy/7uyLur74/mVTf*ckInZROWTMoFovLZDF36jyBnjqIS9bbudNYuU7cdtcs1hKW4D7J47OK1LHT7900cHgtBTxZZ6KuLD/dpZW0UPlBVOZm6XGz8Ni5GZ1IzfwKvhYl6XSbD1iDXo/Uwa/GFPnpe/PBx26BeHIQ6htaIUJQRISgCcy2ici45kQhXN8EgbZukFu6aLqvFI4Yd4/xiel5UGcnCLAYhoXxEUiSzfB8XockZtcUqeMzBSOolVLK41qFAa/ZDBRq6kHpWgfRM96zED71bas+/d7lIyxt7Wb18tK3yseCVbaem6fEbjwtGi2t7gB6WCrurm0gT43uv/mZP/wK5mbGrdEVQZUIPjCYFYEIumtM7hG0hKCFBK0iSIaGFhJeMIKlo/ckOPmMC9aUghG/iXv8LqKR8ZW6nttCf6wWAj8ydY5H0OaHy5DnWfsX0cXCQt60GO3v1xxp1TasIEo/DuYdnbFvLUad+9HXE5d3qJvGTtmci3ddlktN0kDWoCSDWowDMThJslBIzYG8kATIZQCCIZC0MLWU6FRsLwxyTQwC8QYIHp6BUHIWQrIh2kddNxhXYga1oqeneN5AQKGiser0AOSGX4gqXSf1Ayz/it0cqzPWe3+ff2PDyrrGGpFpFSuqsJh3zIf3Gvji*zBos7zzlFfexs0F74Pt7zhva85TtOdA9gxYSM7sGwQjGlGAxlX2RbwSzaxCYcJmSSCdEIb327hPhxqtW7fXT5Oi0gy5vNLsOJUrPXwoSvXRQq2BPUSuFSCBiqbw1b7yKee/ldSHicnMbAyxxB1afOymXWu1QKrH4200ofo0Bnu8kbNwNpX1JZJzwKMdWavF3ivvi2b069b1+hxRvKAFGusXckbAIbC7dFR+rvlWuqr5pi/f+tmk7yHrj0hu0rtMuUxGQ5KcgLwUhSNAIZsioBFSoeZUSpcnpeZAzKZBQAbim8IoKMG6KqdsmDkrY0FMLEaAR1HS6AKMCcAA0CkzoOTGGBA+UOMFsmyQyvu4DdWboYxs3j9284bKOjNu6mhBwvbC2m5XVI9HH1352c9X/F2AAhXsLU0hGqsAAAAAASUVORK5CYII=";const qh=Nh,Fh=new Y.Z("circuitConstructionKitDc"),Yh=(0,st.Z)("CIRCUIT_CONSTRUCTION_KIT_DC");Fh.register("CircuitConstructionKitDcStrings",Yh);const Hh=Yh;var Gh=i(8036),Uh=i(2560);const zh=new Sn.Z(0,Number.POSITIVE_INFINITY);class Wh extends Se.Z{constructor(e){const t=(0,N.ZP)()({position:Ys.Z.ZERO,isVisible:!1,timePropertyOptions:{range:zh,units:"s",isValidValue:e=>e>=0,phetioReadOnly:!0,phetioHighFrequency:!0},tandem:ye.Z.REQUIRED,tandemNameSuffix:"Stopwatch",phetioType:(0,Sh.Z)(Hi.Z.ObjectIO),phetioState:!1},e);super(t),this.positionProperty=new Uh.Z(t.position,{tandem:t.tandem.createTandem("positionProperty"),phetioDocumentation:`view coordinates for the upper-left of the stopwatch (initially ${t.position.x},${t.position.y})`}),this.isVisibleProperty=new se.Z(t.isVisible,{tandem:t.tandem.createTandem("isVisibleProperty")}),this.isRunningProperty=new se.Z(!1,{tandem:t.tandem.createTandem("isRunningProperty")}),this.timeProperty=new Gh.Z(0,(0,N.JA)({tandem:t.tandem.createTandem("timeProperty")},t.timePropertyOptions));const i=()=>{phet.joist.sim.isSettingPhetioStateProperty.value||(this.isRunningProperty.value=!1,this.timeProperty.value=0)};this.isVisibleProperty.link(i),this.disposeStopwatch=()=>{this.isVisibleProperty.unlink(i),this.positionProperty.dispose(),this.isVisibleProperty.dispose(),this.isRunningProperty.dispose(),this.timeProperty.dispose()}}dispose(){this.disposeStopwatch(),super.dispose()}reset(){this.positionProperty.reset(),this.isVisibleProperty.reset(),this.isRunningProperty.reset(),this.timeProperty.reset()}step(e){this.isRunningProperty.value&&(this.timeProperty.value=this.timeProperty.range.constrainValue(this.timeProperty.value+e),this.timeProperty.value>=this.timeProperty.range.max&&(this.isRunningProperty.value=!1))}}_defineProperty(Wh,"ZERO_TO_ALMOST_SIXTY",new Sn.Z(0,3599.99)),ft.register("Stopwatch",Wh);var Qh=i(2306),Xh=i(8585);class Kh extends Se.Z{constructor(e,t){super({tandem:e,phetioState:!1,phetioFeatured:!0}),this.phetioIndex=t,this.isActiveProperty=new se.Z(!1,{tandem:e.createTandem("isActiveProperty"),phetioFeatured:!0}),this.bodyPositionProperty=new Uh.Z(Ys.Z.ZERO,{tandem:e.createTandem("bodyPositionProperty"),phetioFeatured:!0}),this.isDraggingProbesWithBodyProperty=new se.Z(!0,{tandem:e.createTandem("isDraggingProbesWithBodyProperty")}),this.droppedEmitter=new $t.Z({parameters:[{valueType:vt.Z}]})}reset(){this.isActiveProperty.reset(),this.bodyPositionProperty.reset(),this.isDraggingProbesWithBodyProperty.reset()}}it.register("Meter",Kh);class Jh extends Le.Z{}_defineProperty(Jh,"FORWARD",new(p=Jh)),_defineProperty(Jh,"BACKWARD",new p),_defineProperty(Jh,"UNSPECIFIED",new p),_defineProperty(Jh,"enumeration",new Oe.Z(p)),it.register("CurrentSense",Jh);var jh=i(8311);let _h=0;class $h extends Se.Z{constructor(e,t,i){const s=(0,N.ZP)()({draggable:!0,attachable:!0,interactive:!0,blackBoxInterface:!1,insideTrueBlackBox:!1,tandem:ye.Z.OPTIONAL,phetioDynamicElement:!0},i);super(s),this.index=_h++,this.selectionProperty=t,this.vertexTandem=s.tandem,this.positionProperty=new Uh.Z(e,{tandem:s.tandem&&s.tandem.createTandem("positionProperty"),valueComparisonStrategy:"equalsFunction",isValidValue:e=>e.isFinite(),phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.unsnappedPositionProperty=new Uh.Z(e,{isValidValue:e=>e.isFinite()}),this.voltageProperty=new Gh.Z(0,{tandem:s.tandem&&s.tandem.createTandem("voltageProperty"),units:"V",phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.isDraggableProperty=new se.Z(s.draggable,{tandem:s.tandem&&s.tandem.createTandem("isDraggableProperty"),phetioFeatured:!0}),this.interactiveProperty=new se.Z(s.interactive),this.attachableProperty=new se.Z(s.attachable),this.blackBoxInterfaceProperty=new se.Z(s.blackBoxInterface),this.insideTrueBlackBoxProperty=new se.Z(s.insideTrueBlackBox),this.relayerEmitter=new $t.Z,this.vertexSelectedPropertyListener=null,this.isDragged=!1,this.outerWireStub=!1,this.isCuttableProperty=new se.Z(!0,{tandem:s.tandem.createTandem("isCuttableProperty"),phetioFeatured:!0}),this.labelStringProperty=new jh.Z("",(0,N.JA)({tandem:s.tandem.createTandem("labelStringProperty"),phetioDocumentation:"Shows a custom text label next to the Vertex",phetioFeatured:!0}))}setPosition(e){this.positionProperty.set(e),this.unsnappedPositionProperty.set(e)}dispose(){this.isSelected()&&(this.selectionProperty.value=null),this.positionProperty.dispose(),this.voltageProperty.dispose(),this.isDraggableProperty.dispose(),this.isCuttableProperty.dispose(),this.labelStringProperty.dispose(),super.dispose()}isSelected(){return this.selectionProperty.value===this}}m=$h,_defineProperty($h,"VertexIO",new Hi.Z("VertexIO",{valueType:m,toStateObject:e=>({position:Ys.Z.Vector2IO.toStateObject(e.positionProperty.value)}),stateObjectToCreateElementArguments:e=>[Ys.Z.Vector2IO.fromStateObject(e.position)],stateSchema:{position:Ys.Z.Vector2IO}})),it.register("Vertex",$h);let el=0;const tl=(0,Sh.Z)($h.VertexIO);class il extends Se.Z{constructor(e,t,i,s,n){const r=(0,N.ZP)()({interactive:!0,isSizeChangedOnViewChange:!0,insideTrueBlackBox:!1,isMetallic:!1,isFlammable:!1,tandem:s,isCurrentReentrant:!1,phetioDynamicElement:!0,phetioType:il.CircuitElementIO,isEditablePropertyOptions:{},isValueDisplayablePropertyOptions:{},labelStringPropertyOptions:{}},n);super(r),this.id=el++,this.creationTime=phet.joist.elapsedTime,this.isFlammable=r.isFlammable,this.isMetallic=r.isMetallic,this.isSizeChangedOnViewChange=r.isSizeChangedOnViewChange,this.startVertexProperty=new ot.Z(e,{phetioValueType:$h.VertexIO,tandem:s.createTandem("startVertexProperty"),phetioState:!1,phetioReadOnly:!0,phetioFeatured:!0}),this.endVertexProperty=new ot.Z(t,{phetioValueType:$h.VertexIO,tandem:s.createTandem("endVertexProperty"),phetioState:!1,phetioReadOnly:!0,phetioFeatured:!0}),this.currentProperty=new Gh.Z(0,{reentrant:r.isCurrentReentrant,tandem:s.createTandem("currentProperty"),phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.currentProperty.link(e=>{}),this.currentSenseProperty=new lt(Jh.UNSPECIFIED,{tandem:s.createTandem("currentSenseProperty")}),this.interactiveProperty=new se.Z(r.interactive),this.insideTrueBlackBoxProperty=new se.Z(r.insideTrueBlackBox),this.chargeLayoutDirty=!0,this.connectedEmitter=new $t.Z,this.moveToFrontEmitter=new $t.Z,this.vertexSelectedEmitter=new $t.Z,this.vertexMovedEmitter=new $t.Z,this.startDragEmitter=new $t.Z({parameters:[{valueType:R.IAx}]}),this.disposeEmitterCircuitElement=new $t.Z,this.vertexMovedListener=this.emitVertexMoved.bind(this),this.linkVertexListener=this.linkVertex.bind(this),this.startPositionProperty.link(this.vertexMovedListener),this.endPositionProperty.link(this.vertexMovedListener),this.voltageDifferenceProperty=new Gh.Z(this.computeVoltageDifference()),this.vertexVoltageListener=()=>this.voltageDifferenceProperty.set(this.computeVoltageDifference()),this.startVertexProperty.link(this.linkVertexListener),this.endVertexProperty.link(this.linkVertexListener),this.chargePathLength=i,this.circuitElementDisposed=!1,this.lengthProperty=void 0,this.isEditableProperty=new se.Z(!0,(0,N.JA)({tandem:s.createTandem("isEditableProperty"),phetioDocumentation:"Whether the CircuitElement can have its numerical characteristics changed by the user",phetioFeatured:!0},r.isEditablePropertyOptions)),this.isDisposableProperty=new se.Z(!0,{tandem:s.createTandem("isDisposableProperty"),phetioDocumentation:"Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent",phetioFeatured:!0}),this.isValueDisplayableProperty=new se.Z(!0,(0,N.JA)({tandem:s.createTandem("isValueDisplayableProperty"),phetioDocumentation:'Whether the CircuitElement\'s value can be displayed when the "values" checkbox is selected',phetioFeatured:!0},r.isValueDisplayablePropertyOptions)),this.labelStringProperty=new jh.Z("",(0,N.JA)({tandem:s.createTandem("labelStringProperty"),phetioDocumentation:"Shows a custom text label next to the circuit element",phetioFeatured:!0},r.labelStringPropertyOptions))}computeVoltageDifference(){return this.endVertexProperty.value.voltageProperty.value-this.startVertexProperty.value.voltageProperty.value}linkVertex(e,t,i){t&&(t.positionProperty.hasListener(this.vertexMovedListener)&&t.positionProperty.unlink(this.vertexMovedListener),t.voltageProperty.hasListener(this.vertexVoltageListener)&&t.voltageProperty.unlink(this.vertexVoltageListener),t.positionProperty.get().equals(e.positionProperty.get())||this.vertexMovedEmitter.emit()),e.positionProperty.hasListener(this.vertexMovedListener)||e.positionProperty.lazyLink(this.vertexMovedListener),e.voltageProperty.hasListener(this.vertexVoltageListener)||e.voltageProperty.link(this.vertexVoltageListener),this.voltageDifferenceProperty.set(this.computeVoltageDifference())}step(e,t,i){}get startPositionProperty(){return this.startVertexProperty.get().positionProperty}get endPositionProperty(){return this.endVertexProperty.get().positionProperty}emitVertexMoved(){this.vertexMovedEmitter.emit()}dispose(){this.circuitElementDisposed=!0,this.disposeEmitterCircuitElement.emit(),this.disposeEmitterCircuitElement.dispose(),this.startVertexProperty.unlink(this.linkVertexListener),this.endVertexProperty.unlink(this.linkVertexListener),this.startPositionProperty.hasListener(this.vertexMovedListener)&&this.startPositionProperty.unlink(this.vertexMovedListener),this.endPositionProperty.hasListener(this.vertexMovedListener)&&this.endPositionProperty.unlink(this.vertexMovedListener);const e=this.startVertexProperty.value.voltageProperty,t=this.endVertexProperty.value.voltageProperty;e.hasListener(this.vertexVoltageListener)&&e.unlink(this.vertexVoltageListener),t.hasListener(this.vertexVoltageListener)&&t.unlink(this.vertexVoltageListener),this.isEditableProperty.dispose(),this.isDisposableProperty.dispose(),this.isValueDisplayableProperty.dispose(),this.startVertexProperty.dispose(),this.endVertexProperty.dispose(),this.labelStringProperty.dispose(),this.currentSenseProperty.dispose(),this.currentProperty.dispose(),super.dispose()}replaceVertex(e,t){const i=this.startVertexProperty.get();this.endVertexProperty.get();e===i?this.startVertexProperty.set(t):this.endVertexProperty.set(t)}getOppositeVertex(e){return this.startVertexProperty.get()===e?this.endVertexProperty.get():this.startVertexProperty.get()}containsVertex(e){return this.startVertexProperty.get()===e||this.endVertexProperty.get()===e}containsBothVertices(e,t){return this.containsVertex(e)&&this.containsVertex(t)}updateMatrixForPoint(e,t){const i=this.startPositionProperty.get(),s=this.endPositionProperty.get(),n=i.blend(s,e/this.chargePathLength),r=Ys.Z.getAngleBetweenVectors(i,s);t.setToTranslationRotationPoint(n,r)}containsScalarPosition(e){return e>=0&&e<=this.chargePathLength}getMidpoint(){const e=this.startVertexProperty.value.positionProperty.get(),t=this.endVertexProperty.value.positionProperty.get();return e.average(t)}toVertexString(){return`${this.startVertexProperty.value.index} -> ${this.endVertexProperty.value.index}`}}g=il,_defineProperty(il,"CircuitElementIO",new Hi.Z("CircuitElementIO",{valueType:g,documentation:"A Circuit Element, such as battery, resistor or wire",toStateObject:e=>({startVertexID:tl.toStateObject(e.startVertexProperty.value),endVertexID:tl.toStateObject(e.endVertexProperty.value)}),stateSchema:{startVertexID:tl,endVertexID:tl},stateObjectToCreateElementArguments:e=>[tl.fromStateObject(e.startVertexID),tl.fromStateObject(e.endVertexID)]})),it.register("CircuitElement",il);class sl extends Kh{constructor(e,t){super(e,t),this.currentProperty=new ot.Z(null,{tandem:e.createTandem("currentProperty"),units:"A",phetioValueType:(0,Qh.Z)(Xh.Z),phetioReadOnly:!0,phetioFeatured:!0}),this.probePositionProperty=new Uh.Z(Ys.Z.ZERO,{tandem:e.createTandem("probePositionProperty"),phetioFeatured:!0}),this.probeConnectionProperty=new ot.Z(null,{tandem:e.createTandem("probeConnectionProperty"),phetioFeatured:!0,phetioValueType:(0,Qh.Z)((0,Sh.Z)(il.CircuitElementIO)),phetioReadOnly:!0,phetioDocumentation:"The circuit element that the ammeter is connected to, or null if not connected to a circuit element"}),this.isActiveProperty.link(e=>{e||(this.probeConnectionProperty.value=null)})}setConnectionAndCurrent(e){this.currentProperty.value=null===e?null:e.current,this.probeConnectionProperty.value=null===e?null:e.circuitElement}reset(){super.reset(),this.currentProperty.reset(),this.probePositionProperty.reset()}}it.register("Ammeter",sl);class nl extends ye.Z{constructor(e,t,i){super(e,t,{...i,isValidTandemName:e=>/^[a-zA-Z0-9_]+$/.test(e)})}getArchetypalPhetioID(){return window.phetio.PhetioIDUtils.append(this.parentTandem.getArchetypalPhetioID(),ye.i)}}_defineProperty(nl,"DYNAMIC_ARCHETYPE_NAME",ye.i),Yi.Z.register("DynamicTandem",nl);const rl=nl;class ol extends Se.Z{constructor(e,t,i){const s=(0,N.ZP)()({phetioState:!1,tandem:ye.Z.OPTIONAL,supportsDynamicState:!0,containerSuffix:"Container",phetioDynamicElementName:void 0},i);if(Array.isArray(t),s.phetioDynamicElementName=s.tandem.name.slice(0,s.tandem.name.length-s.containerSuffix.length),super(s),this.supportsDynamicState=s.supportsDynamicState,this.phetioDynamicElementName=s.phetioDynamicElementName,this.createElement=e,this.defaultArguments=t,this._archetype=this.createArchetype(),this.elementCreatedEmitter=new $t.Z({parameters:[{valueType:Se.Z,phetioType:s.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:ss.Z}],tandem:s.tandem.createTandem("elementCreatedEmitter"),phetioDocumentation:"Emitter that fires whenever a new dynamic element is added to the container."}),this.elementDisposedEmitter=new $t.Z({parameters:[{valueType:Se.Z,phetioType:s.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:ss.Z}],tandem:s.tandem.createTandem("elementDisposedEmitter"),phetioDocumentation:"Emitter that fires whenever a dynamic element is removed from the container."}),ye.Z.PHET_IO_ENABLED&&(this.elementCreatedEmitter.addListener(e=>this.createdEventListener(e)),this.elementDisposedEmitter.addListener(e=>this.disposedEventListener(e))),this.notificationsDeferred=!1,this.deferredCreations=[],this.deferredDisposals=[],ye.Z.PHET_IO_ENABLED&&this.supportsDynamicState&&!this.phetioIsArchetype){const e=phet.phetio.phetioEngine.phetioStateEngine;e.clearDynamicElementsEmitter.addListener((e,t)=>{this.tandem.hasAncestor(t)&&(this.clear(),this.setNotificationsDeferred(!0))}),e.stateSetEmitter.addListener(()=>{this.notificationsDeferred&&this.setNotificationsDeferred(!1)}),e.addSetStateHelper((e,t)=>{let i=!1,s=0;for(;this.deferredCreations.length>0;){if(s>200)throw new Error("Too many iterations in deferred creations, stillToSetIDs = "+t.join(", "));const e=this.deferredCreations[0];this.stateSetOnAllChildrenOfDynamicElement(e.tandem.phetioID,t)&&(this.notifyElementCreatedWhileDeferred(e),i=!0),s++}return i})}}stateSetOnAllChildrenOfDynamicElement(e,t){for(let i=0;i0;)this.notifyElementCreatedWhileDeferred(this.deferredCreations[0]);for(;this.deferredDisposals.length>0;)this.notifyElementDisposedWhileDeferred(this.deferredDisposals[0])}this.notificationsDeferred=e}get archetype(){return function(e){if(null===e)throw new Error("archetype should exist");return e}(this._archetype)}getMetadata(e){const t=super.getMetadata(e);return(0,us.Z)({phetioDynamicElementName:this.phetioDynamicElementName},t)}}Yi.Z.register("PhetioDynamicElementContainer",ol);const al=ol,hl=new Map;class ll extends al{constructor(e,t,i){const s=(0,N.ZP)()({tandem:ye.Z.OPTIONAL,containerSuffix:"Group"},i);super(e,t,s),this._array=[],this.groupElementIndex=0,this.countProperty=new Gh.Z(0,{tandem:s.tandem.createTandem("countProperty"),phetioDocumentation:"the number of elements in the group",phetioReadOnly:!0,phetioFeatured:!0,numberType:"Integer"})}dispose(){}disposeElement(e){(0,qe.Z)(this._array,e),this.countProperty.value=this._array.length,super.disposeElement(e)}getArray(){return this._array}getArrayCopy(){return this._array.slice()}getElement(e){return this._array[e]}getLastElement(){return this.getElement(this.count-1)}get count(){return this.countProperty.value}filter(e){return this._array.filter(e)}includes(e){return this._array.includes(e)}indexOf(e){return this._array.indexOf(e)}forEach(e){this._array.forEach(e)}find(e){return this._array.find(e)}map(e){return this._array.map(e)}clear(e){const t=(0,N.ZP)()({resetIndex:!0},e);for(;this._array.length>0;)this.disposeElement(this._array[0]);t.resetIndex&&(this.groupElementIndex=0)}createCorrespondingGroupElement(e){const t=window.phetio.PhetioIDUtils.getGroupElementIndex(e);this.groupElementIndex===t&&this.groupElementIndex++;for(var i=arguments.length,s=new Array(i>1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2];const i=this.phetioDynamicElementName+window.phetio.PhetioIDUtils.GROUP_SEPARATOR+e,s=ye.Z.PHET_IO_ENABLED?this.phetioType.parameterTypes[0]:null,n=this.createDynamicElement(i,t,s);return this._array.push(n),this.countProperty.value=this._array.length,this.notifyElementCreated(n),n}}_defineProperty(ll,"PhetioGroupIO",e=>(hl.has(e)||hl.set(e,new Hi.Z(`PhetioGroupIO<${e.typeName}>`,{isValidValue:e=>e instanceof(window.phet?phet.tandem.PhetioGroup:Yi.Z.PhetioGroup),documentation:"An array that sends notifications when its values have changed.",metadataDefaults:{phetioDynamicElementName:null},parameterTypes:[e],addChildElement(t,i,s){const n=e.stateObjectToCreateElementArguments(s),r=window.phetio.PhetioIDUtils.getGroupElementIndex(i),o=t.createIndexedElement(r,n,!0);return t.groupElementIndex=Math.max(r+1,t.groupElementIndex),o}})),hl.get(e))),Yi.Z.register("PhetioGroup",ll);const dl=ll;class cl extends il{constructor(e,t,i,s,n){const r=(0,N.ZP)()({numberOfDecimalPlaces:1},n);super(e,t,i,s,r),this.numberOfDecimalPlaces=r.numberOfDecimalPlaces,this.distanceBetweenVertices=e.positionProperty.get().distance(t.positionProperty.get()),this.isFixedCircuitElement=!0}}it.register("FixedCircuitElement",cl);class ul extends me.WZ{constructor(e,t,i){super([e,t],(e,t)=>Math.abs(e*e*t),{units:"W",tandem:i,phetioValueType:Xh.Z,phetioDocumentation:"The dissipated power in Watts",phetioHighFrequency:!0,phetioFeatured:!0})}}it.register("PowerDissipatedProperty",ul);class pl extends cl{constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({initialOrientation:"right",voltage:9,isFlammable:!0,numberOfDecimalPlaces:1,voltagePropertyOptions:{tandem:n.createTandem("voltageProperty"),phetioFeatured:!0}},r);super(e,t,s,n,o),this.voltageProperty=new Gh.Z(o.voltage,o.voltagePropertyOptions),this.internalResistanceProperty=i,this.powerDissipatedProperty=new ul(this.currentProperty,i,n.createTandem("powerDissipatedProperty")),this.powerGeneratedProperty=new me.ZP([this.currentProperty,this.voltageProperty],(e,t)=>Math.abs(e*t),{tandem:n.createTandem("powerGeneratedProperty"),phetioValueType:Xh.Z,phetioHighFrequency:!0,phetioFeatured:!0}),this.initialOrientation=o.initialOrientation}dispose(){this.voltageProperty.dispose(),this.powerDissipatedProperty.dispose(),this.powerGeneratedProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.voltageProperty]}}it.register("VoltageSource",pl);class ml extends pl{constructor(e,t,i,s,n){const r=(0,N.ZP)()({initialOrientation:"right",voltage:9,isFlammable:!0,numberOfDecimalPlaces:2,voltagePropertyOptions:{range:ml.VOLTAGE_RANGE}},n);super(e,t,i,Eh.BATTERY_LENGTH,s,r),this.maximumVoltageProperty=new Gh.Z(r.voltage,{tandem:s.createTandem("maximumVoltageProperty"),range:ml.MAX_VOLTAGE_RANGE}),this.frequencyProperty=new Gh.Z(ml.DEFAULT_FREQUENCY,{tandem:s.createTandem("frequencyProperty"),range:ml.FREQUENCY_RANGE}),this.phaseProperty=new Gh.Z(0,{range:new Sn.Z(-180,180),tandem:s.createTandem("phaseProperty"),units:xr.DEGREES}),this.isPhaseEditableProperty=new se.Z(!0,{tandem:s.createTandem("isPhaseEditableProperty")}),this.isFrequencyEditableProperty=new se.Z(!0,{tandem:s.createTandem("isFrequencyEditableProperty")}),this.isVoltageEditableProperty=new se.Z(!0,{tandem:s.createTandem("isVoltageEditableProperty")}),this.time=0}getCircuitProperties(){return[this.frequencyProperty,this.phaseProperty,this.maximumVoltageProperty,...super.getCircuitProperties()]}dispose(){this.maximumVoltageProperty.dispose(),this.frequencyProperty.dispose(),this.phaseProperty.dispose(),this.isPhaseEditableProperty.dispose(),this.isFrequencyEditableProperty.dispose(),this.isVoltageEditableProperty.dispose(),super.dispose()}step(e,t,i){super.step(e,t,i),this.time=e,this.voltageProperty.value=-this.maximumVoltageProperty.value*Math.sin(2*Math.PI*this.frequencyProperty.value*e+this.phaseProperty.value*Math.PI/180)}}_defineProperty(ml,"VOLTAGE_RANGE",new Sn.Z(-120,120)),_defineProperty(ml,"DEFAULT_FREQUENCY",.5),_defineProperty(ml,"FREQUENCY_RANGE",new Sn.Z(.1,2)),_defineProperty(ml,"MAX_VOLTAGE_RANGE",new Sn.Z(0,120)),it.register("ACVoltage",ml);const gl=Eh.BATTERY_LENGTH;class yl extends pl{constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({initialOrientation:"right",voltage:yl.VOLTAGE_DEFAULT,isFlammable:!0,numberOfDecimalPlaces:"normal"===s?yl.VOLTAGE_DECIMAL_PLACES:yl.HIGH_VOLTAGE_DECIMAL_PLACES,voltagePropertyOptions:{range:"normal"===s?yl.VOLTAGE_RANGE:yl.HIGH_VOLTAGE_RANGE}},r);super(e,t,i,gl,n,o),this.initialOrientation=o.initialOrientation,this.batteryType=s,this.isReversibleProperty=new se.Z(!0,{tandem:n.createTandem("isReversibleProperty"),phetioFeatured:!0})}step(e,t,i){}dispose(){this.isReversibleProperty.dispose(),super.dispose()}}_defineProperty(yl,"VOLTAGE_DEFAULT",9),_defineProperty(yl,"VOLTAGE_RANGE",new Sn.Z(0,120)),_defineProperty(yl,"VOLTAGE_DECIMAL_PLACES",1),_defineProperty(yl,"HIGH_VOLTAGE_DEFAULT",1e3),_defineProperty(yl,"HIGH_VOLTAGE_RANGE",new Sn.Z(100,1e5)),_defineProperty(yl,"HIGH_VOLTAGE_DECIMAL_PLACES",0),it.register("Battery",yl);class Al extends cl{constructor(e,t,i,s,n){super(e,t,i,s,n),this.mnaVoltageDrop=0,this.mnaCurrent=0,this.clearEmitter=new $t.Z,this.isClearableProperty=new se.Z(!0,{tandem:s.createTandem("isClearableProperty"),phetioDocumentation:"Determines whether the button to clear the component can be shown"})}clear(){this.mnaVoltageDrop=0,this.mnaCurrent=0,this.clearEmitter.emit()}dispose(){this.clearEmitter.dispose(),this.isClearableProperty.dispose(),super.dispose()}}it.register("DynamicCircuitElement",Al);class fl extends Al{constructor(e,t,i,s){const n=(0,N.ZP)()({capacitance:fl.CAPACITANCE_DEFAULT,numberOfDecimalPlaces:fl.NUMBER_OF_DECIMAL_PLACES},s);super(e,t,Eh.CAPACITOR_LENGTH,i,n),this.capacitanceProperty=new Gh.Z(n.capacitance,{range:fl.CAPACITANCE_RANGE,tandem:i.createTandem("capacitanceProperty")}),this.capacitanceProperty.lazyLink((e,t)=>{const i=t*(this.endVertexProperty.value.voltageProperty.value-this.startVertexProperty.value.voltageProperty.value)/e,s=this.startVertexProperty.value.voltageProperty.value,n=(i-(this.endVertexProperty.value.voltageProperty.value-s))/2;this.startVertexProperty.value.voltageProperty.value-=n,this.endVertexProperty.value.voltageProperty.value+=n,this.mnaVoltageDrop=-i})}dispose(){this.capacitanceProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.capacitanceProperty]}}_defineProperty(fl,"CAPACITANCE_RANGE",new Sn.Z(ct.capacitanceMin,ct.capacitanceMax)),_defineProperty(fl,"NUMBER_OF_DECIMAL_PLACES",ct.capacitorNumberDecimalPlaces),_defineProperty(fl,"CAPACITANCE_DEFAULT",ct.capacitanceDefault),it.register("Capacitor",fl);var Pl=i(1731);class bl extends Pl.Z{constructor(e,t,i,s){super(),this.charge=s,this.circuitElement=e,this.distance=t,this.matrix=wt.Z.identity(),this.visibleProperty=i,this.changedEmitter=new $t.Z,this.updatePositionAndAngle()}updatePositionAndAngle(){this.circuitElement.updateMatrixForPoint(this.distance,this.matrix),this.changedEmitter.emit()}dispose(){this.changedEmitter.dispose(),super.dispose()}}it.register("Charge",bl);class El{constructor(e){this.windowSize=e,this.samples=new Array(e),this.sampleIndex=0,this.total=0,this.numSamples=0,this.clear()}clear(){this.total=0,this.numSamples=0;for(let e=0;e=this.windowSize}updateRunningAverage(e){return this.numSamples=Math.min(this.windowSize,this.numSamples+1),this.total-=this.samples[this.sampleIndex],this.total+=e,this.samples[this.sampleIndex]=e,this.sampleIndex=(this.sampleIndex+1)%this.windowSize,this.getRunningAverage()}}In.Z.register("RunningAverage",El);const vl=El,wl=.43*Eh.CHARGE_SEPARATION,Vl=function(e){return Math.abs(e.currentProperty.get())};class Sl{constructor(e){this.charges=e.charges,this.circuit=e,this.scale=1,this.timeScaleRunningAverage=new vl(30),this.timeScaleProperty=new Gh.Z(1,{range:new Sn.Z(0,1)})}reset(){this.timeScaleProperty.reset(),this.timeScaleRunningAverage.clear()}step(e){if(0===this.charges.length||0===this.circuit.circuitElements.length)return;e=Math.min(e,1/30);const t=_.maxBy(this.circuit.circuitElements,Vl),i=Vl(t),s=25*i*(1/30);this.scale=s>=wl?wl/s:1;const n=Ve.Z.clamp(this.timeScaleRunningAverage.updateRunningAverage(this.scale),0,1);this.timeScaleProperty.set(n);for(let r=0;re.updatePositionAndAngle())}equalizeAll(e){const t=Nr.Z.shuffle(_.range(this.charges.length));for(let i=0;i=1e-10&&this.equalizeCharge(s,e)}}equalizeCharge(e,t){const i=this.circuit.getChargesInCircuitElement(e.circuitElement),s=_.sortBy(i,"distance"),n=s.indexOf(e),r=s[n+1],o=s[n-1];if(r&&o){const i=r.distance-o.distance,s=e.distance;let n=o.distance+i/2;const a=Math.abs(n-s);if(Math.sign(n-s)===Math.sign(-e.circuitElement.currentProperty.get()*e.charge)){const i=Math.abs(68.75*t);a>i&&(ns&&(n=s+i)),n>=0&&n<=e.circuitElement.chargePathLength&&(e.distance=n)}}}propagate(e,t){const i=e.distance,s=-e.circuitElement.currentProperty.get()*e.charge;if(Math.abs(s)>1e-10){const n=i+25*s*t*this.scale;if(e.circuitElement.containsScalarPosition(n))e.distance=n;else{const t=s<0?-n:n-e.circuitElement.chargePathLength,i=n<0?e.circuitElement.startVertexProperty.get():e.circuitElement.endVertexProperty.get(),r=this.getPositions(e,t,i,0);if(r.length>0){const t=_.maxBy(r,"distanceToClosestElectron");e.circuitElement=t.circuitElement,e.distance=t.distance}}}}getPositions(e,t,i,s){const n=this.circuit,r=this.circuit.getNeighborCircuitElements(i),o=[];for(let a=0;a1e-10&&h.startVertexProperty.get()===i?(d=Ve.Z.clamp(t,0,h.chargePathLength),c=!0):l<-1e-10&&h.endVertexProperty.get()===i&&(d=Ve.Z.clamp(h.chargePathLength-t,0,h.chargePathLength),c=!0),c){const t=n.getChargesInCircuitElement(h),r=h.startVertexProperty.get()===i;let a=0;if(t.length>0)a=r?_.minBy(t,"distance").distance:h.chargePathLength-_.maxBy(t,"distance").distance,"number"==typeof d&&o.push({circuitElement:h,distance:d,distanceToClosestElectron:a});else if(s<20){const t=this.getPositions(e,0,h.getOppositeVertex(i),s+1);if(t.length>0){const e=_.minBy(t,"distanceToClosestElectron");"number"==typeof d&&o.push({circuitElement:h,distance:d,distanceToClosestElectron:e.distanceToClosestElectron+h.chargePathLength})}}}}return o}}it.register("ChargeAnimator",Sl);class Tl extends Le.Z{}_defineProperty(Tl,"ELECTRONS",new(y=Tl)),_defineProperty(Tl,"CONVENTIONAL",new y),_defineProperty(Tl,"enumeration",new Oe.Z(y)),it.register("CurrentType",Tl);class Cl extends cl{constructor(e,t,i,s){const n=(0,N.ZP)()({fuseLength:Eh.RESISTOR_LENGTH,currentRating:Cl.DEFAULT_CURRENT_RATING,isCurrentReentrant:!0,numberOfDecimalPlaces:1},s);super(e,t,n.fuseLength,i,n),this.currentRatingProperty=new Gh.Z(n.currentRating,{range:Cl.RANGE,tandem:i.createTandem("currentRatingProperty"),phetioFeatured:!0}),this.isTrippedProperty=new se.Z(!1,{tandem:i.createTandem("isTrippedProperty"),phetioFeatured:!0}),this.resistanceProperty=new Gh.Z(Eh.MINIMUM_RESISTANCE),this.timeCurrentRatingExceeded=0,this.isRepairableProperty=new se.Z(!0,{tandem:i.createTandem("isRepairableProperty"),phetioFeatured:!0})}dispose(){super.dispose(),this.currentRatingProperty.dispose(),this.isRepairableProperty.dispose(),this.isTrippedProperty.dispose()}resetFuse(){this.isTrippedProperty.reset(),this.timeCurrentRatingExceeded=0}step(e,t,i){super.step(e,t,i),Math.abs(this.currentProperty.value)>this.currentRatingProperty.value+1e-6?this.timeCurrentRatingExceeded+=t:this.timeCurrentRatingExceeded=0,this.timeCurrentRatingExceeded>0&&(this.isTrippedProperty.value=!0,i.componentEditedEmitter.emit()),this.resistanceProperty.value=this.isTrippedProperty.value?Eh.MAX_RESISTANCE:1/this.currentRatingProperty.value*.06}getCircuitProperties(){return[this.resistanceProperty,this.isTrippedProperty]}}_defineProperty(Cl,"RANGE",new Sn.Z(.5,20)),_defineProperty(Cl,"DEFAULT_CURRENT_RATING",4),it.register("Fuse",Cl);const Il=Eh.INDUCTOR_LENGTH;class xl extends Al{constructor(e,t,i,s){const n=(0,N.ZP)()({inductance:xl.INDUCTANCE_DEFAULT,numberOfDecimalPlaces:xl.INDUCTANCE_NUMBER_OF_DECIMAL_PLACES},s);super(e,t,Il,i,n),this.inductanceProperty=new Gh.Z(n.inductance,{range:xl.INDUCTANCE_RANGE,tandem:i.createTandem("inductanceProperty")})}dispose(){this.inductanceProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.inductanceProperty]}}_defineProperty(xl,"INDUCTANCE_DEFAULT",ct.inductanceDefault),_defineProperty(xl,"INDUCTANCE_RANGE",new Sn.Z(ct.inductanceMin,ct.inductanceMax)),_defineProperty(xl,"INDUCTANCE_NUMBER_OF_DECIMAL_PLACES",ct.inductorNumberDecimalPlaces),it.register("Inductor",xl);class kl extends Le.Z{}_defineProperty(kl,"LIFELIKE",new(A=kl)),_defineProperty(kl,"SCHEMATIC",new A),_defineProperty(kl,"enumeration",new Oe.Z(A,{phetioDocumentation:"Enumeration that determines how the circuit elements are rendered: lifelike or schematic"})),it.register("CircuitElementViewType",kl);const Bl=[new Ys.Z(.623,2.063),new Ys.Z(.623,.7605),new Ys.Z(.471,.46464),new Ys.Z(.471,.3834),new Ys.Z(.591,.336),new Ys.Z(.823*.87,.565*.6),new Ys.Z(.77256,.36),new Ys.Z(.922*.87,.699*.6),new Ys.Z(.80649,1.474),new Ys.Z(.88992,1.474)],Ml=[new Ys.Z(.5,2.06),new Ys.Z(.5,.34),new Ys.Z(.89,.34),new Ys.Z(.89,1.474)];class Dl extends cl{static createAtPosition(e,t,i,s,n,r,o){return new Dl(e,t,s,n,r,o)}static createVertexPair(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const s=Dl.createSamplePoints(e);return{startVertex:i?new $h(s[0],t.selectionProperty):t.vertexGroup.createNextElement(s[0]),endVertex:i?new $h(s[1],t.selectionProperty):t.vertexGroup.createNextElement(s[1])}}static createSamplePoints(e){const t=new Ys.Z(19,10),i=new Ys.Z(e.x-18,e.y).plus(t),s=i.plus(Ys.Z.createPolar(36,-Math.PI/4));return[i,s]}constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({isExtreme:!1,isReal:!1},r);o.numberOfDecimalPlaces=o.isExtreme?0:1,super(e,t,1,n,o),this.isReal=o.isReal,this.isExtreme=o.isExtreme,this.resistanceProperty=new Gh.Z(i,{tandem:n.createTandem("resistanceProperty"),phetioFeatured:!0,range:o.isExtreme?new Sn.Z(100,1e4):o.isReal?new Sn.Z(0,Number.MAX_VALUE):new Sn.Z(0,120)}),this.powerDissipatedProperty=new ul(this.currentProperty,this.resistanceProperty,n.createTandem("powerDissipatedProperty")),this.viewTypeProperty=s,this.chargePathLength=this.getPathLength()}updatePathLength(){this.chargePathLength=this.getPathLength()}getPathLength(){let e=0;const t=this.viewTypeProperty.value===kl.LIFELIKE?Bl:Ml;let i=Dl.getFilamentPathPoint(0,Ys.Z.ZERO,t);for(let s=1;s{t+=s.state.ltaSolution.getCurrent(e)*s.dt,i+=s.dt});const s=t/i;return s}getTimeAverageCurrentForCoreModel(e){let t=0,i=0;this.resultSet.forEach(s=>{t+=s.state.ltaSolution.getCurrentForCompanion(e)*s.dt,i+=s.dt});const s=t/i;return s}getInstantaneousCurrent(e){return this.getFinalState().ltaSolution.getCurrent(e)}getInstantaneousVoltage(e){return this.getFinalState().ltaSolution.getVoltage(e.nodeId0,e.nodeId1)}getInstantaneousVoltageForCoreModel(e){return this.getFinalState().ltaSolution.getVoltage(e.node0,e.node1)}getInstantaneousCurrentForCoreModel(e){return this.getFinalState().ltaSolution.getCurrentForCompanion(e)}getFinalState(){return _.last(this.resultSet).state}}it.register("LTAStateSet",Ll);var Rl=i(4129),Nl=i(3192);class Zl{constructor(e,t){this.nodeVoltages=e,this.elements=t}getSolvedCurrent(e){return this.elements.get(e)}approxEquals(e,t){const i=Array.from(this.nodeVoltages.keys()),s=Array.from(e.nodeVoltages.keys());_.difference(i,s);for(let n=0;nMath.abs(e-t)<1e-4;it.register("MNASolution",Zl);class Fl{constructor(e,t,i){this.batteries=e,this.resistors=t,this.currentSources=i,this.elements=[...this.batteries,...this.resistors,...this.currentSources],this.nodeSet={};for(let s=0;s0;){const i=e[0];t.push(i);const s=this.getConnectedNodeIds(i);for(let t=0;t0;){const e=i.shift();t.push(e);for(let s=0;snew Ul(e)),s=[...t,...i],n=e=>{const t=Yl(s,e);return t},r=new Nl.Z(e.length,this.getNumVars()),o=new Nl.Z(e.length,1);let a;try{for(let t=0;t{for(let i=0;i{const o=t.cond();return`Debugging circuit: ${e.toString()}\n equations:\n${s.join("\n")}\n\nA.cond=1E${Ve.Z.toFixed(Math.log10(o),4)} = ${Ve.Z.toFixed(o,4)} \nA=\n${t.transpose().toString()}\nz=\n${i.transpose().toString()}\nunknowns=\n${n.map(e=>e.toTermName()).join(", ")}\nx=\n${r.transpose().toString()}\n `},Ql=ct.minDT,Xl=ct.searchTimeStep;class Kl{stepInTimeWithHistory(e,t,i){let s=e,n=0;const r=[];let o=i;for(;ni-n&&(o=i-n))}return phet.log&&console.log("states per frame: "+r.length),r}search(e,t,i,s){if(i===Eh.PAUSED_DT)return{dt:Eh.PAUSED_DT,state:t.update(e,Eh.PAUSED_DT)};if(i<=Ql)return{dt:Ql,state:t.update(e,Ql)};if(Xl){const n=t.update(e,i),r=s||t.update(e,i/2),o=t.update(r,i/2),a=t.distance(n,o);return a<1e-5?{dt:i,state:o}:this.search(e,t,i/2,r)}return{dt:Ql,state:t.update(e,Ql)}}}it.register("TimestepSubdivisions",Kl);class Jl{constructor(e,t,i){this.circuit=e,this.mnaSolution=t,this.currentCompanions=i}getNodeVoltage(e){return this.mnaSolution.getNodeVoltage(e)}getCurrent(e){return e.resistance>0?this.mnaSolution.getCurrentForResistor(e):this.mnaSolution.getSolvedCurrent(e)}getCurrentForCompanion(e){return _.find(this.currentCompanions,t=>t.element.id===e.id).getValueForSolution(this.mnaSolution)}getVoltage(e,t){return this.getNodeVoltage(t)-this.getNodeVoltage(e)}}it.register("LTASolution",Jl);class jl{constructor(e,t){this.ltaCircuit=e,this.ltaSolution=t,this.solution=null}update(e){this.solution=this.ltaCircuit.solvePropagate(e);const t=this.ltaCircuit.updateCircuit(this.solution);return new jl(t,this.solution)}getCharacteristicArray(){const e=[];for(let t=0;t{const r="syntheticNode"+n++,o=new sd(e.node0,r,e.voltage),a=new nd(r,e.node1,e.resistance);t.push(o),i.push(a),s.push({element:e,getValueForSolution:e=>e.getSolvedCurrent(o)})}),this.ltaCapacitors.forEach(r=>{const o="syntheticNode"+n++,a="syntheticNode"+n++,h=e/2/r.capacitance,l=ct.capacitorResistance,d=h*r.current-r.voltage,c=new sd(r.node0,o,d),u=new nd(o,a,h),p=new nd(a,r.node1,l);t.push(c),i.push(u),i.push(p),r.capacitorVoltageNode1=a,s.push({element:r,getValueForSolution:e=>e.getCurrentForResistor(u)})}),this.ltaInductors.forEach(r=>{const o="syntheticNode"+n++,a="syntheticNode"+n++,h=2*r.inductance/e,l=r.voltage+-h*r.current,d=new sd(r.node0,o,l),c=new nd(o,a,h),u=new nd(a,r.node1,ct.inductorResistance);t.push(d),i.push(c),i.push(u),r.inductorVoltageNode1=a,s.push({element:r,getValueForSolution:e=>e.getCurrentForResistor(c)})});const r=t,o=[...this.ltaResistors,...i],a=new Fl(r,o,[]).solve();return new Jl(this,a,s)}solveWithSubdivisions(e,t){const i={update:(e,t)=>e.update(t),distance:(e,t)=>od(e.getCharacteristicArray(),t.getCharacteristicArray())},s=e.stepInTimeWithHistory(new jl(this,null),i,t);return new Ll(s)}solveWithSubdivisions2(e){return this.solveWithSubdivisions(new Kl,e)}updateWithSubdivisions(e){return this.solveWithSubdivisions2(e).getFinalState().ltaCircuit}solveItWithSubdivisions(e){return this.solveWithSubdivisions2(e).getFinalState().ltaSolution}update(e){return this.updateCircuit(this.solvePropagate(e))}updateCircuit(e){const t=this.ltaCapacitors.map(t=>new td(t.id,t.node0,t.node1,e.getVoltage(t.node0,t.capacitorVoltageNode1),e.getCurrentForCompanion(t),t.capacitance)),i=this.ltaInductors.map(t=>new ed(t.id,t.node0,t.node1,e.getVoltage(t.node0,t.inductorVoltageNode1),e.getCurrentForCompanion(t),t.inductance));return new rd(this.ltaResistors,this.ltaBatteries,t,i)}}const od=(e,t)=>{let i=0;for(let s=0;s4&&void 0!==arguments[4]?arguments[4]:0;super(),this.defaultResistance=e,this.range=t,this.isMetallic=i,this.length=s,this.verticalOffset=n}static fixed(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return new ad(e,new Sn.Z(e,e),t,i,s)}}_defineProperty(ad,"RESISTOR",new(f=ad)(10,new Sn.Z(0,120),!1,Eh.RESISTOR_LENGTH)),_defineProperty(ad,"EXTREME_RESISTOR",new f(1e3,new Sn.Z(100,1e4),!1,Eh.RESISTOR_LENGTH)),_defineProperty(ad,"COIN",f.fixed(0,!0,Eh.COIN_LENGTH)),_defineProperty(ad,"PAPER_CLIP",f.fixed(0,!0,Eh.PAPER_CLIP_LENGTH)),_defineProperty(ad,"PENCIL",f.fixed(25,!1,Eh.PENCIL_LENGTH)),_defineProperty(ad,"ERASER",f.fixed(1e9,!1,Eh.ERASER_LENGTH)),_defineProperty(ad,"HAND",f.fixed(1e5,!1,Eh.HAND_LENGTH,15)),_defineProperty(ad,"DOG",f.fixed(1e5,!1,Eh.DOG_LENGTH,-40)),_defineProperty(ad,"DOLLAR_BILL",f.fixed(1e9,!1,Eh.DOLLAR_BILL_LENGTH)),_defineProperty(ad,"enumeration",new Oe.Z(f)),it.register("ResistorType",ad);class hd extends cl{constructor(e,t,i,s,n){const r=(0,N.ZP)()({isFlammable:!0,phetioType:hd.ResistorIO,numberOfDecimalPlaces:i===ad.RESISTOR?1:0},n);r.isMetallic=i.isMetallic,i!==ad.RESISTOR&&i!==ad.EXTREME_RESISTOR&&(r.isEditablePropertyOptions={tandem:ye.Z.OPT_OUT}),super(e,t,i.length,s,r),this.resistorType=i,this.resistanceProperty=new Gh.Z(i.defaultResistance,{tandem:s.createTandem("resistanceProperty"),range:this.resistorType.range,phetioFeatured:!0}),this.powerDissipatedProperty=new ul(this.currentProperty,this.resistanceProperty,s.createTandem("powerDissipatedProperty")),this.isColorCodeVisibleProperty=new se.Z(!0,{tandem:this.resistorType===ad.RESISTOR?s.createTandem("isColorCodeVisibleProperty"):ye.Z.OPT_OUT,phetioDocumentation:"Whether the view can display the resistor color code bands",phetioFeatured:!0})}dispose(){this.resistanceProperty.dispose(),this.powerDissipatedProperty.dispose(),this.isColorCodeVisibleProperty.dispose(),super.dispose()}isResistanceEditable(){return this.resistorType===ad.EXTREME_RESISTOR||this.resistorType===ad.RESISTOR}getCircuitProperties(){return[this.resistanceProperty]}}P=hd,_defineProperty(hd,"RESISTANCE_DECIMAL_PLACES",1),_defineProperty(hd,"HIGH_RESISTANCE_DECIMAL_PLACES",0),_defineProperty(hd,"ResistorIO",new Hi.Z("ResistorIO",{valueType:P,supertype:il.CircuitElementIO,stateSchema:{resistorType:(0,at.Z)(ad)},toStateObject:e=>({...il.CircuitElementIO.toStateObject(e),resistorType:(0,at.Z)(ad).toStateObject(e.resistorType)}),stateObjectToCreateElementArguments(e){const t=il.CircuitElementIO.stateObjectToCreateElementArguments(e);return t.push((0,at.Z)(ad).fromStateObject(e.resistorType)),t}})),it.register("Resistor",hd);class ld extends cl{constructor(e,t,i,s){const n=(0,N.ZP)()({isEditablePropertyOptions:{tandem:ye.Z.OPT_OUT},isValueDisplayablePropertyOptions:{tandem:ye.Z.OPT_OUT},labelStringPropertyOptions:{tandem:ye.Z.OPT_OUT}},s);super(e,t,Eh.SERIES_AMMETER_LENGTH,i,n),this.resistanceProperty=new Gh.Z(0)}getCircuitProperties(){return[]}}it.register("SeriesAmmeter",ld);const dd=Eh.SWITCH_LENGTH,cd=Eh.SWITCH_START,ud=Eh.SWITCH_END;class pd extends cl{constructor(e,t,i,s){const n=(0,N.ZP)()({closed:!1,isEditablePropertyOptions:{tandem:ye.Z.OPT_OUT},isSizeChangedOnViewChange:!1});super(e,t,dd,i,n),this.resistanceProperty=new Gh.Z(0),this.isClosedProperty=new se.Z(n.closed,{tandem:i.createTandem("isClosedProperty"),phetioFeatured:!0}),this.isClosedProperty.link(e=>{this.resistanceProperty.value=e?0:Eh.MAX_RESISTANCE,s&&s.componentEditedEmitter.emit()})}dispose(){this.isClosedProperty.dispose(),super.dispose()}updateMatrixForPoint(e,t){const i=this.startPositionProperty.get(),s=this.endPositionProperty.get(),n=e/this.chargePathLength;if(n>cd&&nthis.update(),this.vertexMovedEmitter.addListener(this.updateListener),this.resistivityProperty.link(this.updateListener),this.update()}step(e,t,i){super.step(e,t,i),this.update()}update(){const e=this.startPositionProperty.get(),t=this.endPositionProperty.get(),i=e.distance(t),s=5e-4*i;this.lengthProperty.set(s);const n=this.resistivityProperty.get()*s/Eh.WIRE_CROSS_SECTIONAL_AREA,r=Math.max(Eh.MINIMUM_WIRE_RESISTANCE,n);this.resistanceProperty.set(r),this.chargePathLength=Math.max(i,1e-6)}getCircuitProperties(){return[this.resistanceProperty]}dispose(){this.vertexMovedEmitter.removeListener(this.updateListener),this.resistivityProperty.unlink(this.updateListener),super.dispose()}}it.register("Wire",md);class gd extends _l{constructor(e,t,i,s,n){super(e,t,i),this.voltage=s,this.resistance=n}}it.register("LTAResistiveBattery",gd);const yd=gd,Ad=rt.currentUnitsStringProperty,fd=rt.voltageUnitsStringProperty,Pd={createCurrentReadout:function(e,t){if(ct.fullPrecisionAmmeter)return e+"";{const i=t?1e3:1e10,s=t?"> 10^3":"> 10^10",n=t?"< -10^3":"< -10^10",r=At.value;if(null===e)return xr.NO_VALUE;if(r===gt.MAGNITUDE&&Math.abs(e)>i)return s;if(r===gt.SIGNED&&e>i)return s;if(r===gt.SIGNED&&e<-i)return n;{const t=At.value===gt.MAGNITUDE?Math.abs(e):e;return xt.Z.fillIn(Ad,{current:Ve.Z.toFixed(t,Eh.METER_PRECISION)})}}},createVoltageReadout:function(e){return xt.Z.fillIn(fd,{voltage:Ve.Z.toFixed(e,Eh.METER_PRECISION)})},setInSceneGraph:function(e,t,i){e&&!t.hasChild(i)?t.addChild(i):!e&&t.hasChild(i)&&t.removeChild(i)},clampMagnitude(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e20;return Math.abs(e)>t?Math.sign(e)*t:e},getDropItemHitBoxForBounds(e){const t=.5*(1-Eh.RETURN_ITEM_HIT_BOX_RATIO);return e.erodedXY(t*e.width,t*e.height)}};it.register("CCKCUtils",Pd);const bd=Pd,Ed=new Kl;let vd=0;class wd{static solveModifiedNodalAnalysis(e,t){const i=[],s=[],n=[],r=[],o=[],a=[],h=new Map,l=new Map,d=new Map,c=new Map;let u=!1;for(let w=0;wMath.log(e)/Math.log(t),s=m.getFinalState().ltaSolution.getVoltage(t.nodeId0,t.nodeId1),n=Math.abs(s),r=2,o=3;t.resistance=Dl.REAL_BULB_COLD_RESISTANCE+o*n/e(n+r,r),i.resistanceProperty.value=t.resistance}}p=new rd(s,i,n,r),m=p.solveWithSubdivisions(Ed,t)}i.forEach(e=>{l.get(e).currentProperty.value=m.getTimeAverageCurrentForCoreModel(e)}),s.forEach(e=>{h.get(e).currentProperty.value=m.getTimeAverageCurrent(e)}),n.forEach(e=>{const t=d.get(e);t.currentProperty.value=m.getTimeAverageCurrentForCoreModel(e),t.mnaCurrent=bd.clampMagnitude(m.getInstantaneousCurrentForCoreModel(e)),t.mnaVoltageDrop=bd.clampMagnitude(m.getInstantaneousVoltageForCoreModel(e))}),r.forEach(e=>{const t=c.get(e);t.currentProperty.value=m.getTimeAverageCurrentForCoreModel(e),t.mnaCurrent=bd.clampMagnitude(m.getInstantaneousCurrentForCoreModel(e)),t.mnaVoltageDrop=bd.clampMagnitude(m.getInstantaneousVoltageForCoreModel(e))}),o.forEach(e=>{e.currentProperty.value=0,e instanceof Dl&&e.isReal&&(e.resistanceProperty.value=Dl.REAL_BULB_COLD_RESISTANCE)});const g=[],y=[];e.vertexGroup.forEach(e=>{const t=m.getFinalState().ltaSolution.getNodeVoltage(e.index+"");"number"==typeof t?(e.voltageProperty.value=-t,g.push(e)):y.push(e)});const A=(e,t,i)=>{if(!g.includes(i)){const s=e===t.startVertexProperty.value?1:-1;t instanceof hd||t instanceof md||t instanceof Dl||t instanceof pd&&t.isClosedProperty.value||t instanceof Cl||t instanceof ld?(i.voltageProperty.value=e.voltageProperty.value,g.push(i)):t instanceof pl?(i.voltageProperty.value=e.voltageProperty.value+s*t.voltageProperty.value,g.push(i)):t instanceof fl||t instanceof xl?(i.voltageProperty.value=e.voltageProperty.value-s*t.mnaVoltageDrop,g.push(i)):t instanceof pd&&t.isClosedProperty.value}},f=[],P=(t,i)=>{f.push(t),e.circuitElements.forEach(e=>{if(e.containsVertex(t)){const s=e.getOppositeVertex(t);f.includes(s)||e instanceof pd&&!e.isClosedProperty.value||(i(t,e,s),P(s,i))}})},b=[...g,...y];b.forEach(e=>{f.includes(e)||P(e,A)});const E=[...o],v=t=>e.conserveCurrent(t,E);f.length=0,b.forEach(e=>P(e,v)),y.forEach(e=>{})}}it.register("LinearTransientAnalysis",wd);class Vd extends Le.Z{}_defineProperty(Vd,"EXPLORE",new(b=Vd)),_defineProperty(Vd,"TEST",new b),_defineProperty(Vd,"enumeration",new Oe.Z(b)),it.register("InteractionMode",Vd);var Sd=i(1039),Td=i(538),Cd=i(170);const Id=Eh.BATTERY_LENGTH,xd=Eh.WIRE_LENGTH,kd=e=>e<0?Jh.BACKWARD:e>0?Jh.FORWARD:Jh.UNSPECIFIED,Bd=_.constant(!0);class Md extends Se.Z{constructor(e,t,i,s){super({tandem:i,phetioType:Dd,phetioState:!1}),this.viewTypeProperty=e,this.addRealBulbsProperty=t;const n=s;this.includeACElements=n.includeACElements,this.includeLabElements=n.includeLabElements,this.blackBoxStudy=n.blackBoxStudy,this.wireResistivityProperty=new Gh.Z(Eh.WIRE_RESISTIVITY_RANGE.min,{tandem:i.parentTandem.createTandem("wireResistivityProperty"),range:Eh.WIRE_RESISTIVITY_RANGE,phetioFeatured:!0}),this.sourceResistanceProperty=new Gh.Z(Eh.DEFAULT_BATTERY_RESISTANCE,{tandem:i.parentTandem.createTandem("sourceResistanceProperty"),range:Eh.BATTERY_RESISTANCE_RANGE,phetioFeatured:!0}),this.circuitElements=(0,ge.Z)({phetioState:!0,phetioType:ge.Z.ObservableArrayIO((0,Sh.Z)(il.CircuitElementIO)),tandem:i.createTandem("circuitElements"),phetioDocumentation:"All Circuit Elements, used for state save/restore",phetioFeatured:!0}),this.charges=(0,ge.Z)(),this.currentTypeProperty=new lt("electrons"===ct.currentType?Tl.ELECTRONS:Tl.CONVENTIONAL,{tandem:i.parentTandem.createTandem("currentTypeProperty"),phetioFeatured:!0}),this.currentTypeProperty.lazyLink(()=>this.relayoutAllCharges()),this.showCurrentProperty=new se.Z(ct.showCurrent,{tandem:i.parentTandem.createTandem("showCurrentProperty"),phetioFeatured:!0}),this.timeProperty=new Gh.Z(0),this.chargeAnimator=new Sl(this);const r=this.markDirty.bind(this);this.circuitElements.addItemAddedListener(e=>{e.getCircuitProperties().forEach(e=>e.lazyLink(r)),e instanceof Al&&(e.clearEmitter.addListener(r),e.disposeEmitterCircuitElement.addListener(()=>{e.clearEmitter.removeListener(r)})),e.chargeLayoutDirty=!0;const t=()=>this.markAllConnectedCircuitElementsDirty(e.startVertexProperty.get());e.lengthProperty&&(e.lengthProperty.link(t),e.disposeEmitterCircuitElement.addListener(()=>e.lengthProperty.unlink(t))),this.markDirty(),e.currentSenseProperty.lazyLink(o)}),this.circuitElements.addItemRemovedListener(e=>{this.removeVertexIfOrphaned(e.startVertexProperty.get()),this.removeVertexIfOrphaned(e.endVertexProperty.get()),this.selectionProperty.get()===e&&(this.selectionProperty.value=null),e.getCircuitProperties().forEach(e=>e.unlink(r)),this.charges.removeAll(this.getChargesInCircuitElement(e)),e.currentSenseProperty.unlink(o),this.markDirty()}),this.charges.addItemRemovedListener(e=>e.dispose()),this.circuitChangedEmitter=new $t.Z,this.vertexDroppedEmitter=new $t.Z({parameters:[{valueType:$h}]}),this.componentEditedEmitter=new $t.Z,this.selectionProperty=new ot.Z(null,{tandem:i.createTandem("selectionProperty"),phetioValueType:(0,Qh.Z)((0,Sh.Z)((0,Sd.Z)([il.CircuitElementIO,$h.VertexIO]))),phetioFeatured:!0});const o=()=>{this.dirty=!0,this.circuitChangedEmitter.emit()};this.vertexGroup=new dl((e,t)=>new $h(t,this.selectionProperty,{tandem:e,phetioType:$h.VertexIO}),[new Ys.Z(-1e3,0)],{phetioType:dl.PhetioGroupIO($h.VertexIO),tandem:i.createTandem("vertexGroup")}),this.vertexGroup.elementCreatedEmitter.addListener(e=>{e.positionProperty.link(o);this.vertexGroup.filter(t=>e===t);this.selectionProperty.value=null}),this.stepActions=[],this.vertexDroppedEmitter.addListener(e=>{this.stepActions.push(()=>{const t=this.getNeighboringVertices(e);t.push(e);const i=[];if(t.forEach(e=>{this.vertexGroup.forEach(t=>{e!==t&&i.push({v1:e,v2:t})})}),i.length>0){const e=e=>e.v2.unsnappedPositionProperty.get().distance(e.v1.unsnappedPositionProperty.get()),t=_.minBy(i,e);e(t)<20&&!t.v1.isDragged&&!t.v2.isDragged&&this.moveVerticesApart(t.v1,t.v2)}})}),this.sourceResistanceProperty.link(r);const a=e=>{const t=new Ys.Z(-1e3,0);return[new $h(t,this.selectionProperty),new $h(t.plusXY(e,0),this.selectionProperty)]};this.wireGroup=new dl((e,t,i)=>new md(t,i,this.wireResistivityProperty,e),()=>a(xd),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("wireGroup")}),this.batteryGroup=new dl((e,t,i)=>new yl(t,i,this.sourceResistanceProperty,"normal",e),()=>a(Id),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("batteryGroup")});const h=this.includeLabElements&&!this.includeACElements;this.extremeBatteryGroup=h?new dl((e,t,i)=>new yl(t,i,this.sourceResistanceProperty,"high-voltage",e,{voltage:1e3,numberOfDecimalPlaces:yl.HIGH_VOLTAGE_DECIMAL_PLACES}),()=>a(Id),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("extremeBatteryGroup"),phetioDynamicElementName:"extremeBattery"}):null,this.acVoltageGroup=this.includeACElements?new dl((e,t,i)=>new ml(t,i,this.sourceResistanceProperty,e),()=>a(Eh.AC_VOLTAGE_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("acVoltageGroup")}):null,this.resistorGroup=new dl((e,t,i)=>new hd(t,i,ad.RESISTOR,e),()=>a(ad.RESISTOR.length),{phetioType:dl.PhetioGroupIO(hd.ResistorIO),tandem:i.createTandem("resistorGroup")}),this.extremeResistorGroup=h?new dl((e,t,i)=>new hd(t,i,ad.EXTREME_RESISTOR,e),()=>a(ad.EXTREME_RESISTOR.length),{phetioType:dl.PhetioGroupIO(hd.ResistorIO),tandem:i.createTandem("extremeResistorGroup")}):null,this.householdObjectGroup=new dl((e,t,i,s)=>new hd(t,i,s,e),()=>[...a(ad.RESISTOR.length),ad.COIN],{phetioType:dl.PhetioGroupIO(hd.ResistorIO),tandem:i.createTandem("householdObjectGroup")}),this.fuseGroup=new dl((e,t,i)=>new Cl(t,i,e),()=>a(Eh.FUSE_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("fuseGroup")}),this.seriesAmmeterGroup=this.includeLabElements?new dl((e,t,i)=>new ld(t,i,e),()=>a(Eh.SERIES_AMMETER_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("seriesAmmeterGroup")}):null,this.extremeLightBulbGroup=h?new dl((e,t,i)=>Dl.createAtPosition(t,i,this,Eh.HIGH_RESISTANCE,this.viewTypeProperty,e,{isExtreme:!0}),()=>a(100),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("extremeLightBulbGroup")}):null,this.capacitorGroup=this.includeACElements?new dl((e,t,i)=>new fl(t,i,e),()=>a(Eh.CAPACITOR_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("capacitorGroup")}):null,this.inductorGroup=this.includeACElements?new dl((e,t,i)=>new xl(t,i,e),()=>a(Eh.INDUCTOR_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("inductorGroup")}):null,this.switchGroup=new dl((e,t,i)=>new pd(t,i,e,this),()=>a(Eh.SWITCH_LENGTH),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("switchGroup")}),this.lightBulbGroup=new dl((e,t,i)=>new Dl(t,i,Eh.DEFAULT_RESISTANCE,this.viewTypeProperty,e),()=>a(100),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("lightBulbGroup")}),this.realLightBulbGroup=this.includeLabElements&&!this.includeACElements?new dl((e,t,i)=>new Dl(t,i,Eh.DEFAULT_RESISTANCE,this.viewTypeProperty,e,{isReal:!0,isEditablePropertyOptions:{tandem:ye.Z.OPT_OUT}}),()=>a(100),{phetioType:dl.PhetioGroupIO(il.CircuitElementIO),tandem:i.createTandem("realLightBulbGroup")}):null,this.groups=[this.wireGroup,this.batteryGroup,this.resistorGroup,this.switchGroup,this.lightBulbGroup,this.fuseGroup,this.householdObjectGroup,...this.extremeBatteryGroup?[this.extremeBatteryGroup]:[],...this.extremeResistorGroup?[this.extremeResistorGroup]:[],...this.extremeLightBulbGroup?[this.extremeLightBulbGroup]:[],...this.realLightBulbGroup?[this.realLightBulbGroup]:[],...this.seriesAmmeterGroup?[this.seriesAmmeterGroup]:[],...this.acVoltageGroup?[this.acVoltageGroup]:[],...this.capacitorGroup?[this.capacitorGroup]:[],...this.inductorGroup?[this.inductorGroup]:[]],this.dirty=!1}disposeCircuitElement(e){this.circuitElements.remove(e),this.groups.forEach(t=>t.includes(e)&&t.disposeElement(e))}createVertexPairArray(e,t){return[this.createVertex(e.plusXY(-t/2,0)),this.createVertex(e.plusXY(t/2,0))]}createVertex(e){return this.vertexGroup.createNextElement(e)}moveVerticesApart(e,t){const i=this.getNeighboringVertices(e),s=this.getNeighboringVertices(t);1!==i.length||e.blackBoxInterfaceProperty.get()?1!==s.length||t.blackBoxInterfaceProperty.get()||this.bumpAwaySingleVertex(t,s[0]):this.bumpAwaySingleVertex(e,i[0])}relayoutAllCharges(){this.circuitElements.forEach(e=>{e.chargeLayoutDirty=!0}),this.layoutChargesInDirtyCircuitElements()}bumpAwaySingleVertex(e,t){const i=e.positionProperty.value.distance(t.positionProperty.value);if(i<20){let i=t.positionProperty.value.minus(e.positionProperty.value);0===i.magnitude&&(i=new Ys.Z(1,0));const s=i.normalized().times(-45);this.translateVertexGroup(e,s)}else{const s=Math.PI/4*100/i;this.rotateSingleVertexByAngle(e,t,s);const n=this.closestDistanceToOtherVertex(e);this.rotateSingleVertexByAngle(e,t,-2*s);const r=this.closestDistanceToOtherVertex(e);r<=n&&this.rotateSingleVertexByAngle(e,t,2*s)}}rotateSingleVertexByAngle(e,t,i){const s=e.positionProperty.get(),n=t.positionProperty.get(),r=s.distance(n),o=s.minus(n).angle,a=n.plus(Ys.Z.createPolar(r,o+i));e.unsnappedPositionProperty.set(a),e.positionProperty.set(a)}closestDistanceToOtherVertex(e){let t=null;for(let i=0;i!e.blackBoxInterfaceProperty.value).forEach(e=>this.vertexGroup.disposeElement(e)),this.markDirty()}else this.circuitElements.clear(),this.groups.forEach(e=>e.clear()),this.vertexGroup.clear()}cutVertex(e){if(e.isDragged)return;let t=this.getNeighborCircuitElements(e);if(t.length<=1)return;t=t.filter(e=>e.interactiveProperty.get());const i=()=>t.map(t=>{const i=t.getOppositeVertex(e).positionProperty.get(),s=e.positionProperty.get();let n=i.minus(s);return 0===n.magnitude&&(n=Ys.Z.createPolar(1,Nr.Z.nextDouble()*Math.PI*2)),n.withMagnitude(30)});let s=i(),n=s.map(e=>e.angle);t.length>2&&(t=_.sortBy(t,e=>{const i=t.indexOf(e);return n[i]}),s=i(),n=s.map(e=>e.angle));const r=2*Math.PI/t.length;let o=[];const a=_.sum(n)/n.length;if(2===t.length){const e=Ys.Z.createPolar(30,a-r/t.length),i=Ys.Z.createPolar(30,a+r/t.length),s=n[0]-a;o=s<0?[e,i]:[i,e]}else{const e=t.length<=5?30:30*t.length/5;t.forEach((t,i)=>{o.push(Ys.Z.createPolar(e,r*i+n[0]))})}t.forEach((t,i)=>{const s=this.vertexGroup.createNextElement(e.positionProperty.get());t.replaceVertex(e,s),this.translateVertexGroup(s,o[i])}),e.blackBoxInterfaceProperty.get()||this.vertexGroup.disposeElement(e),this.markDirty()}translateVertexGroup(e,t){const i=this.findAllFixedVertices(e);for(let s=0;se.blackBoxInterfaceProperty.get())}isSingle(e){return 1===this.getNeighborCircuitElements(e.startVertexProperty.get()).length&&1===this.getNeighborCircuitElements(e.endVertexProperty.get()).length}removeVertexIfOrphaned(e){0!==this.getNeighborCircuitElements(e).length||e.blackBoxInterfaceProperty.get()||e.isDisposed||this.vertexGroup.disposeElement(e)}getNeighborCircuitElements(e){return this.circuitElements.filter(t=>t.containsVertex(e))}getNeighborCircuitElementsForCircuitElement(e){return[...this.getNeighborCircuitElements(e.startVertexProperty.value),...this.getNeighborCircuitElements(e.endVertexProperty.value)].filter(t=>t!==e)}countCircuitElements(e){return this.circuitElements.count(t=>t.containsVertex(e))}getVoltageBetweenConnections(e,t,i){return null===e||null===t?null:this.areVerticesElectricallyConnected(e.vertex,t.vertex)?e.vertex.insideTrueBlackBoxProperty.get()&&!i||t.vertex.insideTrueBlackBoxProperty.get()&&!i?null:e.voltage-t.voltage:null}areVerticesElectricallyConnected(e,t){return this.searchVertices(e,(e,t)=>!(t instanceof pd)||t.isClosedProperty.get()).includes(t)}markDirty(){this.dirty=!0}connect(e,t){t.blackBoxInterfaceProperty.get()?this.connect(t,e):(this.circuitElements.forEach(i=>{i.containsVertex(t)&&(i.replaceVertex(t,e),i.connectedEmitter.emit())}),t.isDraggableProperty.value||(e.isDraggableProperty.value=t.isDraggableProperty.value),t.isCuttableProperty.value||(e.isCuttableProperty.value=t.isCuttableProperty.value),""===e.labelStringProperty.value&&(e.labelStringProperty.value=t.labelStringProperty.value),this.vertexGroup.disposeElement(t),this.markDirty(),e.relayerEmitter.emit())}step(e){this.stepActions.forEach(e=>e()),this.stepActions.length=0,this.timeProperty.value+=e;const t=this.circuitElements.filter(e=>e.step),i=this.circuitElements.filter(e=>e instanceof Al);if(t.forEach(t=>t.step(this.timeProperty.value,e,this)),this.dirty||t.length>0||i.length>0){wd.solveModifiedNodalAnalysis(this,e),this.dirty=!1,this.circuitElements.filter(e=>e instanceof xl).forEach(e=>{const t=t=>this.getNeighborCircuitElements(t).filter(t=>t!==e).filter(e=>Math.abs(e.currentProperty.value)>1e-4).length>0;t(e.startVertexProperty.value)||t(e.endVertexProperty.value)||e.clear()}),this.circuitChangedEmitter.emit()}this.determineSenses(),this.chargeAnimator.step(e)}layoutChargesInDirtyCircuitElements(){this.circuitElements.forEach(e=>this.layoutCharges(e))}isVertexAdjacent(e,t){return e!==t&&this.circuitElements.some(i=>i.containsBothVertices(e,t))}getNeighborVerticesInGroup(e,t){const i=[];for(let s=0;s{0===e.currentProperty.value&&(e.currentSenseProperty.value=Jh.UNSPECIFIED)});const e=this.circuitElements.filter(e=>0!==e.currentProperty.value);for(;;){if(0===e.filter(e=>e.currentSenseProperty.value===Jh.UNSPECIFIED).length)break;this.propagateSenses();const t=e.filter(e=>e.currentSenseProperty.value===Jh.UNSPECIFIED);if(0===t.length)break;let i=!1;const s=t.filter(e=>e instanceof ml);if(s.length>0){const e=s[0],t=this.circuitElements.filter(t=>t instanceof ml&&t.currentSenseProperty.value!==Jh.UNSPECIFIED&&t!==e);t.length>0&&(Md.assignSense(e,t[0]),i=!0)}if(!i){t.sort((e,t)=>this.getNeighborCircuitElementsForCircuitElement(e).length-this.getNeighborCircuitElementsForCircuitElement(t).length);const e=t[0];e.currentSenseProperty.value=kd(e.currentProperty.value),i=!0}}}static assignSense(e,t){const i=e.currentProperty.value,s=t.currentProperty.value,n=t.currentSenseProperty.value,r=s>=0&&n===Jh.FORWARD?"positive":s>=0&&n===Jh.BACKWARD||s<0&&n===Jh.FORWARD?"negative":s<0&&n===Jh.BACKWARD?"positive":"error";var o;e.currentSenseProperty.value="positive"===r?kd(i):(o=i)<0?Jh.FORWARD:o>0?Jh.BACKWARD:Jh.UNSPECIFIED}propagateSenses(){const e=this.circuitElements.filter(e=>e.currentSenseProperty.value!==Jh.UNSPECIFIED);if(e.length>0){const t=[];e.forEach(e=>{t.includes(e.startVertexProperty.value)||t.push(e.startVertexProperty.value),t.includes(e.endVertexProperty.value)||t.push(e.endVertexProperty.value)});const i=[];for(;t.length>0;){const e=t.pop();if(!i.includes(e)){const s=this.getNeighborCircuitElements(e);for(let n=0;ne!==r&&e.currentSenseProperty.value!==Jh.UNSPECIFIED);e.length>0&&Md.assignSense(r,e[0])}i.includes(o)||t.includes(o)||t.push(o)}i.push(e)}}}}searchVertices(e,t){const i=[],s=[e],n=[];for(;s.length>0;){const e=s.pop();if(!n.includes(e)){const i=this.getNeighborCircuitElements(e);for(let r=0;r0;){const s=t.pop();if(!i.includes(s)){i.push(s);for(let i=0;it.circuitElement===e)}findAllFixedVertices(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>!0;return this.searchVertices(e,(e,i,s)=>t?i instanceof cl&&t(e,i,s):i instanceof cl)}getSelectedVertex(){const e=this.selectionProperty.value;return e instanceof $h?e:null}getDropTarget(e,t,i){Vd.TEST;let s=this.vertexGroup.filter(t=>{if(this.isVertexAdjacent(e,t))return!1;if(t===e)return!1;if(t.isDragged)return!1;if(!(e.unsnappedPositionProperty.get().distance(t.positionProperty.get())<30))return!1;if(!t.attachableProperty.get())return!1;for(let r=0;r{if(!i.blackBoxInterfaceProperty.get()&&!t.containsPoint(i.positionProperty.get()))return!1;const s=i.positionProperty.get().minus(e.positionProperty.get());if(!i.blackBoxInterfaceProperty.get()&&!t.containsPoint(i.positionProperty.get()))return!0;for(let r=0;r!e.outerWireStub)}if(0===s.length)return null;return _.sortBy(s,t=>e.unsnappedPositionProperty.get().distance(t.positionProperty.get()))[0]}checkCurrentConservation(e){console.log("####### "+e),this.vertexGroup.forEach(e=>{const t=this.getNeighborCircuitElements(e);let i=0;t.forEach(t=>{const s=(t.startVertexProperty.value===e?1:-1)*t.currentProperty.value;i+=s}),console.log(`${e.index}: ${i}`)})}conserveCurrent(e,t){const i=this.getNeighborCircuitElements(e);let s=0;if(i.forEach(t=>{const i=(t.startVertexProperty.value===e?1:-1)*t.currentProperty.value;s+=i}),Math.abs(s)>1e-10){const n=i.filter(e=>!t.includes(e)),r=s/n.length;n.forEach(i=>{const s=i.startVertexProperty.value===e?1:-1;i.currentProperty.value+=-s*r,t.push(i)})}}flip(e){const t=e.startVertexProperty.value,i=e.endVertexProperty.value;e.startVertexProperty.value=i,e.endVertexProperty.value=t;const s=e.currentSenseProperty.value===Jh.FORWARD?Jh.BACKWARD:e.currentSenseProperty.value===Jh.BACKWARD?Jh.FORWARD:Jh.UNSPECIFIED;e.currentSenseProperty.value=s,e.chargeLayoutDirty=!0,this.layoutChargesInDirtyCircuitElements(),this.markDirty()}layoutCharges(e){if(e.chargeLayoutDirty){e.chargeLayoutDirty=!1;const t=this.getChargesInCircuitElement(e),i=Eh.CHARGE_SEPARATION/2,s=e.chargePathLength-i,n=i,r=s-n,o=Math.ceil(r/Eh.CHARGE_SEPARATION),a=r/(o-1);for(let h=0;h0&&t[0].charge===l&&t[0].circuitElement===e&&t[0].visibleProperty===this.showCurrentProperty){const i=t.shift();i.circuitElement=e,i.distance=r,i.updatePositionAndAngle()}else{const t=new bl(e,r,this.showCurrentProperty,l);this.charges.add(t)}}this.charges.removeAll(t)}}toString(){return this.circuitElements.map(e=>e.constructor.name).join(", ")}reset(){this.clear(),this.showCurrentProperty.reset(),this.currentTypeProperty.reset(),this.wireResistivityProperty.reset(),this.sourceResistanceProperty.reset(),this.chargeAnimator.reset(),this.selectionProperty.reset()}}const Dd=new Hi.Z("CircuitStateIO",{valueType:Md,methods:{getValue:{returnType:Cd.Z,parameterTypes:[],implementation:function(){return phet.phetio.phetioEngine.phetioStateEngine.getState(this)},documentation:"Gets the current value of the circuit on this screen."},getValidationError:{returnType:(0,Qh.Z)(ss.Z),parameterTypes:[Cd.Z],implementation:function(e){const t=Array.from(Object.keys(e));for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:e.voltageProperty.value;this.vertex=e,this.voltage=i,this.circuitElement=t}}E=Od,_defineProperty(Od,"VoltageConnectionIO",new Hi.Z("VoltageConnectionIO",{valueType:E,documentation:"In order to describe how a Voltmeter probe is connected to a circuit. It indicates the measured Vertex or Circuit Element, and the voltage at that point. For non-ideal wires, the voltage indicates the partial voltage dropped up to that point on the wire, like a potentiometer.",toStateObject:e=>({connection:(0,Sh.Z)(Hi.Z.ObjectIO).toStateObject(e.circuitElement||e.vertex),voltage:e.voltage}),fromStateObject:e=>null,stateSchema:{connection:(0,Sh.Z)(Hi.Z.ObjectIO),voltage:Xh.Z}})),it.register("VoltageConnection",Od);class Ld extends Kh{constructor(e,t){super(e,t),this.voltageProperty=new ot.Z(null,{tandem:e.createTandem("voltageProperty"),units:"V",phetioValueType:(0,Qh.Z)(Xh.Z),phetioReadOnly:!0,phetioFeatured:!0}),this.redProbePositionProperty=new Uh.Z(Ys.Z.ZERO,{tandem:e.createTandem("redProbePositionProperty"),phetioFeatured:!0}),this.blackProbePositionProperty=new Uh.Z(Ys.Z.ZERO,{tandem:e.createTandem("blackProbePositionProperty"),phetioFeatured:!0}),this.blackConnectionProperty=new ot.Z(null,{tandem:e.createTandem("blackProbeConnectionProperty"),phetioValueType:(0,Qh.Z)(Od.VoltageConnectionIO),phetioReadOnly:!0,phetioFeatured:!0}),this.redConnectionProperty=new ot.Z(null,{tandem:e.createTandem("redProbeConnectionProperty"),phetioValueType:(0,Qh.Z)(Od.VoltageConnectionIO),phetioReadOnly:!0,phetioFeatured:!0}),this.isActiveProperty.link(e=>{e||(this.blackConnectionProperty.value=null,this.redConnectionProperty.value=null)})}reset(){super.reset(),this.voltageProperty.reset(),this.redProbePositionProperty.reset(),this.blackProbePositionProperty.reset()}}it.register("Voltmeter",Ld);const Rd=new Y.Z("twixt");class Nd{constructor(e,t,i){this.value=e,this.derivative=t,this.secondDerivative=i}static polynomialEaseInValue(e,t){return Math.pow(t,e)}static polynomialEaseOutValue(e,t){return 1-Math.pow(1-t,e)}static polynomialEaseInOutValue(e,t){return t<=.5?.5*Math.pow(2*t,e):1-Nd.polynomialEaseInOutValue(e,1-t)}static polynomialEaseInDerivative(e,t){return e*Math.pow(t,e-1)}static polynomialEaseOutDerivative(e,t){return e*Math.pow(1-t,e-1)}static polynomialEaseInOutDerivative(e,t){return t<=.5?Math.pow(2,e-1)*e*Math.pow(t,e-1):Nd.polynomialEaseInOutDerivative(e,1-t)}static polynomialEaseInSecondDerivative(e,t){return(e-1)*e*Math.pow(t,e-2)}static polynomialEaseOutSecondDerivative(e,t){return-(e-1)*e*Math.pow(1-t,e-2)}static polynomialEaseInOutSecondDerivative(e,t){return t<=.5?Math.pow(2,e-1)*(e-1)*e*Math.pow(t,e-2):-Nd.polynomialEaseInOutSecondDerivative(e,1-t)}static polynomialEaseIn(e){return new Nd(Nd.polynomialEaseInValue.bind(null,e),Nd.polynomialEaseInDerivative.bind(null,e),Nd.polynomialEaseInSecondDerivative.bind(null,e))}static polynomialEaseOut(e){return new Nd(Nd.polynomialEaseOutValue.bind(null,e),Nd.polynomialEaseOutDerivative.bind(null,e),Nd.polynomialEaseOutSecondDerivative.bind(null,e))}static polynomialEaseInOut(e){return new Nd(Nd.polynomialEaseInOutValue.bind(null,e),Nd.polynomialEaseInOutDerivative.bind(null,e),Nd.polynomialEaseInOutSecondDerivative.bind(null,e))}}_defineProperty(Nd,"LINEAR",(v=Nd).polynomialEaseIn(1)),_defineProperty(Nd,"QUADRATIC_IN",v.polynomialEaseIn(2)),_defineProperty(Nd,"QUADRATIC_OUT",v.polynomialEaseOut(2)),_defineProperty(Nd,"QUADRATIC_IN_OUT",v.polynomialEaseInOut(2)),_defineProperty(Nd,"CUBIC_IN",v.polynomialEaseIn(3)),_defineProperty(Nd,"CUBIC_OUT",v.polynomialEaseOut(3)),_defineProperty(Nd,"CUBIC_IN_OUT",v.polynomialEaseInOut(3)),_defineProperty(Nd,"QUARTIC_IN",v.polynomialEaseIn(4)),_defineProperty(Nd,"QUARTIC_OUT",v.polynomialEaseOut(4)),_defineProperty(Nd,"QUARTIC_IN_OUT",v.polynomialEaseInOut(4)),_defineProperty(Nd,"QUINTIC_IN",v.polynomialEaseIn(5)),_defineProperty(Nd,"QUINTIC_OUT",v.polynomialEaseOut(5)),_defineProperty(Nd,"QUINTIC_IN_OUT",v.polynomialEaseInOut(5)),Rd.register("Easing",Nd);const Zd=Nd;class qd{constructor(e,t,i){this.easing=Zd.CUBIC_IN_OUT,this.ratio=0,this.totalDelta=t-e,this.zoomCallback=i}step(e){const t=this.ratio;if(t<1){let i=t+e/.35;i>1&&(i=1),this.ratio=i;const s=Zd.CUBIC_IN_OUT.value(i)-Zd.CUBIC_IN_OUT.value(t);return this.zoomCallback(s*this.totalDelta),i>=1}return t>=1}}it.register("ZoomAnimation",qd);class Fd{constructor(e,t,i,s){const n=(0,N.ZP)()({revealing:!0,blackBoxStudy:!1,showNoncontactAmmeters:!0},s);this.zoomAnimation=null,this.viewTypeProperty=new lt(kl.LIFELIKE,{tandem:i.createTandem("viewTypeProperty"),phetioFeatured:!0}),this.addRealBulbsProperty=new se.Z(ct.addRealBulbs,{tandem:t?i.createTandem("addRealBulbsProperty"):ye.Z.OPT_OUT,phetioFeatured:!0}),this.isShowNoncontactAmmeters=n.showNoncontactAmmeters;const r=i.createTandem("circuit");this.circuit=new Md(this.viewTypeProperty,this.addRealBulbsProperty,r,{blackBoxStudy:n.blackBoxStudy,includeLabElements:t,includeACElements:e});const o=i.createTandem("meters");this.voltmeters=[new Ld(o.createTandem("voltmeter1"),1),new Ld(o.createTandem("voltmeter2"),2)],this.ammeters=[new sl(this.isShowNoncontactAmmeters?o.createTandem("ammeter1"):ye.Z.OPT_OUT,1),new sl(this.isShowNoncontactAmmeters?o.createTandem("ammeter2"):ye.Z.OPT_OUT,2)],[...this.voltmeters,...this.ammeters].forEach(e=>{e.isActiveProperty.link(e=>{e&&(this.circuit.selectionProperty.value=null)})});const a=n.blackBoxStudy?i.createTandem("blackBoxStudy"):ye.Z.OPT_OUT;this.isValueDepictionEnabledProperty=new se.Z(!ct.showDepictValuesToggleButton,{tandem:a.createTandem("isValueDepictionEnabledProperty"),phetioDocumentation:"whether the light bulb brightness and ammeter/voltmeter readouts, charges, flame, etc. can be seen"}),this.showLabelsProperty=new se.Z(!0,{tandem:i.createTandem("showLabelsProperty"),phetioFeatured:!0}),this.showValuesProperty=new se.Z(!1,{tandem:i.createTandem("showValuesProperty"),phetioFeatured:!0}),this.zoomLevelProperty=new Gh.Z(Eh.ZOOM_SCALES.indexOf(1),{numberType:"Integer",range:new Sn.Z(0,Eh.ZOOM_SCALES.length-1),tandem:i.createTandem("zoomLevelProperty"),phetioDocumentation:"This Property is controlled by the zoom buttons. It is an integer index that tells the sim how much to scale the view. Smaller values are more zoomed out. See zoomScaleProperty for the actual scale value.",phetioFeatured:!0}),this.zoomScaleProperty=new me.ZP([this.zoomLevelProperty],e=>Eh.ZOOM_SCALES[e],{validValues:Eh.ZOOM_SCALES,tandem:i.createTandem("zoomScaleProperty"),phetioValueType:Xh.Z,phetioDocumentation:"Scale that is applied to the view. This Property is derived from zoomLevelProperty, which is controlled by the zoom buttons."}),this.animatedZoomScaleProperty=new Gh.Z(this.zoomScaleProperty.get()),this.zoomScaleProperty.lazyLink(e=>{phet.joist.sim.isSettingPhetioStateProperty.value?this.animatedZoomScaleProperty.value=e:this.zoomAnimation=new qd(this.animatedZoomScaleProperty.get(),e,e=>{const t=this.animatedZoomScaleProperty.value+e,i=Math.min(...Eh.ZOOM_SCALES),s=Math.max(...Eh.ZOOM_SCALES),n=Ve.Z.clamp(t,i,s);this.animatedZoomScaleProperty.value=n})}),this.isPlayingProperty=new se.Z(!0,{tandem:e?i.createTandem("isPlayingProperty"):ye.Z.OPT_OUT,phetioFeatured:!0}),this.modeProperty=new lt(Vd.EXPLORE,{tandem:a.createTandem("modeProperty"),phetioDocumentation:"For Circuit Construction Kit: Black Box Study"});if(ct.showDepictValuesToggleButton){const e=()=>{this.isValueDepictionEnabledProperty.value=!1};this.circuit.vertexGroup.elementCreatedEmitter.addListener(e),this.circuit.vertexGroup.elementDisposedEmitter.addListener(e),this.circuit.componentEditedEmitter.addListener(e),this.circuit.circuitElements.lengthProperty.link(e)}const h=new $t.Z({tandem:r.createTandem("circuitChangedEmitter"),phetioDocumentation:"Emits when any circuit model parameter or topology has changed",phetioReadOnly:!0,phetioFeatured:!0}),l=()=>h.emit();this.circuit.vertexGroup.elementCreatedEmitter.addListener(l),this.circuit.vertexGroup.elementDisposedEmitter.addListener(l),this.circuit.componentEditedEmitter.addListener(l),this.isValueDepictionEnabledProperty.link(()=>this.circuit.chargeAnimator.timeScaleRunningAverage.clear()),this.viewTypeProperty.link(()=>{this.circuit.circuitElements.forEach(e=>{e instanceof Dl&&e.updatePathLength()}),this.circuit.relayoutAllCharges()}),this.revealingProperty=new se.Z(n.revealing,{tandem:a.createTandem("revealingProperty"),phetioDocumentation:"For Circuit Construction Kit: Black Box Study"}),this.blackBoxBounds=null,this.stopwatch=new Wh({tandem:e?i.createTandem("stopwatch"):ye.Z.OPT_OUT}),this.stepEmitter=new $t.Z({parameters:[{valueType:"number"}]})}stepSingleStep(){_.times(6,()=>this.stepOnce(1/60)),this.circuit.layoutChargesInDirtyCircuitElements()}stepOnce(e){this.isValueDepictionEnabledProperty.value&&this.circuit.step(e),this.stopwatch.step(e),this.stepEmitter.emit(e)}step(e){if(!(e>=Eh.MAX_DT)){if(this.zoomAnimation){this.zoomAnimation.step(e)&&(this.zoomAnimation=null)}(this.isPlayingProperty.value||this.circuit.dirty)&&this.stepOnce(this.isPlayingProperty.value?1/60:Eh.PAUSED_DT),this.circuit.layoutChargesInDirtyCircuitElements()}}reset(){this.isValueDepictionEnabledProperty.reset(),this.showLabelsProperty.reset(),this.showValuesProperty.reset(),this.modeProperty.reset(),this.circuit.reset(),this.voltmeters.forEach(e=>e.reset()),this.ammeters.forEach(e=>e.reset()),this.viewTypeProperty.reset(),this.zoomLevelProperty.reset(),this.animatedZoomScaleProperty.reset(),this.stopwatch.reset(),this.isPlayingProperty.reset(),this.addRealBulbsProperty.reset(),this.zoomAnimation=null}}it.register("CircuitConstructionKitModel",Fd);class Yd extends Fd{constructor(e,t){super(!1,!0,e,t)}}Fh.register("LabModel",Yd);const Hd=Yd;class Gd extends Nt.bn{constructor(e,t){super();const i=e/3;this.rect(0,0,i,t),this.rect(2*i,0,i,t)}}ft.register("PauseIconShape",Gd);const Ud={DEFAULT_BUTTON_RADIUS:20.8,PLAY_CONTROL_BUTTON_RADIUS:28};ft.register("SceneryPhetConstants",Ud);const zd=Ud;class Wd extends hi{constructor(e,t,i){const s=(0,N.ZP)()({radius:i&&i.content?null:30,lineWidth:.5,stroke:null,touchAreaDilation:0,mouseAreaDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,cursor:"pointer",xMargin:5,yMargin:5,buttonAppearanceStrategy:Wd.ThreeDAppearanceStrategy},i);s.content,s.radius&&(s.minUnstrokedWidth=2*s.radius,s.minUnstrokedHeight=2*s.radius),s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth});const n=s.radius||Math.max(s.content.width+2*s.xMargin,s.content.height+2*s.yMargin)/2;if(s.content&&s.radius){const e=s.content,t=Math.min(2*(s.radius-s.xMargin)/e.width,2*(s.radius-s.yMargin)/e.height);s.content=new R.NBX({children:[e],scale:t})}const r=new R.Cdc(n);super(e,r,t,s);const o=r.localBounds.width/2;this.touchArea=Nt.bn.circle(s.touchAreaXShift,s.touchAreaYShift,o+s.touchAreaDilation),this.mouseArea=Nt.bn.circle(s.mouseAreaXShift,s.mouseAreaYShift,o+s.mouseAreaDilation),this.focusHighlight=Nt.bn.circle(0,0,o+5)}}Wd.ThreeDAppearanceStrategy=class{constructor(e,t,i,s){const n=s&&s.stroke?s.stroke:new R.M4p(i,{luminanceFactor:-.4}),r=s&&void 0!==s.lineWidth?s.lineWidth:.3,o=(0,N.ZP)()({stroke:n,lineWidth:r,overStroke:n,overLineWidth:r,overButtonOpacity:1,selectedStroke:n,selectedLineWidth:r,selectedButtonOpacity:1,deselectedStroke:n,deselectedLineWidth:r,deselectedButtonOpacity:1,overFill:i},s),a=new R.M4p(i,{luminanceFactor:.8}),h=new R.M4p(i,{luminanceFactor:.7}),l=new R.M4p(i,{luminanceFactor:.3}),d=new R.M4p(i,{luminanceFactor:-.1}),c=new R.M4p(i,{luminanceFactor:-.2}),u=new R.M4p(i,{luminanceFactor:-.4}),p=new R.M4p(i,{luminanceFactor:-.5}),m=new me.ZP([i],e=>e.withAlpha(0)),g=e.width/2,y=g-2.5,A=g+2.5,f=new R.XMe(2.5,2.5,y,2.5,2.5,A).addColorStop(0,i).addColorStop(1,h),P=new R.XMe(-2.5,-2.5,y,-2.5,-2.5,A).addColorStop(0,m).addColorStop(1,p),b=new R.XMe(2.5,2.5,y,2.5,2.5,A).addColorStop(0,l).addColorStop(1,a),E=new R.XMe(-2.5,-2.5,y,-2.5,-2.5,A).addColorStop(0,m).addColorStop(1,p),v=new R.XMe(-2.5,-2.5,0,0,0,A).addColorStop(0,d).addColorStop(.6,c).addColorStop(.8,i).addColorStop(1,a),w=new R.Cdc(g,{stroke:o.stroke?o.stroke:u,lineWidth:o.lineWidth,pickable:!1});function V(t){switch(t){case Jt.IDLE:e.fill=f,e.stroke=o.deselectedStroke,e.lineWidth=o.deselectedLineWidth,e.opacity=o.deselectedButtonOpacity,w.fill=P,w.opacity=o.deselectedButtonOpacity;break;case Jt.OVER:e.fill=b,e.stroke=o.overStroke,e.lineWidth=o.overLineWidth,e.opacity=o.overButtonOpacity,w.fill=E,w.opacity=o.overButtonOpacity;break;case Jt.PRESSED:e.fill=v,e.stroke=o.selectedStroke,e.lineWidth=o.selectedLineWidth,e.opacity=o.selectedButtonOpacity,w.fill=E,w.opacity=o.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}}e.addChild(w),this.maxLineWidth=w.hasStroke()&&o&&"number"==typeof o.lineWidth?o.lineWidth:0,e.cachedPaints=[f,b,v],w.cachedPaints=[P,E],t.link(V),this.disposeThreeDAppearanceStrategy=()=>{t.hasListener(V)&&t.unlink(V),a.dispose(),h.dispose(),l.dispose(),d.dispose(),c.dispose(),u.dispose(),p.dispose(),m.dispose()}}dispose(){this.disposeThreeDAppearanceStrategy()}},Je.register("RoundButton",Wd);class Qd extends Wd{constructor(e,t,i,s){const n=(0,N.ZP)()({valueOffSoundPlayer:io,valueOnSoundPlayer:po,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},s),r=new go(t,i,e,n),o=new mo(r);super(r,o,n),this.addLinkedElement(e,{tandem:n.tandem.createTandem("property")});const a=()=>{e.value===t?n.valueOffSoundPlayer.play():e.value===i&&n.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(a),this.disposeRoundToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(a),r.dispose()}}dispose(){this.disposeRoundToggleButton(),super.dispose()}}Je.register("RoundToggleButton",Qd);class Xd extends Qd{constructor(e,t,i,s){const n=(0,N.ZP)()({content:null,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},s),r=new Wr(e,t,i,{tandem:n.tandem.createTandem("toggleNode")});n.content=r,super(e,!1,!0,n),this.disposeBooleanRoundToggleButton=function(){r.dispose()}}dispose(){this.disposeBooleanRoundToggleButton(),super.dispose()}}Je.register("BooleanRoundToggleButton",Xd);const Kd=Xd,Jd="data:audio/mpeg;base64,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",jd=q(W,Jd),_d=Z.Z.createLock(Jd),$d=new U;let ec=!1;const tc=()=>{ec||(_d(),ec=!0)},ic=W.decodeAudioData(jd.buffer,e=>{null===$d.audioBufferProperty.value&&($d.audioBufferProperty.set(e),tc())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),$d.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),tc()});ic&&ic.then(e=>{null===$d.audioBufferProperty.value&&($d.audioBufferProperty.set(e),tc())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),tc()});const sc=new Qt($d,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("pauseSoundPlayer",sc);const nc=sc,rc="data:audio/mpeg;base64,//swxAAAB1BHOnWmABEWjO23MPACAM4AAka0C2CViDZjzZoUIKXmGQHLmnHZgZuIghjiBjgxeiMuWAQDhMhMyefxsGZPP38oscKBjgh7vuRIAKJJltl/4AAAAAAAeIQEujEqiqRmMJCES5WG2gJpbTG4Ow/M4mn/Qr2Js5qIuqgsklNZOqlEOMfLXi1GSdQzuEW0dE8qAAAwLYAA//syxAMCCDhjP123gAEEiuWNvCUaBpRaYSCm0Kg6aZJnFNZzqgY+cBgqYYFmJBqWAkHQEu2XFwmiO5lSznWcKmje3hW8HX3bwt0/3XUHQ/5sFAYACqnqDC8MFAAYjK0cc9HHDBpgmZQQhSpXRTUQnFAiSUey+KNyollAoIHkq4CYarC6S3YyUWYjae5ECrd//DlNiAACxKE0C6BbAf/7MsQFgwhgbzhtsFDxHA3mTb6ZItBjJRcHVJgRkcS2mcgBlQ4kyhGWnb+PtLXw1x9GdIJksprlMmS4Cg6y44yjbH5yKe05wYGI/v2JDYn4Auuq25bxHxJsxhAOAFTHWY1ZXPRRiMTRQRuKAOQJOsy1I6WV2TO0w6Sw7LS7gfm9kt6zyIwPOZ+BkYQHFqf/C3p//+hgG5wCQFYWCTD/+zLEBIMIdGkkLfUHWQONZU2+tSrxQUTDm+024/MxgnMkFRN85yMUCVEQLGBASqdpAKDFymGvanI7suWZGZeSHQoo10ND7uHsPDn/79gtWEzPwBSpvpilULMOAU5TLsYQJ4ZCgQ9OwiJIhwZaiyx9mjv225SaC56XS3HG/Z1fwfNN60notpag8MGez2/u//6VAGEm4IBuHC+wVGDp//swxAYCSDRpLu1xKLEYjeYNzRlZUhKGOGCWs0pA08Q6K8x4tJypSP7GoqwEicWBqgRes01nKVlIf053z99P+/0iOm5f3fR///9Yeo0+yXyIBggABwAMUlMw6A1DDFqjO9soQjM898y6I4jYzAJOUFB4ETkVwvSE4xN36KAAwrAce3hDuTP35zIZyYUyDMn+ISyAC3LdqAAB+ahk//syxAWASOxvWaw8zzD+imZNnjEV3JHJkEvdhpKPigJmMTjXO9IRmHkCqmDRKV0S1IC1jOP85Y5MSCkCH+gU0ozUUqNPx272KtThMKOJhxfE5TgmVUjBYXxXAW5sXB65hsAyY00YTHRJGOIapLBEXyyrAEARSqei0NSmHSQ/MpWStQ6L6Im3GvCmsSb/VQ/9phwACuMnDtxuEFAJjv/7MsQGAwhMYyxM9ScZHQskja6ZIlHP4HxIAwAPxmmJhhEGJh/EgkZBgEDYAANr7gthXLGdmFBIAYAqpKM51ULEenPZ/PqtNKhQTIERxwAhyCooMRAK0AYgsiRNABMGlBB+MSidMKAAMja+NcgkUmPB4DgRW4pi/z0r7lTL3mtAoCoCJSTl5o8wz6QWiqx3/t//ag4AAAHJdov6Bwb/+zLEBQBIGE8qbXGIwR8NaSmnshcFWggYaHqGTQEOEZ41iIjI4SMAxo8wMgSAh4CI5iQEBwYQPZZDoLFNxeOBwy8x25B1GfiR6RaiAQapdQ1tmbRXvfpSCabcGCo4qoNLVEaIiIUxwGpGODgKkYyxOJI96yKt45ruMnyxlWKW2neqTQDgdhIIn0oSL0P0PnmwJ9O6SgAAAimCDqAR//swxASAR2xhPG1xLHkNjihdvTFPEpiKw4gABcIXQCEimJjZJrgZaA4iNiY7pINEZ7B2yElTIU2qu13xUoQq4yhd5VFpCRiwDLsEWaepoozJUXWnIcTERUZVTpYMxkOCj0FNBgieh9D7wlVcTR0Cc7LaU/cmuQwN5fCnK9Y+smsQkY/6QmSHAyiWWkAAKUgAAAsuCvppLKVG2IlA//syxAiCR4RvRUztKLDhDWfpvJlXJkEg3k+NKBQuFAEtagUYOQvtmVDLVmD5053TkiO+N9YuviT/LfTXQp2mxoFqSCPM4X1E0nVwR0FAIsOghXOsahIZRDbGwM43kS6lJK4rwAxwCGDcpCWXtpEQ53S1v35WuSjUtQAy0AAARJmTVA8AQOqVoNF3zdAMLw71BQgkAgMjwTQkGxgCVv/7MsQSAkdMaTLs8Qjg2w0m5c0lTgCVz8xnJhCG2pRs414U2SyOm+uNZ8NANeEExBpChMMiwDXAgQQiBQiPKksIEwUGFC4Lkj7r2VWUR4NIzyJ6UGkkqnW2vrW7c/H+of4OqgAzcAGTpJfEADXaDgsX7Dh6DjKYFhZpmAAoDgEYF+gKFTEhuV2/NZ/21pKIRZ9bUlgxBiLU//Ce/V7/+zLEHQNHUGkwzhjwsOWNJM2elOSgTRFJwgCZsX4M8Ey4BGGYWAqYuJyfIDeDjBMHwQMDgAS9MnhnJgUlrzvaptVGAQec6lMQ/3f/6jPXTHReMiqMGMWUxc1k858QWJowORAyihcwxFJBEEAcYEiIZKisXjRJa1CZRJpRjQWbPNYwE6FUu//4kDgOawFnzmmWBnQC1CtjH4cMxyw6//swxCcDhzBpGA10R4DYByKNjmTKvZANJytIEhBhR0LrVuwNjTP9fxs5asiIqWf/Lf/////+tQnIJAGuAaNRprSJykgqQzgLjF/HCsDeTcUqKus9P66P1f/4oZYBGjiY1AXQLGWOYOSMStAB/8FTIsVCgeAoqKt7ajS0MdUhaVJ/rUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVV//syxDKCRnwlDGNh4vBbgB4kMIwOVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==",oc=q(W,rc),ac=Z.Z.createLock(rc),hc=new U;let lc=!1;const dc=()=>{lc||(ac(),lc=!0)},cc=W.decodeAudioData(oc.buffer,e=>{null===hc.audioBufferProperty.value&&(hc.audioBufferProperty.set(e),dc())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),hc.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),dc()});cc&&cc.then(e=>{null===hc.audioBufferProperty.value&&(hc.audioBufferProperty.set(e),dc())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),dc()});const uc=new Qt(hc,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("playSoundPlayer",uc);const pc=uc;class mc extends Nt.bn{constructor(e,t){super(),this.moveTo(0,0),this.lineTo(e,t/2),this.lineTo(0,t),this.close()}}ft.register("PlayIconShape",mc);class gc extends Kd{constructor(e,t,i){const s=(0,N.ZP)()({radius:zd.PLAY_CONTROL_BUTTON_RADIUS,scaleFactorWhenNotPlaying:1,includeGlobalHotkey:!1,startPlayingLabel:St.a11y.playControlButton.playStringProperty,endPlayingLabel:null,valueOffSoundPlayer:nc,valueOnSoundPlayer:pc,xMargin:0,yMargin:0},i),n=.8*s.radius,r=s.radius,o=new R.y$t(new mc(n,r),{fill:"black",centerX:.05*s.radius,centerY:0}),a=new R.Cdc(s.radius,{children:[o]});t.centerX=0,t.centerY=0;const h=new R.Cdc(s.radius,{children:[t]});super(e,h,a,s);const l=(e,t)=>{this.innerContent=e?s.endPlayingLabel:s.startPlayingLabel;const i=null===t?1:1/s.scaleFactorWhenNotPlaying;this.scale(e?i:s.scaleFactorWhenNotPlaying)};let d;e.link(l),s.includeGlobalHotkey?(d=t=>{if(phet.chipper.queryParameters.supportsInteractiveDescription&&this.pdomDisplayed&&this.buttonModel.enabledProperty.get()&&R.MMl.altKeyDown&&R.ntP.isKeyEvent(t,R.ntP.KEY_K)){e.set(!e.get());const t=e.get()?s.valueOnSoundPlayer:s.valueOffSoundPlayer;t&&t.play()}},R.MMl.keyupEmitter.addListener(d)):d=null,this.disposePlayStopButton=()=>{e.hasListener(l)&&e.unlink(l),d&&R.MMl.keyupEmitter.hasListener(d)&&R.MMl.keyupEmitter.removeListener(d)}}dispose(){this.disposePlayStopButton(),super.dispose()}}ft.register("PlayControlButton",gc);class yc extends gc{constructor(e,t){const i=(0,N.ZP)()({radius:zd.PLAY_CONTROL_BUTTON_RADIUS,includeGlobalHotkey:!0,endPlayingLabel:St.a11y.playControlButton.pauseStringProperty},t),s=i.radius,n=.6*i.radius;super(e,new R.y$t(new Gd(n,s),{fill:"black"}),i)}}ft.register("PlayPauseButton",yc);const Ac="data:audio/mpeg;base64,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7e9diUP/+zDEqoMHICsabPMmEM4Eow2e5MIIZrVcxtoYKA8xbIDmUnGddoh0rLaVhaELboGA3I///+32tj0qUhAXA4lABA0VFRzYs5Bxwo8cRAZqIgBjC0wyrCVrVBy0Sl3U0lLcrNkmJX3vXQ9xHrF1kft9KnLd0/5XIPY0tSK0DTykPgmqBACpusgAjZhT0YwByozh1IJWKp2KmeLt9Ov/+zLEt4MG7C8QLXcGENuFYg2eZMLR2pQ6RirmqAoCYKg0PHnDwUA5I6x8afWSCCjoaGWkABNLoLs3MMFnGvzaGfMY2VvKaYxjfVvVP6f/9DGVtSlb//VsrzTGDCnJFXIg08GgaduIVUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//syxMQDx4gzCgzwxsDphiFBzJkQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7MsTMggc4KQgN5YhA0YShqJwkmlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zDE2QBG9BsHQYXiANIdX3A0iMBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",fc=q(W,Ac),Pc=Z.Z.createLock(Ac),bc=new U;let Ec=!1;const vc=()=>{Ec||(Pc(),Ec=!0)},wc=W.decodeAudioData(fc.buffer,e=>{null===bc.audioBufferProperty.value&&(bc.audioBufferProperty.set(e),vc())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),bc.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),vc()});wc&&wc.then(e=>{null===bc.audioBufferProperty.value&&(bc.audioBufferProperty.set(e),vc())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),vc()});const Vc=new Qt(bc,{soundClipOptions:{initialOutputLevel:.39,enabledDuringPhetioStateSetting:!0},soundManagerOptions:{categoryName:"user-interface"}});H.register("resetAllSoundPlayer",Vc);const Sc=Vc;var Tc=i(6692);class Cc extends zi.Z{constructor(e){const t=(0,N.ZP)()({alertStableDelay:500},e);super(t)}}Tc.Z.register("ActivationUtterance",Cc);class Ic extends Wd{constructor(e){const t=(0,N.ZP)()({soundPlayer:Kt,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button"},e),i=t.listener,s=_.omit(t,["listener"]),n=new si(s);super(n,new jt(n),s),this.pushButtonModel=n,i&&this.addListener(i);const r=()=>{t.soundPlayer.play()};n.produceSoundEmitter.addListener(r),this.disposeRoundPushButton=()=>{n.produceSoundEmitter.removeListener(r),n.dispose()}}dispose(){super.dispose(),this.disposeRoundPushButton()}addListener(e){this.pushButtonModel.addListener(e)}removeListener(e){this.pushButtonModel.removeListener(e)}}Je.register("RoundPushButton",Ic);class xc extends Nt.bn{constructor(e){super();const t=.4*e,i=.625*e,s=2.25*(i-t),n=.35*-Math.PI,r=-2*Math.PI*.85,o=.18*-Math.PI;this.moveTo(t*Math.cos(n),t*Math.sin(n)),this.lineTo(i*Math.cos(n),i*Math.sin(n));const a=n+r;this.arc(0,0,i,n,a,!0);const h=(s-(i-t))/2;this.lineTo((i+h)*Math.cos(a),(i+h)*Math.sin(a));const l=.55*(i+t);this.lineTo(l*Math.cos(a+o),l*Math.sin(a+o)),this.lineTo((t-h)*Math.cos(a),(t-h)*Math.sin(a)),this.lineTo(t*Math.cos(a),t*Math.sin(a)),this.arc(0,0,t,a,n),this.close()}}ft.register("ResetShape",xc);class kc extends Ic{constructor(e){const t=e&&e.radius?e.radius:24,i=(0,N.ZP)()({radius:t,arrowColor:"black",baseColor:"white",xMargin:6,yMargin:6,xContentOffset:-.03*t,yContentOffset:-.0125*t,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ResetButton"},e),s=new xc(i.radius),n=new R.y$t(s,{fill:i.arrowColor}),r=new R.y$t(s.transformed(wt.Z.scaling(-1,-1)));n.localBounds=n.localBounds.union(r.localBounds),i.content=n,super(i)}}ft.register("ResetButton",kc);const Bc=5/zd.DEFAULT_BUTTON_RADIUS;class Mc extends kc{constructor(e){const t=(0,N.ZP)()({radius:zd.DEFAULT_BUTTON_RADIUS,phetioRestoreScreenStateOnReset:!0,touchAreaDilation:5.2,baseColor:Pi.RESET_ALL_BUTTON_BASE_COLOR,arrowColor:"white",listener:_.noop,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ResetAllButton",phetioDocumentation:"The orange, round button that can be used to restore the initial state",soundPlayer:Sc,innerContent:St.a11y.resetAll.labelStringProperty,voicingNameResponse:St.a11y.resetAll.labelStringProperty,voicingContextResponse:St.a11y.voicing.resetAll.contextResponseStringProperty},e),i=t.listener;t.listener=()=>{i&&i(),ye.Z.PHET_IO_ENABLED&&t.phetioRestoreScreenStateOnReset&&this.isPhetioInstrumented()&&phet.phetio.phetioEngine.phetioStateEngine.restoreStateForScreen(t.tandem)},t.xMargin=t.yMargin=t.radius*Bc,super(t);const s=new Cc({alert:St.a11y.resetAll.alertStringProperty});let n=R.KsW.enabled;const r=new Map;this.pushButtonModel.isFiringProperty.lazyLink(e=>{e?(n=R.KsW.enabled,R.KsW.enabled=!1,R.KsW.clear()):(R.KsW.enabled=n,this.voicingSpeakFullResponse()),this.forEachUtteranceQueue(t=>{e?(r.set(t,t.enabled),t.enabled=!1,t.clear()):(t.enabled=r.get(t)||t.enabled,t.addToBack(s))})});const o=new R.F3H({keys:["alt+r"],callback:()=>this.pdomClick(),global:!0,listenerFireTrigger:"up"});this.addInputListener(o),this.disposeResetAllButton=()=>{this.removeInputListener(o),r.clear()}}dispose(){this.disposeResetAllButton(),super.dispose()}}ft.register("ResetAllButton",Mc);class Dc extends me.ZP{constructor(e,t){super([e.boundsProperty,t],(t,i)=>{const s=e.localToParentPoint(Ys.Z.ZERO);return new vt.Z(i.minX-(t.minX-s.x),i.minY-(t.minY-s.y),i.maxX-(t.maxX-s.x),i.maxY-(t.maxY-s.y))},{valueComparisonStrategy:"equalsFunction"})}}ft.register("DragBoundsProperty",Dc);const Oc=Dc;class Lc extends R.NBX{constructor(e,t){super();const i=(0,N.ZP)()({baseColor:new R.Ilk(80,130,230),lightFactor:.5,lighterFactor:.1,darkFactor:.5,darkerFactor:.1,cornerRadius:10,lightSource:"leftTop",lightOffset:.525,darkOffset:.375},t),s=i.lightSource.includes("left"),n=i.lightSource.includes("Top"),r=i.cornerRadius;this.lighterPaintProperty=new R.M4p(i.baseColor,{luminanceFactor:i.lightFactor+i.lighterFactor}),this.lightPaintProperty=new R.M4p(i.baseColor,{luminanceFactor:i.lightFactor}),this.darkPaintProperty=new R.M4p(i.baseColor,{luminanceFactor:-i.darkFactor}),this.darkerPaintProperty=new R.M4p(i.baseColor,{luminanceFactor:-i.darkFactor-i.darkerFactor});const o=n?this.lighterPaintProperty:this.darkerPaintProperty,a=s?this.lightPaintProperty:this.darkPaintProperty,h=s?this.darkPaintProperty:this.lightPaintProperty,l=n?this.darkerPaintProperty:this.lighterPaintProperty,d=i.lightOffset*r,c=i.darkOffset*r,u=n?d:c,p=s?d:c,m=s?c:d,g=n?c:d,y=R.AeJ.roundedBounds(e,r,r,{pickable:!1}),A=R.AeJ.roundedBounds(e,r,r,{pickable:!1});y.fill=new R.oas(y.left,0,y.right,0).addColorStop(0,a).addColorStop(p/A.width,i.baseColor).addColorStop(1-m/A.width,i.baseColor).addColorStop(1,h),A.fill=new R.oas(0,A.top,0,A.bottom).addColorStop(0,o).addColorStop(u/A.height,new me.ZP([o],e=>e.withAlpha(0))).addColorStop(1-g/A.height,new me.ZP([l],e=>e.withAlpha(0))).addColorStop(1,l);const f=(new Nt.bn).moveTo(0,0).arc(0,0,r,-Math.PI/2,0,!1).close(),P={leftTop:-Math.PI/2,rightTop:0,rightBottom:Math.PI/2,leftBottom:Math.PI}[i.lightSource],b=e.eroded(r),E=new R.y$t(f,{x:s?b.minX:b.maxX,y:n?b.minY:b.maxY,rotation:P,fill:new R.XMe(0,0,0,0,0,r).addColorStop(0,i.baseColor).addColorStop(1-d/r,i.baseColor).addColorStop(1,this.lighterPaintProperty),pickable:!1}),v=new R.y$t(f,{x:s?b.maxX:b.minX,y:n?b.maxY:b.minY,rotation:P+Math.PI,fill:new R.XMe(0,0,0,0,0,r).addColorStop(0,i.baseColor).addColorStop(1-c/r,i.baseColor).addColorStop(1,this.darkerPaintProperty),pickable:!1}),w=R.AeJ.roundedBounds(e,r,r,{stroke:new me.ZP([h],e=>e.withAlpha(.4))});this.addChild(y),this.addChild(A),this.addChild(E),this.addChild(v),this.addChild(w),this.mutate(i)}dispose(){this.lighterPaintProperty.dispose(),this.lightPaintProperty.dispose(),this.darkPaintProperty.dispose(),this.darkerPaintProperty.dispose(),super.dispose()}}ft.register("ShadedRectangle",Lc);class Rc extends Nt.bn{constructor(e){super();const t=.3*e/2,i=.6*e,s=e,n=.5*e/2,r=.75*e/2;this.moveTo(n,-t),this.lineTo(i,-t),this.arc(i,s/2,s/2+t,-Math.PI/2,Math.PI/2,!1),this.lineTo(0,s+t),this.lineTo(0,s-t),this.lineTo(i,s-t),this.arc(i,s/2,s/2-t,Math.PI/2,-Math.PI/2,!0),this.lineTo(n,t),this.lineTo(n,r),this.lineTo(-n,0),this.lineTo(n,-r),this.close()}}ft.register("UTurnArrowShape",Rc);class Nc extends((0,R.wgH)(R.NBX)){constructor(e,t){const i=(0,N.ZP)()({cursor:"pointer",numberDisplayRange:Wh.ZERO_TO_ALMOST_SIXTY,iconHeight:10,iconFill:"black",iconLineWidth:1,backgroundBaseColor:"rgb( 80, 130, 230 )",buttonBaseColor:"#DFE0E1",xSpacing:6,ySpacing:6,xMargin:8,yMargin:8,numberDisplayOptions:{numberFormatter:Nc.RICH_TEXT_MINUTES_AND_SECONDS,useRichText:!0,textOptions:{font:Nc.DEFAULT_FONT},align:"right",cornerRadius:4,xMargin:4,yMargin:2,pickable:!1},dragBoundsProperty:null,dragListenerOptions:{start:_.noop},interactiveHighlightEnabled:!1,tandem:ye.Z.REQUIRED},t),s=new Br(e.timeProperty,i.numberDisplayRange,i.numberDisplayOptions),n=new R.y$t(new Rc(i.iconHeight),{fill:i.iconFill}),r=n.height,o=.8*r,a=new R.y$t(new mc(o,r),{fill:i.iconFill}),h=new R.y$t(new Gd(.75*o,r),{fill:i.iconFill}),l=new Ao(e.isRunningProperty,h,a,{baseColor:i.buttonBaseColor,touchAreaXDilation:5,touchAreaXShift:5,touchAreaYDilation:8,tandem:i.tandem.createTandem("playPauseButton")}),d=new ui({listener:()=>{e.isRunningProperty.set(!1),e.timeProperty.set(0)},touchAreaXDilation:5,touchAreaXShift:-5,touchAreaYDilation:8,content:n,baseColor:i.buttonBaseColor,tandem:i.tandem.createTandem("resetButton")}),c=new R.SHm({spacing:i.ySpacing,children:[s,new R.BET({spacing:i.xSpacing,children:[d,l]})]}),u=new Lc(new vt.Z(0,0,c.width+2*i.xMargin,c.height+2*i.yMargin),{baseColor:i.backgroundBaseColor});c.center=u.center,i.children=[u,c],super(i);const p=t=>{d.enabled=t>0,l.enabled=t{this.visible=e,e?this.moveToFront():this.interruptSubtreeInput()};e.isVisibleProperty.link(m);const g=e=>this.setTranslation(e);e.positionProperty.link(g),this.dragListener=null;let y=null;if(i.dragBoundsProperty){this.interactiveHighlightEnabled=!0,y=new Oc(this,i.dragBoundsProperty),i.dragBoundsProperty.link(()=>this.interruptSubtreeInput()),y.link(t=>{t.containsPoint(e.positionProperty.value)||(e.positionProperty.value=t.closestPointTo(e.positionProperty.value))});const t=(0,N.JA)({targetNode:this,positionProperty:e.positionProperty,dragBoundsProperty:y,tandem:i.tandem.createTandem("dragListener")},i.dragListenerOptions),s=t.start;t.start=(e,t)=>{this.moveToFront(),s(e,t)},this.dragListener=new R._U3(t),u.addInputListener(this.dragListener),this.addInputListener({down:()=>this.moveToFront()})}this.addLinkedElement(e,{tandem:i.tandem.createTandem("stopwatch")}),this.disposeStopwatchNode=()=>{e.isVisibleProperty.unlink(m),e.timeProperty.unlink(p),e.positionProperty.unlink(g),s.dispose(),d.dispose(),l.dispose(),this.dragListener&&(u.removeInputListener(this.dragListener),this.dragListener.dispose()),y&&y.dispose()},this.numberDisplay=s}setNumberFormatter(e){this.numberDisplay.setNumberFormatter(e)}redrawNumberDisplay(){this.numberDisplay.recomputeText()}dispose(){this.disposeStopwatchNode(),super.dispose()}static getDecimalPlaces(e,t){const i=Math.pow(10,t);e=Ve.Z.roundSymmetric(e*i)/i;let s=""+Ve.Z.roundSymmetric(e%1*i);for(;s.length{const i=t.showAsMinutesAndSeconds?Zc(e):Math.floor(e),s=Nc.getDecimalPlaces(e,t.numberOfDecimalPlaces),n="string"==typeof t.units?t.units:t.units.value;return xt.Z.fillIn(t.valueUnitsPattern,{value:`${i}${s}`,units:`${n}`})}}}function Zc(e){const t=e=Ve.Z.roundSymmetric(100*e)/100,i=Math.floor(t/60),s=Math.floor(t)%60;return`${i<10?"0"+i:""+i}:${s<10?"0"+s:""+s}`}w=Nc,_defineProperty(Nc,"NUMBER_FONT_FAMILY",'"Trebuchet MS", "Lucida Grande", monospace'),_defineProperty(Nc,"DEFAULT_FONT",new Et({size:20,family:w.NUMBER_FONT_FAMILY})),_defineProperty(Nc,"PLAIN_TEXT_MINUTES_AND_SECONDS",e=>Zc(e)+w.getDecimalPlaces(e,2)),_defineProperty(Nc,"RICH_TEXT_MINUTES_AND_SECONDS",w.createRichTextNumberFormatter({showAsMinutesAndSeconds:!0,numberOfDecimalPlaces:2})),ft.register("StopwatchNode",Nc);class qc extends Le.Z{}_defineProperty(qc,"FAST",new(V=qc)),_defineProperty(qc,"NORMAL",new V),_defineProperty(qc,"SLOW",new V),_defineProperty(qc,"enumeration",new Oe.Z(V)),ft.register("TimeSpeed",qc);const Fc=new Map;Fc.set(qc.FAST,{stringProperty:St.speed.fastStringProperty,tandemName:"fastRadioButton"}),Fc.set(qc.NORMAL,{stringProperty:St.speed.normalStringProperty,tandemName:"normalRadioButton"}),Fc.set(qc.SLOW,{stringProperty:St.speed.slowStringProperty,tandemName:"slowRadioButton"});class Yc extends tt{constructor(e,t,i){const s=(0,N.ZP)()({labelOptions:{font:new Et(14),maxWidth:130},spacing:9,tandem:ye.Z.REQUIRED,tandemNameSuffix:"RadioButtonGroup",labelTagName:"h4",labelContent:St.a11y.timeControlNode.simSpeedsStringProperty,descriptionContent:St.a11y.timeControlNode.simSpeedDescriptionStringProperty},i);s.radioButtonOptions&&void 0!==s.radioButtonOptions.radius||(s.radioButtonOptions||(s.radioButtonOptions={}),s.radioButtonOptions.radius=new R.xvT("test",s.labelOptions).height/2),super(e,t.map(e=>{const t=Fc.get(e).stringProperty;return{value:e,createNode:e=>new R.xvT(t,(0,N.JA)({tandem:e.createTandem("labelText")},s.labelOptions)),labelContent:t,tandemName:Fc.get(e).tandemName}}),s)}}ft.register("TimeSpeedRadioButtonGroup",Yc);const Hc=new Qt(eo,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("stepBackwardSoundPlayer",Hc);const Gc=Hc,Uc=new Qt(co,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});H.register("stepForwardSoundPlayer",Uc);const zc=Uc;class Wc extends Ic{constructor(e){const t=(0,N.ZP)()({radius:20,direction:"forward",iconFill:"black",fireOnHold:!0,soundPlayer:zc,innerContent:St.a11y.stepButton.stepForwardStringProperty,appendDescription:!0},e);t.xContentOffset="forward"===t.direction?.075*t.radius:-.15*t.radius,t.xMargin=t.yMargin=.525*t.radius;const i=.15*t.radius,s=.9*t.radius,n=.65*t.radius,r=s,o=new R.AeJ(0,0,i,s,{fill:t.iconFill}),a=new R.y$t((new Nt.bn).moveTo(0,r/2).lineTo(n,0).lineTo(0,-r/2).close(),{fill:t.iconFill});t.content=new R.BET({children:[o,a],spacing:i,rotation:"forward"===t.direction?0:Math.PI}),super(t)}}ft.register("StepButton",Wc);class Qc extends Wc{constructor(e){super((0,N.ZP)()({direction:"backward",soundPlayer:Gc},e))}}ft.register("StepBackwardButton",Qc);class Xc extends Wc{constructor(e){super((0,N.ZP)()({direction:"forward"},e))}}ft.register("StepForwardButton",Xc);var Kc=i(5602);class Jc extends R.BET{constructor(e,t){const i=(0,N.ZP)()({includeStepForwardButton:!0,includeStepBackwardButton:!1,playPauseStepXSpacing:10,playPauseButtonOptions:{radius:zd.DEFAULT_BUTTON_RADIUS,touchAreaDilation:5},stepBackwardButtonOptions:{radius:15,touchAreaDilation:5},stepForwardButtonOptions:{radius:15,touchAreaDilation:5},resize:!1,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ButtonGroup",tagName:"div",appendDescription:!0,playingDescription:St.a11y.playPauseStepButtonGroup.playingDescriptionStringProperty,pausedDescription:St.a11y.playPauseStepButtonGroup.pausedDescriptionStringProperty},t);if(!i.stepForwardButtonOptions.enabledProperty||!i.stepBackwardButtonOptions.enabledProperty){const t=me.ZP.not(e,{tandem:i.tandem.createTandem("enabledProperty"),phetioValueType:Kc.Z});i.stepForwardButtonOptions.enabledProperty||(i.stepForwardButtonOptions.enabledProperty=t),i.stepBackwardButtonOptions.enabledProperty||(i.stepBackwardButtonOptions.enabledProperty=t)}const s=[],n=new yc(e,(0,N.JA)({tandem:i.tandem.createTandem("playPauseButton"),phetioDocumentation:"Button to control the animation in the simulation. This will also stop the model from stepping."},i.playPauseButtonOptions));s.push(n);let r=null;i.includeStepForwardButton&&(r=new Xc((0,N.JA)({tandem:i.tandem.createTandem("stepForwardButton"),phetioDocumentation:"Progress the simulation a single model step forwards."},i.stepForwardButtonOptions)),s.push(r));let o=null;i.includeStepBackwardButton&&(o=new Qc((0,N.JA)({phetioDocumentation:"Progress the simulation a single model step backwards.",tandem:i.tandem.createTandem("stepBackwardButton")},i.stepBackwardButtonOptions)),s.unshift(o)),i.spacing=i.playPauseStepXSpacing,i.children=s,super(i),this.playPauseButton=n;const a=e=>{this.descriptionContent=e?i.playingDescription:i.pausedDescription};e.link(a),this.disposePlayPauseStepButtonGroup=()=>{e.unlink(a),n.dispose(),r&&r.dispose(),o&&o.dispose()}}getPlayPauseButtonCenter(){return this.playPauseButton.center}dispose(){this.disposePlayPauseStepButtonGroup(),super.dispose()}}ft.register("PlayPauseStepButtonGroup",Jc);const jc=[qc.NORMAL,qc.SLOW];class _c extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({timeSpeedProperty:null,timeSpeeds:jc,speedRadioButtonGroupOnLeft:!1,buttonGroupXSpacing:40,wrapSpeedRadioButtonGroupInPanel:!1,speedRadioButtonGroupPanelOptions:{xMargin:8,yMargin:6},disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:ye.Z.REQUIRED,tandemNameSuffix:"TimeControlNode",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"div",labelTagName:"h3",labelContent:St.a11y.timeControlNode.labelStringProperty},t);super();const s=[];this.playPauseStepButtons=new Jc(e,(0,N.JA)({tandem:i.tandem.createTandem("playPauseStepButtonGroup")},i.playPauseStepButtonOptions)),s.push(this.playPauseStepButtons),this.speedRadioButtonGroup=null,this.speedRadioButtonGroupParent=null,null!==i.timeSpeedProperty&&(this.speedRadioButtonGroup=new Yc(i.timeSpeedProperty,i.timeSpeeds,(0,N.JA)({tandem:i.tandem.createTandem("speedRadioButtonGroup")},i.speedRadioButtonGroupOptions)),i.wrapSpeedRadioButtonGroupInPanel?this.speedRadioButtonGroupParent=new Qi(this.speedRadioButtonGroup,i.speedRadioButtonGroupPanelOptions):this.speedRadioButtonGroupParent=new R.NBX({children:[this.speedRadioButtonGroup]}),i.speedRadioButtonGroupOnLeft?s.unshift(this.speedRadioButtonGroupParent):s.push(this.speedRadioButtonGroupParent),this.speedRadioButtonGroupParent.centerY=this.playPauseStepButtons.centerY),i.children=s,this.speedRadioButtonGroupOnLeft=i.speedRadioButtonGroupOnLeft,this.buttonGroupXSpacing=i.buttonGroupXSpacing,this.setButtonGroupXSpacing(this.buttonGroupXSpacing),this.disposeTimeControlNode=()=>{this.playPauseStepButtons.dispose(),this.speedRadioButtonGroup&&this.speedRadioButtonGroup.dispose()},this.mutate(i)}setPlayPauseButtonCenter(e){const t=this.localToParentPoint(this.getPlayPauseButtonCenter()).minus(this.center);this.center=e.minus(t)}getPlayPauseButtonCenter(){return this.playPauseStepButtons.getPlayPauseButtonCenter()}setButtonGroupXSpacing(e){this.buttonGroupXSpacing=e,this.speedRadioButtonGroupParent&&(this.speedRadioButtonGroupOnLeft?this.speedRadioButtonGroupParent.right=this.playPauseStepButtons.left-this.buttonGroupXSpacing:this.speedRadioButtonGroupParent.left=this.playPauseStepButtons.right+this.buttonGroupXSpacing)}getButtonGroupXSpacing(){return this.buttonGroupXSpacing}dispose(){this.disposeTimeControlNode(),super.dispose()}}ft.register("TimeControlNode",_c);const $c="data:audio/mpeg;base64,//swxAAABSAbF7TAgDE5nqu/MHICAAAAcDYkDIEtmZ+0OAIDonAEAIOjgnenW/yhz/g+fh+CEocif//+c5RVQlRIdHdXcHffj/DYYCgBdaS6OzOU+xCNTd7EPI6nQ7mODNUkXlljx1AXgvbsgTi8z3+Z7a8aMfHP9uQFmXb1f/cmZM/9//sIhYP//sNqQJAgNJhWTyGAwFAoAATS//syxAeACW0Hgbi1EBESBuvjNGAAfDtZrw0MQaBPJj2MwQyJDLEhJZGoPjAvCMnP3dlJiAtJ8xr/PKk5hYV//3KDxif//6MYVcnt//+VFswo04EQAACAAC9YdezBqNoZHHQDlUSCuyZAkxazLI1qAeiR+JfccaBj1xti9B5JXrESzzBnSIgoXKxEzkQCos+pbPmxfwWXkwAAFm+93//7MsQDgAh4Z1G5gwABEY3y9x5iAuzlQAAAAAB2Wop4QsaAhgpWdRTKJsZcpp1XP57ykSikyYckLZ4Ty1TSs+HageepBZpVjXhgAMSIXXKmU65I0d/7dt7v7sNgMBwALVb09GkvHVk7fqBciIEitH44DchaeFCkbZVn3vi+3iz997uspO3MNCwv4nKHDdB/+gTro/8WA6oYAgMAeW//+zLEAwAIZH9bHaGAAQMgrTTxid9Ko07zWxQmamYZMUXJVhdXnyiL/VNVCqJJVOgImNStCjd9bH2ZjwZ/qQYUyG79QVWCpgKmMChqVd/4VIkkywFXa2uRpIAhLLU5m1VG6LimpHOKzIapjKZdQGJoCUbq7bMoVyt+j5W6t+WZ/r/KqPLMbv1Kxurf//8tBTuFZBUABV3GwiMDZuFj//swxAUCB4SDK0ywaICeAyN0wyROlYmGu6/rSDZ4E2kDhIFxZeHE1XJXBGqqqgLGqsZQ8m6ArsXr1fUvL1lChr+v/7fq//SC5HLZU2AEjwW0VUCig+dQNmTNmsUQ+tQt+EhX+skFfU3+n+u7/hV6TEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",eu=q(W,$c),tu=Z.Z.createLock($c),iu=new U;let su=!1;const nu=()=>{su||(tu(),su=!0)},ru=W.decodeAudioData(eu.buffer,e=>{null===iu.audioBufferProperty.value&&(iu.audioBufferProperty.set(e),nu())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),iu.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),nu()});ru&&ru.then(e=>{null===iu.audioBufferProperty.value&&(iu.audioBufferProperty.set(e),nu())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),nu()});const ou=new Qt(iu,{soundClipOptions:{initialOutputLevel:.5},soundManagerOptions:{categoryName:"user-interface"}});H.register("accordionBoxClosedSoundPlayer",ou);const au=ou,hu="data:audio/mpeg;base64,//swxAAABsArNnTzABEnmTA3HoACAAIOAYznNNVnYDYAWAjClBSA3BwKB48VkSUAABBynBhYP5QMCc+T4JnwQcoH/6gff/Of/l4gAIJkjluslkskluuAAAkTmCV7K1w6pqz7VkryDnmQVVFCJY0HRFDgrNPT7QRsUHNV+KVNJRPtYt0/426/nj/Tv/sPVjjhtrzPbywAATqIdRsL//syxAOACHStW/2RACEMj6e2smAEqYAYhGmdJfGbQRJM6d5rUVhcXmZTOP9blIoBChWlL5hQoqBgpUdHqJ/1McBGpaGctDO3++hgIUqDV8QgqAAntdpnEwAD6ruLLBhIIEPkpGtP5xWnwVF2czcptv1Fgk0VRRGN9VJRU46pQrSVRX///853QKKZ0dz3cGnwCKBwcHYEIC0hEM5EMv/7MsQEAAiQXW+5hIAREZRslzKwACEMBgAAD9/MyuFW/l8vMAkS99TuX45zufo9JjH/gbUAtafz/MqCaqJP4IIAARGcawPpR8H3iefS7zg45qAIBFAAV1AtJXsx44xwqAZ24lKIsEc5bDMUuS6XnBEXQqAakxM3KX8vlruv28Pc++21X/p71t0ufET/PUOSB+v8FT3Fl3GALLrbdbr/+zLEA4AIWHtvuPWAEROSLXcegALRIIBAAAAIpME09Jpkm6HEpcYWjTFeQLCjn4NAjRM5fbfr4UULuXdO+HtlGqi0a/9EFQ66zxGCz/4GGlyg0HFHJZM7ZIAwEAAAErGUoi0JXI6UF+hiurPpjdxalUIbk1pRYWEUpY39w/BVt/p1i48ySduL+KRKEg8sPo/yoV/yLlIIpJIQSCOJ//swxAODxLAbO7xggDAAADSAAAAEweQCRznEiWHEqW49z3nuJf8Fbqzvw1+e6j3TPf/BakxBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",lu=q(W,hu),du=Z.Z.createLock(hu),cu=new U;let uu=!1;const pu=()=>{uu||(du(),uu=!0)},mu=W.decodeAudioData(lu.buffer,e=>{null===cu.audioBufferProperty.value&&(cu.audioBufferProperty.set(e),pu())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),cu.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),pu()});mu&&mu.then(e=>{null===cu.audioBufferProperty.value&&(cu.audioBufferProperty.set(e),pu())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),pu()});const gu=new Qt(cu,{soundClipOptions:{initialOutputLevel:.5},soundManagerOptions:{categoryName:"user-interface"}});H.register("accordionBoxOpenedSoundPlayer",gu);const yu=gu;class Au extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({titleNode:null,expandedProperty:null,resize:!0,cursor:"pointer",lineWidth:1,cornerRadius:10,stroke:"black",fill:"rgb( 238, 238, 238 )",minWidth:0,titleAlignX:"center",titleAlignY:"center",titleXMargin:10,titleYMargin:2,titleXSpacing:5,showTitleWhenExpanded:!0,titleBarExpandCollapse:!0,buttonAlign:"left",buttonXMargin:4,buttonYMargin:2,contentAlign:"center",contentXMargin:15,contentYMargin:8,contentXSpacing:5,contentYSpacing:8,expandedSoundPlayer:yu,collapsedSoundPlayer:au,tagName:"div",headingTagName:"h3",accessibleNameBehavior:Au.ACCORDION_BOX_ACCESSIBLE_NAME_BEHAVIOR,voicingNameResponse:null,voicingObjectResponse:null,voicingContextResponse:null,voicingHintResponse:null,tandem:ye.Z.REQUIRED,tandemNameSuffix:"AccordionBox",phetioType:Au.AccordionBoxIO,phetioEventType:ei.Z.USER,visiblePropertyOptions:{phetioFeatured:!0}},t);i.titleBarOptions=(0,N.JA)({fill:null,stroke:null},i.titleBarOptions),i.expandCollapseButtonOptions=(0,N.JA)({sideLength:16,cursor:i.cursor,valueOnSoundPlayer:i.expandedSoundPlayer,valueOffSoundPlayer:i.collapsedSoundPlayer,voicingNameResponse:i.voicingNameResponse,voicingObjectResponse:i.voicingObjectResponse,voicingContextResponse:i.voicingContextResponse,voicingHintResponse:i.voicingHintResponse,tandem:i.tandem.createTandem("expandCollapseButton")},i.expandCollapseButtonOptions),super(),this._contentAlign=i.contentAlign,this._contentNode=e,this._cornerRadius=i.cornerRadius,this._buttonXMargin=i.buttonXMargin,this._buttonYMargin=i.buttonYMargin,this._contentXMargin=i.contentXMargin,this._contentYMargin=i.contentYMargin,this._contentXSpacing=i.contentXSpacing,this._contentYSpacing=i.contentYSpacing,this._titleAlignX=i.titleAlignX,this._titleAlignY=i.titleAlignY,this._titleXMargin=i.titleXMargin,this._titleYMargin=i.titleYMargin,this._titleXSpacing=i.titleXSpacing,this._minWidth=i.minWidth,this._showTitleWhenExpanded=i.showTitleWhenExpanded,this._buttonAlign=i.buttonAlign,this.titleNode=i.titleNode,this.titleNode||(this.titleNode=new R.xvT("",{tandem:i.tandem.createTandem("titleText"),disposer:this})),this.titleNode.pickable=!1,this.expandedProperty=i.expandedProperty,this.expandedProperty||(this.expandedProperty=new se.Z(!0,{tandem:i.tandem.createTandem("expandedProperty"),disposer:this})),this.expandCollapseButton=new fo(this.expandedProperty,i.expandCollapseButtonOptions),this.disposeEmitter.addListener(()=>this.expandCollapseButton.dispose());const s={fill:i.fill,cornerRadius:i.cornerRadius};this.expandedBox=new R.AeJ(s),this.collapsedBox=new R.AeJ(s),this.workaroundBox=new R.AeJ({fill:"transparent",pickable:!1}),this.expandedTitleBar=new fu(null,(0,N.JA)({lineWidth:i.lineWidth,cursor:i.cursor,disposer:this},i.titleBarOptions)),this.expandedBox.addChild(this.expandedTitleBar),this.collapsedTitleBar=new Pu((0,N.JA)({cornerRadius:i.cornerRadius,cursor:i.cursor,disposer:this},i.titleBarOptions)),this.collapsedBox.addChild(this.collapsedTitleBar),i.titleBarExpandCollapse?this.collapsedTitleBar.addInputListener({down:()=>{this.expandCollapseButton.isEnabled()&&(this.phetioStartEvent("expanded"),this.expandedProperty.value=!0,i.expandedSoundPlayer.play(),this.phetioEndEvent())}}):(this.expandedTitleBar.interactiveHighlight="invisible",this.collapsedTitleBar.interactiveHighlight="invisible"),i.showTitleWhenExpanded&&i.titleBarExpandCollapse&&this.expandedTitleBar.addInputListener({down:()=>{this.expandCollapseButton.isEnabled()&&(this.phetioStartEvent("collapsed"),i.collapsedSoundPlayer.play(),this.expandedProperty.value=!1,this.phetioEndEvent())}});const n=()=>{const e=this.expandCollapseButton.visible&&this.expandCollapseButton.pickable;this.collapsedTitleBar.pickable=e,this.expandedTitleBar.pickable=e};if(this.expandCollapseButton.visibleProperty.lazyLink(n),this.expandCollapseButton.pickableProperty.lazyLink(n),this.expandCollapseButton.enabledProperty.link(e=>{const t=i.titleBarExpandCollapse&&e;this.collapsedTitleBar.cursor=t&&i.cursor||null,this.expandedTitleBar.cursor=t&&i.cursor||null}),this.expandCollapseButton.setFocusHighlight(new R.UQs(this.expandedTitleBar)),i.stroke){const e={stroke:i.stroke,lineWidth:i.lineWidth,cornerRadius:i.cornerRadius,pickable:!1};this.expandedBoxOutline=new R.AeJ(e),this.expandedBox.addChild(this.expandedBoxOutline),this.collapsedBoxOutline=new R.AeJ(e),this.collapsedBox.addChild(this.collapsedBoxOutline)}this.expandedBox.addChild(this._contentNode),this.containerNode=new R.NBX,this.addChild(this.containerNode);const r=new R.NBX({tagName:"div",ariaRole:"region",pdomOrder:[this._contentNode],ariaLabelledbyAssociations:[{otherNode:this.expandCollapseButton,otherElementName:R.Grz.PRIMARY_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING}]}),o=new R.NBX({tagName:i.headingTagName,pdomOrder:[this.expandCollapseButton]}),a=new R.NBX({children:[o,r]});if(this.addChild(a),this.layout(),i.resize){const t=this.layout.bind(this);e.boundsProperty.lazyLink(t),this.titleNode.boundsProperty.lazyLink(t),this.disposeEmitter.addListener(()=>{e.boundsProperty.unlink(t),this.titleNode.boundsProperty.unlink(t)})}const h=()=>{const e=this.expandedProperty.value;this.expandedBox.visible=e,this.collapsedBox.visible=!e,this.workaroundBox.rectBounds=(e?this.expandedBox:this.collapsedBox).bounds.dilated(10),this.titleNode.visible=e&&i.showTitleWhenExpanded||!e,a.setPDOMAttribute("aria-hidden",!e),this.expandCollapseButton.voicingSpeakFullResponse({hintResponse:null})};this.expandedProperty.link(h),this.expandedBox.boundsProperty.link(h),this.collapsedBox.boundsProperty.link(h),this.disposeEmitter.addListener(()=>this.expandedProperty.unlink(h)),this.mutate(_.omit(i,"cursor")),this.resetAccordionBox=()=>{i.expandedProperty||this.expandedProperty.reset()}}reset(){this.resetAccordionBox()}layout(){const e=this._contentNode.bounds.isValid();if(this.containerNode.children=e?[this.expandedBox,this.collapsedBox,this.workaroundBox,this.titleNode,this.expandCollapseButton]:[],!e)return;const t=this.getCollapsedBoxHeight(),i=this.getBoxWidth(),s=this.getExpandedBoxHeight();this.expandedBox.rectWidth=i,this.expandedBox.rectHeight=s;const n=this.expandedBox.selfBounds;this.expandedBoxOutline&&(this.expandedBoxOutline.rectWidth=i,this.expandedBoxOutline.rectHeight=s),this.expandedTitleBar.shape=this.getTitleBarShape(),this.collapsedBox.rectWidth=i,this.collapsedBox.rectHeight=t,this.collapsedTitleBar.rectWidth=i,this.collapsedTitleBar.rectHeight=t,this.collapsedBoxOutline&&(this.collapsedBoxOutline.rectWidth=i,this.collapsedBoxOutline.rectHeight=t),this.workaroundBox.localBounds=this.collapsedBox.bounds,this._contentNode.bottom=n.bottom-this._contentYMargin;let r=n.left+this._contentXMargin,o=n.right-this._contentXMargin;this._showTitleWhenExpanded||("left"===this._buttonAlign?r+=this.expandCollapseButton.width+this._contentXSpacing:o-=this.expandCollapseButton.width+this._contentXSpacing),"left"===this._contentAlign?this._contentNode.left=r:"right"===this._contentAlign?this._contentNode.right=o:this._contentNode.centerX=(r+o)/2;let a=n.left+this._titleXMargin,h=n.right-this._titleXMargin;"left"===this._buttonAlign?(this.expandCollapseButton.left=n.left+this._buttonXMargin,a=this.expandCollapseButton.right+this._titleXSpacing):(this.expandCollapseButton.right=n.right-this._buttonXMargin,h=this.expandCollapseButton.left-this._titleXSpacing),"left"===this._titleAlignX?this.titleNode.left=a:"right"===this._titleAlignX?this.titleNode.right=h:this.titleNode.centerX=n.centerX,"top"===this._titleAlignY?(this.expandCollapseButton.top=this.collapsedBox.top+Math.max(this._buttonYMargin,this._titleYMargin),this.titleNode.top=this.expandCollapseButton.top):(this.expandCollapseButton.centerY=this.collapsedBox.centerY,this.titleNode.centerY=this.expandCollapseButton.centerY)}getTitleBarShape(){return Nt.bn.roundedRectangleWithRadii(0,0,this.getBoxWidth(),this.getCollapsedBoxHeight(),{topLeft:this._cornerRadius,topRight:this._cornerRadius})}getBoxWidth(){let e=Math.max(this._minWidth,this._buttonXMargin+this.expandCollapseButton.width+this._titleXSpacing+this.titleNode.width+this._titleXMargin);return"center"===this._titleAlignX&&(e=Math.max(e,2*(this._buttonXMargin+this.expandCollapseButton.width+this._titleXSpacing)+this.titleNode.width),e=Math.max(e,2*this._titleXMargin+this.titleNode.width)),this._showTitleWhenExpanded?Math.max(e,this._contentNode.width+2*this._contentXMargin):Math.max(e,this.expandCollapseButton.width+this._contentNode.width+this._buttonXMargin+this._contentXMargin+this._contentXSpacing)}getCollapsedBoxHeight(){return Math.max(this.expandCollapseButton.height+2*this._buttonYMargin,this.titleNode.height+2*this._titleYMargin)}getExpandedBoxHeight(){return this._showTitleWhenExpanded?this.getCollapsedBoxHeight()+this._contentNode.height+this._contentYMargin+this._contentYSpacing:Math.max(this.expandCollapseButton.height+2*this._buttonYMargin,this._contentNode.height+2*this._contentYMargin)}}S=Au,_defineProperty(Au,"AccordionBoxIO",new Hi.Z("AccordionBoxIO",{valueType:S,supertype:R.NBX.NodeIO,events:["expanded","collapsed"]})),_defineProperty(Au,"ACCORDION_BOX_ACCESSIBLE_NAME_BEHAVIOR",(e,t,i,s)=>(s.push(()=>{e.expandCollapseButton.accessibleName=i}),t));class fu extends((0,R.wgH)(R.y$t)){}class Pu extends((0,R.wgH)(R.AeJ)){}Je.register("AccordionBox",Au);class bu extends Au{constructor(e,t,i,s){const n=(0,N.ZP)()({strutWidth:10},s);super(e,(0,N.JA)({fill:Vh.panelFillProperty,stroke:Vh.panelStrokeProperty,cornerRadius:Eh.CORNER_RADIUS,titleXMargin:10,buttonXMargin:8,buttonYMargin:8,titleYMargin:4,titleXSpacing:14,contentYSpacing:0,lineWidth:Eh.PANEL_LINE_WIDTH,minWidth:Eh.RIGHT_SIDE_PANEL_MIN_WIDTH,expandedProperty:new se.Z(!1,{tandem:i.createTandem("expandedProperty"),phetioFeatured:!0}),expandCollapseButtonOptions:{touchAreaYDilation:8,touchAreaXDilation:8},titleNode:new R.BET({children:[new R.$8C(n.strutWidth),new R.xvT(t,{fontSize:Eh.FONT_SIZE,maxWidth:175,fill:Vh.textFillProperty,tandem:i.createTandem("titleText")})]}),tandem:i},n))}}it.register("CCKCAccordionBox",bu);class Eu extends qs{constructor(e,t,i){super(e,t,i=(0,N.JA)({boxWidth:16},i))}}it.register("CCKCCheckbox",Eu);const vu=rt.resistanceOhmsSymbolStringProperty;class wu extends R.SHm{constructor(e,t,i,s,n){const r=(e,t)=>new R.xvT(e,{fontSize:12,fill:Vh.textFillProperty,tandem:t,maxWidth:45}),o=Eh.BATTERY_RESISTANCE_RANGE,a=(o.max+o.min)/2,h=new Cr(e,o,{trackSize:Eh.SLIDER_TRACK_SIZE,thumbSize:Eh.THUMB_SIZE,majorTickLength:Eh.MAJOR_TICK_LENGTH,minorTickLength:Eh.MINOR_TICK_LENGTH,constrainValue:e=>o.constrainValue(Ve.Z.roundSymmetric(e)),phetioVisiblePropertyInstrumented:!1,tandem:n.createTandem("slider")});h.addMajorTick(o.min,r(rt.tinyStringProperty,n.createTandem("tinyLabelText"))),h.addMajorTick(a),h.addMajorTick(o.max,r(new rs(vu,{resistance:Ve.Z.toFixed(o.max,0)},{tandem:n.createTandem("maxLabelText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME)}),n.createTandem("maxLabelText")));for(let l=o.min+1;l1e-6&&h.addMinorTick(l);super({children:[new R.xvT(i,(0,N.JA)({fill:Vh.textFillProperty,tandem:n.createTandem("titleText")},s)),h],tandem:n,visiblePropertyOptions:{phetioFeatured:!0}})}}it.register("SourceResistanceControl",wu);const Vu=rt.lotsStringProperty,Su=rt.tinyStringProperty,Tu=rt.wireResistivityStringProperty,Cu={fontSize:12,maxWidth:45,fill:Vh.textFillProperty};class Iu extends R.SHm{constructor(e,t,i,s){const n=new R.xvT(Tu,(0,N.JA)({tandem:s.createTandem("titleText"),fill:Vh.textFillProperty},i)),r=new Cr(e,Eh.WIRE_RESISTIVITY_RANGE,{trackSize:Eh.SLIDER_TRACK_SIZE,thumbSize:Eh.THUMB_SIZE,majorTickLength:Eh.MAJOR_TICK_LENGTH,phetioVisiblePropertyInstrumented:!1,tandem:s.createTandem("slider")});r.addMajorTick(0,new R.xvT(Su,Cu)),r.addMajorTick(Eh.WIRE_RESISTIVITY_RANGE.max,new R.xvT(Vu,Cu)),super({children:[n,r],tandem:s,visiblePropertyOptions:{phetioFeatured:!0}})}}it.register("WireResistivityControl",Iu);class xu extends bu{constructor(e,t,i,s,n){const r=(0,N.ZP)()({showRealBulbsCheckbox:!0},n),o={fontSize:Eh.FONT_SIZE,maxWidth:120,fill:Vh.textFillProperty},a=[new Iu(e.wireResistivityProperty,t,o,s.createTandem("wireResistivityControl")),new wu(e.sourceResistanceProperty,t,i,o,s.createTandem("sourceResistanceControl"))];if(r.showRealBulbsCheckbox){const t=s.createTandem("addRealBulbsCheckbox");a.push(new Eu(e.addRealBulbsProperty,new R.xvT(rt.addRealBulbsStringProperty,(0,N.JA)({tandem:t.createTandem("labelText")},o)),{tandem:t}))}super(t.createBox(new R.SHm({align:"left",spacing:15,children:a})),rt.advancedStringProperty,s,{titleAlignX:"left",titleXSpacing:0}),this.mutate(r)}}it.register("AdvancedAccordionBox",xu);var ku=i(7840);const Bu={radius:50,innerRadius:35,handleWidth:50,handleHeight:30,handleCornerRadius:10,lightAngle:1.35*Math.PI,color:"#008541",sensorTypeFunction:Du()};class Mu extends R.NBX{constructor(e){const t=(0,N.lB)()({},Bu,e);super();const i=t.radius,s=i+t.handleHeight,n=t.handleWidth,r=Math.min(t.innerRadius,t.radius),o=t.handleCornerRadius,a=new Nt.d(new Ys.Z(0,0),i,i,0,.8*Math.PI,Math.PI*(1-.8),!1).start;function h(){return(new Nt.bn).moveTo(0,s).arc(-n/2+o,s-o,o,Math.PI/2,Math.PI,!1).lineTo(-n/2,i+10).quadraticCurveTo(-n/2,i,a.x,a.y).ellipticalArc(0,0,i,i,0,.8*Math.PI,Math.PI*(1-.8),!1).quadraticCurveTo(n/2,i,+n/2,i+10).arc(n/2-o,s-o,o,0,Math.PI/2,!1).close()}const l=h().moveTo(r,0).arc(0,0,r,2*Math.PI,0,!0).close(),d=t.lightAngle,c=l.bounds.center,u=Ys.Z.createPolar(1,d),p=l.intersection(new ku.Z(c,u)),m=p[p.length-1],g=(m?m.point:Ys.Z.ZERO).plus(u.timesScalar(1)),y=Ys.Z.createPolar(1,d+Math.PI),A=l.intersection(new ku.Z(c,y)),f=A[A.length-1],P=(f?f.point:Ys.Z.ZERO).plus(y.timesScalar(1));this.brighter5Property=new R.M4p(t.color,{luminanceFactor:.5}),this.brighter4Property=new R.M4p(t.color,{luminanceFactor:.4}),this.brighter3Property=new R.M4p(t.color,{luminanceFactor:.3}),this.brighter2Property=new R.M4p(t.color,{luminanceFactor:.2}),this.darker2Property=new R.M4p(t.color,{luminanceFactor:-.2}),this.darker3Property=new R.M4p(t.color,{luminanceFactor:-.3});const b=new R.y$t(l,{stroke:new R.oas(g.x,g.y,P.x,P.y).addColorStop(0,this.brighter2Property).addColorStop(1,this.darker2Property),fill:new R.oas(g.x,g.y,P.x,P.y).addColorStop(0,this.brighter5Property).addColorStop(.03,this.brighter4Property).addColorStop(.07,this.brighter4Property).addColorStop(.11,this.brighter2Property).addColorStop(.3,t.color).addColorStop(.8,this.darker2Property).addColorStop(1,this.darker3Property),lineWidth:2}),E=new R.y$t(l,{fill:t.color,scale:new Ys.Z(.9,.93+.01*t.handleHeight/Bu.handleHeight),centerX:b.centerX,stroke:new me.ZP([this.brighter3Property],e=>e.withAlpha(.5)),lineWidth:1.2,y:2}),v=[];t.sensorTypeFunction&&v.push(t.sensorTypeFunction(i)),v.push(b,E),t.children=v.concat(t.children||[]);const w=h();t.mouseArea=t.mouseArea||w,t.touchArea=t.touchArea||w,this.mutate(t)}dispose(){this.brighter5Property.dispose(),this.brighter4Property.dispose(),this.brighter3Property.dispose(),this.brighter2Property.dispose(),this.darker2Property.dispose(),this.darker3Property.dispose(),super.dispose()}}function Du(e){const t=(0,N.ZP)()({centerColor:"white",middleColor:"#E6F5FF",edgeColor:"#C2E7FF"},e);return e=>new R.Cdc(e,{fill:new R.XMe(.15*-e,.15*-e,0,.15*-e,.2*-e,.6*e).addColorStop(0,t.centerColor).addColorStop(.4,t.middleColor).addColorStop(1,t.edgeColor)})}_defineProperty(Mu,"DEFAULT_PROBE_NODE_OPTIONS",Bu),_defineProperty(Mu,"glass",Du),_defineProperty(Mu,"crosshairs",(function(e){const t=(0,N.ZP)()({stroke:"black",lineWidth:3,intersectionRadius:8},e);return e=>{const i={stroke:t.stroke,lineWidth:t.lineWidth};return new R.NBX({children:[new R.x12(-e,0,-t.intersectionRadius,0,i),new R.x12(+e,0,+t.intersectionRadius,0,i),new R.x12(0,-e,0,-t.intersectionRadius,i),new R.x12(0,+e,0,+t.intersectionRadius,i)]})}})),ft.register("ProbeNode",Mu);class Ou extends R.y$t{constructor(e,t,i,s,n){super(null,n=(0,N.ZP)()({stroke:"black"},n)),this.multilink=Ze.Z.multilink([e,t,i,s],(e,t,i,s)=>{this.shape=(new Nt.bn).moveToPoint(e).cubicCurveToPoint(e.plus(t),i.plus(s),i)})}dispose(){this.multilink.dispose(),super.dispose()}}ft.register("WireNode",Ou);const Lu=new Image,Ru=Z.Z.createLock(Lu);Lu.onload=Ru,Lu.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAACzCAYAAABmW8IJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAG51JREFUeNrsnXlsHNd9x9/s8pJEUpRMnbRBUmfS1DYV27WLJBXlIkaCurGSAk2aGKjktLmANtEfbYGmjWwEBRo3hWQUTZOigCTUToIiiGW7bQK3saimKVrbSmgncCQ3sqiDdBpdFFeWeOzR952Zt/t2du6d3eUuvx9gNLvDXYo7M9/v73hvZg3RpGzevHlIrkbS6fSIEIVBw0gNFQqFPmwzDEN7ZUGUPyckPIUClkLxuTyVxnO5/LT12Diez+eFXKbla8YnJibGmu3zGU0k+NF0OjUqhb5THgSIvM8pbHWgsF0/aGobIdENoFDxOJ8vuL4GaxgBFmkKx+V67OzZsxM0gBhs2bKlL5UydkvBPyS1uzuVSrkKGmv9sdfBowGQak3AIXRhPS2YhqC2ubxuAkYgDeEZaQZHaQABopdC3S3T+ocs8Zf/eTABL8F7CdyZCRCSpBGUG4K1WIaQL2YK2usmpBEclcuRc+fOjdMASsIfkqL/rBT9HinyPl3Uuuidwg+K6swASC1KgLBGoJZcLl+RIUgTQKnwhMwKDi9ZA5DCH21rg/BTu3VRK9GrtS7g9vb2skUah/m6trY28zHIZrNyp+fE7OysuHHjhujq6qIBkFigyTc3NycWFhbMx26C99vmNAL8Dv018jlKhCNyOSizguklYQBS+CNS+AekcEeVMCFitejRHiJftmyZuSxfvsIWviX2trZ2oXoDMnuQS1ru0FyxPstmF+SBy9q/kycziWMABfM8mp9fkEYwK27evGkGFQQXL8EHGYE9cmD+bs1UpuXjJ6QJPNqyBrB161aZ6qf2S0Hu0dN6iFl/DpH39PSYS2dnl1w65NJpbofopXmYEV8Zhp4h6DsZmUA2mzMbNYTEKwGEjNxZ81xCMFlYmDczgps3Z8XMzDVx/fr1iqiui93LDNR7nFmB3TTcJ43gaEsZwPbt2z4nxbpfDd9BuEr4SsiI8n19q8SKFcvNxxA9lo6OjrKUH+K33pe2I7sufuWsObMMwKJclpA4PQAEkZIJIBuYN5fZWRjBDXHtmmUEbvV/UDagmoY4R3Guaq/DyMHe8+fPTzS1Adjp/iEp8BE8VzW7vnR3d4tVq1aZKf7y5cvKxK+Eb0X+trIyQT9IlelVyQA4EkCqwco*kS1mAKgmQDcAEUA5kMjPiypUrzmjumxHo8wpKgasiI3islmVBTQ3AjvoH9Iiv1/gQ/urVq81UH+KH8Lu6Ootpf3t7RzHq6+91OnS58PPFqK8MQC8RlhoDqSmxJnVZ9BgZc622eTFX6BCXCv3F9Uy+W1yU60v5W5ZoD8A6lxD5cS5ZBmCZwNzcvL22SoLr1zPi0qVLvlmAf1lQKg0cRoCJRR+8cOHCRFMYAMbzZdR/Gk0+FfV1ASOy9/f3S+H3ynQf*ck+5GfmxHR17K+XvqHifU8QquuviLxlATjMAY8kYQL8U+eb0hNiUOmM+TgoYwmR+o3gjNyTeyA+bz5eKAeAcKmUBuaIBqJ4AygGYwezsTXH58mWzURjXBHQjcJgAphvvkyXB4UVtANu2bcX8/Kel4IZUg0/V+lj39vaKW26B+LvLUv6urmVao6+trFRQdb7LWKpr1LcOWt6s29QObGU6jXnxjvafiR0dPxG9xvW6/J+ns4PiRwvvEOez61u+B+A0AJxXqhTANssA5sxlenq6oh/gJ3a/bMB5jtuvOSxLgr2L0gBkyo/uPob3+vSUHwuEjajf19dnpv4QP5p9iPgQv97kKzUHDXtev7lrynaKOjBu4sdBUqmbKgFakS4p/Lu6Toq7Ol8zTSAM127mxZMvXhfPvfqWeHVy3nwOBle3ifds6RIP39tjrsPyi9xqcezmPeLcwroWzQDyxXklaq2XAaWmoDVMiBJAZaZ+8wTCDB16mYB9vcEuWRJMLxoD0Ot9Z+qOFH/NmrVm9O/uXlEW+Ts6Os2Ir6K+Er9Xne8nfL3rrx5bB0O03DyA7V1T4gMr/ye08MHfHp8Rf/Gdq0XRewED+NrH1pimEBYYwD9dfZeYzbe3sAEoE7BGA6zFeoz0H9Efj72E72UAbj93MwF17isTkPrae/bs2fGGG4AU/yE1tu/s1CPar127Toq/R0b8bjPqwxAQ+a2I31bxHmUAekNEd8KS0JXIS+k+DpC1LhmAW/+gmflQ/w/FjhVnI73nk09dNCN/WFYuS4nv/sEGccdA+Fof4v/6xfvEmdn+ltnXKvVXw4D6aADEjqiPiUEq7fcSdRixuxuFKNOAHgAl03YmMN4wA9i2bduhdNpd/BjaQ9rf3d1jNvvU+D7Eb0X8UtQHalKP/mHLG3xK7LmKqK8Wfcy2FQ3gM4Mvi83Lr0R6zx9/+7IZ/aMSxwTAN9+8Xbw0vaFlDABCt86nvJnuI/V/6623zJofQ4BRrhcII3znWr/aMGkTMKoT/1Yz8qu5+Lr4ke6vXWul/Va9v8Ic4kPKj6m8GNfXZwFWdkLz5tioNVOqJHxV26sD4nRm3QDUc/x6w0g1/cn4yObT4lf7fxHpPd//2ax439+8Gfv/RDkAE4jKF39ypzj31vIWMAA1DXjOjPYQPEzAT/Rej8MYhZdB+JmAPUKwa3JycrxuBiDTftT7n3MTP1L8devWi5Ure820X9X7akKP3hx01luVk3nyZQ09vSOrnFmt9Yka2Iax2fn5OfN3NnsG8K5b58Sf3vN/kd8H8cMEqgEGEKUxCC7ebBd7vtv8WYBq8umzSYOEHuV1Yc1BLwfcsuO4JtAWZ6fItH+Pl/ghcjT8MMxXmtjTWYz0pem6wly7fSDr8sl8heghbisFU6JfKG7DeCwED5eGW+M1rTT898jbr0V+z9kr2arFbzYPx65FNoA1yxbEu9deFt853fzzBeKI3O150Ou9tpVideVdrqA7Wz+YYv/0wMDADmkC0zUzgK1bt+LS3UMqfdcbd3iMmt9K90sdfvUapDGGUbCH5vJlc/eV4NVidVxLXVYI3BpztR5bnddZsxbDWhe8205u5gxgy6qcWN8d/XqGJMQP/iPm73n3bfPiX3/WviTE7y/eaMbhKn9D2KNZleex1jvD3JtjMkDvev3116cTNwDM67fEL4rDdnqDbeXKlea0XqvDX+ruqw+Jl6E+19Ma52QevcOqorwSPdbotuICDIje7frsOAdnsbO+O95chnNXson8/0HDhl7sWJ9tiQuxokXq+EYQtF2ZgJ4B6AZga2rkxo0bB+TTvYka*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*ck5gNIExixTUA4TaAW/QAaAWmVOh838NTv4Rcl6icg/jEp/l2+egv7YaQJfE6uDiQxLBjl7kL66++5VYiHRwri/s08ucjirfFR3+O+/erW3XEu241qFC6g6z+sT/qpygBsEzgkV3v0TCCJUiCqIaBZ+OvSBO63F0IaLXpEe3xXX9DXdYXZVq34bW3uOn/+/FhgcI1oAOgHHJPLiNMEkuoJxDEEZAZqedsaUfehRK/bNM/MWVOfg5i8Vgj8ooe4f0MtwP7Ffq4GvL+3y/84o+Qb6PV+f6OGjHHna9Tz6hbd+ld0h7ljT1JZgA97cWFfKK1F/fBuJlDvUiCI7o6CeYIMrDSKJ5DbyQTRTbkI7+QvCqZ4ayWyqF+40opEPfZRjMXNGLwMB6NNvZ3BxgqTnsoYptj161iCjmWtsgAvUqnUQRn594U+DnF28qZNm0bm5+ePyT+qz0v89Sgfa*gUFSlOpxfkTR/gRz0fc5WdvpH0W90MODg6OZLNZZAJ9f*ckvdlQgzoFVOwzvayYxt5rxLBZB1vpvjXE33thmkKT4qzIAt3IgSPxJmAFFSRbzuVOrkiAA37H+mhmAZgJPC5fLhxtVDugZQKsIebH+/c0U5eP+7dj3bq+NckesaswggNANv5oYgGYExSHCVsoAmA3QdPT/N+r9+WoofIzv75LiH6/mM6WT2jmZTOaZ3t7es/Lh7jAHLMnRAYq4us/dzFG80eZRTRZQxbk4bov/ZNX7I+kdbE8bRkkwtFhETyOhcOuZAdRI9Aqk+/uCZvg1zABUX0DurEPyw+6Oe0BrfcApYJpIlHMlSr+gRufatH1N/+FE90ktd/htt922O5/PH3DLBqo9MNU0ZWgmjPhJ/F1xhv9i/p/41q69SUX9uhmAygbkChcSfVbYcwYW28GngGkki/Eckn/7hC38sZrtn3odiOHh4aGFhYX98gPtSfqAUsCkHpG+jhPLJoQ1tn+45p+z3jtWZgS4sch+uz/Qx1ONkPoLv2EG4CgN9tilwRCPPVnCHE2lUkfOnz9/tO6ZzmL49PbQ4e/ahsCsICLy5JnO5/PjdT1xDAOmPcTyKzY4XviOPnxTz0TDSp3FtlfsOxFjeUho1xgs4loRX6M27lI/jsvt15yvT6fTE7lczvOAd3V1TZ8+fXq8Fc/4oaGhkYWFhT4fIxuRRtbnso9Xyn054rJ9tMkMCBH+eKNFv6gNwKVMGLEN4U77cS3KBQhODbFg/YrHz8zntRiOIdUzODg4lM1m9fNjyHG+7PT5WS3q+XH7XBqrZSe/Gv5fgAEAQAGPkaCPZlsAAAAASUVORK5CYII=";const Nu=Lu;class Zu extends R.SHm{constructor(e,t,i,s,n){const r=(0,N.ZP)()({spacing:n&&n.seriesAmmeter?.5:3,seriesAmmeter:!1,pickable:!1},n),o=new R.xvT(e,{fontSize:r.seriesAmmeter?46:40,maxWidth:120,fill:Vh.textFillProperty,tandem:s.createTandem("probeReadoutText"),stringPropertyOptions:{phetioReadOnly:!0}}),a=new R.AeJ(0,0,140,52,{cornerRadius:10,lineWidth:2,stroke:R.Ilk.BLACK,fill:R.Ilk.WHITE}),h=e=>{o.text===xr.NO_VALUE?o.centerX=a.centerX:o.right=a.right-10,o.centerY=a.centerY};o.boundsProperty.link(h);const l=e=>o.setVisible(e);t.link(l);const d=new R.xvT(i,{fontSize:r.seriesAmmeter?33:42,maxWidth:140,fill:Vh.textFillProperty,tandem:r.seriesAmmeter?s.createTandem("probeTitleText"):ye.Z.OPT_OUT});r.children=[d,new R.NBX({children:[a,o]})],r.seriesAmmeter&&(r.scale=.37),super(r),this.readoutText=o,this.titleText=d,this.disposeProbeTextNode=()=>{o.boundsProperty.unlink(h),a.dispose(),t.unlink(l)}}dispose(){this.disposeProbeTextNode(),this.readoutText.dispose(),this.titleText.dispose(),super.dispose()}}it.register("ProbeTextNode",Zu);const qu=rt.currentStringProperty;class Fu extends R.NBX{constructor(e,t,i){const s=(0,N.ZP)()({isIcon:!1,visibleBoundsProperty:null,showResultsProperty:new se.Z(!0),blackBoxStudy:!1,showPhetioIndex:!1,phetioVisiblePropertyInstrumented:!1,tandem:ye.Z.REQUIRED},i),n=s.tandem,r=s.isIcon?ye.Z.OPT_OUT:n,o=new Uh.Z(new Ys.Z(0,0)),a=new Uh.Z(new Ys.Z(0,0)),h=new Ou(o,new Uh.Z(new Ys.Z(0,-30)),a,new Uh.Z(new Ys.Z(0,15)),{stroke:R.Ilk.BLACK,lineWidth:3,pickable:!1}),l=new me.ZP([e.currentProperty,At,rt.currentUnitsStringProperty],e=>bd.createCurrentReadout(e,s.blackBoxStudy),{tandem:r.createTandem("probeReadoutText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z}),d=new me.ZP([qu],t=>s.showPhetioIndex?t+" "+e.phetioIndex:t,{tandem:r.createTandem("probeTitleText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z}),c=new Zu(l,s.showResultsProperty,d,r,{centerX:Nu.width/2,centerY:Nu.height/2+7}),u=new R.Eep(Nu,{scale:.5,cursor:"pointer",children:[c]}),p=new Mu({cursor:"pointer",sensorTypeFunction:Mu.crosshairs(),scale:.5,handleWidth:50,color:"#2c2c2b",innerRadius:43,children:[new R.AeJ(0,52,36,19,{cornerRadius:6,centerX:0,fill:"#e79547"})]});s.children=[u,h,p],super(s),this.probeNode=p,this.ammeter=e;const m=()=>{if(e.isDraggingProbesWithBodyProperty.get()){const t=e=>s.visibleBoundsProperty?s.visibleBoundsProperty.value.eroded(Eh.DRAG_BOUNDS_EROSION).closestPointTo(e):e;e.probePositionProperty.set(t(e.bodyPositionProperty.value.plusXY(40,-80)))}};if(e.bodyPositionProperty.link(e=>{u.centerTop=e,o.value=u.centerTop.plusXY(0,8),m()}),e.probePositionProperty.link(e=>{this.probeNode.centerTop=e,a.value=this.probeNode.centerBottom}),s.isIcon)this.dragHandler=null;else{e.isActiveProperty.linkAttribute(this,"visible"),e.isActiveProperty.link(m);const i=new me.ZP([s.visibleBoundsProperty],e=>e.eroded(Eh.DRAG_BOUNDS_EROSION)),n=new R._U3({positionProperty:e.probePositionProperty,useParentOffset:!0,tandem:r.createTandem("probeDragHandler"),start:()=>this.moveToFront(),dragBoundsProperty:i});this.dragHandler=new R._U3({useParentOffset:!0,positionProperty:e.bodyPositionProperty,tandem:r.createTandem("dragHandler"),start:()=>this.moveToFront(),end:function(){e.droppedEmitter.emit(u.globalBounds),e.isDraggingProbesWithBodyProperty.set(!1)},targetNode:this,dragBoundsProperty:i}),u.addInputListener(this.dragHandler),i.link(t=>{e.bodyPositionProperty.value=t.closestPointTo(e.bodyPositionProperty.value),e.probePositionProperty.value=t.closestPointTo(e.probePositionProperty.value)}),this.probeNode.addInputListener(n);const o=()=>{if(e.isActiveProperty.get()){const i=t.getCurrent(this.probeNode);e.setConnectionAndCurrent(i)}};t.circuit.circuitChangedEmitter.addListener(o),e.probePositionProperty.link(o)}s.isIcon&&(this.touchArea=this.bounds.copy(),this.mouseArea=this.bounds.copy(),this.cursor="pointer"),this.addLinkedElement(e,{tandem:r.createTandem("ammeter")})}startDrag(e){this.dragHandler&&this.dragHandler.press(e)}}it.register("AmmeterNode",Fu);const Yu=rt.animationSpeedLimitReachedStringProperty;class Hu extends R.xvT{constructor(e,t,i){super("",{fontSize:16,maxWidth:530}),Ze.Z.multilink([e,t,i,Yu],(e,t,i)=>{const s=100*e,n=s<99.5,r=e<.01?"< 1":Ve.Z.toFixed(s,0);this.setText(xt.Z.fillIn(Yu,{percent:r})),this.visible=n&&t&&i})}}it.register("ChargeSpeedThrottlingReadoutNode",Hu);class Gu extends R.BET{constructor(e,t,i,s,n,r,o){var a;i.lazyLink(()=>n.componentEditedEmitter.emit());const h=(0,N.ZP)()({delta:.01,titleNodeOptions:{maxWidth:Gu.NUMBER_CONTROL_ELEMENT_MAX_WIDTH,font:Eh.DEFAULT_FONT,fill:Vh.textFillProperty},numberDisplayOptions:{maxWidth:94,valuePattern:t,decimalPlaces:r,textOptions:{font:Eh.DEFAULT_FONT,fill:Vh.textFillProperty}},layoutFunction:Lr.createLayoutFunction1({arrowButtonsXSpacing:9}),sliderOptions:{thumbTouchAreaYDilation:5,thumbSize:new ni.Z(10,20),trackSize:new ni.Z(120,4)},tandem:ye.Z.OPT_OUT,getAdditionalVisibilityProperties:e=>[]},o);super({children:[new Lr(e,i,s,h)]}),a=this;const l=function(){for(var e=arguments.length,t=new Array(e),i=0;i{if(t instanceof ml&&d&&Ze.Z.unmultilink(d),e instanceof il){const t=h.getAdditionalVisibilityProperties(e);d=Ze.Z.multilinkAny([e.isEditableProperty,...t],l)}})}dispose(){}}_defineProperty(Gu,"NUMBER_CONTROL_ELEMENT_MAX_WIDTH",115),it.register("CircuitElementNumberControl",Gu);class Uu extends R.NBX{constructor(e){const t=(0,N.ZP)()({radius:20,lineWidth:5,stroke:"red",fill:null},e),i=new R.Cdc(t.radius,{lineWidth:t.lineWidth,stroke:t.stroke,fill:t.fill}),s=new R.x12(0,0,2*t.radius,0,{lineWidth:t.lineWidth,stroke:t.stroke,rotation:Math.PI/4,center:i.center});t.children=[i,s],super(t)}}ft.register("BannedNode",Uu);class zu extends Ic{constructor(e){super((0,N.JA)({baseColor:Pi.BUTTON_YELLOW,xMargin:10,yMargin:10},e))}}it.register("CCKCRoundPushButton",zu);const Wu=wt.Z.pool.create(.032,0,0,0,-.032,0,0,0,1);class Qu extends zu{constructor(e,t){const i=new R.y$t(new Nt.bn("M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z").transformed(Wu),{scale:.45,fill:R.Ilk.BLACK,center:Ys.Z.ZERO});super((0,N.ZP)()({touchAreaDilation:5,content:new R.NBX({children:[i,new Uu({lineWidth:3,radius:17})]}),listener:()=>{const t=e.selectionProperty.value;t instanceof Al&&t.clear()}},t));const s=e=>{this.visible=e};e.selectionProperty.link((e,t)=>{t instanceof Al&&t.isClearableProperty.unlink(s),e instanceof Al&&e.isClearableProperty.link(s)})}dispose(){}}it.register("ClearDynamicsButton",Qu);const Xu=(e,t)=>class extends(ur(e,t)){constructor(){for(var e=arguments.length,i=new Array(e),s=0;s{if(this.enabledProperty.get()&&R.ntP.isRangeKey(e.domEvent)){const t=e.domEvent;t.preventDefault(),t.metaKey||this._callbackTimer.isRunning()||(this._accessibleNumberSpinnerHandleKeyDown(e),o=this._accessibleNumberSpinnerHandleKeyDown.bind(this,e),a=t,this._callbackTimer.addCallback(o),this._callbackTimer.start())}},keyup:e=>{const t=R.ntP.getEventCode(e.domEvent);R.ntP.isRangeKey(e.domEvent)&&(a&&t===R.ntP.getEventCode(a)&&(this._emitKeyState(e.domEvent,!1),this._callbackTimer.stop(!1),this._callbackTimer.removeCallback(o),o=null,a=null),this.handleKeyUp(e))},blur:e=>{o&&(this._emitKeyState(a,!1),this._callbackTimer.stop(!1),this._callbackTimer.removeCallback(o)),this.handleBlur(e)},input:this.handleInput.bind(this),change:this.handleChange.bind(this)};this.addInputListener(h),this._disposeAccessibleNumberSpinner=()=>{this._callbackTimer.dispose(),this.incrementDownEmitter.dispose(),this.decrementDownEmitter.dispose(),this.removeInputListener(h)}}_accessibleNumberSpinnerHandleKeyDown(e){this.handleKeyDown(e),this._emitKeyState(e.domEvent,!0)}_emitKeyState(e,t){(0,ms.Z)(e,{valueType:Event}),R.ntP.isAnyKeyEvent(e,[R.ntP.KEY_UP_ARROW,R.ntP.KEY_RIGHT_ARROW])?this.incrementDownEmitter.emit(t):R.ntP.isAnyKeyEvent(e,[R.ntP.KEY_DOWN_ARROW,R.ntP.KEY_LEFT_ARROW])&&this.decrementDownEmitter.emit(t)}dispose(){this._disposeAccessibleNumberSpinner(),super.dispose()}};Je.register("AccessibleNumberSpinner",Xu);const Ku=Xu;class Ju extends(Ku(R.NBX,0)){constructor(e,t,i){const s=(0,N.ZP)()({arrowsPosition:"bothRight",arrowsScale:null,arrowButtonFill:"white",arrowButtonStroke:"black",arrowButtonLineWidth:1,deltaValue:1,xSpacing:5,ySpacing:3,numberDisplayOptions:{cornerRadius:5,backgroundStroke:"black"},touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,valueProperty:e,enabledRangeProperty:t,disabledOpacity:R.iaM.DISABLED_OPACITY,interactiveHighlight:"invisible",tandem:ye.Z.REQUIRED,tandemNameSuffix:"Spinner",phetioEnabledPropertyInstrumented:!0},i),n=s.incrementFunction||(e=>e+s.deltaValue),r=s.decrementFunction||(e=>e-s.deltaValue),o=new Br(e,t.value,(0,N.JA)({tandem:s.tandem.createTandem("numberDisplay")},s.numberDisplayOptions)),a={baseColor:s.arrowButtonFill,stroke:s.arrowButtonStroke,lineWidth:s.arrowButtonLineWidth,focusable:!1,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}},h=new Tn("topBottom"===s.arrowsPosition||"bothRight"===s.arrowsPosition?"up":"right",()=>e.set(n(e.get())),(0,N.JA)({tandem:s.tandem.createTandem("incrementButton")},a)),l=new Tn("topBottom"===s.arrowsPosition||"bothRight"===s.arrowsPosition?"down":"left",()=>e.set(r(e.get())),(0,N.JA)({tandem:s.tandem.createTandem("decrementButton")},a));let d;d||(d="leftRight"===s.arrowsPosition?o.height/h.height:"topBottom"===s.arrowsPosition?o.width/h.width:"bothRight"===s.arrowsPosition?(o.height/2-s.ySpacing/2)/h.height:(o.width/2-s.xSpacing/2)/h.width),s.arrowsScale&&(d*=s.arrowsScale),h.setScaleMagnitude(d),l.setScaleMagnitude(d);o.boundsProperty.link(()=>{"leftRight"===s.arrowsPosition?(h.left=o.right+s.xSpacing,l.right=o.left-s.xSpacing,h.centerY=l.centerY=o.centerY):"topBottom"===s.arrowsPosition?(h.centerX=l.centerX=o.centerX,h.bottom=o.top-s.ySpacing,l.top=o.bottom+s.ySpacing):"bothRight"===s.arrowsPosition?(h.left=l.left=o.right+s.xSpacing,h.bottom=o.centerY-s.ySpacing/2,l.top=o.centerY+s.ySpacing/2):(h.left=o.centerX+s.xSpacing/2,l.right=o.centerX-s.xSpacing/2,h.top=l.top=o.bottom+s.ySpacing)}),(s.touchAreaXDilation||s.touchAreaYDilation)&&(h.touchArea=h.localBounds.dilatedXY(s.touchAreaXDilation,s.touchAreaYDilation),l.touchArea=l.localBounds.dilatedXY(s.touchAreaXDilation,s.touchAreaYDilation),"bothRight"===s.arrowsPosition?(h.touchArea=h.touchArea.shiftedY(-s.touchAreaYDilation),l.touchArea=l.touchArea.shiftedY(s.touchAreaYDilation)):"bothBottom"===s.arrowsPosition&&(h.touchArea=h.touchArea.shiftedX(s.touchAreaXDilation),l.touchArea=l.touchArea.shiftedX(-s.touchAreaXDilation))),(s.mouseAreaXDilation||s.mouseAreaYDilation)&&(h.mouseArea=h.localBounds.dilatedXY(s.mouseAreaXDilation,s.mouseAreaYDilation),l.mouseArea=l.localBounds.dilatedXY(s.mouseAreaXDilation,s.mouseAreaYDilation),"bothRight"===s.arrowsPosition?(h.mouseArea=h.mouseArea.shiftedY(-s.mouseAreaYDilation),l.mouseArea=l.mouseArea.shiftedY(s.mouseAreaYDilation)):"bothBottom"===s.arrowsPosition&&(h.mouseArea=h.mouseArea.shiftedX(s.mouseAreaXDilation),l.mouseArea=l.mouseArea.shiftedX(-s.mouseAreaXDilation))),s.children=[o,h,l],s.keyboardStep=0,s.shiftKeyboardStep=0,s.pageKeyboardStep=0;const c=_.pick(s,R.NBX.REQUIRES_BOUNDS_OPTION_KEYS);super(_.omit(s,R.NBX.REQUIRES_BOUNDS_OPTION_KEYS));const u=()=>{h.enabled=n(e.value)<=t.value.max,l.enabled=r(e.value)>=t.value.min},p=e=>{u()};e.link(p);const m=t=>{e.value=t.constrainValue(e.value),u()};t.link(m);const g=e=>e&&h.pdomClick(),y=e=>e&&l.pdomClick();this.incrementDownEmitter.addListener(g),this.decrementDownEmitter.addListener(y),this.disposeNumberSpinner=()=>{o.dispose(),h.dispose(),l.dispose(),this.incrementDownEmitter.removeListener(g),this.decrementDownEmitter.removeListener(y),e.unlink(p),t.unlink(m)},this.mutate(c),this.numberDisplay=o,this.addLinkedElement(e,{tandem:s.tandem.createTandem("property")})}dispose(){this.disposeNumberSpinner(),super.dispose()}setNumberFormatter(e){this.numberDisplay.setNumberFormatter(e)}}Je.register("NumberSpinner",Ju);class ju extends R.SHm{constructor(e,t,i){i=(0,N.JA)({spacing:7},i);const s=new ot.Z(new Sn.Z(-180,180)),n={enabledProperty:new se.Z(!0),deltaValue:15,numberDisplayOptions:{align:"center",decimalPlaces:0,xMargin:10,yMargin:3,minBackgroundWidth:60,textOptions:{font:Eh.DEFAULT_FONT},valuePattern:"{{value}}"+xr.DEGREES},arrowsPosition:"leftRight",arrowsScale:.9,tandem:i.tandem.createTandem("numberSpinner")},r=new R.xvT(rt.phaseShiftStringProperty,{font:Eh.DEFAULT_FONT,maxWidth:Gu.NUMBER_CONTROL_ELEMENT_MAX_WIDTH,fill:Vh.textFillProperty}),o=new Ju(e,s,n);i.children=[r,o],super(i);const a=(e,t)=>{this.visible=e&&t};let h=null;t.selectionProperty.link((e,t)=>{t instanceof ml&&h&&Ze.Z.unmultilink(h),e instanceof ml&&(h=Ze.Z.multilink([e.isPhaseEditableProperty,e.isEditableProperty],a))})}}it.register("PhaseShiftControl",ju);class _u extends zu{constructor(e,t){const i=(new Nt.bn).moveTo(0,0).zigZagToPoint(new Ys.Z(35,0),4.7,4,!1),s=new R.NBX({children:[new R.y$t(i,{stroke:"black",lineWidth:1.2,centerX:0,centerY:0}),new R.Cdc(2.2,{fill:"black",centerX:0,centerY:0})],scale:.9});super((0,N.ZP)()({enabledPropertyOptions:{tandem:ye.Z.OPT_OUT},touchAreaDilation:5,content:s,listener:()=>{const t=e.selectionProperty.value;t instanceof Cl&&(t.resetFuse(),e.componentEditedEmitter.emit())}},t));const n=e=>this.setEnabled(e);e.selectionProperty.link((e,t)=>{t instanceof Cl&&t.isTrippedProperty.unlink(n),e instanceof Cl&&e.isTrippedProperty.link(n)})}dispose(){}}it.register("FuseRepairButton",_u);class $u extends zu{constructor(e,t){const i=new R.y$t("M59.42,9.597v7.807c0,0.719-0.32,1.331-0.957,1.84c-0.641,0.508-1.411,0.762-2.312,0.762v3.254 c0,0.894-0.398,1.659-1.199,2.296s-1.762,0.956-2.887,0.956H4.666c-1.125,0-2.086-0.319-2.887-0.956S0.58,24.152,0.58,23.259V3.741 c0-0.894,0.398-1.659,1.199-2.297C2.58,0.809,3.541,0.489,4.666,0.489h47.398c1.125,0,2.086,0.319,2.887,0.955 c0.801,0.638,1.199,1.403,1.199,2.297v3.253c0.901,0,1.672,0.255,2.312,0.764C59.1,8.265,59.42,8.878,59.42,9.597z M52.88,17.403 h3.271V9.597H52.88V3.741c0-0.189-0.074-0.345-0.227-0.467c-0.153-0.122-0.351-0.184-0.589-0.184H4.666 c-0.238,0-0.433,0.062-0.589,0.184C3.925,3.396,3.85,3.552,3.85,3.741v19.518c0,0.189,0.075,0.345,0.228,0.467 c0.156,0.121,0.351,0.184,0.589,0.184h47.398c0.238,0,0.436-0.062,0.589-0.184c0.152-0.122,0.227-0.277,0.227-0.467V17.403z M43.614,2.819v21.486H3.866V2.819H43.614z",{scale:.45,fill:R.Ilk.BLACK}),s="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z".split("M"),n="M"+s[1],r="M"+s[2];super((0,N.ZP)()({touchAreaDilation:5,content:new R.SHm({spacing:3,children:[new R.y$t(n,{fill:R.Ilk.BLACK,scale:.035}),i,new R.y$t(r,{fill:R.Ilk.BLACK,scale:.035})]}),listener:()=>{const t=e.selectionProperty.value;t instanceof yl&&(e.flip(t),e.componentEditedEmitter.emit())}},t))}dispose(){}}it.register("BatteryReverseButton",$u);const ep=rt.theSwitchIsClosedStringProperty,tp=rt.theSwitchIsOpenStringProperty;class ip extends R.NBX{constructor(e,t){const i=(e,t)=>new R.xvT(e,{fontSize:24,maxWidth:300,fill:Vh.textFillProperty,tandem:t,visiblePropertyOptions:{phetioReadOnly:!0}}),s=i(ep,t.createTandem("closedText")),n=i(tp,t.createTandem("openText")),r=e=>{s.visible=e,n.visible=!e};e.selectionProperty.link((e,t)=>{t instanceof pd&&t.isClosedProperty.unlink(r),e instanceof pd&&e.isClosedProperty.link(r)}),super({children:[new R.NBX({children:[s,n]})],tandem:t,visiblePropertyOptions:{phetioFeatured:!0}})}}it.register("SwitchReadoutNode",ip);const sp=new Nt.bn("M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z").makeImmutable();class np extends zu{constructor(e,t,i){super((0,N.JA)({touchAreaDilation:5,content:new R.y$t(sp,{fill:"black",scale:.8*Eh.FONT_AWESOME_ICON_SCALE}),listener:()=>{const t=e.selectionProperty.value;t instanceof il&&(t.startVertexProperty.value.isDragged||t.endVertexProperty.value.isDragged||e.disposeCircuitElement(t))},tandem:t},i))}dispose(){}}it.register("CCKCTrashButton",np);const rp=rt.capacitanceStringProperty,op=rt.capacitanceUnitsStringProperty,ap=rt.currentRatingStringProperty,hp=rt.currentUnitsStringProperty,lp=rt.frequencyHzValuePatternStringProperty,dp=rt.frequencyStringProperty,cp=rt.inductanceStringProperty,up=rt.inductanceUnitsStringProperty,pp=rt.resistanceOhmsValuePatternStringProperty,mp=rt.resistanceStringProperty,gp=rt.tapCircuitElementToEditStringProperty,yp=rt.voltageStringProperty,Ap=rt.voltageVoltsValuePatternStringProperty,fp=function(e,t,i,s){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>!0;const r=new ot.Z(e,{});r.link(e=>{i.selectionProperty.value&&i.selectionProperty.value instanceof t&&(s(i.selectionProperty.value).value=e)});const o=e=>r.set(e);return i.selectionProperty.link((e,i)=>{i instanceof t&&n(i)&&s(i).unlink(o),e instanceof t&&n(e)&&s(e).link(o)}),r};class Pp extends R.NBX{constructor(e,t,i,s,n,r){super();const o=(0,N.ZP)()({showPhaseShiftControl:!1},r),a=new np(e,n.createTandem("trashButton")),h=new R.NBX({excludeInvisibleChildrenFromBounds:!0,children:[a]}),l=new _u(e,{tandem:n.createTandem("fuseRepairButton"),maxHeight:a.height}),d=new R.NBX({excludeInvisibleChildrenFromBounds:!0,children:[l]}),c=e=>d.setVisible(e);e.selectionProperty.link((e,t)=>{t instanceof Cl&&t.isRepairableProperty.unlink(c),e instanceof Cl&&e.isRepairableProperty.link(c)});const u=new Qu(e,{tandem:e.includeACElements?n.createTandem("clearButton"):ye.Z.OPT_OUT,maxHeight:a.height}),p=new $u(e,{tandem:n.createTandem("batteryReverseButton"),maxHeight:a.height}),m=new R.NBX({excludeInvisibleChildrenFromBounds:!0,children:[p]}),g=e=>m.setVisible(e);e.selectionProperty.link((e,t)=>{t instanceof yl&&t.isReversibleProperty.unlink(g),e instanceof yl&&e.isReversibleProperty.link(g)});const y=new ip(e,n.createTandem("switchReadoutNode")),A=e=>h.setVisible(e);e.selectionProperty.link((e,t)=>{e instanceof il&&e.isDisposableProperty.link(A),t instanceof il&&t.isDisposableProperty.unlink(A)});const f=new Gu(ap,new rs(hp,{current:Er.VALUE_NAMED_PLACEHOLDER}),fp(Cl.DEFAULT_CURRENT_RATING,Cl,e,e=>e.currentRatingProperty),Cl.RANGE,e,1,{tandem:n.createTandem("fuseCurrentRatingControl"),delta:.1,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,.5)}}),P=new Gu(rp,new rs(op,{capacitance:Er.VALUE_NAMED_PLACEHOLDER}),fp(fl.CAPACITANCE_DEFAULT,fl,e,e=>e.capacitanceProperty),fl.CAPACITANCE_RANGE,e,fl.NUMBER_OF_DECIMAL_PLACES,{tandem:e.includeACElements?n.createTandem("capacitanceNumberControl"):ye.Z.OPT_OUT,delta:ct.capacitanceStep,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,ct.capacitanceStep)}}),b=new Gu(cp,new rs(up,{inductance:Er.VALUE_NAMED_PLACEHOLDER}),fp(xl.INDUCTANCE_DEFAULT,xl,e,e=>e.inductanceProperty),xl.INDUCTANCE_RANGE,e,xl.INDUCTANCE_NUMBER_OF_DECIMAL_PLACES,{tandem:e.includeACElements?n.createTandem("inductanceNumberControl"):ye.Z.OPT_OUT,delta:ct.inductanceStep,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,.1)}}),E=(t,i)=>new Gu(mp,new rs(pp,{resistance:Er.VALUE_NAMED_PLACEHOLDER}),fp(ad.RESISTOR.defaultResistance,i,e,e=>e.resistanceProperty,e=>e instanceof Dl&&!e.isExtreme||e instanceof hd&&e.resistorType!==ad.EXTREME_RESISTOR),ad.RESISTOR.range,e,hd.RESISTANCE_DECIMAL_PLACES,{tandem:n.createTandem(t),delta:.1,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,1)},numberDisplayOptions:{decimalPlaces:hd.RESISTANCE_DECIMAL_PLACES}}),v=(t,i)=>new Gu(mp,new rs(pp,{resistance:Er.VALUE_NAMED_PLACEHOLDER}),fp(ad.EXTREME_RESISTOR.defaultResistance,i,e,e=>e.resistanceProperty,e=>e instanceof Dl&&e.isExtreme||e instanceof hd&&e.resistorType===ad.EXTREME_RESISTOR),ad.EXTREME_RESISTOR.range,e,hd.HIGH_RESISTANCE_DECIMAL_PLACES,{tandem:e.includeLabElements?n.createTandem(t):ye.Z.OPT_OUT,delta:10,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,100)},numberDisplayOptions:{decimalPlaces:hd.HIGH_RESISTANCE_DECIMAL_PLACES}}),w=E("resistorResistanceNumberControl",hd),V=E("lightBulbResistanceNumberControl",Dl),S=v("extremeResistorResistanceNumberControl",hd),T=v("extremeLightBulbResistanceNumberControl",Dl),C=new Gu(yp,new rs(Ap,{voltage:Er.VALUE_NAMED_PLACEHOLDER}),fp(yl.VOLTAGE_DEFAULT,yl,e,e=>e.voltageProperty,e=>"normal"===e.batteryType),yl.VOLTAGE_RANGE,e,yl.VOLTAGE_DECIMAL_PLACES,{tandem:n.createTandem("batteryVoltageNumberControl"),delta:.1,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,1)},numberDisplayOptions:{decimalPlaces:yl.VOLTAGE_DECIMAL_PLACES}}),I=new Gu(yp,new rs(Ap,{voltage:Er.VALUE_NAMED_PLACEHOLDER}),fp(yl.HIGH_VOLTAGE_DEFAULT,yl,e,e=>e.voltageProperty,e=>"high-voltage"===e.batteryType),yl.HIGH_VOLTAGE_RANGE,e,yl.HIGH_VOLTAGE_DECIMAL_PLACES,{tandem:e.includeLabElements?n.createTandem("extremeBatteryVoltageNumberControl"):ye.Z.OPT_OUT,delta:10,sliderOptions:{constrainValue:e=>Ve.Z.roundToInterval(e,100)},numberDisplayOptions:{decimalPlaces:yl.HIGH_VOLTAGE_DECIMAL_PLACES}}),x=new ju(fp(0,ml,e,e=>e.phaseProperty),e,{tandem:e.includeACElements?n.createTandem("phaseShiftControl"):ye.Z.OPT_OUT}),k=new Gu(yp,new rs(Ap,{voltage:Er.VALUE_NAMED_PLACEHOLDER}),fp(9,ml,e,e=>e.maximumVoltageProperty),ml.MAX_VOLTAGE_RANGE,e,2,{tandem:e.includeACElements?n.createTandem("acVoltageControl"):ye.Z.OPT_OUT,getAdditionalVisibilityProperties:e=>e instanceof ml?[e.isVoltageEditableProperty]:[]}),B=new Gu(dp,new rs(lp,{frequency:Er.VALUE_NAMED_PLACEHOLDER}),fp(ml.DEFAULT_FREQUENCY,ml,e,e=>e.frequencyProperty),ml.FREQUENCY_RANGE,e,2,{tandem:e.includeACElements?n.createTandem("frequencyControl"):ye.Z.OPT_OUT,delta:.01,getAdditionalVisibilityProperties:e=>e instanceof ml?[e.isFrequencyEditableProperty]:[]}),M=new R.xvT(gp,{fontSize:24,maxWidth:300,fill:Vh.textFillProperty,tandem:n.createTandem("tapInstructionText"),phetioVisiblePropertyInstrumented:!0,visiblePropertyOptions:{phetioReadOnly:!0}}),D=()=>{if(!phet.joist.sim.isSettingPhetioStateProperty.value){const t=e.circuitElements.filter(e=>e instanceof cl&&e.interactiveProperty.get());M.visible=t.length>0}};e.vertexDroppedEmitter.addListener(D),e.vertexGroup.elementDisposedEmitter.addListener(D),i.link(D);const O=()=>{var e;this.bounds.isValid()&&this.mutate((e=t.get(),{centerX:s.value,bottom:e.bottom-Eh.HORIZONTAL_MARGIN}))};let L=null;const Z=[];e.selectionProperty.link(e=>{if(L&&(this.hasChild(L)&&this.removeChild(L),L!==M&&L!==h&&(L.dispose(),Z.forEach(e=>e()),Z.length=0)),L=null,e)if(e instanceof hd&&e.isResistanceEditable()){const t=e.resistorType===ad.EXTREME_RESISTOR;L=new bp([t?S:w,h])}else if(e instanceof Dl&&!e.isReal)L=new bp([e.isExtreme?T:V,h]);else if(e instanceof hd||e instanceof Dl&&e.isReal)L=h;else if(e instanceof yl){const t=new R.NBX({children:[m],excludeInvisibleChildrenFromBounds:!0});L=new bp([t,"high-voltage"===e.batteryType?I:C,h]),Z.push(()=>t.dispose())}else if(e instanceof Cl)L=new bp([d,f,h]);else if(e instanceof pd)L=new R.BET({children:[y,h],spacing:25,align:"bottom"});else if(e instanceof ld||e instanceof md)L=h;else if(e instanceof ml){const e=[k,B];o.showPhaseShiftControl&&e.push(x),e.push(h),L=new bp(e)}else e instanceof fl?L=new bp([u,P,h]):e instanceof xl&&(L=new bp([u,b,h]));else L=M;null!==L&&(this.addChild(L),L===M||L instanceof ip?(this.mouseArea=null,this.touchArea=null):(this.mouseArea=this.localBounds.dilatedXY(20,Eh.VERTICAL_MARGIN),this.touchArea=this.localBounds.dilatedXY(20,Eh.VERTICAL_MARGIN))),O()}),t.link(O),this.localBoundsProperty.link(O)}}class bp extends Qi{constructor(e){const t=new R.BET({spacing:25,align:"bottom",children:e});super(t,{fill:Vh.editPanelFillProperty,stroke:null,xMargin:10,yMargin:10,cornerRadius:10,align:"center"}),this.hbox=t}dispose(){this.hbox.dispose(),super.dispose()}}it.register("CircuitElementEditContainerNode",Pp);var Ep=i(2221),vp=i(1685);class wp{constructor(e){_defineProperty(this,"startingValue",null),_defineProperty(this,"endingValue",null);const t=(0,N.ZP)()({setValue:null,getValue:null,property:null,object:null,attribute:null,to:null,delta:null,speed:null,from:null,easing:Zd.CUBIC_IN_OUT,blend:wp.DEFAULT_BLEND,distance:wp.DEFAULT_DISTANCE,add:wp.DEFAULT_ADD},e);t.object&&(t.setValue=wp.OBJECT_SET(t.object,t.attribute),t.getValue=wp.OBJECT_GET(t.object,t.attribute)),t.property&&(t.setValue=wp.PROPERTY_SET(t.property),t.getValue=wp.PROPERTY_GET(t.property)),this.getValue=t.getValue,this.setValue=t.setValue,this.easing=t.easing,this.from=t.from,this.to=t.to,this.delta=t.delta,this.speed=t.speed,this.blend=t.blend,this.distance=t.distance,this.add=t.add}static DEFAULT_BLEND(e,t,i){if(0===i)return e;if(1===i)return t;if("number"==typeof e&&"number"==typeof t)return e+(t-e)*i;if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.blend)return e.blend(t,i);throw new Error(`Blending not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in a blend option`)}static DEFAULT_DISTANCE(e,t){if("number"==typeof e&&"number"==typeof t)return Math.abs(e-t);if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.distance)return e.distance(t);throw new Error(`Distance (required for speed) by default not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in a distance option`)}static DEFAULT_ADD(e,t){if("number"==typeof e&&"number"==typeof t)return e+t;if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.plus)return e.plus(t);throw new Error(`Addition (required for delta) by default not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in an add option`)}static OBJECT_SET(e,t){return function(i){e[t]=i}}static OBJECT_GET(e,t){return function(){return e[t]}}static PROPERTY_SET(e){return function(t){e.value=t}}static PROPERTY_GET(e){return function(){return e.value}}computeStartEnd(){this.startingValue=null!==this.from?this.from:this.getValue(),this.endingValue=null!==this.to?this.to:this.add(this.startingValue,this.delta)}update(e){this.setValue(this.blend(this.startingValue,this.endingValue,this.easing.value(e)))}hasPreferredDuration(){return null!==this.speed}getPreferredDuration(){return null===this.speed?null:this.speed*this.distance(this.startingValue,this.delta)}}Rd.register("AnimationTarget",wp);const Vp=wp;class Sp{constructor(e){_defineProperty(this,"length",0),_defineProperty(this,"remainingDelay",0),_defineProperty(this,"remainingAnimation",0),_defineProperty(this,"runningProperty",new se.Z(!1)),_defineProperty(this,"animatingProperty",new se.Z(!1)),_defineProperty(this,"startEmitter",new $t.Z),_defineProperty(this,"beginEmitter",new $t.Z),_defineProperty(this,"finishEmitter",new $t.Z({parameters:[{valueType:"number"}]})),_defineProperty(this,"stopEmitter",new $t.Z),_defineProperty(this,"endedEmitter",new $t.Z),_defineProperty(this,"updateEmitter",new $t.Z);const t=(0,N.ZP)()({targets:null,duration:null,delay:0,stepEmitter:Ep.Z},e);this.targets=(null===t.targets?[t]:t.targets).map(e=>new Vp(e)),this.duration=t.duration,this.delay=t.delay;const i=t.stepEmitter;if(i){const e=this.step.bind(this);this.runningProperty.link(t=>{t&&!i.hasListener(e)?i.addListener(e):!t&&i.hasListener(e)&&i.removeListener(e)})}}start(e){return this.runningProperty.value||(this.remainingDelay=this.delay,this.runningProperty.value=!0,this.startEmitter.emit(),this.step(void 0!==e?e:0)),this}stop(){return this.runningProperty.value?(this.runningProperty.value=!1,this.stopEmitter.emit(),this.endedEmitter.emit(),this):this}step(e){if(!this.runningProperty.value)return this;if(!this.animatingProperty.value){if(this.remainingDelay-=e,e=-this.remainingDelay,this.remainingDelay>0)return this;this.length=this.duration;for(let e=0;e0?Ve.Z.clamp((this.length-this.remainingAnimation)/this.length,0,1):1;for(let i=0;ie.start(t)),e}}Rd.register("Animation",Sp);const Tp=Sp,Cp={up:0,down:Math.PI,left:-Math.PI/2,right:Math.PI/2};class Ip extends ui{constructor(e){const t=(0,N.ZP)()({arrowDirection:"up",arrowSize:new ni.Z(20,7),arrowPathOptions:{stroke:"black",lineWidth:3,lineCap:"round"},baseColor:"rgba( 200, 200, 200, 0.5 )",buttonAppearanceStrategy:hi.FlatAppearanceStrategy,cornerRadius:4},e);let i=null;void 0===t.stroke&&(i=new R.M4p(t.baseColor,{luminanceFactor:-.8}),t.stroke=i);let s=(new Nt.bn).moveTo(0,0).lineTo(t.arrowSize.width/2,-t.arrowSize.height).lineTo(t.arrowSize.width,0);s=s.transformed(wt.Z.rotation2(Cp[t.arrowDirection])),t.content=new R.y$t(s,t.arrowPathOptions);const n=t.arrowDirection,r=t.cornerRadius;if(t.leftTopCornerRadius="up"===n||"left"===n?r:0,t.rightTopCornerRadius="up"===n||"right"===n?r:0,t.leftBottomCornerRadius="down"===n||"left"===n?r:0,t.rightBottomCornerRadius="down"===n||"right"===n?r:0,"up"===n||"down"===n){const e=t.mouseAreaYDilation/2||0,i=t.touchAreaYDilation/2||0;t.mouseAreaYDilation=e,t.touchAreaYDilation=i,t.mouseAreaYShift="up"===n?-e:e,t.touchAreaYShift="up"===n?-i:i}else{const e=t.mouseAreaXDilation/2||0,i=t.touchAreaXDilation/2||0;t.mouseAreaXDilation=e,t.touchAreaXDilation=i,t.mouseAreaXShift="left"===n?-e:e,t.touchAreaXShift="left"===n?-i:i}super(t),this.customStrokeProperty=i}dispose(){this.customStrokeProperty&&this.customStrokeProperty.dispose(),super.dispose()}}Je.register("CarouselButton",Ip);const xp=new ni.Z(20,7);class kp extends R.NBX{constructor(e,t){let i=!1;const s=(0,N.ZP)()({orientation:"horizontal",fill:"white",stroke:"black",lineWidth:1,cornerRadius:4,defaultPageNumber:0,itemsPerPage:4,spacing:12,margin:6,alignBoxOptions:{phetioType:R.RnV,phetioState:!0,visiblePropertyOptions:{phetioFeatured:!0}},buttonOptions:{xMargin:5,yMargin:5,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,baseColor:"rgba( 200, 200, 200, 0.5 )",disabledColor:ri.LIGHT_GRAY,lineWidth:1,arrowPathOptions:{stroke:"black",lineWidth:3},arrowSize:xp,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1},soundPlayer:Kt},separatorsVisible:!1,separatorOptions:{stroke:"rgb( 180, 180, 180 )",lineWidth:.5,pickable:!1},animationEnabled:!0,animationOptions:{duration:.4,stepEmitter:Ep.Z,easing:Zd.CUBIC_IN_OUT},tandem:ye.Z.OPTIONAL,visiblePropertyOptions:{phetioFeatured:!0}},t);super(),this.animationEnabled=s.animationEnabled,this.items=e,this.itemsPerPage=s.itemsPerPage,this.defaultPageNumber=s.defaultPageNumber;const n=Cn.Z.fromLayoutOrientation(s.orientation),r=new R.Lkj,o=s.tandem.createTandem("items");this.carouselItemNodes=_e(e,o),this.alignBoxes=e.map((e,t)=>r.createBox(this.carouselItemNodes[t],(0,N.JA)({tandem:e.tandemName?o.createTandem(e.tandemName):ye.Z.OPTIONAL},s.alignBoxOptions,e.alignBoxOptions))),this.scrollingNode=new Bp(this,{children:this.alignBoxes,orientation:s.orientation,spacing:s.spacing,[n.opposite.coordinate+"Margin"]:s.margin}),this.visibleAlignBoxesProperty=me.ZP.deriveAny(this.alignBoxes.map(e=>e.visibleProperty),()=>this.getVisibleAlignBoxes()),this.scrollingNode.childrenReorderedEmitter.addListener(()=>this.visibleAlignBoxesProperty.recomputeDerivation());const a=(0,N.JA)({cornerRadius:s.cornerRadius},s.buttonOptions),h=s.separatorsVisible?new R.NBX({pickable:!1}):null,l=new R.NBX({children:s.separatorsVisible?[h,this.scrollingNode]:[this.scrollingNode]}),d=e=>Math.max(Math.ceil(e.length/s.itemsPerPage),1);this.numberOfPagesProperty=new me.ZP([this.visibleAlignBoxesProperty],e=>d(e),{isValidValue:e=>e>0});const c=d(this.alignBoxes);this.pageNumberProperty=new Gh.Z(s.defaultPageNumber,{tandem:s.tandem.createTandem("pageNumberProperty"),numberType:"Integer",isValidValue:e=>e=0,range:new Sn.Z(0,c-1),phetioFeatured:!0});const u=new me.ZP([this.numberOfPagesProperty],e=>e>1),p=new Ip((0,N.JA)({arrowDirection:n===Cn.Z.HORIZONTAL?"right":"down",tandem:s.tandem.createTandem("nextButton"),listener:()=>this.pageNumberProperty.set(this.pageNumberProperty.get()+1),enabledProperty:new me.ZP([this.pageNumberProperty,this.numberOfPagesProperty],(e,t)=>ethis.pageNumberProperty.set(this.pageNumberProperty.get()-1),enabledProperty:new me.ZP([this.pageNumberProperty],e=>e>0),visibleProperty:u},a)),g=new R.NBX({children:[l]}),y=new R.AeJ({cornerRadius:s.cornerRadius,fill:s.fill}),A=new R.AeJ({cornerRadius:s.cornerRadius,stroke:s.stroke,pickable:!1});this.carouselConstraint=new Mp(this,y,A,g,m,p,l,this.alignBoxes,n,this.scrollingNode,this.itemsPerPage,s.margin,r,h,s.separatorOptions);let f=null;const P=new vt.Z(0,0,0,0);Ze.Z.multilink([this.pageNumberProperty,l.localBoundsProperty],(e,t)=>{var r,o,a,h,d;if(e>=this.numberOfPagesProperty.value)return;f&&f.stop();const c=this.visibleAlignBoxesProperty.value[e*s.itemsPerPage],u=c?-c[n.minSide]+s.margin:0,p=null===P||!P.equals(t);P.set(t),!this.animationEnabled||null!==(r=window)&&void 0!==r&&null!==(o=r.phet)&&void 0!==o&&null!==(a=o.joist)&&void 0!==a&&null!==(h=a.sim)&&void 0!==h&&null!==(d=h.isSettingPhetioStateProperty)&&void 0!==d&&d.value||!i||p?l[n.coordinate]=u:(f=new Tp((0,N.JA)({},s.animationOptions,{to:u,getValue:()=>l[n.coordinate],setValue:e=>{l[n.coordinate]=e}})),f.start())}),this.visibleAlignBoxesProperty.link(()=>{this.pageNumberProperty.value=Math.min(this.pageNumberProperty.value,this.numberOfPagesProperty.value-1)}),s.children=[y,g,p,m,A],this.disposeCarousel=()=>{this.visibleAlignBoxesProperty.dispose(),this.pageNumberProperty.dispose(),this.alignBoxes.forEach(e=>{e.children.forEach(e=>e.dispose()),e.dispose()}),this.scrollingNode.dispose(),this.carouselConstraint.dispose()},this.mutate(s),i=!0}dispose(){this.disposeCarousel(),super.dispose()}reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=this.animationEnabled;this.animationEnabled=e,this.pageNumberProperty.value=Math.min(this.defaultPageNumber,this.numberOfPagesProperty.value-1),this.animationEnabled=t}scrollToItemVisibleIndex(e){this.pageNumberProperty.set(this.itemVisibleIndexToPageNumber(e))}scrollToItem(e){this.scrollToAlignBox(this.getAlignBoxForItem(e))}scrollToAlignBox(e){const t=this.visibleAlignBoxesProperty.value.indexOf(e);t>=0&&this.scrollToItemVisibleIndex(t)}setItemVisible(e,t){this.getAlignBoxForItem(e).visible=t}getAlignBoxForItem(e){const t=this.alignBoxes[this.items.indexOf(e)];return t}getNodeForItem(e){const t=this.carouselItemNodes[this.items.indexOf(e)];return t}itemVisibleIndexToPageNumber(e){return Math.floor(e/this.itemsPerPage)}getVisibleAlignBoxes(){return _.sortBy(this.alignBoxes.filter(e=>e.visible),e=>this.scrollingNode.children.indexOf(e))}}class Bp extends R.N52{constructor(e,t){super(t),this.carousel=e}onIndexedNodeIOChildMoved(e){this.carousel.scrollToAlignBox(e)}}class Mp extends R.dmK{constructor(e,t,i,s,n,r,o,a,h,l,d,c,u,p,m){super(e),this.carousel=e,this.backgroundNode=t,this.foregroundNode=i,this.windowNode=s,this.previousButton=n,this.nextButton=r,this.scrollingNodeContainer=o,this.alignBoxes=a,this.orientation=h,this.scrollingNode=l,this.itemsPerPage=d,this.margin=c,this.alignGroup=u,this.separatorLayer=p,this.separatorOptions=m,[this.backgroundNode,this.foregroundNode,this.windowNode,this.previousButton,this.nextButton,this.scrollingNodeContainer,...this.alignBoxes].forEach(e=>this.addNode(e,!1)),this.separatorLayer&&this.scrollingNode.constraint.finishedLayoutEmitter.addListener(()=>{this.updateSeparators()}),this.updateLayout()}updateSeparators(){const e=this.carousel.getVisibleAlignBoxes(),t=e.length>=2?_.range(1,e.length):[];this.separatorLayer.children=t.map(t=>{const i=(e[t-1][this.orientation.maxSide]+e[t][this.orientation.minSide])/2;return new R.Z0O((0,N.JA)({[this.orientation.coordinate+"1"]:i,[this.orientation.coordinate+"2"]:i,[this.orientation.opposite.coordinate+"2"]:this.scrollingNode[this.orientation.opposite.size]},this.separatorOptions))})}computeClipArea(){const e=this.orientation,t=this.carousel.getVisibleAlignBoxes();if(0===t.length)return new ni.Z(0,0);{const i=t[this.itemsPerPage-1]||t[t.length-1],s=new ni.Z(i[e.maxSide]-t[0][e.minSide]+2*this.margin,this.scrollingNodeContainer.boundsProperty.value[e.opposite.size]);return this.orientation===Cn.Z.HORIZONTAL?s:s.swapped()}}getBackgroundDimension(){let e,t;if(this.orientation===Cn.Z.HORIZONTAL){const i=this.nextButton.visible?this.nextButton.width:0,s=this.previousButton.visible?this.previousButton.width:0;e=this.windowNode.width+i+s,t=this.windowNode.height}else{const i=this.nextButton.visible?this.nextButton.height:0,s=this.previousButton.visible?this.previousButton.height:0;e=this.windowNode.width,t=this.windowNode.height+i+s}return new ni.Z(e,t)}layout(){super.layout();const e=this.orientation,t=this.alignGroup.getMaxSizeProperty(e.opposite).value+2*this.margin;this.nextButton[e.opposite.preferredSize]=t,this.previousButton[e.opposite.preferredSize]=t,this.nextButton[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.previousButton[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.windowNode[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.previousButton[e.minSide]=this.backgroundNode[e.minSide],this.nextButton[e.maxSide]=this.backgroundNode[e.maxSide],this.windowNode[e.centerCoordinate]=this.backgroundNode[e.centerCoordinate];const i=this.computeClipArea().toBounds();this.windowNode.clipArea=Nt.bn.bounds(i),this.windowNode.localBounds=i;const s=this.getBackgroundDimension();this.carousel.backgroundWidth=s.width,this.carousel.backgroundHeight=s.height;const n=s.toBounds();this.backgroundNode.rectBounds=n,this.foregroundNode.rectBounds=n,this.separatorLayer&&this.updateSeparators()}}Je.register("Carousel",kp);class Dp extends R.NBX{constructor(e,t,i){const s=(0,N.ZP)()({interactive:!1,orientation:"horizontal",dotRadius:3,lineWidth:1,dotSpacing:10,dotTouchAreaDilation:4,dotMouseAreaDilation:4,currentPageFill:"black",currentPageStroke:null,pageFill:"rgb( 200, 200, 200 )",pageStroke:null,tandem:ye.Z.REQUIRED,tandemNameSuffix:"PageControl",visiblePropertyOptions:{phetioFeatured:!0}},i),n=new R.$o8({press:t=>{t.currentTarget instanceof Op&&(e.value=t.currentTarget.pageNumber)},tandem:s.tandem.createTandem("pressListener")}),r={lineWidth:s.lineWidth,mouseArea:0===s.dotMouseAreaDilation?null:Nt.bn.circle(0,0,s.dotRadius+s.dotMouseAreaDilation),touchArea:0===s.dotTouchAreaDilation?null:Nt.bn.circle(0,0,s.dotRadius+s.dotTouchAreaDilation),boundsMethod:"unstroked",cursor:s.interactive?"pointer":null,inputListeners:s.interactive?[n]:[]},o=new R.N52({orientation:s.orientation,spacing:s.dotSpacing});let a=[];o.boundsProperty.link(()=>{o.center=Ys.Z.ZERO});const h=e=>{a.forEach(t=>{t.fill=e===t.pageNumber?s.currentPageFill:s.pageFill,t.stroke=e===t.pageNumber?s.currentPageStroke:s.pageStroke})};e.link(h);const l=t=>{a=_.range(0,t).map(e=>new Op(e,s.dotRadius,r)),o.children=a,h(e.value)};t.link(l),s.children=[o],super(s),this.disposePageControl=()=>{n.dispose(),t.unlink(l),e.unlink(h)}}dispose(){this.disposePageControl(),super.dispose()}}class Op extends R.Cdc{constructor(e,t,i){super(t,i),this.pageNumber=e}}Je.register("PageControl",Dp);class Lp extends R.BET{constructor(e,t,i,s){s=(0,N.ZP)()({carouselOptions:{itemsPerPage:5,orientation:"vertical",buttonOptions:{touchAreaXDilation:8},spacing:24,margin:12,separatorsVisible:!0,fill:Vh.panelFillProperty,stroke:Vh.panelStrokeProperty,tandem:i.createTandem("carousel")}},s);const n=new kp(t,s.carouselOptions);n.mutate({scale:s.carouselScale}),super({spacing:5,children:[new Dp(n.pageNumberProperty,n.numberOfPagesProperty,{orientation:"vertical",pageFill:R.Ilk.WHITE,pageStroke:R.Ilk.BLACK,currentPageStroke:R.Ilk.TRANSPARENT,interactive:!0,dotTouchAreaDilation:4,dotMouseAreaDilation:4,tandem:i.createTandem("pageControl")}),n],tandem:i,visiblePropertyOptions:{phetioFeatured:!0}}),this.carousel=n}reset(){this.carousel.reset()}}it.register("CircuitElementToolbox",Lp);const Rp=new Nt.bn("M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z").makeImmutable();class Np extends Nt.bn{constructor(e,t,i,s,n){if(super(),i!==e||s!==t){const r=Np.getArrowShapePoints(e,t,i,s,[],n);this.moveTo(r[0].x,r[0].y);const o=_.tail(r);_.each(o,e=>this.lineTo(e.x,e.y)),this.close()}}static getArrowShapePoints(e,t,i,s,n,r){const o=(0,N.ZP)()({tailWidth:5,headWidth:10,headHeight:10,fractionalHeadHeight:.5,doubleHead:!1,isHeadDynamic:!1,scaleTailToo:!1},r);if(n||(n=[]),i===e&&s===t)n.length=0;else{const r=new Ys.Z(i-e,s-t),a=r.magnitude;let h=o.headWidth,l=o.headHeight,d=o.tailWidth;if(o.isHeadDynamic){const e=o.fractionalHeadHeight*a;o.headHeight>e&&(l=e,o.scaleTailToo&&(h=o.headWidth*l/o.headHeight,d=o.tailWidth*l/o.headHeight))}else l=Math.min(o.headHeight,o.doubleHead?.35*a:.99*a);let c=0;const u=r.normalized(),p=u.rotated(Math.PI/2),m=function(i,s){const r=u.x*i+p.x*s+e,o=u.y*i+p.y*s+t;n[c]?(n[c].x=r,n[c].y=o):n.push(new Ys.Z(r,o)),c++};o.doubleHead?(m(0,0),m(l,h/2),m(l,d/2)):m(0,d/2),m(a-l,d/2),m(a-l,h/2),m(a,0),m(a-l,-h/2),m(a-l,-d/2),o.doubleHead?(m(l,-d/2),m(l,-h/2)):m(0,-d/2),c1){e.moveToPoint(this.shapePoints[0]);for(let t=1;t{const t=e.startVertexProperty.value.positionProperty.value,i=e.endVertexProperty.value.positionProperty.value;let s=null,n=0;e.currentProperty.value>0&&(n=1),e.currentProperty.value<0&&(n=-1),s=1===n?new Zp(t.x,t.y,i.x,i.y,{fill:"red",stroke:"black",lineWidth:1}):-1===n?new Zp(i.x,i.y,t.x,t.y,{fill:"red",stroke:"black",lineWidth:1}):new Zp(t.x,t.y,i.x,i.y,{fill:"white",stroke:"black",lineWidth:1}),this.addChild(s);const r=i.minus(t).perpendicular.normalized().timesScalar(10),o=new Zp(t.x+r.x,t.y+r.y,i.x+r.x,i.y+r.y,{fill:"green"});this.addChild(o);const a=new R.xvT(e.currentProperty.value.toFixed(4)),h=new Qi(a,{center:s.center,fill:e.currentSenseProperty.value===Jh.FORWARD?"green":e.currentSenseProperty.value===Jh.BACKWARD?"rgba(137, 196, 244, 1)":"white"});this.addChild(h)})}}it.register("CircuitDebugLayer",qp);const Fp=new ni.Z(20,5);class Yp extends R.AeJ{constructor(e){const t=(0,N.ZP)()({size:Fp,fill:"black"},e);super(0,0,t.size.width,t.size.height,t)}}ft.register("MinusNode",Yp);const Hp=Yp;class Gp extends Nt.bn{constructor(e){super();const t=e.width/2-e.height/2,i=e.width/2+e.height/2;this.moveTo(t,0).lineTo(i,0).lineTo(i,t).lineTo(e.width,t).lineTo(e.width,i).lineTo(i,i).lineTo(i,e.width).lineTo(t,e.width).lineTo(t,i).lineTo(0,i).lineTo(0,t).lineTo(t,t).close()}}ft.register("PlusShape",Gp);const Up=new ni.Z(20,5);class zp extends R.y$t{constructor(e){const t=(0,N.ZP)()({size:Up,fill:"black"},e);super(new Gp(t.size),t)}}ft.register("PlusNode",zp);const Wp=new Image,Qp=Z.Z.createLock(Wp);Wp.onload=Qp,Wp.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADICAYAAAAeEIaEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANutJREFUeNrsfc2THNlxX2ZhVqSCu0AzLJsi96t3wZsPaIX/APTefPKOfPBBlIjZEG0zpLWAVUjBMKngYGnRQUkOY+WQ7LAV5gC2uQdfFnvzDYODb47g7M2H/ZilTOsg2xoMANIfnElXdVd1v4/MfPmqqmd6ZqomOrqmu6q6Pt7v/TJ/mS8fwrAMy4qWR7/y5c3y7Ub52qw/eu3Kux/uDnfGXzaGW3DuGv6ofLtVvq6Xr4dlo799CucwLd92ytfY+figfO0NT2gA4UVgnqrxj+qP9k7498f170+Zr++WHcLB8JQGEJ5n9ttxzL7FVyd4DhXjbiub/PHwpAYQnlcATsq39wLTD06KCRPstziPkgX3h6fFL8VwC840ACvf74cCAKtlf8W/v1n//jSx6e7wtAYmPI/m553ytaVtV7LP3oo7gDvGzR8OT20A4XkD4IPyNTkt9inPYSfVAQxMOJij59n/+8QAwJX5gy0AeDCoogMIzwsAN2sGHJ2WCViboFuZuw2xwQGE5wKAVcN/LwOAlT94fwUsfGd4GgMI1wUU45qZTuK3KvbZydzt/gpOpS0AByYcQLiSZacFMNr6X20a/yrUyGnbyxiai74M6mgLFuzQIHMBuNVy975N0enw5AcmXKfl5poDcMhOGZjw3C+bKwSfNQaoLe+vkSk6LAMT9g6SChzjNQZg76ZovVwZnv4AwnVZbqw5AA9WlKo2GR79AMJza4r2CMCZP7ii6+5ybteGZjOAsC+wjPs2RXsGYLU8XFEnMepwiNHQegYQri0LwjzW2KeptzuYogMIB3/QzjA7KwD2/gque3rK+w8gHJaFKjrpGYBbfZ/niuKD13q43sEkHUC4EhY8aNkgt1YBQFidKNMHkw0m7QDCzr34Vh+N3qmGtorlYAXXXoFnNIBwAOFpL5t9NMS6Qa8y6XsVTNiXPzeEKQYQdlq2e2LTHVitXL+K0Qo31gzMAwgvoClamaHjnoA8OWPXPu7xnMf18YaFWYYE7vYsuJ/RmG+dwLn2bY72PVqkMuvfMVgKb62yStzAhOeLBT89KXPWuBz0eO2SGNVleV35rQc1SCuz9cKV0BhAuHrwjM/otfftv04Fk/S9wOydXjTTdQAh3zvfOqPg6ePapys0n7eZ+zzlADuA8GIDcGRkQav5NzlD197Ma7GqZav+jdR9vjaA8GIvt4ymmFU8GJ0RAE4hr65p2+WBoYbqhQruD+qo3xArE/TmBbzmipG2TugnRwa2HUB4gZetPpmgMb3W2PS8s6b+14VK+B7MUX+5eREakzOl2nRdH8Rf*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*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*tpWoN+w+++0f34c1XVIg3AsC9EGjn88Tfvgbr6SmKztQFStIKaXCgwDF9FGkb9UMNQfxwwRlQ11SabZbryyFwSxlPsNw5l1D6QrOJ2s1VElVldPfIRjYMOmLq0zd+6iIR7/y5Z1qbsNTMUeRNy827WENIXZjUTdZ/4D4QLjVRBXMUuzUECGZs4mpabUt4wcVfxK1SgDZubBk64BAsSggJdKkkt2N2UmxQLP/uW/+eHcFBFYB8M5JgHBfBJJvh9/Q5oLT2E21+YGUbBNI5GYaWLCVGdptrCFfWh+YIlGZsUKJIUMwGuuKqkAEgxCT2RnGz5Vk6wYE1wOYGGHR/5wS9aD2CoTTPibQTYHw0yg0ASx7jRMzo06TaWtmQUYuLY8moUYzQ8k20iIHgGGgPFkxmwNT6ATqfqU2FVuyPk5qdIjoOmggNbIhKG0CEuq57L58ugIWdCMC213n7rSZowoLOjdz+/Fvv7wlHOFGWslMgxSl8XgWFtTAjZrJ3JUBNbOTA55ja+Il4bUxf4dL4A2RZ4P/sZlqT7XTShMa7wkYhRhI1OLRwhWqhUWrmFfCzRSrWHFnlSD0hBnO3wp6uJ3Hv/vS7cffeGlmmj759gujJ9svVFMSj9UbpTV+1S+w+BAU99ZCjyyXv+9zVieOeZAB3UYNsuadeXGgbBQaZXZeTI6mAGNVtERHFpieIsiQDFYPMZ2wKXwxXQEIQw2kMks3VwXCA7WB8/GfbUT6qyffevFBed8+KT/dMpmiXNA+xXYcgKSS81oDMeWE5sbQLNNqow8mEWQB2CSQLr5zCrNqKXWFkdGBDPNzKKlowIQswCDEgKHTBaXA03x9/PQPv7TVmz/4q1c3g3num2WnbWFsozkagAhInt9teQOm8yFMFiAouaQpQUZ7YJBgQZNZmgpFZIw19Hw8BnwzkDlA81hQA10IYvcYLjO2GDMoWQrqPRJMR0MMEBl/0juWlkEDouh35+kffGnUCwoLkAYtVMffXo05qpiHqKlcqIc1EBNMpU6kQhmKaVpFRUWoSVYNM5Xpa3wzx+x0AeUxW/h5yIDu/xsyc3qfNcwIwM3fmPbnMq0BSPiGScsGbOKbXWeoAPLg6fe6AfFw6+p4btmJm9xqEztUQbiYt1uKv2UJN+l1FAa2ohmQtliiyYdpMYxHzdYBFADCgc7oE0rAAwGMrokKHYYqaQkOwJSd5HxDMCRqWN7BprjP6h1RCcR/+nx7IJaulteR8MtO30xo8K8oAEDKZDV8nhJlIBFnBOGBSyzYJts/Z1q1BfsVMkCSPuFG7BN6jBqasi74LjnCT2iegl5ZIOUfgjVbJiMGaOlcIdMkhRqIFSP+/vPZbHX4tVerSvJbYiUEJ4hfsuFWzyCkfd0fzBFuUlktidgggFJv1Jh9IfojArDA0LjUqmMSKBQwRj4h5xu6fiTHhK5iyp0DyiMkICd5WxsVY/ThMt+z2k+8zQyIT77z/K1MFtwBCFhaXu7kiDQWYWaf*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";const Xp=Wp;class Kp extends R.NBX{constructor(e,t,i){i=(0,N.ZP)()({useHitTestForSensors:!1},i),t&&(i=(0,N.ZP)()({tagName:"div",focusable:!0,focusHighlight:"invisible",phetioDynamicElement:!0,phetioState:!1,phetioVisiblePropertyInstrumented:!1,phetioInputEnabledPropertyInstrumented:!0,useHitTestForSensors:!1},i)),super(i),this.useHitTestForSensors=!!i.useHitTestForSensors,this.circuit=t,this.circuitElement=e,this.addLinkedElement(e,{tandem:i.tandem.createTandem("circuitElement")}),this.updateOpacityOnInteractiveChange();const s=e=>this.dragListener.down(e);e.startDragEmitter.addListener(s),this.dirty=!0,this.disposeEmitter.addListener(()=>e.startDragEmitter.removeListener(s))}markAsDirty(){this.dirty=!0}updateOpacityOnInteractiveChange(){const e=e=>{this.opacity=e?1:.5};this.circuitElement.interactiveProperty.link(e),this.disposeEmitter.addListener(()=>this.circuitElement.interactiveProperty.unlink(e))}containsSensorPoint(e){const t=this.globalToParentPoint(e);return this.step(),this.useHitTestForSensors?!!this.hitTest(t,!0,!1):this.containsPoint(t)}step(){this.dirty&&(this.updateRender(),this.dirty=!1)}endDrag(e,t,i,s,n,r,o){const a=this.circuitElement;a.interactiveProperty.get()&&(i.canNodeDropInToolbox(this)?this.circuit.disposeCircuitElement(a):(t.forEach(e=>{i.model.circuit.vertexGroup.includes(e)&&s.endDrag(e,o)}),this.selectCircuitElementNodeWhenNear(s,n,r)))}selectCircuitElementNodeWhenNear(e,t,i){if(!this.circuitElement.isDisposed&&i&&i.distance(t)e());if(_.every(s,e=>this.circuitNode.canDragVertex(e))){if(super.press(e,t,i))return s.forEach(e=>this.circuitNode.setVerticesDragging(e)),!0}return!1}}it.register("CircuitNodeDragListener",Jp);class jp extends R.AeJ{constructor(e){super(0,0,0,0,8,8,{stroke:Vh.highlightStrokeProperty,lineWidth:Eh.HIGHLIGHT_LINE_WIDTH,pickable:!1}),this.recomputeBounds(e)}recomputeBounds(e){this.setRectBounds(e.getHighlightBounds())}}it.register("FixedCircuitElementHighlightNode",jp);const _p=new wt.Z,$p=new wt.Z,em=new Gh.Z(1);class tm extends Kp{constructor(e,t,i,s,n,r,o,a){const h=t&&t.circuit,l=new R.NBX,d=(0,N.ZP)()({cursor:"pointer",children:[l],tandem:o,pickable:!0,isIcon:!1,showHighlight:!0},a);super(i,h,d),this.lifelikeNode=n,this.schematicNode=r,this.isIcon=d.isIcon,this.circuitNode=t,this.contentNode=l,this.fireNode=null,this.viewTypeProperty=s,this.viewPropertyListener=this.setViewType.bind(this),s.link(this.viewPropertyListener),!d.isIcon&&d.showHighlight?(this.highlightNode=new jp(this),this.viewPropertyListener(s.value)):this.highlightNode=null,this.markDirtyListener=this.markAsDirty.bind(this),i.vertexMovedEmitter.addListener(this.markDirtyListener),this.moveToFrontListener=this.moveFixedCircuitElementNodeToFront.bind(this),i.connectedEmitter.addListener(this.moveToFrontListener),i.vertexSelectedEmitter.addListener(this.moveToFrontListener),this.pickableListener=this.setPickable.bind(this),d.pickable&&i.interactiveProperty.link(this.pickableListener),this.fixedCircuitElementNodePickable=d.pickable||null;let c=null,u=null,p=!1;!d.isIcon&&t?(this.dragListener=new Jp(t,[()=>i.endVertexProperty.get()],{start:e=>{this.moveToFront(),e.pointer&&e.pointer.point&&(c=e.pointer.point.copy(),u=e.pointer.point.copy(),i.interactiveProperty.get()&&t.startDragVertex(e.pointer.point,i.endVertexProperty.get(),i),p=!1)},drag:e=>{e.pointer.point&&(u=e.pointer.point.copy(),i.interactiveProperty.get()&&t.dragVertex(e.pointer.point,i.endVertexProperty.get(),!1),p=!0)},end:()=>this.endDrag(this.contentNode,[i.endVertexProperty.get()],e,t,c,u,p),tandem:o.createTandem("dragListener")}),this.contentNode.addInputListener(this.dragListener),d.showHighlight?(this.updateHighlightVisibility=this.setSelectedCircuitElement.bind(this),t.circuit.selectionProperty.link(this.updateHighlightVisibility)):this.updateHighlightVisibility=null,i.isFlammable?(this.fireNode=new R.Eep(Xp,{pickable:!1,imageOpacity:.95}),this.fireNode.mutate({scale:this.contentNode.width/this.fireNode.width}),this.addChild(this.fireNode),this.updateFireMultilink=e?Ze.Z.multilink([i.currentProperty,i instanceof hd?i.resistanceProperty:em,e.model.isValueDepictionEnabledProperty],this.updateFireVisible.bind(this)):null):(this.fireNode=null,this.updateFireMultilink=null)):(this.dragListener=null,this.updateFireMultilink=null,this.updateHighlightVisibility=null)}setViewType(e){this.contentNode.children=[e===kl.LIFELIKE?this.lifelikeNode:this.schematicNode],this.circuitElement.isSizeChangedOnViewChange&&this.highlightNode&&this.highlightNode.recomputeBounds(this)}updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get();if(e.equals(t))return;const i=Ys.Z.getAngleBetweenVectors(e,t),s=Ys.Z.getDistanceBetweenVectors(e,t);_p.setToTranslationRotationPoint(e,i),this.contentNode.setMatrix(_p),this.highlightNode&&this.circuitNode.circuit.selectionProperty.get()===this.circuitElement&&this.highlightNode.setMatrix(_p);const n=s/Xp.width*.8,r=s*((1-.8)/2)/n,o=-Xp.height;_p.multiplyMatrix($p.setToScale(n)).multiplyMatrix($p.setToTranslation(r,o)),this.fireNode&&this.fireNode.setMatrix(_p)}moveFixedCircuitElementNodeToFront(){this.circuitElement.interactiveProperty.get()&&(this.moveToFront(),this.circuitElement.moveToFrontEmitter.emit(),this.circuitElement.startVertexProperty.get().relayerEmitter.emit(),this.circuitElement.endVertexProperty.get().relayerEmitter.emit())}setSelectedCircuitElement(e){if(this.highlightNode){const t=e===this.circuitElement;bd.setInSceneGraph(t,this.circuitNode.highlightLayer,this.highlightNode),this.markAsDirty()}}dispose(){this.dragListener&&this.dragListener.interrupt(),this.dragListener&&this.dragListener.dispose(),this.circuitElement.vertexMovedEmitter.removeListener(this.markDirtyListener),this.updateHighlightVisibility&&this.circuitNode.circuit.selectionProperty.unlink(this.updateHighlightVisibility),this.circuitElement.connectedEmitter.removeListener(this.moveToFrontListener),this.circuitElement.vertexSelectedEmitter.removeListener(this.moveToFrontListener),this.fixedCircuitElementNodePickable&&this.circuitElement.interactiveProperty.unlink(this.pickableListener),this.circuitNode&&this.highlightNode&&bd.setInSceneGraph(!1,this.circuitNode.highlightLayer,this.highlightNode),this.viewTypeProperty.unlink(this.viewPropertyListener),!this.isIcon&&this.updateFireMultilink&&Ze.Z.unmultilink(this.updateFireMultilink),this.contentNode.dispose(),super.dispose()}updateFireVisible(e,t,i){this.fireNode.visible=((e,t)=>Math.abs(e)>=15&&t)(e,i)&&t>=1e-8}getHighlightBounds(){return this.contentNode.localBounds.dilated(10)}}_defineProperty(tm,"webglSpriteNodes",[new R.Eep(Xp)]),it.register("FixedCircuitElementNode",tm);const im=new Nt.bn,sm=e=>9*Math.sin(e);for(let i=0;i<2*Math.PI;i+=Math.PI/2/100){const e=5.5*i;0===i?im.moveTo(e,sm(i)):im.lineTo(e,sm(i))}const nm=new R.y$t(im,{stroke:"black",lineWidth:4,centerX:0}),rm=e=>new R.NBX({x:Eh.AC_VOLTAGE_LENGTH/2,children:[new R.Cdc(27,{stroke:"black",fill:e?null:"white",lineWidth:e?4:2,centerX:0}),nm,...e?[]:[new zp({size:new ni.Z(10,2.5),centerX:0,centerY:-17.28}),new Hp({size:new ni.Z(10,2.5),centerX:0,centerY:17.28})]]}),om=rm(!0).rasterized({wrap:!1,resolution:2}),am=rm(!1).rasterized({wrap:!1,resolution:2});om.mouseArea=Nt.bn.circle(Eh.AC_VOLTAGE_LENGTH-6,Eh.AC_VOLTAGE_LENGTH-6,54),om.touchArea=om.mouseArea;class hm extends tm{constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({useHitTestForSensors:!0},r);am.centerY=0,super(e,t,i,s,am,om,n,o),this.acSource=i}}_defineProperty(hm,"webglSpriteNodes",[om,am]),it.register("ACVoltageNode",hm);const lm=new Image,dm=Z.Z.createLock(lm);lm.onload=dm,lm.src="data:image/png;base64,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";const cm=lm,um=new Image,pm=Z.Z.createLock(um);um.onload=pm,um.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJIAAAAuCAYAAADDc0CAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABFRJREFUeNrsnM1uI0UUhU93V7fdbv8MkyiICJhECMgSsUJiwZZXQGKBkEbZsWM7u3kPxAKJNS/AI7BnAauImbGx3el2/1YVtzr2dOwsZ6aGiu6xrmP1qlz3q1P3droMsFivQd727+8UX/F02NUv35/gmy/GKErl3NiF7z2Nf/jriVToBu9zOlmvQwwSi0Fi/Y+2uq5Q8jyeCcvSWpuJ78O56np/zP7l5eV3FxcXn3Fq32a/42rsO9JZkiQzdiZ2pFdxJGHgMeH7PoNkUUopeDTn9Ha4uB2prg9ACoLgBiIGyX6f4wXbuAeOFIYhhBAIGCSramAWL0HUhYPz7u/qJH0DUhzHiKIIxpkYJKtV0hYkKlN95sh*txxpOp1iOIwJJMEg2c5FENJbSEC5B5J3CNLR0RHG46Tb3hgkyyWSIJBEROEWSL6n8fOfH3z7+PHnX+odSKenp5g9eABTKzFIFmXMKBgAXTjmSARS2g4eETCPdsSI8/NzHJMrmTqJQbLI0cCDHw3pQwxI90AKwkHHDPZAOj5GNGCQbCoikIKQQBIj2uKkY52/xngywQzjHqQ0TSGl7ApuBsme4iogR0qIKEqGko6NXuPk5D20VBK9BOnFi+eo6xqjmEGyqaQOEAwNSBPKi3QMI4WPPvkU74anPUjz+QJN0yAejRgkixq1AmJIEA2m8OCYI2mF9z88g5qc9SCtViva2hTGyZhBsqhKVhDxDBg+pKKjdatGIk969nyObK57kLLsuru5NJlOOLsWVWuBMHmHrOkIXuAYSOQ3z/5ZYlFkPUhf*ckT/Z5tMppxdi2oRQSQPnQTJ3NROr9eYr5oeJNOxeZ6/d0+A9eY1iBT8MDI3lKhrC9waPFlS3SxgTOglSKbQrqoSxWbD2bWozaaELFMqlpYUrWMg0ZCLnEAqe5BM61+WFV1kkOyCVEFVBFKdULgHUrFJkWV1D1JVVZ0jlbfoYr15FUUNWVOx2qwpHGv/fSDPU6TpLZDKskRlomKQbKqsaqg6J4gy50AyTwfn1ylWq3IfpJJcqaZgWWz/ywaqoXJCEkita47k4TpdY7nc7Lf/FdVITd1wdm2CRPOtWlrRbeEkSOl6iX8XOfQeSLStme6NZRGkxjgS7QItrepWOQfS9XqFxSLtQdpQ228K7rZlkGyqbVtoSSB14RZIHr2yzNRIqx6kPN+BJDm7NkGiAltLWryqNofcHGv/PWitukOedxxJypazaxMkmm+t3ATJ7MS//vjxU/H1b0+k0mrrSHnXsSnJjmRTZr61osXbhYPHkQ4PSOZ5Bkk2q1z8Mi6DpPTNk5G67Z7vcU76AKQsy82ZTwT8LJJlkEyNIW+ejrwPIJkbkpEQ8M0ZK5Y9kMyvkXSh7gdI3TVsf2aFZS8PpuPZQXRPQPqbLq3pi804vXZB2i5hAO4vYv/q6uon4Qd/cGrfCk1ux52tjbc1dqRXdSROKYtBYjFILBaLdUf/CTAAdD5FTJbHDboAAAAASUVORK5CYII=";const mm=um;let gm=(new Nt.bn).moveTo(0,0).lineTo(77.5,0).moveTo(77.5,25).lineTo(77.5,-25).moveTo(110.5,0).lineTo(188,0).moveTo(110.5,52).lineTo(110.5,-52);const ym=gm.bounds.width,Am=Eh.BATTERY_LENGTH/ym;gm=gm.transformed(wt.Z.scale(Am,Am));const fm=new R.y$t(gm,{stroke:R.Ilk.BLACK,lineWidth:Eh.SCHEMATIC_LINE_WIDTH}).rasterized({wrap:!1});fm.centerY=0,fm.mouseArea=fm.bounds.shiftedY(fm.height/2),fm.touchArea=fm.bounds.shiftedY(fm.height/2);class Pm extends tm{constructor(e,t,i,s,n,r){r=(0,N.JA)({useHitTestForSensors:!0},r);const o=new R.Eep("normal"===i.batteryType?mm:cm);o.mutate({scale:i.distanceBetweenVertices/o.width}),o.centerY=0,super(e,t,i,s,o,fm,n,r),this.battery=i}}_defineProperty(Pm,"webglSpriteNodes",[new R.Eep(mm),new R.Eep(cm)]),it.register("BatteryNode",Pm);var bm=i(8803),Em=i(8002);class vm{constructor(e,t,i,s,n,r){this.minX=e,this.minY=t,this.minZ=i,this.maxX=s,this.maxY=n,this.maxZ=r}getWidth(){return this.maxX-this.minX}get width(){return this.getWidth()}getHeight(){return this.maxY-this.minY}get height(){return this.getHeight()}getDepth(){return this.maxZ-this.minZ}get depth(){return this.getDepth()}getX(){return this.minX}get x(){return this.getX()}getY(){return this.minY}get y(){return this.getY()}getZ(){return this.minZ}get z(){return this.getZ()}getMinX(){return this.minX}getMinY(){return this.minY}getMinZ(){return this.minZ}getMaxX(){return this.maxX}getMaxY(){return this.maxY}getMaxZ(){return this.maxZ}getLeft(){return this.minX}get left(){return this.minX}getTop(){return this.minY}get top(){return this.minY}getBack(){return this.minZ}get back(){return this.minZ}getRight(){return this.maxX}get right(){return this.maxX}getBottom(){return this.maxY}get bottom(){return this.maxY}getFront(){return this.maxZ}get front(){return this.maxZ}getCenterX(){return(this.maxX+this.minX)/2}get centerX(){return this.getCenterX()}getCenterY(){return(this.maxY+this.minY)/2}get centerY(){return this.getCenterY()}getCenterZ(){return(this.maxZ+this.minZ)/2}get centerZ(){return this.getCenterZ()}getCenter(){return new Em.Z(this.getCenterX(),this.getCenterY(),this.getCenterZ())}get center(){return this.getCenter()}isEmpty(){return this.getWidth()<0||this.getHeight()<0||this.getDepth()<0}isFinite(){return isFinite(this.minX)&&isFinite(this.minY)&&isFinite(this.minZ)&&isFinite(this.maxX)&&isFinite(this.maxY)&&isFinite(this.maxZ)}hasNonzeroArea(){return this.getWidth()>0&&this.getHeight()>0&&this.getDepth()>0}isValid(){return!this.isEmpty()&&this.isFinite()}containsCoordinates(e,t,i){return this.minX<=e&&e<=this.maxX&&this.minY<=t&&t<=this.maxY&&this.minZ<=i&&i<=this.maxZ}containsPoint(e){return this.containsCoordinates(e.x,e.y,e.z)}containsBounds(e){return this.minX<=e.minX&&this.maxX>=e.maxX&&this.minY<=e.minY&&this.maxY>=e.maxY&&this.minZ<=e.minZ&&this.maxZ>=e.maxZ}intersectsBounds(e){return!this.intersection(e).isEmpty()}toString(){return`[x:(${this.minX},${this.maxX}),y:(${this.minY},${this.maxY}),z:(${this.minZ},${this.maxZ})]`}equals(e){return this.minX===e.minX&&this.minY===e.minY&&this.minZ===e.minZ&&this.maxX===e.maxX&&this.maxY===e.maxY&&this.maxZ===e.maxZ}equalsEpsilon(e,t){t=void 0!==t?t:0;const i=this.isFinite(),s=e.isFinite();return i&&s?Math.abs(this.minX-e.minX)({minX:e.minX,minY:e.minY,minZ:e.minZ,maxX:e.maxX,maxY:e.maxY,maxZ:e.maxZ}),fromStateObject:e=>new vm(e.minX,e.minY,e.minZ,e.maxX,e.maxY,e.maxZ)});const wm=vm;class Vm extends Sn.Z{constructor(e,t,i){super(e,t),this._defaultValue=i}getDefaultValue(){return this._defaultValue}get defaultValue(){return this.getDefaultValue()}setMin(e){super.setMin(e)}setMax(e){super.setMax(e)}setMinMax(e,t){return super.setMinMax(e,t)}toString(){return`[RangeWithValue (min:${this.min} max:${this.max} defaultValue:${this._defaultValue})]`}equals(e){return this.constructor===e.constructor&&this._defaultValue===e.defaultValue&&super.equals(e)}}In.Z.register("RangeWithValue",Vm);const Sm=Vm;var Tm=i(5076);const Cm={PLATE_WIDTH_RANGE:new Sm(.01,.02,Math.sqrt(2e-4)),PLATE_HEIGHT:5e-4,POLARITY:Tm.Z.byKeys(["POSITIVE","NEGATIVE"]),PLATE_SEPARATION_RANGE:new Sm(.002,.01,.006)};ft.register("CapacitorConstants",Cm);const Im=Cm,xm=new ni.Z(6,7),km=Tm.Z.byKeys(["UP","DOWN"]),Bm=(e,t,i,s)=>{s.moveTo(e.x,e.y-t/2-3),s.lineTo(e.x,e.y+t/2-3);const n=xm.width,r=xm.height,o=i===km.UP?e.x-1/4:e.x+1/4;i===km.UP?(s.moveTo(o,e.y-r/2),s.lineTo(o+n/2,e.y+r/2),s.lineTo(o-n/2,e.y+r/2)):i===km.DOWN&&(s.moveTo(o,e.y+r/2),s.lineTo(o-n/2,e.y-r/2),s.lineTo(o+n/2,e.y-r/2))};class Mm extends R.mxV{constructor(e,t,i,s){super({canvasBounds:s});const n=this;this.capacitor=e,this.modelViewTransform=t,this.maxEffectiveEField=i,Ze.Z.multilink([e.plateSizeProperty,e.plateSeparationProperty,e.plateVoltageProperty],()=>{n.isVisible()&&n.invalidatePaint()}),this.visibleProperty.link(e=>e&&this.invalidatePaint())}paintCanvas(e){const t=this.capacitor.getEffectiveEField(),i=this.getLineSpacing(t);if(i>0){e.beginPath();const s=this.capacitor.plateSizeProperty.value.width,n=s,r=this.capacitor.plateSeparationProperty.value,o=this.modelViewTransform.modelToViewDeltaXYZ(0,r,0).y,a=t>=0?km.DOWN:km.UP;let h=i/2;for(;h<=s/2;){let t=i/2;for(;t<=n/2;){const s=0,n=this.modelViewTransform.modelToViewXYZ(h,s,t),r=this.modelViewTransform.modelToViewXYZ(-h,s,t),l=this.modelViewTransform.modelToViewXYZ(h,s,-t),d=this.modelViewTransform.modelToViewXYZ(-h,s,-t);Bm(n,o,a,e),Bm(r,o,a,e),Bm(l,o,a,e),Bm(d,o,a,e),t+=i}h+=i}e.strokeStyle="black",e.fillStyle="black",e.lineWidth=1,e.fill(),e.stroke()}}getLineSpacing(e){return 0===e?0:.0258/Math.sqrt(Math.abs(e))}}ft.register("EFieldNode",Mm);const Dm=Mm;var Om=i(369);const Lm=new Ys.Z(0,0),Rm=new Em.Z(0,0,0);class Nm{constructor(e){e=(0,us.Z)({scale:12e3,pitch:30*Math.PI/180,yaw:-45*Math.PI/180},e),this.modelToViewTransform2D=new Om.Z(wt.Z.scaling(e.scale)),this.pitch=e.pitch,this.yaw=e.yaw}modelToViewPosition(e){return Lm.setPolar(e.z*Math.sin(this.pitch),this.yaw),Lm.addXY(e.x,e.y),this.modelToViewTransform2D.transformPosition2(Lm)}modelToViewXYZ(e,t,i){return this.modelToViewPosition(Rm.setXYZ(e,t,i))}modelToViewDelta(e){const t=this.modelToViewPosition(Rm.setXYZ(0,0,0));return this.modelToViewPosition(e).minus(t)}modelToViewDeltaXYZ(e,t,i){return this.modelToViewDelta(new Em.Z(e,t,i))}modelToViewShape(e){return this.modelToViewTransform2D.transformShape(e)}modelToViewBounds(e){return this.modelToViewTransform2D.transformBounds2(e)}viewToModelPosition(e){return this.modelToViewTransform2D.inversePosition2(e).toVector3()}viewToModelXY(e,t){return this.viewToModelPosition(Lm.setXY(e,t))}viewToModelDelta(e){const t=this.viewToModelPosition(Lm.setXY(0,0));return this.viewToModelPosition(e).minus(t)}viewToModelDeltaXY(e,t){return this.viewToModelDelta(new Ys.Z(e,t))}viewToModelShape(e){return this.modelToViewTransform2D.inverseShape(e)}viewToModelBounds(e){return this.modelToViewTransform2D.inverseBounds2(e)}}ft.register("YawPitchModelViewTransform3",Nm);const Zm=Nm;class qm{constructor(e){this.modelViewTransform=e}createTopFace(e,t,i,s,n,r){const o=this.modelViewTransform.modelToViewXYZ(e-s/2,t,i+r/2),a=this.modelViewTransform.modelToViewXYZ(e+s/2,t,i+r/2),h=this.modelViewTransform.modelToViewXYZ(e+s/2,t,i-r/2),l=this.modelViewTransform.modelToViewXYZ(e-s/2,t,i-r/2);return this.createFace(o,a,h,l)}createTopFaceBounds3(e){return this.createTopFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createFrontFace(e,t,i,s,n,r){const o=this.modelViewTransform.modelToViewXYZ(e-s/2,t,i-r/2),a=this.modelViewTransform.modelToViewXYZ(e+s/2,t,i-r/2),h=this.modelViewTransform.modelToViewXYZ(e+s/2,t+n,i-r/2),l=this.modelViewTransform.modelToViewXYZ(e-s/2,t+n,i-r/2);return this.createFace(o,a,h,l)}createFrontFaceBounds3(e){return this.createFrontFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createRightSideFace(e,t,i,s,n,r){const o=this.modelViewTransform.modelToViewXYZ(e+s/2,t,i-r/2),a=this.modelViewTransform.modelToViewXYZ(e+s/2,t,i+r/2),h=this.modelViewTransform.modelToViewXYZ(e+s/2,t+n,i+r/2),l=this.modelViewTransform.modelToViewXYZ(e+s/2,t+n,i-r/2);return this.createFace(o,a,h,l)}createRightSideFaceBounds3(e){return this.createRightSideFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createBoxShape(e,t,i,s,n,r){const o=this.createTopFace(e,t,i,s,n,r),a=this.createFrontFace(e,t,i,s,n,r),h=this.createRightSideFace(e,t,i,s,n,r);return Nt.bn.union([o,a,h])}createFace(e,t,i,s){return(new Nt.bn).moveToPoint(e).lineToPoint(t).lineToPoint(i).lineToPoint(s).close()}}ft.register("BoxShapeCreator",qm);const Fm=qm,Ym={lineWidth:1,stroke:"black"};class Hm extends R.NBX{constructor(e,t,i,s){super(),this.shapeCreator=new Fm(e),this.topNode=new R.y$t(null,(0,us.Z)({fill:t},Ym)),this.frontNode=new R.y$t(null,(0,us.Z)({fill:t.darkerColor()},Ym)),this.rightSideNode=new R.y$t(null,(0,us.Z)({fill:t.darkerColor().darkerColor()},Ym)),this.size=i,this.updateShapes(),this.addChild(this.topNode),this.addChild(this.frontNode),this.addChild(this.rightSideNode),s=(0,us.Z)({pickable:!0},s),this.mutate(s)}updateShapes(){this.topNode.shape=this.shapeCreator.createTopFaceBounds3(this.size),this.frontNode.shape=this.shapeCreator.createFrontFaceBounds3(this.size),this.rightSideNode.shape=this.shapeCreator.createRightSideFaceBounds3(this.size)}setBoxSize(e){e.equals(this.size)||(this.size=e,this.updateShapes())}}ft.register("BoxNode",Hm);const Gm=Hm,Um=Pi.RED_COLORBLIND.toCSS(),zm=new Sn.Z(1,625),Wm=new ni.Z(7,2);class Qm extends R.mxV{constructor(e,t,i){i=(0,us.Z)({polarity:Im.POLARITY.POSITIVE,maxPlateCharge:1/0,opacity:1,orientation:Cn.Z.VERTICAL,canvasBounds:null},i),(0,ms.Z)(i.orientation,{validValues:Cn.Z.enumeration.values}),super({canvasBounds:i.canvasBounds});const s=this;this.capacitor=e,this.orientation=i.orientation,this.modelViewTransform=t,this.polarity=i.polarity,this.maxPlateCharge=i.maxPlateCharge,this.opacity=i.opacity,this.parentNode=new R.NBX,this.addChild(this.parentNode),Ze.Z.multilink([e.plateSizeProperty,e.plateChargeProperty],()=>s.isVisible()&&s.invalidatePaint()),this.visibleProperty.link(e=>e&&this.invalidatePaint())}getGridSize(e,t,i){let s=0,n=0;if(e>0){const r=Math.sqrt(e/t/i);s=Ve.Z.roundSymmetric(t*r);const o=Ve.Z.roundSymmetric(i*r),a=Ve.Z.roundSymmetric(e/s);if(o!==a){n=Math.abs(e-o*s)=0&&this.polarity===Im.POLARITY.POSITIVE||this.getPlateCharge()<0&&this.polarity===Im.POLARITY.NEGATIVE}paintCanvas(e){const t=this.getPlateCharge(),i=this.getNumberOfCharges(t,this.maxPlateCharge);if(i>0){const t=this.modelViewTransform.viewToModelDeltaXY(Wm.width,0).x,s=this.getContactWidth(),n=this.capacitor.plateSizeProperty.value.depth-2*t,r=this.getGridSize(i,s,n),o=r.height,a=r.width,h=s/a,l=n/o,d=h/2,c=l/2;for(let u=0;u0&&s{const i=Wm.width,s=Wm.height;t.fillStyle=Um,t.fillRect(e.x-i/2,e.y-s/2,i,s),t.fillRect(e.x-s/2,e.y-i/2,s,i)},Km=(e,t,i)=>{const s=Wm.width,n=Wm.height;t.fillStyle="blue",i===Cn.Z.VERTICAL?t.fillRect(e.x-s/2,e.y,s,n):t.fillRect(e.x-n/2,e.y-2.5,n,s)};ft.register("PlateChargeNode",Qm);const Jm=Qm,jm=new R.Ilk(245,245,245);class _m extends Gm{constructor(e,t,i,s,n){let r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];super(t,jm,e.plateSizeProperty.value),this.modelViewTransform=t;const o=this.getMaxBoxNodeBounds();this.plateChargeNode=new Jm(e,t,{polarity:i,maxPlateCharge:s,canvasBounds:o,orientation:n}),r&&this.addChild(this.plateChargeNode)}setChargeVisible(e){this.plateChargeNode.visible=e}getMaxBoxNodeBounds(){return new Gm(this.modelViewTransform,jm,new wm(0,0,0,Im.PLATE_WIDTH_RANGE.max,Im.PLATE_HEIGHT,Im.PLATE_WIDTH_RANGE.max)).bounds}}ft.register("PlateNode",_m);const $m=_m;class eg extends R.NBX{constructor(e,t,i,s,n){n=(0,us.Z)({orientation:Cn.Z.VERTICAL,includeChargeNode:!0},n),super(),(0,ms.Z)(n.orientation,{validValues:Cn.Z.enumeration.values}),this.capacitor=e.capacitor,this.modelViewTransform=t,this.topPlateNode=new $m(this.capacitor,t,Im.POLARITY.POSITIVE,e.maxPlateCharge,n.orientation,n.includeChargeNode),this.bottomPlateNode=new $m(this.capacitor,t,Im.POLARITY.NEGATIVE,e.maxPlateCharge,n.orientation,n.includeChargeNode);const r=new Dm(this.capacitor,t,e.maxEffectiveEField,this.getPlatesBounds());this.addChild(this.bottomPlateNode),this.addChild(r),this.addChild(this.topPlateNode);const o=Ze.Z.multilink([this.capacitor.plateSizeProperty,this.capacitor.plateSeparationProperty],()=>this.updateGeometry()),a=e=>{this.topPlateNode.setChargeVisible(e),this.bottomPlateNode.setChargeVisible(e)};i.link(a);const h=e=>r.setVisible(e);s.link(h),this.mutate(n),this.disposeCapacitorNode=()=>{o.dispose(),i.unlink(a),s.unlink(h)}}dispose(){this.disposeCapacitorNode(),super.dispose()}frontSideContainsSensorPoint(e){const t=this.topPlateNode.globalToParentPoint(e);return this.topPlateNode.containsPoint(t)}backSideContainsSensorPoint(e){const t=this.bottomPlateNode.globalToParentPoint(e);return this.bottomPlateNode.containsPoint(t)}getTopPlateClipShapeToGlobal(){const e=this.topPlateNode.topNode;return Nt.bn.rect(e.center.x-100,e.center.y-300,200,300).transformed(e.getLocalToGlobalMatrix())}getBottomPlateClipShapeToGlobal(){const e=this.bottomPlateNode.frontNode;return Nt.bn.rect(e.bounds.center.x-100,e.bounds.bottom,200,300).transformed(e.getLocalToGlobalMatrix())}updateGeometry(){this.topPlateNode.setBoxSize(this.capacitor.plateSizeProperty.value),this.bottomPlateNode.setBoxSize(this.capacitor.plateSizeProperty.value);const e=-this.capacitor.plateSeparationProperty.value/2-this.capacitor.plateSizeProperty.value.height;this.topPlateNode.center=this.modelViewTransform.modelToViewDeltaXYZ(0,e,0);const t=this.capacitor.plateSeparationProperty.value/2;this.bottomPlateNode.center=this.modelViewTransform.modelToViewDeltaXYZ(0,t,0)}getPlatesBounds(){return new vt.Z(this.topPlateNode.left,this.topPlateNode.top,this.bottomPlateNode.right,this.bottomPlateNode.bottom)}}ft.register("CapacitorNode",eg);const tg=eg,ig=new Image,sg=Z.Z.createLock(ig);ig.onload=sg,ig.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHwAAAAUCAYAAABPuVmJAAACFklEQVRoQ+2ZP2gTYRjGn+fOzeHSycXJwaHLFRy6iE1w6KLGCEVKUVBw8A9eFcShShJFUAo2ttAuUkVFB6Ek6KCDNQEXBSEuxUkQ3By8bCLmHlEIWJPedbPf3XfLO9wN976/73u+5/1ewj6ZqgAzla1NFonAH47v9btgEVAB4AihHEhAgo3/vw6KFMJBG9JrF2wce/nmQ9y6jgXeOHogoMuaJJCEjVu7DpEUOkT50OPn8xtB3xB468xUnWTRbmQDhQyo71t8VBoEfSDwtesXAjmsQcAf0bfRuDqQmh6embvzL/Q+4N+ezfvqum3rb0yvgEK6UX7o4Pl1Z3of8K+NpYqoMkEIgo3m1iFSVN1RPFv5e+n2Af/44FbTAcasihun4oNO39bu45fzscDfLcyEEjzrylPQlUQKR4MbQ7HAX1w7F5KOZ1uwrd2CbY4POuNXF3KxwJ9cPNEkNZYKQct4eyGpNXn7frykL508UgFZtr1YClyMUD29vBJv2m6WCr4ctwXQM70xyfb/q9NV5F9ZWf0cK+m/X17aPxoQqFlZN/fWSdD07Ku3yRcvvdVwas9wHUDRzknMmxNFQuPu+7XDm75a7X04sWtnAKAKB17G/Y8ZlgboQCg//fSlb2f3mCaORwu57b67zS0RzEsYIeGlwM6kZkQAoQOiDagZ/fxxbzX8vu7MTrxLz7bRSX/2iTs8/SXIVoa/ADGQqWBIOVyOAAAAAElFTkSuQmCC";const ng=ig;let rg=(new Nt.bn).moveTo(0,0).lineTo(79,0).moveTo(79,52).lineTo(79,-52),og=(new Nt.bn).moveTo(109,0).lineTo(188,0).moveTo(109,52).lineTo(109,-52);const ag=Eh.CAPACITOR_LENGTH/188;rg=rg.transformed(wt.Z.scale(ag,ag)),og=og.transformed(wt.Z.scale(ag,ag));class hg extends tm{constructor(e,t,i,s,n,r){r=(0,N.JA)({isIcon:!1},r);const o={pickable:!0},a=new wm(0,0,0,.01414213562373095,Im.PLATE_HEIGHT,.01414213562373095),h=new Gh.Z(.004),l={maxPlateCharge:26562e-16,capacitor:{plateSizeProperty:new ot.Z(a),plateSeparationProperty:h,plateVoltageProperty:new Gh.Z(1.5),plateChargeProperty:new Gh.Z(0),getEffectiveEField:()=>0}},d=new Zm,c=new se.Z(!0),u=new se.Z(!0),p=new tg(l,d,c,u,{tandem:ye.Z.OPTIONAL,orientation:Cn.Z.HORIZONTAL,includeChargeNode:!r.isIcon,scale:.45,rotation:-Math.PI/2,centerX:i.distanceBetweenVertices/2,centerY:0}),m=Ze.Z.multilink([i.capacitanceProperty,i.voltageDifferenceProperty],(e,t)=>{let i=2e-13*e*t;Math.abs(i)<1e-18&&(i=0),l.capacitor.plateChargeProperty.set(-i)}),g=new R.Eep(ng,(0,N.JA)({centerX:p.centerX,centerY:p.centerY},o)),y=new R.Eep(ng,(0,N.JA)({centerX:p.centerX,centerY:p.centerY},o)),A={stroke:R.Ilk.BLACK,lineWidth:Eh.SCHEMATIC_LINE_WIDTH,strokePickable:!0,pickable:!0},f={stroke:null,lineWidth:15,strokePickable:!0,pickable:!0},P=new R.y$t(rg,A),b=new R.y$t(og,A),E=new R.NBX({children:[P,b]});E.mouseArea=E.localBounds.dilated(2),E.touchArea=E.localBounds.dilated(2),p.mouseArea=p.localBounds.erodedX(45).dilatedY(12),p.touchArea=p.localBounds.erodedX(45).dilatedY(12),super(e,t,i,s,new R.NBX({children:[p,g,y]}),E,n,r),this.capacitor=i,this.capacitorCircuitElementLifelikeNode=p,this.capacitorCircuitElementSchematicNode=E,this.leftWireStub=g,this.rightWireStub=y,this.leftSchematicPath=P,this.rightSchematicPath=b,this.leftSchematicHitAreaPath=new R.y$t(rg,f),this.rightSchematicHitAreaPath=new R.y$t(og,f),E.addChild(this.leftSchematicHitAreaPath),E.addChild(this.rightSchematicHitAreaPath),i.capacitanceProperty.link(e=>{h.value=4e-4/e;const t=this.capacitorCircuitElementLifelikeNode.getTopPlateClipShapeToGlobal();g.clipArea=t.transformed(g.getGlobalToLocalMatrix());const i=this.capacitorCircuitElementLifelikeNode.getBottomPlateClipShapeToGlobal();y.clipArea=i.transformed(y.getGlobalToLocalMatrix())}),this.disposeCapacitorCircuitElementNode=()=>{m.dispose(),p.dispose()}}dispose(){this.disposeCapacitorCircuitElementNode(),super.dispose()}containsSensorPoint(e){return this.step(),this.frontSideContainsSensorPoint(e)||this.backSideContainsSensorPoint(e)}frontSideContainsSensorPoint(e){return this.viewTypeProperty.value===kl.LIFELIKE?this.capacitorCircuitElementLifelikeNode.frontSideContainsSensorPoint(e)||this.leftWireStub.containsPoint(this.leftWireStub.globalToParentPoint(e)):this.leftSchematicHitAreaPath.containsPoint(this.leftSchematicHitAreaPath.globalToParentPoint(e))}backSideContainsSensorPoint(e){return this.viewTypeProperty.value===kl.LIFELIKE?this.capacitorCircuitElementLifelikeNode.backSideContainsSensorPoint(e)||this.rightWireStub.containsPoint(this.rightWireStub.globalToParentPoint(e)):this.rightSchematicHitAreaPath.containsPoint(this.rightSchematicHitAreaPath.globalToParentPoint(e))}getHighlightBounds(){return this.viewTypeProperty.value===kl.LIFELIKE?this.contentNode.localBounds.erodedX(22).erodedY(15):this.contentNode.localBounds.dilatedX(10).dilatedY(10)}}_defineProperty(hg,"webglSpriteNodes",[new R.Eep(ng)]),it.register("CapacitorCircuitElementNode",hg);const lg=[{width:194,height:315,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAAE7CAYAAACPC15UAAAAAklEQVR4AewaftIAACS3SURBVO3BC5TjZ33f4c/3lWZm12uvtODr+jIDBicCwsgQCvbaHgUolJwkK5q0gZNzOnJpcwJtZNFraKJYE7VN07RBVhvSNGmsdULLadKgzUkxnKRGG8wdbI1NrbTGtgQUbDBE8mXnqvl1l//aOzs7syvNbXV5n0dmhrd9JMWBKBAHogTiQJQzRYFJzjQLNDlTE6gSqAN1oGlmVbxtIzPD646kKBAHEsAEMAHEgQi7qwVUgTpQBypA1cyaeF2RmeGdm6QEEAcSQBwYZ2MNoA40gSqBJlBlDTOrsIqkBGeLA1ECcSAKTADjbKwBVIEqUDGzCt45yczwziQpDiSABHCY9c0CVaAOVICmmVXZRZLiQBRIABNAHJhkfceAClA2syreGWRmeCApCSSBBDDOmRpAfa*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*ckJAg0zq+N5g6dCIMEqjjMlCFTwvMFUJRBnFceZEgQqeN4AMrMKgXFJUU5xnClOoIrnDa5ZAnFOcZwiaQKIAC0zq+J5g6tKIM4pjtPiBKp43mCrE4hziuO0OIEKnjfYKgQmOMVxWoJAHc8bbHUCcU5xnDZBoIrnDTAzqxOIcIrjtHFOMLMqnjf4ZjlBUoITwpwgKUGgwRCq5dMJYAKYAOJAlMAEMM7gaAB1oA5UgUosW6wynJqsEiYQJVBnwNXy6SiQABJAAphkeIwD48AUMM0JtXy6BZSBUixbrDA8qsAUkAAqYQJxAhUGVC2fTgApYBpvtQgwDUzX8ukGkItliyUGX5NVwgQmGFC1fDoB5IApvPMZB+6u5dM5IBPLFssMrjqBOCeECUwQqDAgavl0FMgBd+B1axz4aC2fPgakYtlincFTJxDlBEcgygCp5dNxoALcgbcVU0C1lk8nGXCOwCQnmFmFPlfLp+NABZjE2w4R4KO1fDrDYKkTiHOCY4DU8ukE8CAQwdtuH6zl0yUGhJnVCUQ4wUmKE2jQx2r5dBwo4+2k6Vo+XWAAOSBKoE6fquXTUaAMRPB22h21fDrFgAkzGErAOFvXAOpAFWgSqAJN+l8UiANxIAFE2Ly7a/l0NZYtVhkQYfpcLZ9OAIfZnBZQAipAJZYtNhlsZU6p5dNJIAlMsznlWj4dj2WLTQZAmP5XoHsNIBfLFksMqVi2WAbKtXw6B5SAKbozDuSADAMgTB+r5dNJYJLuzMSyxRze98WyxTqQqOXTGSAHROjcHbV8uhzLFiv0OUd/S9Gd22PZYg7vLLFssQAkgBbdyTEAHH2qlk9HgcN0biaWLZbwNhTLFqtAAmjRualaPp2gzzn6V5LOzcayxRzeecWyxSqQoDsZ+pyjf8XpXAavY7FssQrM0LnDtXx6gj7m6F9xOjMbyxYreF2JZYs5YJbOJeljjsFXxtusDJ1L0scc/WuCzjTxNiWWLVaABp2Zoo9IihJocYIDqgTi9JdxOlPF24oCHarl0wn6R5xAlROcmTUJROgvx+hMHG8rynQuTp9yDL4o3qbFssU60KAzUfpHlFUcgVlOkJRg8CTwtqpOZxL0jziBCic4Ak36T5XOTNXy6SjeVlQYcI5AnUCc/lGncyU870xxAnVOcATqBKL0jwqdO1zLp1N43mlRAnVOcASqBOL0iVi2WAUadK5Qy6fjeF5ggkCTExyBJoEJ+kuJzkWASi2fjuJ5MM4JZlblBMcJZlYhMEl/KQAtOhcBKrV8Ooo3tCTFCTQ4xXfa*gxMkxekTsWyxCeToziRQqeXTUbxhFSVQ5xTHaXUCE/SRWLZYAI7RnUmgUsuno3jDKEGgyimO0yoE4vSfFNCiO5NAGW8YTRCoc4rjtCqBBH0mli3WgRTdm6rl0yW8YTNBoMopjtOqBOL0oVi2WAZm6N50LZ8u4Q2TKQJVTnGcYmZ1oAVEJE3Qh2LZYg44Qvema/l0uZZPR/EGmqQ4gZaZNTnFcaYKgQR9KpYtpoBjdO8wUKnl01G8QRYnUGUVx5mqBBL0tyQwS/cmgUotn47iDao4gQqrOM5UIRCnj8WyxSaQAGbp3iRQxhtUcQJVVnGsYmYVApOSJuhjsWyxCSSAWbo3VcunK7V8Ooo3aKYIVFnFcbZjBBL0uVi22AQSwCzdmwIqtXw6ijcQJMUJNMysziqOs1UIJBgAsWyxCSSAWbo3CVRq+XQUbxAkCFRZw3G2MoEEAyKWLTaBBDBL9yaBSi2fjuL1uwSBCms41jCzKtACxiXFGRCxbLEJJIBZujcJVGr5dBSvnyUIVFjDsb4ygQQDJJYtNoEEMEv3JoFKLZ+O4vUdSXEgArTMrMoajvVVCKQYMLFssQkkgFm6NwlUavn0BF6/SRCosA7H+soEJiVFGTCxbLEJJIBZujcJVGv5dByvnyQIVFiHYx1m1gSOEUgygGLZYhNIALN0LwJUavl0HK9fJAhUWIdjY2UCSQZULFtsAglglu5FgEotn47j9TRJCSACNMysyjocGysTOCwpyoCKZYtNIAHM0r0IUKnl0wm8XpYkUGEDjg2YWR2YJZBkgMWyxSaQAGbpXgT4ZC2fTuH1qgSBMhtwnFuJQIoBF8sWm7FsMQ4cYXPuruXTKbyeImkCmCRQYQOOcysRmJI0wRCIZYsp4Aibc3ctn07h9ZIkgaNm1mQDjnMwsyZwlECSIRHLFlPAETbn7lo+ncHrf*ckCZc7BcX5lAhmGSCxbTAFH2JwP1vLpEt4FJSkKTBGocA6O8zCzEtACxiXFGSKxbDEFzLA507V8uoR3ISUJzJpZnXNwdKZMIMOQiWWLOeB2Nme6lk+X8C6UJIES5+HoTIFAUlKUIRPLFkvA7WzOdC2fLuHtKklR4DCBMufh6ICZVYFZIAIkGUKxbLEE3M7mTNfy6RLebkoRmDWzOufh6FyBQI4hFcsWS8CPAC26N13Lp0t4uyVFoEAHHJ0rAy1gXFKCIRXLFitAAmjRvelaPl3C21GSJoBJAmU64OiQmTWBMoEUQyyWLVaBBNCie9O1fDqDt5MyBI6aWZMOOLqTIzAtaYIhFssWq0ACaNG9D9by6RTeTkkSKNEhRxfMrA4cJZBhyMWyxSqQABp07+5aPh3H21aSksA40DKzMh1ydK9AICUpypCLZYtVIA7M0r1KLZ+ewNtOKQIluuDokplVgFkgAmTwiGWLTSABzNKdCFCu5dNRvC2TNAEcJlCgC47NKRDI4H1fLFtsAglglu5MAgW87ZAicMzM6nTBsQlmVgIaQERSCu/7YtliE0gCLbozXcunk3hblSJQokuOzcsRyOG9KJYt1oEE0KI7pVo+HcXbFEkpYBxomFmJLjk2ycxKQAMYl5TCe1EsW6wCSboTAUp4m5UiUGITHFtTIpDDO0MsW6wA76c7h2v5dAKvK5LiwBSBApvg2JoC0ALGJaXwzhDLFgvAEbqTw+tWhsARM2uyCY4tMLMmUCCQw1tPBpilc1O1fDqB1xFJE8A0gQKb5NgiM8sBDWBcUgbvDLFssQmkgBadS+F1KkPgmJlV2STH9sgRyEmK4p0hli1WgRydm8Y7L0lRIEUgxxY4toGZlYAGEAEyeGeJZYsF4BgdquXTCbzzyQAR4ji*zVdgCx/bJEchIiuKtJ0fnEngbkhQFMgRKbJFjm5hZCTgGRIAC3lli2WIFaNCZBN65ZIAI0DCzElvk2F45AtOS4njrKdOZCbx1SYoCGQI5toFjG5lZBThKoIC3niqdGcfbSAaIAA0zK7ENHNsvQ2BKUhJvrTrepkmKAhkCObaJY5uZWR2YIVCQFMXblFo+PYG3VgaIALNmVmKbOHZGAWgA40AG70WxbLFC5ybwXiRpAriTQIZt5NgBZtYEMgTulDSB521djsAxM6uwjRw7xMzKwDECJTxvCyTFgWkCObaZY2elCExJSuJ5m1cgcMTMKmwzxw4yszowQ6AkKYrndUlSEpgikGMHOHaYmeWABhABSnhe9woEZsyszg5w7I4UgcOSEnhehyTlgHGgBRTYIY5dYGYV4C4CJUlRPO88JE0AGQIZM2uyQxy7Jwc0gHEgh+edXwGIAMfMrMQOcuwSM2sCKQJ3SErieRuQlAQOE8iwwxy7yMwqwF0ESpKieN4akqJAgcBdZlZlhzl2Xw5oABGghOedLQeMAw0gxy5w7DIzawJJAoclZfC8UyQlgDsIpMysyS5wXABmVgVmCOQkxfGGnqQoUCJw1Mwq7BLHBWJmOeAYEAFKeB7kgHGgBaTYRY4LKwW0gElJBbyhJSkB3EEgZWZNdpHjAjKzOpAicIekJN7QkRQFSgSOmlmZXea4wMysDNxFoCQpjjdsSsA40ABSXACOHmBmGWAWiAAlSVG8oSApBRwmkDKzJheAo3ckgRYwCRTwBp6kCaBAYMbMKlwgjh5hZnUgSWBaUgZv0JWBCDBrZjkuIEcPMbMK8H4CH5SUwBtIkkrAJNACklxgjh5jZgXgCIGypDjeQJGUAqYJpMyszgXm6E0ZYBaIACVJUbyBICkOFAjcZWZleoCjB5lZE0gALWASKOP1PUlRoAxEgGNmlqFHOHqUmTWBBNACpiSV8PpdGRgHGkCSHuLoYWZWBTIEpiXl8PqSpBIwBbSApJk16SGOHmdmJeB2AndKSuH1f*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"},{width:97,height:158,url:"data:image/png;base64,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"},{width:49,height:79,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAABPCAYAAABCtC2tAAAAAklEQVR4AewaftIAAAjnSURBVN3BDXDe9UEA4Of3+/3fN29e8tGm7egKa2GrMhrEAwZTdDvR9bzdTnY70OJQubLKV8q8YzBYb3tZw7HxIZNJg3NW+Tr50qEHil0Rr+csoMIYoznnLLB2tClNCaQZTROS/G1JC4VReN/k7RfPE9THqViADyBgO8ZQQiP6MYIWDCLH4/g2BkxSMHG/igvRjEH8B+5Gn3f3UZyJX0TEY7gWIyYgqN2nsAhjuBf3mJw2XI52rMOlGFSDoHptuBFl/AUeVn+XYT4ewvWqFFRnAc7D3fgr+1aGm9GGi7BZHVTwAObYv87BQ5jvXSTv7GuYjQXot389hWfxZfTjf+1FsndX43Cc68D5KZ5EBZuxVg0uxN85eJyAh/FhVToFK9Hs4HIm7vc2op+3BDdiwMHl77EW13iL6M0uQw8edHC6BL+MufYQvdlv4RIHtzuw1B6iNyzFDzHo4HYnWjHXLtEbTsISh4b7sMQu0bjP4CWMODT8DabaJRr3e7jLoWUAn7JDNK4BDzq0rMBn7BBxDMYceu7EVDtEnIU1Dk25HSLm4TsOTRnaMuR4Wo26ly7+ouB0zJbnrYIWNQlj5L1Yi79ur3TdonY9OCngfpyuSt2dHW34R3xM/YzgO+2VrrPU5lpsyTCoNvfgY8blWE/YSL5NTUIkn4MPIsOC7s6O0fZK19mqN4a2DGOq1N3ZsQCnGdeLJe2VruUmobtz8VLyS1HGmd2di/+5vbLsTjWIahLmI3lNuLm90rXcJLVXll1J+KZxRfKFahTRrHpTvC5foU7aK8uWEDZ6Tfiw6iVsiOhXvRe8LpyjjvI8X2dci+pNxRMRjWhWnf*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"},{width:25,height:40,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAARQSURBVLXBW2zddQEA4O/3v53ubG0pZ0JZyS6BOUcXAnG6BwHRGDOJLyPRxE6Nxki0JROTaYzBgzT6gCFbRDq3MB5IjLqFB/RBwYiCxoBOljhahDnwQtVkg3W9bDu9nP7tUhJGe87p2cXvCxrrwXrzqsiRoGpeglN4CLPqCGr7JG7Ca9ivsY/hA3gTuzXpG7jHhbsT38P1lnAvPuHircFuvFsdX8V2l24VHnSe2LzbsB4DLt04UmzDH5znu0hcXt9ByZwI3ahgxuX1BO4yJ8I2HHT5/RmZORFivOL/Y9acBFV1DN3f93VsFvIr1BTO4pnu8sButU1hfYzb8awFhvp7f50HXwwhXIU2lFBCCSWUCGvJ7+z70Ptu3vPbQz+12HvQmWDaAoP9fZ8m/3AQHu4uD+zQwGB/36NB/rmh/r67u8sDD3unHFmE1AKBaxDwO0vYVB74Qp6Hk7jNYsvwaoTcYk/geC5/YKi/9yZLCEEFqcVKeC5CsEB3eeBvhG8GSjmPD/b3bnFxckxFOINbLNBdHngUXwusDMJPBvt7P+jCBXMi7MdH1NBd3vMIvkLeFoQfDfX3btW8W3DWnAinEKuju7znsZwv5fKU8Mhgf+9mzfko9pkTmfd77FTHpvKex4OwI6cND1hahIAxcyLzfoUOlNTRXR44GHiacKOl7cQz3hJ520Hco4FcPkGeamwV2vG0t0Te9hecwGdcmj782Hki7/QQNuL9Ls5deB1DzhNZ7Nv4FK53AUbPTLbhauy1QFDDU1/uOBREN4cQ5yFEoiiWZoniimIorSxFq7pWVZMkVZmseOnFIaMjlXh2dko1ih7b+oPhz1sgUUNiJEIsR448opoxvYKZmGpHEqIZoXqW6ZPMHBdh1spYDZElnDjb7bXxzc754382maympmZ4cjDVrEQDR07e6oWTK6VR7splEw6/caX0H63eNZp57l+xdR2xl9/coGW6pKPlr+qJNLCh/Yiedb9x61XDdr18o89ufNGJMV4fzdx7R0X5yXZjlVgaT2ok0UAhHnXO2tbD7t4wbXk64uMb/62za7UVhcj9WyecHn7J6KnjGok0qWv5K85pa5lyxbKqc9aWpjQjUcOrb8Szs/ksEiG0iOJWhWKH1rjTZFgjSddJ0kRl+ozhanBi9Kjq1H9FWXVaDYkadj61/Bfj4+PvLRTi0Na2TKnUrqvrGtel17kh3GCiuFGapsZmxjw7PeH5v484enRk/PTp0/vUEKlhbGzsvkKhcNQFKBQKv6xUKn9SQ6SONE33hxByTYjjeKRYLParI1LH+Pj4g2maHtGEYrH482PHjg2pI9FAT0/PD7ds2fL9lpaWQktLi2KxqLW1VVtbmyzLdF17ras7O4d379p1nwYSDezdu3dfz/btIU2SHVmWbciyLMqyTJZlsiybTLPs+VKp9K0DBw78UwNBk144fHhbmqa3Z1nWnmXZcBzHP1uzevUhTfgfTJhAUmzU/MYAAAAASUVORK5CYII="},{width:13,height:20,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAIESURBVI3BT0hTcQDA8e/vvbc5kW3N3puIMTVzDaxgCDGhOhQYhFBQqJShp8p36RzB0EcX230eomOX6NahQ4eiRhpCUTxDBE2CpmR/tik52Z/Xo73qTYr8fAR/HAZ6gTJQBQQ1CrAEZNjhJHCZf7sAnMWlExjj/84DJ3CMARK7M4pNAipAld0pY1OAKg5zUn8goBNhCX4S2BZ7kulhajaBXmwXsZmGPjBv6C/ZwZzUn84b+jVqzgDHJEBgEzBjgdc0xm/gJvgIooWaEDAjARK2nmT6i8C6IhBDpqFP8HcCqEhADjiOrSc5PWdhjQDnTGP8KvUEIGOTgIdAN45DyWkTuA+in3qXgAw2iZoFYIjfrDJYEo7C1nYjUAGWsAkcd4YDE5GQN6HIHssfiATbIpG9Wlhafj233r6e+746MD17CoeCY3+ooAGnN4pdVKXPdMg+8pt7oqXiKxoo4abgslHqZDG/D29RYfltgDZVoZDvQmtYwE3Bxe95T6+6gtLYRvfBbvyBAG9yS2wVqaPgmF3xrX7aLFuyp0Vo7UewmvoJ+oM8y1cofHj+DRcFx81HxVs+n2+0tdV74Kjmp0NuoaiEmN8Olp68a0pDnl8kXGKx2N3BwcFqIpFAVVVCzc0k+vpeZLPZe7jIuKytrWVSqVQ1Go02hcPhr6qmPY7H49dvT03lcPkBy4eYT4ZWwzkAAAAASUVORK5CYII="}];lg.forEach(e=>{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const dg=lg,cg=[{width:195,height:315,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAAE7CAYAAABgyTVqAAAAAklEQVR4AewaftIAAB7YSURBVO3BT2wl+WEg5u9Vy/ZYWkXlADKyXmxUQhbQgA7QJSAHb7OFrndIML5w3lyCMXLox5svRDePuZBFnvbWJHjZBQLw9cmQEaDZDwgCIYdXFAJYGwhwTWARUP5tTXZXGYzjqGYnox39mSgtVltk8ZFsPv7p5nvv930dwU3JNBIkGl9DajL7jlSoNArBteoIriJFghR3ESPzehWo8QFKVCgFE+sILipBhrtIkTlfhQo1PnCkRO1iYqSOPNBIkDhfgRIfoEAlOFdHcJYYPTxAhsS4GiVKfIgSFSqvR4IEKb6BFCli4yoU2EeBStDSERyXood3kRpXYB8lSlRupwQpUjxAZlyJAk9RCnQEKR6ih0RbiecoUJhuGTK8i1RbhT08RWlOdcynGH08ROpIjQLPsYfabIrRwwP0EDtSYRt7qMyRjvmS4SH62vbwFHvmUw/voofYkT08xZ450DEf+niE1JES29hDLfiNGD08ROZIhW0MUJtRHbOtj3UkGjX2sI1ScJ4Ej9BHrFFjG1uozZiO2dTHOhKNGtvYQi2YVB/rSDRq7GEVtRnRMVv6WEeiUWEDA8F1yLCOTKPGNrZQm3IdsyHDE6QaFTYwENyEDOvINGpsIzfFOqZbgifoadTYRi54HTLsItGosIzCFOqYXjkeIdbYwgZqwevWxxPEGntYRWWKdEyfFLtINQqsohS8STEeY12jxga2TImO6ZJjXaPGKgaC2yTFE2QaBZZRueU6pkOCZ0g19rCMWnBbPcY6YtTYwJZbrOP262EXMWosY08wDRLsItPYwzJqt9Adt9su/hneQoE/xQ8E06LGU3yCd/A23sc+PnLL3HE7xfgrvKOxgWXUgmn0AzzHO0jw5/gQpVvkjtsnxV8jQY0/wz8XTLuP8BRv4230kOC5W+KO26WPv0CMEl38QDArPsd38QneQYoevovPvWF33B597OIt7OE9fCSYRT/APnpI8A7+JT7yBt1xO+wi1xjgz/C5YJZV+B7ewdt4H9/DR96QO968XfQ1VvFfC+bFR3iKd5DgfXwPH3kD7nizdtHXWMY/F8ybz/Fd/Anexp/jQ5ReszvenF30NZYxEMyrz/EUCVL08CFKr9Edb8Yu+hrLGAgCniNBih4+ROk1ueP120VfYxkDQXDkORKk6OE5PvIa3PF6PcGfayxjIAjGPUeCFO/je/jIDbvj9enjn2ksYyAIzvYcPSR4H9/DR27QHa9HD3+hsYEtQfBq38U7SPAn+C4+d0PuuHkpnuEtDLAqCC7mc3wX7+NtvIN/4YbccbNijPAfocSfCoLJfI59vI8ECZ67AXfcrP8eKSr8U3wuCCb3Ef4l+kjxIUrX7I6bk6OPGn+KShBcXoVP8A56eI6PXKPIzciwrrGKUhBc3Rb2NJ4hdo3uuH4x/gpvYYANQXB9vof3keBtfNc1ueP6/QVSlPgzfC4Irs/n2Mef4218gh+4Bndcr8d4rPGnqATB9fsIn+Ad/Am+i9oVRa5PgnWNDZSC4OZsoUCMXdfgjuvzDG+jwLIguHn76ONtfIIfuILI9egh01gWBK9HhQ2NdSSuIHJ1MXY1NlAJgtdnCwViPHEFkatbR4wKuSB4/VY1eshcUuRqUjzWWBYEb0aJLY1dlxS5micaeygEwZuzgRoJHruEyOVlyDRWBcGbVWNVYx2xCUUub1djA5UgePMGqBDjsQlFLqePBDW2BMHtsazxCLEJRC5nXWMbtSC4PQoUiPHYBCKT6yNBjS1BcPtsaDxC7IIik1vX2EYtCG6fa*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"},{width:98,height:158,url:"data:image/png;base64,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*kjS5f/55Hj92vT4zdzH25HXczP8JFFK56bcxwf1eP2vzxyexzH43arG3UVzl2+6oXF+F96/PsDj/503bp1R9WNGvUTfKxr9RpBuCwWN+NYjDZAzIG4DpNUQIQJeE75TMO+BglLV720+kE9HvvvFY+lMvkP/+rP8373zHNdnnmuy5q16xbosTaOd0tl8nNv/GPHwq7Va+q6Vq/RtXr143qsi9e9IpXJz01l8nNXvbR6j67Vazz7QmmRHjGjU5n83FQmP/f50kt7dK1eY+WLLy7W74Y/PjA9lcmnb5vz8Nwnl6+0CUd35D7zHRUQYTRKyqAj19aAvzNIWEr8riXPrfqTxJ76hKP0iRcTP6ZPvLfERP0Cc/QJ++mRbU03YB+JP0jslW1Nj5V4rT5hrvUa9XhhzZqG/3p8kSeWPVs0pPh9Hbm2BmUWYTleqTxORYMBAl9LZfLt+IvEGIkmiSWEv+gTDpI4Vp94IeF+ib2yrelGvE2iO1so3o2SxNHZ1nQj9tEn/hMelThen3i8HrOfePrb+LHBxgQuU2YRFmFP5XG0wR6fmLnmSn3imRITsq3psXidPmEFZkvUZ1vTJxOfoFdsUbZQXCC2XOIknCzxqMQT+sTvxEkSK7OFmY9gqcRbs63pEwmjJWbj03jEIKFJmUUSdcrjTQYIwlP6ZQsz78NKveL4DLFDJeZkC8VOzJd4H2G8PuEZvYKHJE7BJInFEov1isNR4vgUveJ4vsQiifH4oMTD2UKxM5XJl/BrA8TiwztybWMNvyOxWI8IczFOeawwQCze3cbm6BXCWYLXSfxc4iGJU/BmvYKfSDwicRyO1iuO79Qrju/UK8SThXCMXiHMl/i5xGS8Q2K+9b6Nbhurw7GG36vwkh6RxHK83vB71CDhkI5cW73/EV8vcaDEfdlCsV0ij26MQx0eyRaKMyRyWIn9sReWCWG6XiFcgaWE0TgAXfiGHtlCcQYekTgY3bhGv1Qm3xlYYLAjDL9GLNcjkujEmwy7cI9B4v1xpX7Zwszp+IXEQnxJv2yheAeuRTeW4Zv6ZQvFBcRXo4SVxN/KFoor9MgWiiXir2IlSvhetlCcZ73LsBTduDZbKN5hAzHPGew1ht+RWKVHkLgLv0fWMOvItS3CATbWjf+dyuSv0i/bmh6bLRQ7DSHbmh6bLRQ7DSHbmm7Ai9lCsWSAbGu6Xo9soVgyhGxruiFbKK4wQEeubTaOsbFvpTL5zxtet2J3vCOSKOEYZRFmGKwO0zpybafply0UO21CtlDstAnZQnFFtlAsGUK2UCxlC8WSTcgWiiuMrNF4UI9IYhYalEEqc83ZeMBgozG9I9d2ml3XGNyrRyRxBw5WPh/DMoONwfSOXNtpdk2HYLYekcR9GI2UMkhl8u24DF0GG4PpHbm20+xajsNKLNAjst58vEeZpDL5q/EldBtsDKZ35NpOs+uYiif0i6z3JE5SRqlM/tu4HN0GG4PpHbm20+wa0nhGv8h6N+F1yiyVyWdwOboNNgbTO3Jtp9n5vRa/0S+y3o3YG8cqs1Qmn8Hl6DbYGEzvyLWdY+c1Fm/AbfpFNvYXnK0CUpl8Bpej22Bj8NWOXNs5dk7vxcPo1C+ysTuRUiGpTD6Dy1Ey2Gh8tSPXdqGdz99jgQ1ENvYDHIaJKiSVyWdwAboMNhqXdeTacnYub8DNNhDZWCf*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"},{width:49,height:79,url:"data:image/png;base64,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"},{width:25,height:40,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAAPcSURBVL3BX2wcdB0A8M/3d9frupVKZ9wwMyZD1If2AYyjYcuZNnEiiMYE4pMY5rYY22kUH4w+NKU8QCRoJFJjjLFqlvlgMGwx9GFpVwPysJD4QCd/AkxFszGKhXWM9Xr342aXbLR3Z4tLP5/Q2m24BVXUsICEgiUFnMPPcU4TobHd6McZPIKa5j6D3TiHB63SAfzQ2n0WD6HP/3Av9nv/SngIZU3sxZD/X8LDuNYyH8EDrp4bcZ9LkiX78DtXz19xAX3qEhISTri6fobb1RXxDTyji*zEv9k8Ih7BPdlC4lXySKBIflvOfR44ce8RKb6GmLmELHtfAyJcGbiZ3yb4lK2Gf7IOyHnxCzpuFz2muiuuKWNTEx7duvqMQacP5hcont3Vf84+/z7659YYtm984+fpcYVt3V+1fc28tlgqF1zV3ArcXMIBpy8yMDh3aVCp9k3xNsZA2dG/qKJy7UNm4rburbe78hY1buzZ1VKq17t5tH9o+OLBjYGzq+LiVTuHzBfThKVeYGR26kfzjas3RqedeefX02fn08pn/zMzOn/fCqdm/zc6//e+XXnvj1dNn5/+5WK0tXveBzpsGB27eODZ1/Kj3ege3JrRbJvNRlDrai0/ieuIxWW8wgS2YxwI2v3Bq9gnilZD7rHQTTidky/QOP3qYeCk4cNene749cnjq+yKuHzly7Lsidoi4S8SXiVtGjhy7l/w20WalMp4tImkofy/zSxG/mhkd2tsz/OiEupHDU4suq2mtC0cTXsQ9lukZHnscg0ERv352dPBOa1dQl3AI2zXQOzz2B/J+VINfzIwO3W31ul2SLKnhYxroGR47nOWvEWfJP5kZHfyC1dmPo+qSJb/HVzXROzw2Sb6HqGbutzqdeEpdsuR5Sz6liZ7hsenMYyF6ZkYHi1rbi5ddklz2U3xFC8Gb5FLOOrV2A8Zdklw2hxM4oIksuyhC1twPMO0KyXv9Ft24QwNBtqRDY3eiiglXSFa6H2X0WYOFxWoJO/Ajy4QGJicn/1itVne3tbVV1EWEiyLXiqlS6cztG+ZEuCgipMrCxsVarVjY0PGbXbt2fd0yRQ1ERGexWNxkuVRQay+IiGtdIZfaFfxXhwaSdZCsg2QdJOsgWQdJYxXvT1UDSWMHUbE270TEQQ0kDQwMDBzEX6xBznly586dT2ggaSIiHsYFq5Bzns85P6CJpIn+/v4jOGZ1Jsrl8pOaSFp7EHNayDm/lnMe1UJBC+Pj4yf37NnzXM55e0RsjYiCuohQt5BzfjoivlMul5/WQlil6enpXRFxW865OyLORMSfyuXycavwLmgAPhMV3lN4AAAAAElFTkSuQmCC"},{width:13,height:20,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAHHSURBVJ3BwUuTYRzA8e/ved9tZSNW4rykMNoO5aCLp3S4BdsOwQgST1INgqij0XUML126GQ6W1/6CHTs4wyCKKGsdhDrsMoZEupcinNvz9MJe9FWLws9HOBAHpgAN9BhQgAU0gTWOmAaK/N0N4CY+Z4G7/FsByOK5BUT5P7dx2YAGtnCVC5kLGP0UJACmC2KA1XKtvsRADwjbgMaTu3zxSWvHmbaU0kHb6hlgJHw6Uq7VlxjYAPIWMAE0GosPrgQtdW9ts9lsOz++t7addmvH2Rofjow+zF+NLK++XQdsIK4AC1eytLwhSnZnJydeikgakRxIfjh86pVAlIEp4I0CFPtMETHXZycvPS7X6rpcq2sOCwFfFNAGsriSpUoDzJzAtcbi/QWOU7gU8AIYw5MsVb4aWMFIjsPmgM+4FAMfgHn2ma6IUXh29/o2EALe4RI81Wp1IRaLzQQCgb7d/RUOONux7ujYp+DOt3Gn0/mZnb8zg8fGk0gkokABVz80hI6eQSC+d26EofPRTXwUJ6A4AcWBJqD5sw4+Ck8mk6kAHzmur7V+ho/CR0QqQA8fY8zrVCq1go/CJ51OV4FHwDrw3hjzHChyxG8gZox0VeVroQAAAABJRU5ErkJggg=="}];cg.forEach(e=>{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const ug=cg,pg=new Image,mg=Z.Z.createLock(pg);pg.onload=mg,pg.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAAE7CAYAAABgyTVqAAAACXBIWXMAABcRAAAXEQHKJvM/AAAHF0lEQVR4nO3dT24UVx4H8PfaBqQJBidMmExGGcEBkJL1oNg+wXCDwAlGnCDhBMAJ0kdwNqwG0UgekBECR/KKDV6wYIGQI4H/2zV6nmdPd9sY2xi7X9XnI5Wqqv9Adbm+9et6XVUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA8YolrO9//On89VaMl1ohhFaMoRVDaIW+cXp8+/mu6d3es/n4Xu/v//f3eO2O9+xn+bpe+8Hl613OLVWoetZN1TfV/2zV9bq1jSqsVVVYr6rt6f/Nb+zxXNX7XJ7vnv7YcxtV1f73wh9zn3s7+VTDg76A2U8hhPGBWBIOoxNCGPgwtAZgGWAgCANkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIA2XAJK+I/C388DCGMdz8WY9wxncb902lotVo75rce25reHmIrDLWGQqsVw9DQ0OZjadw/DA8Pb4/7p9Nw6tSpHePdhtOnT2+Pt4YzZ870TA+dOtXzeQ9qY2MjLC4uhqWFhc1x/7C0tLQ9LC8vb4/TsLKysj1Ow+rqas+wtrbWM6yvr2/+f1tDVVVpmD+eLeXTlFIZ7oQQilih7DAZQpgpYbWUEoYUhLsDsBwc3M1S1llJxwyqQ3naVVXNlbLUJYVBdSjPrZKWuLTWpF9CCMXsaRquvbGxUdTfqsSm1aL2Ng01X9KxwpYSw9BWHQbe3bW1teKO70r90U11GFzzMcY7JS54qWFol9J23TQxxrvLy8tFtvqVfDpGcd9JG2A+N4EXqdgwVFXVCSF0BmBRyGKMtxYXF4v9Laj0E/UcOwyOuXfv3hVbFULpYVAdBkeqCqV/hjqcwu3Y4eTNzc/Pt0v/EMWHoaqqmdy6xAmpQ1UINbq4x7HDyem8efOmFjujWoQhnwOjOpyAulSFULPLPlWH49d5/fp1bRowahOGXB0E4hjVqSqEGt4QwAVAx6fz6tWrWjVr1yoM6+vrLgA6JjHGG3X7THW8VYzq8Pm1X758WbvT6GsXhnQefTpzcgAWpbbqdqywpa43EbvjAqDPI8bYfvHiRS3XbS3DsLq6Ol/XvdcJq/V6re3tJVdWVlweesTS18/Z2dnartNa32tVdThSxV7OuV+1DsPy8rLqcERSVXj+/HmtW+lqfxfuOraHn4DaV4XQhDAsLS25AOgTpaowPT1d+99umtI/g2OHw5ubmpr6pdSFP4hGhGFxcVF1OKQmNUI0qece1eHg5u7fv9+Y60QaE4aFhYWOC4AOptVqNWoH0rQ+3VSHfYoxzty7d69RO49GheH9+/cuD92nVqvVuLuOHL7XvEKNjIxcunLlysvuDg537fQwdWjY1/lhf4eHH+v8cCh1drg1v9X5YZpPHR12dYbY3QHibp0hptfHvk4d//8XjDv/iH2PpY4Gtzoq7Om4MHVa2NV54UrqvHBlJbx9+7Zz+/btiaZtG40LQ/LgwYNfY4zXNzeuvOFs9xTaNb/Xc7v1LLrjvUc0H7r+v4POhz2Wd4/5ibNffNG41rem9gN90wVAH9RuYhBCU8MwMTGRgjAhEL3yDdkae4fCplaGMD4+PiMQPVI1mBg5e7ax66OxYUjGxsZSIH7Q8UlonxsZmTg3MtLoHUOjw5CM/fjjXK4QjWtyraoqbfw3zp871/gze0NTW5M+ZGpq6nqI8XYMYbQBrUmpGt74cnS06VVxW+MrQ7erV6+2YwiXQwiTg7NURy5Vg1tfjo7+IAi9VIYPePTo0XiI8dcYwqXaVIYU8hhvXvjqK1f/7UIYPuLx48fpx7mfY4yXCg5DJ52K/ecLF5zGvgdh2Kfp6el0PPFzd6UY+DCk5tIYb138+msh2AdhOKAnT55cizH+FGO8NohhyNcrT6ZK8JeLF30dOgBhOKSnT5+mCnEthPCv9BVqAMIwGUP4LcQ4+ddvvvFD4iEIwxF49uzZ9zHGdMD9zxjC+DGFYT5/DfotBeFv334rAJ9IGI7YzO+/j8YQvg8xplCMpekY4+gRhGEmxjgXQ3gYYuz8/bvvNIseMWE4BrOzsykMm6HI4Ugb+PmYHtu58T/smu/EEOYvX75sw//cQgj/BYC5DyWBHyCpAAAAAElFTkSuQmCC";const gg=pg,yg=[{width:194,height:315,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAAE7CAYAAACPC15UAAAAAklEQVR4AewaftIAAB46SURBVO3Bf4jj93ng8ffzSDub7hqkJfGuDU1mHPviyK49agI+13Z2vr4rpJcGVjkK1/6TkftHG2hOVu4vl1b1d6yawkFjrbgjEGitaWnOSSnV2lzIwUG07brEJqGS4U6h0ENDKdcEX04iqXd2djTPjfPZ8/7w/pDmp77S83qJmeH2jojkgSyQB7IEeSDL9bLAItfrAH2u1wfaBD2gB/TNrI3bM2JmuPGISBbIAxGwACwAeSDDwRoAbaAH9IAW0DazPm4sYma42xORCMgDEZAH5rm1NaAH9IE2QR9ocwMza3ENEYl4vzyQJcgDWWABmOfW1oA20AZaZtbC3ZaYGe56IpIHIiACznBzHaAN9IAW0DezNgdIRPJAFoiABSAPLHJz54EW0DSzNu46YmY4EJECUAAiYJ7rrQFtoAW0zazFBBORCMgDeSAC5rneAGgCTTNr4hAzY1aJSAEoAAUgw1UDoAW0gKaZ9UgwEVkAIiACCkCG650DGmbWZEaJmTFLRGQBKAMFYJ6r1oAm0DKzJlNMRPJAESgA81w1AJpAzczazBAxM2aBiBSAMrDEVQOgCdTMrM0MEpE8UAQKwDxXrQEx0DSzPlNOzIxpJSJZoAiUgXmuOgc0zKyJe4+IREARKAAZggHQAGpm1mNKiZkxbUQkC5SBMpAhGAA1oGFmPdwtiUgWKAAxMM9Vq0BsZj2mjJgZ00JEskAZKAMZgjUgNrMGbmwiEgExsMRV54GymbWZEmJmTAMRiYEykCFYA2Iza+B2TUQWgBhY5qpVIDazHgknZkaSiUgBqAHzBGtAbGYN3J4TkQUgBpa56iwQm1mfhBIzI4lEJA/UgCWCNSA2swZu34nIAtAAlggGQGxmNRji*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9iUmmJIgH/zgB8+cPHlyC5coDz/88D+88cYbrzDBlAT50z/907Wnn376NVyinDhx4rNMOCVhvvCFLxRPnjy5hUuERx55pPNXf/VXbzHhlISJoqj/9NNPv4ZLhEwm83kSQEmgL3zhC8UPfehDm7iJ9sgjj3RardZbJICSQFEU9T/3uc/9IW5iHTt2zPL5/BkSQkmor371q889/PDD67iJ9NBDD736R3/0R2skhJJgTzzxxFncxDl27NjWd7/73SIJoiTYV7/61eceeuihddxEyeVyr128eLFPgigJ9+CDD/42bmL8zM/8zNb3vve9IgmjJNxf/MVf1J588skf4CbCY4899p9/8pOf9EkYZQqcPn26jDt0J06cWH/11VdLJJAyBV588cVXnnzyyR/gDtUDDzxwloRSpsTp06fLuEOTzWbXv/Wtbz1HQilT4sUXX3zl9OnTXdyhePTRR18kwZQp8qlPfepXjx8/jjtYH/nIR37w53/+579PgilT5IUXXnjr9OnTHdyBOnHiRJmEU6bMJz/5yc8fP34cdzA+/OEP/+Cb3/zmKyScMmVWVlbe+oVf+IU3cAfixIkTZaaAMoVOnTr1744dO2a4fXXvvff+46uvvvoKU0CZQqurq2uf/exnX8Xtq3vuueczTAllSv3Gb/xG8e67797C7YsHHnig841vfOMtpoQypZaWlvpPP/30a7h9cdddd32eKaJMsT/7sz8rfOhDH9rE7an777+/87Wvfe0tpogy5aIo+gpuzxw9enTr+PHjn2fKKFPua1/7Wumhhx5ax+2J++6777U/+ZM/eYspo8yAxx9//Cxu144ePbr1/e9/v8gUUmbAV77ylecefPDBn+B2ZX5+/rU333yzzxRSZsTHP/7xCm7Hjh49uvV3f/d3RaaUMiO+/vWv1x599NG3cTty7733f*ckChQt9ppQyQz796U//e9zY7rrrrvU//uM//iJTTJkhL7zwwiuPP/74D3Bjuffee88y5ZQZs7i4+Ou4kR0/fny9Xq8/x5RTZsyXv/zlb37iE5/4e9xI7rnnnrPMAGUG/eIv/uK/PX78OO72PvjBD/7gy1/+8nPMgDQz6Pd+7/fe+uEPf9g5ceLEoqoiIogIIoKIoKq8S1UREUQVFUFEEBFUFVVFRFBVRBUVQVVRVUQVFSGVSiEiaCpFShVVRVRJpVKkVBERUqkUqVQKESGdTqOpFKpKSpVUKoWmUqRSKdKpFKKKsE0EYZsIQiAi/JQIwhUiiAhCYGYMh0OGwyGbwyHDzU22trbYHA4ZDodsDYcMh0O2zBhubvLtb3+7zIxIM6N+5Vd+5YvAX4sIIsK7RAQRQURABAFEBEQQQEQQERBBABFBREAEAUQEEQERBBAREEFEEEBEQAQRQQARARFEBAFEBEQQEQQQERBBRBC2iSAiiAjCNhFEBAFEBEQQEUQEYZsIIoKI8C4RQUQQEd4lIogIIsK7RAQRQUTY2Nj40Wc+85lXmBHKjIqi6AJwDvc+w+HQNjc3C8wQZYZFUVQA/h53nfX19fjk3Xf/NTNEmXFLS0sPAF0cW1tb9s///M/Pnzp58gVmjOI4ffr0Q8A5ZtjW1tbwRz/60a/dc+rUC8wgxf3U6dOnC2b2H4AtZsz6+vrb/+ftt+//6H33fZ0Zpbj3nD59+iUz+6iZvc2M+PGPf/zfTp08efcDDzywxgxL467zqU99ag24+8KFC3VR/S1AmULr6+tvb2xsLC/Mz38TRxp3U0899VTpwoULfygiX9dU6l8yJTa3Xbp06Q8/8uEPP4d7Txp3S0899dQa8Pjrr7/+lIg0UqnU/STU1rb19fXX7rrrruKpkyf7uOukcXf05JNPXgAe+Ju/+ZunVLWhqvcjQhJsbru8sfFfjx0/Xpz/yEf6uJtK40b2xBNPXAAeeP311x9V1f+YTqf/tYikmUCXLl16+/Lly//l/vvvL+HuKI0b25NPPvkW8Ets+853vvO7mkoVU6oflW0couFwuHH58uXvbFy69Dsf//jHL+BGlsbtyuOPP/77wO+z7c033/wDVT2TSqf/hYikOQCXL1/+yebly6+bWf1jH/vYN3E7ksbtmccee+y3gd9m25tvvvmUqhZF9ZOpVGohnUpl2SUz29q8fPlHm8Ph/8Dsvx+/667/dN/CQh+3a2ncvnjssccuABe4xhtvvPFo+siRfwV8NKX6qIiACCnVB0XkAyKCwf82sx8KwdbWVhMRHvm5n6vh9s3/AyOTzNjP5MnQAAAAAElFTkSuQmCC"},{width:97,height:158,url:"data:image/png;base64,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"},{width:49,height:79,url:"data:image/png;base64,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"},{width:25,height:40,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAAPDSURBVL3Bf4iedQEA8M/3+7zPc7vjfZ/3zndr5YQF28LbK6GwVEisJCL/PKEgVyCEU+7CFlhEHS/6Yn8YwZHsrpWTCKLaMJKI/dESz4k1UEHxDpG20XbLPMv0Lt3s8u7phZOcd+97d/vRfT7Bym7HDovmUaCEeYtKeBMPYUEHQXtfxLU4iQNWdis+idcxYo2+jb0u3G34PrZbxTC+4OJtxQg+poNvYLdLdyV+4DyJRTdjB0Zdun8hxQCedp7voeTyegA1LRF1vIN3XV6PYY+WiAEccvk9i0xLRIKX/X8saClhXgeT9w99C7uEoldb4RzG643REe3NYUeCT+NJS0w2B/9QBHeGED6EHDXUUEMNNcJHKW4b+swnrht74plfWe5qfLiE/1hiojn0ZYpbgrCv3hi9xwommkOPBMUdk82hr9Ubo/t8UIEsIrVE4CMIOGoV1zRGv1oU4Z+42XLdOBFRWO4xvFYoHpxsDl5rFSF4B6nlavhTRLBEvTH6Z8J3ArWCRyeagze4OAXmIs7iJkvUG6OP4JuBjUH45URz8FMuXNAScQCf1Ua9MfYwvk6RB+Hnk83Bz1u7m3BOS8SbSHRQb4z9rODuQpESHp5oDu6yNp/Dj7VEi57CvTq4pjH2aBDuKcjxoNVFBMxqiRb9Hn2o6aDeGD0UeJzwcau7F+PeE73vEPZaQaF4iyK1sitRxePeE73vBfwdX3FphvAL54k+6CH043oXZw+mMOk80XL34UvY7gLMnP13js3Yb4mgjeHh4acr5fJ1fX1971Z7e1WrVdXeXtVyOc0r5Sy/ovZ2CMH8/LzXpqf97cxUz19fecVbb589sOeuu+62REkbMcYNMcZuSyWJmGZaKiEE/5OUxKSkpUsb0TqI1kG0DqJ1EK2Dkjamp6fnZ2dmzMzMKL/xhjzP5dWqK/r6bNq0ycaNG8UkMTc359SpU6bOnDH96qvmWrRR0saRI0d+OzU1tStJkpDnuVqtZsuWLbZt22bnzp36+/ulaWp2dtb4+Lhjx445fvz4THd394+0EbVx8uTJB3p7e19yAXp6en53+vTp57URdZDn+U+SJFmwBqVS6fWtW7fep4OogxMnTvywXC4/bw0qlcqvjx49elwHJSsYGBjYd8ONN451b9iwoaurS09Pj0qlIs9zaZbZctVVNm/e/JeDBw9+9/DhwzopWcH+/ft/evvu3TEtlfZmWdafZVmSZZksy6RZdi5N0z/meT48MjLyDysI1ujZ5567NUvTW9I0rWZdXWcWFhZ+s2P79hetwX8BmSv+qJg8NW0AAAAASUVORK5CYII="},{width:13,height:20,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAHRSURBVJ3BQWhSYQDA8f/3KcHGHKgv3cEx58haztMQ3qE6dNghioICYyvaKZuHQYcOBUl7R/G8nbpHdOvmQQMXEh19czMwPfTIy4aMIGLufT3yUW+jaOz3E/yRBuaBAWADgiE/0AY2OeYqcJ9/uwPcxGMaWOb/bgNXcC0DkpN5gEMCh4DNyQxw+AEbl7mWfyNgGqEEvwgcn1KF9bsMfQPmcSziMI389S0j/4FjzLX8uy0j/4iha8AlCQgcAuoKzpjGylO8BBaIKENBoC4BiSNVWN8VqIcCkTWN/Av+TgCHEugDl3GkChsfFeoecMs0VnIcJQAfDgm8Bc7hmitsmMBrEAsctQRs4pAM7QBZflMDUBLX/vcfI8Ah0MYhcOVyuecXZ2czU/G4PRUOhrSx0bPjM+dbn+u1mWaz+XXp8ZMFXH5c0Wh0QghxA4caG2dkchIhxAVbm0BpexIPySlITsGPq91uWzvb20prtUQ8HieTyRAIBKhWq3Q6nT08fLgajUbti2UtWpYVllISi8VQSlEulw8qlcqzfr9v4pJ4JBKJl9ls1tZ1HU3TCIZC6Lpe63a7r/Dw4dHr9d4Xi8WDZDI5GolEdsOaVp5Lp1dLpdI+Hj8BtxuMfeusE5cAAAAASUVORK5CYII="}];yg.forEach(e=>{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const Ag=yg,fg=3*Math.PI/4,Pg=3*Math.PI/2;class bg extends R.y$t{constructor(e,t){const i=(0,N.ZP)()({minRays:8,maxRays:60,minRayLength:0,maxRayLength:200,longRayLineWidth:1.5,mediumRayLineWidth:1,shortRayLineWidth:.5,stroke:"yellow",tandem:ye.Z.OPTIONAL},t);super(null),this.bulbRadius=e,this.minRays=i.minRays,this.maxRays=i.maxRays,this.minRayLength=i.minRayLength,this.maxRayLength=i.maxRayLength,this.mediumRayLineWidth=i.mediumRayLineWidth,this.longRayLineWidth=i.longRayLineWidth,this.shortRayLineWidth=i.shortRayLineWidth,this.setBrightness(0),this.mutate(i)}setBrightness(e){const t=0===e?0:this.minRays+Ve.Z.roundSymmetric(e*(this.maxRays-this.minRays)),i=this.minRayLength+e*(this.maxRayLength-this.minRayLength);let s=fg;const n=Pg/(t-1),r=Ve.Z.linear(.3*this.maxRayLength,.6*this.maxRayLength,this.shortRayLineWidth,this.longRayLineWidth,i);this.lineWidth=Ve.Z.clamp(r,this.shortRayLineWidth,this.longRayLineWidth);const o=new Nt.bn;for(let a,h,l,d,c=0;c0),0===t&&o.circle(0,0,this.bulbRadius),this.setShape(o)}}ft.register("LightRaysNode",bg);const Eg=new Image,vg=Z.Z.createLock(Eg);Eg.onload=vg,Eg.src="data:image/png;base64,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*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*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*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";const wg=Eg,Vg=new Image,Sg=Z.Z.createLock(Vg);Vg.onload=Sg,Vg.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAAE7CAYAAACPC15UAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAD85JREFUeNrs3QtwVHe9wPHfPvKAhITQkEAgJST0AaUPRntrIEC02opja58WpjMXeokzUm2t43VGbrW1Vu3DWpl6naptuYiOWq3T0qmg00oB0wFCIVDaRA2BpEB5piaBZF9nd+//f/Lobs4J2Ww2kN39foYze3azOSTZ/zf/PbubPY5wOCxAunPyIwAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEfgQAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEwI8AIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEIBEcyfDF/n7B+ZscegVh0P9M9fM08jLBlvvv+4gn2euOp3mZdHXc+qrfHRZ7+f1XK7Wnfq8Q5xO/TGnOPsuMz/uNC93Onuua5469XVc4nQ5zfNOp0tczt7zLrdad4rLrU71usslbn2qzrvdGebS80XHLxQMis/nFb/fZy4Bc/FLIBCQgOEXI2BI0AhIMKhO1XVDoZC5hMPh2JcB1w+pJejIPHDbD7fXEEICFPkbF4/qf9AXR/SFff8s6z1h9KyHeyMJ9UXo6IlBXx7uDSHcG0JYhRBWAz+sAtCL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";const Tg=Vg,Cg=new Image,Ig=Z.Z.createLock(Cg);Cg.onload=Ig,Cg.src="data:image/png;base64,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";const xg=Cg;class kg extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({baseOnly:!1,isExtreme:!0,scale:Eh.BULB_SCALE,isReal:!1},t),s=i.baseOnly,n=i.isExtreme?Tg:i.isReal?gg:xg,r=i.isReal?ug:Ag,o=new R.Eep(i.baseOnly?n:wg,{scale:.125,centerX:0,bottom:0,pickable:!1}),a=new R.Eep(i.baseOnly?n:r,{scale:.125,centerBottom:o.centerBottom,pickable:!1});let h=null;if(i.baseOnly)i.children=[o];else{const e=a.width/2;h=new bg(e,{scale:i.scale,x:o.centerX,y:(a.top+e)*i.scale}),i.children=[o,a]}super(i),this.baseOnly=s,this.backNode=o,this.raysNode=h,this.brightnessProperty=e,i.baseOnly?this.brightnessObserver=null:(this.brightnessObserver=this.update.bind(this),this.brightnessProperty.link(this.brightnessObserver)),this.disposeCustomLightBulbNode=()=>{i.baseOnly||this.brightnessProperty.unlink(this.brightnessObserver)};const l=this.localBounds.width,d=this.localBounds.height;this.mouseArea=(new Nt.bn).moveTo(this.localBounds.minX,this.localBounds.minY).lineToRelative(l,0).lineToRelative(0,.6*d).lineToRelative(.25*-l,0).lineToRelative(0,d*(.4-.1)).lineToRelative(.5*-l,0).lineToRelative(0,-d*(.4-.1)).lineToRelative(.25*-l,0).lineTo(this.localBounds.minX,this.localBounds.minY),this.touchArea=this.mouseArea,this.visibleProperty.link(e=>e&&this.update())}dispose(){this.disposeCustomLightBulbNode()}step(e,t){this.update()}update(){if(this.visible&&!this.baseOnly){const e=this.brightnessProperty.value;this.backNode.visible=e>0,this.backNode.visible&&(this.backNode.imageOpacity=Ve.Z.clamp(Ve.Z.linear(0,.5,0,1,e),0,1)),this.raysNode&&this.raysNode.setBrightness(e)}}}_defineProperty(kg,"webglSpriteNodes",[new R.Eep(wg),new R.Eep(Ag),new R.Eep(xg),new R.Eep(Tg)]),it.register("CustomLightBulbNode",kg);const Bg=new wt.Z;class Mg extends tm{constructor(e,t,i,s,n,r){const o=new kg(new Gh.Z(0),{baseOnly:!0,isExtreme:i.isExtreme,isReal:i.isReal});r=(0,N.JA)({pickable:!1,showHighlight:!1},r),super(e,t,i,s,o,new R.AeJ(0,0,10,10),n,r)}updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get().minus(e).angle+Math.PI/4;this.contentNode.setMatrix(Bg.setToTranslationRotationPoint(e,t))}updateOpacityOnInteractiveChange(){}}it.register("LightBulbSocketNode",Mg);const Dg=new wt.Z;class Og extends tm{constructor(e,t,i,s,n,r,o){const a=(0,N.JA)({isIcon:!1,useHitTestForSensors:!0},o),h=new Gh.Z(0),l=Ze.Z.multilink([i.currentProperty,s,i.resistanceProperty],(e,t,i)=>{let s=((e,t)=>1*Math.log(1+t*e)/Math.log(1+2e3*e))(.35,Math.abs(e*e*i));s<1e-6&&(s=0),h.value=Ve.Z.clamp(s,0,1)});let d=new kg(h,{isReal:i.isReal});a.isIcon&&(d=new R.Eep(i.isExtreme?dg:i.isReal?ug:Ag,{scale:.37}),i.isReal&&d.addChild(new R.Eep(gg)));const c=Dl.createSamplePoints(i.startPositionProperty.get()),u=c[0],p=c[1].minus(u),m=p.x,g=p.x/2,y=e=>e.moveTo(0,-73).arc(m/2,-73,g,Math.PI,-Math.PI,!0).moveTo(0,-73).arc(g,-73,5,Math.PI,0,!1).lineTo(m,-73),A=2*g,f=Math.cos(Math.PI/4),P=Math.sin(Math.PI/4),b=e=>e.moveTo(0,-73).arc(m/2,-73,g,Math.PI,-Math.PI,!0).moveTo(g+.5,-73).lineToRelative(g*f,-g*P).lineToRelative(-A*f,A*P).moveTo(g,-73).lineToRelative(-g*f,-g*P).lineToRelative(A*f,A*P),E=e=>e.moveTo(0,0).lineTo(0,-73).moveTo(m,-73).lineTo(m,p.y),v=E(y(new Nt.bn)),w=E(b(new Nt.bn)),V=y(new Nt.bn).transformed(wt.Z.scaling(1.75)),S=b(new Nt.bn).transformed(wt.Z.scaling(1.75)),T=new R.y$t(V,{stroke:R.Ilk.BLACK,lineWidth:a.isIcon?4:Eh.SCHEMATIC_LINE_WIDTH});a.isIcon&&(T.center=d.center.plusXY(0,22));const C=e=>{a.isIcon?T.shape=e===ut.IEEE?V:S:T.shape=e===ut.IEEE?v:w};mt.link(C),a.isIcon||(T.mouseArea=T.bounds.dilated(2),T.touchArea=T.mouseArea),super(e,t,i,n,d,T,r,a),this.rayNodeContainer=new R.NBX({children:d instanceof kg?[d.raysNode]:[]});let I=null;t?(this.socketNode=new Mg(e,t,i,n,ye.Z.OPT_OUT,a),I=e=>{this.rayNodeContainer.visible=e===kl.LIFELIKE},n.link(I),t&&!i.phetioIsArchetype&&t.lightBulbSocketLayer.addChild(this.socketNode),t&&t.addChildToBackground(this.rayNodeContainer)):this.socketNode=null,this.disposeCircuitConstructionKitLightBulbNode=()=>{l.dispose(),this.socketNode&&(this.socketNode&&t&&t.lightBulbSocketLayer.removeChild(this.socketNode),t&&t.removeChildFromBackground(this.rayNodeContainer),n.unlink(I),this.socketNode.dispose(),mt.unlink(C))}}updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get(),i=Ys.Z.getAngleBetweenVectors(e,t)+Math.PI/4;Dg.setToTranslationRotationPoint(e,i),this.contentNode.setMatrix(Dg),this.rayNodeContainer.setMatrix(Dg),this.highlightNode&&this.highlightNode.setMatrix(Dg),this.socketNode&&this.socketNode.updateRender()}dispose(){this.disposeCircuitConstructionKitLightBulbNode(),super.dispose()}updateOpacityOnInteractiveChange(){}}it.register("CCKCLightBulbNode",Og);class Lg extends R.NBX{constructor(e){const t=(0,N.ZP)()({sphereOpacity:1,minusSignOpacity:1,radius:10},e);t.children=[new R.Cdc(t.radius,{opacity:t.sphereOpacity,fill:new R.XMe(2,-3,2,2,-3,7).addColorStop(0,"#4fcfff").addColorStop(.5,"#2cbef5").addColorStop(1,"#00a9e8")}),new R.AeJ(0,0,11,2,{opacity:t.minusSignOpacity,fill:"white",centerX:0,centerY:0})],super(t)}}ft.register("ElectronChargeNode",Lg);class Rg extends Zp{constructor(e){super(0,0,23,0,{headHeight:10,headWidth:12,tailWidth:3,fill:Vh.conventionalCurrentArrowFillProperty,stroke:Vh.conventionalCurrentArrowStrokeProperty,tandem:e});const t=this.center;this.translate(-t.x,-t.y)}}it.register("ConventionalCurrentArrowNode",Rg);const Ng=new Lg({sphereOpacity:.75,minusSignOpacity:.75,scale:.78}).rasterized({wrap:!1}),Zg=new Rg(ye.Z.OPT_OUT).rasterized({wrap:!1}),qg=new R.NBX({children:[Zg]});Ze.Z.multilink([Vh.conventionalCurrentArrowFillProperty,Vh.conventionalCurrentArrowStrokeProperty],(e,t)=>{qg.children=[new Rg(ye.Z.OPT_OUT).rasterized({wrap:!1})]});class Fg extends R.NBX{constructor(e,t){super({pickable:!1,children:[e.charge>0?qg:Ng],disposer:e}),this.circuitNode=t,this.charge=e,this.outsideOfBlackBoxProperty=new se.Z(!1),this.updateVisibleListener=this.updateVisible.bind(this),this.updateTransformListener=()=>this.updateTransform(),e.changedEmitter.addListener(this.updateTransformListener),e.visibleProperty.link(this.updateVisibleListener),this.outsideOfBlackBoxProperty.link(this.updateVisibleListener),this.updateTransformListener()}dispose(){this.charge.changedEmitter.removeListener(this.updateTransformListener),this.charge.visibleProperty.unlink(this.updateVisibleListener),this.outsideOfBlackBoxProperty.unlink(this.updateVisibleListener),super.dispose()}updateTransform(){const e=this.charge,t=e.circuitElement.currentProperty.get();if(e.charge>0){this.translation=e.matrix.getTranslation(),this.rotation=e.matrix.getRotation()+(t>0?Math.PI:0);const i=Ve.Z.linear(.015,1e-6,1,0,Math.abs(e.circuitElement.currentProperty.get())),s=Ve.Z.clamp(i,0,1);this.setOpacity(s)}else this.translation=e.matrix.getTranslation();if(this.updateVisible(),this.outsideOfBlackBoxProperty.set(!e.circuitElement.insideTrueBlackBoxProperty.get()),this.charge.circuitElement instanceof fl){const e=this.circuitNode.getCircuitElementNode(this.charge.circuitElement);if(e instanceof hg){let t=null;if(this.circuitNode.model.viewTypeProperty.value===kl.LIFELIKE)t=this.charge.distance{const i=e.split(" ").map(e=>{const t=e.split(",");return new Ys.Z(Number(t[0]),Number(t[1]))});t.moveToPoint(i[0]);for(let s=1;s{const t=this.center,i=Ve.Z.linear(0,1,.75,2,e),s=Ve.Z.clamp(Ve.Z.linear(.8,1,1,0,e),0,1);this.setScaleMagnitude(i),this.setOpacity(s),this.center=t},from:0,to:1,duration:.3,easing:Zd.QUADRATIC_IN_OUT});s.endedEmitter.addListener(()=>this.dispose()),s.start()}}it.register("FuseTripAnimation",Ug);class zg extends tm{constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({isIcon:!1,useHitTestForSensors:!0},r),a=new R.Eep(Gg,{scale:.691}),h=(a.width-30)/5/2,l=new Ys.Z(15,0),d=new Ys.Z(a.width-15,0),c=(new Nt.bn).moveToPoint(l).zigZagToPoint(d,4,Ve.Z.roundSymmetric(h),!1),u=(new Nt.bn).moveToPoint(l).zigZagToPoint(new Ys.Z(a.width/2-8,13),4,Ve.Z.roundSymmetric(h/2)-1,!1);u.moveToPoint(d),u.zigZagToPoint(new Ys.Z(a.width/2+8,-13),4,Ve.Z.roundSymmetric(h/2)-1,!1);const p=new R.y$t(c,{stroke:"#302b2b",lineWidth:4,center:a.center}),m=e=>p.setLineWidth(Ve.Z.linear(i.currentRatingProperty.range.min,i.currentRatingProperty.range.max,1,4,e));i.currentRatingProperty.link(m);const g=new R.AeJ(15,3,a.width-30,a.height-6,{fill:"#c3dbfd",opacity:.5,stroke:"black",lineWidth:.5}),y=new R.NBX({children:[p,g,a]}),A=i.chargePathLength-40;let f=(new Nt.bn).moveTo(0,0).lineToRelative(i.chargePathLength,0).moveTo(0,0).rect(20,-15,A,30);const P=o.isIcon?Eh.RESISTOR_LENGTH:i.distanceBetweenVertices;y.mutate({scale:P/y.width});const b=y.width/f.bounds.width;f=f.transformed(wt.Z.scale(b,b));const E=new R.y$t(f,{stroke:R.Ilk.BLACK,lineWidth:Eh.SCHEMATIC_LINE_WIDTH}),v=A/7,w=(new Nt.bn).moveTo(0,f.bounds.centerY).lineToRelative(20,0).lineToRelative(0,-15).lineToRelative(A,0).lineToRelative(0,15).lineToRelative(20,0).lineToRelative(-20,0).lineToRelative(0,15).lineToRelative(-A,0).lineToRelative(0,-30).lineToRelative(v,0).lineToRelative(0,30).lineToRelative(A-2*v,0).lineToRelative(0,-30),V=e=>{E.shape=e===ut.IEEE||e===ut.BRITISH?f:w};mt.link(V),E.centerY=0,y.centerY=0,E.mouseArea=E.bounds.copy(),E.touchArea=E.bounds.copy(),super(e,t,i,s,y,E,n,o),this.fuse=i;const S=e=>{e&&!phet.joist.sim.isSettingPhetioStateProperty.value&&t.addChild(new Ug({center:this.center})),g.fill=e?"#4e4e4e":"#c3dbfd",p.shape=e?u:c};o.isIcon||this.fuse.isTrippedProperty.link(S),this.disposeFuseNode=()=>{y.dispose(),i.currentRatingProperty.unlink(m),o.isIcon||this.fuse.isTrippedProperty.unlink(S),mt.unlink(V)}}dispose(){this.disposeFuseNode(),super.dispose()}}_defineProperty(zg,"webglSpriteNodes",[new R.Eep(Gg)]),it.register("FuseNode",zg);const Wg=Eh.INDUCTOR_LENGTH,Qg=(Wg-40)/4/2,Xg=(new Nt.bn).moveTo(0,0).lineTo(20,0).arc(20+1*Qg,0,Qg,Math.PI,0,!1).arc(20+3*Qg,0,Qg,Math.PI,0,!1).arc(20+5*Qg,0,Qg,Math.PI,0,!1).arc(20+7*Qg,0,Qg,Math.PI,0,!1).lineTo(Wg,0),Kg=Eh.INDUCTOR_LENGTH,Jg=new Nt.Ob({lineWidth:4,lineCap:"round",lineJoin:"round"}),jg=new Nt.Ob({lineWidth:2.5,lineCap:"round",lineJoin:"round"});class _g extends tm{constructor(e,t,i,s,n,r){r=(0,N.JA)({isIcon:!1,useHitTestForSensors:!0},r);const o=(new Nt.bn).ellipticalArc(Kg-7,30,5,30,0,-Math.PI/2,Math.PI/2,!1).ellipticalArc(7,30,5,30,0,Math.PI/2,-Math.PI/2,!0).close(),a=new R.y$t(o,{fill:"white",stroke:"black"}),h=Nt.bn.ellipse(7,30,5,30,2*Math.PI),l=new R.y$t(h,{fill:"#c4c4c4",stroke:"black"}),d=new R.NBX;i.inductanceProperty.link(e=>{const t=Ve.Z.roundSymmetric(Ve.Z.linear(5,10,12,20,e)),i=[];for(let s=0;snew R.y$t(a.getStrokedShape(e),{fill:t});i.push(h(Jg,"black")),i.push(h(jg,"#dc9180"))}d.children=i});const c=new R.NBX({children:[l,a,d],centerY:0}),u=Kg/Xg.bounds.width,p=Xg.transformed(wt.Z.scale(u,u)),m=new R.y$t(p,{stroke:R.Ilk.BLACK,lineWidth:Eh.SCHEMATIC_LINE_WIDTH});m.mouseArea=m.bounds.dilated(2),m.touchArea=m.bounds.dilated(2),super(e,t,i,s,c,m,n,r),this.inductor=i}}_defineProperty(_g,"webglSpriteNodes",[]),it.register("InductorNode",_g);const $g=new Image,ey=Z.Z.createLock($g);$g.onload=ey,$g.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADGCAYAAACXUs/uAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAK6FJREFUeNrsXUuMI8d5ruZj+JgX57mrXUmmotiILMNa27B9MeBZGAaCKIBXco*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*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";const ty=$g,iy=new Image,sy=Z.Z.createLock(iy);iy.onload=sy,iy.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANQAAACFCAYAAAAjDNZKAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAJdFJREFUeNrsnQl4m9WZ719tn/bFWizb8m7HdpzEsbNvDkkIIRtbSAlLWwJ0ugAduAwzpdPeFugdOk/LdGin9Ha4XaCXrTRlSxNaKCFNIJAQEickTp3FsRPv8iZZkrVrzvtJnyzJki07ji3L5/88snbp0+fzO+9y3nMOLxAIABUV1cSIT0/B2DQrV1dfYtLtoWeCKp541EIlL5NetbWtZ2B36G4ROXdN9KxQUQs1Tgn48BRe33vDEsjWq35JzwgVBWq8ppzH08gYXllRjhY2raiA9m7r9fgYPTNUFKhxKNeg+kpptkqsVkghW6eCTcsrIDND8Tg9M1QUqHHI6fZ+W6dkwvc3r5gNgy7PTnpmqChQY1RepvrR1fMLtH6fL/xYTbkJxIxQSty+anqGqChQY7ROm5aUgtfrjXp88ew8NFkUKco*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*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*rnaLDx2RjWC4lMyXPC5Ain9m4rHG7AAtcADNhd4bGxohwtC1q+UQV5BhU7Pha58haOW/Ranb2JQFLJJU9nKKQ3fOuLtUyePujeYVZQp028XdSB44040yA8jhmeYEhFhdq5ZXHBC3uPZhRkZXzd7fGt1yjEJdxzncTK2IklIj1yoMfi4BUTgHC9ECwrmuosYL/VDi3EQjZ19MOFtl4CpZkFE6e2F2ZnoKUMEFfWYXW49hIg60NWUEPc3AqX2ztPwIece7cshPnFmeGlxBAmXKQlXmaPhbyhFb75H2+wLIcyvBQoqqTcoJ2k8T1G3Lby2uoiqA0BlCpTNhLNSEYQsHnbSCdgtbvi7h2Gg/BYHBtbtYPxkkGvTQgT6u4nXvERV+/nnb0DD1MLRTWqCrO1W31+/89JD266Y8MCYapOzcC4CoFyjHHdjERSKuVszDTSjOyf/v4gvHu4AQeEqyLHsGgMRRVXOrX8/kGX52d3bKgR4Co/qTzHCRs+TvzDqRW41SlarPEIq8hHyuZx2nvoDLx94LTb5fHeGDsgTIGiit9Ly8RVQiGfh4Wq02WLGxwExgtOsUBrhel+XD8iUbofZzhjlblYwiS9yhXC9NTz7+PN6+PVhFKXjypR3KTRqmS4J9L9JPYodXt8YolY5C016bxYDBpbIR7V00vHVwyb6isHo5sXskw7Es1QoEBRjQUyrGvjcshr8E95QWYh93yPxV7q8foUY7SE7OeRWESD84q4xwnMztxMtdBkUAuxVg4BzYqzfPdkCLN5z7x6wNc3MNjZa3VsGWm2AgWKKiWtIwSnD7HXBKhlPp+/sN82WIiWsjBb655dmMkgaLge5NWybAjSa+/XwcG6i5hi/2lXn+3xeEW0FCiq6QwbWkS8rEHQIACl7T1WdqysqjTbG2nRONcz2YQKxoo4foUgHT1z2WuxO33kM14mVulJbpxp1OOjQFGlG2jEgs212p0VxP3M5dxIjP/yjRqbhBEq+Hx+OBnn9nhtHT0DQgINW0pOLFGD1+c/RO7/LnIBy6SPgwJFRTVx+h8BBgBIUwHE1BD7eQAAAABJRU5ErkJggg==";const ny=iy,ry=new Image,oy=Z.Z.createLock(ry);ry.onload=oy,ry.src="data:image/png;base64,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*kZjNkLXxJ1DMnv6NAe6jnwqlrvKjK36uAGo+szpedi2vQX0J4XoeHksoR7+PLUSdi2aw/g0wA1KZxscTk2UdRnP3pnExSKQgQ+9rBF2kLZKuEPdW3RK0cqS0pw8M9TiIlPELbameMHN27g5GooUOeKT0jC8QuxsPFsY9Frufp1wLUzhhdrIHXx9Unv4NaNLDwwrK9lSK4sQ1Drtvjgw3da3PeZmaPAyZgYYYtF4q1bZj03l+KNwLvvzkcXd0/R41/GQtbeHRVVNcwq6SLV2uVbMbLXS0IHKYLvyP6Skm2lEEuWrcSmzWta5Hf5/dGj2B71EyNWz+BgBHXqZLZzc8tlJDZ+tgYL5y9BbNoNi1own8d64ec9x5B87QamzBqHbHkujv3yJ67EJMDawR7eA3rApaOnRa6tItaOXVta7Pc4b9JEtqmw58hRs1kwTi4TsGbtB5g7eyGuyeUWIxhJ/H4jByLlbBzeX/QprFq1gpOnO3yGPKKxJpglicXHsyxIrp2/HMQ3B3Wn5/j7+GBoeB+MHfw4e71ow0bEJd3PlTMUEI6Y+4bZ/pBV8+aie1Bgo1iwJYv/jTNXrsDGxzJ10snd83uiT4P9TSReUIy16cAWzpDGjLlS0tOxZe8+fLLzm7/tTaRA/6XRo1BzI7veNKkmj/RchPsHtdgYq8lZLjE4evZco1iOpoKp0yehZ89QLPvgYyhd7Ngqi80J9FCgAWIax2rJcnu*tJxe5YIQtP+xllkuF0xfrysbvb/0CypLaQmWeHu6YMnIEPN3rjhE9KbiWQ8PDDV5X+3qqdhAstbaWFNA42NdfbsTid1cgPi2tQcbCzAFSPSmliTIv+ABxI5NLZaFmjR+HiMj7qTAqEqlDnXBxSbWvVwuk8NciAxGuPssnc3TU2Y6mBAr+10euxLFjJ7Fu1acob+8iabJlQ4JEC8pupyRcnivYRMhfa*gdh/3HN9XzJMskVuQaPLS4txXLBmn29/D2N/SSYaIsmk0cMZ5auOYLKBNC2Yd0WHD16HOXusiZDMppBTBMdaT5WROQ8rgY2JXLpUw7JrVMRzxCycnMZyf4OeOOtWZjx6mSsWhWJK9cSUWQHo+shmsVSFZTWkmotJ1WzETTmT3lRp5tGsdSzjz+ORYL7qE6o5LT0v81Npk6sSh3a+vkOnDhxCorSYtR4OMPKwbKLF5BQQXUFqfwZVWmiYjKcVE2YXKGBtSRydnKsHefqG65TpCAsmDL53k8SN/RBl6BBbmZLA81spi0lJRW7du3F1SsJyCkqRLWbk9ncxqr8Yla7va2jDJ18vFnBTl5XsJmQa/UbcyUfoy1GaEOMoNGS4O/vx3IUCcoiJQ4dOoY/Tp5GgbIYJWVlUCiLauV869q5Y9rEIxdPNaZGRKKF52h9LFrGJ2zQw2xRBF67vYW4habiyNlzuJhYtwrS7PHj6iiLLdFtpLEl7fGl2L8uMPe5tLgEaama+W4e7TzY4t60BjEtlcpdPfOgSEsLoGkozk5OzZtcJHLQpg3l30T40IWw3j3YxmFZULIuZcbrwnMR/2I/vdp64Mv3lko6L59ywsHRmG4hCRbdg8QVmCQ3Tpe1oQwK7YwK9df6oJ55oe/cHBym4LmhT7KtUchFYoM+NbBOoK4nPiJBQ1uwkCpgtPTYi6NlgbuFHBycXBwcnFwcHBz6Yi71THcODg5uuTg4OLk4ODi5ODg4TI65BvNbwcFhNqTSf/8VYACS+RELYF0w6wAAAABJRU5ErkJggg==";const ay=ry,hy=new Image,ly=Z.Z.createLock(hy);hy.onload=ly,hy.src="data:image/png;base64,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";const dy=hy,cy=new Image,uy=Z.Z.createLock(cy);cy.onload=uy,cy.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANQAAACFCAYAAAAjDNZKAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAMbhJREFUeNrsfQmwJedV3unuu+9vX2fe7JqRNGhkJMuALY8B2SwJVqocCFAVbDDlVEIVNhXbmBSFTApkQ8XYlUDhBBK7UglkIRiSUA4pKOEQEseLJMuSRprtzbyZt293X7s75zvdfW/f9d23zLz35vWRevquffu+e74+53z/WRTTNMkTTzzZG/F5fwJPPNmZfP75j1/m3bOqqvyYYZif/9AnPv2cByhPPNkaOCd4h+0S9j6f+nStZjzuPM9g8iyUJ550sTgOeC77fdrpak2fbn1dNOijSMpPiYifYiGNvvHmmgcoTzxhAMHivN/n09ji6I83gSYcIL9PpVQ8IfdT8RCFAn4KBjQC72AaOum8GbWqF0N54oFIU9Wf4P0IHgv5NUoNxSgeDfIW5i1EiqLwMwrJjsXi7gAkkwyTgaQrAixDUT1AeXLkQJQSEGnqP+T9WTwWjwZoYiRBg4kYhcNBAZDC4FBU3pMKLAFO9WOY+M80Gfa*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*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*zQ8OubKMWw/fjuYLPIAgFc*ntazBYnHrAHkmpyzT7VAhrdhBDJc3ArmIld1cWMNWaBVb1VrBrqsfumDH/uUByIPUD1FAIXsc5ly5yiqK3ZAjl2nknG4fnAL+1lnQqHhzduLTTVBTlZBK5hsBZbFUHvaR+jCwxcsIPGG8vxWRCEOayUPrGMblGU31SSjYhjm/+GHX2A37USpYj6WL5bPu3vL1RVAUzcYzF/BawGin/7o8x6IPED1J6qqPBWPtGYN9FdyDpcomeivpGNpZcM1oM1s/GdbKJ+KkSx1MF1ymDI+v+dB409MH7esE59arVJoW5DdlOYqLVkLvIEW5xurDKazndi31rnIXjzkAWpXEvBpQ0L/ShNL2wJU8rs6Jlw7ZGWAJUSaDywc3C6zpQTcmb4n841WC21gssevjJ+HdRIwKdI4xhBAqe6gTBabW0kIVUW/BmEJP9qNyrYf90DkAWpvhBXu7FAKxYaBnnYpm+u/mSQAhMVja+xLWhJe55fWBBBY5wkFA5KFDeWPhRW6fjffBibHOvn9ATo2c6pe9FhOL1Hr+GVQ/Fb81ACYNSW9hmOUf/bjn/qCp9b76AUdtS8ckaFoimOgrHqpvTguAwvx1VsePUPPPP04Rfl+Jl+g5fVNUfZkTKXZhYw0wGcwPesGE9bM2E1720MPnSUfgwq+Xq2UJb2YbYrvsPj8+tXbFlPo5ur4H4xcURXlK55Kexbqvoo/GGoKm9DQcte96Fxiilun0ehQUvZr6aw0dKxUS07e2/d0KG0AGUEnz56zzwUzpRaawIQ1MVDl9cVnl7sXDLDrmhVL9e89lfYs1H2VYCROyj07emO4MRQfWRYxtlTScL8g8c0nO9UJsWX50KnTpygUtjLCK9lVMvVa/TxR0GiBqdmaOmREqdHo5UueSnsW6v5eQVy96rq5e7q+MzfQocXLlYqMkrRGtAQYUFWqkrnRKSPbnksUOiH9AFUhIiq5db6l1C3U3PwyH6/idvLqPfewji*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";const py=cy,my=new Image,gy=Z.Z.createLock(my);my.onload=gy,my.src="data:image/png;base64,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*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*ckw+84dDw8MEqPs+BvFX40QX/pJd/2UvSm6WdM26XfD60qI54fbA4SZYZ6PRt1Sg/gljqp2no2f9lSuTTw1jvF777/fwA9zVppEikVGCfQuhXESmpZqWo55Xy2xSVoZUVn2d6IMn8pZF3EMRiyjEfOE3B4LHxHbx/yF15pA/GoXhXvndSRj78cD/y/AAE2kndlPY28dAAAAAElFTkSuQmCC";const yy=my,Ay=new Image,fy=Z.Z.createLock(Ay);Ay.onload=fy,Ay.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANEAAAAxCAYAAABEfkxtAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADb1JREFUeNrsnQlUE+cWx292lkRAlCWIKEGJG6igoChuiNQdrdZnrVq1FmufirWtoj5rtdrFHl/b96ptXd9xAa1CFZCjtnXpAoogi4iyVhBNMAtkITtvvoFwUEETSCBD53/OdyDJZLbc39z7/WfmG0p9fT2QIkWq7aITZUVfnz9nAYUC6xwdHVRSaS1bUSPk9/HqrjN+btAbqFQa1dD8OwaDQUej6PPJn9k2RKUxeukN0OOp36iF362wVEhz5/Z+6/ips/FE2C6KrWeiWVMjx1Io1OPRs6d4T586qen9C8kpYK8uh7kR/cno7EI6nJQD3X2CQarUw49nUkupVMrSn1IvXichaoPeXPRagFar/X4A32/o6wujWRy243PTkCB1LVUKamHvybsQt20L/lomV8DxE4nqu4XFtxkMxsrDxxJySYhMkF+fvs5Bw4f81Levd0jMykVPwUOjMwHLSk2v6+sNkJyUSILURfT2zouwdcduYLMdQK/TNL2PYNr//TF1WVlFxq2svFnF5WVSEqJW4AkZOewIl+s2ccmiVzmenm5NnzFYHGDYsYHOsG/xu0mnjgNVmg1zJ/UjI5HAZZx/yFwYMaahZNdp60CrkoNWLWua5tEjIRw99qOsqkr4S8aN7KW2ApNNQLRk4bxPsdItJu7Dd52M8KCMQ2c6AsvBGXVIXzoPEiRil3E//qGA1Rs+eu4zg14LaqUUdBoFXnkg3S8qg2/+e7gGK/H2Hz1xeuPfGiIED41GW/qP12a6Dx82uAkepr0T3pqXbqaIBImY2nHgJqzetBc43TitToMA0tTV4M0IU1Z2PpxMOCfQ6/VHOhOmToEI2dUKhfLzxYvmeI8LD8Xfo1LpWNZxATrL0Wx4ngNJkkX2kYgE0Q8ZsPHTQyZNiwDSqRVYdpKAwdBwhuPqtXQ4k5hWgv27pTNs8Q6FCMGD/dkZOXksz2hX0xl2jX0ejkk7z7jjXqRzCQeBpa7EQOKTEUoAXfqzFNROw2B8RFTTAdWUg6lWJcP7TDqtCn+dnPozXLx0vUQgqF53+er15C4FUUt2NYKHiTJPK2bBUzsKq4d1GqVZy9z90Wb4Yl04GaEE0UeHCmDN+tin3qMzHYCB9YtfdoBFJoQGy0wIps6wxa16xQJy3AIDBlzB+jt8Izwo67zMLECdSK1a+VRn0hxdOH8OXp3IQ+mLjE6CiKaXtRAHSrypFCLcZGKwHPC/zwUxdiCmO9njJgSDJQV0agSDKQSD6cbcmVMLc3Lvjremk2eVTPSsXc3leuBGAYPFbhUevU6NgSPHM09bwGmuTRs2wP5NE8jIJJAup5eDgj0Ewse9uHpAJR7KTCiWaHRWi9MgmFAsIROiquqx1W1xi0M0b/b0//RwdVmyetUStpcXF9/g1pw2tLEaVa3JfR1TlJp8AewUBTBnIunQEU0f/68I1rz3nsnTo76TEaiWDs5GRw8dmB8+rILP9uxTqlTqw6eTkt+1yXLOaFevXLHQPThoKO60tVTLInBQikYdwuZnpS2la7/+CvveD4V6vY6MSoKJqq01a3p04EUuHWroahbUVUD9KCNQ6MCN4hA1X6x9vXeHQ+at26uXvbHgVUva4u3ORMhxq3os/CHug3fYI0cGt2gWGJ21thgE5ig78yaICi9B9HhfMiIJqJ9vVoLKeQSETxjXvszQaEi05PAZTYgbNzLhy68O1Li6OMe01xZvM0QIHmmt/Ks6tdrNwZEDp+MPPwcPMgY0WCq1JjjNtXPrZti9jCzjiKxNR/6CLdu3Wa7UwoBi2nGeMyQQTPMWvAlKhQzsWSyhczf22rbCZHY5h+xqQbXorKJO5evJ9aKEBQQC29GxCaD2OmttVdbNGzDCB0CvUpCRSGSpLdvvNzp8xsvIjA4fitfIyZNBrlBAbm6Om7BaeGLqlIid7j1d55hri9PNgUdSUxtfDxR/z14+VB6Ph8ODJJFIcBvSkgaBuUo5exq2z3cFnUpGBiKBFeRDhawb6TB8ZKhF54sO6KgfjprxZC6KWxcXFxg9ajSCiVJSUsJ7InyUPXvGK/fy8wqnFpeXlVuknEN29aBB/slUBjPUw9OLxvPlAZPJwAnGFoo3hUIOaUmHOm3Ho50uuHUaZoT2JKOQ4JLV6WD/VQrEbtps9WVFzV4Gjo5sQAnBmBQ0Gi2UlJbA40cP9QatJv3OnXvTX2aLvzATTY+anBY0MmgyBg+V5+vbAE5pAzgSidhmdnxK4hksC5EAdQVx7OkgrxF22PJQAsDKOby5uHRvAApLFAP4fFpJaWkYjckSYRxcSk67FGUWRPPnzNzHce6+LHD4CCaacUVlBVy5egUqKipsbqdnZWYBl42MC1cyArtAFlp/oAxiP3i/U5aPEkNmJmo3wdvbG2u9YfTosVTs/SnLly1Vy6TiQ6fOnlv1wnIuKmLipn78AR97cr3oErEYhwdlHVPUWeXcjs2bYcM0e/wIRoq4qhKp4btLYlixZgN4enl3yDJROWeKUHby7uUNbDYbqquF+sq/ymKTki988xREMW8t3+zc3XVbnUrNEAge4xlHozHvRGhnQPToYQWkHt0Db7/iSUYhgXWvUgF7fqqGz//9JbQ0lkZnQ2QUk8nEM5S7uwfY27G0UrFo+/4fDn5Cj545XVFUWu5Ap9OBwSDW0Tz+6GGIGU/2hYisW0W18EuxHew7sN/m1xUlFlSZFRTcRf8zKBTKzumvRG6h5+Xe8eLxemdk5d7p/+SJCBwcsNKIw2lqNBrNJjcIZaFuIMLKODILEVXn06uhsLYnxMZttOn1VKs1IJPJmhqCydnZCUYOD7xfeLcohN5o3/mj80APKit/yc654yoQCAE1JCNU9vYO+F8Wi0lmIVLt1ncXHoEHfwzErppnc+umVCoxWORN0Oj1+qbPXDB4xowKFvXu1Wui8aRsU/3W+EYPBNO9+0V/ZuUWOKjVamyGdXhrXhc2z1SdARUa9YXMQsTVnrMVMHzcTAiPmGIT62OEBcX5s9AYxWKxYBC/nzJg8MBRz17R8FwnqHECx3nRM5Y9qKj4Nie/kIVgal4XikQivCGhcg/BJJdKgO3s0iEbzeY4wv2HSjIaCarOdlL1Oh0Wr2LcQDNWXK2JjsX3kEH+Gp6v76rTiedbdM9a3ZrGLxyaEB62SSwW7SwoLKbqWiAUUSuVSqE4J7MhwDGQ2E5Yc+5uNaiQg9NvcBDWKX0AQf26kVFJMCE3dU9iCnj08oH+fH6HQYMO9PIaCdTJZY1lW90L4RnI9zP4+/luPJWU+sWL5m/yVdwL5808mF9wf2lewb0WR4+4fHxPy1nDilDt+HAtbF9AlnRE1fqDZbD1k13AcXLtEGieVXTMdrx8e1Z+fXsbBg/0P5GYfPENU5Zn1q0Q6Dq6wQN5KXl3748qLa+gmAKRNaFCF5320mWT2YigQlcobIuvhq27drXr/JCp0LwMIveePSA0OPCP/IKSaebcRt6m+4kQTEMD/C/9lnErWCB8YhZErUHl1MMN7NkcMhv9zYROtJ7LY0Bs3L+sDk1rELm79YAhA/rnlZVXhbdlDIZ23dmK3x4hfpKacSvX69je9nv9NDq9EaqGLGUKVCgbOcluwviA7mREElRXcsVQKPOCFe+utSo0zypm6zfgzXUX+vj0mdyeobUsMlAJgsmVzboYERbgzqBRLLZzTYVq1bIVsG8lmY2IrPjfpMDmTYDp0XOsBo1RWn09XP49VyCSqyMtMS6dRUf7QbeM8/t6fBUSwHOzIEsvVWlpKdAlN2HqcA4ZjQTW3hQJDAqaBFxPD6vMH2MHMnJLhIVlj9dacrhhq4w7987y1+P4fTzjBvlxHTtqAMWEUwmwbRZ5JTfR9c+jNbBi8WvAsrPghagUCmQXlCtLq0SffHvw+C5Lr7NVhxHGYNqLwfTWIJ6n1S/NRTcLUgTXICqARUYigSVX1cOOFAosX7zQIvMreiBU5hZVfo/BE2utdbb6WNzIyYuKCDsVEug3nuvKYVhzWQkJJ2DdBC2w7ShkNBJUaXlaELMCYURwcLvmUyWSaTNyiq+kXf59vrUfBmb1+qdxAyIRTOPHBJ2PCh822oVtR7XGsgzY5tSqVODAIiEion4v0kOJwgsiw9oOkESuMqTfLr6WlHoluqOepNfhzydCTp6HKyc+JIDnz7FnWgymO/k5oH2cDnODyH4REVUiNEBSYU+YPWt2m74vq9MYMnJL7j0WyRZ09AOSO+1JebOmRo7t19vjdOTYQPf2OnlKlRqSE4/DxigDGY0ElKCmHnan0WFNzJtmfxc5bldvFFRXieQRnfV08U5/ZqvRFg8N4LlR2wjTyfiTsHacHNhkGUdIfZZWD9PmLAYHO9NNIQMWtulWsKsJCZFRTU6embb4tWvXoZ9dAYT5UcloJKhyKgxwudwTomfNNCFiKXCnuEqRVVD29ZGTZ+JsYf1tBqLmMA3o67FqoC/3pYcliVgEl9POwodRZCASXRfz9SB2CIKRwSNa7/eWPKwrLBd8Z027uktAhGSqLX7gyDGIm1KHlXFkEHYFfftrPQwZNQO8uE9fwtWRdnWXgag5TNMix/w8Npg/9FlbHJVxw5wKINCbLOO6ktYn1MOKpQvBzp6N29XXMwtvp1z8bZItwkMIiIwy2uKB/j7+diwGVSyVQXxCPNYPIo2Eria5CiCzggGho8PudoZd3WUhIkXKlvV/AQYAEtvrGSQaGsIAAAAASUVORK5CYII=";const Py=Ay,by=new Image,Ey=Z.Z.createLock(by);by.onload=Ey,by.src="data:image/png;base64,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*gnEKPnmn1czD1IV94Fg3UkNYQxwPzhN+HtS11H781fD4LpqnoYFGrpsL91gR+UqpAH8Jy61m6D8uqo6zD/y4ftn/f*ckMB0Ihz6/yg7tPHA/jewmw2W2Oh0sKGDnx8dY/98pjEMDt8M5zKazYYncXCjN2YTYEw4CMSIGYTjxdRqrnnC2M1dzz10A3ZWxUNde9fJv3UXk2BdxmXQtobB3hv8kavfjdFCd5+nRzbBdHLU/qw23j7tvSsq2Py9JmCJ3Z3V8bzl5w2tgVBo563LkNCWHjb+RNZjUkw9Z+M9baIgP5jNZsCYcBBIpxFPLPWW10ddgZfLu0bLy+qj4TQ5gm/9j5q3XEZUM6QRMXQ6qeZeSKkm34uBtk7LRZ7ldyLhH0RcRxtiyZFfwbMxLaHWqY0lw67ybNS1BxFhDIarbfwTnMPC22Dp8GtOtyVM0QkYExYYhqlgTqxMxEtBJGDlv8bCscaBbpf5ZMIJGBTS4XL+1uoU0lJ5wWoLdhsbMso5kfSlDcTCxMJaRmEyoT6k4OWhWrcCyVVXQXxQO5jcdHVmJtbA/joV3OqwlGvdA/uphDqSge66tTE3ucqtjcdjGzzaQLqQEX1oqEaw9a7R4J9LROCqbKHB78nGAHknF+CubCwaUiloXVaMuORayEO0uL+ENZ1FIHQEB5sk7VkiAhrI3VlIgjKUTBdiY2oCC2nKntevzRxcI9jGWPJ9ZzbmEAHHBbfjvhLWdLYMUoZHC2laKMkAVAyODAlrhanxrCg7C1P5NhKCO2B2UpUoG8uGX+5hI0dVg/tJbAYxkzekATZp2pNxLFfj208KkmAXayN1ABVV18nGl1IrRduIIyUfzWg2qMBoCYf7SHDjztQqbEpBpCOPiGLh+fHwWEwDjIm4C96Mg+SlVMLJpoGcWCZEN3hl4/mHquBQvYqz8UQcCzgeIwoNN9RL/xx4RYWuk5iPalJJNqmD+OB2r22UskmcwGiZ5i2HiUDoOoyNxPtyiCRq2jtsMyeQ/fkq+sCcTPQJgnBU/Gg9m8GVWPQP7aijQBCEX17ZBWI2cRMK0C8IwlFme2O/dnPPEhUtUpXoG8TfmfEuy/AyiLXMKiUvc9E9iJ9T6vjBLhCzGbabUSAIst3xA+/2GJ8sUtELItToI8RPaf7pJjbKaQaxZRHsrCN+THH3Cd0FUmS2POkTO+uI38FYnwnissSi7HxJtQqzco*kHbPvFFjbXbQbBLIL4cfZY7Wx6j9tcfFre2pEzLpzegCkT3Yb4CUWz3md3OZuhcDbRmkXo43DV6DvEx2l2lT2c9kFslMxT0Qeq70b/IT5OTu5f2FLRAqFsfVFFBZKNPkR8lNIXPmBz3C2gcDfTBJALZu45CVhqIT5XWpH0kCug8+6e93NVVCD0ehEc1UJ8iYz5JWyFp4U83qx1b0XrrafTw+ux1EJ8iNy8bewBIQsKfvra5jmqubTvjr5F+rs4FmxntwldWNTjCTf9EkWC9G9xLNohXByiBULZMBtFgvRPcSz+UJw4vBKIVSTYcUf6C/Qu3TlEHBpvvizz5kvkn9Hefwp0u/oKQb5lUFFkeCsOrzNIt2xCR7fWQ9+cK6EbVmw9CiC+B/3VeGYfZY18b0oqyQXSrW9SIJFQqDBW90b5SP+AxE2mhELRgeWS2SISO5IcVP8nwAD0D6zg/mAs6gAAAABJRU5ErkJggg==";const vy=by,wy=new Image,Vy=Z.Z.createLock(wy);wy.onload=Vy,wy.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAsCAYAAACHUEHxAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCNEM5Mzg1QjI5RjIxMUU3QTk5MUI1MkE1N0U2RTQzRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCNEM5Mzg1QzI5RjIxMUU3QTk5MUI1MkE1N0U2RTQzRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI0QzkzODU5MjlGMjExRTdBOTkxQjUyQTU3RTZFNDNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI0QzkzODVBMjlGMjExRTdBOTkxQjUyQTU3RTZFNDNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CLMnGAAACCJJREFUeNrsnXts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";const Sy=wy,Ty=[{name:"none",significantFigure:null,multiplier:null,tolerance:20,color:null},{name:"pink",significantFigure:null,multiplier:-3,tolerance:null,color:new R.Ilk(255,105,180)},{name:"silver",significantFigure:null,multiplier:-2,tolerance:10,color:new R.Ilk(192,192,192)},{name:"gold",significantFigure:null,multiplier:-1,tolerance:5,color:new R.Ilk("#e6b600")},{name:"black",significantFigure:0,multiplier:0,tolerance:null,color:new R.Ilk(0,0,0)},{name:"brown",significantFigure:1,multiplier:1,tolerance:null,color:new R.Ilk(150,75,0)},{name:"red",significantFigure:2,multiplier:2,tolerance:null,color:new R.Ilk(255,0,0)},{name:"orange",significantFigure:3,multiplier:3,tolerance:null,color:new R.Ilk(255,165,0)},{name:"yellow",significantFigure:4,multiplier:4,tolerance:null,color:new R.Ilk(255,255,0)},{name:"green",significantFigure:5,multiplier:5,tolerance:null,color:new R.Ilk(154,205,50)},{name:"blue",significantFigure:6,multiplier:6,tolerance:null,color:new R.Ilk(100,149,237)},{name:"violet",significantFigure:7,multiplier:7,tolerance:null,color:new R.Ilk(148,0,211)},{name:"gray",significantFigure:8,multiplier:8,tolerance:null,color:new R.Ilk(160,160,160)},{name:"white",significantFigure:9,multiplier:9,tolerance:null,color:new R.Ilk(255,255,255)}],Cy=(e,t)=>_.find(Ty,i=>i[e]===t),Iy={getEntries:function(e){if(0===e)return[Cy("name","black")];let t=Ve.Z.roundSymmetric(Math.log(e)/Math.log(10)),i=e/Math.pow(10,t);i<1&&(i*=10,t--);const s=Math.floor(i),n=10*(i-s);let r=Ve.Z.roundSymmetric(n);10===r&&(r=9);const o=(s+r/10)*Math.pow(10,t),a=Math.abs((e-o)/e*100),h=_.filter(Ty,e=>null!==e.tolerance),l=_.sortBy(h,"tolerance");let d=null;for(let c=0;ca));c++);return[Cy("significantFigure",s),Cy("significantFigure",r),Cy("multiplier",t-1),Cy("tolerance",d.tolerance)]},getColorNames:function(e){return _.map(this.getEntries(e),"name")},getColorArray:function(e){return _.map(this.getEntries(e),"color")}};it.register("ResistorColors",Iy);const xy=Iy,ky=new Map;ky.set(ad.COIN,ty),ky.set(ad.PAPER_CLIP,yy),ky.set(ad.PENCIL,Py),ky.set(ad.ERASER,dy),ky.set(ad.HAND,py),ky.set(ad.EXTREME_RESISTOR,vy),ky.set(ad.RESISTOR,Sy),ky.set(ad.DOG,ny),ky.set(ad.DOLLAR_BILL,ay);class By extends tm{constructor(e,t,i,s,n,r){r=(0,N.JA)({isIcon:!1,useHitTestForSensors:!0},r);const o=new R.Eep(ky.get(i.resistorType));let a=null,h=null;if(i.resistorType===ad.RESISTOR){const e=_.range(4).map(e=>{const t=3===e?12:0;return new R.AeJ(33+19*e+t,2.25,10,39.75)}),t=new R.AeJ(0,0,10,39.75,{centerX:75,y:2.25});a=i=>{const s=xy.getColorArray(i);if(1===s.length)t.fill=s[0],e.forEach(e=>{e.fill=null});else{t.fill=null;for(let t=0;t{h.visible=e}),o.addChild(h)}const l=r.isIcon?Eh.RESISTOR_LENGTH:i.distanceBetweenVertices;o.mutate({scale:l/o.width});let d=(new Nt.bn).moveTo(0,.54*o.height).lineToRelative(45.36,0).lineToRelative(5.94,-54*.54/2).lineToRelative(11.88,54*.54).lineToRelative(11.88,-54*.54).lineToRelative(11.88,54*.54).lineToRelative(11.88,-54*.54).lineToRelative(11.88,54*.54).lineToRelative(5.94,-54*.54/2).lineToRelative(45.36,0),c=o.width/d.bounds.width;d=d.transformed(wt.Z.scale(c,c));const u=d.bounds.minX,p=d.bounds.minY;d=d.transformed(wt.Z.translation(-u,-p));let m=(new Nt.bn).moveTo(0,15).lineToRelative(45.36,0).lineToRelative(0,-15).lineToRelative(70,0).lineToRelative(0,15).lineToRelative(45.36,0).lineToRelative(-45.36,0).lineToRelative(0,15).lineToRelative(-70,0).lineToRelative(0,-15);c=o.width/m.bounds.width,m=m.transformed(wt.Z.scale(c,c));const g=new R.y$t(d,{stroke:R.Ilk.BLACK,lineWidth:Eh.SCHEMATIC_LINE_WIDTH}),y=e=>{g.shape=e===ut.IEEE?d:m};mt.link(y),g.mouseArea=g.localBounds,g.touchArea=g.localBounds,g.centerY=0,o.centerY=0,o.translate(0,i.resistorType.verticalOffset),super(e,t,i,s,o,g,n,r),this.resistor=i,this.lifelikeResistorImageNode=o,this.disposeResistorNode=()=>{a&&i.resistanceProperty.unlink(a),o.dispose(),mt.unlink(y),h&&h.dispose()}}dispose(){this.disposeResistorNode(),super.dispose()}}_defineProperty(By,"webglSpriteNodes",[new R.Eep(Sy),new R.Eep(yy),new R.Eep(ty),new R.Eep(Py),new R.Eep(dy),new R.Eep(py),new R.Eep(vy),new R.Eep(ny),new R.Eep(ay)]),it.register("ResistorNode",By);const My=rt.currentStringProperty,Dy=Eh.SERIES_AMMETER_LENGTH,Oy=e=>new R.AeJ(0,0,Dy,40,e).rasterized({wrap:!1}),Ly=Oy({cornerRadius:4,fill:"#f39033"}),Ry=Oy({cornerRadius:4,stroke:"#231f20",lineWidth:2.4});class Ny extends tm{constructor(e,t,i,s,n,r){const o=new ot.Z(xr.NO_VALUE,{tandem:s.createTandem("probeReadoutText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z,phetioReadOnly:!0}),a=new Zu(o,n,My,s,{seriesAmmeter:!0}),h=()=>{let t=xr.NO_VALUE;if(e){const s=e.model.circuit,n=s.getNeighboringVertices(i.startVertexProperty.get()).length>1,r=s.getNeighboringVertices(i.endVertexProperty.get()).length>1;if(n&&r){const e=i.currentSenseProperty.value===Jh.BACKWARD?-1:1;t=bd.createCurrentReadout(i.currentProperty.get()*e,!1)}}o.value=t};i.currentProperty.link(h),i.startVertexProperty.lazyLink(h),i.endVertexProperty.lazyLink(h),i.currentSenseProperty.lazyLink(h),At.lazyLink(h),rt.currentUnitsStringProperty.lazyLink(h),t&&t.circuit.circuitChangedEmitter.addListener(h);const l=new R.NBX({children:[Ly,new R.AeJ(0,0,Dy,20,{fill:"#bcbdbf",centerY:20}),Ry]});l.mouseArea=l.bounds.copy(),l.touchArea=l.bounds.copy(),l.centerY=0,super(e,t,i,new lt(kl.LIFELIKE),l,new R.NBX({children:[l]}),s,r),this.frontPanelContainer=new Qi(a,{fill:"#f39033",stroke:null,xMargin:10,yMargin:1,pickable:!1}),r&&r.isIcon?l.addChild(this.frontPanelContainer.mutate({centerX:l.width/2,centerY:l.height/2-2})):t&&!i.phetioIsArchetype&&i.tandem.supplied&&t.seriesAmmeterNodeReadoutPanelLayer.addChild(this.frontPanelContainer),this.isIcon=!(!r||!r.isIcon),this.disposeSeriesAmmeterNode=()=>{i.currentSenseProperty.unlink(h),rt.currentUnitsStringProperty.unlink(h),i.currentProperty.unlink(h),i.startVertexProperty.unlink(h),i.endVertexProperty.unlink(h),At.unlink(h),this.isIcon||t&&t.seriesAmmeterNodeReadoutPanelLayer.removeChild(this.frontPanelContainer),l.dispose(),this.frontPanelContainer.dispose(),a.dispose(),t&&t.circuit.circuitChangedEmitter.removeListener(h),o.dispose()}}dispose(){this.disposeSeriesAmmeterNode(),super.dispose()}updateRender(){super.updateRender(),this.frontPanelContainer.setMatrix(this.contentNode.getMatrix()),this.frontPanelContainer.center=this.center}}it.register("SeriesAmmeterNode",Ny);const Zy=new R.Cdc(11.2,{fill:"#ae9f9e"}).rasterized({wrap:!1});class qy extends R.NBX{constructor(e,t){const i=e.circuit;super({children:[Zy],preventFit:!0,pickable:!1}),this.vertex=t,this.startOffset=null;const s=()=>{this.isDisposed||(this.visible=i.countCircuitElements(t)>1)};i.vertexGroup.elementCreatedEmitter.addListener(s),i.vertexGroup.elementDisposedEmitter.addListener(s),i.circuitElements.addItemAddedListener(s),i.circuitElements.addItemRemovedListener(s);const n=this.setTranslation.bind(this);t.positionProperty.link(n),this.disposeSolderNode=()=>{t.positionProperty.unlink(n),i.vertexGroup.elementCreatedEmitter.removeListener(s),i.vertexGroup.elementDisposedEmitter.removeListener(s),i.circuitElements.removeItemAddedListener(s),i.circuitElements.removeItemRemovedListener(s)},s()}dispose(){this.disposeSolderNode(),super.dispose()}}_defineProperty(qy,"webglSpriteNodes",[Zy]),_defineProperty(qy,"SOLDER_RADIUS",11.2),it.register("SolderNode",qy);const Fy=Eh.SWITCH_START,Yy=Eh.SWITCH_END,Hy=Eh.SWITCH_LENGTH,Gy=new R.oas(0,-4,0,4).addColorStop(0,"#d48270").addColorStop(.3,"#e39b8c").addColorStop(1,"#b56351"),Uy=function(e,t,i,s,n){const r=i/2,o=new R.AeJ(0,-i/2,Hy*Fy,i,{cornerRadius:r,fill:t,stroke:R.Ilk.BLACK,pickable:!0}),a=(new Nt.bn).moveTo(0,i/2).lineTo(Hy*Fy-s,i/2).arc(Hy*Fy-s/2,0,s/2,Math.PI,0,!1).arc(Hy*Fy+s/2,0,s/2,Math.PI,0,!0).lineTo(Hy*Fy+s,-i/2).lineTo(0,-i/2).lineTo(0,i/2),h=new R.y$t(a,{x:Hy*Fy,fill:t,stroke:R.Ilk.BLACK,lineWidth:e===kl.SCHEMATIC?0:1,pickable:!0});h.rotation=n?0:-Math.PI/4;const l=(new Nt.bn).moveTo(Hy*Yy-s,i/2).lineTo(Hy*Yy-s,0).arc(Hy*Yy-s/2,0,s/2,Math.PI,0,!1).arc(Hy*Yy+s/2,0,s/2,Math.PI,0,!0).lineTo(Hy*Yy+s,-i/2).lineTo(Hy-r,-i/2).arc(Hy-r,0,r,-Math.PI/2,Math.PI/2).lineTo(Hy*Yy-s,i/2),d=new R.y$t(l,{fill:t,stroke:R.Ilk.BLACK,pickable:!0}),c=new R.Cdc(.6*i,{fill:"#a7a8ab",stroke:R.Ilk.BLACK,lineWidth:4,x:Hy*Fy}),u=new R.NBX({children:[o,h,d,c]});return e===kl.SCHEMATIC&&u.addChild(new R.Cdc(.6*i,{fill:R.Ilk.BLACK,stroke:R.Ilk.BLACK,lineWidth:4,x:Hy*Yy})),u.leftSegmentNode=o,u.rotatingSegmentNode=h,u.rightSegmentNode=d,u},zy=Uy(kl.LIFELIKE,Gy,16,6,!1),Wy=zy.rasterized({wrap:!1}),Qy=Uy(kl.LIFELIKE,Gy,16,6,!0),Xy=Qy.rasterized({wrap:!1}),Ky=Uy(kl.SCHEMATIC,R.Ilk.BLACK,Eh.SCHEMATIC_LINE_WIDTH,0,!1).rasterized({wrap:!1}),Jy=Uy(kl.SCHEMATIC,R.Ilk.BLACK,Eh.SCHEMATIC_LINE_WIDTH,0,!0).rasterized({wrap:!1});class jy extends tm{constructor(e,t,i,s,n,r){const o=new R.NBX,a=new R.NBX,h=e=>{o.children=[e?Xy:Wy],a.children=[e?Jy:Ky]};i.isClosedProperty.link(h),super(e,t,i,s,o,a,n,r),this.circuitSwitch=i;let l=null;const d=new R.eMb({tandem:n.createTandem("fireListener"),attach:!1,press:e=>{l=t.globalToLocalPoint(e.pointer.point)},fire:e=>{t.globalToLocalPoint(e.pointer.point).distance(l){i.isClosedProperty.unlink(h),e&&this.contentNode.removeInputListener(d),o.dispose(),a.dispose(),d.interrupt(),d.dispose()}}startSideContainsSensorPoint(e){const t=this.contentNode.parentToLocalPoint(e),i=zy.leftSegmentNode.containsPoint(t),s=(this.circuitSwitch.isClosedProperty.get()?Qy:zy).rotatingSegmentNode.containsPoint(t);return i||s}endSideContainsSensorPoint(e){const t=this.contentNode.parentToLocalPoint(e);return zy.rightSegmentNode.containsPoint(t)}containsSensorPoint(e){const t=this.globalToParentPoint(e);return this.step(),this.startSideContainsSensorPoint(t)||this.endSideContainsSensorPoint(t)}dispose(){this.disposeSwitchNode(),super.dispose()}}it.register("SwitchNode",jy);const _y=rt.capacitanceFaradsSymbolStringProperty,$y=rt.fuseValueStringProperty,eA=rt.inductanceHenriesSymbolStringProperty,tA=rt.resistanceOhmsSymbolStringProperty,iA=rt.voltageUnitsStringProperty,sA=new Et({size:22}),nA=(e,t)=>new R.xvT("",(0,N.JA)({tandem:e,font:sA,fill:Vh.textFillProperty},t)),rA=(e,t)=>new R.Hof("",(0,N.JA)({tandem:e,font:sA},t)),oA='';class aA extends Qi{constructor(e,t,i,s,n){const r=new R.SHm({maxWidth:130});let o,a=null;if(t instanceof pl){const i=nA(n.createTandem("voltageText")),s=Ze.Z.multilink([t.voltageProperty,iA],(e,s)=>{i.text=xt.Z.fillIn(s,{voltage:Ve.Z.toFixed(e,t.numberOfDecimalPlaces)}),a&&a()});o=new R.SHm({align:"right",children:[i]});const h=nA(n.createTandem("resistanceText")),l=Ze.Z.multilink([e,tA],(e,t)=>{h.text=xt.Z.fillIn(t,{resistance:Ve.Z.toFixed(e,1)});const s=e>ct.batteryMinimumResistance?[i,h]:[i];o.getChildrenCount()!==s.length&&(o.children=s),a&&a()});r.disposeEmitter.addListener(()=>{s.dispose(),l.dispose()})}else if(t instanceof hd||t instanceof Dl){o=nA(n.createTandem("resistanceText"));const e=Ze.Z.multilink([t.resistanceProperty,tA],(e,i)=>{o.text=xt.Z.fillIn(i,{resistance:Ve.Z.toFixed(e,t.numberOfDecimalPlaces)}),a&&a()});r.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof fl){o=nA(n.createTandem("capacitorText"));const e=Ze.Z.multilink([t.capacitanceProperty,_y],(e,i)=>{o.text=xt.Z.fillIn(i,{resistance:Ve.Z.toFixed(e,t.numberOfDecimalPlaces)}),a&&a()});r.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof xl){o=nA(n.createTandem("inductorText"));const e=Ze.Z.multilink([t.inductanceProperty,eA],(e,i)=>{o.text=xt.Z.fillIn(i,{resistance:Ve.Z.toFixed(e,t.numberOfDecimalPlaces)}),a&&a()});r.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof pd){o=rA(n.createTandem("switchText"));const e=Ze.Z.multilink([t.resistanceProperty,tA],(e,t)=>{o.string=xt.Z.fillIn(t,{resistance:e>1e5?oA:"0"}),a&&a()});r.disposeEmitter.addListener(()=>e.dispose())}else{if(!(t instanceof Cl))throw new Error("ValueNode cannot be shown for "+t.constructor.name);{o=rA(n.createTandem("fuseText"),{align:"right",fill:Vh.textFillProperty});const e=Ze.Z.multilink([t.resistanceProperty,t.currentRatingProperty,$y],(e,i,s)=>{const n=e===Eh.MAX_RESISTANCE?oA:Ve.Z.toFixed(1e3*e,t.numberOfDecimalPlaces);o.string=xt.Z.fillIn(s,{resistance:n,currentRating:Ve.Z.toFixed(i,t.numberOfDecimalPlaces)}),a&&a()});r.disposeEmitter.addListener(()=>e.dispose())}}if(ct.showCurrents){const e=new R.xvT("",{fill:Vh.textFillProperty});Ze.Z.multilink([t.currentProperty,t.currentSenseProperty],(t,i)=>{e.text=i.toString()+", "+t.toFixed(4)}),o=new R.SHm({children:[o,e]})}const h=new R.xvT("",{font:sA,fill:Vh.textFillProperty});r.children=[h,o],super(r,{stroke:null,fill:new R.Ilk(255,255,255,.6),tandem:n,cornerRadius:3,xMargin:3,yMargin:1,visiblePropertyOptions:{phetioReadOnly:!0},pickable:!1});const l=wt.Z.identity();a=()=>{o.visible=i.value&&t.isValueDisplayableProperty.value;const e=t.labelStringProperty.value;h.text=e,h.visible=e.length>0;const s=t instanceof Dl?.56:.5;t.updateMatrixForPoint(t.chargePathLength*s,l);const n=Ys.Z.createPolar(24,l.rotation+3*Math.PI/2);n.y>0&&(n.y=-n.y),this.centerBottom=l.translation.plus(n.timesScalar(.8))},t.vertexMovedEmitter.addListener(a),t.isValueDisplayableProperty.link(a),a(),i.link(a),s.link(a),t.labelStringProperty.link(a),this.disposeValueNode=()=>{r.dispose(),t.vertexMovedEmitter.removeListener(a),i.unlink(a),s.unlink(a),t.labelStringProperty.unlink(a)}}dispose(){super.dispose(),this.disposeValueNode()}}it.register("ValueNode",aA);const hA={lineWidth:1.3,lineDash:[6,4]},lA=new R.Cdc(16,(0,N.JA)(hA,{stroke:R.Ilk.RED})).rasterized({wrap:!1}),dA=new R.Cdc(16,(0,N.JA)(hA,{stroke:R.Ilk.BLACK})).rasterized({wrap:!1});class cA extends R.NBX{constructor(e,t,i){super({tandem:i,cursor:"pointer",tagName:"div",focusable:!0,focusHighlight:"invisible",phetioDynamicElement:!0,phetioVisiblePropertyInstrumented:!1});const s=e.circuit;this.circuit=s,this.vertexCutButtonContainer=new R.NBX({children:[e.vertexCutButton]}),this.circuitNode=e,this.addLinkedElement(t,{tandem:i.createTandem("vertex")});const n=new R.xvT("",{fontSize:22,fill:Vh.textFillProperty,pickable:!1}),r=new R.xvT("",{fontSize:14,fill:Vh.textFillProperty,pickable:!1}),o=[n];ct.vertexDisplay&&o.push(r),this.vertexLabelNode=new R.SHm({children:o,maxWidth:50}),this.updateReadoutTextPosition=()=>{this.vertexLabelNode.centerX=0,this.vertexLabelNode.bottom=-30},ct.vertexDisplay&&t.voltageProperty.link(e=>{const i=Ve.Z.toFixed(e,3)+"V";r.setText(`${t.index} @ ${i}`),this.updateReadoutTextPosition&&this.updateReadoutTextPosition()}),t.labelStringProperty.link(e=>{n.text=e,this.updateReadoutTextPosition()}),this.vertex=t,this.startOffset=null,this.highlightNode=new R.Cdc(30,{stroke:Vh.highlightStrokeProperty,lineWidth:Eh.HIGHLIGHT_LINE_WIDTH,pickable:!1}),this.updateStrokeListener=this.updateStroke.bind(this),s.vertexGroup.elementCreatedEmitter.addListener(this.updateStrokeListener),s.vertexGroup.elementDisposedEmitter.addListener(this.updateStrokeListener),s.circuitChangedEmitter.addListener(this.updateStrokeListener),s.circuitElements.addItemAddedListener(this.updateStrokeListener),s.circuitElements.addItemRemovedListener(this.updateStrokeListener),t.attachableProperty.link(this.updateStrokeListener),this.updateSelectedListener=this.updateSelected.bind(this),t.selectionProperty.link(this.updateSelectedListener),t.isCuttableProperty.link(this.updateSelectedListener),this.updateMoveToFront=this.moveToFront.bind(this),t.relayerEmitter.addListener(this.updateMoveToFront),this.updatePickableListener=this.setPickable.bind(this),t.interactiveProperty.link(this.updatePickableListener);let a=null,h=null,l=!1;this.dragListener=new Jp(e,[()=>t],{tandem:i.createTandem("dragListener"),start:i=>{a=i.pointer.point,h=i.pointer.point.copy(),e.startDragVertex(i.pointer.point,t,t),l=!1},drag:i=>{h=i.pointer.point.copy(),l=!0,e.dragVertex(i.pointer.point,t,!0)},end:()=>{e.endDrag(t,l),t.interactiveProperty.get()&&h.distance(a)1||s;this.vertexCutButtonContainer.filters=n?[]:[R.P5k.FULL],this.vertexCutButtonContainer.opacity=n?1:R.iaM.DISABLED_OPACITY,this.vertexCutButtonContainer.inputEnabled=n}}updateStroke(){if(!this.isDisposed){const e=this.circuit.countCircuitElements(this.vertex)>1?dA:lA;this.getChildAt(0)!==e&&(this.children=this.vertexLabelNode?[e,this.vertexLabelNode]:[e]),this.visible=this.vertex.attachableProperty.get()}}updateVertexCutButtonPosition(){const e=this.vertex.positionProperty.get(),t=this.circuit.getNeighborCircuitElements(this.vertex),i=new Ys.Z(0,0);for(let r=0;r0&&i.add(e.normalized())}i.magnitude<1e-6&&i.setXY(0,-1);const s=e.plus(i.normalized().timesScalar(70)),n=this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty.get().eroded(this.vertexCutButtonContainer.width/2);this.vertexCutButtonContainer.center=n.closestPointTo(s)}updateVertexNodePosition(){const e=this.vertex.positionProperty.get();this.translation=e,this.vertex.isSelected()&&(this.highlightNode.translation=e),this.updateReadoutTextPosition&&this.updateReadoutTextPosition(),this.vertex.isSelected()&&this.updateVertexCutButtonPosition()}setDraggable(e){e||this.dragListener.interrupt()}}_defineProperty(cA,"VERTEX_RADIUS",16),_defineProperty(cA,"webglSpriteNodes",[dA,lA]),it.register("VertexNode",cA);const uA=Eh.SCHEMATIC_LINE_WIDTH,pA=new wt.Z,mA=new R.x12(0,0,100,0,{lineWidth:uA,stroke:R.Ilk.BLACK}).rasterized({wrap:!1}),gA=new R.x12(0,0,100,0,{lineWidth:16,stroke:R.Ilk.BLUE,opacity:0}).rasterized({wrap:!1}),yA=(e,t)=>{const i=new R.oas(0,-8,0,8);return e.forEach(e=>{i.addColorStop(t(e.point),e.color)}),i},AA=[{point:0,color:new R.Ilk("#993f35")},{point:.2,color:new R.Ilk("#cd7767")},{point:.3,color:new R.Ilk("#f6bda0")},{point:1,color:new R.Ilk("#3c0c08")}],fA=yA(AA,_.identity),PA=yA(AA.reverse(),e=>1-e),bA=new R.x12(0,0,100,0,{lineWidth:16,stroke:fA}).rasterized({wrap:!1}),EA=new R.x12(0,0,100,0,{lineWidth:16,stroke:PA}).rasterized({wrap:!1}),vA=new R.Cdc(8,{fill:fA}).rasterized({wrap:!1}),wA=new R.Cdc(8,{fill:PA}).rasterized({wrap:!1}),VA=new Nt.Ob({lineWidth:26,lineCap:"round",lineJoin:"round"}),SA=new Nt.Ob({lineWidth:23});class TA extends Kp{constructor(e,t,i,s,n){const r=new R.NBX({children:[vA]}),o=new R.NBX({children:[vA]}),a=new R.y$t(null,{stroke:Vh.highlightStrokeProperty,lineWidth:Eh.HIGHLIGHT_LINE_WIDTH,pickable:!1,visible:!1}),h=new R.NBX,l=new R.NBX({children:[h],cursor:"pointer"}),d=new R.NBX({children:[a]});t&&t.highlightLayer.addChild(d);const c=t&&t.circuit;super(i,c,{children:[r,o,l],tandem:n}),this.viewTypeProperty=s,this.circuitNode=t,this.wire=i,this.startCapParent=r,this.endCapParent=o,this.lineNodeParent=l,this.lineNode=h,this.highlightNode=a;const u=()=>{this.isDisposed||(this.markAsDirty(),t||this.updateRender())};s.link(u);const p=e=>{this.pickable=e};i.interactiveProperty.link(p);const m=(e,t)=>{t&&t.positionProperty.unlink(u),e.positionProperty.link(u)};i.startVertexProperty.link(m),i.endVertexProperty.link(m);let g=null,y=null,A=!1;e?(this.dragListener=new Jp(t,[()=>i.startVertexProperty.get(),()=>i.endVertexProperty.get()],{tandem:n.createTandem("dragListener"),start:e=>{i.interactiveProperty.get()&&(t.startDragVertex(e.pointer.point,i.startVertexProperty.get(),this.circuitElement),t.startDragVertex(e.pointer.point,i.endVertexProperty.get(),this.circuitElement),A=!1,g=e.pointer.point.copy(),y=e.pointer.point.copy())},drag:e=>{i.interactiveProperty.get()&&(y=e.pointer.point.copy(),t.dragVertex(e.pointer.point,i.startVertexProperty.get(),!1),t.dragVertex(e.pointer.point,i.endVertexProperty.get(),!1),A=!0)},end:()=>{this.endDrag(this,[i.startVertexProperty.get(),i.endVertexProperty.get()],e,t,g,y,A)}}),this.addInputListener(this.dragListener),t.circuit.selectionProperty.link(u)):this.dragListener=null;const f=()=>{i.interactiveProperty.get()&&this.moveToBack()};i.connectedEmitter.addListener(f),this.disposeWireNode=()=>{this.dragListener.interrupt(),this.dragListener.dispose(),i.startVertexProperty.unlink(m),i.endVertexProperty.unlink(m),t&&t.circuit.selectionProperty.unlink(u),i.interactiveProperty.unlink(p),i.startPositionProperty.unlink(u),i.endPositionProperty.unlink(u),i.connectedEmitter.removeListener(f),t&&t.highlightLayer.removeChild(d),s.unlink(u),this.lineNode.dispose(),this.highlightNode.dispose(),this.lineNodeParent.dispose(),d.dispose(),this.startCapParent.dispose(),this.endCapParent.dispose()},!t&&this.updateRender()}updateRender(){if(this.viewTypeProperty.value===kl.LIFELIKE){const e=this.wire.startPositionProperty.get(),t=this.wire.endPositionProperty.get(),i=new Ys.Z(.916,.4),s=t.minus(e),n=i.dot(s),r=n<0?EA:bA,o=n<0?wA:vA;this.lineNode.getChildAt(0)!==r&&this.lineNode.setChildren([r]),this.endCapParent.getChildAt(0)!==o&&this.endCapParent.setChildren([o]),this.startCapParent.getChildAt(0)!==o&&this.startCapParent.setChildren([o]),this.startCapParent.visible=!0,this.endCapParent.visible=!0}else this.lineNode.getChildAt(0)!==gA&&this.lineNode.setChildren([gA,mA]),this.startCapParent.visible=!1,this.endCapParent.visible=!1;const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get(),i=t.minus(e),s=Math.max(i.magnitude,1e-8),n=i.angle;if(this.endCapParent.setMatrix(pA.setToTranslationRotationPoint(t,n)),this.startCapParent.setMatrix(pA.setToTranslationRotationPoint(e,n)),pA.multiplyMatrix(wt.Z.scaling(s/100,1)),this.lineNodeParent.setMatrix(pA),this.circuitNode){const e=this.circuitNode.circuit.selectionProperty.get()===this.wire;this.highlightNode.visible=e,e&&(this.highlightNode.shape=(e=>{const t=e.startPositionProperty.get(),i=e.endPositionProperty.get();return Nt.bn.lineSegment(t.x,t.y,i.x,i.y).getStrokedShape(VA)})(this.wire))}this.touchArea=(e=>{const t=e.startPositionProperty.get(),i=e.endPositionProperty.get(),s=i.distance(t);let n=null,r=null;return s>0?(n=t.blend(i,0/s),r=i.blend(t,0/s)):(n=t.average(i),r=n),Nt.bn.lineSegment(n,r).getStrokedShape(SA)})(this.wire),this.mouseArea=this.touchArea}dispose(){this.disposeWireNode(),super.dispose()}}_defineProperty(TA,"webglSpriteNodes",[mA,bA,EA,vA]),it.register("WireNode",TA);class CA extends hd{constructor(e,t,i,s){super(e,t,ad.DOG,i,s),this.isBarkingProperty=new se.Z(!1),this.lastBarkTime=0,this.triggerCount=0}step(e,t,i){super.step(e,t,i);const s=this.voltageDifferenceProperty.value;Math.abs(s)>100?this.triggerCount++:this.triggerCount=0,this.triggerCount>=2&&(i.cutVertex(this.startVertexProperty.value),this.isBarkingProperty.value=!0,this.lastBarkTime=e,this.triggerCount=0);this.isBarkingProperty.value&&e-this.lastBarkTime>.5&&(this.isBarkingProperty.value=!1,this.lastBarkTime=0)}}it.register("Dog",CA);const IA="data:audio/mpeg;base64,//OEZAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAATAAAJGAARERERES4uLi4uSkpKSkpcXFxcXFxtbW1tbX5+fn5+jIyMjIyenp6enp6vr6+vr8zMzMzM6Ojo6Ojr6+vr6+vu7u7u7vHx8fHx9PT09PT39/f39/f6+vr6+v39/f39//////8AAAA5TEFNRTMuOTlyAm4AAAAALmAAABRGJAQIjgAARgAACRjW3l4jAAAAAAAAAAAAAAAAAAAA//NkZAAMvPE4AaMMAAAAAgABQAAAYTJk07aIi7vf+55AIIECBBCPoiJ9dEREREQDAxbn/UREROILd/+I7noiIju4GBgYG7oiIXoEAwMW/ET/dwMW8DgYsH8EDk//+CHWD77vwG+QhiUBAEw/lwxB8P5QEHVg+H8Th/qccbYiFajUljjaSMRbTa9uVge/XU1c//OUZBUcohNlL8w8AYAAAjQBgBAAR+Qo0BLUWjSu4ddNg4YBhgzkISIdGHoN0m8JWLmHoGGGrA01WIuTcDkY6fZsRm9C4SfUSRN4yBSCcAbI7941O1AHWt5vHWyRH+3v2FCFq2L1n3vUSiqdRsRdQFfJrXtu7hLJrFkMZIsWBrXlb2xvjubPBfMeGWe17v8xL6w/tTGu/3ejPPGiaxNh98Z3nFceXev8Ur9/dNbzaNS9JYeN0+/99/jO8V1eu743iuvvea5tqJvd7//Ue/1fdb5vrd5NPKa//owLD9/eams41b0iR4ADLvZ/9YpqSaGv//OUZAsXEflqyuegAIAAAigBwAAAqoCeLoA6B3mcIaEALy1BIy/DgWVAuTXh4DgFgLABAnAMeEAvAqEYoHEoOFxcBgi2DQUHEEg+C9jJBuH+72Qp1V/XO7vHHpH//81EWVQwTByQCQRM7rVvEKMNZR6Q4fi5d05YvUluL2UAoNmupe5FzITcZWjvadc8j6ubf3n93Ltz2pCEqU4FKU8YpiCGC8I2pxo4Uo8YHANDBRkcsXPDsIxj8ukUen6V496vFCGKhBAAYAKMttDSzGb3KOvWu1ewErEMHBw39d2kngVEo3B46DROpLSbohcFWg8z//NkZC0SLb9xbmEjXgAAAiQAAAAAOt2VQWlO7XZ6VM6lfJmlpwUzYR+Yu3NtttWCIgtghCi/+588si7zll7CkNMqSr1FGTSiBRqAkfNOkUk/yL1+mEIUen2y/WURRgwOAVZklv51DCuA1GzpMZMYa1iWvER7arFnvXWEgAwAtCNJwvxaePHNHZUyMCmQoUAa//NkZBYRJMNtGTMJOgAAAiQAAAAAzA1PJ2ZtrSxGpUjFFD9+irVGirWna2eVvv16eOFkR1tyO0mk4bS3uSs/Q622bUYfBhBc3fFlCNeUtt8SJhpgg6wuRAIRW4CIQRMJDBgeAxUvPiAHKUtFBUWVclkXBh55IxgepKJ9J/ixelRVtusBUJzSiCrQAKjMSa3A//NkZAcNrN9wpj0iWgAAAiwAAAAAgSRI/jYnVgLcFaVvXxQyTiQSIHLAFBU7tKFifDKKSkV+vlVFbN8El0RuOxyKQyvE0QvsRFWS92W7WUrbfd6iQVfc4uIHvZVaGxw8XKS0cRCgpp++yhL4vk3NFEIjUp5HF5Pe7XQpNdGABCdpRTVgn6ZB8P6ZgPExEO04//NUZBQOqZN3GzDCXoAAAigAAAAAvSIoeN7o0xt85Lq6WwLjrISr1n9TdmWk5uV2vHptrY13+TmdAJ6O5mNZWflo0j1RXyrulalQudTVe6LTL9DKpT9V+lU//5nRjetqCpTsclnzRm/t3/+lMxt+IWRCfl+FLtWp//NkZAEOURNzbzDDOAAAAigAAAAAYAEP5HXLdtgjWrUN21MhBEMEkkjdX9UDWjnm1A201Ex1I11Lb6csVSaqpeZZed8/VoYJwHDCm1naX/5F9IMmdwpNfoIUa/8kYUGFKJJHRklFzoiClR8ODiwqLxqAZoJGbpXqJC0c3Aymv6wFFyxHRK6VhAAADDigbaTk//NkZAkN2PNZf6YUAAAAAigBQAAAPPWl3bB0B0vKjEyecbU1eJvP64uelaY4FKJFUqPaLCRyCQmCh4RbiwmhlZXLS/TugkJAqI81vTNIxt0cpiOjsXfEYq0mKlioUCQFuubBXpWMnlvMRnKkaXKeo9V30f2lioiku9utARlu9BBGHpGkTVNraw6ksHwqVjcu//OUZBUbUdMsyMxgAAAAAjABgAAAhQyWdajBZxoTTBJzFoYd2dwZC4KlsEtZicebJjV5q+2SVJmof6elojtYbtOlRxJqzOXheZeD5tiaFbzhdD9NQ3bMRh2xBsKnZXEXGkTdaemrVtbwpM9bsymgfp4L+M1TRK3LqCxlLYpy5lLZq/KaSeycaagKFSyO8favrGbzuc/evy/5Vzf///////juXS/J2XZrOjFXZpquWrWWstdxs46/+71+v1v//n/////9ulzu5fRcy7+se57l37//zytb/lZwcVkVXe4y2UNd4o+BgVHF46xPYZMqwqLr//OUZBUbOdsaAMxMAIAAAjQBgAAAXQDugimMyIBCAojUxNUhAccggAjgmSwTQs6jgVGHUAbUANQPgEvD4AMCxjCVWoyOsDcQWBDNj4HLEBymLlD4RHQ54lX1B+oiQe2HKk0bjlCgSHCzws8QpASyk6KLVg3YJvEWEIwbHx8j4JwvkQC/wm4UcaJGD2OEiqKKl1VSDmDHycL5PsXyMNS+rMSZUmxiXTjf/s59aaZcN1FEky8ec4apmqDvdFTqZzhdOf/1ZucM0kkmZjd0arIp+5k6CKBtWa4Tzm1MQU1FMy45OS41VVVVVVVVVVVVVVVV//MUZBYAAAESAOAAAAAAAiwBwAAAVVVV//MUZBkAAAESAAAAAAAAAiQAAAAAVVVV//MUZBwAAAEWAAAAAAAAAiQAAAAAVVVV//MUZB8AAAESAAAAAAAAAigAAAAAVVVV//MUZCIAAAESAAAAAAAAAigAAAAAVVVV//MUZCUAAAEUAAAAAAAAAigAAAAAVVVV//MUZCgAAAEGAAAAAAAAAhwAAAAAVVVV//MUZCsAAACUAAAAAAAAATQAAAAAVVVV",xA=q(W,IA),kA=Z.Z.createLock(IA),BA=new U;let MA=!1;const DA=()=>{MA||(kA(),MA=!0)},OA=W.decodeAudioData(xA.buffer,e=>{null===BA.audioBufferProperty.value&&(BA.audioBufferProperty.set(e),DA())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),BA.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),DA()});OA&&OA.then(e=>{null===BA.audioBufferProperty.value&&(BA.audioBufferProperty.set(e),DA())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),DA()});const LA=BA,RA=new Nt.bn("M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z").makeImmutable(),NA=new Nt.bn("M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z").makeImmutable();class ZA extends R.NBX{constructor(e){super(),this.addChild(new R.y$t(RA,{fill:"white",stroke:"black",lineWidth:22.5,scale:new Ys.Z(-1,1)}));const t=new Ys.Z(.9,.9),i=2*Math.PI/20,s=new R.y$t(NA,{fill:"black",scale:t.timesScalar(.8),rotation:-i}),n=new R.y$t(NA,{fill:"black",scale:t}),r=new R.y$t(NA,{fill:"black",scale:t.timesScalar(.8),rotation:i});this.addChild(new R.BET({scale:.5,children:[s,n,r],align:"bottom",spacing:60,center:this.center.plusXY(0,-3)})),this.mutate(e)}}it.register("BarkNode",ZA);class qA extends By{constructor(e,t,i,s,n,r){super(e,t,i,s,n,r);const o=new we(LA);Ge.addSoundGenerator(o),this.barkNode=new ZA({maxWidth:60}),this.addChild(this.barkNode);const a=()=>{if(i.isBarkingProperty.value){const e=this.circuitElement.startVertexProperty.value.positionProperty.value,t=this.circuitElement.endVertexProperty.value.positionProperty.value,i=t.minus(e).getAngle(),s=t.minus(e).normalized(),n=s.getPerpendicular(),r=e.plus(n.timesScalar(100)).plus(s.timesScalar(12));this.barkNode.setRotation(i),this.barkNode.setTranslation(r)}};this.boundsListener=()=>a(),this.contentNode.boundsProperty.link(this.boundsListener),this.dog=i,this.isBarkingListener=e=>{a(),this.barkNode.visible=e,e&&o.play()},i.isBarkingProperty.link(this.isBarkingListener)}dispose(){super.dispose(),this.dog.isBarkingProperty.unlink(this.isBarkingListener),this.contentNode.boundsProperty.unlink(this.boundsListener)}}it.register("DogNode",qA);class FA{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.currentProperty.value;this.circuitElement=e,this.current=t}}it.register("AmmeterConnection",FA);class YA{constructor(e){this.pointer=null,this.pointerListener={up:t=>{e(t),this.dismissPointer(this.pointer)},interrupt:()=>{this.dismissPointer(this.pointer)},cancel:()=>{this.dismissPointer(this.pointer)}}}down(e){phet.chipper.isFuzzEnabled()&&Nr.Z.nextDouble()<.99||this.observePointer(e.pointer)}observePointer(e){null!==this.pointer||e.isAttached()||(this.pointer=e,this.pointer.addInputListener(this.pointerListener,!0))}dismissPointer(e){null!==this.pointer&&(this.pointer.removeInputListener(this.pointerListener),this.pointer=null)}dispose(){this.dismissPointer(this.pointer)}}Bt.Z.register("DisplayClickToDismissListener",YA);const HA=YA;class GA extends R.NBX{constructor(e,t,i){super(),this.viewTypeProperty=t.model.viewTypeProperty,this.model=t.model,this.visibleBoundsProperty=t.visibleBoundsProperty,this.circuitNodeBackLayer=t.circuitNodeBackLayer,this.highlightLayer=new R.NBX,this.seriesAmmeterNodeReadoutPanelLayer=new R.NBX,this.buttonLayer=new R.NBX,this.valueLayer=new R.NBX,this.lightRaysLayer=new R.NBX,this.wireLayer=new R.NBX({renderer:"svg",children:[new R.NBX({visible:!1,children:TA.webglSpriteNodes})]}),this.solderLayer=new R.NBX({renderer:"svg",children:[new R.NBX({visible:!1,children:qy.webglSpriteNodes})]}),this.vertexLayer=new R.NBX({renderer:"svg",children:[new R.NBX({visible:!1,children:cA.webglSpriteNodes})]}),this.fixedCircuitElementLayer=new R.NBX({renderer:"svg",children:[new R.NBX({visible:!1,children:[].concat(Pm.webglSpriteNodes).concat(By.webglSpriteNodes).concat(tm.webglSpriteNodes).concat(kg.webglSpriteNodes).concat(zg.webglSpriteNodes)})]}),this.lightBulbSocketLayer=new R.NBX({renderer:"svg",children:[new R.NBX({visible:!1,children:kg.webglSpriteNodes})]}),this.chargeLayer=new R.NBX({renderer:"svg"}),Ze.Z.multilink([t.model.isValueDepictionEnabledProperty,t.model.revealingProperty],(e,t)=>{this.chargeLayer.visible=e&&t}),this.sensorLayer=new R.NBX,this.beforeCircuitElementsLayer=new R.NBX,this.afterCircuitElementsLayer=new R.NBX;const s=[this.lightRaysLayer,this.beforeCircuitElementsLayer,this.wireLayer,this.solderLayer,this.fixedCircuitElementLayer,this.vertexLayer,this.chargeLayer,this.lightBulbSocketLayer,this.seriesAmmeterNodeReadoutPanelLayer,this.afterCircuitElementsLayer,this.sensorLayer,this.highlightLayer,this.valueLayer,this.buttonLayer],n=[this.lightRaysLayer,this.beforeCircuitElementsLayer,this.wireLayer,this.fixedCircuitElementLayer,this.solderLayer,this.vertexLayer,this.chargeLayer,this.lightBulbSocketLayer,this.seriesAmmeterNodeReadoutPanelLayer,this.afterCircuitElementsLayer,this.sensorLayer,this.highlightLayer,this.valueLayer,this.buttonLayer];t.model.viewTypeProperty.link(e=>{this.children=e===kl.LIFELIKE?s:n}),this.visibleBoundsInCircuitCoordinateFrameProperty=new ot.Z(new vt.Z(0,0,1,1)),this.circuit=e,this.circuitElementNodeMap={},this.solderNodes={},this.vertexNodes={};const r=(t,i,s)=>{const n=n=>{if(t(n)){const t=s.createCorrespondingGroupElement(n.tandem.name,n);if(this.circuitElementNodeMap[n.id]=t,i.addChild(t),n instanceof cl&&!(n instanceof ld)){const t=new aA(e.sourceResistanceProperty,n,this.model.showValuesProperty,this.model.viewTypeProperty,ye.Z.OPTIONAL);this.valueLayer.addChild(t),n.disposeEmitterCircuitElement.addListener(()=>{this.valueLayer.removeChild(t),t.dispose()})}}};e.circuitElements.addItemAddedListener(n),e.circuitElements.forEach(n),e.circuitElements.addItemRemovedListener(e=>{if(t(e)){const t=this.getCircuitElementNode(e);i.removeChild(t),s.disposeElement(t),delete this.circuitElementNodeMap[e.id]}})};r(e=>e instanceof md,this.wireLayer,new dl((e,i)=>new TA(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.wireGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("wireNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof yl&&"normal"===e.batteryType,this.fixedCircuitElementLayer,new dl((e,i)=>new Pm(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.batteryGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("batteryNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof Dl&&!e.isExtreme&&!e.isReal,this.fixedCircuitElementLayer,new dl((e,i)=>new Og(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.lightBulbGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("lightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.seriesAmmeterGroup&&r(e=>e instanceof ld,this.fixedCircuitElementLayer,new dl((e,i)=>new Ny(t,this,i,e,this.model.isValueDepictionEnabledProperty),()=>[this.circuit.seriesAmmeterGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("seriesAmmeterNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof yl&&"high-voltage"===e.batteryType,this.fixedCircuitElementLayer,new dl((e,i)=>new Pm(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.batteryGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("extremeBatteryNodeGroup"),supportsDynamicState:!1})),this.circuit.extremeResistorGroup&&r(e=>e instanceof hd&&e.resistorType===ad.EXTREME_RESISTOR,this.fixedCircuitElementLayer,new dl((e,i)=>new By(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.extremeResistorGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("extremeResistorNodeGroup"),supportsDynamicState:!1})),this.circuit.extremeLightBulbGroup&&r(e=>e instanceof Dl&&e.isExtreme&&!e.isReal,this.fixedCircuitElementLayer,new dl((e,i)=>new Og(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.extremeLightBulbGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("extremeLightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.realLightBulbGroup&&r(e=>e instanceof Dl&&e.isReal,this.fixedCircuitElementLayer,new dl((e,i)=>new Og(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.realLightBulbGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("realLightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.capacitorGroup&&r(e=>e instanceof fl,this.fixedCircuitElementLayer,new dl((e,i)=>new hg(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.capacitorGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("capacitorNodeGroup"),supportsDynamicState:!1})),this.circuit.acVoltageGroup&&r(e=>e instanceof ml,this.fixedCircuitElementLayer,new dl((e,i)=>new hm(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.acVoltageGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("acVoltageNodeGroup"),supportsDynamicState:!1})),this.circuit.inductorGroup&&r(e=>e instanceof xl,this.fixedCircuitElementLayer,new dl((e,i)=>new _g(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.inductorGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("inductorNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof hd&&e.resistorType===ad.RESISTOR,this.fixedCircuitElementLayer,new dl((e,i)=>new By(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.resistorGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("resistorNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof hd&&e.resistorType!==ad.RESISTOR&&e.resistorType!==ad.EXTREME_RESISTOR,this.fixedCircuitElementLayer,new dl((e,i)=>i instanceof CA?new qA(t,this,i,this.model.viewTypeProperty,e):new By(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.householdObjectGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("householdObjectNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof pd,this.fixedCircuitElementLayer,new dl((e,i)=>new jy(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.switchGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("switchNodeGroup"),supportsDynamicState:!1})),r(e=>e instanceof Cl,this.fixedCircuitElementLayer,new dl((e,i)=>new zg(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.fuseGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("fuseNodeGroup"),supportsDynamicState:!1}));const o=new R.y$t(Rp,{fill:"black",rotation:-Math.PI/2,maxWidth:36});this.vertexCutButton=new Ic({baseColor:"yellow",content:o,xMargin:10,yMargin:10,tandem:t.tandem.createTandem("vertexCutButton"),enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}}),this.vertexCutButton.addListener(()=>{const t=e.getSelectedVertex();t&&(e.cutVertex(t),l(this.visibleBoundsInCircuitCoordinateFrameProperty.value))});const a=new dl((e,t)=>new cA(this,t,e),()=>[e.vertexGroup.archetype],{phetioType:dl.PhetioGroupIO(R.NBX.NodeIO),tandem:i.createTandem("vertexNodeGroup"),supportsDynamicState:!1}),h=e=>{const t=new qy(this,e);this.solderNodes[e.index]=t,this.solderLayer.addChild(t);const i=a.createCorrespondingGroupElement(e.tandem.name,e);this.vertexNodes[e.index]=i,this.vertexLayer.addChild(i)};e.vertexGroup.elementCreatedEmitter.addListener(h),e.vertexGroup.elementDisposedEmitter.addListener(e=>{const t=this.getVertexNode(e);this.vertexLayer.removeChild(t),delete this.vertexNodes[e.index],a.disposeElement(t);const i=this.getSolderNode(e);this.solderLayer.removeChild(i),delete this.solderNodes[e.index],i.dispose()}),e.vertexGroup.forEach(h);const l=t=>{for(let i=0;ithis.chargeLayer.addChild(new Fg(e,this))),ct.showCurrents?(this.circuitDebugLayer=new qp(this),this.addChild(this.circuitDebugLayer)):this.circuitDebugLayer=null,phet.joist.display.addInputListener(new HA(e=>{0===e.target.getTrails(e=>e instanceof Pp||e instanceof Kp||e instanceof cA).length&&(this.circuit.selectionProperty.value=null)}))}getCircuitElementNode(e){return this.circuitElementNodeMap[e.id]}getSolderNode(e){return this.solderNodes[e.index]}getVertexNode(e){return this.vertexNodes[e.index]}getAllDropTargets(e){const t=[];for(let i=0;ie.src.unsnappedPositionProperty.get().distance(e.dst.positionProperty.get()))[0]}return null}step(){this.circuit.circuitElements.forEach(e=>this.getCircuitElementNode(e).step()),this.circuitDebugLayer&&this.circuitDebugLayer.step()}canDragVertex(e){const t=this.circuit.findAllFixedVertices(e);for(let i=0;i!e.blackBoxInterfaceProperty.get());const a=r.filter(e=>e.getOppositeVertex(t).blackBoxInterfaceProperty.get());if(1===a.length){const e=a[0];if(e instanceof cl){const i=e.getOppositeVertex(t),s=n.minus(i.positionProperty.get()).angle,r=e.distanceBetweenVertices||e.lengthProperty.get(),a=o.indexOf(i);o.splice(a,1);const h=Ys.Z.createPolar(r,s).plus(i.positionProperty.get()),l=t.positionProperty.get(),d=h.minus(l),c=Ys.Z.createPolar(r,s+Math.PI),u=[];this.translateVertexGroup(t,o,d,()=>t.unsnappedPositionProperty.set(i.unsnappedPositionProperty.get().minus(c)),u)}}}dragVertex(e,t,i){const s=this.getVertexNode(t);if(s.startOffset){const n=s.globalToParentPoint(e).subtract(s.startOffset),r=this.circuit.getNeighborCircuitElements(t),o=this.circuit.findAllFixedVertices(t);let a=!1;for(let h=0;ht.unsnappedPositionProperty.set(e.unsnappedPositionProperty.get().minus(a)),o)}else{const e=n.minus(t.unsnappedPositionProperty.get());this.translateVertexGroup(t,o,e,null,o)}}}translateVertexGroup(e,t,i,s,n){const r=this.visibleBoundsProperty.get(),o=this.parentToLocalBounds(r);for(let l=0;lthis.getCircuitElementNode(e));for(let n=s.length-1;n>=0;n--){const e=s[n];if(!e)continue;let t=!0;if(e.circuitElement.insideTrueBlackBoxProperty.get()&&(t=this.model.revealingProperty.get()),t&&e.containsSensorPoint(i))return e}return null}getVoltageConnection(e){const t=this.localToGlobalPoint(e),i=_.values(this.solderNodes),s=_.find(i,t=>{const i=t.vertex.positionProperty.get();return e.distance(i)<=qy.SOLDER_RADIUS});if(s)return new Od(s.vertex,null);const n=this.hitCircuitElementNode(e,e=>e.isMetallic,t);if(n){const t=n.circuitElement.startPositionProperty.get(),i=n.circuitElement.endPositionProperty.get().minus(t),s=e.minus(t);let r=0===i.magnitude?0:s.dot(i)/i.magnitudeSquared;r=Ve.Z.clamp(r,0,1);const o=Ve.Z.linear(0,1,n.circuitElement.startVertexProperty.get().voltageProperty.get(),n.circuitElement.endVertexProperty.get().voltageProperty.get(),r);return new Od(n.circuitElement.startVertexProperty.get(),n.circuitElement,o)}{const i=this.hitCircuitElementNode(e,e=>e instanceof pd,t);if(i&&i instanceof jy){if(i.startSideContainsSensorPoint(e))return new Od(i.circuitSwitch.startVertexProperty.get(),i.circuitElement);if(i.endSideContainsSensorPoint(e))return new Od(i.circuitSwitch.endVertexProperty.get(),i.circuitElement)}const s=this.hitCircuitElementNode(e,e=>e instanceof fl,t);if(s&&s instanceof hg){if(s.frontSideContainsSensorPoint(t))return new Od(s.circuitElement.startVertexProperty.get(),s.circuitElement);if(s.backSideContainsSensorPoint(t))return new Od(s.circuitElement.endVertexProperty.get(),s.circuitElement)}return null}}getCurrentInLayer(e,t){const i=e.parentToGlobalPoint(e.translation);for(let s=0;sthis.update();e.changedEmitter.addListener(s),this.disposeChartCanvasLinePlot=()=>e.changedEmitter.removeListener(s)}setPainters(e){this.painters=e,this.update()}update(){this.invalidatePaint()}paintCanvas(e){this.painters.forEach(t=>{t.visible&&(e.save(),t.paintCanvas(e),e.restore())})}dispose(){this.disposeChartCanvasLinePlot(),super.dispose()}}UA.register("ChartCanvasNode",KA);const JA=KA;class jA extends R.AeJ{constructor(e,t){super(0,0,0,0,t),this.chartTransform=e,this.update();const i=()=>this.update();e.changedEmitter.addListener(i),this.disposeChartRectangle=()=>e.changedEmitter.removeListener(i)}update(){this.setRect(0,0,this.chartTransform.viewWidth,this.chartTransform.viewHeight)}dispose(){this.disposeChartRectangle(),super.dispose()}}UA.register("ChartRectangle",jA);const _A=jA;class $A{constructor(e,t,i){i=(0,us.Z)({domain:new Sn.Z(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY),range:new Sn.Z(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY)},i),this.evaluationFunction=e,this.inverseFunction=t,this.domain=i.domain,this.range=i.range}evaluate(e){const t=this.evaluationFunction(e);return t}inverse(e){const t=this.inverseFunction(e);return t}}In.Z.register("Transform1",$A);const ef=$A;class tf{constructor(e){const t=(0,N.ZP)()({viewWidth:100,modelXRange:new Sn.Z(-1,1),modelXRangeInverted:!1,xTransform:new ef(e=>e,e=>e),viewHeight:100,modelYRange:new Sn.Z(-1,1),modelYRangeInverted:!1,yTransform:new ef(e=>e,e=>e)},e);this.changedEmitter=new $t.Z,this.viewWidth=t.viewWidth,this.viewHeight=t.viewHeight,this.modelXRange=t.modelXRange,this.modelXRangeInverted=t.modelXRangeInverted,this.modelYRange=t.modelYRange,this.modelYRangeInverted=t.modelYRangeInverted,this.xTransform=t.xTransform,this.yTransform=t.yTransform}dispose(){this.changedEmitter.dispose()}forEachSpacing(e,t,i,s,n){const r=this.getModelRange(e),o=sf(r.min,s,i,t,Math.ceil),a=sf(r.max,s,i,t,Math.floor);for(let h=o;h<=a+1e-6;h++){const s=h*t+i;n(s,this.modelToView(e,s))}}modelToView(e,t){const i=e===Cn.Z.HORIZONTAL?this.modelXRange:this.modelYRange,s=e===Cn.Z.HORIZONTAL?this.viewWidth:this.viewHeight,n=e===Cn.Z.HORIZONTAL?this.xTransform:this.yTransform,r=e===Cn.Z.HORIZONTAL?this.modelXRangeInverted:this.modelYRangeInverted,o=n.evaluate(t),a=r?s:0,h=r?0:s,l=e===Cn.Z.HORIZONTAL?Ve.Z.linear(n.evaluate(i.min),n.evaluate(i.max),a,h,o):Ve.Z.linear(n.evaluate(i.max),n.evaluate(i.min),a,h,o);return l}modelToViewX(e){return this.modelToView(Cn.Z.HORIZONTAL,e)}modelToViewY(e){return this.modelToView(Cn.Z.VERTICAL,e)}modelToViewXY(e,t){return new Ys.Z(this.modelToViewX(e),this.modelToViewY(t))}modelToViewPosition(e){return this.modelToViewXY(e.x,e.y)}modelToViewDelta(e,t){return this.modelToView(e,t)-this.modelToView(e,0)}modelToViewDeltaX(e){return this.modelToViewDelta(Cn.Z.HORIZONTAL,e)}modelToViewDeltaY(e){return this.modelToViewDelta(Cn.Z.VERTICAL,e)}viewToModel(e,t){const i=e===Cn.Z.HORIZONTAL?this.modelXRange:this.modelYRange,s=e===Cn.Z.HORIZONTAL?this.viewWidth:this.viewHeight,n=e===Cn.Z.HORIZONTAL?this.xTransform:this.yTransform,r=e===Cn.Z.HORIZONTAL?this.modelXRangeInverted:this.modelYRangeInverted,o=r?s:0,a=r?0:s,h=e===Cn.Z.HORIZONTAL?Ve.Z.linear(o,a,n.evaluate(i.min),n.evaluate(i.max),t):Ve.Z.linear(o,a,n.evaluate(i.max),n.evaluate(i.min),t),l=n.inverse(h);return l}viewToModelX(e){return this.viewToModel(Cn.Z.HORIZONTAL,e)}viewToModelY(e){return this.viewToModel(Cn.Z.VERTICAL,e)}viewToModelXY(e,t){return new Ys.Z(this.viewToModelX(e),this.viewToModelY(t))}viewToModelPosition(e){return this.viewToModelXY(e.x,e.y)}viewToModelDeltaX(e){return this.viewToModelX(e)-this.viewToModelX(0)}viewToModelDeltaY(e){return this.viewToModelY(e)-this.viewToModelY(0)}viewToModelDelta(e){return this.viewToModelPosition(e).minus(this.viewToModelPosition(Ys.Z.ZERO))}setViewWidth(e){e!==this.viewWidth&&(this.viewWidth=e,this.changedEmitter.emit())}setViewHeight(e){e!==this.viewHeight&&(this.viewHeight=e,this.changedEmitter.emit())}setModelXRange(e){e.equals(this.modelXRange)||(this.modelXRange=e,this.changedEmitter.emit())}setModelYRange(e){e.equals(this.modelYRange)||(this.modelYRange=e,this.changedEmitter.emit())}getModelRange(e){return e===Cn.Z.HORIZONTAL?this.modelXRange:this.modelYRange}setXTransform(e){this.xTransform!==e&&(this.xTransform=e,this.changedEmitter.emit())}setYTransform(e){this.yTransform!==e&&(this.yTransform=e,this.changedEmitter.emit())}}function sf(e,t,i,s,n){return"lenient"===t?Ve.Z.roundSymmetric((e-i)/s):n((e-i)/s)}UA.register("ChartTransform",tf);const nf=tf;class rf extends WA{constructor(e,t,i,s){const n=(0,N.ZP)()({origin:0,clippingType:"strict",stroke:"black",lineWidth:1,lineDash:[1],lineDashOffset:0},s);super(),this.chartTransform=e,this.axisOrientation=t,this.spacing=i,this.origin=n.origin,this.clippingType=n.clippingType,this.stroke=n.stroke,this.lineDash=n.lineDash,this.lineWidth=n.lineWidth,this.lineDashOffset=n.lineDashOffset}setSpacing(e){this.spacing!==e&&(this.spacing=e)}setLineDashOffset(e){this.lineDashOffset=e}paintCanvas(e){e.strokeStyle=this.stroke,e.lineWidth=this.lineWidth,e.beginPath(),e.setLineDash(this.lineDash),e.lineDashOffset=this.lineDashOffset,this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(t,i)=>{this.axisOrientation===Cn.Z.VERTICAL?(e.moveTo(0,i),e.lineTo(this.chartTransform.viewWidth,i)):(e.moveTo(i,0),e.lineTo(i,this.chartTransform.viewHeight))}),e.stroke()}}UA.register("CanvasGridLineSet",rf);const of=rf;class af extends R.y$t{constructor(e,t,i,s){const n=(0,N.ZP)()({value:0,edge:null,origin:0,skipCoordinates:[],stroke:"black",lineWidth:1,extent:af.DEFAULT_EXTENT,clippingType:"strict"},s);n.edge,super(null,n),this.chartTransform=e,this.axisOrientation=t,this.spacing=i,this.value=n.value,this.edge=n.edge,this.origin=n.origin,this.skipCoordinates=n.skipCoordinates,this.extent=n.extent,this.clippingType=n.clippingType,this.update();const r=()=>this.update();e.changedEmitter.addListener(r),this.disposeTickMarkSet=()=>e.changedEmitter.removeListener(r)}setSpacing(e){e!==this.spacing&&(this.spacing=e,this.update())}update(){const e=new Nt.bn;this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(t,i)=>{if(!this.skipCoordinates.includes(t)){const t=new vt.Z(0,0,0,0);if(this.axisOrientation===Cn.Z.HORIZONTAL){const s="min"===this.edge?this.chartTransform.viewHeight:"max"===this.edge?0:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);e.moveTo(i,s-this.extent/2),e.lineTo(i,s+this.extent/2),t.setMinMax(i,s-this.extent/2,i,s+this.extent/2)}else{const s="min"===this.edge?0:"max"===this.edge?this.chartTransform.viewWidth:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);e.moveTo(s-this.extent/2,i),e.lineTo(s+this.extent/2,i),t.setMinMax(s-this.extent/2,i,s+this.extent/2,i)}}}),this.shape=e.makeImmutable()}dispose(){this.disposeTickMarkSet(),super.dispose()}}_defineProperty(af,"DEFAULT_EXTENT",10),UA.register("TickMarkSet",af);const hf=af;class lf extends R.y$t{constructor(e,t,i,s){const n=(0,N.ZP)()({value:0,edge:null,origin:0,skipCoordinates:[],extent:hf.DEFAULT_EXTENT,clippingType:"strict",createLabel:e=>new R.xvT(Ve.Z.toFixed(e,1),{fontSize:12}),positionLabel:(e,t,i)=>(i===Cn.Z.HORIZONTAL?e.centerTop=t.centerBottom.plusXY(0,1):e.rightCenter=t.leftCenter.plusXY(-1,0),e)},s);n.edge,super(null,n),this.chartTransform=e,this.axisOrientation=t,this.spacing=i,this.origin=n.origin,this.skipCoordinates=n.skipCoordinates,this.extent=n.extent,this.value=n.value,this.clippingType=n.clippingType,this.edge=n.edge,this.createLabel=n.createLabel,this.positionLabel=n.positionLabel,this.labelMap=new Map,this.update();const r=()=>this.update();e.changedEmitter.addListener(r),this.disposeTickLabelSet=()=>e.changedEmitter.removeListener(r)}setSpacing(e){this.spacing!==e&&(this.spacing=e,this.update())}update(){const e=[],t=new Set;this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(i,s)=>{if(!this.skipCoordinates.includes(i)){const n=new vt.Z(0,0,0,0);if(this.axisOrientation===Cn.Z.HORIZONTAL){const e="min"===this.edge?this.chartTransform.viewHeight:"max"===this.edge?0:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);n.setMinMax(s,e-this.extent/2,s,e+this.extent/2)}else{const e="min"===this.edge?0:"max"===this.edge?this.chartTransform.viewWidth:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);n.setMinMax(e-this.extent/2,s,e+this.extent/2,s)}const r=this.labelMap.has(i)?this.labelMap.get(i):this.createLabel?this.createLabel(i):null;this.labelMap.set(i,r),r&&this.positionLabel(r,n,this.axisOrientation),r&&e.push(r),t.add(i)}});const i=[];for(const s of this.labelMap.keys())t.has(s)||i.push(s);i.forEach(e=>{this.labelMap.delete(e)}),this.children=e}invalidateTickLabelSet(){this.labelMap.clear(),this.update()}setCreateLabel(e){this.createLabel=e,this.invalidateTickLabelSet()}dispose(){this.disposeTickLabelSet(),super.dispose()}}UA.register("TickLabelSet",lf);const df=lf;class cf extends R.y$t{constructor(e,t,i){const s=(0,N.ZP)()({radius:2,fill:"black"},i);super(null,s),this.chartTransform=e,this.dataSet=t,this.radius=s.radius,this.update();const n=()=>this.update();e.changedEmitter.addListener(n),this.disposeScatterPlot=()=>e.changedEmitter.removeListener(n)}setDataSet(e){this.dataSet=e,this.update()}update(){const e=new Nt.bn,t=this.dataSet.length;for(let i=0;ithis.update();e.changedEmitter.addListener(o),this.disposeSpanNode=()=>e.changedEmitter.removeListener(o)}setDelta(e){e!==this.delta&&(this.delta=e,this.update())}update(){const e=this.chartTransform.modelToViewDelta(this.axisOrientation,this.delta);if(Math.abs(e-this.viewWidth)>1e-13){this.viewWidth=e;const t=e=>new R.x12(0,0,0,this.outerLineLength,{stroke:this.color,centerX:e}),i=t(0),s=t(e),n=new Zp(i.right,i.centerY,s.left,s.centerY,this.arrowNodeOptions),r=new R.NBX({children:[i,s,n]});this.labelNode.maxWidth=r.width,this.children=[r,this.labelNode]}}dispose(){this.disposeSpanNode(),super.dispose()}}UA.register("SpanNode",mf);const gf=mf;class yf extends R.NBX{constructor(e){const t=(0,N.ZP)()({glassRadius:15,glassFill:"white",glassStroke:"black",icon:null},e),i=.25*t.glassRadius,s=new R.Cdc(t.glassRadius,{fill:t.glassFill,stroke:t.glassStroke,lineWidth:i}),n=t.glassRadius+i/2,r=new R.x12(n*Math.cos(Math.PI/4),n*Math.sin(Math.PI/4),t.glassRadius*Math.cos(Math.PI/4)+.65*t.glassRadius,t.glassRadius*Math.sin(Math.PI/4)+.65*t.glassRadius,{stroke:t.glassStroke,lineWidth:.4*t.glassRadius,lineCap:"round"});t.children=[s,r],t.icon&&(t.icon.center=s.center,t.children.push(t.icon)),super(t)}}ft.register("MagnifyingGlassNode",yf);class Af extends R.N52{constructor(e,t,i,s){const n=e.range,r=(0,N.ZP)()({applyZoomIn:e=>e+1,applyZoomOut:e=>e-1,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,buttonOptions:{fireOnHold:!0,fireOnHoldDelay:600,fireOnHoldInterval:250,phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1},spacing:0,orientation:"horizontal",align:"center",tandem:ye.Z.REQUIRED,tandemNameSuffix:"ZoomButtonGroup"},s),o=r.spacing/2,a=Math.max(0,"horizontal"===r.orientation?r.mouseAreaXDilation-o:0),h=Math.max(0,"horizontal"===r.orientation?r.touchAreaXDilation-o:0),l=Math.max(0,"vertical"===r.orientation?r.mouseAreaYDilation-o:0),d=Math.max(0,"vertical"===r.orientation?r.touchAreaYDilation-o:0),c=new ui((0,us.Z)({content:t,listener:()=>{e.value=r.applyZoomIn(e.value)},touchAreaXDilation:r.touchAreaXDilation,touchAreaYDilation:r.touchAreaYDilation,mouseAreaXDilation:r.mouseAreaXDilation,mouseAreaYDilation:r.mouseAreaYDilation,touchAreaXShift:h,touchAreaYShift:-d,mouseAreaXShift:a,mouseAreaYShift:-l,tandem:r.tandem.createTandem("zoomInButton")},r.buttonOptions)),u=new ui((0,us.Z)({content:i,listener:()=>{e.value=r.applyZoomOut(e.value)},touchAreaXDilation:r.touchAreaXDilation,touchAreaYDilation:r.touchAreaYDilation,mouseAreaXDilation:r.mouseAreaXDilation,mouseAreaYDilation:r.mouseAreaYDilation,touchAreaXShift:-h,touchAreaYShift:d,mouseAreaXShift:-a,mouseAreaYShift:l,tandem:r.tandem.createTandem("zoomOutButton")},r.buttonOptions));r.children="horizontal"===r.orientation?[u,c]:[c,u],super(r);const p=e=>{u.enabled=n.contains(r.applyZoomOut(e)),c.enabled=n.contains(r.applyZoomIn(e))};e.link(p),this.addLinkedElement(e,{tandem:r.tandem.createTandem("zoomProperty")}),this.disposeZoomButtonGroup=()=>{c.dispose(),u.dispose(),e.unlink(p)}}dispose(){this.disposeZoomButtonGroup(),super.dispose()}}ft.register("ZoomButtonGroup",Af);class ff extends Af{constructor(e,t){const i=(0,N.ZP)()({magnifyingGlassNodeOptions:{glassRadius:15},buttonOptions:{baseColor:Pi.BUTTON_YELLOW}},t),s=i.magnifyingGlassNodeOptions.glassRadius,n={size:new ni.Z(1.3*s,s/3)};super(e,new yf((0,N.JA)({icon:new zp(n)},i.magnifyingGlassNodeOptions)),new yf((0,N.JA)({icon:new Hp(n)},i.magnifyingGlassNodeOptions)),i)}}ft.register("MagnifyingGlassZoomButtonGroup",ff);class Pf extends Mu{constructor(e,t,i){const s=(0,N.ZP)()({cursor:"pointer",sensorTypeFunction:Mu.crosshairs({stroke:"white"}),scale:.4,drag:_.noop,tandem:ye.Z.OPTIONAL},i);super(s);const n=new Uh.Z(new Ys.Z(0,0),{tandem:s.tandem.createTandem("positionProperty")});n.link(e=>this.setTranslation(e)),t.link(e=>this.setCenter(e.closestPointTo(this.center))),this.addInputListener(new R._U3({positionProperty:n,dragBoundsProperty:t,press:()=>e.moveToFront(),drag:()=>s.drag(),tandem:s.tandem.createTandem("dragListener")}))}}it.register("CCKCProbeNode",Pf);const bf=rt.oneSecondStringProperty,Ef=rt.timeStringProperty;class vf extends R.NBX{constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({defaultZoomLevel:new Sn.Z(-2,2),preventFit:!0},r),a=new R.NBX({cursor:"pointer"});super();const h=o.tandem;this.meter=new Kh(h.createTandem("meter"),0),this.series=s,this.circuitNode=e,this.timeProperty=t,this.visibleBoundsProperty=i,this.backgroundNode=a,this.backgroundDragListener=null,this.addChild(this.backgroundNode),this.mutate(o),this.alignProbesEmitter=new $t.Z;const l=new me.ZP([a.boundsProperty],e=>e.leftBottom);this.droppedEmitter=new $t.Z,this.aboveBottomLeft1Property=new me.ZP([l],e=>e.isFinite()?e.plusXY(0,-20):Ys.Z.ZERO),this.aboveBottomLeft2Property=new me.ZP([l],e=>e.isFinite()?e.plusXY(0,-10):Ys.Z.ZERO);const d=new nf({viewWidth:150,viewHeight:100,modelXRange:new Sn.Z(0,4.25),modelYRange:new Sn.Z(-2,2)}),c=new _A(d,{fill:"white",cornerXRadius:6,cornerYRadius:6}),u=new R.xvT(Ef,{fontSize:14,fill:"white",centerTop:c.centerBottom.plusXY(0,5),maxWidth:120}),p=new R.xvT(bf,{fontSize:11,fill:"white"}),m=[new Sn.Z(-1200,1200),new Sn.Z(-1e3,1e3),new Sn.Z(-800,800),new Sn.Z(-600,600),new Sn.Z(-400,400),new Sn.Z(-200,200),new Sn.Z(-150,150),new Sn.Z(-100,100),new Sn.Z(-50,50),new Sn.Z(-20,20),new Sn.Z(-10,10),new Sn.Z(-2,2),new Sn.Z(-.4,.4)],g=m.findIndex(e=>e.equals(o.defaultZoomLevel));this.zoomLevelProperty=new Gh.Z(g,{range:new Sn.Z(0,m.length-1),tandem:h.createTandem("zoomLevelProperty")});const y={stroke:"lightGray",lineDash:[5,5],lineWidth:.8,lineDashOffset:2.5},A=new of(d,Cn.Z.HORIZONTAL,1,y),f=new of(d,Cn.Z.VERTICAL,1,y),P=new df(d,Cn.Z.VERTICAL,1,{edge:"min",extent:1.5,createLabel:e=>new R.xvT(Ve.Z.toFixed(e,this.zoomLevelProperty.value===m.length-1?1:0),{fontSize:10,fill:"white"})}),b=new ff(this.zoomLevelProperty,{orientation:"vertical",left:c.right+2,top:c.top,touchAreaXDilation:6,touchAreaYDilation:6,magnifyingGlassNodeOptions:{glassRadius:10,maxWidth:15},buttonOptions:{baseColor:"white",buttonAppearanceStrategy:hi.FlatAppearanceStrategy,cornerRadius:0,xMargin:3,yMargin:3},tandem:h.createTandem("zoomButtonGroup")});this.zoomLevelProperty.link(e=>{d.setModelYRange(m[e]),f.setSpacing(m[e].max/2),P.setSpacing(m[e].max/2)});const E=[new Ys.Z(0,0)],v=new uf(d,E,{fill:"#717274",stroke:"#717274",radius:4});this.updatePen=()=>{E[0].x=t.value;const e=s.length;if(e>0){const t=s[e-1];E[0].y=null===t?0:t.y}else E[0].y=0;v.update()},t.link(e=>{d.setModelXRange(new Sn.Z(e-4,e+.25)),f.setLineDashOffset(e*d.modelToViewDelta(Cn.Z.HORIZONTAL,1)),this.updatePen()});const w=new JA(d,[A,f,new XA(d,s,{stroke:"#717274",lineWidth:1.5})]),V=new R.xvT(rt.dataOutOfRangeStringProperty,{fill:"red",centerX:w.centerX,centerY:w.centerY,fontSize:13,maxWidth:d.viewWidth-20}),S=()=>{let e=!0;s.forEach(t=>{t&&d.modelXRange.contains(t.x)&&d.modelYRange.contains(t.y)&&(e=!1)}),(s.length>0&&null===s[s.length-1]||0===s.length)&&(e=!1),V.setVisible(e)};S(),s.addItemAddedListener(()=>{w.update(),this.updatePen(),S()}),s.addItemRemovedListener(()=>{w.update(),this.updatePen(),S()});const T=new R.NBX({clipArea:c.getShape(),children:[w,V,v]}),C=new R.xvT(n,{rotation:-Math.PI/2,fontSize:14,fill:"white",rightCenter:P.leftCenter.plusXY(-10,0),maxWidth:120}),I=new gf(d,Cn.Z.HORIZONTAL,1,p,{color:"white",left:c.left,top:c.bottom+3}),x=new R.NBX({children:[c,T,b,C,u,P,I]});u.leftthis.setVisible(e)),this.meter.bodyPositionProperty.link(e=>a.setCenter(e))}addProbeNode(e,t,i,s,n,r){const o=new Pf(this,this.visibleBoundsProperty,{color:e,tandem:r});this.addChild(new Ou(n,new Uh.Z(new Ys.Z(-25,0)),new me.ZP([o.boundsProperty],e=>e.centerBottom),new Uh.Z(new Ys.Z(0,25)),{lineWidth:3,stroke:t})),this.addChild(o);const a=()=>{o.mutate({right:this.backgroundNode.left-i,top:this.backgroundNode.top+s}),o.translation=this.visibleBoundsProperty.value.closestPointTo(o.translation)};return this.visibleProperty.link(a),this.alignProbesEmitter.addListener(a),o}reset(){this.series.clear(),this.meter.reset(),this.zoomLevelProperty.reset()}getBackgroundNodeGlobalBounds(){return this.localToGlobalBounds(this.backgroundNode.bounds)}startDrag(e){this.backgroundDragListener&&this.backgroundDragListener.press(e)}initializeBodyDragListener(e){this.meter.isActiveProperty.value=!1,this.meter.isDraggingProbesWithBodyProperty.value=!0;const t=new ot.Z(null),i=new R._U3({allowTouchSnag:!1,positionProperty:this.meter.bodyPositionProperty,useParentOffset:!0,dragBoundsProperty:t,targetNode:this,tandem:this.tandem.createTandem("dragHandler"),start:()=>{this.moveToFront(),this.meter.isDraggingProbesWithBodyProperty.value&&this.alignProbesEmitter.emit()},drag:()=>{this.meter.isDraggingProbesWithBodyProperty.value&&this.alignProbesEmitter.emit()},end:()=>{e.sensorToolbox.globalBounds.containsPoint(this.getBackgroundNodeGlobalBounds().center)&&(this.alignProbesEmitter.emit(),this.reset()),this.droppedEmitter.emit(),this.meter.isDraggingProbesWithBodyProperty.value=!1}}),s=()=>{const i=e.visibleBoundsProperty.value.eroded(Eh.DRAG_BOUNDS_EROSION),s=e.localToGlobalBounds(i);t.value=this.globalToParentBounds(s),this.meter.bodyPositionProperty.value=t.value.closestPointTo(this.meter.bodyPositionProperty.value)};e.visibleBoundsProperty.link(s),this.circuitNode.transformEmitter.addListener(s),this.backgroundDragListener=i,this.backgroundNode.addInputListener(i)}}it.register("CCKCChartNode",vf);const wf=rt.currentWithUnitsStringProperty;class Vf extends vf{constructor(e,t,i,s){const n=(0,N.ZP)()({},s);super(e,t,i,(0,ge.Z)(),wf,s),this.probeNode1=this.addProbeNode(Eh.CHART_SERIES_COLOR,Eh.CHART_SERIES_COLOR,5,10,this.aboveBottomLeft1Property,n.tandem.createTandem("probeNode")),this.lastStepTime=null}step(e,t){if(this.meter.isActiveProperty.value){const t=this.circuitNode.getCurrent(this.probeNode1),i=null===t?null:t.current;for(this.series.push(null===i?null:new Ys.Z(e,i||0));null===this.series[0]||this.series.length>0&&this.series[0].xnew R.xvT(e,{tandem:t.createTandem("labelText"),fontSize:Eh.FONT_SIZE,maxWidth:120,fill:Vh.textFillProperty}),d=a.createTandem("currentTypeRadioButtonGroup"),c=new R.BET({children:[h.createBox(l(Cf,d.createTandem("electronsRadioButton")),Mf),new Lg({scale:.75})],spacing:11}),u=new R.BET({children:[h.createBox(l(Tf,d.createTandem("conventionalRadioButton")),Mf),new Rg(ye.Z.OPT_OUT)],spacing:11}),p=new tt(i,[{value:Tl.ELECTRONS,createNode:()=>c,tandemName:"electronsRadioButton"},{value:Tl.CONVENTIONAL,createNode:()=>u,tandemName:"conventionalRadioButton"}],{tandem:d,spacing:6}),m=new R.DbO(p,{tandem:ye.Z.OPT_OUT,leftMargin:30});t.linkAttribute(p,"enabled");const g=a.createTandem("labelsCheckbox"),y=new Eu(n,l(If,g),{tandem:g}),A=a.createTandem("valuesCheckbox"),f=new Eu(s,l(Bf,A),{tandem:A});let P=null;if(o){const e=a.createTandem("stopwatchCheckbox");P=new Eu(r.isVisibleProperty,l(kf,e),{tandem:e})}const b=a.createTandem("showCurrentCheckbox"),E=[new R.SHm({align:"left",spacing:8,children:[new Eu(t,l(xf,b),{tandem:b}),m]}),y,f,...o?[P]:[]],v=new R.SHm({children:E,spacing:10,align:"left"}),w=e.createBox(v,{xAlign:"left"}),V=new R.NBX({excludeInvisibleChildrenFromBounds:!0});v.boundsProperty.link(e=>V.setChildren(e.isValid()?[w]:[])),super(V,a,{yMargin:10,visiblePropertyOptions:{phetioFeatured:!0}}),y.touchArea=y.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),y.mouseArea=y.touchArea,f.touchArea=f.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),f.mouseArea=f.touchArea,o&&P&&(P.touchArea=P.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),P.mouseArea=P.touchArea),this.stopwatchCheckbox=P}}it.register("DisplayOptionsPanel",Df);const Of=Eh.TOOLBOX_ICON_WIDTH;class Lf extends R.SHm{constructor(e,t,i,s,n,r,o,a,h,l){let d=null;e.value.length>0&&l&&l.tandem&&(d=new R.xvT(e,{fontSize:12,maxWidth:Of,fill:Vh.textFillProperty,tandem:l.tandem.createTandem("labelText"),visiblePropertyOptions:{phetioReadOnly:!0}}),delete l.tandem,t.linkAttribute(d,"visible"));const c=(0,N.ZP)()({spacing:2,cursor:"pointer",children:d?[r,d]:[r],touchAreaExpansionLeft:0,touchAreaExpansionTop:0,touchAreaExpansionRight:0,touchAreaExpansionBottom:0,excludeInvisibleChildrenFromBounds:!1,additionalProperty:new se.Z(!0),ghostOpacity:.4},l);super(c),this.addInputListener(R._U3.createForwardingListener(e=>{const t=e.pointer.point,i=n(t);i.y=i.y-(e.pointer.isTouchLike()?28:0);const r=h(i);s.circuitElements.add(r),r.startDragEmitter.emit(e)},{allowTouchSnag:!0}));let u=null,p=null;Ze.Z.multilink([s.circuitElements.lengthProperty,c.additionalProperty],(e,t)=>{const i=a();if(u!==i||p!==t){const e=i{this.touchArea=this.localBounds.withOffsets(c.touchAreaExpansionLeft,c.touchAreaExpansionTop,c.touchAreaExpansionRight,c.touchAreaExpansionBottom),this.mouseArea=this.touchArea};i.link(m),this.localBoundsProperty.link(m)}}it.register("CircuitElementToolNode",Lf);const Rf=rt.voltageWithUnitsStringProperty,Nf=Eh.CHART_SERIES_COLOR;class Zf extends vf{constructor(e,t,i,s){s=(0,N.JA)({defaultZoomLevel:new Sn.Z(-10,10),tandem:ye.Z.OPTIONAL},s),super(e,t,i,(0,ge.Z)(),Rf,s),this.probeNode1=this.addProbeNode("#ec3223","#ec3223",5,10,this.aboveBottomLeft1Property,s.tandem.createTandem("probeNode1")),this.probeNode2=this.addProbeNode(Nf,Nf,36,54,this.aboveBottomLeft2Property,s.tandem.createTandem("probeNode2")),this.lastStepTime=null}sampleValue(e){const t=this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode1.translation)),i=this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode2.translation)),s=this.circuitNode.getVoltageConnection(t),n=this.circuitNode.getVoltageConnection(i),r=this.circuitNode.circuit.getVoltageBetweenConnections(s,n,!1);return null===r?null:new Ys.Z(e,r)}step(e,t){if(this.meter.isActiveProperty.value)for(this.series.push(this.sampleValue(e)),ct.showVoltmeterSamplePoints&&this.circuitNode.addChild(new R.AeJ(-1,-1,2,2,{fill:R.Ilk.BLACK,translation:this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode1.translation))}));null===this.series[0]||this.series.length>0&&this.series[0].x{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const Ff=qf,Yf=[{width:67,height:507,url:"data:image/png;base64,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*zoC4FSFuRghxo6NHpo3bzLjNGmYIECDEKvEmM5BA4kYCnFUmEFeJGxm8h9vMuM3EGgkQiMucNRJIrHOuJ3GFuJ4QQog1wTTFbWbcRl94cubeYGCAnCETmICQ4QgQt+SOxJAJTCBuwflPuM2M28ikhw1hJpAIgAQSKGsggcQtSUISQqySIAgk1pkYMuMpbjPjNjLxuAkEmEDiKgEy3o64kQmCIBiINzn7uM2M28jg7wWBAcZNmAECGYirJJARgiFuToC4KuLcbsZtFMQNhDABIQACiRvIIARAiDUStyS2h9ydrfrx3/zUL1WD3u9eWlxksdPFBL3aMUACAUVyjKsCG5OA2iG5kxyamUgOJHBBbmJVIxj7ZnYzNTXJ+/7Xb4q/BLk7b+f533jqF8ruyh+8ce4cg+gIqJNjBmOZ0Q7GRG7saQVyE1mWkWUZMkONJtm++wi796KxKRRykPBeh7Qyj68sQV3gVYEXBXW/g5cFVVVSRKdKTpmgdqd2p04Qk1Mlp3IY1E6REp3aqd1Z5UAusXdylLsP3M37/tGfiQ2Qu3Mzx/7mJ/3YK69SJceBXXlguhmYbBjNIDKJTJAHI4xMYONTMDKGxneh9jhqjkCzhZptQJAFUGco*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*ziE4/OlV0IpCcoU88+gAL8xc4udAlOkO96GxFxiYloE5ODE1Od/ssFJGLz73IA+M5kw1jPDfGMmMsiMzESLMBjTbKc/LxSWx0gqKqmZ+fI1lFbSKqpPKaikTtkclGIKsTJhCJMRn96FTRKd3pR6eIThGdb734Ks5VB8cazPYqtiJjkz723of5wx+8SPI+uxrGdDMwkokgMUiO0+CehtMOIm+PECZ2Y80RhvIGxEiqKt5YWGLQH3CtZiNnqhUY95JWMEYzo4xOkZx2cqro9KPz+EOHOXnmNOeX+/SjUyQnOUPnuiV/7YnH2IqMTfrQ//bn+toHZjwmyAwePHQfxcUzjOy9m8W5C+zNamoCao8Rdu/FRsfR2C6UZdBso9YoE1mDT77ng3jZh6qEusSLPt7v4EsLFBdO060juTldJVLtJBduQHReeOVVxkbbfOTRB3nmpVcYz1v0BgO6tXPv9BQjmf08WxCOHj3KZn3ib/3tz7ae+crR1F2iVXYYz43Rqsu+JuxuBCYnp2jsvxebnEajE6jVhtYYarYha0DIQEJc5kCKkCJKEWINvSViTNQOdXLqBBGIDpIjE4Oy4vzCJQSUdU0m8XNPPMZf+90fau8v/PsvswUZm/S9v/GR/+bYide/sKthTOaGIRyI7rgLB7wqoK6griGLUFdgGUisq2uoK4glXpVQlXhV4v0OVVVTO1TJqYHandqd6E7tkNypE0SH2h0Hiuj8yx8c46tPTvvPHXmUD37xz8UmGZv09LETXzBBnZzo4DgxQXSndojJieUAH/TwqoS6xOsa6gKvS6hLqCuIJV6VeFlAVeDlAPod4tI8tUOZnDo5MUECYoLkkBzcwYHoTnKIDg64O1WCr3z/RbYiY5McSAk8QHSndpHjRBcxwSDP+e6KUy+dZfbSizhOcsgl3CGxxlmT3EnOuujgOA44IAcHgsQjB6cZk+h2+nS7fZIz5M6Qs8bZmoxNkkQCosPM3Yf41rGXKeoEgpYZ0Xv0YiQmGMuN0WC0ctEOIkgEgUlcK7qTHIqYKBwGdWIQnW7tuDsJcJzvnryIc1UQBInxXDx8cA/fOznLFV/9xcf8M79/TGxCxiaNtpvMdQa8ERMvPPsidYIgaAcx3hCTuTGW5YxmxmRuTOTG6MQE+eQebHQUWqOoNQo4lAO838E7y9SLFxn0uvTrRDc6vSrRjYlu5fRiYqV2lspEGZ3aneSQHKI784Xz9IlZBDRMfPCR+0nlCpuVsUlvLPZIDgKCYF87sKcZ2NUwWkE0TASJkUxEYFktOr2a/Yf30hrfBXkLNXJIjpd9aLRRa4R8ZIxsZYnmwnmaRUnbRKsWrfEJpiU6/R4LK12Si+Uy0Y2JIjp1cqKDAw4UyfnWi6/yrz75GJuVsUkff+QB/vylV8kF+9qBsWA088CBg/fAwlkaQWSCuO8wzRSJMbE0d4FXv/MtkgzMcE8UVSTh4IA7CWdVcnAuc6gcGlWHqakpZqZ2c/8DD/HDZ59loiGa0VDeZLIVeHVuhU7tJAcBH71/L608Y7Pk7mzW9371p/0bz7/EY9Oj3HNgHxfPn6Osa4KgiE4uyEwc3rOLkT37ae7aQz4+BVkOFtDION5bYShGfGkOrwZQVTDoUV48Ta8oKaKzUicG0Smjs1AmBilRJgiIhBMk7j94gB+cusCgKBlpZHzkkft/6cgX//z32aSMLRgsX+TRmVF6/QHz586yuyFazZxWECOZaIxOYHvvRqMT0B4n7LsbXGCGy1DIsMk9EDKoS3x6P76yhK/MoRhpHjhEXvQoywHjVc2l+QVOv/E6DRMgAjCITpWcvjvfP3GaIjmrpsfa*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*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*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"},{width:34,height:254,url:"data:image/png;base64,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*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"},{width:17,height:127,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAB/CAYAAAAJkynQAAAAAklEQVR4AewaftIAAAhdSURBVK3BT2ykd33H8ff3+zzzjGdsr//uZneT7LJkkxRKBUhVaanUwAGBRI+9cEDixoFDpR7S3pKICC6VuFctKqrUU6X2VCFAqFVILhGpklOBAGHZZO11PB7bY8/MM8/z+zC2H69/Yz/+F+3rxVlee+ONJ197/Y1vcQ7nbH89GhXPcQ7nDGVRPj8YDJ7hHM4Z+v3+3cFgcJVzOGfIh/nVQX9wnXM4ZxgMBzfzUb7MOZwz5Hm+HMrQfvmVV7/IGZxTvPzKq39RlqHNgRc4g3O6NkeanMF5DJzHwHkMnMfAeQycxyChxj/9+fKLX+y+872/+qM77bu//z+GP/33z/3JQvbln670v08Np8aVRrLUSpNlSxvsSc0aifEpTuHUGEmfTdIGuGMGiYGZzXEKp8Z06qRpA3PHMNwNA7796cVPUsOpI64maQrmWJLgQGJgxteo4dRInPkkbYAZe9wgMcgDKTWcGpmPJQ1wB4PEIDHD0JPUcGqU0i1PG4BhZrgZiQFm16nhHPOdzyw2Mzc8TcEMwzAgMUNSSg3nmMz9G5kbnjYAAzMSMxKDxLhNDWPsh1+5828tyj+ey3wxm5m/TWsOFp6ARkbYWGW4eo9ub5udIpBOTQ8ebvVWyiR7v9fP//Vv31z9Z/vBF57+Wcjzv5Q528OcYRB5gOUbH6MxM0eLEd17v2BtUCKJPWZG4k4jbfDkfPtb6epuycbuECFm0oQ/XWryycVpll74An7z45S/+3/eG9zj19s593cLVvolo1BCGWibc3+9O0x+/P7297/+iRt3MA/THlq3phtTC60mrdvPY7MLaHOdzfd+wUZe0ivEbiFaWfO9dpa92VD53b9/a/1fUsa++b+//QZjP/j8tf9x4wUzB3MOGWAYBhigYvR3//B25z+pOJESnnQMMwN3DhlggDFmIOPTRJxIaqRuYO5gTDADNzCgDDSJOJHEDDMwczDnkBkHDMyglIxISqTZSC1NUrw1C0WOel0YDWlNtZktS5LBJq0so4mWiKREtka6fa83Ynj/90ytdxhaQm97i04/R2nGZl5SYkjlbSIpkUajcW+5Zbf*ckL/KzLOfIp+aZfDhCvmv3uE3G1uE2WlWdnJuLF/9NXzIoZRIGI1urYXAaHWD2fAujSsLFJ1VHq5v8qAf6BUFeRlY29z+MyIpkTJJu0ttm792pc3cU0+Rzl+lvDLNQgpzWz1+tboGlrA0M90h4lR+9DeffXE5CfMLMzOkaYam59kuhLIphoXobHQQCY0k4UF3+ykiTmXl4SqruVjb3CKEkisMuZYFWvkOjX6HZmKYO4NSWChEJKXSG4x4ajplOXOmWm02CsM1IpRipxSDMuACFSNyvEUkpTI7e+X22nCADZ3RB/eYL3LaTzwNu9tIQt5gUOY0m1NYKK8TSanMuKzdTrg5N8PMwiK6+QyDNGMUEsrsChZWWGxlrOzkOL5FJKWyXXL33k7O5nCDJ/pD5mmSzS2Qr6/S21yjT4O13YKdMmBm14ikVKYaybvPLU5/aclylq9dY/rqMppbYpRvY62MwgQSzcLZyosPiaRU1nv9uw+LIZ2pjN6DFRa9SbPbpb/2Pqu9AQ92S3blbI0CifsykZTKneXZlUHPuHWlxcJ0i9aNG0zffJrub9ok+S7GLqOkxf3tPjnWJZJS+WBj53rDnV92eiz0+swl97HONqOtDTa2B3yYw245YKcIpEkyTySl0kiTd6c0+tLHZjKWF5doP3uXdGaO4Qe/ZWP3IY1uj04eCCU0s+whkZRKPti9uzDlNDBmGk57cRGbmSfrrdMdDQBRhMCwKFkfbF0j4lR2i7JvVCSOEyBAgMQEpxJQECAuz3nEkPhInENii4qomBET9ZxKZqxySIA4SyDi1FEAxD4xQewLRJxKAAkQe8QR8YgAcYJTEXvERYhJTkUgKmJMYoJ4RGKViHNEoiIRkzguEHEuSICo50QkkDiT2CciTqUQiAsTEacSBOKABIiIiGmMiHNB4nRORQgEYkwlMXFA1HMeEY+IMbFPIiZOcipFYCDGxLkSZ4JTCaLPRYgTnIj4aJwjzpgAIUAcJ4E4yakIhmKPQOIynIqk/5I4lwBjkhMRpxNHhJVEnIogCBAgxiSOEwLEmIg4FWE54kAQl+FUJIbiUABxQOI4iXUiTuWltzsdJohDYkzsEyDYIeJMELXEmZyIAIkD4hEREXtExDlGgDhJxCQiTiSIA6KWqMhExKkhLseZII6IOuIkJxJERVyGU0eijsQ+dyY4kwaiIhETR9yY4FyYOCQmORFxPnGSU0NcjhNJjA0xJnEWNyakRMxsxJgkYuKAGBMIAhEnJiLiDAURJyLQGPsk6ggQIuZEBIgxBfaJMXGcZF0iTkRj7BPiJIl9QVoh4pxGjIlDImbEnFOJCeJUTkSAxAnihEDEiYgDQUyQQOwRYl9JxIkEcUTsE0dERUxwLkHUcyJCiJhxEc5pJDBOEiTOBCcSRGBMCoA4TcOZ4EwairMJEJOcSSaOESeISc4kMSYBoiL2CJCo5UQM6/GIOE3CJCeSGFtcgDHJiYgxURGnkTEi4kySqIhHBIgjEoGIcypxGqEdIk5EQhySQOwTYoL4MREnEhB7RD0JBMgsJ+IcI04hEPWcmECiljgSAkMiTkSAuABjg4gTEWKPGJMAUeeltzsdIk4kiH0Sl+JExB5xgtgn6jkRCcTlORExJhBjCkwQ+8w4wYkIhhwSF5YSydKkCOZs5iVhdZ2wXTBcvU+ndEZJRqAgdee4lEihZPjz9SGG6N9/HRCJGXkQzTShKAMOA45JiPz3/e3/+OrTM3dbWbMICsPZVtZ19+5UI+nOTDW7ico3U/d//MmD3beI/AHLps7N1VumZQAAAABJRU5ErkJggg=="},{width:9,height:64,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAABACAYAAADIxl20AAAAAklEQVR4AewaftIAAANaSURBVI3BzW9UVRzH4c/5nXOnM4W+pC0gCEZMQZfGjbKAlQsXLomJC9bGhS5Y+U8YFy5M/BdYGo2JRiNVXEhiYoxBY0JieBVbYdrOdDr3nq/n3h6ml0INz0PbypUrr3373coF9gi0DAfDs8Ph1mH2CLT0+/3Tg8Fwnj0CLRsbmye2R9sz7GG0xBg7McYuexhPwXgKnuzTV5fOvfLC8oXpezcXTj/4ffObO8OrZEY2XdiZo5u3lg/f/e2od7xJi5FNe3smFAFvhjnmaTGyjndLPgTMHN65WVqMzDuOmA94cxjM0uK/fOPkW++9OHfx4Nzimc7Ckdnh2j027t/rvn1q8eXXn5058dlf/R/DtbXND8dVdXx5ZhsrYbgdWR1V3b8f9M+HUJz/5Ozxa9brHrg45f1Xp+a6vHTyOZ5fmmNhyhPM/zHl/fvvrtz4wt65fP3SbNBtMwNzOMBwIK1/cPXOxySBpBuChWIKlWMMUYRAEWJBFki28AfXtsaEX39m9eYNxhLdInTJjERSMaoile8w1esh5/HmpskCSc/b0vx0j7nFBTrDdQqVxKgumZHEGItyPGbr/hpbg3UqgaRpMqNmdnBsgaGMjTHIOSQCmZFEoCxLilhio3UkcAmZkRRmhioqX1CGHmYOc86RGYnFcTzU63Do2DEOzx6go4qYkBmJYmXBQdHrEUIgIobjcYfMqImK/2Ek3rmBJBoCAYji*ziRCgNghEI8wEoFEIiEysUFmPCTxkGiIzEgq8RiByIxMEvsxEgkhdkiIRxk1R8kejl1GIkBEJgRil5F4WOdxIjOSCJIAiZpoiMxIJECRmiRqggGZUXM8gSoyI5FAJKIhEiEyIxFCIhFPYiRRAsSEAMeEsWObFiHajESA2J+ReOf6kqiJxxkNV9EQDwkimZFECSmCaIhEDMiMhkRNoiEQriQzkghITIiGyIwkRiYEiIbIjEQIsT8jiaKURJtjl7EjikyiJnYZiTnXpyFqAhy7jMTBNgJEWyQzEuHYIcQOoSGZkURFiUQ0JBBuRGYkEohdoiEyI4mAqIkJMWEklUAS+zGSCJGaREPgjIlAEnzY+nO95Nb3P7G5ept/SzBcReZJPr+xcfncsZnu3bV/rvdHo1+8+R9cjB99fWdwi+Q/RBqKh2zl9kgAAAAASUVORK5CYII="},{width:5,height:32,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAgCAYAAADaDrJgAAAAAklEQVR4AewaftIAAAFmSURBVFXBTWpTYRTH4d859waxt21avyLisCMHjpx07BIK3YNbcgnORURUqC7ADxAcSHUgQhCqaSG5931z/p7EKPR5WHnx8tXDp8+eH7PRkqbT6eFi3m8BT0gtqe+H3VJKx0ZLuns+3f01u9hhoyUd/Pjw4Ovp6Q02nGTGGLTNRvP4cHKyd+3WvdnZz+5+V4+ODvZfe0gnd25ev7K/veWLGu8evfn+2btRO5//PqP0C66O2oHkZj7u+wUCRo3tkNyNvagDtQxExDbJcR/VEMtacHMnebscmExuM+46hlqN5CYVbxowo0Q4yTGKJBAgCslDgIQAwUDyEIgV8Y/LqKyI/9xhjkAkIZKHEAgQMs1JHggJRAoFyUMRIBBgrDlYL3GJG7YQQoCgkDwIkFiRvCd5XQKCYE0kD1HFZe7GuRBIGIjkwpYIBASak3wZQoi/rJK8CCGxZqy1TdN8e/v+08fZxcwbsy+kP2w/vYZbTt20AAAAAElFTkSuQmCC"}];Yf.forEach(e=>{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const Hf=Yf,Gf=[{width:256,height:318,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAE+CAYAAABiAs67AAAAAklEQVR4AewaftIAAC6HSURBVO3Bf2zc533g+ffz+c5vasgxY9OpWN5MMDbMwj6bjUHcnVEksoIt4mKzZtBF08XGqPXHAl3j0MTAAVkgwTnBJcAWBc5OcPBu7/YgBeotYOwflrFAk1tcFLpojXZ5bseGg5tuNOh3liGTjGVphmOJ8/0+3+d5TrLcWrYlccgZcmbI5/XC87yjS+EdatVyZQkosXthoxmGeIeawhuZarlSApb4QAlY4sMeAUp83BJQYvRCIOTjQqDJh61yk0YzXMUbKYU3VNVy5QQ3VIAKNzwClLihAlTwPioEQm4IgSY3hEDINY1muIo3VAqvb9VyZQkoAUtACXgEKAEVoIJ3UEIgBNrAG0AbqAHtRjOs4fVN4X1ItVxZAirAElAGKsASUMKbFG2gBoRAE6gB7UYzXMX7EMURVS1XloAKsAR8FqgAFbzDLgRC4FUgBMJGM1zliFIcAdVyZQk4ATwCVIATeN6H1YAa8AZQazTDVY4AxSFULVeWgBXgs8AJPG9vasAq8Cqw2miGbQ4ZxSFQLVdKwAngSWAFKHFEpdJpRITrFDeks1muU3yYA5y1aK25zlpLojXebZ0DXgXONZphyCGgmGDVcmUFeBJ4mkMsk81yXTqdRoIApRSZbBalFEopstksSimUCEoprlNKoVAoxTUKFDc4cDhw4HA453DO4ZzDWYt1jjiK0HHM9tWrRL0e3i3VgO8DZxrNsM2EUkyYarlSAb4CrAAVJpwSIZ1OIyKkMxlSqRSpdJogCMhkMigRRCmUCKIEpRQighKFQiEiKFGAQimFKAVKoRTvU/wD53A4nHM467DO4azFWou1Fmst1lqMNVhrscagtebSxYskWuPd1hng+41muMqEUUyIarlyAvgKsMKECYKAIJUinckQBAHZbBYlQi6XQ4IAUYKIoEQIRFBKIUGAUgoRQUShlCAiKKUQEUQUSglKKUQUoFBKoZTiOqUU1znncM7hnMNai3MWax3WGoyxWGswxmKNwViDNRZjDMYarDEYY0iShF9ubuLtKAS+BZxrNMM2E0Ax5qrlygngOeAEYywIAoJUinQmQyBCNpcjSKXIZLJIIAQSICJIIIgIgQQoEUQEEUFEEBFEBBFBRBBRiAQopRARRAQRQURQIogIohRKBKUU73EO6xzWWqy1WGuwxmKMwRiDMQZrDcZYrDUYYzDGYBKDMQZjDcYYjDFYYzDGEPV6XGy18PrWBr4LvNBohm3GmGJMVcuVE8BzwAnGQBAEBKkUQSpFKghIpdMEqRTpdJpUOo2IEIggQYBIQCBCEARIECAiBIEgIogEiAgigogggSAiBBIgIogIEgSICIEESCCICKIEJQqlFEoplFL8Pecc1lqMMRhjMMZgjMEYgzUGYwzGGIwxGGMwxmCMwRiDtQaTGIwxGGMwxmCswRiDjmOuvPsuV959F2ct3q61ge8CLzSaYZsxpBgz1XKlApwGTnDAMtksIkI6nSaVThOkUmQyGYIgQCmFEkGUICIoUQQSICIEQYAEAUEQEAQBQRAgIgRBgIgggRBIgIggQUAggkhAEAgiARIIogQlCqUEpUApxa0453DOYa3FGouxBmssxiQYa7HGYIzBGIO1BmMsxhiMMVhrMMZijMEYgzUGYwzGGowxWGOIej22r16lt72N1hpvKNrAs41meIYxoxgT1XKlBDwHfJV9pkRIp9Nks1nSmQyZbJZ0Oo0SQUQQJShRiBKUKEQJIoKIICJIEBAEAUEQEAQBQRAQpAKCICCQgCAIkCBARAiCgEACRAQRQYlCKYVSip0453DWYZ3FGouxBmsMxlqsMRhrsMZijMfa*gzEWYwzWWowxWGsxxmCMwRqDsQZjDNZajDFYY+htb9Pr9dBxTBRFOGvx9k0NeLbRDFcZE4oxUC1XVoDTQIl9oETIZrNkczlyuRyZXA4RIZAAEUFEEBFEBCWCiCBKoUQQEYJAEAkIgoAgCAhSAakgRZBKkUqlCIKAQAKCQFAiiAhKKZRS9MM5cM7hnMVaizUWYw3WWIw1WGMw1mKNwRiDtRZjDNZajDFYazHGYK3FGIM1BmMN1liMNVhjMNbS294mjiJ0HKPjGK013kicAZ5tNMM2I6YYoWq5UgJOAysMWTqdJlcoUCgUyObzBEFAEASIBAQiSCCIBIgIQSAoJYgIIoKIICIEQUAQBARBQCqVIkilSKVSpIIUQRCgRFBKoRR9c87hrMM6i7UWYwzWWIw1WGMw1mKNwRiDtRZjDNZajDFYazHGYK3BGIu1BmMs1histRhjsNYQRRE6jtFxTBzH6DjGGIM3VtrAqUYzPMcIKUakWq6sAKeBEkMSBAGFY8c4ViySzeVIpVKkghQSBARBgIgQBIJIQBAIIgEigoggIgRBgARCEASkghRBKkUqSBGkAkQEEaFfzoFzDucs1lqMMVhrMYnBWIM1BmMNxlisMRhjsNZircEYizEGay3GGKw1WGMx1mCNxRiDtZYo6qG1RkcRcRxjkgStNd5EOQM822iGbUZAMQLVcuV54KsMSWFqiqlikampY6QzadKpNKlUiiCVIggCgkAQEZQSgiAgSAUEEhAEASJCEARIEJAKUgSpABFBRFBK0Q/nHM45rLVYYzHGYKzBGoMxBmMtxiRYYzDGYozBWoMxBmMs1hqMsVhjMNZgjMVagzEGkyREUUSiNYnWRL0e1lq01niHRgh8sdEMaxwwxQGqlisV4GVgiQGJCFPFIsXpGfKFPJlMhnQ6QzqdJpVKkUqlCAJBJEBEEBGCVIpUECBBQBAEBEFAIAFKBBFFP5wD5yzWWqyxGJOQGIM1BmMMxhiMMRhrMInBWoMxFmMMxhistRiTYIzFGIM1BmMNidbEUUSv18MYg45jtNY4a/GOjGcbzfAFDpDigFTLlRPAy0CJAYgIx4pFZu66i1w+TzabI5PJkMmkSafTpFJpglSKIAgQEZRSBEFAKpUiFaSQQFBKoZSiH845rLUYYzDGYIzBJAnGGIwxGGNIkgRrDUlisNZgEoOxBmMsxhisMRhrMMZgjWF7e5tEa7TWRL0eidZYa/G8a84AzzaaYZsDoDgA1XLlaeA0A1AiHCsWKd11F/l8gWwuRzabJZvNkslkSKfTpNNpglSKIAgQJSilkEAQEZRS7MQ5cM5ijMWYhCRJMElCYgwmSTDGYExCkhistRiTYIzBGIsxCSYxGGMwxmCsQccxURSho4g4jjFJgtYaz9tBDXi80Qzb7DPFPquWK88DX2UAuXye2bvvZmrqGLl8jlwuRzabI5vNks1mSWcypNNpgiBAKUEp+uKcwxqLsYZEJySJJkkSkiQhSRKSJMEYQ5IkGGMwxmCMwRqDMQZrDcYYtE6Iox5RFKHjmCRJiKMIzxtACHyx0Qxr7CPFPqqWK6eBp9mjIJVi9u67mZ6eIZfPkcvlyeVy5PJ5ctkc2VyWdDqNiLAT5xzOOay1mMSgE02SJCRakyQJWmuSJCFJEpIkIUkSTJKQmASTGJJEE/UijEmIo4gkSUiSBK01zlo8bx+0gccbzbDGPlHsk2q5chp4mj2aKhaZvftuCoUp8vk8+XyOXC5PPp8nl8uTzmQQUezEWouOY4yxGJOQJAlaa7TWaB2jtUZrjdYJidboRNPb3ibq9YijiDiO0VrjrMXzRqANPN5ohjX2gWIfVMuV08DT7IGI8Il77mF6ZoZcvkA+nyefz5PP58nl8+RyOYIgoB/GGOIophf1SLQmSRK01mgdE0UxOo6J45go6nHl3XfpbW/T297GWovnjZE28HijGdYYMsWQVcuV08DT7EE6nWbu+HEKhSny+Tz5fJ58Pk++UCCfy5PJZlBKsRPnHEmSEEcxUdwj6vWIY43WmjiOiaOIKI7YvnqVzuXLbG9v46zF88ZYG3i80QxrDJFiiKrlymngafa*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*mskCQJSaLROkFrTaI1OtHEUcTld95h++pV7mR+Br72uOPkfQ7PG5anHnWsPOR48TXF2dcVE+A54Aw7CNjBbKl0GqiwB0EQMH3XXaTTadKpNKl0mlQqQEThHBhjMCZB6wStNUmiiWONjmPiOCbWMTqOuXr1Khd/+UviOOZOnnnM8b0Vx6dm8byhy6bgNz4FJ+9z/N0lxeYW46w0Wyqpy532KncQcAfVcuUE8E32KJ3JUCwWSaXSpNIpUqkUIsJ11lqMMRiTkCQarTVxrNE6RseaWMfoOObypUu033kH5xy3szgH//a3LU8s4nn77u4pWHnIUczCmz9XxIZxtTRbKv3x5U67x20E3MFsqXQaqLBH+akp8oUCqVSKVJBCRFBK4ZzDWosxBq0TtNboWKO1JtYxOo65evUq77Ra9La3uZNnHnP80T923D2F5x2oR47Db/2aY21dcfEK4ygH/PJyp/2X3EbAbVTLlQrwAgPIZLPkCwVSQQoJBKUU11lrMcaQJAmJ1uhYo7VG6xitNe1Ll7j8zjtYa7md+Rk4/SXLE4t43sgUs/A7jziuW1tXjKHFy532d7mNgNuYLZWeB5YYQCabJZ/PI4EgSrjOOYe1BpMYkkSjtUYnGq0121eu8E6rxfb2Nndy8j7HH/9Tx/wMnjcWlhdgcQ7+/O8UsWGclGZLpeblTrvGLQTcQrVcKQH/FsgxoMKxY4gI73FgrcUaS5IkJEmC1po4imhf*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"},{width:128,height:159,url:"data:image/png;base64,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*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"},{width:64,height:80,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABQCAYAAACpv3NFAAAAAklEQVR4AewaftIAAAs5SURBVN3BeYyc91nA8e/zm53ZObyHdxMn9npm7bFjO1eTlphUaUwqk1LS0CBQS0BQotDyRyUEIYqaSqFAVApRaWj+SAUpIhJHlQoVglOJq2mBpjZto6aJE9/16913iPeYnZmd853zfRi76/addw/vbuzUM5+PcBkkE4lbUW5SZLegYSACMoQQRXWAHxJA+CEFlPNkDqgiWlSlKiIFVI8iHLZs+zSXmLBOyXjip1XkXlHdA1wLshnYADoKhLg8KkAWIY8yA0wAJ4GvWCn7NOsgrEEykfhtlF8GeQfoFlbBBAIEQyGCoRDBYJBgMESgrw9jBFWl2WhSrTqUCgXcVot1agGTwGsCXzqdsv+JVRJWIZkY/ySqDwB78BOhLxgkFAoRDIUIRyJEIlGisSjRaJRIJEp/fz/BUIhAIACq1BsNqo5DpVKhXC5RLBSYS6eplstcAi4ir6nqM2dS9jNchLCCZCLxcyh/AuzlAhGisRiDQ8PEBjYQi8YIRyLEYlEikSih/n6CwSAiguu6NBpN6rUa1apDpVKhXCpRLpcpl0tUymWccplWs8ll0AL5H9Dfs1L2GyxDWMb2eOJRhE+KMkybGMPo1ZvYsnUrI6MjRCJRwuEwwb4gYoRms0m9VsOpVqmUS5SKJUqlEpVyiUqlQtVxaNTrqOvythKZRvUxK2U/yxKEJSTjiSeA3wdCtMWGBtmxcxeJRILYhg0YY6jX6pQrJeZz8+SyWQrFAk65TNVxqFWrqOtyBSkj/JFl20/iI/gk44lPgzwKGqTtqmuvZfee69kyNkYwGMRtuRSKBabOvok9MUF2bg51XbpABeExy7afwkPwSCYSD6LyBdAIbSObNrHnhhvYujVOIBCgVquTy2aYmZ7ijGXhlEr4XbMB3rkZEhthIAxXxWCgH4IBCAYgHISAgAgM9HNerQm1Juc5DWi40GhCrQnpMuQdyJTg1Wk4mQHXZV0U5kXkNy178qss6GNBMp7YBDwOGqEtHI2SGB9n8+YtiAiFQoHs3BzT09OkJido1uuE++BXb4G9CRgfgdGYMhhWLqd6S5grwUxRODYNLxyB12dYFYFhVD+bjCf+zUrZTdqEBcnE+JdRvZ8FW7dt57pduxgaHqaQz5PNZJiaOsvs1BSJAZffuRPuTCqDEeUnqeXCsWnhuVeEfznKav2VlbI/TluAtmQ8cTsinwFCtIkxbB4bIxwOk8/nmZ2ZwZ6cIJtO88g+5fEPKDduVvqD/MQZgU0DsP86ZW9cODoFWYeViezYODj05Vwhnw/QtnF4+HOovosFxhgGh4ep1WrMTE/zf/Ykg1Lhr38Ffv4Gl1CAK44IjA0r798Dc0XhxBwriYAM5gr5F/o4R/kZPNxWi+mzZ2k1m9Qch23D8JcfUhIjypVuY1T543tgsF/4h1dZlsJ7aQsk4+O/DvoAPo16nVazyUA/PHu/sm1U6RZ9BvYmYGpeODnHkkRkeOPg8CsG9L2s4MkPwvarlG4TDiqP7FfigyxNVUDvMcAOlvHAu+CO7S7d6qoNymPvYwWy2wAjLMEY+MheRYSudsd25c4Ey9CrDTDEEh78Kdg8pHS7gFF+4zaWpCKDhmXcvYuecctWpc+wiCgYRHL49BnYcbXSKwbDyj27WEShYYAcPu9JQCyk9JLrr2ERQdMG5SQ+uzfRc7YMsZjIlAEO42OEnhMQlnLMgP4jQhMPVXpOrcliqv9hrJSdQZnBI1Oh50wX6STkrZT9kqFNkVk8fpCh5+QdOqhKmjZDm6DTeJzK0HOOp+kgwlnaDOeInMGjXIdKXeglx9P4TdNmOEeZxKdQpWdUG0K6jN8kbYbz9N/xqTWFXjHvsJjq92kztFkp+zBCCY9shZ7hNIQOggu8SJvhAiWHR6lGz8hW6KQyZ6XsNG2GBYpk8ChW6RmlKj5aZIFhgaAZPGaK9IxchU4iMywwXCAyi0fBoWfMlOikmmeB4QLlLB6pPD0j7+AjNgsMP6Jv4nE0Tc84NYffPAsMP3YQj1QeWq7QC46l6aDoqyww/NjrCA0WuC7kq3S9akPIOXQQ4TssMCywUrYDksOjXBO63byDj5Qs2z7DAkMHdfAo1uh69abgk8fD0EGyeOQqdL1MhQ4KDh6GTvN4lGt0vVKNDoJm8DB4qVbxmCnS9UpVfKSIh8FDkSk8shW63myZDioU8DB4ic7jkZqn681X6CCqM3gYvJQSHkfTdL10CR8p4mHwEDiBx2QOGi2hmx2ZpZMwh4fBSziBz7xDV7PzdFI9gYfBSzmDT7UhdKtCVag26CQcx8PgYaXsrIqU8Jgr07XKdTqJqGXbJ/Ew+IhqGY/5Cl2rUhM6KHl8DItIHY8fzNG1pgp0UNTBx7CYi8fXT9G1js/SQZAGPoZF1MHj9Rmwc0K3abnCgTf*ckiLj2ExB59DltBtjs+AlaODQAUfw2JlfJ4+BHlH6CbPHxb8FGr4GPyEFj45Bw4cFrrF0WnhuddYRKCMj2GxBkv47DfhyJThSleuC0+8KCxNXHwMPqpSYgmq8IkXwM4KV6p6U/j8N4TvnWUZWsfHsIhaLGMiDx//inBs2nClyTvCE18TnjvMSibx6cNHkP8EfZhlTMzDh/8eHtlnuO9mZSSmLKVSF6YKwpvzcDYPM0WYLsCpDMxWIFsBVX5kOAKjEYgPwY5RGIlBfBiuHYTNg8pITFlKvSm8bAtP/hecyHARchQfYQnbE+NviuoWLsIYuP9meOcYbAhzXqYML9vwryeg6XLJ3DYG+3fC+AiIQMuF02l4/g2YzHNRKlIS1XErZWfxEJaQTIwfQPU+eonIdyx78t349LEU1b9D+ABKH5eICNy7C25LwNgQjMYgEuS8ahMyZZgqwPdS8MJxcF0uMX2eJQjLSCYSB1Hu4C3aFIOH9sG+HcpITFmNeUc4aAlPfwvsPG+diGXZkztYQoBlbBwaKgC/CPSxTh+6CT7/S8qtW5VcxeXliTqT2RZD4QCRkNChoQTSdUyhRbgfrhsT7rsJ6nXh8DTrJ6Kgn8vl899iCQGWkcvnj24cGroZuJF1eN9OePweZSCsvJpqcNdfzPI3h8p86bsVDp6usX93mKGI4RxxXPpfyRBIFwhkKwSmyhANExoKcPs2mC0Ix9Ks1/9aKftBlmFY2cdAjrEOv3U7hIOKKvzhV/PkKi4XfPtMnWcPlbmgz64gjRoXCErfqRy4EAwoH9mrrIvILPAJVmBYgZWyi6C/C6RZo5EY5xWryteOVfH77kSNC8Rp4CfNBlJ3OWc4ytoJFeBTVso+yAoMF2Gl7BdBHkYkyxqki5w3GBE+eHMEv307+rlAo0H8NBhCQ4ZzMiXWSGoof2bZk1/kIgKsQq6QP7xxcPgssA+IsQrpIuzfBcEA3LglxNePOeQqyjk/u7ufT907zEBYOEdjfQQyTaTZ5BwVQ+P6UTQaoN4UnvyGcCrD6ghl4NNWyv5TVkFYg2Q8cbfC0wK7WYX3XweP3q1cM6DMlVyOnG0QDAjvGAuyISx0aCqB+Qa0FHcoiIYNmbLw1H8L/3yEVVGRKVH9AytlP8sqCWuUjCcGEP4WlV8ADXIRsSA8tA/u2qmMDSurMV0QXjotPPUSzFe5OBFFeQn0IStlf581ENYpGU98FJGHUb2BVXp3HN6zHZKjMBCG/gDn1VtQrMJEFr49Cd+cYC1SiDxj2ZOfYR2EtygZTzwO8mHQ63l72cAB4FErZTusk3CJbI8nPirCr4Hciuool4NIAdXXEQ5Ytv3nXALCJZaMJ/oQPobKXaA7EbkW1auBftZCaKCkgVkEC+UQ8EUrZRe5hIS3STI+fgui21A2sbI5BBvlqJWyHS6z/wddt7cBL5xV1AAAAABJRU5ErkJggg=="},{width:32,height:40,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAoCAYAAACfKfiZAAAAAklEQVR4AewaftIAAAUpSURBVL3BTWzbdx3H8ffn5ziJk7hZ0ybZujhtQpeVMcq2QlAF46HiQdUEZeIwCY0bXECco*kBBD4CGECDlwEAIEBIXKEKCw3g4MGBok1a0VWSFsXVJ+2/nv5ukaeLYjh0/xPaXXxx3dUsCkVb39RL/w1hi9LjM3gfaj2zQTP3CYkjdmHUZCE9goKLJykJrQA7sihmB4PkgFT7LNsRNxhOjHwT7MqZJsGE5R7Sri57eXuLxOH27dtHT04PkKBbXyKysMJ9KUa9W2YYB80inzey7F1Phi7QQLcYSiSkZn+/sjvWNjh1gcGiYeDxORzSKWZ1SsUQ+nyebyZDNZMjlshQLBajX2QlDGYkfBmHyJE2iaWxk9OfCPnv3gQPugYeOEIvFmJ+bI/nGG6SXlygWCtSrVW6BGuInQRh+AU9444nE1zGdHNp3V+To+x+mVqsxO/M6F869xol7q7zrbrgzDv0x6O2CzghEI9DhQIJqDdbrsF6DQhlyJVjMw+wi/PYVyJS4gUFV0skgTH5H4yOJBNIZYOjByUn6+uLMvn6Oz4xf5sQ76+ztM96KQln8dUY8+WfIV7hOmsPsHZHd/Xc8idkxJHCOuWCGqY8s88j9dXo6ecs6O+DeYeOjE+LMJVguck3cUNSZcZQNZiwkk0wdL3BktM6tdmBPnalHIRblOvGwE+yj6XPvgcn9ddplbG+dJ45xnTHiwHpoOnEYJNrqw/cYEptErzOpgHdnH+wfMNptoNf40BibjLITLODdPwwRZ9wOYwM0SCw6sBCvXOW2yZdpstAZCvBevcptczFNg6FLTvBvvOU1KK6LdqvXxdkrNAhmHGZ/RKrhrVVEu+UrUKkCknl/c0EqXDAjg5cv03arJdFgrF5MhS87PIkM3mqJtlsts0lk8ByeGSt42RJtt1pik7GC59ggS+Nli7RdtkiDiTSewxNaxksXaLv0Gg0ylvEcG8Qi3tU8bbdUoMEgjefwrM4S3lyWtruaZ5NYxHNskM3hnVui7eayNMi4jOfwBP/CC9JQrop2+ucVNolLeI4Nxism1fDyZdEuaxWRKwGSgZ3Bc3hBKizKWMNLF2ib1ZLYYEYxCMMlPMd1VbzZq7RNcoVr1mlyvMmKeL85C9WaaIdnztFkZZoc14gq3t9DeO68uNVeXXD84mUahMo0OZrMlKfpK3+A6dBxqyTTjid+Rwsr0dTBNSLAuA9vbR0ePwVfOur4wEGId0OmCLOLMLMIwTK8tgTpImDQ3w0Te+Bte+GevTAxDIN9UFqH6RCmnoPVCm8yKaSpgybB04hHMMQGg6degKde4L+M9sMn3w77dgGC+Rw8ex5eusyOCJ6hSbQYSyTOyjjMNsZ3w8mPQeKOGl0dsKdPNJSN2roxne7gW3+CmWW2J10IwuRBmiK0GNjVnwMdB6Js4aePQWekwru/fYVTL63xicMxdht0nVkkOp/jrpEYRyYi/GqarUkVjG+u5LIv0uRoEaTCXyK+b9I6WxiKw+WVGsV1I1ypsZCtoWINWQ0BrlBlsM/YmurAz4JU8ge0iHCTlVz2LwO7+nsMHhJEadHbAR+/L8LBoQ4+/UAPxw51E+mJAFHqvd0U98U49Q/H6SQ3MKki2Y+DMPwiNxHbGE8kHgd9DbNDtJgcgccehIODEO+mIV+CC0vw62k4HXIj6SLG94JU8kdsQfwfYyOj30D2qNAhzKLshFQ1bBbj94KvBqmwyjbEDo0nEu/F9CkTE4LdZtZJK1ERZA3Oy3g6SIXPswP/ATBlKDhOwgtCAAAAAElFTkSuQmCC"},{width:16,height:20,url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAYAAACEYr13AAAAAklEQVR4AewaftIAAAIiSURBVJ3BzUuTARzA8e/v2UuKupn0om6zJh4Ug6yogxJ16B8oPAR561xSeM6oSwT9B506REEE3TpYh6BLgySiQqmp7dFtvm1zPpt7tj2/nsekIgi2Ph9hTzwauwpc9Pn9sVA4vL+zq6sFCKxmMljFYlWgrGhOlO8q8mzBTD3CJbji0diTgcGh8Z5Ir69cKlHZqZDP5dhYW6NsbYMqf1KkJsLTpJmakP5o7P6h3t6pweFjcsJOMNq3yYE2aA1CwMeumgNlGzZL8G4RHryBmoOKyD2/wqVCPi8TnTOM9Vf5l1ALHA7BUDeMRA0mHiN1ZdwQ6L4yZDEar9Ko41GHyTE8EUNh58xREKEpI1E8tgFk+Q91B0/WEMgWyjQtV8aTNRQyuRJN27TwZA0gvWbRtHULT9oQwVzJ07T0FqAsG6oszq/TtKUcICwaoImvOdFKTWhU3RE+rYoKfDAWTNNEqWxYQqMKZaFax06aqTkDl4jab7/RsMQSHhuXH5cixTszGgq3Gpw+AtsVSBfAskEV2vZBdweEW+HjCtx6CQgWLj8/JRyHyI0X7GoLwrUxGO5RggbMpYXJ51C0+UWEWVwGHtXbKmKy5+Y52CoXmU1ZjOyUuNxeZOo8v4lkUO7i8uHKF7eyXR3hzypyUuBgzoKzAwFO9QXwtwf4Ugry8L2Q2QYVmRf0enLZfIVL+Es8GpsWuKAQQTWAR6iCpEFfizKdXDYd9vwAuG7kvk71ZbAAAAAASUVORK5CYII="}];Gf.forEach(e=>{e.img=new Image;const t=Z.Z.createLock(e.img);e.img.onload=t,e.img.src=e.url,e.canvas=document.createElement("canvas"),e.canvas.width=e.width,e.canvas.height=e.height;const i=e.canvas.getContext("2d");e.updateCanvas=()=>{e.img.complete&&(void 0===e.img.naturalWidth||e.img.naturalWidth>0)&&(i.drawImage(e.img,0,0),delete e.updateCanvas)}});const Uf=Gf,zf=rt.voltageStringProperty,Wf=22*Math.PI*2/360;class Qf extends R.NBX{constructor(e,t,i,s){const n=(0,N.ZP)()({tandem:ye.Z.REQUIRED,pickable:!0,isIcon:!1,visibleBoundsProperty:null,showResultsProperty:new se.Z(!0),showPhetioIndex:!1,phetioVisiblePropertyInstrumented:!1},s),r=new R.AeJ(-2,-2,4,4,{fill:ct.showVoltmeterSamplePoints?R.Ilk.BLACK:null,cursor:"pointer",children:[new R.Eep(Ff,{scale:.335,rotation:Wf,x:-9.5,y:-5})]}),o=new R.AeJ(-2,-2,4,4,{fill:ct.showVoltmeterSamplePoints?R.Ilk.RED:null,cursor:"pointer",children:[new R.Eep(Hf,{scale:.335,rotation:-Wf,x:-11,y:4})]}),a=new me.ZP([e.voltageProperty,rt.voltageUnitsStringProperty],e=>null===e?xr.NO_VALUE:bd.createVoltageReadout(e),{tandem:n.tandem.createTandem("probeReadoutText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z}),h=new me.ZP([zf],t=>n.showPhetioIndex?t+" "+e.phetioIndex:t,{tandem:n.tandem.createTandem("probeTitleText").createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME),phetioValueType:ss.Z}),l=new Zu(a,n.showResultsProperty,h,n.tandem,{centerX:Uf[0].width/2,centerY:Uf[0].height/2}),d=new R.Eep(Uf,{scale:.5,cursor:"pointer",children:[l]}),c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return new Uh.Z(new Ys.Z(e,t))},u=c(),p=c(),m=new Ou(u,c(-30,15),p,c(-30,60),{stroke:R.Ilk.BLACK,lineWidth:3,pickable:!1}),g=c(),y=c(),A=new Ou(g,c(30,15),y,c(30,60),{stroke:R.Ilk.RED,lineWidth:3,pickable:!1});Ze.Z.multilink([e.bodyPositionProperty,e.isActiveProperty],(t,i)=>{if(d.center=t,u.value=d.centerBottom.plusXY(-8,-18),g.value=d.centerBottom.plusXY(8,-18),e.isDraggingProbesWithBodyProperty.get()){const i=-30-d.height/2,s=78,r=e=>n.visibleBoundsProperty?n.visibleBoundsProperty.value.eroded(Eh.DRAG_BOUNDS_EROSION).closestPointTo(e):e;e.redProbePositionProperty.set(r(t.plusXY(+s,i))),e.blackProbePositionProperty.set(r(t.plusXY(-s,i)))}});const f=(e,t,i)=>s=>{e.translation=s,t.value=e.centerBottom.plusXY(32*i,-4)};if(e.redProbePositionProperty.link(f(o,y,1)),e.blackProbePositionProperty.link(f(r,p,-1)),super(n),super.addChild(d),super.addChild(m),super.addChild(r),super.addChild(A),super.addChild(o),this.circuitNode=i,this.voltmeter=e,this.redProbeNode=o,this.blackProbeNode=r,n.isIcon)this.dragHandler=null;else{e.isActiveProperty.linkAttribute(this,"visible");const s=(e,t)=>new R._U3({positionProperty:e,start:()=>this.moveToFront(),tandem:t.createTandem("probeDragListener"),dragBoundsProperty:new me.ZP([n.visibleBoundsProperty],e=>e.eroded(Eh.DRAG_BOUNDS_EROSION))}),a=s(e.redProbePositionProperty,n.tandem.createTandem("redProbeDragListener")),h=s(e.blackProbePositionProperty,n.tandem.createTandem("blackProbeDragListener"));this.redProbeNode.addInputListener(a),this.blackProbeNode.addInputListener(h);const l=new me.ZP([n.visibleBoundsProperty],e=>e.eroded(Eh.DRAG_BOUNDS_EROSION));this.dragHandler=new R._U3({positionProperty:e.bodyPositionProperty,tandem:n.tandem.createTandem("dragHandler"),useParentOffset:!0,dragBoundsProperty:l,start:e=>{this.moveToFront()},end:()=>{e.droppedEmitter.emit(d.globalBounds),e.isDraggingProbesWithBodyProperty.set(!1)},targetNode:this}),l.link(t=>{e.redProbePositionProperty.set(t.closestPointTo(e.redProbePositionProperty.value)),e.blackProbePositionProperty.set(t.closestPointTo(e.blackProbePositionProperty.value)),e.bodyPositionProperty.set(t.closestPointTo(e.bodyPositionProperty.value))}),d.addInputListener(this.dragHandler);const c=(e,t,s)=>{const n=Ys.Z.createPolar(20,s*Qf.PROBE_ANGLE+Math.PI/2),r=t.plus(n);for(let o=0;o<10;o++){const e=t.blend(r,o/10),s=i.getVoltageConnection(e);if(ct.showVoltmeterSamplePoints&&this.circuitNode.addChild(new R.AeJ(-1,-1,2,2,{fill:R.Ilk.BLACK,translation:e})),s)return s}return null},u=()=>{if(e.isActiveProperty.get()){const t=c(r,e.blackProbePositionProperty.get(),1),i=c(o,e.redProbePositionProperty.get(),-1),s=this.circuitNode.circuit.getVoltageBetweenConnections(i,t,!1);e.blackConnectionProperty.set(t),e.redConnectionProperty.set(i),e.voltageProperty.value=s}};t.circuit.circuitChangedEmitter.addListener(u),e.redProbePositionProperty.link(u),e.blackProbePositionProperty.link(u)}n.isIcon&&(this.touchArea=this.bounds.copy(),this.mouseArea=this.bounds.copy(),this.cursor="pointer"),this.addLinkedElement(e,{tandem:this.tandem.createTandem("voltmeter")})}startDrag(e){this.dragHandler.press(e)}}_defineProperty(Qf,"PROBE_ANGLE",Wf),it.register("VoltmeterNode",Qf);const Xf=rt.ammetersStringProperty,Kf=rt.ammeterStringProperty,Jf=rt.currentChartStringProperty,jf=rt.voltageChartStringProperty,_f=rt.voltmeterStringProperty;class $f extends Sf{constructor(e,t,i,s,n,r,o,a){const h=t.circuit,l=(0,N.ZP)()({showResultsProperty:t.model.isValueDepictionEnabledProperty,showSeriesAmmeters:!0,showNoncontactAmmeters:!0,showCharts:!1},a),d=e=>R._U3.createForwardingListener(i=>{const s=_.find(e,e=>!e.visible);if(s){const e=s instanceof Qf?s.voltmeter:s instanceof Fu?s.ammeter:s.meter,n=t.globalToLocalPoint(i.pointer.point);e.isDraggingProbesWithBodyProperty.value=!0,e.isActiveProperty.value=!0,e.bodyPositionProperty.value=n,s.startDrag(i)}},{allowTouchSnag:!0}),c=new Ld(ye.Z.OPTIONAL,0),u=new Qf(c,null,null,{tandem:ye.Z.OPT_OUT,isIcon:!0}),p=me.ZP.and(i.map(e=>e.voltmeter.isActiveProperty));p.link(e=>u.setVisible(!e)),u.mutate({scale:53*1.4/Math.max(u.width,u.height)}),u.addInputListener(d(i));const m=new sl(ye.Z.OPTIONAL,0),g=new Fu(m,null,{isIcon:!0,tandem:l.showNoncontactAmmeters?o.createTandem("noncontactAmmeterToolNode"):ye.Z.OPT_OUT,phetioVisiblePropertyInstrumented:!0,visiblePropertyOptions:{phetioFeatured:!0}}),y=me.ZP.and(s.map(e=>e.ammeter.isActiveProperty));y.link(e=>{g.setOpacity(e?0:1),g.setInputEnabled(!e)}),g.mutate({scale:53/Math.max(g.width,g.height)}),g.addInputListener(d(s));const A=new ld(new $h(Ys.Z.ZERO,h.selectionProperty),new $h(new Ys.Z(Eh.SERIES_AMMETER_LENGTH,0),h.selectionProperty),ye.Z.OPTIONAL),f=new Ny(null,null,A,ye.Z.OPT_OUT,l.showResultsProperty,{isIcon:!0});f.mutate({scale:53/f.width});const P=new Lf(new ot.Z(""),new se.Z(!1),new lt(kl.SCHEMATIC),h,e=>t.globalToLocalPoint(e),f,6,()=>h.circuitElements.count(e=>e instanceof ld),e=>{const t=Eh.SERIES_AMMETER_LENGTH/2,i=h.vertexGroup.createNextElement(e.plusXY(-t,0)),s=h.vertexGroup.createNextElement(e.plusXY(t,0));return h.seriesAmmeterGroup.createNextElement(i,s)},{touchAreaExpansionLeft:3,touchAreaExpansionTop:15,touchAreaExpansionRight:3,touchAreaExpansionBottom:0,tandem:h.includeLabElements?o.createTandem("seriesAmmeterToolNode"):ye.Z.OPT_OUT,ghostOpacity:0,visiblePropertyOptions:{phetioFeatured:!0}}),b=new me.ZP([h.circuitElements.lengthProperty],()=>6===h.circuitElements.count(e=>e instanceof ld)),E=new R.xvT(_f,{maxWidth:60,fill:Vh.textFillProperty,tandem:o.createTandem("voltmeterText"),visiblePropertyOptions:{phetioReadOnly:!0}}),v=new R.xvT(l.showSeriesAmmeters&&l.showNoncontactAmmeters?Xf:Kf,{maxWidth:60,fill:Vh.textFillProperty,tandem:o.createTandem("ammeterText"),visiblePropertyOptions:{phetioReadOnly:!0}});Ze.Z.multilink([t.model.showLabelsProperty,y,b,g.visibleProperty,f.visibleProperty,P.visibleProperty],(e,t,i,s,n,r)=>{v.visible=e&&(r&&l.showSeriesAmmeters||s&&l.showNoncontactAmmeters)});const w=new R.SHm({tandem:o.createTandem("voltmeterToolNode"),spacing:3,children:[u,E],excludeInvisibleChildrenFromBounds:!1,visiblePropertyOptions:{phetioFeatured:!0}});Ze.Z.multilink([t.model.showLabelsProperty,p,w.visibleProperty],(e,t,i)=>{E.visible=e&&i});const V=new R.BET({topMargin:10,children:[P]}),S=[];l.showNoncontactAmmeters&&S.push(g),l.showSeriesAmmeters&&S.push(V);const T=new R.SHm({tandem:ye.Z.OPT_OUT,spacing:3,children:[new R.BET({spacing:8,align:"bottom",children:S,excludeInvisibleChildrenFromBounds:!0}),v],excludeInvisibleChildrenFromBounds:!1}),C=[e.createBox(new R.BET({spacing:l.showNoncontactAmmeters&&l.showSeriesAmmeters?20:40,align:"bottom",children:[w,T]}))];if(l.showCharts){const e=new ot.Z(vt.Z.EVERYTHING),i=(e,i,s,n)=>{const r=R.AeJ.bounds(i.bounds,{fill:"blue",opacity:0}),o=new R.NBX({children:[i,r],cursor:"pointer"}),a=new R.SHm({spacing:3,children:[o,s],tandem:n}),h=me.ZP.and(e.map(e=>e.meter.isActiveProperty));return h.link(e=>{i.setVisible(!e),a.inputEnabledProperty.value=!e}),r.addInputListener(d(e)),Ze.Z.multilink([t.model.showLabelsProperty,h],(e,t)=>{s.visible=e&&!t}),a},s=new Zf(t,new Gh.Z(0),e),a=w.width/s.width;s.scale(a);const h=i(n,s,new R.xvT(jf,{maxWidth:60,fill:Vh.textFillProperty,visiblePropertyOptions:{phetioReadOnly:!0}}),o.createTandem("voltageChartToolIcon")),l=i(r,new Vf(t,new Gh.Z(0),e,{scale:a,tandem:ye.Z.OPT_OUT}),new R.xvT(Jf,{maxWidth:60,fill:Vh.textFillProperty,visiblePropertyOptions:{phetioReadOnly:!0}}),o.createTandem("currentChartToolIcon"));h.centerX=w.centerX,l.centerX=T.centerX;const c=new R.NBX({children:[h,l]});C.push(new R.qYj),C.push(c)}super(new R.SHm({spacing:5,children:C}),o,{yMargin:8,visiblePropertyOptions:{phetioFeatured:!0}})}}it.register("SensorToolbox",$f);class eP extends Le.Z{}_defineProperty(eP,"SELECTED",new(T=eP)),_defineProperty(eP,"DESELECTED",new T),_defineProperty(eP,"OVER",new T),_defineProperty(eP,"PRESSED",new T),_defineProperty(eP,"enumeration",new Oe.Z(T)),Je.register("RadioButtonInteractionState",eP);class tP extends me.Fo{constructor(e,t,i){super([e.focusedProperty,e.overProperty,e.looksOverProperty,e.looksPressedProperty,t],(e,t,s,n,r)=>{const o=r===i;return!s||n||o?(t||e)&&n?eP.PRESSED:o?eP.SELECTED:eP.DESELECTED:eP.OVER},{valueType:eP})}}Je.register("RadioButtonInteractionStateProperty",tP);class iP extends di{constructor(e,t,i){const s=(0,N.ZP)()({soundPlayer:null,baseColor:ri.LIGHT_BLUE,buttonAppearanceStrategy:iP.FlatAppearanceStrategy,buttonAppearanceStrategyOptions:{overButtonOpacity:.8,overStroke:null,selectedStroke:R.Ilk.BLACK,selectedLineWidth:1.5,selectedButtonOpacity:1,deselectedStroke:new R.Ilk(50,50,50),deselectedLineWidth:1,deselectedButtonOpacity:.6},contentAppearanceStrategy:iP.ContentAppearanceStrategy,contentAppearanceStrategyOptions:{overContentOpacity:.8,selectedContentOpacity:1,deselectedContentOpacity:.6},tagName:"input",inputType:"radio",labelTagName:"label",containerTagName:"li",appendDescription:!0,appendLabel:!0,tandem:ye.Z.REQUIRED,tandemNameSuffix:"Button",phetioReadOnly:Se.Z.DEFAULT_OPTIONS.phetioReadOnly},i),n=new ii({tandem:s.tandem}),r=new tP(n,e,t);super(n,r,s),this.interactionStateProperty=r,e.value===t&&this.setPDOMAttribute("checked","checked");const o=e=>{this.pdomChecked=e===t};e.link(o),this.property=e,this.value=t,this.firedEmitter=new $t.Z({tandem:s.tandem.createTandem("firedEmitter"),phetioDocumentation:"Emits when the radio button is pressed",phetioReadOnly:s.phetioReadOnly,phetioEventType:ei.Z.USER}),this.firedEmitter.addListener(()=>e.set(t)),n.downProperty.link(e=>{e||!n.overProperty.get()&&!n.focusedProperty.get()||n.interrupted||(this.fire(),this.voicingSpeakFullResponse({hintResponse:null}))});const a=s.soundPlayer||Kt,h=()=>{a.play()};n.produceSoundEmitter.addListener(h),this.disposeRectangularRadioButton=()=>{e.unlink(o),this.firedEmitter.dispose(),n.produceSoundEmitter.removeListener(h),n.dispose(),this.interactionStateProperty.dispose()}}dispose(){this.disposeRectangularRadioButton(),super.dispose()}fire(){this.buttonModel.enabledProperty.get()&&(this.firedEmitter.emit(),this.buttonModel.produceSoundEmitter.emit())}}_defineProperty(iP,"TANDEM_NAME_SUFFIX","RadioButton"),_defineProperty(iP,"FlatAppearanceStrategy",class{constructor(e,t,i,s){const n=(0,N.ZP)()({stroke:i,lineWidth:1,deselectedButtonOpacity:1,deselectedLineWidth:1,deselectedStroke:"gray",overButtonOpacity:.8,overFill:null,overLineWidth:0,overStroke:null,selectedButtonOpacity:1,selectedLineWidth:1,selectedStroke:"black"},s),r=new R.M4p(i,{luminanceFactor:-.4}),o=new R.M4p(n.overFill||i,{luminanceFactor:s&&s.overFill?0:.4}),a=new R.M4p(n.overStroke||n.deselectedStroke,{luminanceFactor:s&&s.overStroke?0:-.4});function h(t){switch(t){case eP.SELECTED:e.fill=i,e.stroke=n.selectedStroke,e.lineWidth=n.selectedLineWidth,e.opacity=n.selectedButtonOpacity;break;case eP.DESELECTED:e.fill=i,e.stroke=n.deselectedStroke,e.lineWidth=n.deselectedLineWidth,e.opacity=n.deselectedButtonOpacity;break;case eP.OVER:e.fill=o,e.stroke=a,e.lineWidth=Math.max(n.overLineWidth,n.deselectedLineWidth),e.opacity=n.overButtonOpacity;break;case eP.PRESSED:e.fill=r,e.stroke=n.deselectedStroke,e.lineWidth=n.deselectedLineWidth,e.opacity=n.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}}this.maxLineWidth=Math.max(n.selectedLineWidth,n.deselectedLineWidth,n.overLineWidth),e.cachedPaints=[i,o,r,a,n.selectedStroke,n.deselectedStroke],t.link(h),this.disposeFlatAppearanceStrategy=()=>{t.hasListener(h)&&t.unlink(h),a.dispose(),o.dispose(),r.dispose()}}dispose(){this.disposeFlatAppearanceStrategy()}}),_defineProperty(iP,"ContentAppearanceStrategy",class{constructor(e,t,i){const s=(0,N.ZP)()({deselectedContentOpacity:1,overContentOpacity:1,selectedContentOpacity:1},i);function n(t){if(null!==e)switch(t){case eP.DESELECTED:e.opacity=s.deselectedContentOpacity;break;case eP.OVER:e.opacity=s.overContentOpacity;break;case eP.SELECTED:e.opacity=s.selectedContentOpacity;break;case eP.PRESSED:e.opacity=s.deselectedContentOpacity;break;default:throw new Error("unsupported state: "+t)}}t.link(n),this.disposeContentAppearanceStrategy=()=>{t.hasListener(n)&&t.unlink(n)}}dispose(){this.disposeContentAppearanceStrategy()}}),Je.register("RectangularRadioButton",iP);let sP=0;class nP extends R.N52{constructor(e,t,i){const s=(0,N.ZP)()({soundPlayers:null,labelAlign:"bottom",labelSpacing:0,a11yHighlightXDilation:0,a11yHighlightYDilation:0,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,radioButtonOptions:{baseColor:ri.LIGHT_BLUE,cornerRadius:4,xMargin:5,yMargin:5,xAlign:"center",yAlign:"center",buttonAppearanceStrategyOptions:{selectedStroke:"black",selectedLineWidth:1.5,selectedButtonOpacity:1,deselectedStroke:new R.Ilk(50,50,50),deselectedLineWidth:1,deselectedButtonOpacity:.6,overButtonOpacity:.8},contentAppearanceStrategy:iP.ContentAppearanceStrategy,contentAppearanceStrategyOptions:{overContentOpacity:.8,selectedContentOpacity:1,deselectedContentOpacity:.6}},spacing:10,orientation:"vertical",disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:ye.Z.REQUIRED,tandemNameSuffix:"ButtonGroup",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"ul",labelTagName:"h3",ariaRole:"radiogroup",groupFocusHighlight:!0},i);sP++;const n=new Map,r=Math.max(s.radioButtonOptions.buttonAppearanceStrategyOptions.selectedLineWidth,s.radioButtonOptions.buttonAppearanceStrategyOptions.deselectedLineWidth),o=_e(t,s.tandem),a=_.maxBy(o,e=>e.width).width,h=_.maxBy(o,e=>e.height).height,l=[],d=[],c=[],u=s.radioButtonOptions.xMargin,p=s.radioButtonOptions.yMargin;for(let A=0;Ae.layoutNode.width).layoutNode.width,g=_.maxBy(d,e=>e.layoutNode.height).layoutNode.height;d.forEach(e=>{e.radioButton.touchArea=Nt.bn.rectangle(-s.touchAreaXDilation-r/2,-s.touchAreaYDilation-r/2,m+2*s.touchAreaXDilation,g+2*s.touchAreaYDilation),e.radioButton.mouseArea=Nt.bn.rectangle(-s.mouseAreaXDilation-r/2,-s.mouseAreaYDilation-r/2,m+2*s.mouseAreaXDilation,g+2*s.mouseAreaYDilation);const t=R.YiU.getDilationCoefficient(e.layoutNode);e.radioButton.focusHighlight=Nt.bn.rectangle(-s.a11yHighlightXDilation-r/2-t,-s.a11yHighlightYDilation-r/2-t,m+2*(s.a11yHighlightXDilation+t),g+2*(s.a11yHighlightYDilation+t))}),super(s),this.radioButtonMap=n,this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:this,otherElementName:R.Grz.LABEL_SIBLING});const y={keydown:e=>e.pointer.reserveForKeyboardDrag()};this.addInputListener(y),this.addLinkedElement(e,{tandem:s.tandem.createTandem("property")}),this.disposeRadioButtonGroup=()=>{this.removeInputListener(y),l.forEach(e=>e.dispose()),c.forEach(e=>e.dispose&&e.dispose()),o.forEach(e=>e.dispose())}}getButtonForValue(e){const t=this.radioButtonMap.get(e);return t}dispose(){this.radioButtonMap.clear(),this.disposeRadioButtonGroup(),super.dispose()}}Je.register("RectangularRadioButtonGroup",nP);const rP=Eh.BATTERY_LENGTH;class oP extends nP{constructor(e,t,i){const s=(0,N.ZP)()({spacing:20,orientation:"horizontal",touchAreaXDilation:9,touchAreaYDilation:10,radioButtonOptions:{baseColor:Vh.panelFillProperty,cornerRadius:Eh.CORNER_RADIUS,xMargin:8,yMargin:11,buttonAppearanceStrategyOptions:{deselectedButtonOpacity:.4,overButtonOpacity:.7,selectedStroke:Vh.panelStrokeProperty,deselectedStroke:Vh.panelStrokeProperty},phetioVisiblePropertyInstrumented:!1},tandem:t},i),n=new $h(new Ys.Z(rP/2,0),new ot.Z(null)),r=new $h(new Ys.Z(-rP/2,0),new ot.Z(null)),o=new yl(r,n,new Gh.Z(0),"normal",ye.Z.OPTIONAL,{initialOrientation:"left",numberOfDecimalPlaces:yl.VOLTAGE_DECIMAL_PLACES}),a=(e,t)=>new Pm(null,null,o,new ot.Z(e),t,{isIcon:!0,scale:.4});super(e,[{value:kl.LIFELIKE,createNode:e=>a(kl.LIFELIKE,ye.Z.OPT_OUT),tandemName:"lifelikeRadioButton"},{value:kl.SCHEMATIC,createNode:e=>a(kl.SCHEMATIC,ye.Z.OPT_OUT),tandemName:"schematicRadioButton"}],s)}}it.register("ViewRadioButtonGroup",oP);class aP extends ff{constructor(e,t){super(e,t=(0,N.JA)({spacing:20,buttonOptions:{buttonAppearanceStrategy:di.ThreeDAppearanceStrategy,baseColor:Pi.BUTTON_YELLOW,phetioReadOnly:!0},magnifyingGlassNodeOptions:{scale:.7},touchAreaXDilation:9,touchAreaYDilation:10},t))}}it.register("CCKCZoomButtonGroup",aP);const hP=rt.batteryResistanceStringProperty,lP=rt.sourceResistanceStringProperty,dP=Eh.VERTICAL_MARGIN,cP=Eh.HORIZONTAL_MARGIN,uP=new R.Lkj({matchVertical:!1});document.addEventListener("keydown",e=>{R.ntP.isKeyEvent(e,R.ntP.KEY_TAB)&&e.preventDefault()});class pP extends Ot{constructor(e,t,i,s){const n=(0,N.ZP)()({showResetAllButton:!0,showSeriesAmmeters:!1,showTimeControls:!1,showAdvancedControls:!0,showCharts:!1,blackBoxStudy:!1,showStopwatchCheckbox:!1,showPhaseShiftControl:!1,hasACandDCVoltageSources:!1,showMeterPhetioIndex:!1},s);super({tandem:i}),this.model=e,this.circuitNodeBackLayer=new R.NBX,this.circuitNode=new GA(e.circuit,this,i.createTandem("circuitNode"));const r=i.createTandem("meterNodes"),o=e.voltmeters.map(t=>{const i=new Qf(t,e,this.circuitNode,{tandem:r.createTandem("voltmeterNode"+t.phetioIndex),showResultsProperty:e.isValueDepictionEnabledProperty,visibleBoundsProperty:this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,showPhetioIndex:n.showMeterPhetioIndex});return t.droppedEmitter.addListener(e=>{bd.getDropItemHitBoxForBounds(e).intersectsBounds(this.sensorToolbox.globalBounds)&&(t.isActiveProperty.value=!1)}),i}),a=e.ammeters.map(t=>{const i=new Fu(t,this.circuitNode,{tandem:e.isShowNoncontactAmmeters?r.createTandem("ammeterNode"+t.phetioIndex):ye.Z.OPT_OUT,showResultsProperty:e.isValueDepictionEnabledProperty,visibleBoundsProperty:this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,blackBoxStudy:n.blackBoxStudy,showPhetioIndex:n.showMeterPhetioIndex});return t.droppedEmitter.addListener(e=>{bd.getDropItemHitBoxForBounds(e).intersectsBounds(this.sensorToolbox.globalBounds)&&(t.isActiveProperty.value=!1)}),i});if(this.chartNodes=[],n.showCharts){const t=t=>{const i=new Zf(this.circuitNode,e.circuit.timeProperty,this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,{tandem:r.createTandem(t)});return i.initializeBodyDragListener(this),i},i=t=>{const i=new Vf(this.circuitNode,e.circuit.timeProperty,this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,{tandem:r.createTandem(t)});return i.initializeBodyDragListener(this),i};this.voltageChartNode1=t("voltageChartNode1"),this.voltageChartNode2=t("voltageChartNode2"),this.currentChartNode1=i("currentChartNode1"),this.currentChartNode2=i("currentChartNode2"),this.chartNodes.push(this.voltageChartNode1,this.voltageChartNode2,this.currentChartNode1,this.currentChartNode2)}else this.voltageChartNode1=null,this.voltageChartNode2=null,this.currentChartNode1=null,this.currentChartNode2=null;this.circuitElementToolbox=new Lp(e.viewTypeProperty,t,i.createTandem("circuitElementToolbox"),n.circuitElementToolboxOptions),this.sensorToolbox=new $f(uP,this.circuitNode,o,a,[this.voltageChartNode1,this.voltageChartNode2],[this.currentChartNode1,this.currentChartNode2],i.createTandem("sensorToolbox"),{showSeriesAmmeters:n.showSeriesAmmeters,showNoncontactAmmeters:e.isShowNoncontactAmmeters,showCharts:n.showCharts,visiblePropertyOptions:{phetioFeatured:!0}}),this.viewRadioButtonGroup=new oP(e.viewTypeProperty,i.createTandem("viewRadioButtonGroup"),{maxWidth:this.circuitElementToolbox.carousel.backgroundWidth}),this.viewRadioButtonGroup.mutate({scale:this.circuitElementToolbox.carousel.backgroundWidth/this.viewRadioButtonGroup.width*n.circuitElementToolboxOptions.carouselScale}),this.displayOptionsPanel=new Df(uP,e.circuit.showCurrentProperty,e.circuit.currentTypeProperty,e.showValuesProperty,e.showLabelsProperty,e.stopwatch,n.showStopwatchCheckbox,i.createTandem("displayOptionsPanel")),this.advancedAccordionBox=n.showAdvancedControls?new xu(e.circuit,uP,n.hasACandDCVoltageSources?lP:hP,i.createTandem("advancedAccordionBox"),{showRealBulbsCheckbox:!n.hasACandDCVoltageSources}):null,this.addChild(this.circuitNodeBackLayer);let h=null;n.showResetAllButton&&(h=new Mc({tandem:i.createTandem("resetAllButton"),listener:()=>{e.reset(),this.reset()}}),this.addChild(h));const l=new R.SHm({align:"right",spacing:5,children:[this.circuitElementToolbox,this.viewRadioButtonGroup]});this.addChild(l);const d=new R.SHm({spacing:dP,children:n.showAdvancedControls?[this.displayOptionsPanel,this.sensorToolbox,this.advancedAccordionBox]:[this.displayOptionsPanel,this.sensorToolbox]}),c=new R.DbO(d,{xAlign:"right",yAlign:"top",xMargin:cP,yMargin:dP});this.visibleBoundsProperty.linkAttribute(c,"alignBounds"),this.addChild(c),this.addChild(this.circuitNode);const u=new Hu(e.circuit.chargeAnimator.timeScaleProperty,e.circuit.showCurrentProperty,e.isValueDepictionEnabledProperty);this.addChild(u);const p=new Gh.Z(0),m=new Pp(e.circuit,this.visibleBoundsProperty,e.modeProperty,p,i.createTandem("circuitElementEditContainerNode"),{showPhaseShiftControl:n.showPhaseShiftControl});this.addChild(m),o.forEach(e=>this.circuitNode.sensorLayer.addChild(e)),a.forEach(e=>this.circuitNode.sensorLayer.addChild(e)),this.chartNodes.forEach(e=>this.circuitNode.sensorLayer.addChild(e));const g=new aP(e.zoomLevelProperty,{tandem:i.createTandem("zoomButtonGroup"),visiblePropertyOptions:{phetioFeatured:!0}});if(g.mutate({scale:this.circuitElementToolbox.carousel.backgroundWidth/g.width*n.circuitElementToolboxOptions.carouselScale}),ct.showDepictValuesToggleButton){const t=new yc(e.isValueDepictionEnabledProperty,{tandem:i.createTandem("playPauseButton"),baseColor:"#33ff44"});this.addChild(t),this.visibleBoundsProperty.link(e=>{t.mutate({left:e.left+dP,bottom:e.bottom-dP-g.height-dP})})}let y=null;if(n.showTimeControls&&(y=new _c(e.isPlayingProperty,{tandem:i.createTandem("timeControlNode"),playPauseStepButtonOptions:{stepForwardButtonOptions:{listener:()=>e.stepSingleStep()}}}),this.addChild(y)),this.addChild(g),Ze.Z.multilink([this.visibleBoundsProperty,l.localBoundsProperty],e=>{l.left=e.left+cP,l.top=e.top+dP,n.showResetAllButton&&h&&h.mutate({right:e.right-cP,bottom:e.bottom-dP}),y&&y.mutate({left:d.left,bottom:e.bottom-dP}),Number.isFinite(l.right)?g.right=l.right:g.left=e.left+cP,g.bottom=e.bottom-dP;const t=this.circuitElementToolbox.bounds.isEmpty()?e.left:this.circuitElementToolbox.right,i=d.bounds.isEmpty()?e.right:d.left;p.value=(t+i)/2,u.mutate({centerX:p.value,bottom:e.bottom-100})}),this.circuitNode.setTranslation(this.layoutBounds.centerX,this.layoutBounds.centerY),this.circuitNodeBackLayer.setTranslation(this.layoutBounds.centerX,this.layoutBounds.centerY),Ze.Z.multilink([e.animatedZoomScaleProperty,this.visibleBoundsProperty],(e,t)=>{this.circuitNode.setScaleMagnitude(e),this.circuitNodeBackLayer.setScaleMagnitude(e),this.circuitNode.updateTransform(t)}),this.model.circuit.vertexDroppedEmitter.addListener(e=>{const t=this.model.circuit.getNeighborCircuitElements(e);if(1===t.length){const e=t[0],i=this.circuitNode.getCircuitElementNode(e);this.canNodeDropInToolbox(i)&&this.model.circuit.disposeCircuitElement(e)}}),ye.Z.PHET_IO_ENABLED&&phet.phetio.phetioEngine.phetioStateEngine.stateSetEmitter.addListener(()=>{this.step(1/60)}),this.stopwatchNodePositionDirty=!0,n.showStopwatchCheckbox){const t=new Nc(e.stopwatch,{dragBoundsProperty:this.visibleBoundsProperty,right:d.left-cP,numberDisplayOptions:{numberFormatter:Nc.createRichTextNumberFormatter({numberOfDecimalPlaces:1})},tandem:i.createTandem("stopwatchNode")});this.addChild(t),e.stopwatch.isVisibleProperty.link(i=>{i&&this.stopwatchNodePositionDirty&&(e.stopwatch.positionProperty.value=new Ys.Z(d.left-t.width-10,this.globalToLocalBounds(this.displayOptionsPanel.stopwatchCheckbox.globalBounds).centerY-.2*t.height),this.stopwatchNodePositionDirty=!1)})}e.stepEmitter.addListener(e=>this.stepOnce(e)),this.addChild(new R.NBX({inputListeners:[new R.F3H({keys:["delete","backspace"],global:!0,callback:(e,t)=>{var i;null==e||null===(i=e.domEvent)||void 0===i||i.preventDefault();const s=this.circuitNode.circuit.selectionProperty.value;if(this.circuitNode.vertexCutButton.inputEnabled&&s instanceof $h)this.circuitNode.circuit.cutVertex(this.circuitNode.circuit.getSelectedVertex());else if(s instanceof il){const e=s;e.startVertexProperty.value.isDragged||e.endVertexProperty.value.isDragged||e.isDisposableProperty.value&&this.circuitNode.circuit.disposeCircuitElement(e)}}})]}))}stepOnce(e){e>=Eh.MAX_DT||this.chartNodes.forEach(t=>t.step(this.model.circuit.timeProperty.value,e))}step(e){this.circuitNode.step(),this.model.isPlayingProperty.value||this.chartNodes.forEach(e=>e.sampleLatestValue())}reset(){this.stopwatchNodePositionDirty=!0,this.circuitElementToolbox.reset(),this.advancedAccordionBox&&this.advancedAccordionBox.expandedProperty.reset(),this.chartNodes.forEach(e=>e.reset())}canNodeDropInToolbox(e){const t=e.circuitElement,i=this.model.circuit.isSingle(t),s=e instanceof tm?e.contentNode:e,n=this.globalToLocalBounds(s.globalBounds),r=bd.getDropItemHitBoxForBounds(n),o=t instanceof ld?this.sensorToolbox:this.circuitElementToolbox.carousel,a=o.localToGlobalBounds(o.localBounds),h=this.globalToLocalBounds(a).intersectsBounds(r);return i&&h&&t.isDisposableProperty.value}}it.register("CCKCScreenView",pP);const mP=rt.acSourceStringProperty,gP=rt.capacitorStringProperty,yP=rt.inductorStringProperty,AP=rt.batteryStringProperty,fP=rt.coinStringProperty,PP=rt.dogStringProperty,bP=rt.dollarBillStringProperty,EP=rt.eraserStringProperty,vP=rt.fuseStringProperty,wP=rt.handStringProperty,VP=rt.lightBulbStringProperty,SP=rt.paperClipStringProperty,TP=rt.pencilStringProperty,CP=rt.resistorStringProperty,IP=rt.switchStringProperty,xP=rt.wireStringProperty,kP=Eh.BATTERY_LENGTH,BP=Eh.AC_VOLTAGE_LENGTH,MP=Eh.FUSE_LENGTH,DP=Eh.WIRE_LENGTH,OP=Eh.SWITCH_LENGTH,LP=new R.Lkj,RP=new lt(kl.LIFELIKE),NP=new lt(kl.SCHEMATIC);class ZP{constructor(e,t,i,s,n){this.circuit=e,this.showLabelsProperty=t,this.viewTypeProperty=i,this.globalToCircuitNodePoint=s,this.parentTandem=n,this.wireToolNode=null}createCircuitElementToolNode(e,t,i,s,n,r){const o=(0,N.ZP)()({additionalProperty:new se.Z(!0),lifelikeIconHeight:Eh.TOOLBOX_ICON_HEIGHT,schematicIconHeight:Eh.TOOLBOX_ICON_HEIGHT},r),a=(e,t)=>{const i=new R.NBX({children:[e]});return i.mutate({scale:t/i.height}),i},h=new zr(this.viewTypeProperty,[{value:kl.LIFELIKE,createNode:()=>a(i(ye.Z.OPT_OUT,RP),o.lifelikeIconHeight)},{value:kl.SCHEMATIC,createNode:()=>a(i(ye.Z.OPT_OUT,NP),o.schematicIconHeight)}]);return new Lf(e,this.showLabelsProperty,this.viewTypeProperty,this.circuit,this.globalToCircuitNodePoint,LP.createBox(h,{yAlign:"bottom"}),t,this.createCounter(s),n,{tandem:o.tandem,additionalProperty:o.additionalProperty})}createCounter(e){return()=>this.circuit.circuitElements.filter(t=>e(t)&&!t.insideTrueBlackBoxProperty.get()).length}createWireToolNode(e){return this.createCircuitElementToolNode(xP,Eh.NUMBER_OF_WIRES,(e,t)=>t.value===kl.LIFELIKE?new R.Eep(ng,{tandem:e}):new R.x12(0,0,120,0,{stroke:R.Ilk.BLACK,lineWidth:4.5,tandem:e}),e=>e instanceof md,e=>this.circuit.wireGroup.createNextElement(...this.circuit.createVertexPairArray(e,DP)),{tandem:e,lifelikeIconHeight:9,schematicIconHeight:2})}createRightBatteryToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new yl(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(Eh.BATTERY_LENGTH,0),this.circuit.selectionProperty),new Gh.Z(0),"normal",ye.Z.OPTIONAL);return this.createCircuitElementToolNode(AP,t,(e,t)=>new Pm(null,null,i,t,e.createTandem("batteryIcon"),{isIcon:!0}),e=>e instanceof yl&&"right"===e.initialOrientation&&"normal"===e.batteryType,e=>this.circuit.batteryGroup.createNextElement(...this.circuit.createVertexPairArray(e,kP)),{tandem:e,lifelikeIconHeight:15})}createACVoltageToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new ml(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(BP,0),this.circuit.selectionProperty),new Gh.Z(0),ye.Z.OPTIONAL);return this.createCircuitElementToolNode(mP,t,(e,t)=>new hm(null,null,i,t,e.createTandem("acSourceIcon"),{isIcon:!0,scale:.68}),e=>e instanceof ml,e=>this.circuit.acVoltageGroup.createNextElement(...this.circuit.createVertexPairArray(e,BP)),{tandem:e,lifelikeIconHeight:27,schematicIconHeight:27})}createLightBulbToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.circuit.lightBulbGroup,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:VP,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;const r=Dl.createVertexPair(Ys.Z.ZERO,this.circuit,!0),o=Dl.createAtPosition(r.startVertex,r.endVertex,this.circuit,Eh.DEFAULT_RESISTANCE,this.viewTypeProperty,ye.Z.OPTIONAL,{isExtreme:!1,isReal:s});return this.createCircuitElementToolNode(i,10,(e,t)=>new Og(null,null,o,new se.Z(!0),t,ye.Z.OPT_OUT,{isIcon:!0,scale:.85}),e=>e instanceof Dl&&!e.isExtreme,e=>{const i=Dl.createVertexPair(e,this.circuit);return t.createNextElement(i.startVertex,i.endVertex)},{tandem:e,additionalProperty:n||new se.Z(!0),schematicIconHeight:27})}createResistorToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.circuit.resistorGroup,i=arguments.length>2?arguments[2]:void 0;const s=(0,N.ZP)()({count:10,resistorType:ad.RESISTOR,lifelikeIconHeight:15,schematicIconHeight:14,labelStringProperty:CP,tandemName:"resistorToolNode"},i),n=s.labelStringProperty,r=s.resistorType,o=new hd(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(r.length,0),this.circuit.selectionProperty),r,ye.Z.OPTIONAL);return this.createCircuitElementToolNode(n,s.count,(e,t)=>new By(null,null,o,t,e.createTandem("resistorIcon"),{isIcon:!0}),e=>e instanceof hd&&e.resistorType===r,e=>{const i=this.circuit.createVertexPairArray(e,r.length);return t.createNextElement(i[0],i[1],r)},{tandem:e,lifelikeIconHeight:s.lifelikeIconHeight,schematicIconHeight:s.schematicIconHeight})}createFuseToolNode(e){const t=new Cl(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(Eh.RESISTOR_LENGTH,0),this.circuit.selectionProperty),ye.Z.OPTIONAL);return this.createCircuitElementToolNode(vP,10,(e,i)=>new zg(null,null,t,i,e.createTandem("fuseIcon"),{isIcon:!0}),e=>e instanceof Cl,e=>this.circuit.fuseGroup.createNextElement(...this.circuit.createVertexPairArray(e,MP)),{tandem:e,lifelikeIconHeight:15,schematicIconHeight:14})}createCapacitorToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new fl(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(Eh.CAPACITOR_LENGTH,0),this.circuit.selectionProperty),ye.Z.OPTIONAL);return this.createCircuitElementToolNode(gP,t,(e,t)=>new hg(null,null,i,t,e.createTandem("capacitorIcon"),{isIcon:!0}),e=>e instanceof fl,e=>this.circuit.capacitorGroup.createNextElement(...this.circuit.createVertexPairArray(e,Eh.CAPACITOR_LENGTH)),{tandem:e})}createInductorToolNode(e){const t=new xl(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(Eh.INDUCTOR_LENGTH,0),this.circuit.selectionProperty),ye.Z.OPTIONAL),i=ct.moreInductors?10:1;return this.createCircuitElementToolNode(yP,i,(e,i)=>new _g(null,null,t,i,e.createTandem("inductorIcon"),{isIcon:!0,scale:.75}),e=>e instanceof xl,e=>this.circuit.inductorGroup.createNextElement(...this.circuit.createVertexPairArray(e,Eh.INDUCTOR_LENGTH)),{tandem:e,lifelikeIconHeight:22,schematicIconHeight:6})}createSwitchToolNode(e){return this.createCircuitElementToolNode(IP,5,(e,t)=>new jy(null,null,new pd(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(OP,0),this.circuit.selectionProperty),ye.Z.OPTIONAL,null),t,e.createTandem("switchIcon"),{isIcon:!0}),e=>e instanceof pd,e=>this.circuit.switchGroup.createNextElement(...this.circuit.createVertexPairArray(e,OP)),{tandem:e,lifelikeIconHeight:22,schematicIconHeight:16})}createPaperClipToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.PAPER_CLIP,tandemName:"paperClipToolNode",labelStringProperty:SP})}createCoinToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.COIN,tandemName:"coinToolNode",labelStringProperty:fP,lifelikeIconHeight:30})}createDollarBillToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.DOLLAR_BILL,tandemName:"dollarBillToolNode",labelStringProperty:bP,lifelikeIconHeight:22})}createEraserToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.ERASER,tandemName:"eraserToolNode",labelStringProperty:EP,lifelikeIconHeight:17})}createPencilToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.PENCIL,tandemName:"pencilToolNode",labelStringProperty:TP,lifelikeIconHeight:12})}createHandToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.HAND,tandemName:"handToolNode",labelStringProperty:wP,lifelikeIconHeight:30})}createDogToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:ad.DOG,tandemName:"dogToolNode",labelStringProperty:PP,lifelikeIconHeight:30})}createExtremeResistorToolNode(e){return this.createResistorToolNode(e,this.circuit.extremeResistorGroup,{count:4,resistorType:ad.EXTREME_RESISTOR,tandemName:"extremeResistorToolNode",labelStringProperty:CP})}createExtremeBatteryToolNode(e){return this.createCircuitElementToolNode(AP,4,(e,t)=>new Pm(null,null,new yl(new $h(Ys.Z.ZERO,this.circuit.selectionProperty),new $h(new Ys.Z(Eh.BATTERY_LENGTH,0),this.circuit.selectionProperty),new Gh.Z(0),"high-voltage",ye.Z.OPTIONAL,{voltage:1e3,numberOfDecimalPlaces:yl.HIGH_VOLTAGE_DECIMAL_PLACES}),t,e.createTandem("extremeBatteryToolNode"),{isIcon:!0}),e=>e instanceof yl&&"right"===e.initialOrientation&&"high-voltage"===e.batteryType,e=>this.circuit.extremeBatteryGroup.createNextElement(...this.circuit.createVertexPairArray(e,OP)),{tandem:e,lifelikeIconHeight:15})}createExtremeBulbToolNode(e){const t=Dl.createVertexPair(Ys.Z.ZERO,this.circuit,!0);return this.createCircuitElementToolNode(VP,4,(e,i)=>new Og(null,null,Dl.createAtPosition(t.startVertex,t.endVertex,this.circuit,1e3,this.viewTypeProperty,ye.Z.OPTIONAL,{isExtreme:!0}),new se.Z(!0),i,e.createTandem("extremeLightBulbToolNode"),{isIcon:!0}),e=>e instanceof Dl&&e.isExtreme,e=>{const t=Dl.createVertexPair(e,this.circuit,!1);return this.circuit.extremeLightBulbGroup.createNextElement(t.startVertex,t.endVertex)},{tandem:e})}}it.register("CircuitElementToolFactory",ZP);class qP extends pP{constructor(e,t,i){const s=new ZP(e.circuit,e.showLabelsProperty,e.viewTypeProperty,e=>this.circuitNode.globalToLocalPoint(e),t.createTandem("circuitElementToolbox").createTandem("carousel").createTandem("circuitElementTools")),n={createNode:t=>s.createLightBulbToolNode(t,e.circuit.realLightBulbGroup,rt.realBulbStringProperty,!0,e.addRealBulbsProperty),tandemName:"realBulbToolNode",alignBoxOptions:{visibleProperty:e.addRealBulbsProperty}},r=[{createNode:e=>s.createWireToolNode(e),tandemName:"wireToolNode1"},{createNode:e=>s.createRightBatteryToolNode(e),tandemName:"batteryToolNode"},{createNode:t=>s.createLightBulbToolNode(t,e.circuit.lightBulbGroup),tandemName:"lightBulbToolNode"},{createNode:e=>s.createResistorToolNode(e),tandemName:"resistorToolNode"},{createNode:e=>s.createSwitchToolNode(e),tandemName:"switchToolNode"},{createNode:e=>s.createWireToolNode(e),tandemName:"wireToolNode2"},{createNode:e=>s.createFuseToolNode(e),tandemName:"fuseToolNode"},{createNode:e=>s.createExtremeBatteryToolNode(e),tandemName:"extremeBatteryToolNode"},{createNode:e=>s.createExtremeBulbToolNode(e),tandemName:"extremeBulbToolNode"},{createNode:e=>s.createExtremeResistorToolNode(e),tandemName:"extremeResistorToolNode"},{createNode:e=>s.createWireToolNode(e),tandemName:"wireToolNode3"},{createNode:e=>s.createDollarBillToolNode(e),tandemName:"dollarBillToolNode"},{createNode:e=>s.createPaperClipToolNode(e),tandemName:"paperClipToolNode"},{createNode:e=>s.createCoinToolNode(e),tandemName:"coinToolNode"},{createNode:e=>s.createEraserToolNode(e),tandemName:"eraserToolNode"},{createNode:e=>s.createWireToolNode(e),tandemName:"wireToolNode4"},{createNode:e=>s.createPencilToolNode(e),tandemName:"pencilToolNode"},n];super(e,r,t,(0,us.Z)({showSeriesAmmeters:!0},i)),e.addRealBulbsProperty.link(e=>{this.circuitElementToolbox.carousel.setItemVisible(n,e),e&&this.circuitElementToolbox.carousel.scrollToItem(n)})}}Fh.register("LabScreenView",qP);const FP=qP,YP=Hh.screen.labStringProperty;class HP extends Rh{constructor(e,t){super(()=>new Hd(e.createTandem("model"),t),t=>new FP(t,e.createTandem("view"),{circuitElementToolboxOptions:{carouselScale:Eh.DC_CAROUSEL_SCALE}}),{name:YP,backgroundColorProperty:Vh.screenBackgroundColorProperty,homeScreenIcon:new Th(new R.Eep(qh),{fill:Vh.screenBackgroundColorProperty,maxIconWidthProportion:1,maxIconHeightProportion:1}),tandem:e,maxDT:Eh.MAX_DT})}}Fh.register("LabScreen",HP);const GP=HP;var UP=i(6103);let zP=null;class WP{constructor(){_defineProperty(this,"enabled",!0),_defineProperty(this,"registedProperties",[]);try{window.localStorage.setItem("test","test")}catch(e){if(this.enabled=!1,e instanceof Error){if(!(window.navigator.userAgent.includes("Safari")&&!window.navigator.userAgent.includes("Chrome"))||!e.message.includes("QuotaExceededError"))throw e;console.log("It looks like you are browsing with private mode in Safari. Please turn that setting off if you want to use PreferencesStorage")}}}registerToLocalStorage(e,t){const i="PREFERENCES:"+t;window.localStorage.getItem(i)&&(e.value=JSON.parse(window.localStorage.getItem(i))),e.link(e=>{window.localStorage.setItem(i,JSON.stringify(e))}),this.registedProperties.push(e)}static register(e,t){return phet.chipper.queryParameters.preferencesStorage?(zP||(zP=new WP),zP.enabled&&zP.registerToLocalStorage(e,t),e):e}}Bt.Z.register("PreferencesStorage",WP);const QP=WP;class XP extends Se.Z{constructor(e){super({tandem:e,phetioState:!1,phetioDocumentation:"Controls the simulation's audio features. This includes sound and voicing. For sims that do not support these features, this element and its children can be ignored."}),this.audioEnabledProperty=new se.Z("enabled"===phet.chipper.queryParameters.audio,{tandem:e.createTandem("audioEnabledProperty"),phetioFeatured:!0,phetioDocumentation:"determines whether audio features are enabled for this simulation"}),this.audioAndSoundEnabledProperty=me.ZP.and([this.audioEnabledProperty,Ge.enabledProperty]),this.audioAndVoicingEnabledProperty=me.ZP.and([this.audioEnabledProperty,R.LY3.enabledProperty]),this.anySubcomponentEnabledProperty=new me.ZP([Ge.enabledProperty,R.LY3.enabledProperty],(e,t)=>e||t),this.anyOutputEnabledProperty=new me.ZP([this.audioEnabledProperty,this.anySubcomponentEnabledProperty],(e,t)=>e&&t)}initialize(e){if(e.preferencesModel.audioModel.supportsSound&&Ge.initialize(e.isConstructionCompleteProperty,this.audioEnabledProperty,e.browserTabVisibleProperty,e.activeProperty,e.isSettingPhetioStateProperty),e.preferencesModel.audioModel.supportsVoicing&&R.LY3.initialize(R.sSl.userGestureEmitter,{speechAllowedProperty:new me.ZP([e.isConstructionCompleteProperty,e.browserTabVisibleProperty,e.activeProperty,e.isSettingPhetioStateProperty,this.audioEnabledProperty],(e,t,i,s,n)=>e&&t&&i&&!s&&n)}),e.preferencesModel.audioModel.supportsSound&&e.preferencesModel.audioModel.supportsVoicing){const e=new se.Z(!1);R.LY3.startSpeakingEmitter.addListener(()=>e.set(!0)),R.LY3.endSpeakingEmitter.addListener(()=>e.set(!1)),Ge.addDuckingProperty(e)}}}const KP=new XP(ye.Z.GENERAL_VIEW.createTandem("audioManager"));Bt.Z.register("audioManager",KP);const JP=KP;const jP=new class{constructor(){this.regionAndCultureProperty=new ot.Z(null)}};Bt.Z.register("regionAndCultureManager",jP);const _P=jP;var $P=i(621);class eb extends Se.Z{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=phet.chipper.queryParameters,i={...(0,N.ZP)()({tandem:ye.Z.GENERAL_MODEL.createTandem("preferencesModel"),phetioType:eb.PreferencesModelIO,phetioFeatured:!0,phetioState:!1,phetioReadOnly:!0},e),simulationOptions:(0,N.ZP)()({tandemName:"simulationModel",customPreferences:[]},e.simulationOptions),visualOptions:(0,N.ZP)()({tandemName:"visualModel",supportsProjectorMode:!1,supportsInteractiveHighlights:t.supportsInteractiveHighlights,customPreferences:[]},e.visualOptions),audioOptions:(0,N.ZP)()({tandemName:"audioModel",supportsVoicing:t.supportsVoicing,supportsSound:t.supportsSound,supportsExtraSound:t.supportsExtraSound,customPreferences:[]},e.audioOptions),inputOptions:(0,N.ZP)()({tandemName:"inputModel",supportsGestureControl:t.supportsGestureControl,customPreferences:[]},e.inputOptions),localizationOptions:(0,N.ZP)()({tandemName:"localizationModel",supportsDynamicLocales:!!Po.Z.validValues&&Po.Z.validValues.length>1&&phet.chipper.allowLocaleSwitching,characterSets:[],customPreferences:[],includeLocalePanel:!0},e.localizationOptions)};super(i),this.simulationModel=i.simulationOptions;const s=i.tandem.createTandem("visualModel");this.visualModel=(0,us.Z)({interactiveHighlightsEnabledProperty:new se.Z(phet.chipper.queryParameters.interactiveHighlightsInitiallyEnabled,{tandem:s.createTandem("interactiveHighlightsEnabledProperty"),phetioState:!1}),colorProfileProperty:R.CEW},i.visualOptions);const n=i.audioOptions.supportsVoicing&&$P.Z.isSpeechSynthesisSupported()&&(phet.chipper.locale.startsWith("en")||phet.chipper.allowLocaleSwitching&&_.some(Po.Z.validValues,e=>e.startsWith("en"))),r="disabled"!==phet.chipper.queryParameters.audio;this.audioModel={supportsVoicing:n&&r,supportsSound:i.audioOptions.supportsSound&&r,supportsExtraSound:i.audioOptions.supportsExtraSound&&r,audioEnabledProperty:JP.audioEnabledProperty,soundEnabledProperty:Ge.enabledProperty,extraSoundEnabledProperty:Ge.extraSoundEnabledProperty,voicingEnabledProperty:R.LY3.enabledProperty,voicingMainWindowVoicingEnabledProperty:R.LY3.mainWindowVoicingEnabledProperty,voicingObjectResponsesEnabledProperty:UP.Z.objectResponsesEnabledProperty,voicingContextResponsesEnabledProperty:UP.Z.contextResponsesEnabledProperty,voicingHintResponsesEnabledProperty:UP.Z.hintResponsesEnabledProperty,voicePitchProperty:R.LY3.voicePitchProperty,voiceRateProperty:R.LY3.voiceRateProperty,voiceProperty:R.LY3.voiceProperty,toolbarEnabledProperty:new se.Z(!0,{tandem:i.tandem.createTandem("audioModel").createTandem("toolbarEnabledProperty"),phetioState:!1}),customPreferences:i.audioOptions.customPreferences,tandemName:i.audioOptions.tandemName};const o=i.tandem.createTandem("inputModel");if(this.inputModel=(0,us.Z)({gestureControlsEnabledProperty:new se.Z(!1,{tandem:o.createTandem("gestureControlsEnabledProperty"),phetioState:!1})},i.inputOptions),this.localizationModel=(0,us.Z)({localeProperty:Po.Z,regionAndCultureProperty:_P.regionAndCultureProperty},i.localizationOptions),i.localizationOptions.characterSets.length>0&&(_P.regionAndCultureProperty.value=i.localizationOptions.characterSets[0],this.localizationModel.regionAndCultureProperty=_P.regionAndCultureProperty),this.audioModel.supportsExtraSound,this.addPhetioLinkedElementsForModel(i.tandem,this.simulationModel),this.addPhetioLinkedElementsForModel(i.tandem,this.visualModel,[{property:this.visualModel.colorProfileProperty}]),this.addPhetioLinkedElementsForModel(i.tandem,this.audioModel,[{property:this.audioModel.audioEnabledProperty,tandemName:"audioEnabledProperty"},{property:this.audioModel.soundEnabledProperty,tandemName:"soundEnabledProperty"},{property:this.audioModel.extraSoundEnabledProperty,tandemName:"extraSoundEnabledProperty"},{property:this.audioModel.voicingEnabledProperty,tandemName:"voicingEnabledProperty"},{property:this.audioModel.voicingMainWindowVoicingEnabledProperty,tandemName:"voicingMainWindowVoicingEnabledProperty"},{property:this.audioModel.voicingObjectResponsesEnabledProperty,tandemName:"voicingObjectResponsesEnabledProperty"},{property:this.audioModel.voicingContextResponsesEnabledProperty,tandemName:"voicingContextResponsesEnabledProperty"},{property:this.audioModel.voicingHintResponsesEnabledProperty,tandemName:"voicingHintResponsesEnabledProperty"},{property:this.audioModel.voicePitchProperty,tandemName:"voicePitchProperty"},{property:this.audioModel.voiceRateProperty,tandemName:"voiceRateProperty"},{property:this.audioModel.voiceProperty,tandemName:"voiceProperty"}]),this.addPhetioLinkedElementsForModel(i.tandem,this.inputModel),this.addPhetioLinkedElementsForModel(i.tandem,this.localizationModel,[{property:this.localizationModel.localeProperty,tandemName:"localeProperty"}]),n){R.LY3.enabledProperty.value=phet.chipper.queryParameters.voicingInitiallyEnabled;let e=!1;Po.Z.link(t=>{const i=t.startsWith("en");R.LY3.enabledProperty.value?(R.LY3.enabledProperty.value=i,e=!0):e&&i&&(R.LY3.enabledProperty.value=!0,e=!1)}),R.LY3.enabledProperty.link(e=>{R.KsW.enabled=e,!e&&R.KsW.clear()}),phet.chipper.queryParameters.voicingInitiallyEnabled&&(UP.Z.objectResponsesEnabledProperty.value=!0,UP.Z.contextResponsesEnabledProperty.value=!0,UP.Z.hintResponsesEnabledProperty.value=!0,R.LY3.voicesProperty.link(e=>{e.length>0&&(R.LY3.voiceProperty.value=R.LY3.getEnglishPrioritizedVoices()[0])}))}phet.chipper.queryParameters.printVoicingResponses&&R.LY3.startSpeakingEmitter.addListener(e=>console.log(e)),this.registerPreferencesStorage()}registerPreferencesStorage(){this.visualModel.supportsInteractiveHighlights&&QP.register(this.visualModel.interactiveHighlightsEnabledProperty,"interactiveHighlightsEnabledProperty"),this.audioModel.supportsVoicing&&(QP.register(this.audioModel.voicingObjectResponsesEnabledProperty,"objectResponsesEnabledProperty"),QP.register(this.audioModel.voicingContextResponsesEnabledProperty,"contextResponsesEnabledProperty"),QP.register(this.audioModel.voicingHintResponsesEnabledProperty,"hintResponsesEnabledProperty"),QP.register(this.audioModel.voiceRateProperty,"voiceRateProperty"),QP.register(this.audioModel.voicePitchProperty,"voicePitchProperty")),this.audioModel.supportsExtraSound&&QP.register(this.audioModel.extraSoundEnabledProperty,"extraSoundEnabledProperty"),this.inputModel.supportsGestureControl&&QP.register(this.inputModel.gestureControlsEnabledProperty,"gestureControlsEnabledProperty")}addPhetioLinkedElementsForModel(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const s=e.createTandem(t.tandemName),n=i;for(let r=0;r0}supportsSimulationPreferences(){return this.preferenceModelHasCustom(this.simulationModel)}supportsVisualPreferences(){return this.visualModel.supportsInteractiveHighlights||this.visualModel.supportsProjectorMode||this.preferenceModelHasCustom(this.visualModel)}supportsAudioPreferences(){return this.audioModel.supportsSound||this.audioModel.supportsExtraSound||this.audioModel.supportsVoicing||this.preferenceModelHasCustom(this.audioModel)}supportsInputPreferences(){return this.inputModel.supportsGestureControl||this.preferenceModelHasCustom(this.inputModel)}supportsLocalizationPreferences(){return this.localizationModel.supportsDynamicLocales||this.localizationModel.characterSets.length>0||this.preferenceModelHasCustom(this.localizationModel)}shouldShowDialog(){return this.supportsSimulationPreferences()||this.supportsVisualPreferences()||this.supportsInputPreferences()||this.supportsLocalizationPreferences()||this.supportsAudioPreferences()}}C=eb,_defineProperty(eb,"PreferencesModelIO",new Hi.Z("PreferencesModelIO",{valueType:C,toStateObject:e=>({supportsProjectorMode:e.visualModel.supportsProjectorMode,supportsInteractiveHighlights:e.visualModel.supportsInteractiveHighlights,supportsVoicing:e.audioModel.supportsVoicing,supportsSound:e.audioModel.supportsSound,supportsExtraSound:e.audioModel.supportsExtraSound,supportsGestureControl:e.inputModel.supportsGestureControl,supportsDynamicLocales:e.localizationModel.supportsDynamicLocales,supportsAudioPreferences:e.supportsAudioPreferences(),supportsInputPreferences:e.supportsInputPreferences(),supportsLocalizationPreferences:e.supportsLocalizationPreferences(),supportsSimulationPreferences:e.supportsSimulationPreferences(),supportsVisualPreferences:e.supportsVisualPreferences()}),stateSchema:{supportsProjectorMode:Kc.Z,supportsInteractiveHighlights:Kc.Z,supportsVoicing:Kc.Z,supportsSound:Kc.Z,supportsExtraSound:Kc.Z,supportsGestureControl:Kc.Z,supportsDynamicLocales:Kc.Z,supportsAudioPreferences:Kc.Z,supportsInputPreferences:Kc.Z,supportsLocalizationPreferences:Kc.Z,supportsSimulationPreferences:Kc.Z,supportsVisualPreferences:Kc.Z}})),Bt.Z.register("PreferencesModel",eb);var tb=i(732),ib=(i(7023),i(2823));class sb extends R.JOQ{constructor(e,t){const i=(0,N.ZP)()({fill:"rgba( 0, 0, 0, 0.3 )",pickable:!0,phetioReadOnly:!0,phetioEventType:ei.Z.USER,visiblePropertyOptions:{phetioState:!1}},t);super(i);const s=e=>{this.visible=e>0};e.lengthProperty.link(s),this.addInputListener(new R.eMb({tandem:i.tandem.createTandem("inputListener"),phetioReadOnly:i.phetioReadOnly,fire(){(!phet.chipper.isFuzzEnabled()||Nr.Z.nextDouble()<.005)&&e.get(e.length-1).hide()}})),this.disposeBarrierRectangle=()=>{e.lengthProperty.hasListener(s)&&e.lengthProperty.unlink(s)}}dispose(){this.disposeBarrierRectangle(),super.dispose()}}ft.register("BarrierRectangle",sb);i(535);let nb=!1,rb=!0;const ob={start:function(e){nb=!0;const t=document.createElement("div");t.style.opacity="0",t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="0",t.style.height="0",t.style.clip="rect(0,0,0,0)",t.setAttribute("aria-hidden","true"),e.display.domElement.appendChild(t),e.frameStartedEmitter.addListener(()=>{e.frameCounter%1e3==0&&(rb=!rb,t.innerHTML=""+rb)})}};Bt.Z.register("Heartbeat",ob);const ab=ob;var hb=i(1383);class lb extends hb.Z{constructor(e,t){super(new F.Z(e),t)}}ht.Z.register("MappedProperty",lb);const db=new Image,cb=Z.Z.createLock(db);db.onload=cb,db.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAogSURBVHjazJprcFRnGcf/Z+/37C3JJiwkhFuDtg0UDbZCQ2la7XS004wzVochqKPOOAPyQb8IVoaKM3wp8Ek/1NSZUmfU0BY7OoooXqCmliYI5RJomjvsbrK37P3q85yTTUJIsmdDNvLOvNnN7tn3nN/7fy7v+5wjYAnbTw+iyWDAboMeTVotWowGQKUC1OqFfycIQC4HZDLoicbE/g59fO47+xAs5fzCEgBYlUp8nyHsNtQ77IDFDBAQdDpAoyEgZZGLUAA0BrIZIJEEwhPA2DiCoRDeJrDj3/geesoOc+TH+AlB7Kt0wlrpACoqALMJMHE3KgjGCLXGAoXCXOQqVKSOFvlcHNlsAOmUH/F4UoS6fQe448G5UBj7i0Eji*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";const ub=db;class pb extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({basePositionProperty:new Uh.Z(new Ys.Z(0,0)),tipPositionProperty:new Uh.Z(new Ys.Z(1,0)),hasValue:!0,dragBounds:vt.Z.EVERYTHING,textPosition:new Ys.Z(0,30),modelViewTransform:Om.Z.createIdentity(),significantFigures:1,textColor:"white",textBackgroundColor:null,textBackgroundXMargin:4,textBackgroundYMargin:2,textBackgroundCornerRadius:2,textMaxWidth:200,textFont:new Et({size:16,weight:"bold"}),baseScale:.8,lineColor:"gray",tapeLineWidth:2,tipCircleColor:"rgba(0,0,0,0.1)",tipCircleRadius:10,crosshairColor:"rgb(224, 95, 32)",crosshairSize:5,crosshairLineWidth:2,isBaseCrosshairRotating:!0,isTipCrosshairRotating:!0,isTipDragBounded:!0,interactive:!0,baseDragStarted:_.noop,baseDragEnded:_.noop,tandem:ye.Z.OPTIONAL},t);super(),this.unitsProperty=e,this.significantFigures=i.significantFigures,this.dragBounds=i.dragBounds,this.modelViewTransformProperty=new ot.Z(i.modelViewTransform),this.isTipDragBounded=i.isTipDragBounded,this.basePositionProperty=i.basePositionProperty,this.tipPositionProperty=i.tipPositionProperty,this._isTipUserControlledProperty=new ot.Z(!1),this.isTipUserControlledProperty=this._isTipUserControlledProperty,this._isBaseUserControlledProperty=new ot.Z(!1),this.isBaseUserControlledProperty=this._isBaseUserControlledProperty,this.measuredDistanceProperty=new me.ZP([this.basePositionProperty,this.tipPositionProperty],(e,t)=>e.distance(t),{tandem:i.tandem.createTandem("measuredDistanceProperty"),phetioDocumentation:"The distance measured by the measuring tape",phetioValueType:Xh.Z,units:this.basePositionProperty.units});const s=(new Nt.bn).moveTo(-i.crosshairSize,0).moveTo(-i.crosshairSize,0).lineTo(i.crosshairSize,0).moveTo(0,-i.crosshairSize).lineTo(0,i.crosshairSize),n=new R.y$t(s,{stroke:i.crosshairColor,lineWidth:i.crosshairLineWidth}),r=new R.y$t(s,{stroke:i.crosshairColor,lineWidth:i.crosshairLineWidth}),o=new R.Cdc(i.tipCircleRadius,{fill:i.tipCircleColor}),a=new R.e8H({interactiveHighlightEnabled:!1});this.baseImage=new R.Eep(ub,{scale:i.baseScale,cursor:"pointer"}),a.addChild(this.baseImage);const h=new R.x12(this.basePositionProperty.value,this.tipPositionProperty.value,{stroke:i.lineColor,lineWidth:i.tapeLineWidth}),l=new R.e8H({children:[o,r],cursor:"pointer",interactiveHighlightEnabled:!1}),d=new me.ZP([this.unitsProperty,this.measuredDistanceProperty,St.measuringTapeReadoutPatternStringProperty],(e,t,i)=>{const s=Ve.Z.toFixed(e.multiplier*t,this.significantFigures);return xt.Z.fillIn(i,{distance:s,units:e.name})},{tandem:i.tandem.createTandem("readoutStringProperty"),phetioValueType:ss.Z,phetioDocumentation:"The text content of the readout on the measuring tape"});this.valueNode=new R.xvT(d,{font:i.textFont,fill:i.textColor,maxWidth:i.textMaxWidth}),this.valueBackgroundNode=new R.AeJ(0,0,1,1,{cornerRadius:i.textBackgroundCornerRadius,fill:i.textBackgroundColor});const c=()=>{const e=this.valueNode.width+2*i.textBackgroundXMargin,t=this.valueNode.height+2*i.textBackgroundYMargin;this.valueBackgroundNode.setRect(0,0,e,t),this.valueBackgroundNode.center=this.valueNode.center};let u;if(this.valueNode.boundsProperty.lazyLink(c),c(),l.touchArea=l.localBounds.dilated(15),this.baseImage.touchArea=this.baseImage.localBounds.dilated(20),this.baseImage.mouseArea=this.baseImage.localBounds.dilated(10),this.addChild(h),this.addChild(n),this.addChild(a),this.valueContainer=new R.NBX({children:[this.valueBackgroundNode,this.valueNode]}),i.hasValue&&this.addChild(this.valueContainer),this.addChild(l),this.baseDragListener=null,i.interactive){let e;a.interactiveHighlightEnabled=!0,l.interactiveHighlightEnabled=!0,this.baseDragListener=new R._U3({tandem:i.tandem.createTandem("baseDragListener"),start:e=>{this.moveToFront(),i.baseDragStarted(),this._isBaseUserControlledProperty.value=!0;const t=this.modelViewTransformProperty.value.modelToViewPosition(this.basePositionProperty.value);u=e.currentTarget.globalToParentPoint(e.pointer.point).minus(t)},drag:(e,t)=>{const s=t.currentTarget.globalToParentPoint(e.pointer.point).minus(u),n=this.modelViewTransformProperty.value.viewToModelPosition(s),r=this.dragBounds.closestPointTo(n),o=r.minus(this.basePositionProperty.value);if(this.basePositionProperty.set(r),!this.isTipUserControlledProperty.value){const e=o.add(this.tipPositionProperty.value);if(i.isTipDragBounded){const t=this.dragBounds.closestPointTo(e);this.tipPositionProperty.set(t)}else this.tipPositionProperty.set(e)}},end:()=>{this._isBaseUserControlledProperty.value=!1,i.baseDragEnded()}}),this.baseImage.addInputListener(this.baseDragListener);const t=new R._U3({tandem:i.tandem.createTandem("tipDragListener"),start:t=>{this.moveToFront(),this._isTipUserControlledProperty.value=!0;const i=this.modelViewTransformProperty.value.modelToViewPosition(this.tipPositionProperty.value);e=t.currentTarget.globalToParentPoint(t.pointer.point).minus(i)},drag:(t,s)=>{const n=s.currentTarget.globalToParentPoint(t.pointer.point).minus(e),r=this.modelViewTransformProperty.value.viewToModelPosition(n);i.isTipDragBounded?this.tipPositionProperty.value=this.dragBounds.closestPointTo(r):this.tipPositionProperty.value=r},end:()=>{this._isTipUserControlledProperty.value=!1}});l.addInputListener(t)}const p=()=>{this.valueNode.centerTop=this.baseImage.center.plus(i.textPosition.times(i.baseScale))};d.link(p);const m=Ze.Z.multilink([this.measuredDistanceProperty,e,this.modelViewTransformProperty,this.tipPositionProperty,this.basePositionProperty],(e,t,s,r,o)=>{const a=s.modelToViewPosition(r),d=s.modelToViewPosition(o),c=this.baseImage.getRotation(),u=Math.atan2(a.y-d.y,a.x-d.x),m=u-c;n.center=d,l.center=a,this.baseImage.setRotation(0),this.baseImage.rightBottom=d,this.baseImage.rotateAround(this.baseImage.rightBottom,u),h.setLine(d.x,d.y,a.x,a.y),i.isTipCrosshairRotating&&l.rotateAround(a,m),i.isBaseCrosshairRotating&&n.rotateAround(d,m),p()});this.disposeMeasuringTapeNode=()=>{m.dispose(),d.dispose(),a.dispose(),l.dispose()},this.mutate(i)}reset(){this.basePositionProperty.reset(),this.tipPositionProperty.reset()}dispose(){this.disposeMeasuringTapeNode(),super.dispose()}setDragBounds(e){this.dragBounds=e.copy(),this.basePositionProperty.value=this.dragBounds.closestPointTo(this.basePositionProperty.value),this.isTipDragBounded&&(this.tipPositionProperty.value=this.dragBounds.closestPointTo(this.tipPositionProperty.value))}getDragBounds(){return this.dragBounds.copy()}getLocalBaseCenter(){return new Ys.Z(-this.baseImage.imageWidth/2,-this.baseImage.imageHeight/2)}getLocalBaseBounds(){return this.baseImage.bounds.copy()}startBaseDrag(e){this.baseDragListener&&this.baseDragListener.press(e)}static createIcon(e){const t=(0,N.ZP)()({tapeLength:30},e),i=new pb(new ot.Z({name:"",multiplier:1}),{tipPositionProperty:new Uh.Z(new Ys.Z(t.tapeLength,0)),hasValue:!1,interactive:!1});t.children=[i];const s=new R.NBX(t);return i.toImage(e=>s.setChildren([new R.Eep(e)])),s}}ft.register("MeasuringTapeNode",pb);const mb=pb;var gb=i(1243);const yb=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Ve.Z.toFixed(e,t)};class Ab extends Le.Z{}_defineProperty(Ab,"MOUSE",new(I=Ab)),_defineProperty(Ab,"TOUCH",new I),_defineProperty(Ab,"NONE",new I),_defineProperty(Ab,"enumeration",new Oe.Z(I));class fb{constructor(e,t){this.sim=e,this.simDisplay=t,this.activeProperty=new F.Z(!1),this.visualTreeVisibleProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.pdomTreeVisibleProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.underPointerVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.optionsVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.previewVisibleProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.selectedNodeContentVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.selectedTrailContentVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.highlightVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.boundsVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.selfBoundsVisibleProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.getHelperNodeVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.helperVisibleProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.inputBasedPickingProperty=new se.Z(!0,{tandem:ye.Z.OPT_OUT}),this.useLeafNodeProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.pointerAreaTypeProperty=new lt(Ab.MOUSE,{tandem:ye.Z.OPT_OUT}),this.pointerPositionProperty=new F.Z(Ys.Z.ZERO),this.overInterfaceProperty=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),this.selectedTrailProperty=new F.Z(null),this.treeHoverTrailProperty=new F.Z(null),this.pointerTrailProperty=new me.ZP([this.pointerPositionProperty,this.overInterfaceProperty,this.pointerAreaTypeProperty,this.inputBasedPickingProperty],(e,i,s,n)=>{if(i)return null;if(!n)return Mb(t.rootNode,e);let r=t.rootNode.hitTest(e,s===Ab.MOUSE,s===Ab.TOUCH);if(r&&!this.useLeafNodeProperty.value){for(;r.length>0&&0===r.lastNode().inputListeners.length;)r.removeDescendant();if(0===r.length)r=null;else{const e=r.lastNode().inputListeners[0];e instanceof R.$o8&&e.targetNode&&e.targetNode!==r.lastNode()&&r.containsNode(e.targetNode)&&(r=r.subtrailTo(e.targetNode))}}return r},{tandem:ye.Z.OPT_OUT,valueComparisonStrategy:"equalsFunction"}),this.previewTrailProperty=new me.ZP([this.selectedTrailProperty,this.treeHoverTrailProperty,this.pointerTrailProperty],(e,t,i)=>e||(t||i)),this.previewShapeProperty=new me.ZP([this.previewTrailProperty,this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(e,t,i)=>e?t?Lb(e,i===Ab.MOUSE,i===Ab.TOUCH):Lb(e,!1,!1):null),this.helperNodeProperty=new me.ZP([this.selectedTrailProperty],e=>{if(e){const t=e.lastNode();return(e=>!!e.getHelperNode)(t)?t.getHelperNode():null}return null}),this.screenViewProperty=new F.Z(null),this.imageDataProperty=new F.Z(null),this.colorProperty=new me.ZP([this.pointerPositionProperty,this.imageDataProperty],(e,t)=>{if(!t)return R.Ilk.TRANSPARENT;const i=Math.floor(e.x/this.simDisplay.width*t.width),s=Math.floor(e.y/this.simDisplay.height*t.height),n=4*(i+t.width*s);return i<0||s<0||i>t.width||s>t.height?R.Ilk.TRANSPARENT:new R.Ilk(t.data[n],t.data[n+1],t.data[n+2],t.data[n+3]/255)},{tandem:ye.Z.OPT_OUT});const i=new se.Z(phet.chipper.queryParameters.fuzz,{tandem:ye.Z.OPT_OUT});i.lazyLink(e=>{phet.chipper.queryParameters.fuzz=e});const s=new se.Z(!1,{tandem:ye.Z.OPT_OUT}),n=new F.Z({name:"view units",multiplier:0}),r=new F.Z(vt.Z.NOTHING),o=new R.NBX({renderer:"svg"}),a=new lb(this.pointerPositionProperty,{tandem:ye.Z.OPT_OUT,bidirectional:!0,map:e=>{const t=this.screenViewProperty.value;if(t){const i=t.globalToLocalPoint(e);return`global: x: ${yb(e.x)}, y: ${yb(e.y)}
view: x: ${yb(i.x)}, y: ${yb(i.y)}`}return"-"}}),h=new R.Hof(a,{font:new Et(12)}),l=new lb(this.colorProperty,{tandem:ye.Z.OPT_OUT,bidirectional:!0,map:e=>`${e.toHexString()} ${e.toCSS()}`}),d=new R.Hof(l,{font:new Et(12)});this.colorProperty.link(e=>{d.fill=R.Ilk.getLuminance(e)>128?R.Ilk.BLACK:R.Ilk.WHITE});const c=new R.Ilk("#804000"),u=new R.Ilk("#208020"),p=new R.Ilk(255,100,0),m=new R.Ilk(0,0,255),g=new R.Ilk(255,0,0),y=new R.Ilk(200,0,200),A=new me.ZP([this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(e,t)=>e?t===Ab.MOUSE?m:t===Ab.TOUCH?g:y:p,{tandem:ye.Z.OPT_OUT}),f=new Qi(d,{cornerRadius:0,stroke:null,fill:this.colorProperty}),P=new R.NBX({visibleProperty:this.previewVisibleProperty}),b=new R.AeJ(0,0,200,200,{fill:new R.eQt(new R.NBX({children:[new R.AeJ(0,0,10,10,{fill:"#ddd"}),new R.AeJ(10,10,10,10,{fill:"#ddd"}),new R.AeJ(0,10,10,10,{fill:"#fafafa"}),new R.AeJ(10,0,10,10,{fill:"#fafafa"})]}),2,0,0,20,20),stroke:"black",visibleProperty:this.previewVisibleProperty});this.previewTrailProperty.link(e=>{if(P.removeAllChildren(),e){P.addChild(b);const t=e.lastNode();if(t.bounds.isValid()){const e=.9*window.devicePixelRatio*Math.min(b.selfBounds.width/t.width,b.selfBounds.height/t.height);P.addChild(new R.NBX({scale:e/window.devicePixelRatio,center:b.center,children:[t.rasterized({resolution:e,sourceBounds:t.bounds.dilated(.01*t.bounds.width).roundedOut()})]}))}}});const E=new R.SHm({spacing:3,align:"left",visibleProperty:this.selectedNodeContentVisibleProperty});this.previewTrailProperty.link(e=>{E.children=e?xb(e):[]});const v=new Pb(i,"Fuzz"),w=new Pb(s,"Measuring Tape"),V=new Pb(this.visualTreeVisibleProperty,"Visual Tree"),S=new Pb(this.pdomTreeVisibleProperty,"PDOM Tree"),T=new Pb(this.inputBasedPickingProperty,"Input-based"),C=new Pb(this.useLeafNodeProperty,"Use Leaf",{enabledProperty:this.inputBasedPickingProperty}),I=new Pb(this.highlightVisibleProperty,"Highlight",{labelOptions:{fill:A}}),x=new Pb(this.boundsVisibleProperty,"Bounds",{labelOptions:{fill:c}}),k=new Pb(this.selfBoundsVisibleProperty,"Self Bounds",{labelOptions:{fill:u}}),B=new Pb(this.getHelperNodeVisibleProperty,"getHelperNode()"),M=new et(this.pointerAreaTypeProperty,[{value:Ab.MOUSE,createNode:e=>new R.xvT("Mouse",{fontSize:12})},{value:Ab.TOUCH,createNode:e=>new R.xvT("Touch",{fontSize:12})},{value:Ab.NONE,createNode:e=>new R.xvT("None",{fontSize:12})}],{orientation:"horizontal",enabledProperty:this.inputBasedPickingProperty,radioButtonOptions:{xSpacing:3},spacing:10,tandem:ye.Z.OPT_OUT}),D=new R.SHm({align:"left",visibleProperty:this.selectedTrailContentVisibleProperty});this.previewTrailProperty.link(e=>{if(D.children=[],e){e.nodes.slice().forEach((t,i)=>{D.addChild(new R.Hof(`${i>0?e.nodes[i-1].children.indexOf(t):"-"} ${t.constructor.name}`,{font:new Et(12),fill:i===e.nodes.length-1?"black":"#bbb",layoutOptions:{leftMargin:10*i},cursor:"pointer",inputListeners:[new R.eMb({fire:()=>{this.selectedTrailProperty.value=e.subtrailTo(t),N()},tandem:ye.Z.OPT_OUT})]}))}),e.lastNode().children.forEach((t,i)=>{D.addChild(new R.Hof(`${e.lastNode().children.indexOf(t)} ${t.constructor.name}`,{font:new Et(12),fill:"#88f",layoutOptions:{leftMargin:10*e.nodes.length},cursor:"pointer",inputListeners:[new R.eMb({fire:()=>{this.selectedTrailProperty.value=e.copy().addDescendant(t,i),N()},tandem:ye.Z.OPT_OUT})]}))}),e.isVisible()||D.addChild(new R.xvT("invisible",{fill:"#60a",fontSize:12})),1!==e.getOpacity()&&D.addChild(new R.xvT("opacity: "+e.getOpacity(),{fill:"#888",fontSize:12}));const t=_.some(e.nodes,e=>!1===e.pickable||!e.visible),i=_.some(e.nodes,e=>e.inputListeners.length>0||!0===e.pickable);!t&&i&&D.addChild(new R.xvT("Hit Tested",{fill:"#f00",fontSize:12})),e.getMatrix().isIdentity()||D.addChild(new R.NBX({children:[new Tb(e.getMatrix())]}))}});const O=new wb(this.visualTreeVisibleProperty,this,()=>new Eb(new R.Qn1(t.rootNode),this)),L=new wb(this.pdomTreeVisibleProperty,this,()=>new vb(t._rootPDOMInstance,this)),N=()=>{O.focusSelected(),L.focusSelected()},Z=new R.y$t(null,{visibleProperty:this.boundsVisibleProperty,stroke:c,fill:c.withAlpha(.1),lineDash:[2,2],lineDashOffset:2});this.previewTrailProperty.link(e=>{e&&e.lastNode().localBounds.isValid()?Z.shape=Nt.bn.bounds(e.lastNode().localBounds).transformed(e.getMatrix()):Z.shape=null});const q=new R.y$t(null,{visibleProperty:this.selfBoundsVisibleProperty,stroke:u,fill:u.withAlpha(.1),lineDash:[2,2],lineDashOffset:1});this.previewTrailProperty.link(e=>{e&&e.lastNode().selfBounds.isValid()?q.shape=Nt.bn.bounds(e.lastNode().selfBounds).transformed(e.getMatrix()):q.shape=null});const Y=new me.ZP([A],e=>e.withAlpha(.2),{tandem:ye.Z.OPT_OUT}),H=new R.y$t(null,{stroke:A,lineDash:[2,2],fill:Y,visibleProperty:this.highlightVisibleProperty});this.previewShapeProperty.link(e=>{H.shape=e});const G=new R.NBX({visibleProperty:this.getHelperNodeVisibleProperty});this.selectedTrailProperty.link(e=>{e&&(G.matrix=e.getMatrix())}),this.helperNodeProperty.link(e=>{G.removeAllChildren(),e&&G.addChild(e)}),o.addChild(Z),o.addChild(q),o.addChild(H);const U=new R.NBX;U.addInputListener(new R.$o8({press:()=>{this.selectedTrailProperty.value=this.pointerTrailProperty.value,N()},tandem:ye.Z.OPT_OUT})),o.addChild(U),o.addChild(G);const z=new R.N52({orientation:"vertical",spacing:5,align:"left",children:[h,f],visibleProperty:this.underPointerVisibleProperty}),W=new R.SHm({spacing:3,align:"left",children:[Vb("Tools"),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[v,w]}),new R.BET({spacing:10,children:[V,...t._accessible?[S]:[]]})]}),Vb("Picking",void 0,{layoutOptions:{topMargin:3}}),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[T,C]}),M]}),Vb("Show",void 0,{layoutOptions:{topMargin:3}}),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[I,B]}),new R.BET({spacing:10,children:[x,k]})]})],visibleProperty:this.optionsVisibleProperty}),Q=new R.SHm({spacing:5,align:"left",children:[Sb("Under Pointer",this.underPointerVisibleProperty,z,{layoutOptions:{topMargin:0}}),z,Sb("Options",this.optionsVisibleProperty,W),W,Sb("Preview",this.previewVisibleProperty,P),P,Sb("Selected Trail",this.selectedTrailContentVisibleProperty,D),D,Sb("Selected Node",this.selectedNodeContentVisibleProperty,E),E],visibleProperty:this.helperVisibleProperty}),X=new R.SHm({spacing:5,align:"left",children:[Sb("Helper",this.helperVisibleProperty,Q),new R.qYj,Q]}),K=new Qi(X,{fill:"rgba(255,255,255,0.85)",stroke:"rgba(0,0,0,0.85)",cornerRadius:0});K.addInputListener(new R._U3({translateNode:!0,targetNode:K,tandem:ye.Z.OPT_OUT})),K.addInputListener({wheel:e=>{const t=e.domEvent.deltaY;K.y-=1*t}}),o.addChild(K),o.addChild(O),o.addChild(L);const J=new mb(n,{visibleProperty:s,textBackgroundColor:"rgba(0,0,0,0.5)"});J.basePositionProperty.value=new Ys.Z(100,300),J.tipPositionProperty.value=new Ys.Z(200,300),o.addChild(J);const j=e=>{this.helperDisplay.width=e.width,this.helperDisplay.height=e.height,r.value=r.value.withMaxX(e.width).withMaxY(e.height),U.mouseArea=new vt.Z(0,0,e.width,e.height),U.touchArea=new vt.Z(0,0,e.width,e.height),O.resize(e),L.resize(e)},$=e=>{var t;this.overInterfaceProperty.value=K.bounds.containsPoint(this.pointerPositionProperty.value)||this.visualTreeVisibleProperty.value&&O.bounds.containsPoint(this.pointerPositionProperty.value)||this.pdomTreeVisibleProperty.value&&L.bounds.containsPoint(this.pointerPositionProperty.value)||G.containsPoint(this.pointerPositionProperty.value),null===(t=this.helperDisplay)||void 0===t||t.updateDisplay()};document.addEventListener("keyup",e=>{"Escape"===e.key&&(this.selectedTrailProperty.value=null)}),this.activeProperty.lazyLink(t=>{if(t){e.activeProperty.value=!1;const t=e.selectedScreenProperty.value;t.hasView()?this.screenViewProperty.value=t.view:this.screenViewProperty.value=null,this.helperDisplay=new R.sSl(o,{assumeFullWindow:!0}),this.helperDisplay.initializeEvents(),e.dimensionProperty.link(j),tb.Z.addListener($),document.body.appendChild(this.helperDisplay.domElement),this.helperDisplay.domElement.style.zIndex="10000";const i=e=>{this.pointerPositionProperty.value=e.pointer.point};this.helperDisplay.addInputListener({move:i,down:i,up:i}),this.screenViewProperty.value&&(n.value={name:"view units",multiplier:this.screenViewProperty.value.getGlobalToLocalMatrix().getScaleVector().x}),this.simDisplay.foreignObjectRasterization(e=>{if(e){const t=document.createElement("img");t.addEventListener("load",()=>{const e=t.width,i=t.height,s=document.createElement("canvas"),n=s.getContext("2d");s.width=e,s.height=i,n.drawImage(t,0,0),this.activeProperty.value&&(this.imageDataProperty.value=n.getImageData(0,0,e,i))}),t.src=e}else console.log("Could not load foreign object rasterization")})}else e.dimensionProperty.unlink(j),tb.Z.removeListener($),document.body.removeChild(this.helperDisplay.domElement),this.helperDisplay.dispose(),e.activeProperty.value=!0,this.imageDataProperty.value=null,this.visualTreeVisibleProperty.value=!1})}static initialize(e,t){document.addEventListener("keydown",i=>{i.ctrlKey&&"H"===i.key&&(fb.helper||(fb.helper=new fb(e,t)),fb.helper.activeProperty.value=!fb.helper.activeProperty.value)})}}Bt.Z.register("Helper",fb);class Pb extends qs{constructor(e,t,i){const s=(0,N.ZP)()({tandem:ye.Z.OPT_OUT,boxWidth:14,labelOptions:{font:new Et(12)}},i);super(e,new R.Hof(t,s.labelOptions),s)}}class bb extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({createChildren:()=>[],spacing:0,indent:5},t);super({excludeInvisibleChildrenFromBounds:!0}),this.selfNode=e,this.selfNode.centerY=0,this.expandedProperty=new F.Z(!0),this.childTreeNodes=(0,ge.Z)({elements:i.createChildren()});const s=(new Nt.bn).moveToPoint(Ys.Z.createPolar(4.8,3/4*Math.PI).plusXY(1.5,0)).lineTo(1.5,0).lineToPoint(Ys.Z.createPolar(4.8,5/4*Math.PI).plusXY(1.5,0));this.expandCollapseButton=new R.AeJ(-6,-6,12,12,{children:[new R.y$t(s,{stroke:"#888",lineCap:"round",lineWidth:1.5})],visible:!1,cursor:"pointer",right:0}),this.expandedProperty.link(e=>{this.expandCollapseButton.rotation=e?Math.PI/2:0}),this.expandCollapseButton.addInputListener(new R.eMb({fire:()=>{this.expandedProperty.value=!this.expandedProperty.value},tandem:ye.Z.OPT_OUT})),this.addChild(this.expandCollapseButton),this.childContainer=new R.N52({orientation:"vertical",align:"left",spacing:i.spacing,children:this.childTreeNodes,x:i.indent,y:this.selfNode.bottom+i.spacing,visibleProperty:this.expandedProperty}),this.addChild(this.childContainer),this.addChild(e);const n=()=>{this.childContainer.children=this.childTreeNodes,this.expandCollapseButton.visible=this.childTreeNodes.length>0};this.childTreeNodes.addItemAddedListener(()=>{n()}),this.childTreeNodes.addItemRemovedListener(()=>{n()}),n(),this.mutate(i)}expand(){this.expandedProperty.value=!0}collapse(){this.expandedProperty.value=!1}expandRecusively(){this.expandedProperty.value=!0,this.childTreeNodes.forEach(e=>{e.expandRecusively()})}collapseRecursively(){this.expandedProperty.value=!1,this.childTreeNodes.forEach(e=>{e.collapseRecursively()})}}class Eb extends bb{constructor(e,t){const i=e.lastNode(),s=e.isVisible(),n=new R.Zxw({size:12}),r=new R.BET({spacing:5}),o=i.constructor.name;o&&r.addChild(new R.xvT(o,{font:n,pickable:!1,fill:s?"#000":"#60a"})),i instanceof R.xvT&&r.addChild(new R.xvT('"'+i.text+'"',{font:n,pickable:!1,fill:"#666"}));const a=R.AeJ.bounds(r.bounds,{children:[r],cursor:"pointer",fill:new me.ZP([t.selectedTrailProperty,t.pointerTrailProperty],(t,i)=>t&&e.equals(t)?"rgba(0,128,255,0.4)":i&&e.equals(i)?"rgba(0,128,255,0.2)":"transparent",{tandem:ye.Z.OPT_OUT})});a.addInputListener({enter:()=>{t.treeHoverTrailProperty.value=e},exit:()=>{t.treeHoverTrailProperty.value=null}}),a.addInputListener(new R.eMb({fire:()=>{t.selectedTrailProperty.value=e},tandem:ye.Z.OPT_OUT})),super(a,{createChildren:()=>e.lastNode().children.map(i=>new Eb(e.copy().addDescendant(i),t))}),i.visible||(this.expandedProperty.value=!1),this.trail=e}find(e){if(e.equals(this.trail))return this;{const t=_.find(this.childTreeNodes,t=>e.isExtensionOf(t.trail,!0));return t?t.find(e):null}}}class vb extends bb{constructor(e,t){const i=e.trail,s=i.isPDOMVisible(),n=new R.Zxw({size:12}),r=new R.BET({spacing:5});if(i.nodes.length){const t=s?"#000":"#60a",o=i.lastNode();o.tagName&&r.addChild(new R.xvT(o.tagName,{font:new R.Zxw({size:12,weight:"bold"}),fill:t})),o.labelContent&&r.addChild(new R.xvT(o.labelContent,{font:n,fill:"#800"})),o.innerContent&&r.addChild(new R.xvT(o.innerContent,{font:n,fill:"#080"})),o.descriptionContent&&r.addChild(new R.xvT(o.descriptionContent,{font:n,fill:"#444"}));const a=e.parent?e.parent.trail:new R.Qn1,h=i.nodes.slice(a.nodes.length).map(e=>e.constructor.name).filter(e=>"Node"!==e).join(",");h&&r.addChild(new R.xvT(`(${h})`,{font:n,fill:"#008"}))}else r.addChild(new R.xvT("(root)",{font:n}));const o=R.AeJ.bounds(r.bounds,{children:[r],cursor:"pointer",fill:new me.ZP([t.selectedTrailProperty,t.pointerTrailProperty],(e,t)=>e&&i.equals(e)?"rgba(0,128,255,0.4)":t&&i.equals(t)?"rgba(0,128,255,0.2)":"transparent",{tandem:ye.Z.OPT_OUT})});i.length&&(o.addInputListener({enter:()=>{t.treeHoverTrailProperty.value=i},exit:()=>{t.treeHoverTrailProperty.value=null}}),o.addInputListener(new R.eMb({fire:()=>{t.selectedTrailProperty.value=i},tandem:ye.Z.OPT_OUT}))),super(o,{createChildren:()=>e.children.map(e=>new vb(e,t))}),this.instance=e,this.trail=i}find(e){if(e.equals(this.instance.trail))return this;{const t=_.find(this.childTreeNodes,t=>e.isExtensionOf(t.instance.trail,!0));return t?t.find(e):null}}}class wb extends R.AeJ{constructor(e,t,i){super({fill:"rgba(255,255,255,0.85)",stroke:"black",rectWidth:400,visibleProperty:e,pickable:!0}),this.helper=t,this.treeContainer=new R.NBX,this.addChild(this.treeContainer),this.addInputListener(new R._U3({targetNode:this,drag:(e,t)=>{this.x=this.x+t.modelDelta.x},tandem:ye.Z.OPT_OUT})),this.addInputListener({wheel:e=>{const t=e.domEvent.deltaX,i=e.domEvent.deltaY;this.treeNode&&(this.treeNode.x-=1*t,this.treeNode.y-=1*i),this.constrainTree()}}),t.pointerTrailProperty.lazyLink(()=>{t.selectedTrailProperty.value||this.focusPointer()}),Ze.Z.multilink([t.activeProperty,e],(e,t)=>{e&&t?(this.treeNode=i(),this.treeNode.x=500,this.treeNode.y=500,this.treeContainer.children=[this.treeNode],this.focusSelected(),this.constrainTree()):this.treeContainer.children=[]})}resize(e){this.rectHeight=e.height,this.right=e.width,this.treeContainer.clipArea=Nt.bn.bounds(this.localBounds.dilated(10))}constrainTree(){this.treeNode&&(this.treeNode.bottomthis.selfBounds.top+5&&(this.treeNode.top=this.selfBounds.top+5),this.treeNode.rightthis.selfBounds.left+8&&(this.treeNode.left=this.selfBounds.left+8))}focusTrail(e){if(this.treeNode){const t=this.treeNode.find(e);if(t){const e=t.localToGlobalPoint(t.selfNode.center).y-this.centerY;this.treeNode.y-=e,this.constrainTree()}}}focusPointer(){this.helper.pointerTrailProperty.value&&this.focusTrail(this.helper.pointerTrailProperty.value)}focusSelected(){null!==this.helper.selectedTrailProperty.value&&this.focusTrail(this.helper.selectedTrailProperty.value)}}const Vb=(e,t,i)=>new R.xvT(e,(0,us.Z)({fontSize:14,fontWeight:"bold",visibleProperty:t?new me.ZP([t.boundsProperty],e=>!e.isEmpty()):new F.Z(!0)},i)),Sb=(e,t,i,s)=>{const n=Vb(e,i,s);return n.addInputListener(new R.eMb({fire:()=>{t.value=!t.value},tandem:ye.Z.OPT_OUT})),n.cursor="pointer",new R.BET({spacing:7,children:[new fo(t,{tandem:ye.Z.OPT_OUT,sideLength:14}),n],visibleProperty:n.visibleProperty})};class Tb extends R.zch{constructor(e){super({xSpacing:5,ySpacing:0,children:[new R.xvT(e.m00(),{layoutOptions:{column:0,row:0}}),new R.xvT(e.m01(),{layoutOptions:{column:1,row:0}}),new R.xvT(e.m02(),{layoutOptions:{column:2,row:0}}),new R.xvT(e.m10(),{layoutOptions:{column:0,row:1}}),new R.xvT(e.m11(),{layoutOptions:{column:1,row:1}}),new R.xvT(e.m12(),{layoutOptions:{column:2,row:1}}),new R.xvT(e.m20(),{layoutOptions:{column:0,row:2}}),new R.xvT(e.m21(),{layoutOptions:{column:1,row:2}}),new R.xvT(e.m22(),{layoutOptions:{column:2,row:2}})]})}}class Cb extends R.y$t{constructor(e){super(e,{maxWidth:15,maxHeight:15,stroke:"black",cursor:"pointer",strokePickable:!0}),this.addInputListener(new R.eMb({fire:()=>Db(e.getSVGPath()),tandem:ye.Z.OPT_OUT}))}}class Ib extends R.Eep{constructor(e){super(e.getImage(),{maxWidth:15,maxHeight:15})}}const xb=e=>{const t=[],i=e.lastNode(),s=(0,gb.Z)(i.constructor).map(e=>e.name).filter(e=>e&&"Object"!==e),n=s.includes("Node")?s.slice(0,s.indexOf("Node")):s;n.length>0&&t.push(new R.Hof(n.map((e,t)=>0===t?`${e}`:`
${_.repeat(" ",t)}extends ${e}`).join(""),{font:new Et(12)}));const r=(e,i)=>{t.push(new R.BET({spacing:0,align:"top",children:[new R.xvT(e+": ",{fontSize:12}),i]}))},o=(e,t)=>{void 0!==t&&r(e,new R.Hof(""+t,{lineWrap:400,font:new Et(12),cursor:"pointer",inputListeners:[new R.eMb({fire:()=>Db(""+t),tandem:ye.Z.OPT_OUT})]}))},a=e=>new R.BET({spacing:4,children:[new R.AeJ(0,0,10,10,{fill:e,stroke:"black",lineWidth:.5}),new R.xvT(e.toHexString(),{fontSize:12}),new R.xvT(e.toCSS(),{fontSize:12})],cursor:"pointer",inputListeners:[new R.eMb({fire:()=>Db(e.toHexString()),tandem:ye.Z.OPT_OUT})]}),h=(e,t)=>{const i=e=>new R.BET({spacing:3,children:[new R.xvT(e.ratio,{fontSize:12}),a(kb(e.color)||R.Ilk.TRANSPARENT)]});t instanceof R.wGU?t instanceof R.oas?r(e,new R.SHm({align:"left",spacing:3,children:[new R.xvT(`LinearGradient (${t.start.x},${t.start.y}) => (${t.end.x},${t.end.y})`,{fontSize:12}),...t.stops.map(i)]})):t instanceof R.XMe?r(e,new R.SHm({align:"left",spacing:3,children:[new R.xvT(`RadialGradient (${t.start.x},${t.start.y}) ${t.startRadius} => (${t.end.x},${t.end.y}) ${t.endRadius}`,{fontSize:12}),...t.stops.map(i)]})):t instanceof R.cfY&&r(e,new R.SHm({align:"left",spacing:3,children:[new R.xvT("Pattern",{fontSize:12}),new R.Eep(t.image,{maxWidth:10,maxHeight:10})]})):((e,t)=>{const i=kb(t);null!==i&&r(e,a(i))})(e,t)},l=(e,t)=>{t.equals(vt.Z.NOTHING)||(t.equals(vt.Z.EVERYTHING)?o(e,"everything"):r(e,new R.Hof(`x: [${t.minX}, ${t.maxX}]
y: [${t.minY}, ${t.maxY}]`,{font:new Et(12)})))},d=(e,t)=>r(e,new Cb(t));return i.tandem.supplied&&o("tandem",i.tandem.phetioID.split(".").join(" ")),i instanceof R.SOl&&o("element",i.element.constructor.name),(0,R.AXx)(i)&&(!i.widthSizable&&o("widthSizable",i.widthSizable),null!==i.preferredWidth&&o("preferredWidth",i.preferredWidth),i.preferredWidth!==i.localPreferredWidth&&o("localPreferredWidth",i.localPreferredWidth),null!==i.minimumWidth&&o("minimumWidth",i.minimumWidth),i.minimumWidth!==i.localMinimumWidth&&o("localMinimumWidth",i.localMinimumWidth)),(0,R.cWU)(i)&&(!i.heightSizable&&o("heightSizable",i.heightSizable),null!==i.preferredHeight&&o("preferredHeight",i.preferredHeight),i.preferredHeight!==i.localPreferredHeight&&o("localPreferredHeight",i.localPreferredHeight),null!==i.minimumHeight&&o("minimumHeight",i.minimumHeight),i.minimumHeight!==i.localMinimumHeight&&o("localMinimumHeight",i.localMinimumHeight)),i.layoutOptions&&o("layoutOptions",JSON.stringify(i.layoutOptions,null,2)),i instanceof R.BjU&&(!i.resize&&o("resize",i.resize),!i.layoutOrigin.equals(Ys.Z.ZERO)&&o("layoutOrigin",i.layoutOrigin)),i instanceof R.N52&&(o("orientation",i.orientation),o("align",i.align),i.spacing&&o("spacing",i.spacing),i.lineSpacing&&o("lineSpacing",i.lineSpacing),o("justify",i.justify),i.justifyLines&&o("justifyLines",i.justifyLines),i.wrap&&o("wrap",i.wrap),i.stretch&&o("stretch",i.stretch),i.grow&&o("grow",i.grow),i.leftMargin&&o("leftMargin",i.leftMargin),i.rightMargin&&o("rightMargin",i.rightMargin),i.topMargin&&o("topMargin",i.topMargin),i.bottomMargin&&o("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&o("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&o("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&o("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&o("maxContentHeight",i.maxContentHeight)),i instanceof R.zch&&(o("xAlign",i.xAlign),o("yAlign",i.yAlign),i.xSpacing&&o("xSpacing",i.xSpacing),i.ySpacing&&o("ySpacing",i.ySpacing),i.xStretch&&o("xStretch",i.xStretch),i.yStretch&&o("yStretch",i.yStretch),i.xGrow&&o("xGrow",i.xGrow),i.yGrow&&o("yGrow",i.yGrow),i.leftMargin&&o("leftMargin",i.leftMargin),i.rightMargin&&o("rightMargin",i.rightMargin),i.topMargin&&o("topMargin",i.topMargin),i.bottomMargin&&o("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&o("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&o("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&o("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&o("maxContentHeight",i.maxContentHeight)),i instanceof R.AeJ&&(l("rectBounds",i.rectBounds),(i.cornerXRadius||i.cornerYRadius)&&(i.cornerXRadius===i.cornerYRadius?o("cornerRadius",i.cornerRadius):(o("cornerXRadius",i.cornerXRadius),o("cornerYRadius",i.cornerYRadius)))),i instanceof R.x12&&(o("x1",i.x1),o("y1",i.y1),o("x2",i.x2),o("y2",i.y2)),i instanceof R.Cdc&&o("radius",i.radius),i instanceof R.xvT&&(o("text",i.text),o("font",i.font),"hybrid"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod)),i instanceof R.Hof&&(o("text",i.string),o("font",i.font instanceof R.Zxw?i.font.getFont():i.font),h("fill",i.fill),h("stroke",i.stroke),"hybrid"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod),null!==i.lineWrap&&o("lineWrap",i.lineWrap)),i instanceof R.Eep&&(r("image",new Ib(i)),o("imageWidth",i.imageWidth),o("imageHeight",i.imageHeight),1!==i.imageOpacity&&o("imageOpacity",i.imageOpacity),i.imageBounds&&l("imageBounds",i.imageBounds),i.initialWidth&&o("initialWidth",i.initialWidth),i.initialHeight&&o("initialHeight",i.initialHeight),i.hitTestPixels&&o("hitTestPixels",i.hitTestPixels)),(i instanceof R.mxV||i instanceof R.HDe)&&l("canvasBounds",i.canvasBounds),i instanceof R.y$t&&(i.shape&&d("shape",i.shape),"accurate"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod)),(i instanceof R.y$t||i instanceof R.xvT)&&(h("fill",i.fill),h("stroke",i.stroke),i.lineDash.length&&o("lineDash",i.lineDash),i.fillPickable||o("fillPickable",i.fillPickable),i.strokePickable&&o("strokePickable",i.strokePickable),1!==i.lineWidth&&o("lineWidth",i.lineWidth),"butt"!==i.lineCap&&o("lineCap",i.lineCap),"miter"!==i.lineJoin&&o("lineJoin",i.lineJoin),0!==i.lineDashOffset&&o("lineDashOffset",i.lineDashOffset),10!==i.miterLimit&&o("miterLimit",i.miterLimit)),i.tagName&&o("tagName",i.tagName),i.accessibleName&&o("accessibleName",i.accessibleName),i.helpText&&o("helpText",i.helpText),i.pdomHeading&&o("pdomHeading",i.pdomHeading),i.containerTagName&&o("containerTagName",i.containerTagName),i.containerAriaRole&&o("containerAriaRole",i.containerAriaRole),i.innerContent&&o("innerContent",i.innerContent),i.inputType&&o("inputType",i.inputType),i.inputValue&&o("inputValue",i.inputValue),i.pdomNamespace&&o("pdomNamespace",i.pdomNamespace),i.ariaLabel&&o("ariaLabel",i.ariaLabel),i.ariaRole&&o("ariaRole",i.ariaRole),i.ariaValueText&&o("ariaValueText",i.ariaValueText),i.labelTagName&&o("labelTagName",i.labelTagName),i.labelContent&&o("labelContent",i.labelContent),i.appendLabel&&o("appendLabel",i.appendLabel),i.descriptionTagName&&o("descriptionTagName",i.descriptionTagName),i.descriptionContent&&o("descriptionContent",i.descriptionContent),i.appendDescription&&o("appendDescription",i.appendDescription),i.pdomVisible||o("pdomVisible",i.pdomVisible),i.pdomOrder&&o("pdomOrder",i.pdomOrder.map(e=>null===e?"null":e.constructor.name)),i.visible||o("visible",i.visible),1!==i.opacity&&((e,t)=>{o(e,t)})("opacity",i.opacity),null!==i.pickable&&o("pickable",i.pickable),i.enabled||o("enabled",i.enabled),i.inputEnabled||o("inputEnabled",i.inputEnabled),null!==i.cursor&&o("cursor",i.cursor),i.transformBounds&&o("transformBounds",i.transformBounds),i.renderer&&o("renderer",i.renderer),i.usesOpacity&&o("usesOpacity",i.usesOpacity),i.layerSplit&&o("layerSplit",i.layerSplit),i.cssTransform&&o("cssTransform",i.cssTransform),i.excludeInvisible&&o("excludeInvisible",i.excludeInvisible),i.preventFit&&o("preventFit",i.preventFit),null!==i.webglScale&&o("webglScale",i.webglScale),i.matrix.isIdentity()||((e,t)=>{r(e,new Tb(t))})("matrix",i.matrix),null!==i.maxWidth&&o("maxWidth",i.maxWidth),null!==i.maxHeight&&o("maxHeight",i.maxHeight),null!==i.clipArea&&d("clipArea",i.clipArea),null!==i.mouseArea&&(i.mouseArea instanceof vt.Z?l("mouseArea",i.mouseArea):d("mouseArea",i.mouseArea)),null!==i.touchArea&&(i.touchArea instanceof vt.Z?l("touchArea",i.touchArea):d("touchArea",i.touchArea)),i.inputListeners.length&&o("inputListeners",i.inputListeners.map(e=>e.constructor.name).join(", ")),t.push(new R.LZC(5,5)),l("localBounds",i.localBounds),i.localBoundsOverridden&&o("localBoundsOverridden",i.localBoundsOverridden),l("bounds",i.bounds),isFinite(i.width)&&o("width",i.width),isFinite(i.height)&&o("height",i.height),t.push(new ui({content:new R.xvT("Copy Path",{fontSize:12}),listener:()=>Db("phet.joist.display.rootNode"+e.indices.map(e=>`.children[ ${e} ]`).join("")),tandem:ye.Z.OPT_OUT})),t},kb=e=>{const t=e instanceof is.Z||e instanceof F.Z?e.value:e;return null===t?null:R.Ilk.toColor(t)},Bb=e=>{if(e instanceof R.wGU)return!0;{const t=kb(e);return!!t&&t.alpha>0}},Mb=(e,t)=>{if(!e.visible)return null;const i=e._transform.getInverse().timesVector2(t),s=e.clipArea;if(null!==s&&!s.containsPoint(i))return null;for(let n=e._children.length-1;n>=0;n--){const t=e._children[n],s=Mb(t,i);if(s)return s.addAncestor(e,n)}if(e.selfBounds.containsPoint(i))if(e instanceof R.y$t&&e.hasShape()){if(Bb(e.fill)&&e.getShape().containsPoint(i))return new R.Qn1(e);if(Bb(e.stroke)&&e.getStrokedShape().containsPoint(i))return new R.Qn1(e)}else if(e.containsPointSelf(i))return new R.Qn1(e);return null},Db=async e=>{var t;await(null===(t=navigator.clipboard)||void 0===t?void 0:t.writeText(e))},Ob=(e,t,i)=>{let s=Nt.bn.union([...t&&e.mouseArea?[e.mouseArea instanceof Nt.bn?e.mouseArea:Nt.bn.bounds(e.mouseArea)]:[],...i&&e.touchArea?[e.touchArea instanceof Nt.bn?e.touchArea:Nt.bn.bounds(e.touchArea)]:[],e.getSelfShape(),...e.children.filter(e=>e.visible&&!1!==e.pickable).map(e=>Ob(e,t,i).transformed(e.matrix))].filter(e=>e.bounds.isValid()));return e.hasClipArea()&&(s=s.shapeIntersection(e.clipArea)),s},Lb=(e,t,i)=>{let s=Ob(e.lastNode(),t,i);for(let n=e.nodes.length-1;n>=0;n--){const t=e.nodes[n];t.hasClipArea()&&(s=s.shapeIntersection(t.clipArea)),s=s.transformed(t.matrix)}return s};class Rb extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({keyFill:"white",keyShadowFill:"black",lineWidth:1.3,cornerRadius:2,xShadowOffset:1.7,yShadowOffset:1.7,xMargin:0,yMargin:0,xAlign:"center",yAlign:"center",xPadding:4,yPadding:4,keyHeight:23,minKeyWidth:23,forceSquareKey:!1},t),s=new R.NBX({children:[e]}),n=new R.NBX({children:[s]}),r=new R.DbO(n,{xAlign:i.xAlign,yAlign:i.yAlign,xMargin:i.xMargin,yMargin:i.yMargin}),o=new R.AeJ(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyShadowFill}),a=new R.AeJ(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyFill,stroke:"black",lineWidth:i.lineWidth});e.boundsProperty.link(()=>{let t=1;const h=i.keyHeight-i.yPadding;e.height>h&&(t=h/e.height),s.setScaleMagnitude(t);let l=Math.max(i.minKeyWidth,s.width+i.xPadding);if(i.forceSquareKey){const t=i.minKeyWidth-i.xPadding;let s=1;e.width>t&&(s=t/e.width),l=i.keyHeight,n.setScaleMagnitude(s)}r.setAlignBounds(new vt.Z(0,0,l,i.keyHeight)),o.setRectBounds(r.bounds.shiftedXY(i.xShadowOffset,i.yShadowOffset)),a.setRectBounds(r.bounds)}),i.children=[o,a,r],super(i)}}ft.register("KeyNode",Rb);class Nb extends Rb{constructor(e,t){const i=(0,N.ZP)()({font:new Et({size:16}),fill:"black",textMaxWidth:55,xPadding:11,disposeEmitter:new vp.Z},t);super(new R.Hof(e,{font:i.font,fill:i.fill,maxWidth:i.textMaxWidth,disposer:i.disposeEmitter}),i)}static getAltKeyString(){return ib.Z.mac?St.key.optionStringProperty:St.key.altStringProperty}static altOrOption(e){return new Nb(Nb.getAltKeyString(),e)}static capsLock(e){return new Nb(St.key.capsLockStringProperty,e)}static esc(e){return new Nb(St.key.escStringProperty,e)}static end(e){return new Nb(St.key.endStringProperty,e)}static enter(e){return new Nb(St.key.enterStringProperty,e)}static fn(e){return new Nb(St.key.fnStringProperty,e)}static home(e){return new Nb(St.key.homeStringProperty,e)}static pageDown(e){return new Nb(St.key.pageDownStringProperty,e)}static pageUp(e){return new Nb(St.key.pageUpStringProperty,e)}static space(e){return new Nb(St.key.spaceStringProperty,e)}static shift(e){return new Nb(St.key.shiftStringProperty,e)}static tab(e){return new Nb(St.key.tabStringProperty,e)}}ft.register("TextKeyNode",Nb);const Zb=.6*Math.sqrt(3)*10,qb={up:0,down:Math.PI,left:-Math.PI/2,right:Math.PI/2};class Fb extends Rb{constructor(e,t){const i=(0,N.ZP)()({arrowFill:"black",arrowStroke:"black",arrowLineJoin:"round",arrowLineWidth:3,arrowHeight:10,arrowWidth:Zb,yPadding:13,forceSquareKey:!0},t),s=i.arrowHeight,n=i.arrowWidth,r=i.arrowLineJoin,o=i.arrowLineWidth,a=i.arrowFill,h=i.arrowStroke,l=new Nt.bn;l.moveTo(s/2,0).lineTo(s,n+0).lineTo(0,n+0).close(),super(new R.y$t(l,{fill:a,stroke:h,lineJoin:r,lineWidth:o,rotation:qb[e]}),i)}}ft.register("ArrowKeyNode",Fb);class Yb extends Nb{constructor(e,t){super(e,(0,N.ZP)()({xPadding:5,forceSquareKey:!0},t))}}ft.register("LetterKeyNode",Yb);const Hb=new Et(16);class Gb{constructor(){}static iconRow(e,t){const i=(0,N.ZP)()({spacing:1.3,children:e},t);return new R.BET(i)}static iconOrIcon(e,t,i){const s=(0,N.JA)({spacing:Gb.DEFAULT_ICON_SPACING},i),n=new R.xvT(St.keyboardHelpDialog.orStringProperty,{font:Hb,maxWidth:16}),r=Gb.iconRow([new R.NBX({children:[e]}),n,new R.NBX({children:[t]})],s);return n.disposer=r,r}static iconToIcon(e,t,i){const s=(0,N.JA)({spacing:Gb.DEFAULT_ICON_SPACING/2},i),n=new R.xvT(St.keyboardHelpDialog.hyphenStringProperty,{font:Hb,maxWidth:16}),r=Gb.iconRow([new R.NBX({children:[e]}),n,new R.NBX({children:[t]})],s);return n.disposer=n,r}static iconPlusIcon(e,t,i){return Gb.iconPlusIconRow([e,t],i)}static iconPlusIconRow(e,t){const i=(0,N.JA)({plusIconSize:new ni.Z(8,1.2),spacing:Gb.DEFAULT_ICON_SPACING},t),s=[];for(let n=0;n{e.dispose(),t.dispose()}),i}static upOrDown(){const e=new Fb("up"),t=new Fb("down"),i=Gb.iconOrIcon(e,t);return i.disposeEmitter.addListener(()=>{e.dispose(),t.dispose()}),i}static wasdRowIcon(e){const t=(0,N.ZP)()({spacing:1.3},e),i=new Yb("W"),s=new Yb("A"),n=new Yb("S"),r=new Yb("D"),o=[i,s,n,r],a=Gb.iconRow(o,t);return a.disposeEmitter.addListener(()=>{i.dispose(),s.dispose(),n.dispose(),r.dispose()}),a}static arrowKeysRowIcon(e){const t=(0,N.ZP)()({spacing:1.3},e),i=new Fb("up"),s=new Fb("left"),n=new Fb("down"),r=new Fb("right"),o=Gb.iconRow([i,s,n,r],t);return o.disposeEmitter.addListener(()=>{i.dispose(),n.dispose(),s.dispose(),r.dispose()}),o}static arrowOrWasdKeysRowIcon(e){const t=(0,N.ZP)()({spacing:Gb.DEFAULT_ICON_SPACING},e),i=Gb.arrowKeysRowIcon(),s=Gb.wasdRowIcon(),n=Gb.iconOrIcon(i,s,t);return n.disposeEmitter.addListener(()=>{i.dispose(),s.dispose()}),n}static pageUpPageDownRowIcon(e){const t=(0,N.ZP)()({spacing:Gb.DEFAULT_ICON_SPACING},e),i=Nb.pageUp(),s=Nb.pageDown(),n=[i,s],r=Gb.iconRow(n,t);return r.disposeEmitter.addListener(()=>{i.dispose(),s.dispose()}),r}static upDownArrowKeysRowIcon(e){const t=new Fb("up"),i=new Fb("down"),s=Gb.iconRow([t,i],e);return t.disposer=s,i.disposer=s,s}static leftRightArrowKeysRowIcon(e){const t=new Fb("left"),i=new Fb("right"),s=Gb.iconRow([t,i],e);return s.disposeEmitter.addListener(()=>{t.dispose(),i.dispose()}),s}}_defineProperty(Gb,"DEFAULT_ICON_SPACING",6.5),ft.register("KeyboardHelpIconFactory",Gb);var Ub=i(7857),zb=i(6629);const Wb=new Et({size:19,weight:"bold"});class Qb extends((0,R.KwY)(R.SHm)){constructor(e,t,i){const s=(0,N.ZP)()({headingOptions:{font:Wb,maxWidth:335,tagName:"h2",innerContent:e},textMaxWidth:235,vBoxOptions:{align:"left",spacing:13},a11yContentTagName:"ul",spacing:13,align:"left"},i),n=new R.xvT(e,s.headingOptions),r=[],o=[];for(let c=0;c{d.dispose(),t.forEach(e=>e.dispose()),this.keyboardHelpSectionRows=[]}}dispose(){this.disposeKeyboardHelpSection(),super.dispose()}createReadingBlockResponseProperty(){const e=[this.headingStringProperty];for(let t=0;t{let e="";return e+=this.headingStringProperty.value+", ",this.keyboardHelpSectionRows.forEach(t=>{t.readingBlockContent&&(e+=zb.Z.getResponseText(t.readingBlockContent)+" ")}),e})}static alignHelpSectionIcons(e){const t=_.maxBy(e,e=>e.iconVBox.left),i=t.iconVBox.left;e.forEach(e=>{e.contentHBox.spacing=e.contentHBox.spacing+i-e.iconVBox.left})}}_defineProperty(Qb,"DEFAULT_VERTICAL_ICON_SPACING",13),ft.register("KeyboardHelpSection",Qb);const Xb=new Et(16);class Kb extends Pl.Z{constructor(e,t,i,s){const n=(0,N.ZP)()({readingBlockContent:null},s);super(n),this.text=e,this.label=t,this.icon=i,this.readingBlockContent=n.readingBlockContent}static labelWithIcon(e,t,i){const s=(0,N.ZP)()({labelInnerContent:null,readingBlockContent:null,labelOptions:{font:Xb},iconOptions:{tagName:"li"}},i),n=new R.Hof(e,s.labelOptions),r=new R.Lkj({matchHorizontal:!1}),o=r.createBox(n),a=r.createBox(new R.NBX({children:[t]}),s.iconOptions);a.innerContent=s.labelInnerContent;const h=new Kb(n,o,a,{readingBlockContent:s.readingBlockContent||s.labelInnerContent});return n.disposer=h,r.disposer=h,h}static createKeysRowFromStrings(e,t,i){return Kb.createKeysRow(e.map(e=>new Yb(e)),t,i)}static createKeysRow(e,t,i){let s=null;for(let n=0;n{o.dispose(),n.dispose(),c.dispose(),r.forEach(e=>e.dispose())}),m}}_defineProperty(Kb,"LABEL_FONT",Xb),ft.register("KeyboardHelpSectionRow",Kb);const Jb=Kb;class jb extends Qb{constructor(e){const t=(0,N.ZP)()({withCheckboxContent:!1},e),i=Nb.tab(),s=Jb.labelWithIcon(St.keyboardHelpDialog.moveToNextItemOrGroupStringProperty,i,{labelInnerContent:St.a11y.keyboardHelpDialog.general.tabGroupDescriptionStringProperty}),n=Gb.shiftPlusIcon(i),r=Jb.labelWithIcon(St.keyboardHelpDialog.moveToPreviousItemOrGroupStringProperty,n,{labelInnerContent:St.a11y.keyboardHelpDialog.general.shiftTabGroupDescriptionStringProperty}),o=Gb.leftRightArrowKeysRowIcon(),a=Gb.upDownArrowKeysRowIcon(),h=Gb.iconOrIcon(o,a),l=Jb.labelWithIcon(St.keyboardHelpDialog.moveBetweenItemsInAGroupStringProperty,h,{labelInnerContent:St.a11y.keyboardHelpDialog.general.groupNavigationDescriptionStringProperty}),d=Nb.space(),c=Nb.enter(),u=Gb.iconOrIcon(d,c),p=[s,r,l,Jb.labelWithIcon(St.keyboardHelpDialog.pressButtonsStringProperty,u,{labelInnerContent:St.a11y.keyboardHelpDialog.general.pressButtonsDescriptionStringProperty})];if(t.withCheckboxContent){const e=Jb.labelWithIcon(St.keyboardHelpDialog.toggleCheckboxesStringProperty,d,{labelInnerContent:St.a11y.keyboardHelpDialog.general.toggleCheckboxesDescriptionStringProperty});p.push(e)}const m=Nb.altOrOption(),g=new Yb("R"),y=Gb.iconPlusIcon(m,g),A=Jb.labelWithIcon(St.keyboardHelpDialog.resetAllStringProperty,y,{labelInnerContent:xt.Z.fillIn(St.a11y.keyboardHelpDialog.general.resetAllDescriptionPatternStringProperty,{altOrOption:Nb.getAltKeyString()})});p.push(A);const f=Nb.esc(),P=Jb.labelWithIcon(St.keyboardHelpDialog.exitADialogStringProperty,f,{labelInnerContent:St.a11y.keyboardHelpDialog.general.exitDialogDescriptionStringProperty});p.push(P),super(St.keyboardHelpDialog.basicActionsStringProperty,p,t),this.disposeBasicActionsKeyboardHelpSection=()=>{f.dispose(),n.dispose(),i.dispose(),h.dispose(),o.dispose(),a.dispose(),d.dispose(),c.dispose(),u.dispose(),m.dispose(),g.dispose(),y.dispose()}}dispose(){this.disposeBasicActionsKeyboardHelpSection(),super.dispose()}}ft.register("BasicActionsKeyboardHelpSection",jb);class _b extends R.NBX{constructor(){const e=new jb;super({children:[e]}),this.disposeHomeScreenKeyboardHelpContent=()=>{e.dispose()}}dispose(){this.disposeHomeScreenKeyboardHelpContent(),super.dispose()}}Bt.Z.register("HomeScreenKeyboardHelpContent",_b);const $b=_b;class eE{constructor(e,t,i,s){this.simScreens=t,this.screenProperty=e,this.activeSimScreensProperty=i,this.selectedScreenProperty=new ot.Z(t[0],{validValues:t,phetioValueType:Rh.ScreenIO,tandem:s.createTandem("selectedScreenProperty"),phetioFeatured:!0}),this.screenProperty.link(e=>{_.includes(t,e)&&(this.selectedScreenProperty.value=e)})}reset(){}}Bt.Z.register("HomeScreenModel",eE);const tE=eE;class iE extends R.NBX{constructor(e,t){const i=(0,N.ZP)()({xMargin1:6,yMargin1:6,cornerRadius:0},t);super();const s=e.width+2*i.xMargin1,n=e.height+2*i.yMargin1;this.gradient=new R.oas(0,0,s,0).addColorStop(0,"#fbff41").addColorStop(.1475,"#fef98b").addColorStop(.465,"#feff40").addColorStop(.77,"#fffccd").addColorStop(1,"#fbff41");const r=new R.AeJ(0,0,s,n,i.cornerRadius,i.cornerRadius,{stroke:this.gradient,lineWidth:3,x:e.x-i.xMargin1,y:e.y-i.yMargin1});this.addChild(r),this.mutate(i);const o=vt.Z.rect(r.x,r.y,s,n);this.highlightRectangle=R.AeJ.bounds(o.dilated(.75),{stroke:"transparent",lineWidth:4.5}),this.addChild(this.highlightRectangle)}setHighlighted(e){this.highlightRectangle.stroke=e?this.gradient:"transparent"}}Bt.Z.register("Frame",iE);const sE=iE;class nE extends((0,R.CHP)(R.SHm)){constructor(e,t,i){const s=(0,N.ZP)()({cursor:"pointer",showUnselectedHomeScreenIconFrame:!1,tagName:"button",appendDescription:!0,containerTagName:"li",phetioEventType:ei.Z.USER,phetioDocumentation:"A button on the home screen for choosing a simulation screen"},i),n=new me.ZP([t.selectedScreenProperty],t=>t===e),r=new se.Z(!1);let o=Ve.Z.linear(2,4,.875,.5,t.simScreens.length);t.simScreens.length>=5&&(o=.4);const a=140*o,h=e.homeScreenIcon,l=new R.NBX({children:[h],scale:a/h.height}),d=new R.NBX({children:[h],scale:140/h.height}),c=new R.AeJ(0,0,l.width,l.height,{stroke:s.showUnselectedHomeScreenIconFrame?Pi.SCREEN_ICON_FRAME:null,lineWidth:.7}),u=new sE(d),p=new R.NBX({children:[c,l]}),m=new R.NBX({children:[u,d]}),g=new R.NBX({pdomVisible:!1}),y=new R.xvT(e.nameProperty,{tandem:s.tandem.createTandem("text"),stringPropertyOptions:{phetioReadOnly:!0}});super((0,us.Z)({children:[g,y]},s)),this.screen=e,this.addAriaDescribedbyAssociation({otherNode:this,otherElementName:R.Grz.DESCRIPTION_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING});const A={small:{node:[p],font:new Et(18),spacing:3},large:{node:[m],font:new Et(42),spacing:0}},f=()=>{const e=n.value||r.value?1:.5;d.opacity=e,l.opacity=e,y.fill=n.value||r.value?"white":"gray"};n.link(e=>{const t=e?A.large:A.small;g.children=t.node,y.font=t.font,y.maxWidth=g.width,f(),this.setSpacing(t.spacing)}),r.link(e=>{u.setHighlighted(e),f()});const P=new zi.Z;let b=!1;const E=new R.eMb({fire:()=>{const i=E.pointer&&E.pointer.isTouchLike();!n.value||i&&!b?(t.selectedScreenProperty.value=e,this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})):(t.screenProperty.value=e,this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:P}))},tandem:s.tandem.createTandem("inputListener")});this.addInputListener(E),this.addInputListener({focus:e=>{!n.value&&E.fire(e)}}),this.addInputListener({click:()=>this.focus()}),this.addInputListener({focus:()=>r.set(!0),blur:()=>r.set(!1),over:()=>r.set(!0),out:()=>r.set(!1)});const v=()=>{b=t.selectedScreenProperty.value===e,t.selectedScreenProperty.value=e};this.addInputListener({touchover:v,penover:v}),this.boundsProperty.link(()=>{this.mouseArea=this.touchArea=Nt.bn.bounds(this.localBounds)})}}Bt.Z.register("HomeScreenButton",nE);const rE=nE;class oE extends be{constructor(e,t){const i=(0,N.ZP)()({initialPlaybackRate:1},t);super(i),this.activeBufferSources=[],this.valueToWrappedAudioBufferMap=e,this.localGainNode=this.audioContext.createGain(),this.localGainNode.connect(this.soundSourceDestination),this.fullyEnabledProperty.lazyLink(e=>{e||this.stopAll()}),this.playbackRate=void 0===i.initialPlaybackRate?1:i.initialPlaybackRate,this.audioContextStateChangeListener=null,this.timeOfDeferredPlayRequest=Number.NEGATIVE_INFINITY}playAssociatedSound(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this.valueToWrappedAudioBufferMap.get(e);if("running"===this.audioContext.state){if(this.fullyEnabled&&i.audioBufferProperty.value){const e=this.audioContext.currentTime;this.localGainNode.gain.cancelScheduledValues(e),this.localGainNode.gain.setValueAtTime(1,e);const s=this.audioContext.createBufferSource();s.buffer=i.audioBufferProperty.value,s.playbackRate.setValueAtTime(this.playbackRate,this.audioContext.currentTime),s.connect(this.localGainNode),this.activeBufferSources.push(s),s.onended=()=>{const e=this.activeBufferSources.indexOf(s);e>-1&&this.activeBufferSources.splice(e,1)},s.start(e+t)}}else this.audioContextStateChangeListener&&ae.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.timeOfDeferredPlayRequest=Date.now(),this.audioContextStateChangeListener=()=>{(Date.now()-this.timeOfDeferredPlayRequest)/1e3<.2&&this.playAssociatedSound(e,.1),ae.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.audioContextStateChangeListener=null},ae.addStateChangeListener(this.audioContext,this.audioContextStateChangeListener)}setPlaybackRate(e){this.playbackRate=e}stopAll(){const e=this.audioContext.currentTime+.1;this.localGainNode.gain.linearRampToValueAtTime(0,e),this.activeBufferSources.forEach(t=>{t.stop(e)}),this.activeBufferSources.length=0}}H.register("MultiClip",oE);const aE=oE,hE="data:audio/mpeg;base64,//swxAAAA3QZA7SQgDGEjym3NTiCAAACbs2AAAGqCgEAwSYujQIIOnKgQlAxTrlAGAggCQSAwInoJvJduAAez8PpG6ltDAnjvbjMiRIIeZ8jCLEDtPfa*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Blg/GAxzYkDcB+KNzSDi5MJZafMOhKapn8HLzv++rSgAkpbADXqR+kegchCIANNggUlWjapq9Le47sSFTHZa/bXAYlqM8rPYhWNtwYaKlkKf8rUnAAABKpqTWC2wMzN4cy5FNowTcAgiDDU0MyzaHUQh4SpS5zkJxrVtQzO1FXFVBM7rDUrGAFG99gAT0sNBXkiS1TGC//syxFWCRqBBCm3pBxDJi6DpvAkeOFrDRL8AcbCEzNYromyrcdkFQl6rWB4zLlQ0O+EVyd/f7u7tAAAAwn0IQgJ3WvGk2afAi+M1MgBoYzTiisJvExKk3FGqJ1VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7MsRlgEZkMOZs7wRguogddPY9R1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEeIPE+C79zOHmeAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",lE=q(W,hE),dE=Z.Z.createLock(hE),cE=new U;let uE=!1;const pE=()=>{uE||(dE(),uE=!0)},mE=W.decodeAudioData(lE.buffer,e=>{null===cE.audioBufferProperty.value&&(cE.audioBufferProperty.set(e),pE())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),cE.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),pE()});mE&&mE.then(e=>{null===cE.audioBufferProperty.value&&(cE.audioBufferProperty.set(e),pE())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),pE()});const gE=cE,yE="data:audio/mpeg;base64,//swxAACBbQfAa1vAjjzBGF2uiAGAAAAVtwAAAB7yZwNh6oRieZxJ6ZAiC/ATEjWf4paPzHKWsS3vMPHu8R6o/M8eAnZcHGwD9C4jQ2xTmNgzZHbzxk5zD0HTBEWTHspzBMqDK8KxIF37fd35ff/MUdUL/Ebxn9X8v1v6Fr/qUoAAAAEOAWfACgXUDbgA1LRszBjFcN1Q5A37hmD//syxA4ACgAhKbngkhD9BGDHvgAGGWHvMr8isweRLzBiAgMNQMkxCAAAEEEBgeVczyMNGKtsf6F4Giv/rT/odb3f/NeUfP4tFRANCwGGTlYyyEw/cJjMePwAT7SyQczJUPyKoQwYKqCgmCeiMBgE4FSYDIBVgYCxMAaABwCAANnj7qmgbL//++oAAACT1PNJAHxGinXcyGFGEMY9Mv/7MsQKAAcgGyWu+0Bw1gNkqey8jtZp4mrGBaEuYskFTJir6hjU38h9pGJE1e6j2dP16PZ0+3/r0e0AEfK5YkoDQMIPEstTDOAsMYyMs59DMBoM08VQseAdGGgKwaNoyxP16PIbk+2fs9nT7f//tpoAAAJ72ShtQGa8BoaQQT5hFA5GMcVKdoQoJiOAPgkrOATlQcDhXSQ2qmoydr3/+zLEFoJHJBsnr2GEcMsDZPXfYEaeS3N//s7fTvR/p/SFN8xoeGOEfTDSZ6D6YHbMbFxFJgYAxBqwaRl6p2KP3OOIqcUqvattP9yPq0/6PZv//9MAAAKTiC1xwHUiuHc40mB8CKYCqQx3mymHxcm6GBZP17maxazTein9P+j6m0+3o9llP/9lIOZgrByCHtnZWY4ZiqUpj4uvGhXg//swxCSCBowbJa77gDDRg2Il7+xGuBg9YF4Jpo0hixIXkQQs+iqhVNf1f0r//9v/sd/b/k0AAAAKcFJBzzB8nPiVAZdJYBiuEJnyGdkYSIe5+JIBOnyxgEWjVUbPleFtdPVo//7aPTRZ9bP//pCu9FwMmga40MyCTMMhDE7Fz7dKMIDElBibcARSRyHt9Bnbq/s3pQAAAANVnW6Q//syxDOCRxAfD49rBDCZA2N17vAGCA4OIM4qpYxYOwwIzM5oCgxiAktuxQi1OBF1E6XJqSZp0fRZ+j+zp////SAA0iQCsAHUo9Ia9HYZvsF6GoXAqf9il5jeBrH0jZkRcd+mtIOAlu7GetVcvLMd3/p//9lH/YoAAAXgGg7h7VkfY5r0nAFGMhRQdmDlw/OW+eialAABX+GAANouzf/7MsRIAgZsGxXuvMYw2AReve3ghCHw7VaMOCTf7AkcLBW2GGCSRH8ABzEFogX0VXiamZeIAAAANmlTC4o1mzOAYj1V86QwPjSTpkY95TRZARC/grAwJq4SVhZMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEVwBDmBsIjeeAOI2FXrW9GE5VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxHqDxWAq183lZngAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",AE=q(W,yE),fE=Z.Z.createLock(yE),PE=new U;let bE=!1;const EE=()=>{bE||(fE(),bE=!0)},vE=W.decodeAudioData(AE.buffer,e=>{null===PE.audioBufferProperty.value&&(PE.audioBufferProperty.set(e),EE())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),PE.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),EE()});vE&&vE.then(e=>{null===PE.audioBufferProperty.value&&(PE.audioBufferProperty.set(e),EE())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),EE()});const wE=PE;class VE extends Le.Z{}_defineProperty(VE,"HOME_SCREEN_SELECTED",new(x=VE)),_defineProperty(VE,"DIFFERENT_ICON_SELECTED",new x),_defineProperty(VE,"enumeration",new Oe.Z(x));class SE extends aE{constructor(e,t){super(new Map([[VE.HOME_SCREEN_SELECTED,gE],[VE.DIFFERENT_ICON_SELECTED,wE]]),t),e.screenProperty.lazyLink(t=>{t.model===e&&this.playAssociatedSound(VE.HOME_SCREEN_SELECTED)}),e.selectedScreenProperty.lazyLink(()=>{e.screenProperty.value.model===e&&this.playAssociatedSound(VE.DIFFERENT_ICON_SELECTED)})}}Bt.Z.register("HomeScreenSoundGenerator",SE);const TE=SE;class CE extends Ot{constructor(e,t,i){const s=(0,N.ZP)()({layoutBounds:CE.LAYOUT_BOUNDS,warningNode:null,includePDOMNodes:!1},i);super(s);const n=new R.NBX({tagName:"p"});this.addChild(n),this.selectedScreenProperty=t.selectedScreenProperty;const r=new R.xvT(e,{font:new Et({size:52,family:CE.TITLE_FONT_FAMILY}),fill:"white",y:130,maxWidth:this.layoutBounds.width-10,tandem:s.tandem.createTandem("titleText"),stringPropertyOptions:{phetioReadOnly:!0}});r.localBoundsProperty.link(()=>{r.centerX=this.layoutBounds.centerX}),this.addChild(r);const o=s.tandem.createTandem("buttonGroup");this.screenButtons=_.map(t.simScreens,e=>{const i=new rE(e,t,{showUnselectedHomeScreenIconFrame:e.showUnselectedHomeScreenIconFrame,descriptionContent:e.descriptionContent,voicingHintResponse:e.descriptionContent,tandem:o.createTandem(e.tandem.name+"Button")});return i.voicingNameResponse=e.pdomDisplayNameProperty,i.innerContent=e.pdomDisplayNameProperty,i});let a=60;4===t.simScreens.length&&(a=33),t.simScreens.length>=5&&(a=20),this.homeScreenScreenSummaryIntroProperty=new rs(ls.Z.a11y.homeScreenDescriptionPatternStringProperty,{name:e,screens:t.simScreens.length}),n.innerContent=new rs(ls.Z.a11y.homeScreenIntroPatternStringProperty,{description:this.homeScreenScreenSummaryIntroProperty,hint:ls.Z.a11y.homeScreenHintStringProperty}),this.screenButtons.forEach(t=>{t.voicingContextResponse=e});const h=new R.BET({spacing:a,align:"top",maxWidth:this.layoutBounds.width-118,tagName:"ol"});if(t.activeSimScreensProperty.link(e=>{h.children=e.map(e=>_.find(this.screenButtons,t=>t.screen===e))}),this.addChild(new R.DbO(h,{alignBounds:this.layoutBounds,yAlign:"top",topMargin:this.layoutBounds.height/3+20})),Ge.addSoundGenerator(new TE(t,{initialOutputLevel:.5}),{categoryName:"user-interface"}),s.warningNode){const e=s.warningNode;this.addChild(e),e.centerX=this.layoutBounds.centerX,e.bottom=this.layoutBounds.maxY-2}}focusHighlightedScreenButton(){for(let e=0;e{""!==e&&(e+=" "),e+=xt.Z.fillIn(ls.Z.a11y.homeScreenButtonDetailsPattern,{name:t.screen.pdomDisplayNameProperty.value,screenHint:t.screen.descriptionContent})}),e}getVoicingHintContent(){return ls.Z.a11y.homeScreenHintStringProperty}}_defineProperty(CE,"LAYOUT_BOUNDS",new vt.Z(0,0,768,504)),_defineProperty(CE,"TITLE_FONT_FAMILY","Century Gothic, Futura"),Bt.Z.register("HomeScreenView",CE);const IE=CE,xE=ls.Z.a11y.homeStringProperty,kE=R.Ilk.BLACK;class BE extends Rh{constructor(e,t,i,s,n){const r=(0,N.ZP)()({backgroundColorProperty:new ot.Z(kE),name:xE,createKeyboardHelpNode:()=>new $b,instrumentNameProperty:!1},n);super(()=>new tE(t(),i,s,r.tandem.createTandem("model")),t=>new IE(e,t,{warningNode:r.warningNode,tandem:r.tandem.createTandem("view")}),r)}}_defineProperty(BE,"BACKGROUND_COLOR",kE),Bt.Z.register("HomeScreen",BE);const ME=BE;class DE{constructor(){this.backgroundColorProperty=new ot.Z(R.Ilk.BLACK),this.navigationBarDarkProperty=new me.ZP([this.backgroundColorProperty],e=>e.equals(R.Ilk.BLACK)),this.navigationBarFillProperty=new me.ZP([this.navigationBarDarkProperty],e=>e?R.Ilk.WHITE:R.Ilk.BLACK),this.navigationBarTextFillProperty=new me.ZP([this.navigationBarFillProperty],e=>e.equals(R.Ilk.BLACK)?R.Ilk.WHITE:R.Ilk.BLACK)}reset(){this.backgroundColorProperty.reset()}}Bt.Z.register("LookAndFeel",DE);const OE=DE;let LE=!1;class RE{constructor(e){const t=(0,N.ZP)()({windowSize:2e3,memoryLimit:phet.chipper.queryParameters.memoryLimit},e);this.memoryLimit=1048576*t.memoryLimit,this.runningAverage=new vl(t.windowSize),this.lastMemory=0}measure(){if(!window.performance||!window.performance.memory||!window.performance.memory.usedJSHeapSize)return;const e=window.performance.memory.usedJSHeapSize;this.lastMemory=e;const t=this.runningAverage.updateRunningAverage(e);if(this.memoryLimit&&this.runningAverage.isSaturated()&&!LE&&t>this.memoryLimit&&e>.5*this.memoryLimit)throw LE=!0,new Error(`Average memory used (${RE.memoryString(t)}) is above our memoryLimit (${RE.memoryString(this.memoryLimit)}). Current memory: ${RE.memoryString(e)}.`)}static memoryString(e){return Math.ceil(e/1048576)+"MB"}}Bt.Z.register("MemoryMonitor",RE);const NE=RE,ZE=new Map;class qE extends al{constructor(e,t,i){super(e,t,i=(0,N.ZP)()({tandem:ye.Z.OPTIONAL,containerSuffix:"Capsule"},i)),this.element=null}disposeElement(){super.disposeElement(this.element),this.element=null}hasElement(){return null!==this.element}getElement(){if(!this.element){for(var e=arguments.length,t=new Array(e),i=0;i1&&void 0!==arguments[1]&&arguments[1];return this.element=this.createDynamicElement(this.phetioDynamicElementName,e,ye.Z.PHET_IO_ENABLED?this.phetioType.parameterTypes[0]:null),this.notifyElementCreated(this.element),this.element}}k=qE,_defineProperty(qE,"PhetioCapsuleIO",e=>(ZE.has(e)||ZE.set(e,new Hi.Z(`PhetioCapsuleIO<${e.typeName}>`,{valueType:k,documentation:"An array that sends notifications when its values have changed.",parameterTypes:[e],metadataDefaults:{phetioDynamicElementName:null},addChildElement(t,i,s){const n=e.stateObjectToCreateElementArguments(s);return t.create(n,!0)}})),ZE.get(e))),Yi.Z.register("PhetioCapsule",qE);const FE=qE,YE=new Image,HE=Z.Z.createLock(YE);YE.onload=HE,YE.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxlJREFUeNrsW8tx2zAQBWPfpWNupiswc8oxcgVhbr6ZJbADswSWoBJQAtwBVUHoDqhbcmIWnuVEhpfSYkhKILU7s8MR/CgsnoH9AFDUtq1akkRRVMDj5aDpEcZoxuzji1qerKfuYImkJULa8JlWj+4CluTTwJ/F8Ph92Abji2Sm9RNmZ5h2mndT9HU7c6Ks/9qg/iQgZpJ+57I8cel1JNnnD8Zr9zC++qpmGhBlCcqQqDuPV/eg+RSEdY4ySAUprXmeWlmybASd0rYglycVBY/MKIOqJ5tZM1mexZG/vWKUNEBSdZF/aqAzrYHHykkdCrBVh2DfbYCEpQ5hVtJzLb25Jrcb5/NbSIR9mmkY4jcXtunJ+fwHt3suKfqD/0SflmC4bkV71XSpjBUb3hshhZ0Hrm8wifyuRDjyFfRvhAyK8GUnpI2Yp41+GDHTrScbtV/mkKcFL0KakBZY7Yl78ImzF2d6sG5VUQG2YeBqqmTCbe3DU6aG2uHALaX4lI3UWPps7BMqidsQm4JUxZAzNw81gcsJXEPgkh4bEwLbMG3UTBsLqm+f5flAtFGn2QkTR7WtmLih7689+hGfJoFgBqRRB6/VyG1UHzYw7J22vaKvG3BtPE/0VP/PG49GMGjLITrpUxHMbl0D7pvjS6jvqzF6xqeiLNfGs5GG4dgwsVxcxcTVinGRxcdG8WkSCIS06yYNnPEWtGVoSrybEriSKoPsmaeDq3rsqRxcg2WUiyvdvhXv8swoM+2ZiUsGtMVEVv/ArFBWbt15pB9ZnuLTFkbafuFcsLeFfCqCpMdncMqWkkg6ayopBkf9yByMW030JdXZALsHVwSsrHyu1YT4NAkEQtoixOdgpSQSxdz1LYDL0PmGIlwbt4Dbsv204h2sULiCwBkV1k0fro1mioMVEfFpQlqYgQDkFxEISsrxgqYBjZFrox6dNLzDrxm4Sk1wAjSmDLVRlqeQJqTNLhBkxDWoaxSSA7mo7C9vdnnuhAcvsSXYe74iv0bhqd1MjbvCNBNCWIRlH36OffAj+1hW4CexiXDZ3VT6J8AAo7gFqk0pOnsAAAAASUVORK5CYII=";const GE=YE,UE=new Image,zE=Z.Z.createLock(UE);UE.onload=zE,UE.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAttJREFUeNrsW91RwzAMdnu8txsQJqiZoGECyhtvlAmaDSgbZIRuQEYIG4QJCBukb7yFiHPvgisV+fJTJ5XudL24MpI/9Ge7mZRlqUZG24pfas93FadtKpiq8dG8awVjBE0LaM09LW9bwWRkOS2o+NNeo3jaaQ9LrLGPLhRdjSB/hYbvke/TLpQOKTyDGkjwuWTMuekip/nuaQDQ2nxeO8zbVxx1AZjvoMUVbxznQA7bGS66MszX8MSqIOVRqeGkK88aiqdtT3z3bgACoLJzGOerp0Fozayw2yItxVnIR09bWYAdxnJfDPSxuQ2t5y+fAMM8LUSM7pserefvf3JcH5TU8+chp2lTphdK6FQBgjRRAGiBQXEmuLD6wHBqXF8A4xFEYgSeVgoWbt4moLXYcsBlxERYvQ6lTxuspwkJaOfbe87V8fVYytwKZQo/37LlcmLLpNXfW6aCOOEIDP9nI7YWysZjKnEKoahanCFyESIXI3IJIhchcgUipwkbNSJbMG1MmDZuMcUu4bkg/mOYV3DksLEZU67p/LmDHslpUggGABp28Zq1PIbpgMKwt8b2RMHg2thb9QytfEVVsEgdH0unxBnVrZVLMgI0bVVFqspybewNtELxb6y5ctwFUSA1sVFymhQCAe2yQdvBBoLBK2TuCpGLiW1QYcllJ/JhXa5AtlDK6LF1L/sC7YkppxuMBUhXv2DuUGYEaFrCU3La+EHbjxwL9k+zXJpbTeQMTsMaI01nTjTFd8zF3CInE1hju25gd2PQuF35UHcTktOkEAhowyeXnBYjjWKE5Ja1YV+Ia+POcKugbYjtEWbQ0iPQXGzcSXhKThPQLqYQPCCFICYS78qjNXJtTLoALWH+4Uyd6aUIB2pko4SngCagDa4QQPMXCjw4BvJDZXf6gvD8EBycKAVPg37lTbBgERz566npvZ4FDxZgv+/F11+SDRX/PP3SKDM7ixwefgQYAIqW2LtFfuBbAAAAAElFTkSuQmCC";const WE=UE;class QE extends R.BET{constructor(e,t,i){const s=(0,N.ZP)()({fill:"white",highlightWidth:1,pickable:!1},i);s.spacing=e;const n=s.fill,r=R.Ilk.toColor(n).withAlpha(0),o={fill:new R.oas(0,0,0,t).addColorStop(0,r).addColorStop(.5,n).addColorStop(1,r)},a=new R.AeJ(0,0,s.highlightWidth,t,o),h=new R.AeJ(0,0,s.highlightWidth,t,o);s.children=[a,h],super(s)}}Bt.Z.register("HighlightNode",QE);const XE=QE;class KE extends((0,R.CHP)(R.NBX)){constructor(e,t,i){const s=(0,N.ZP)()({cursor:"pointer",listener:null,highlightExtensionWidth:0,highlightExtensionHeight:0,highlightCenterOffsetX:0,highlightCenterOffsetY:0,pointerAreaDilationX:0,pointerAreaDilationY:0,enabledPropertyOptions:{phetioFeatured:!1},disabledOpacity:R.iaM.DISABLED_OPACITY,tagName:"button"},i),n=function(t){return new XE(e.width+s.highlightExtensionWidth,e.height+s.highlightExtensionHeight,{centerX:e.centerX+s.highlightCenterOffsetX,centerY:e.centerY+s.highlightCenterOffsetY,fill:t,pickable:!1})},r=n("white"),o=n("black");s.children=[e,r,o],super(s),this.buttonModel=new si(s);const a=new jt(this.buttonModel);this.interactionStateProperty=a,Ze.Z.multilink([a,t,this.buttonModel.enabledProperty],(e,t,i)=>{const s=!t.equals(R.Ilk.BLACK);r.visible=!s&&i&&(e===Jt.OVER||e===Jt.PRESSED),o.visible=s&&i&&(e===Jt.OVER||e===Jt.PRESSED)}),this.buttonModel.enabledProperty.link(e=>{this.cursor=e?s.cursor:null}),this._pressListener=this.buttonModel.createPressListener({tandem:s.tandem.createTandem("pressListener")}),this.addInputListener(this._pressListener),this.mouseArea=this.touchArea=Nt.bn.bounds(this.bounds.dilatedXY(s.pointerAreaDilationX,s.pointerAreaDilationY));const h=R.YiU.getOuterLineWidthFromNode(this);this.focusHighlight=Nt.bn.bounds(this.bounds.shiftedY(-h))}isPDOMClicking(){return this._pressListener.pdomClickingProperty.get()}}Bt.Z.register("JoistButton",KE);const JE=ls.Z.a11y.keyboardHelp.tabToGetStartedStringProperty;class jE extends os{constructor(e,t,i){const s=(0,N.ZP)()({titleAlign:"center",fill:"rgb( 214, 237, 249 )",ySpacing:15,phetioReadOnly:!0,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:ls.Z.keyboardShortcuts.titleStringProperty,addAriaLabelledByFromTitle:!1},i),n=new R.NBX({tagName:"div"}),r=s.tandem.createTandem("content"),o=[];e.forEach(e=>{const t=r.createTandem(e.tandem.name),i=e.createKeyboardHelpNode(t);o.push(i)});const a=new R.JxC(ls.Z.keyboardShortcuts.titleStringProperty,{font:new Et({weight:"bold",size:24}),maxWidth:670,tagName:"h1",innerContent:ls.Z.a11y.keyboardHelp.keyboardShortcutsStringProperty}),h=new _E,l=new R.SHm({children:[a,h],spacing:5,tagName:"div"});s.title=l,super(n,s);const d=Ze.Z.multilink([t,this.isShowingProperty],(t,i)=>{const s=o[e.indexOf(t)];i&&(n.children=[s])});this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:a,otherElementName:R.Grz.PRIMARY_SIBLING}),this.disposeKeyboardHelpDialog=()=>{d.dispose(),h.dispose(),a.dispose(),o.forEach(e=>e.dispose()),o.length=0,n.dispose()}}dispose(){this.disposeKeyboardHelpDialog(),super.dispose()}}class _E extends((0,R.KwY)(R.NBX)){constructor(e){const t=(0,N.ZP)()({readingBlockNameResponse:JE},e);super();const i=Jb.labelWithIcon(ls.Z.keyboardShortcuts.toGetStartedStringProperty,Nb.tab({disposer:this}),{labelInnerContent:JE,iconOptions:{tagName:"p"}});i.disposer=this;const s=new R.BET({children:[i.icon,i.label],spacing:4,disposer:this});this.addChild(s),this.mutate(t)}}Bt.Z.register("KeyboardHelpDialog",jE);const $E=ls.Z.a11y.keyboardHelp.keyboardShortcutsStringProperty;class ev extends KE{constructor(e,t,i,s){const n=(0,N.ZP)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:2,visiblePropertyOptions:{phetioFeatured:!0},innerContent:$E,voicingNameResponse:$E},s);let r=null;n.listener=()=>{r.getElement().show()};const o=new R.Eep(WE,{scale:.3/WE.height*67*.85,pickable:!1});super(o,i,n),r=new FE(i=>new jE(e,t,{tandem:i,focusOnHideNode:this}),[],{tandem:n.tandem.createTandem("keyboardHelpDialogCapsule"),phetioType:FE.PhetioCapsuleIO(os.DialogIO)}),i.link(e=>{o.image=e.equals(R.Ilk.BLACK)?WE:GE})}}Bt.Z.register("KeyboardHelpButton",ev);const tv=ev,iv=Math.PI/2.7,sv=-1*iv;class nv extends KE{constructor(e,t,i){const s=(0,N.ZP)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:0,enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.queryParameters.supportsVoicing),visiblePropertyOptions:{phetioFeatured:!0},innerContent:ls.Z.a11y.soundToggle.labelStringProperty,voicingNameResponse:ls.Z.a11y.soundToggle.labelStringProperty},i);s.listener=()=>e.set(!e.get());const n=new R.NBX,r=new R.NBX,o=new R.AeJ(0,0,24.86,22,{fill:"transparent"});n.addChild(o),r.addChild(o);const a=new R.y$t((new Nt.bn).moveTo(9.8252,0).lineTo(4.519592,(16.94-5.929)/2).lineTo(1,(16.94-5.929)/2).arc(1,(16.94-5.929)/2+1,1,1.5*Math.PI,Math.PI,!0).lineToRelative(0,5.929-2).arc(1,10.4345,1,Math.PI,.5*Math.PI,!0).lineToRelative(4.519592-1,0).lineTo(9.8252,16.94).lineTo(9.8252,0).close(),{stroke:"black",lineWidth:1.5,lineJoin:"round",centerY:r.centerY,left:0});n.addChild(a),r.addChild(a);const h=new R.y$t((new Nt.bn).moveTo(0,0).lineTo(16.94*.52,16.94*.52).moveTo(0,16.94*.52).lineTo(16.94*.52,0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:r.width,centerY:r.centerY});r.addChild(h);const l=new R.y$t((new Nt.bn).arc(0,0,10.6722,iv,sv,!0).moveToPoint(new Ys.Z(6.776,0).rotated(iv)).arc(0,0,6.776,iv,sv,!0).moveToPoint(new Ys.Z(6.776-16.94*.23,0).rotated(iv)).arc(0,0,6.776-16.94*.23,iv,sv,!0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:n.width,centerY:n.centerY});n.addChild(l),super(new zr(JP.anyOutputEnabledProperty,[{value:!0,createNode:()=>n},{value:!1,createNode:()=>r}],{maxHeight:18.7}),t,s),this.addLinkedElement(e,{tandem:s.tandem.createTandem("property")});const d=new Cc;e.lazyLink(e=>{s.supportsAudioPreferences&&(this.setPDOMAttribute("aria-pressed",e),d.alert=e?ls.Z.a11y.soundToggle.alert.simSoundOnStringProperty:ls.Z.a11y.soundToggle.alert.simSoundOffStringProperty,this.alertDescriptionUtterance(d),R.LY3.voicingFullyEnabledProperty.value&&R.LY3.speakIgnoringEnabled(d))}),this.setPDOMAttribute("aria-pressed",e.get()),JP.anySubcomponentEnabledProperty.link(e=>{this.enabled=e}),t.link(e=>{const t=e.equals(R.Ilk.BLACK)?"white":"black";a.stroke=t,h.stroke=t,l.stroke=t})}}Bt.Z.register("NavigationBarAudioToggleButton",nv);const rv=nv,ov=new Nt.bn("M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z").makeImmutable();class av extends KE{constructor(e,t,i){const s=(0,N.ZP)()({listener:()=>{const e=r.getElement();e.show(),e.focusSelectedTab()},highlightExtensionWidth:8.6,highlightExtensionHeight:10,innerContent:ls.Z.preferences.titleStringProperty,positionInPDOM:!0,voicingNameResponse:ls.Z.preferences.titleStringProperty,visiblePropertyOptions:{phetioFeatured:!0}},i),n=new R.y$t(ov,{maxWidth:21.25});super(n,t,s);const r=new FE(t=>new fh(e,{tandem:t,focusOnHideNode:this}),[],{tandem:s.tandem.createTandem("preferencesDialogCapsule"),phetioType:FE.PhetioCapsuleIO(os.DialogIO)});t.link(e=>{n.fill=e.equals(R.Ilk.BLACK)?"white":"black"}),this.setPDOMAttribute("aria-haspopup",!0)}}Bt.Z.register("NavigationBarPreferencesButton",av);const hv=av;class lv extends R.BET{constructor(e,t,i){const s=(0,N.ZP)()({align:"center",spacing:2,tandem:ye.Z.REQUIRED},i),n=[];if(e.preferencesModel.shouldShowDialog()){const i=new hv(e.preferencesModel,t,{tandem:s.tandem.createTandem("preferencesButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});n.push(i)}const r=e.preferencesModel.supportsAudioPreferences(),o=new rv(JP.audioEnabledProperty,t,{tandem:s.tandem.createTandem("audioToggleButton"),pointerAreaDilationX:1,pointerAreaDilationY:.15,supportsAudioPreferences:r});if(r&&n.push(o),e.hasKeyboardHelpContent){const i=new tv(e.screens,e.selectedScreenProperty,t,{tandem:s.tandem.createTandem("keyboardHelpButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});phet.chipper.queryParameters.supportsInteractiveDescription&&!ib.Z.mobileSafari&&n.push(i)}s.children=n,super(_.omit(s,"tandem"))}}Bt.Z.register("A11yButtonsHBox",lv);const dv=lv,cv=new Nt.bn("M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z").makeImmutable(),uv=ls.Z.a11y.homeScreenDescriptionStringProperty;class pv extends KE{constructor(e,t,i,s){const n=(0,N.ZP)()({highlightExtensionWidth:4,containerTagName:"li",descriptionContent:uv,appendDescription:!0,voicingHintResponse:uv},s),r=new R.y$t(cv);r.setScaleMagnitude(.48*e/r.height*.85);const o=new R.AeJ(0,0,r.width/.85+12,e);r.center=o.center;const a=new R.NBX({children:[o,r]}),h=new zi.Z,l=n.listener;n.listener=()=>{l&&l(),this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:h})},super(a,t,n);const d=R.YiU.getOuterLineWidthFromNode(this);this.focusHighlight=Nt.bn.bounds(this.bounds.setMaxY(this.bounds.maxY-d/2)),Ze.Z.multilink([this.interactionStateProperty,t],(e,t)=>{t.equals(R.Ilk.BLACK)?r.fill=e===Jt.PRESSED?"gray":"white":r.fill=e===Jt.PRESSED?"#444":"#222"}),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),i.link(e=>{this.innerContent=e,this.voicingNameResponse=e})}}Bt.Z.register("HomeButton",pv);const mv=e=>e.width+8;class gv extends((0,R.CHP)(R.NBX)){constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({cursor:"pointer",phetioDocumentation:`Button in the navigation bar that selects the '${i.tandem.name}' screen`,maxButtonWidth:null,tagName:"button",containerTagName:"li",descriptionContent:i.descriptionContent,appendDescription:!0,voicingHintResponse:i.descriptionContent},r);super(),this.screen=i,i.pdomDisplayNameProperty.link(e=>{this.innerContent=e,this.voicingNameResponse=e});const a=new R.NBX({children:[i.navigationBarIcon],maxHeight:.625*n,tandem:o.tandem.createTandem("icon"),pdomVisible:!1}),h=new R.AeJ(0,0,a.width,a.height),l=new R.NBX({children:[a,h]}),d=new R.xvT(i.nameProperty,{font:new Et(10),tandem:o.tandem.createTandem("text"),stringPropertyOptions:{phetioReadOnly:!0}}),c=new R.SHm({children:[l,d],pickable:!1,usesOpacity:!0,maxHeight:n}),u=new R.AeJ({rectBounds:c.bounds}),p=mv(u),m=new XE(p,u.height,{center:c.center,fill:"white"}),g=new XE(p,u.height,{center:c.center,fill:"black"}),y=new me.ZP([t],e=>e===i);this.buttonModel=new si({listener:()=>{t.value!==i&&this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null}),t.value=i},tandem:o.tandem,enabledPropertyOptions:{phetioFeatured:!1}});const A=this.buttonModel.createPressListener({tandem:o.tandem.createTandem("pressListener")});this.addInputListener(A),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),Ze.Z.multilink([y,this.buttonModel.looksPressedProperty,this.buttonModel.looksOverProperty,e,this.buttonModel.enabledProperty],(e,t,s,n,r)=>{const o=!n.equals(R.Ilk.BLACK),a=o?"black":Pi.BUTTON_YELLOW,l=o?"gray":"white";d.fill=e?a:l,c.opacity=e?1:t?.65:.5,m.visible=!o&&r&&(s||t),g.visible=o&&r&&(s||t),"black"===i.showScreenIconFrameForNavigationBarFill&&n.equals(R.Ilk.BLACK)?h.stroke=Pi.SCREEN_ICON_FRAME:"white"===i.showScreenIconFrameForNavigationBarFill&&n.equals(R.Ilk.WHITE)?h.stroke="black":h.stroke="transparent"}),this.buttonModel.enabledProperty.link(e=>{this.cursor=e?o.cursor:null});const f=()=>{c.spacing=Ve.Z.clamp(12-d.height,0,3),u.setRectBounds(c.bounds),m.spacing=g.spacing=mv(u),m.center=g.center=c.center};c.boundsProperty.lazyLink(f),d.boundsProperty.link(f),this.children=[c,u,m,g];const P=o.maxButtonWidth&&this.width>o.maxButtonWidth;d.maxWidth=P?a.maxWidth=o.maxButtonWidth-(this.width-c.width):this.width;const b=R.YiU.getOuterLineWidthFromNode(this);this.focusHighlight=Nt.bn.bounds(this.bounds.withMinY(this.bounds.minY-b/2)),this.mutate(o)}}Bt.Z.register("NavigationBarScreenButton",gv);const yv=gv;class Av extends R.y$t{constructor(e){const t=new Nt.bn;for(let i=0;i<3;i++)t.circle(0,3.543*i*2.5,2.5);super(t,e)}}Bt.Z.register("KebabMenuIcon",Av);const fv=Av;var Pv=i(8377);const bv=new Nt.bn("M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z").makeImmutable(),Ev=new R.y$t(bv,{fill:"rgba(0,0,0,0.7)",maxWidth:15.5}),vv=Ev.width+2;class wv extends((0,R.pL8)((0,R.CHP)(R.NBX))){constructor(e,t,i,s,n,r){const o=(0,N.ZP)()({separatorBefore:!1,checkedProperty:null,handleFocusCallback:null,textFill:"black",cursor:"pointer",tandem:ye.Z.OPTIONAL,phetioDocumentation:"Item buttons shown in a popup menu",phetioEventType:ei.Z.USER,tagName:"button",containerTagName:"li",containerAriaRole:"none",ariaRole:"menuitem",positionInPDOM:!0},r);super(),n&&this.setVisibleProperty(R.U2N);const a=e=>{this.innerContent=e,this.voicingNameResponse=e};t.link(a),this.present=s;const h=new R.xvT(t,{font:new Et(18),fill:o.textFill,maxWidth:400}),l=new R.AeJ({cornerRadius:5});h.boundsProperty.link(e=>{this.localMinimumWidth=e.width+2+5+vv,l.rectHeight=e.height+3+3}),this.localPreferredWidthProperty.link(e=>{null===e&&(e=this.localMinimumWidth),e&&(l.rectWidth=e)}),this.addChild(l),this.addChild(h),R.bGt.create(this,[l,h],(e,t)=>{t.left=e.left+2+vv,t.centerY=e.centerY}),this.addInputListener({enter:()=>{l.fill="#a6d2f4"},exit:()=>{l.fill=null}}),this.addInputListener(new R.eMb({tandem:o.tandem.createTandem("inputListener"),fire:t=>{e(t),i(t),o.handleFocusCallback&&o.handleFocusCallback(t)}})),this.separatorBefore=o.separatorBefore;let d=null;if(o.checkedProperty){const e=new R.NBX({children:[Ev],right:h.left-2,centerY:h.centerY});d=t=>{e.visible=t},o.checkedProperty.link(d),this.addChild(e)}this.mutate(o),this.disposem*nuItem=()=>{o.checkedProperty&&d&&o.checkedProperty.hasListener(d)&&o.checkedProperty.unlink(d),t.hasListener(a)&&t.unlink(a),h.dispose()}}dispose(){this.disposem*nuItem(),super.dispose()}}Je.register("MenuItem",wv);class Vv extends R.SHm{constructor(e,t){const i={font:(t=(0,N.ZP)()({titleFont:new Et({size:18,weight:"bold"}),textFont:new Et(16),align:"left",spacing:1,maxWidth:550},t)).textFont,align:"left",lineWrap:t.maxWidth,tagName:"p"},s=[];s.push(new R.JxC(ls.Z.credits.titleStringProperty,{font:t.titleFont,tagName:"h2"}));const n=(e,t)=>new me.ZP([e],e=>xt.Z.format(e,`‪${t}‬`));if(e.leadDesign){const t=n(ls.Z.credits.leadDesignStringProperty,e.leadDesign);s.push(new R.yhY(t,i))}if(e.softwareDevelopment){const t=n(ls.Z.credits.softwareDevelopmentStringProperty,e.softwareDevelopment);s.push(new R.yhY(t,i))}if(e.team){const t=n(ls.Z.credits.teamStringProperty,e.team);s.push(new R.yhY(t,i))}if(e.contributors){const t=n(ls.Z.credits.contributorsStringProperty,e.contributors);s.push(new R.yhY(t,i))}if(e.qualityAssurance){const t=n(ls.Z.credits.qualityAssuranceStringProperty,e.qualityAssurance);s.push(new R.yhY(t,i))}if(e.graphicArts){const t=n(ls.Z.credits.graphicArtsStringProperty,e.graphicArts);s.push(new R.yhY(t,i))}if(e.soundDesign){const t=n(ls.Z.credits.soundDesignStringProperty,e.soundDesign);s.push(new R.yhY(t,i))}if(e.thanks){s.length>0&&s.push(new R.mE$(13)),s.push(new R.JxC(ls.Z.credits.thanksStringProperty,{font:t.titleFont,tagName:"h2"}));const n=new R.yhY(e.thanks,i);n.innerContent=e.thanks,s.push(n)}t.children=s,super(t),this.disposeCreditsNode=()=>{s.forEach(e=>{e.dispose&&e.dispose()})}}dispose(){this.disposeCreditsNode(),super.dispose()}}Bt.Z.register("CreditsNode",Vv);const Sv=JSON.stringify(window.phet&&phet.chipper?phet.chipper.packageObject:{name:"placeholder"}),Tv=JSON.parse(Sv);Bt.Z.register("packageJSON",Tv);const Cv=Tv;class Iv extends Le.Z{}_defineProperty(Iv,"UP_TO_DATE",new(B=Iv)),_defineProperty(Iv,"OUT_OF_DATE",new B),_defineProperty(Iv,"CHECKING",new B),_defineProperty(Iv,"OFFLINE",new B),_defineProperty(Iv,"UNCHECKED",new B),_defineProperty(Iv,"enumeration",new Oe.Z(B,{phetioDocumentation:"Describes the states that can occur during an Update check"})),Bt.Z.register("UpdateState",Iv);const xv=phet.preloads.chipper.SimVersion,kv=Cv.name,Bv=xv.parse(Cv.version,phet.chipper.buildTimestamp),Mv="https:"===document.location.protocol?"https:":"http:";const Dv=new class{constructor(){this.stateProperty=new lt(Iv.UNCHECKED),this.latestVersion=null,this.ourVersion=Bv,this.timeoutCallback=this.timeout.bind(this),this.areUpdatesChecked="phet"===phet.chipper.brand&&!phet.chipper.isApp&&phet.chipper.queryParameters.yotta,this.updateURL=`http://phet.colorado.edu/html-sim-update?simulation=${encodeURIComponent(kv)}&version=${encodeURIComponent(Bv.toString())}&buildTimestamp=${encodeURIComponent(""+phet.chipper.buildTimestamp)}`,this.timeoutId=-1}clearTimeout(){window.clearTimeout(this.timeoutId)}setTimeout(){this.timeoutId=window.setTimeout(this.timeoutCallback,15e3)}resetTimeout(){this.stateProperty.value===Iv.CHECKING&&(this.clearTimeout(),this.setTimeout())}timeout(){this.stateProperty.value=Iv.OFFLINE}check(){if(!this.areUpdatesChecked||this.stateProperty.value!==Iv.UNCHECKED&&this.stateProperty.value!==Iv.OFFLINE)return;if(this.ourVersion.isSimNotPublished)return void(this.stateProperty.value=Iv.UP_TO_DATE);const e=new XMLHttpRequest;"withCredentials"in e&&(this.stateProperty.value=Iv.CHECKING,this.setTimeout(),e.onload=()=>{this.clearTimeout();try{const t=JSON.parse(e.responseText);t.error?(console.log("Update check failure: "+t.error),this.stateProperty.value=Iv.OFFLINE):(this.updateURL&&(this.updateURL=t.updateURL),this.latestVersion=xv.parse(t.latestVersion,t.buildTimestamp),"out-of-date"===t.state?this.stateProperty.value=Iv.OUT_OF_DATE:"up-to-date"===t.state?this.stateProperty.value=Iv.UP_TO_DATE:(console.log("Failed to get proper state: "+t.state),this.stateProperty.value=Iv.OFFLINE))}catch(t){this.stateProperty.value=Iv.OFFLINE}},e.onerror=()=>{this.clearTimeout(),this.stateProperty.value=Iv.OFFLINE},e.open("post",Mv+"//phet.colorado.edu/services/check-html-updates",!0),e.send(JSON.stringify({api:"1.0",simulation:kv,locale:phet.joist.sim.locale,currentVersion:this.ourVersion.toString(),buildTimestamp:phet.chipper.buildTimestamp})))}};Bt.Z.register("updateCheck",Dv);const Ov=Dv;class Lv extends R.NBX{constructor(e){const t=(0,N.ZP)()({diameter:15,speed:1,numberOfElements:16,elementFactory:Lv.rectangleFactory,activeColor:"rgba( 0, 0, 0, 1 )",inactiveColor:"rgba( 0, 0, 0, 0.15 )"},e);super(t),this.indicatorRotation=2*Math.PI,this.angleDelta=2*Math.PI/t.numberOfElements,this.activeColorProperty=new R.M4p(t.activeColor),this.inactiveColorProperty=new R.M4p(t.inactiveColor),this.speed=t.speed,this.elements=[];let i=0;for(let s=0;st?`${e}`:e),i={url:Ov.updateURL},s=new R.Hof(t,{links:i,font:Zv});return new R.BET((0,us.Z)({spacing:8,maxWidth:550,children:[new R.y$t(Rv,{fill:"#E87600",scale:.03}),s],tagName:"div"},e))},createOutOfDateDialogNode:function(e,t,i,s){const n=new me.ZP([ls.Z.updates.newVersionAvailableStringProperty],e=>xt.Z.format(e,i)),r=new me.ZP([ls.Z.updates.yourCurrentVersionStringProperty],e=>xt.Z.format(e,t));return new R.SHm((0,us.Z)({spacing:15,maxWidth:550,children:[new R.SHm({spacing:5,align:"left",children:[new R.JxC(n,{font:new Et(16),fontWeight:"bold"}),new R.JxC(r,{font:Zv})]}),new R.BET({spacing:25,children:[new Nv(ls.Z.updates.getUpdateStringProperty,{visibleProperty:R.U2N,baseColor:"#6f6",font:Zv,listener:function(){(0,R.MwI)(Ov.updateURL)}}),new Nv(ls.Z.updates.noThanksStringProperty,{baseColor:"#ddd",font:Zv,listener:function(){e.hide()}})]})]},s))},createOfflineNode:function(e){return new R.BET((0,us.Z)({spacing:0,maxWidth:550,children:[new R.mE$(20),new R.JxC(ls.Z.updates.offlineStringProperty,{font:new Et(e.big?16:14),fontWeight:e.big?"bold":"normal"})]},e))}};Bt.Z.register("UpdateNodes",qv);const Fv=qv;class Yv extends os{constructor(e,t,i,s,n){const r=(0,N.ZP)()({xSpacing:26,topMargin:26,bottomMargin:26,leftMargin:26,phetioReadOnly:!0,phetioDynamicElement:!0,tandem:ye.Z.REQUIRED},n),o=phet.brand.Brand;let a=[];const h=new R.JxC(e,{font:new Et(32),maxWidth:550,tagName:"h1"});a.push(h);const l=new me.ZP([ls.Z.versionPatternStringProperty],e=>xt.Z.format(e,t));a.push(new R.JxC(l,{font:new Et(16),maxWidth:550,tagName:"p"})),phet.chipper.buildTimestamp&&a.push(new R.JxC(phet.chipper.buildTimestamp,{font:new Et(10.4),maxWidth:550,tagName:"p",innerContent:phet.chipper.buildTimestamp}));let d=null,c=null,u=null;if(Ov.areUpdatesChecked){const e={left:0,top:0},t=Fv.createCheckingNode(e),i=Fv.createUpToDateNode(e),s=Fv.createOutOfDateAboutNode(e),n=Fv.createOfflineNode(e);d=t.stepListener,c=e=>{t.visible=e===Iv.CHECKING,i.visible=e===Iv.UP_TO_DATE,s.visible=e===Iv.OUT_OF_DATE,n.visible=e===Iv.OFFLINE,t.pdomVisible=t.visible,i.pdomVisible=i.visible,s.pdomVisible=s.visible,n.pdomVisible=n.visible},u=new R.NBX({children:[t,i,s,n],maxWidth:550,visibleProperty:R.U2N}),a.push(u)}const p=[];if(o.name&&p.push(new R.yhY(o.name,{font:new Et(16),supScale:.5,supYOffset:3,maxWidth:550,tagName:"h2",innerContent:o.name})),o.copyright){const e=phet.chipper.buildTimestamp?phet.chipper.buildTimestamp.split("-")[0]:(new Date).getFullYear(),t=xt.Z.fillIn(o.copyright,{year:e});p.push(new R.JxC(t,{font:new Et(12),maxWidth:550,tagName:"p",innerContent:t}))}let m=null;o.additionalLicenseStatement&&(m=new R.yhY(o.additionalLicenseStatement,{font:new Et(10.4),fill:"gray",align:"left",maxWidth:550,tagName:"p",innerContent:o.additionalLicenseStatement}),p.push(m)),p.length>0&&(a.push(new R.mE$(15)),a=a.concat(p));let g=null;"phet"!==o.id&&"phet-io"!==o.id||(a.push(new R.mE$(15)),g=new Vv(i,{titleFont:new Et({size:16,weight:"bold"}),textFont:new Et(12),maxWidth:550}),a.push(g));const y=[],A=o.getLinks(Cv.name,s);if(A&&A.length>0){y.push(new R.mE$(15));for(let t=0;tt?`${i}`:`${i}: ${e.url}`);y.push(new R.Hof(i,{links:{url:e.url},font:new Et(16),tandem:r.tandem.createTandem(e.tandemName),phetioReadOnly:!0}))}const e=new R.SHm({spacing:6,align:"left",children:y,maxWidth:550});a.push(e)}super(new R.SHm({align:"left",spacing:6,children:a,tagName:"div"}),r),this.updateStepListener=d,this.updateVisibilityListener=c,this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherElementName:R.Grz.PRIMARY_SIBLING,otherNode:h}),this.disposeAboutDialog=()=>{g&&g.dispose(),m&&m.dispose(),y.forEach(e=>e.dispose&&e.dispose())}}show(){Ov.areUpdatesChecked&&!this.isShowingProperty.value&&(Ov.resetTimeout(),Ov.stateProperty.value!==Iv.OFFLINE&&Ov.stateProperty.value!==Iv.UNCHECKED||Ov.check(),this.updateStepListener&&Ep.Z.addListener(this.updateStepListener),this.updateVisibilityListener&&Ov.stateProperty.link(this.updateVisibilityListener)),super.show()}hide(){this.isShowingProperty.value&&(super.hide(),Ov.areUpdatesChecked&&(this.updateVisibilityListener&&Ov.stateProperty.unlink(this.updateVisibilityListener),this.updateStepListener&&Ep.Z.removeListener(this.updateStepListener)))}dispose(){this.disposeAboutDialog(),super.dispose()}}Bt.Z.register("AboutDialog",Yv);class Hv{static generateScreenshotAtIncreasedResolution(e,t){const i=document.createElement("canvas"),s=i.getContext("2d"),n=R.cQK.backingScale(s)*t;i.width=e.display.width*n,i.height=e.display.height*n,s.scale(n,n),s.fillStyle=e.display.domElement.style.backgroundColor,s.fillRect(0,0,i.width,i.height);const r=new R.LdF(i,s);return e.rootNode.renderToCanvasSubtree(r,wt.Z.scaling(n)),i}static renderAtScale(e,t){const i=document.createElement("canvas"),s=i.getContext("2d");return i.width=e.width*t,i.height=e.height*t,s.scale(t,t),s.drawImage(e,0,0),i}static generateScreenshot(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"image/png";const i=Hv.generateScreenshotAtIncreasedResolution(e,2);return Hv.renderAtScale(i,.5).toDataURL(t)}}Bt.Z.register("ScreenshotGenerator",Hv);const Gv=Hv;class Uv extends os{constructor(e){const t={centerX:0,centerY:0,big:!0},i=Fv.createCheckingNode(t),s=Fv.createUpToDateNode(t),n=new R.NBX({tagName:"div"}),r=Fv.createOfflineNode(t);super(new R.NBX({children:[i,s,n,r],tagName:"div"}),e);const o=()=>{const e=Ov.latestVersion?Ov.latestVersion.toString():"x.x.xx",i=Ov.ourVersion.toString();n.children=[Fv.createOutOfDateDialogNode(this,i,e,t)]};o(),this.updateStepListener=i.stepListener,this.updateVisibilityListener=e=>{e===Iv.OUT_OF_DATE&&o(),i.visible=e===Iv.CHECKING,s.visible=e===Iv.UP_TO_DATE,n.visible=e===Iv.OUT_OF_DATE,r.visible=e===Iv.OFFLINE,i.pdomVisible=i.visible,s.pdomVisible=s.visible,n.pdomVisible=n.visible,r.pdomVisible=r.visible}}show(){Ov.areUpdatesChecked&&!this.isShowingProperty.value&&(Ov.resetTimeout(),Ov.stateProperty.value!==Iv.OFFLINE&&Ov.stateProperty.value!==Iv.UNCHECKED||Ov.check(),Ep.Z.addListener(this.updateStepListener),Ov.stateProperty.link(this.updateVisibilityListener)),super.show()}hide(){this.isShowingProperty.value&&(super.hide(),Ov.areUpdatesChecked&&(Ov.stateProperty.unlink(this.updateVisibilityListener),Ep.Z.removeListener(this.updateStepListener)))}}Bt.Z.register("UpdateDialog",Uv);class zv extends R.NBX{constructor(e,t){const i="phet"===phet.chipper.brand,s=phet.chipper.isApp,n=(0,N.ZP)()({showPopup:Ji("phet.joist.sim.showPopup"),hidePopup:Ji("phet.joist.sim.hidePopup"),phetioType:zv.PhetMenuIO,phetioState:!1,phetioDocumentation:"This menu is displayed when the PhET button is pressed.",visiblePropertyOptions:{phetioReadOnly:!0},tagName:"ul",ariaRole:"menu"},t);super(),_defineProperty(this,"isShowing",!1),this.focusOnHideNode=null,this.showPopup=n.showPopup,this.hidePopup=n.hidePopup;const r=new FE(t=>new Yv(e.simNameProperty,e.version,e.credits,e.locale,{tandem:t,focusOnHideNode:this.focusOnHideNode}),[],{tandem:n.tandem.createTandem("aboutDialogCapsule"),phetioType:FE.PhetioCapsuleIO(os.DialogIO)}),o=()=>this.restoreFocus();let a=null;const h=[{textStringProperty:ls.Z.menuItem.phetWebsiteStringProperty,present:i,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{phet.chipper.isFuzzEnabled()||(0,R.MwI)("https://phet.colorado.edu/"+e.locale)},options:{handleFocusCallback:o}},{textStringProperty:ls.Z.menuItem.reportAProblemStringProperty,present:i&&!s,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{if(!phet.chipper.isFuzzEnabled()){const t=`https://phet.colorado.edu/files/troubleshooting/?sim=${encodeURIComponent(e.simNameProperty.value)}&version=${encodeURIComponent(`${e.version} ${phet.chipper.buildTimestamp?phet.chipper.buildTimestamp:"(unbuilt)"}`)}&url=${encodeURIComponent(window.location.href)}&dependencies=${encodeURIComponent(JSON.stringify({}))}`;(0,R.MwI)(t)}},options:{handleFocusCallback:o}},{textStringProperty:new F.Z("QR code"),present:phet.chipper.queryParameters.qrCode,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{phet.chipper.isFuzzEnabled()||(0,R.MwI)(`http://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(window.location.href)}&size=220x220&margin=0`)},options:{handleFocusCallback:o}},{textStringProperty:ls.Z.menuItem.getUpdateStringProperty,present:Ov.areUpdatesChecked,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{a||(a=new Uv({focusOnHideNode:this.focusOnHideNode})),a.show()},options:{textFill:new me.ZP([Ov.stateProperty],e=>e===Iv.OUT_OF_DATE?"#0a0":"#000")}},{textStringProperty:ls.Z.menuItem.screenshotStringProperty,present:!s,shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>{const t=Gv.generateScreenshot(e);if(window.Blob&&new window.Blob){const i="data:image/png;base64,",s=t.slice(i.length),n=window.atob(s),r=new window.Uint8Array(n.length);for(let e=0;e{phet.chipper.isFuzzEnabled()||R.ITT.toggleFullScreen(e.display)},options:{checkedProperty:R.ITT.isFullScreenProperty,tandem:n.tandem.createTandem("fullScreenMenuItem"),phetioDocumentation:"This menu item requests full-screen access for the simulation display.",visiblePropertyOptions:{phetioFeatured:!0},handleFocusCallback:o}},{textStringProperty:ls.Z.menuItem.aboutStringProperty,present:!0,shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>r.getElement().show(),options:{separatorBefore:i,tandem:n.tandem.createTandem("aboutMenuItem"),phetioDocumentation:"This menu item shows a dialog with information about the simulation.",visiblePropertyOptions:{phetioFeatured:!0}}}].filter(e=>e.present||e.options&&e.options.tandem).map(e=>new wv(n.closeCallback,e.textStringProperty,e.callback,e.present,e.shouldBeHiddenWhenLinksAreNotAllowed,e.options)).filter(e=>e.present);this.items=h;const l=new R.SHm({stretch:!0,spacing:2,children:_.flatten(h.map(e=>e.separatorBefore?[new R.qYj({stroke:"gray"}),e]:[e]))}),d=new R.y$t(null,{fill:"white",stroke:"black"});l.localBoundsProperty.link(()=>{l.left=5,l.top=5}),l.boundsProperty.link(e=>{d.shape=Wv(e.width+10,e.height+10)}),this.addChild(d),this.addChild(l);const c={keydown:e=>{const t=e.domEvent,i=this.items[0],s=this.items[this.items.length-1],r=R.ntP.getEventCode(t);if(R.ntP.isArrowKey(t)&&t.preventDefault(),r===R.ntP.KEY_DOWN_ARROW){(s.focused?i:R.eDZ.getNextFocusable()).focus()}else if(r===R.ntP.KEY_UP_ARROW){(i.focused?s:R.eDZ.getPreviousFocusable()).focus()}else r!==R.ntP.KEY_ESCAPE&&r!==R.ntP.KEY_TAB||(n.closeCallback(),this.restoreFocus());e.pointer.reserveForKeyboardDrag()}};this.addInputListener(c);const u=e=>{e&&!_.includes(e.trail.nodes,this)&&this.hide()};R.IKS.pdomFocusProperty.lazyLink(u),this.mutate(n),this.disposePhetMenu=()=>{this.removeInputListener(c),R.IKS.pdomFocusProperty.unlink(u)}}show(){this.isShowing||(R.IKS.pdomFocus=null,this.showPopup(this,!0),this.isShowing=!0)}hide(){this.isShowing&&(this.isShowing=!1,this.hidePopup(this,!0))}dispose(){this.disposePhetMenu(),_.each(this.items,e=>e.dispose()),super.dispose()}setFocusOnHideNode(e){this.focusOnHideNode=e}restoreFocus(){const e=this.focusOnHideNode||R.IKS.pdomFocusedNode;e&&e.focus()}}M=zv,_defineProperty(zv,"PhetMenuIO",new Hi.Z("PhetMenuIO",{valueType:M,documentation:"The PhET Menu in the bottom right of the screen"}));const Wv=(e,t)=>{const i=(new Nt.bn).moveTo(e-20,t).lineToRelative(0,20).lineToRelative(-20,-20).close();return Nt.bn.roundRect(0,0,e,t,8,8).shapeUnion(i)};Bt.Z.register("PhetMenu",zv);const Qv=zv;class Xv extends KE{constructor(e,t,i){const s=phet.brand.Brand,n=s.logoOnBlackBackground,r=s.logoOnWhiteBackground,o=new Qv(e,{closeCallback:()=>o.hide(),tandem:i.createTandem("phetMenu")});Ze.Z.multilink([e.boundsProperty,e.screenBoundsProperty,e.scaleProperty,o.localBoundsProperty],(e,t,i)=>{if(e&&t&&i){o.setScaleMagnitude(i),o.right=e.right-2;const s=e.height-t.height;o.bottom=t.bottom+s/2}});const a=new R.Eep(n,{scale:.28/n.height*108*.85,pickable:!1}),h=new fv({scale:.83,left:a.width+8,bottom:a.bottom-.5,pickable:!1}),l=[a,h];super(new R.NBX({children:l}),t,{highlightExtensionWidth:6,highlightExtensionHeight:5,highlightCenterOffsetY:4,listener:()=>{o.show(),o.items[0].focus(),Kt.play()},tandem:i,phetioType:Xv.PhetButtonIO,phetioDocumentation:"The button that appears at the right side of the navigation bar, which shows a menu when pressed",enabledPropertyOptions:{phetioFeatured:!0},visiblePropertyOptions:{phetioReadOnly:!0},innerContent:ls.Z.a11y.phetMenuStringProperty,voicingNameResponse:ls.Z.a11y.phetMenuStringProperty}),o.setFocusOnHideNode(this),Ze.Z.multilink([t,e.selectedScreenProperty,Ov.stateProperty],(t,i,s)=>{const o=i===e.homeScreen,l=!t.equals(R.Ilk.BLACK)&&!o,d=s===Iv.OUT_OF_DATE;h.fill=l?d?"#0a0":"#222":d?"#3F3":"white",a.image=l?r:n}),this.buttonModel.enabledProperty.link(e=>{h.visible=e}),R.uai.mutateNode(this,!0)}}D=Xv,_defineProperty(Xv,"PhetButtonIO",new Hi.Z("PhetButtonIO",{valueType:D,documentation:"The PhET Button in the bottom right of the screen"})),Bt.Z.register("PhetButton",Xv);const Kv=Xv,Jv=new ni.Z(IE.LAYOUT_BOUNDS.width,40);class jv extends R.NBX{constructor(e,t){super(),_defineProperty(this,"homeButton",null),this.navigationBarFillProperty=new me.ZP([e.selectedScreenProperty,e.lookAndFeel.navigationBarFillProperty],(t,i)=>t===e.homeScreen?ME.BACKGROUND_COLOR:i),this.background=new R.AeJ(0,0,Jv.width,Jv.height,{pickable:!0,fill:this.navigationBarFillProperty}),this.addChild(this.background),this.barContents=new R.NBX,this.addChild(this.barContents);const i=new R.xvT(e.displayedSimNameProperty,{font:new Et(16),fill:e.lookAndFeel.navigationBarTextFillProperty,tandem:t.createTandem("titleText"),phetioDocumentation:"Displays the title of the simulation in the navigation bar (bottom left)",visiblePropertyOptions:{phetioFeatured:!0},stringPropertyOptions:{phetioReadOnly:!0}}),s=new R.NBX({children:[i],visibleProperty:new me.ZP([e.selectedScreenProperty],t=>t!==e.homeScreen)});this.barContents.addChild(s);const n=new Kv(e,this.navigationBarFillProperty,t.createTandem("phetButton"));let r;this.barContents.addChild(n),this.a11yButtonsHBox=new dv(e,this.navigationBarFillProperty,{tandem:t}),this.barContents.addChild(this.a11yButtonsHBox),this.localeNode&&this.barContents.addChild(this.localeNode),this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:this,otherElementName:R.Grz.LABEL_SIBLING});const o=this.a11yButtonsHBox.bounds.isValid()?this.a11yButtonsHBox.width:0;if(1===e.simScreens.length)i.maxWidth=IE.LAYOUT_BOUNDS.width-10-25-6-o-(this.localeNode?this.localeNode.width:0)-6-n.width-10;else{const s=Math.min(i.width,.2*IE.LAYOUT_BOUNDS.width),a=new se.Z(!0,{tandem:ye.Z.GENERAL_MODEL.createTandem("screens").createTandem("isUserNavigableProperty"),phetioFeatured:!0,phetioDocumentation:"If the screens are user navigable, icons are displayed in the navigation bar and the user can switch between screens."});r=new R.NBX({tagName:"ol",containerTagName:"nav",labelTagName:"h2",labelContent:ls.Z.a11y.simScreensStringProperty,visibleProperty:new me.ZP([e.activeSimScreensProperty,e.selectedScreenProperty,a],(t,i,s)=>i!==e.homeScreen&&t.length>1&&s)}),r.ariaLabelledbyAssociations=[{thisElementName:R.Grz.CONTAINER_PARENT,otherElementName:R.Grz.LABEL_SIBLING,otherNode:r}],this.barContents.addChild(r),this.homeButton=new pv(Jv.height,e.lookAndFeel.navigationBarFillProperty,e.homeScreen?e.homeScreen.pdomDisplayNameProperty:new jh.Z("NO HOME SCREEN"),{listener:()=>{e.selectedScreenProperty.value=e.homeScreen,this.homeButton.isPDOMClicking()&&e.homeScreen.view.focusHighlightedScreenButton()},tandem:t.createTandem("homeButton"),centerY:Jv.height/2}),e.homeScreen&&r.addChild(this.homeButton);const h=IE.LAYOUT_BOUNDS.width/2-10-s-25-5-this.homeButton.width-5,l=IE.LAYOUT_BOUNDS.width/2-6-o-(this.localeNode?this.localeNode.width:0)-6-n.width-10,d=2*Math.min(h,l),c=(d-0*(e.simScreens.length-1))/e.simScreens.length,u=e.simScreens.map(i=>new yv(e.lookAndFeel.navigationBarFillProperty,e.selectedScreenProperty,i,e.simScreens.indexOf(i),Jv.height,{maxButtonWidth:c,tandem:t.createTandem(i.tandem.name+"Button")})),p=[this.homeButton,...u],m=Math.max(60,_.maxBy(u,e=>e.width).width),g=_.maxBy(u,e=>e.height).height,y=new Map;u.forEach(e=>{y.set(e.screen,new R.DbO(e,{excludeInvisibleChildrenFromBounds:!0,alignBounds:new vt.Z(0,0,m,g),visibleProperty:e.visibleProperty}))});const A=new R.BET({spacing:0,maxWidth:d});r.addChild(A),e.activeSimScreensProperty.link(e=>{A.children=e.map(e=>y.get(e))}),R.bGt.create(this,[this.background,A],(e,t)=>{t.center=e.center}),R.$1I.create(this.barContents,[this.homeButton,...u],(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;se&&e.visible);e&&n.length>0&&(e.right=Math.min(...n.map(e=>e.left))-5)})),R.bGt.create(this.barContents,[this.homeButton,i],(e,t)=>{t.maxWidth=e.left-10-25}),e.simNameProperty.link(e=>{p.forEach(t=>{t.voicingContextResponse=e})})}i.left=10,i.centerY=Jv.height/2,n.centerY=Jv.height/2,R.bGt.create(this,[this.background,n],(e,t)=>{t.right=e.right-10}),R.bGt.create(this.barContents,[n,this.a11yButtonsHBox],(e,t)=>{t.right=e.left-6,t.centerY=e.centerY}),this.localeNode&&R.bGt.create(this.barContents,[n,this.a11yButtonsHBox,this.localeNode],(e,t,i)=>{t.right=e.left-6,t.centerY=e.centerY,i.centerY=e.centerY,i.right=Math.min(t.left,e.left)-6}),this.layout(1,Jv.width,Jv.height);const a=new R.NBX({tagName:"div",containerTagName:"section",labelTagName:"h2",labelContent:ls.Z.a11y.simResourcesStringProperty,pdomOrder:[this.a11yButtonsHBox,n].filter(e=>void 0!==e)});a.ariaLabelledbyAssociations=[{thisElementName:R.Grz.CONTAINER_PARENT,otherElementName:R.Grz.LABEL_SIBLING,otherNode:a}],this.addChild(a)}layout(e,t,i){this.background.rectWidth=t,this.background.rectHeight=i,this.barContents.setScaleMagnitude(e)}}_defineProperty(jv,"NAVIGATION_BAR_SIZE",Jv),Bt.Z.register("NavigationBar",jv);const _v=jv;class $v{constructor(){_defineProperty(this,"allTimes",[]),_defineProperty(this,"histogram",[]),_defineProperty(this,"longTimes",[]),_defineProperty(this,"frameStartTime",0),_defineProperty(this,"previousFrameStartTime",0);for(let e=0;e<30;e++)this.histogram.push(0);$("body").append('')}static start(e){const t=new $v;e.frameStartedEmitter.addListener(()=>t.frameStarted()),e.frameEndedEmitter.addListener(()=>t.frameEnded())}frameStarted(){this.frameStartTime=Date.now()}frameEnded(){if(this.allTimes.length>0&&this.allTimes.length%60==0){let e=0;for(let i=0;i0&&(this.longTimes.sort((e,t)=>t-e),t=t+" — "+this.longTimes),$("#phetProfiler").html(t);for(let i=0;i<30;i++)this.histogram[i]=0;this.longTimes.length=0,this.allTimes.length=0}if(this.previousFrameStartTime){const e=this.frameStartTime-this.previousFrameStartTime;this.allTimes.push(e),e<30?this.histogram[e]++:this.longTimes.push(e)}this.previousFrameStartTime=this.frameStartTime}}Bt.Z.register("Profiler",$v);const ew=$v,tw=new Image,iw=Z.Z.createLock(tw);tw.onload=iw,tw.src="data:image/png;base64,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*ckOXU0Fa/n8Mp4KNL1i165XFOiMTmXMXObTkRRfiWvXKwp0ViSxVIPTsSi+0ubZayoH8JfIW24XZeygzKSN2KbSKL5iQGc0ulKj06rI9iQVAzorYNBpA/pW89y2JKDH4bVH2EcmaoqvOC++nKD77vKreT27NDcbK6iUqtSgo1pmoXEcMo4WPLF4+ZPiz1vuLagpukxJush6m/lxFVbfP62cJ1zKjpFp41gnHOrdX1C9X7He6/5vfrXXB1lDgHYNQW81B6bZs7bQwg22wiXVVzS9WXgscEDMy+bILWErUXUEPSusalnfDh0tWV6ojnS1gi4rQO8ce5a4L32uPPD4wiGn570JWTf77BWrN28TekqrH7vOWAD1gU8ZxwJ1vAtLVyoGKLkjN2HQaeLCwUPkccOIkeK+hnPENanhNo3f4PbxFqFZIz6/dh0sNuuObxX6jhZl/lLVAjpGdgYPzqnrvV3GnWPOKuDE5a0qIc3Q1q47zbHjObvZmn7GUPHQeZPFM1OmiqXnnCeG9O9P92lxNYco*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";const sw=tw;class nw extends os{constructor(e,t){const i=(0,N.ZP)()({topMargin:20,bottomMargin:20,tandem:ye.Z.OPTIONAL,phetioType:nw.OopsDialogIO},t),s=new R.Hof(e,(0,N.ZP)()({font:new Et(20),maxWidth:600,maxHeight:400,tandem:i.tandem.createTandem("text")},i.richTextOptions)),n=i.iconNode||new R.Eep(sw,{maxHeight:132});super(new R.BET({spacing:20,children:[s,n]}),i),this.disposeOopsDialog=()=>{s.dispose()}}dispose(){this.disposeOopsDialog(),super.dispose()}}O=nw,_defineProperty(nw,"OopsDialogIO",new Hi.Z("OopsDialogIO",{valueType:O,supertype:os.DialogIO})),ft.register("OopsDialog",nw);class rw extends nw{constructor(e,t){const i=(0,N.ZP)()({richTextOptions:{font:new Et(16)},title:new R.xvT(ls.Z.queryParametersWarningDialog.invalidQueryParametersStringProperty,{font:new Et(28)})},t);let s=ls.Z.queryParametersWarningDialog.oneOrMoreQueryParametersStringProperty.value+"

";e.forEach(e=>{s+=`${e.key}=${e.value}
`}),s+="
"+ls.Z.queryParametersWarningDialog.theSimulationWillStartStringProperty.value,super(s,i)}}Bt.Z.register("QueryParametersWarningDialog",rw);const ow=rw,aw="data:audio/mpeg;base64,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*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",hw=q(W,aw),lw=Z.Z.createLock(aw),dw=new U;let cw=!1;const uw=()=>{cw||(lw(),cw=!0)},pw=W.decodeAudioData(hw.buffer,e=>{null===dw.audioBufferProperty.value&&(dw.audioBufferProperty.set(e),uw())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),dw.audioBufferProperty.set(W.createBuffer(1,1,W.sampleRate)),uw()});pw&&pw.then(e=>{null===dw.audioBufferProperty.value&&(dw.audioBufferProperty.set(e),uw())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),uw()});const mw=dw;class gw extends we{constructor(e,t,i){super(mw,i),e.lazyLink(e=>{e!==t&&this.play()})}}Bt.Z.register("ScreenSelectionSoundGenerator",gw);const yw=gw;function Aw(e,t,i,s,n,r,o,a,h){if(1===e.length&&i&&t){const e="cannot specify homeScreen=true for single-screen sims";QueryStringMachine.addWarning("homeScreen",t,e)}let l=[];if(o&&r)for(let p=0;p

=0&&i1&&t&&(u=h(l),d.unshift(u)),c=u&&0===s?u:0===s?l[0]:e[s-1],!d.includes(c))throw new Error("screen not found: "+s);return{homeScreen:u,initialScreen:c,selectedSimScreens:l,screens:d,allScreensCreated:_.isEqual(new Set(e),new Set(l))&&(!(e.length>1)||!!u)}}Bt.Z.register("selectScreens",Aw);class fw{constructor(){_defineProperty(this,"stringFactor",1),_defineProperty(this,"stride",0)}handleEvent(e){"ArrowLeft"===e.code?this.halveStrings():"ArrowRight"===e.code?this.doubleStrings():"ArrowUp"===e.code?this.setStride(this.stride+1):"ArrowDown"===e.code?this.setStride(this.stride-1):"Space"===e.code&&this.reset()}doubleStrings(){this.setStringFactor(Math.min(2*this.stringFactor,8))}halveStrings(){this.setStringFactor(Math.max(.5*this.stringFactor,.01))}setStringFactor(e){this.stringFactor=e,console.log("stringFactor = "+this.stringFactor),function(e){st.j.forEach(t=>{if(t.restoreInitialValue("en"),1!==e){const i=t.property.value.replace(/[\u202A\u202B\u202C]/g,"");t.property.value=function(e,t){if(e>1)return function(e,t){let i=e;for(;t>1;)i+=e,t-=1;return i}(t,e);{const i=t.match(/{{(.+?)}}/g)||[],s=t.replace(/{{(.+?)}}/g,""),n=Ve.Z.toFixedNumber(s.length*e+1,0);return s.substring(0,n)+i.join("")}}(e,i)}})}(this.stringFactor)}setStride(e){const t=fw.WORDS;e>t.length-1?e=0:e<0&&(e=t.length-1),this.stride=e,console.log("stride = "+this.stride),st.j.forEach((e,i)=>{e.property.value=t[(i+this.stride)%t.length]})}reset(){this.setStride(0),this.setStringFactor(1)}}_defineProperty(fw,"WORDS","Sometimes when Hippopotomonstrosesquippedaliophobia want lyrics you turn to Shakespeare like the following text copied from some work To be or not to be that is the question Supercalifragilisticexpeladocious tis nobler in the mind to suffer The slings and arrows of antidisestablishmentarianism fortune Or to take Incomprehensibility against a sea of Floccinaucinihilipilification".split(" ")),Bt.Z.register("DynamicStringTest",fw);class Pw{constructor(e,t){_defineProperty(this,"initialPointerPoint",null),_defineProperty(this,"relativePointerDistance",0),this.display=e;const i={move:this.handleMove.bind(this)},s=()=>{this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!0},n={};if(["click","input","change","keydown","keyup"].forEach(e=>{n[e]=s}),this.display.addInputListener(n),R.MMl.keyupEmitter.addListener(e=>{R.ntP.isKeyEvent(e,R.ntP.KEY_TAB)&&s()}),t.visualModel.supportsInteractiveHighlights){t.visualModel.interactiveHighlightsEnabledProperty.link(e=>{this.display.focusManager.interactiveHighlightsVisibleProperty.value=e});const e=t.visualModel.interactiveHighlightsEnabledProperty,s=this.display.focusManager.pdomFocusHighlightsVisibleProperty;Ze.Z.multilink([e,s],(e,t)=>{e&&t?(this.display.addInputListener(i),this.initialPointerPoint=null,this.relativePointerDistance=0):this.display.hasInputListener(i)&&this.display.removeInputListener(i)})}this.display.addInputListener({down:e=>{this.display.bounds.containsPoint(e.pointer.point)&&(this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!1,R.IKS.pdomFocusedNode&&(e.trail.nodes.includes(R.IKS.pdomFocusedNode)||(R.IKS.pdomFocus=null)))}})}handleMove(e){null===this.initialPointerPoint?this.initialPointerPoint=e.pointer.point:(this.relativePointerDistance=e.pointer.point.distance(this.initialPointerPoint),this.relativePointerDistance>100&&(this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!1,this.display.focusManager.interactiveHighlightsVisibleProperty.value=!0))}}Bt.Z.register("HighlightVisibilityController",Pw);const bw=Pw;class Ew extends R.sSl{constructor(e){const t=(0,N.ZP)()({rootRenderer:"svg",webgl:Ew.DEFAULT_WEBGL,allowBackingScaleAntialiasing:!0,allowSceneOverflow:!1,allowWebGL:phet.chipper.queryParameters.webgl,assumeFullWindow:!0,accessibility:phet.chipper.queryParameters.supportsInteractiveDescription,tandem:ye.Z.REQUIRED},e);t.supportsInteractiveHighlights=t.preferencesModel.visualModel.supportsInteractiveHighlights,t.rootRenderer=phet.chipper.queryParameters.rootRenderer||t.rootRenderer,QueryStringMachine.containsKey("webgl")&&(t.webgl=phet.chipper.queryParameters.webgl),R.cQK.setWebGLEnabled(t.webgl),phet.chipper.isFuzzEnabled()&&(window.open=function(){return{focus:_.noop,blur:_.noop}}),$("body").css("padding","0").css("margin","0").css("overflow","hidden"),document.getElementById("sim")&&document.getElementById("sim").parentNode===document.body&&document.body.removeChild(document.getElementById("sim")),document.onselectstart=function(){return!1},super(new R.NBX({renderer:t.rootRenderer}),t),_defineProperty(this,"simulationRoot",new R.NBX),this.simulationRoot=new R.NBX,this.rootNode.addChild(this.simulationRoot);const i=phet.chipper.queryParameters.randomSeed*Math.PI;if(this.inputFuzzer=new R.$AB(this,i),this.keyboardFuzzer=new R.eXg(this,i),this.supportsPanAndZoomProperty=new se.Z(phet.chipper.queryParameters.supportsPanAndZoom,{tandem:t.tandem.createTandem("supportsPanAndZoomProperty"),phetioFeatured:!0}),this.domElement.id="sim",phet.chipper.queryParameters.supportsInteractiveDescription&&(this.pdomRootElement.lang="en"),this.highlightVisibilityController=new bw(this,t.preferencesModel),phet.chipper.queryParameters.sceneryLog&&R.QF$.enableLogging(phet.chipper.queryParameters.sceneryLog),phet.chipper.queryParameters.sceneryStringLog&&R.QF$.switchLogToString(),"dynamic"===phet.chipper.queryParameters.stringTest){const e=new fw;window.addEventListener("keydown",t=>e.handleEvent(t))}this.initializeEvents({tandem:ye.Z.GENERAL_CONTROLLER.createTandem("input")}),window.phet.joist.rootNode=this.rootNode,window.phet.joist.display=this,this.setPointerDisplayVisible(phet.chipper.queryParameters.showPointers),this.setPointerAreaDisplayVisible(phet.chipper.queryParameters.showPointerAreas),this.setHitAreaDisplayVisible(phet.chipper.queryParameters.showHitAreas),this.setCanvasNodeBoundsVisible(phet.chipper.queryParameters.showCanvasNodeBounds),this.setFittedBlockBoundsVisible(phet.chipper.queryParameters.showFittedBlockBounds),R.Yj2.initialize(this.simulationRoot,{tandem:ye.Z.GENERAL_VIEW.createTandem("panZoomListener")});const s=R.Yj2.listener;this.supportsPanAndZoomProperty.link(e=>{e?this.addInputListener(s):this.hasInputListener(s)&&this.removeInputListener(s)}),window.addEventListener("pageshow",e=>{e.persisted&&window.location.reload()})}fuzzInputEvents(){const e=phet.chipper.queryParameters.fuzzTouch||phet.chipper.queryParameters.fuzz,t=phet.chipper.queryParameters.fuzzMouse||phet.chipper.queryParameters.fuzz;(t||e)&&this.inputFuzzer.fuzzEvents(phet.chipper.queryParameters.fuzzRate,t,e,phet.chipper.queryParameters.fuzzPointers),phet.chipper.queryParameters.fuzzBoard&&document.hasFocus()&&this.keyboardFuzzer.fuzzBoardEvents(phet.chipper.queryParameters.fuzzRate)}step(e){this.supportsPanAndZoomProperty.value&&R.Yj2.listener.step(e)}}_defineProperty(Ew,"DEFAULT_WEBGL",!1),Bt.Z.register("SimDisplay",Ew);var vw=i(0);class ww extends Se.Z{constructor(e){let t,i,s;super({tandem:ye.Z.GENERAL_MODEL.createTandem("simInfo"),phetioType:ww.SimInfoIO,phetioReadOnly:!0,phetioDocumentation:"A collection of data about the runtime and simulation. Available in the simStarted PhET-iO data stream event, as well as on demand in the PhET-iO state."}),_defineProperty(this,"info",{}),this.putInfo("url",window.location.href),this.putInfo("randomSeed",window.phet.chipper.queryParameters.randomSeed),this.putInfo("userAgent",window.navigator.userAgent),this.putInfo("language",window.navigator.language),this.putInfo("window",`${window.innerWidth}x${window.innerHeight}`),this.putInfo("referrer",document.referrer),this.putInfo("checkIE11StencilSupport",R.cQK.checkIE11StencilSupport()),phet.chipper.queryParameters.webgl&&this.putInfo("isWebGLSupported",R.cQK.isWebGLSupported);const n=[];window.navigator.pointerEnabled&&n.push("pointerEnabled"),window.navigator.msPointerEnabled&&n.push("msPointerEnabled"),window.navigator.onLine||n.push("offline");try{t=document.createElement("canvas"),i=t.getContext("2d"),s=R.cQK.backingStorePixelRatio(i),this.putInfo("pixelRatio",`${window.devicePixelRatio||1}/${s}`),(window.devicePixelRatio||1)/s!=1&&n.push("pixelRatioScaling")}catch(r){}this.putInfo("flags",n.join(", ")),t=null,this.putInfo("simName",e.simNameProperty.value),this.putInfo("simVersion",e.version),this.putInfo("repoName",Cv.name),this.putInfo("screens",e.screens.map(t=>{const i={name:t.nameProperty.value||e.simNameProperty.value};return ye.Z.PHET_IO_ENABLED&&(i.phetioID=t.tandem.phetioID),i})),ye.Z.PHET_IO_ENABLED&&(this.putInfo("screenPropertyValue",e.selectedScreenProperty.value.tandem.phetioID),this.putInfo("wrapperMetadata",phet.preloads.phetio.simStartedMetadata),this.putInfo("dataStreamVersion",phet.phetio.dataStream.VERSION),this.putInfo("phetioCommandProcessorProtocol",phet.phetio.phetioCommandProcessor.PHET_IO_PROTOCOL))}putInfo(e,t){void 0===t&&(t="{{undefined}}"),this.info[e]=t}}L=ww,_defineProperty(ww,"SimInfoIO",new Hi.Z("SimInfoIO",{valueType:L,toStateObject:e=>({simName:e.info.simName,screens:e.info.screens,repoName:e.info.repoName,screenPropertyValue:e.info.screenPropertyValue,dataStreamVersion:e.info.dataStreamVersion,phetioCommandProcessorProtocol:e.info.phetioCommandProcessorProtocol,simVersion:ye.Z.API_GENERATION?null:e.info.simVersion,wrapperMetadata:ye.Z.API_GENERATION?null:e.info.wrapperMetadata,randomSeed:ye.Z.API_GENERATION?null:e.info.randomSeed,url:ye.Z.API_GENERATION?null:e.info.url,userAgent:ye.Z.API_GENERATION?null:e.info.userAgent,window:ye.Z.API_GENERATION?null:e.info.window,referrer:ye.Z.API_GENERATION?null:e.info.referrer,language:ye.Z.API_GENERATION?null:e.info.language,pixelRatio:ye.Z.API_GENERATION?null:e.info.pixelRatio,isWebGLSupported:ye.Z.API_GENERATION?null:e.info.isWebGLSupported,checkIE11StencilSupport:ye.Z.API_GENERATION?null:e.info.checkIE11StencilSupport,flags:ye.Z.API_GENERATION?null:e.info.flags||null}),stateSchema:{simName:ss.Z,screens:(0,vw.Z)(Cd.Z),repoName:ss.Z,screenPropertyValue:ss.Z,wrapperMetadata:(0,Qh.Z)(Cd.Z),dataStreamVersion:ss.Z,phetioCommandProcessorProtocol:ss.Z,simVersion:(0,Qh.Z)(ss.Z),randomSeed:(0,Qh.Z)(Xh.Z),url:(0,Qh.Z)(ss.Z),userAgent:(0,Qh.Z)(ss.Z),window:(0,Qh.Z)(ss.Z),referrer:(0,Qh.Z)(ss.Z),language:(0,Qh.Z)(ss.Z),pixelRatio:(0,Qh.Z)(ss.Z),isWebGLSupported:(0,Qh.Z)(Kc.Z),checkIE11StencilSupport:(0,Qh.Z)(Kc.Z),flags:(0,Qh.Z)(ss.Z)}})),Bt.Z.register("SimInfo",ww);const Vw=ww;class Sw{constructor(e){this.sim=e,window.addEventListener("message",t=>{"pause"===t.data.messageName?(e.stepOneFrame(),e.activeProperty.value=!1):"resume"===t.data.messageName&&(e.activeProperty.value=!0)})}start(){this.sim.isConstructionCompleteProperty.link(e=>{e&&window.parent!==window&&window.parent.postMessage({message:"init"},"*")})}}Bt.Z.register("LegendsOfLearningSupport",Sw);const Tw=Sw;class Cw{constructor(e){this.screenProperty=e}createOverviewContent(){const e=this.screenProperty.value.view;return e.getVoicingOverviewContent()}createDetailsContent(){const e=this.screenProperty.value.view;return e.getVoicingDetailsContent()}createHintContent(){this.screenProperty.value.view;return this.screenProperty.value.view.getVoicingHintContent()}}Bt.Z.register("VoicingToolbarAlertManager",Cw);const Iw=Cw;class xw extends Nt.bn{constructor(e){super(),this.rect(0,0,e,e)}}ft.register("StopIconShape",xw);class kw extends gc{constructor(e,t){const i=(0,N.ZP)()({radius:zd.PLAY_CONTROL_BUTTON_RADIUS,endPlayingLabel:St.a11y.playControlButton.stopStringProperty},t),s=.75*i.radius;super(e,new R.y$t(new xw(s),{fill:"black"}),i)}}ft.register("PlayStopButton",kw);const Bw=ls.Z.a11y.toolbar.voicing.titleStringProperty,Mw=ls.Z.a11y.toolbar.voicing.quickInfoStringProperty,Dw=ls.Z.a11y.toolbar.voicing.simVoicingOnAlertStringProperty,Ow=ls.Z.a11y.toolbar.voicing.simVoicingOffAlertStringProperty,Lw=ls.Z.a11y.toolbar.titleStringProperty,Rw=ls.Z.a11y.toolbar.voicing.playOverviewLabelStringProperty,Nw=ls.Z.a11y.toolbar.voicing.playDetailsLabelStringProperty,Zw=ls.Z.a11y.toolbar.voicing.playHintLabelStringProperty,qw=ls.Z.a11y.toolbar.voicing.overviewLabelStringProperty,Fw=ls.Z.a11y.toolbar.voicing.detailsLabelStringProperty,Yw=ls.Z.a11y.toolbar.voicing.hintLabelStringProperty;class Hw extends R.NBX{constructor(e,t,i){const s=(0,N.ZP)()({tagName:"section",labelTagName:"h2",labelContent:Lw,visiblePropertyOptions:{phetioReadOnly:!0}},i);super(s);const n={font:new Et(14),fill:t.navigationBarTextFillProperty,maxWidth:90},r=new R.xvT(Bw,n),o=new R.JxC(Mw,n);o.focusHighlight=new R.qLK(o,{innerStroke:"white"});const a=new hn(R.LY3.mainWindowVoicingEnabledProperty,!1,!0,(0,N.JA)({a11yName:Bw,rightValueContextResponse:Dw,leftValueContextResponse:Ow,tandem:s.tandem.createTandem("muteSpeechSwitch")},pn.TOGGLE_SWITCH_OPTIONS)),h=new cs({labelNode:r,controlNode:a,tandem:s.tandem.createTandem("muteSpeechControl")}),l=new R.Lkj,d=new R.Lkj,c=new Gw(qw,Rw,l,d,t,e.createOverviewContent.bind(e)),u=new Gw(Fw,Nw,l,d,t,e.createDetailsContent.bind(e)),p=new Gw(Yw,Zw,l,d,t,e.createHintContent.bind(e));this.children=[h,o,c.content,u.content,p.content],o.leftTop=h.leftBottom.plusXY(0,10),c.content.leftTop=o.leftBottom.plusXY(20,10),u.content.leftTop=c.content.leftBottom.plusXY(0,10),p.content.leftTop=u.content.leftBottom.plusXY(0,10);const m=[c,u,p],g=[c.playingProperty,u.playingProperty,p.playingProperty];m.forEach(e=>{e.playingProperty.link(t=>{e.playContent(g)})}),this.disposeVoicingToolbarItem=()=>{o.dispose(),r.dispose()}}dispose(){this.disposeVoicingToolbarItem(),super.dispose()}}class Gw{constructor(e,t,i,s,n,r){this.lookAndFeel=n,this.objectResponseUtterance=new zi.Z,this.createAlert=r,this.playingProperty=new se.Z(!1,{reentrant:!0}),this.playStopButton=new kw(this.playingProperty,{startPlayingLabel:t,voicingNameResponse:t,voicingIgnoreVoicingManagerProperties:!0,radius:12,tandem:ye.Z.OPT_OUT});const o=new R.xvT(e,{font:new Et(12),fill:this.lookAndFeel.navigationBarTextFillProperty,maxWidth:100}),a=i.createBox(o,{xAlign:"left"}),h=s.createBox(this.playStopButton,{xAlign:"right"});this.content=new R.BET({children:[a,h],spacing:10}),R.LY3.endSpeakingEmitter.addListener((e,t)=>{t===this.objectResponseUtterance&&(this.playingProperty.set(!1),R.sSl.inputListeners.includes(d)&&R.sSl.removeInputListener(d))});const l=e=>{e.trail.nodes.includes(this.playStopButton)||(R.sSl.removeInputListener(d),this.objectResponseUtterance.priorityProperty.value=zi.Z.LOW_PRIORITY)},d={down:l,focus:l};R.LY3.startSpeakingEmitter.addListener((e,t)=>{t===this.objectResponseUtterance&&R.sSl.addInputListener(d)})}playContent(e){if(this.playingProperty.value){_.without(e,this.playingProperty).forEach(e=>{e.value=!1}),this.objectResponseUtterance.priorityProperty.value=zi.Z.TOP_PRIORITY,this.playStopButton.voicingSpeakResponse({objectResponse:this.createAlert(),utterance:this.objectResponseUtterance})}else R.KsW.cancelUtterance(this.objectResponseUtterance)}}Bt.Z.register("VoicingToolbarItem",Hw);const Uw=Hw,zw=ls.Z.a11y.toolbar.openToolbarStringProperty,Ww=ls.Z.a11y.toolbar.closeToolbarStringProperty,Qw=ls.Z.a11y.toolbar.hideToolbarStringProperty,Xw=ls.Z.a11y.toolbar.showToolbarStringProperty,Kw=ls.Z.a11y.toolbar.toolbarShownStringProperty,Jw=ls.Z.a11y.toolbar.toolbarHiddenStringProperty;class jw extends R.NBX{constructor(e,t,i,s){const n=(0,N.JA)({tagName:"div",visiblePropertyOptions:{phetioReadOnly:!0}},s);super(n),_defineProperty(this,"layoutScale",1),this.isEnabledProperty=e,this.backgroundRectangle=new R.AeJ(0,0,0,0,{fill:i.navigationBarFillProperty}),this.openProperty=new se.Z(!0),this.isShowingProperty=me.ZP.and([this.isEnabledProperty,R.LY3.enabledProperty,JP.audioEnabledProperty]);const r=new Iw(t);this.menuContent=new Uw(r,i,{tandem:n.tandem.createTandem("menuContent")});const o=new _w;this.openButton=new Ic({content:o,listener:()=>this.openProperty.toggle(),buttonAppearanceStrategy:hi.FlatAppearanceStrategy,baseColor:"lightgrey",tandem:ye.Z.OPT_OUT}),this.contentWidth=this.menuContent.localBounds.width,this.contentMargin=this.openButton.localBounds.width,this.rightPositionProperty=new Gh.Z(this.getHiddenPosition()),this.rightDestinationPosition=0;const a=new R.NBX({children:[this.backgroundRectangle,this.menuContent,this.openButton]});this.addChild(a);Ep.Z.addListener(e=>{this.step(e)});const h=(e,t)=>{if(o.matrix=e?wt.Z.scaling(-1,1):wt.Z.IDENTITY,this.menuContent.pdomVisible=e,this.openButton.innerContent=e?Ww:zw,this.openButton.voicingNameResponse=e?Qw:Xw,this.updateDestinationPosition(),null!==t){const t=e?Kw:Jw;this.openButton.voicingSpeakContextResponse({contextResponse:t}),this.alertDescriptionUtterance(t)}};this.openProperty.link(h);const l=e=>{this.updateDestinationPosition(),a.pdomVisible=e};this.isShowingProperty.link(l),this.disposeToolbar=()=>{this.isShowingProperty.unlink(l),this.openProperty.unlink(h)}}getDisplayedWidth(){return this.rightPositionProperty.value*this.layoutScale+this.openButton.width/2}getHiddenPosition(){return-this.contentMargin/2}updateDestinationPosition(){this.isShowingProperty.value?this.rightDestinationPosition=this.openProperty.value?this.contentWidth+2*this.contentMargin:this.contentMargin:this.rightDestinationPosition=this.getHiddenPosition()}step(e){const t=Math.abs(this.rightPositionProperty.value-this.rightDestinationPosition);if(0!==t){const i=Math.min(t,250*e),s=this.rightPositionProperty.value;this.rightPositionProperty.value=this.rightDestinationPosition>s?s+i:s-i}}layout(e,t){this.layoutScale=e,this.menuContent.setScaleMagnitude(e),this.openButton.setScaleMagnitude(e),this.backgroundRectangle.rectWidth=e*(this.contentWidth+2*this.contentMargin),this.backgroundRectangle.rectHeight=t,this.backgroundRectangle.right=this.rightPositionProperty.value*e,this.openButton.center=this.backgroundRectangle.rightCenter,this.menuContent.centerTop=this.backgroundRectangle.centerTop.plusXY(0,15)}dispose(){this.disposeToolbar(),super.dispose()}}class _w extends R.y$t{constructor(){const e=new Nt.bn;for(let t=0;t<2;t++){const i=8*t;e.moveTo(i,0),e.lineTo(i+5,6),e.lineTo(i,12)}super(e,{stroke:"black",lineWidth:3.5,lineCap:"round"})}}Bt.Z.register("Toolbar",jw);const $w=jw;class eV{constructor(e){this.inclusions=e}size(){return this.inclusions.length}includes(e){return this.inclusions[e]}apply(e){return e.filter((e,t)=>this.inclusions[t])}inverted(){return new eV(this.inclusions.map(e=>!e))}getIncludedIndices(){return _.range(0,this.size()).filter(e=>this.inclusions[e])}toString(){return`C[${this.inclusions.map(e=>e?"1":"0").join("")}]`}equals(e){return this.inclusions.length===e.inclusions.length&&_.isEqual(this.inclusions,e.inclusions)}static empty(e){return new eV(_.range(0,e).map(()=>!1))}static full(e){return new eV(_.range(0,e).map(()=>!0))}static combinations(e){const t=[],i=[];return function s(n){n===e?t.push(new eV(i.slice())):(i.push(!1),s(n+1),i.pop(),i.push(!0),s(n+1),i.pop())}(0),t}static forEachCombination(e,t){const i=[];!function s(n){n===e.length?t(i):(s(n+1),i.push(e[n]),s(n+1),i.pop())}(0)}static combinationsOf(e){const t=[];return eV.forEachCombination(e,e=>{t.push(e.slice())}),t}}In.Z.register("Combination",eV);const tV=eV;var iV=i(2238);const sV=ib.Z.android||ib.Z.mobileSafari;phet.joist.elapsedTime=0,phet.joist.playbackModeEnabledProperty=new se.Z(phet.chipper.queryParameters.playbackMode);class nV extends Se.Z{constructor(e,t,i){window.phetSplashScreenDownloadComplete();const s=(0,N.ZP)()({credits:{},homeScreenWarningNode:null,preferencesModel:null,webgl:Ew.DEFAULT_WEBGL,phetioState:!1,phetioReadOnly:!0,tandem:ye.Z.ROOT},i);s.preferencesModel||(s.preferencesModel=new eb);const n={webgl:s.webgl,tandem:ye.Z.GENERAL_VIEW.createTandem("display"),preferencesModel:s.preferencesModel};super(s),_defineProperty(this,"_isConstructionCompleteProperty",new ot.Z(!1)),_defineProperty(this,"isConstructionCompleteProperty",this._isConstructionCompleteProperty),_defineProperty(this,"frameStartedEmitter",new $t.Z),_defineProperty(this,"frameEndedEmitter",new $t.Z({tandem:ye.Z.GENERAL_MODEL.createTandem("frameEndedEmitter"),phetioHighFrequency:!0})),_defineProperty(this,"activeProperty",new se.Z(!0,{tandem:ye.Z.GENERAL_MODEL.createTandem("activeProperty"),phetioFeatured:!0,phetioDocumentation:"Determines whether the entire simulation is running and processing user input. Setting this property to false pauses the simulation, and prevents user interaction."})),_defineProperty(this,"scaleProperty",new Gh.Z(1)),_defineProperty(this,"boundsProperty",new ot.Z(null)),_defineProperty(this,"screenBoundsProperty",new ot.Z(null)),_defineProperty(this,"lookAndFeel",new OE),_defineProperty(this,"memoryMonitor",new NE),_defineProperty(this,"version",Cv.version),_defineProperty(this,"frameCounter",0),_defineProperty(this,"resizePending",!0),_defineProperty(this,"locale",phet.chipper.locale||"en"),_defineProperty(this,"toolbar",null),_defineProperty(this,"modalNodeStack",(0,ge.Z)()),_defineProperty(this,"barrierRectangle",new sb(this.modalNodeStack,{tandem:ye.Z.GENERAL_VIEW.createTandem("barrierRectangle"),phetioDocumentation:"Semi-transparent barrier used to block input events when a dialog is shown, also fades out the background"})),_defineProperty(this,"topLayer",new R.NBX({children:[this.barrierRectangle]})),_defineProperty(this,"lastStepTime",-1),_defineProperty(this,"lastAnimationFrameTime",-1),this.credits=s.credits,this.simNameProperty=e,phet.joist.playbackModeEnabledProperty.lazyLink(()=>{throw new Error("playbackModeEnabledProperty cannot be changed after Sim construction has begun")});const r=new ot.Z(new ni.Z(0,0),{valueComparisonStrategy:"equalsFunction"});this.dimensionProperty=r,this.resizeAction=new ps.Z((e,t)=>{if(r.value=new ni.Z(e,t),0===e||0===t)return;const i=Math.min(e/IE.LAYOUT_BOUNDS.width,t/IE.LAYOUT_BOUNDS.height),s=i*_v.NAVIGATION_BAR_SIZE.height;this.navigationBar.layout(i,e,s),this.navigationBar.y=t-s,this.display.setSize(new ni.Z(e,t));const n=t-this.navigationBar.height;this.toolbar&&this.toolbar.layout(i,n);const o=this.toolbar?this.toolbar.getDisplayedWidth():0,a=new vt.Z(o,0,e,n);_.each(this.screens,e=>e.view.layout(a)),this.topLayer.children.forEach(e=>{e.layout&&e.layout(a)}),ib.Z.mobileSafari&&window.scrollTo(0,0),this.scaleProperty.value=i,this.boundsProperty.value=new vt.Z(0,0,e,t),this.screenBoundsProperty.value=a.copy(),R.Yj2.listener.setTargetScale(i),R.Yj2.listener.setTargetBounds(this.boundsProperty.value),R.Yj2.listener.setPanBounds(this.boundsProperty.value)},{tandem:ye.Z.GENERAL_MODEL.createTandem("resizeAction"),parameters:[{name:"width",phetioType:Xh.Z},{name:"height",phetioType:Xh.Z}],phetioPlayback:!0,phetioEventMetadata:{alwaysPlaybackableOverride:!0},phetioDocumentation:"Executes when the sim is resized. Values are the sim dimensions in CSS pixels."}),this.stepSimulationAction=new ps.Z(e=>{this.frameStartedEmitter.emit(),this.frameCounter++,e*=phet.chipper.queryParameters.speed,this.resizePending&&this.resizeToWindow();const t=this.selectedScreenProperty.value;e=Math.min(e,t.maxDT),phet.joist.elapsedTime+=1e3*e,Ep.Z.emit(e),t.model.step&&e&&t.model.step(e),window.TWEEN&&window.TWEEN.update(phet.joist.elapsedTime),this.display.step(e),t.view.step(e),ye.Z.PHET_IO_ENABLED&&!phet.phetio.phetioEngine.isReadyForDisplay||this.display.updateDisplay(),phet.chipper.queryParameters.memoryLimit&&this.memoryMonitor.measure(),this.frameEndedEmitter.emit()},{tandem:ye.Z.GENERAL_MODEL.createTandem("stepSimulationAction"),parameters:[{name:"dt",phetioType:Xh.Z,phetioDocumentation:"The amount of time stepped in each call, in seconds."}],phetioHighFrequency:!0,phetioPlayback:!0,phetioDocumentation:"A function that steps time forward."});const o=ye.Z.GENERAL_MODEL.createTandem("screens"),a=Aw(t,phet.chipper.queryParameters.homeScreen,QueryStringMachine.containsKey("homeScreen"),phet.chipper.queryParameters.initialScreen,QueryStringMachine.containsKey("initialScreen"),phet.chipper.queryParameters.screens,QueryStringMachine.containsKey("screens"),e=>{const i=e.map(e=>t.indexOf(e)+1),s=_.flatten(tV.combinationsOf(i).map(e=>iV.Z.permutationsOf(e))).filter(e=>e.length>0).sort();this.availableScreensProperty=new ot.Z(i,{tandem:o.createTandem("availableScreensProperty"),isValidValue:e=>_.some(s,t=>_.isEqual(e,t)),phetioFeatured:!0,phetioValueType:(0,vw.Z)(Xh.Z),phetioDocumentation:"Controls which screens are available, and the order they are displayed."}),this.activeSimScreensProperty=new me.ZP([this.availableScreensProperty],e=>e.map(e=>t[e-1]))},e=>new ME(this.simNameProperty,()=>this.selectedScreenProperty,e,this.activeSimScreensProperty,{tandem:s.tandem.createTandem(window.phetio.PhetioIDUtils.HOME_SCREEN_COMPONENT_NAME),warningNode:s.homeScreenWarningNode}));this.homeScreen=a.homeScreen,this.simScreens=a.selectedSimScreens,this.screens=a.screens,this.allScreensCreated=a.allScreensCreated,this.selectedScreenProperty=new ot.Z(a.initialScreen,{tandem:o.createTandem("selectedScreenProperty"),phetioFeatured:!0,phetioDocumentation:"Determines which screen is selected in the simulation",validValues:this.screens,phetioValueType:Rh.ScreenIO}),this.activeSimScreensProperty.lazyLink(e=>{const t=this.selectedScreenProperty.value;t===this.homeScreen?1===e.length?this.selectedScreenProperty.value=e[0]:e.includes(this.homeScreen.model.selectedScreenProperty.value)||(this.homeScreen.model.selectedScreenProperty.value=e[0]):e.includes(t)||(this.selectedScreenProperty.value=e[0])}),this.displayedSimNameProperty=new me.ZP([this.availableScreensProperty,this.simNameProperty,this.selectedScreenProperty,ls.Z.simTitleWithScreenNamePatternStringProperty,me.ZP.deriveAny(this.simScreens.map(e=>e.nameProperty),(function(){for(var e=arguments.length,t=new Array(e),i=0;i{const r=s.nameProperty.value,o=1===e.length&&t.length>1;return o&&i&&r?xt.Z.fillIn(n,{simName:i,screenName:r}):o&&r?r:i},{tandem:ye.Z.GENERAL_MODEL.createTandem("displayedSimNameProperty"),phetioValueType:ss.Z});const h=new se.Z(!0,{tandem:ye.Z.GENERAL_MODEL.createTandem("browserTabVisibleProperty"),phetioDocumentation:"Indicates whether the browser tab containing the simulation is currently visible",phetioReadOnly:!0,phetioFeatured:!0});this.browserTabVisibleProperty=h,document.addEventListener("visibilitychange",()=>{h.set("visible"===document.visibilityState)},!1),this.supportsGestureDescription=phet.chipper.queryParameters.supportsInteractiveDescription&&sV,this.hasKeyboardHelpContent=_.some(this.simScreens,e=>!!e.createKeyboardHelpNode),window.phet.joist.sim=this,this.isSettingPhetioStateProperty=ye.Z.PHET_IO_ENABLED?phet.phetio.phetioEngine.phetioStateEngine.isSettingStateProperty:new se.Z(!1),this.isClearingPhetioDynamicElementsProperty=ye.Z.PHET_IO_ENABLED?phet.phetio.phetioEngine.phetioStateEngine.isClearingDynamicElementsProperty:new se.Z(!1),this.preferencesModel=s.preferencesModel,JP.initialize(this),this.preferencesModel.audioModel.supportsSound&&Ge.addSoundGenerator(new yw(this.selectedScreenProperty,this.homeScreen,{initialOutputLevel:.5}),{categoryName:"user-interface"}),window.phet.joist.ScreenshotGenerator=Gv,this.simNameProperty.link(e=>{document.title=e}),this.preferencesModel.audioModel.supportsVoicing&&(this.toolbar=new $w(this.preferencesModel.audioModel.toolbarEnabledProperty,this.selectedScreenProperty,this.lookAndFeel,{tandem:ye.Z.GENERAL_VIEW.createTandem("toolbar")}),this.toolbar.rightPositionProperty.lazyLink(()=>{this.resize(this.boundsProperty.value.width,this.boundsProperty.value.height)})),this.display=new Ew(n),this.rootNode=this.display.rootNode,fb.initialize(this,this.display),Ze.Z.multilink([this.activeProperty,phet.joist.playbackModeEnabledProperty],(e,t)=>{t?(this.display.interactive=!0,R.MMl.enabled=!0):(this.display.interactive=e,R.MMl.enabled=e)}),document.body.appendChild(this.display.domElement),ab.start(this),this.navigationBar=new _v(this,ye.Z.GENERAL_VIEW.createTandem("navigationBar")),this.updateBackground=()=>{this.lookAndFeel.backgroundColorProperty.value=R.Ilk.toColor(this.selectedScreenProperty.value.backgroundColorProperty.value)},this.lookAndFeel.backgroundColorProperty.link(e=>{this.display.backgroundColor=e}),this.selectedScreenProperty.link(()=>this.updateBackground()),this.selectedScreenProperty.lazyLink((e,t)=>t.view.interruptSubtreeInput()),this.simInfo=new Vw(this),ye.Z.PHET_IO_ENABLED&&phet.phetio.phetioEngine.onSimConstructionStarted(this.simInfo,this.isConstructionCompleteProperty,this.frameEndedEmitter,this.display),this.isSettingPhetioStateProperty.lazyLink(e=>{e||this.updateViews()}),this.boundRunAnimationLoop=this.runAnimationLoop.bind(this),phet.chipper.queryParameters.legendsOfLearning&&new Tw(this).start()}updateViews(){this.resizeToWindow(),this.selectedScreenProperty.value.view.step&&this.selectedScreenProperty.value.view.step(0),this.display.descriptionUtteranceQueue.clear(),R.KsW.clear(),tb.Z.runOnNextTick(()=>phet.joist.display.updateDisplay())}finishInit(e){_.each(e,e=>{e.view.layerSplit=!0,this.display.simulationRoot.addChild(e.view)}),this.display.simulationRoot.addChild(this.navigationBar),this.preferencesModel.audioModel.supportsVoicing&&(this.display.simulationRoot.addChild(this.toolbar),this.display.simulationRoot.pdomOrder=[this.toolbar],R.LY3.voicingFullyEnabledProperty.link(e=>{this.setSimVoicingVisible(e)})),this.selectedScreenProperty.link(t=>{e.forEach(e=>{const i=e===t;i&&e.activeProperty.set(i),e.view.setVisible(i),i||e.activeProperty.set(i)}),this.updateBackground(),this.isSettingPhetioStateProperty.value||R.Yj2.listener.resetTransform()}),this.display.simulationRoot.addChild(this.topLayer);const t=()=>{phet.joist.playbackModeEnabledProperty.value||(this.resizePending=!0)};if($(window).resize(t),window.addEventListener("resize",t),window.addEventListener("orientationchange",t),window.visualViewport&&window.visualViewport.addEventListener("resize",t),this.resizeToWindow(),Ov.check(),QueryStringMachine.warnings.length){const e=new ow(QueryStringMachine.warnings,{closeButtonListener:()=>{e.hide(),e.dispose()}});e.show()}}showPopup(e,t){t&&(this.rootNode.interruptSubtreeInput(),this.modalNodeStack.push(e),this.setPDOMViewsVisible(!1),this.setNonModalVoicingVisible(!1)),e.layout&&e.layout(this.screenBoundsProperty.value),this.topLayer.addChild(e)}hidePopup(e,t){t&&(this.modalNodeStack.remove(e),0===this.modalNodeStack.length&&(this.setNonModalVoicingVisible(R.LY3.voicingFullyEnabledProperty.value),this.setPDOMViewsVisible(!0))),this.topLayer.removeChild(e)}resizeToWindow(){this.resizePending=!1,this.resize(window.innerWidth,window.innerHeight)}resize(e,t){this.resizeAction.execute(e,t)}start(){const e=[];this.screens.forEach(t=>{e.push(()=>{t.backgroundColorProperty.hasListener(this.updateBackground)||t.backgroundColorProperty.link(this.updateBackground),t.initializeModel()}),e.push(()=>{t.initializeView(this.simNameProperty,this.displayedSimNameProperty,this.screens.length,this.homeScreen===t)})});const t=i=>{setTimeout(()=>{e[i]();const s=Ve.Z.linear(0,e.length-1,.25,1,i);document.getElementById("progressBarForeground")&&document.getElementById("progressBarForeground").setAttribute("width",""+273*s),i+1{if(this.finishInit(this.screens),R.cQK.polyfillRequestAnimationFrame(),phet.chipper.queryParameters.profiler&&ew.start(this),this._isConstructionCompleteProperty.value=!0,this.boundRunAnimationLoop(),phet.joist.playbackModeEnabledProperty.value){0,Ep.Z.emit(0)}ye.Z.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||window.phetSplashScreen.dispose(),phet.chipper.brand,phet.chipper.queryParameters.continuousTest&&phet.chipper.reportContinuousTestResult({type:"continuous-test-load"}),phet.chipper.queryParameters.postMessageOnLoad&&window.parent&&window.parent.postMessage(JSON.stringify({type:"load",url:window.location.href}),"*")},25)},30/e.length)};t(0)}runAnimationLoop(){window.requestAnimationFrame(this.boundRunAnimationLoop),this.activeProperty.value&&!phet.joist.playbackModeEnabledProperty.value&&(this.frameCounter>0&&this.display.fuzzInputEvents(),this.stepOneFrame());const e=Date.now();tb.Z.emit(rV(this.lastAnimationFrameTime,e)),this.lastAnimationFrameTime=e,ye.Z.PHET_IO_ENABLED&&phet.phetio.phetioCommandProcessor.onAnimationLoop(this)}stepOneFrame(){const e=Date.now(),t=rV(this.lastStepTime,e);this.lastStepTime=e,t>0&&this.stepSimulation(t)}stepSimulation(e){this.stepSimulationAction.execute(e)}setPDOMViewsVisible(e){for(let t=0;taV()).catch(e=>console.log(e)),ye.Z.PHET_IO_ENABLED){const e=Z.Z.createLock({name:"phetioEngine"});Promise.resolve().then((function(){var e=new Error("Cannot find module '../../phet-io/js/phetioEngine.js'");throw e.code="MODULE_NOT_FOUND",e})).then(t=>{oV=t.default,e()}).catch(e=>console.log(e))}const hV=Z.Z.createLock({name:"launch"});const lV=new class{constructor(){this.launchComplete=!1}launch(e){Z.Z.addListener(()=>{var t;(window.phet.joist.launchSimulation=()=>{var t;(this.launchComplete=!0,ye.Z.PHET_IO_ENABLED)&&(null===(t=oV)||void 0===t||t.onCrossFrameListenersReady());e()},ye.Z.PHET_IO_ENABLED)&&(null===(t=oV)||void 0===t||t.initialize());phet.chipper.queryParameters.postMessageOnReady&&window.parent&&window.parent.postMessage(JSON.stringify({type:"ready",url:window.location.href}),"*"),ye.Z.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||phet.chipper.queryParameters.playbackMode||window.phet.joist.launchSimulation()}),hV(),window.phet.joist.launchCalled=!0}};Bt.Z.register("simLauncher",lV);const dV=lV;i(3623);const cV=new Y.Z("circuitConstructionKitDcVirtualLab"),uV=(0,st.Z)("CIRCUIT_CONSTRUCTION_KIT_DC_VIRTUAL_LAB");cV.register("CircuitConstructionKitDcVirtualLabStrings",uV);const pV=uV,mV=ye.Z.ROOT,gV=pV["circuit-construction-kit-dc-virtual-lab"].titleStringProperty;dV.launch(()=>{new nV(gV,[new GP(mV.createTandem("labScreen"),{showNoncontactAmmeters:!1})],{preferencesModel:new eb({simulationOptions:{customPreferences:[{createContent:e=>new Ph(e.createTandem("simPreferences"))}]}}),credits:{leadDesign:"Amy Rouinfar",softwareDevelopment:"Sam Reid, Denzell Barnett, Matthew Blackman",team:"Michael Dubson, Ariel Paul, Kathy Perkins, Wendy Adams, Carl Wieman",qualityAssurance:"Jaspe Arias, Steele Dalton, Amanda Davis, Alex Dornan, Jaron Droder, Bryce Griebenow, Clifford Hardin, Ethan Johnson, Megan Lai, Brooklyn Lash, Emily Miller, Matthew Moore, Liam Mulhall, Devon Quispe, Ben Roberts, Jacob Romero, Nancy Salpepi, Ethan Ward, Kathryn Woessner",graphicArts:"Bryce Gruneich, Mariah Hermsmeyer, Cheryl McCutchan"},phetioDesigned:!0}).start(),Ge.setOutputLevelForCategory("user-interface",0)})})()})()};

‪Circuit Construction Kit: DC - Virtual Lab‬ (2024)
Top Articles
Latest Posts
Article information

Author: Cheryll Lueilwitz

Last Updated:

Views: 5849

Rating: 4.3 / 5 (54 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Cheryll Lueilwitz

Birthday: 1997-12-23

Address: 4653 O'Kon Hill, Lake Juanstad, AR 65469

Phone: +494124489301

Job: Marketing Representative

Hobby: Reading, Ice skating, Foraging, BASE jumping, Hiking, Skateboarding, Kayaking

Introduction: My name is Cheryll Lueilwitz, I am a sparkling, clean, super, lucky, joyous, outstanding, lucky person who loves writing and wants to share my knowledge and understanding with you.