{"ast":null,"code":"import { FrameGraphTask } from \"../../frameGraphTask.js\";\nimport { FrameGraphDepthOfFieldMergeTask } from \"./depthOfFieldMergeTask.js\";\nimport { FrameGraphCircleOfConfusionTask } from \"./circleOfConfusionTask.js\";\nimport { FrameGraphDepthOfFieldBlurTask } from \"./depthOfFieldBlurTask.js\";\nimport { ThinDepthOfFieldEffect } from \"../../../PostProcesses/thinDepthOfFieldEffect.js\";\n/**\n * Task which applies a depth of field effect.\n */\nexport class FrameGraphDepthOfFieldTask extends FrameGraphTask {\n /**\n * The name of the task.\n */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n if (this._circleOfConfusion) {\n this._circleOfConfusion.name = `${name} Circle of Confusion`;\n }\n if (this._blurX) {\n for (let i = 0; i < this._blurX.length; i++) {\n this._blurX[i].name = `${name} Blur X`;\n this._blurY[i].name = `${name} Blur Y`;\n }\n }\n if (this._merge) {\n this._merge.name = `${name} Merge`;\n }\n }\n /**\n * Constructs a depth of field task.\n * @param name The name of the task.\n * @param frameGraph The frame graph this task belongs to.\n * @param engine The engine to use for the depth of field effect.\n * @param blurLevel The blur level of the depth of field effect (default: ThinDepthOfFieldEffectBlurLevel.Low).\n * @param hdr Whether the depth of field effect is HDR.\n */\n constructor(name, frameGraph, engine, blurLevel = 0 /* ThinDepthOfFieldEffectBlurLevel.Low */, hdr = false) {\n super(name, frameGraph);\n /**\n * The sampling mode to use for the source texture.\n */\n this.sourceSamplingMode = 2;\n /**\n * The sampling mode to use for the depth texture.\n */\n this.depthSamplingMode = 2;\n this._blurX = [];\n this._blurY = [];\n this._engine = engine;\n this.hdr = hdr;\n this._defaultPipelineTextureType = 0;\n if (hdr) {\n const caps = engine.getCaps();\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = 2;\n } else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = 1;\n }\n }\n this.depthOfField = new ThinDepthOfFieldEffect(name, engine, blurLevel, true);\n this._circleOfConfusion = new FrameGraphCircleOfConfusionTask(`${name} Circle of Confusion`, this._frameGraph, this.depthOfField._circleOfConfusion);\n const blurCount = this.depthOfField._depthOfFieldBlurX.length;\n for (let i = 0; i < blurCount; i++) {\n this._blurX.push(new FrameGraphDepthOfFieldBlurTask(`${name} Blur X`, this._frameGraph, this.depthOfField._depthOfFieldBlurX[i][0]));\n this._blurY.push(new FrameGraphDepthOfFieldBlurTask(`${name} Blur Y`, this._frameGraph, this.depthOfField._depthOfFieldBlurY[i][0]));\n }\n this._merge = new FrameGraphDepthOfFieldMergeTask(`${name} Merge`, this._frameGraph, this.depthOfField._dofMerge);\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\n }\n isReady() {\n return this.depthOfField.isReady();\n }\n record() {\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.camera === undefined) {\n throw new Error(\"FrameGraphDepthOfFieldTask: sourceTexture, depthTexture and camera are required\");\n }\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\n const textureSize = {\n width: sourceTextureDescription.size.width,\n height: sourceTextureDescription.size.height\n };\n const circleOfConfusionTextureFormat = this._engine.isWebGPU || this._engine.version > 1 ? 6 : 5;\n const textureCreationOptions = {\n size: textureSize,\n options: {\n createMipMaps: false,\n types: [this._defaultPipelineTextureType],\n formats: [circleOfConfusionTextureFormat],\n samples: 1,\n useSRGBBuffers: [false],\n labels: [\"\"]\n },\n sizeIsPercentage: false\n };\n const circleOfConfusionTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._circleOfConfusion.name, textureCreationOptions);\n this._circleOfConfusion.sourceTexture = this.sourceTexture; // texture not used by the CoC shader\n this._circleOfConfusion.depthTexture = this.depthTexture;\n this._circleOfConfusion.depthSamplingMode = this.depthSamplingMode;\n this._circleOfConfusion.camera = this.camera;\n this._circleOfConfusion.destinationTexture = circleOfConfusionTextureHandle;\n this._circleOfConfusion.record(true);\n textureCreationOptions.options.formats = [5];\n const blurSteps = [];\n for (let i = 0; i < this._blurX.length; i++) {\n const ratio = this.depthOfField._depthOfFieldBlurX[i][1];\n textureSize.width = Math.floor(sourceTextureDescription.size.width * ratio);\n textureSize.height = Math.floor(sourceTextureDescription.size.height * ratio);\n textureCreationOptions.options.labels[0] = \"step \" + (i + 1);\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._blurY[i].name, textureCreationOptions);\n this._blurY[i].sourceTexture = i === 0 ? this.sourceTexture : this._blurX[i - 1].outputTexture;\n this._blurY[i].sourceSamplingMode = 2;\n this._blurY[i].circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._blurY[i].destinationTexture = blurYTextureHandle;\n this._blurY[i].record(true);\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._blurX[i].name, textureCreationOptions);\n this._blurX[i].sourceTexture = this._blurY[i].outputTexture;\n this._blurX[i].sourceSamplingMode = 2;\n this._blurX[i].circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._blurX[i].destinationTexture = blurXTextureHandle;\n this._blurX[i].record(true);\n blurSteps.push(blurXTextureHandle);\n }\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.destinationTexture, this._merge.name, sourceTextureCreationOptions);\n this._merge.sourceTexture = this.sourceTexture;\n this._merge.sourceSamplingMode = this.sourceSamplingMode;\n this._merge.circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._merge.blurSteps = blurSteps;\n this._merge.destinationTexture = this.outputTexture;\n this._merge.record(true);\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\n passDisabled.setRenderTarget(this.outputTexture);\n passDisabled.setExecuteFunc(context => {\n context.copyTexture(this.sourceTexture);\n });\n }\n dispose() {\n this._circleOfConfusion.dispose();\n for (let i = 0; i < this._blurX.length; i++) {\n this._blurX[i].dispose();\n this._blurY[i].dispose();\n }\n this._merge.dispose();\n super.dispose();\n }\n}","map":{"version":3,"names":["FrameGraphTask","FrameGraphDepthOfFieldMergeTask","FrameGraphCircleOfConfusionTask","FrameGraphDepthOfFieldBlurTask","ThinDepthOfFieldEffect","FrameGraphDepthOfFieldTask","name","_name","_circleOfConfusion","_blurX","i","length","_blurY","_merge","constructor","frameGraph","engine","blurLevel","hdr","sourceSamplingMode","depthSamplingMode","_engine","_defaultPipelineTextureType","caps","getCaps","textureHalfFloatRender","textureFloatRender","depthOfField","_frameGraph","blurCount","_depthOfFieldBlurX","push","_depthOfFieldBlurY","_dofMerge","outputTexture","textureManager","createDanglingHandle","isReady","record","sourceTexture","undefined","depthTexture","camera","Error","sourceTextureDescription","getTextureDescription","textureSize","width","size","height","circleOfConfusionTextureFormat","isWebGPU","version","textureCreationOptions","options","createMipMaps","types","formats","samples","useSRGBBuffers","labels","sizeIsPercentage","circleOfConfusionTextureHandle","createRenderTargetTexture","destinationTexture","blurSteps","ratio","Math","floor","blurYTextureHandle","circleOfConfusionTexture","blurXTextureHandle","sourceTextureCreationOptions","getTextureCreationOptions","resolveDanglingHandle","passDisabled","addRenderPass","setRenderTarget","setExecuteFunc","context","copyTexture","dispose"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js"],"sourcesContent":["\nimport { FrameGraphTask } from \"../../frameGraphTask.js\";\nimport { FrameGraphDepthOfFieldMergeTask } from \"./depthOfFieldMergeTask.js\";\nimport { FrameGraphCircleOfConfusionTask } from \"./circleOfConfusionTask.js\";\nimport { FrameGraphDepthOfFieldBlurTask } from \"./depthOfFieldBlurTask.js\";\nimport { ThinDepthOfFieldEffect } from \"../../../PostProcesses/thinDepthOfFieldEffect.js\";\n/**\n * Task which applies a depth of field effect.\n */\nexport class FrameGraphDepthOfFieldTask extends FrameGraphTask {\n /**\n * The name of the task.\n */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n if (this._circleOfConfusion) {\n this._circleOfConfusion.name = `${name} Circle of Confusion`;\n }\n if (this._blurX) {\n for (let i = 0; i < this._blurX.length; i++) {\n this._blurX[i].name = `${name} Blur X`;\n this._blurY[i].name = `${name} Blur Y`;\n }\n }\n if (this._merge) {\n this._merge.name = `${name} Merge`;\n }\n }\n /**\n * Constructs a depth of field task.\n * @param name The name of the task.\n * @param frameGraph The frame graph this task belongs to.\n * @param engine The engine to use for the depth of field effect.\n * @param blurLevel The blur level of the depth of field effect (default: ThinDepthOfFieldEffectBlurLevel.Low).\n * @param hdr Whether the depth of field effect is HDR.\n */\n constructor(name, frameGraph, engine, blurLevel = 0 /* ThinDepthOfFieldEffectBlurLevel.Low */, hdr = false) {\n super(name, frameGraph);\n /**\n * The sampling mode to use for the source texture.\n */\n this.sourceSamplingMode = 2;\n /**\n * The sampling mode to use for the depth texture.\n */\n this.depthSamplingMode = 2;\n this._blurX = [];\n this._blurY = [];\n this._engine = engine;\n this.hdr = hdr;\n this._defaultPipelineTextureType = 0;\n if (hdr) {\n const caps = engine.getCaps();\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = 2;\n }\n else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = 1;\n }\n }\n this.depthOfField = new ThinDepthOfFieldEffect(name, engine, blurLevel, true);\n this._circleOfConfusion = new FrameGraphCircleOfConfusionTask(`${name} Circle of Confusion`, this._frameGraph, this.depthOfField._circleOfConfusion);\n const blurCount = this.depthOfField._depthOfFieldBlurX.length;\n for (let i = 0; i < blurCount; i++) {\n this._blurX.push(new FrameGraphDepthOfFieldBlurTask(`${name} Blur X`, this._frameGraph, this.depthOfField._depthOfFieldBlurX[i][0]));\n this._blurY.push(new FrameGraphDepthOfFieldBlurTask(`${name} Blur Y`, this._frameGraph, this.depthOfField._depthOfFieldBlurY[i][0]));\n }\n this._merge = new FrameGraphDepthOfFieldMergeTask(`${name} Merge`, this._frameGraph, this.depthOfField._dofMerge);\n this.outputTexture = this._frameGraph.textureManager.createDanglingHandle();\n }\n isReady() {\n return this.depthOfField.isReady();\n }\n record() {\n if (this.sourceTexture === undefined || this.depthTexture === undefined || this.camera === undefined) {\n throw new Error(\"FrameGraphDepthOfFieldTask: sourceTexture, depthTexture and camera are required\");\n }\n const sourceTextureDescription = this._frameGraph.textureManager.getTextureDescription(this.sourceTexture);\n const textureSize = {\n width: sourceTextureDescription.size.width,\n height: sourceTextureDescription.size.height,\n };\n const circleOfConfusionTextureFormat = this._engine.isWebGPU || this._engine.version > 1 ? 6 : 5;\n const textureCreationOptions = {\n size: textureSize,\n options: {\n createMipMaps: false,\n types: [this._defaultPipelineTextureType],\n formats: [circleOfConfusionTextureFormat],\n samples: 1,\n useSRGBBuffers: [false],\n labels: [\"\"],\n },\n sizeIsPercentage: false,\n };\n const circleOfConfusionTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._circleOfConfusion.name, textureCreationOptions);\n this._circleOfConfusion.sourceTexture = this.sourceTexture; // texture not used by the CoC shader\n this._circleOfConfusion.depthTexture = this.depthTexture;\n this._circleOfConfusion.depthSamplingMode = this.depthSamplingMode;\n this._circleOfConfusion.camera = this.camera;\n this._circleOfConfusion.destinationTexture = circleOfConfusionTextureHandle;\n this._circleOfConfusion.record(true);\n textureCreationOptions.options.formats = [5];\n const blurSteps = [];\n for (let i = 0; i < this._blurX.length; i++) {\n const ratio = this.depthOfField._depthOfFieldBlurX[i][1];\n textureSize.width = Math.floor(sourceTextureDescription.size.width * ratio);\n textureSize.height = Math.floor(sourceTextureDescription.size.height * ratio);\n textureCreationOptions.options.labels[0] = \"step \" + (i + 1);\n const blurYTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._blurY[i].name, textureCreationOptions);\n this._blurY[i].sourceTexture = i === 0 ? this.sourceTexture : this._blurX[i - 1].outputTexture;\n this._blurY[i].sourceSamplingMode = 2;\n this._blurY[i].circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._blurY[i].destinationTexture = blurYTextureHandle;\n this._blurY[i].record(true);\n const blurXTextureHandle = this._frameGraph.textureManager.createRenderTargetTexture(this._blurX[i].name, textureCreationOptions);\n this._blurX[i].sourceTexture = this._blurY[i].outputTexture;\n this._blurX[i].sourceSamplingMode = 2;\n this._blurX[i].circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._blurX[i].destinationTexture = blurXTextureHandle;\n this._blurX[i].record(true);\n blurSteps.push(blurXTextureHandle);\n }\n const sourceTextureCreationOptions = this._frameGraph.textureManager.getTextureCreationOptions(this.sourceTexture);\n this._frameGraph.textureManager.resolveDanglingHandle(this.outputTexture, this.destinationTexture, this._merge.name, sourceTextureCreationOptions);\n this._merge.sourceTexture = this.sourceTexture;\n this._merge.sourceSamplingMode = this.sourceSamplingMode;\n this._merge.circleOfConfusionTexture = circleOfConfusionTextureHandle;\n this._merge.blurSteps = blurSteps;\n this._merge.destinationTexture = this.outputTexture;\n this._merge.record(true);\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\n passDisabled.setRenderTarget(this.outputTexture);\n passDisabled.setExecuteFunc((context) => {\n context.copyTexture(this.sourceTexture);\n });\n }\n dispose() {\n this._circleOfConfusion.dispose();\n for (let i = 0; i < this._blurX.length; i++) {\n this._blurX[i].dispose();\n this._blurY[i].dispose();\n }\n this._merge.dispose();\n super.dispose();\n }\n}\n"],"mappings":"AACA,SAASA,cAAc,QAAQ,yBAAyB;AACxD,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SAASC,8BAA8B,QAAQ,2BAA2B;AAC1E,SAASC,sBAAsB,QAAQ,kDAAkD;AACzF;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,SAASL,cAAc,CAAC;EAC3D;AACJ;AACA;EACI,IAAIM,IAAIA,CAAA,EAAG;IACP,OAAO,IAAI,CAACC,KAAK;EACrB;EACA,IAAID,IAAIA,CAACA,IAAI,EAAE;IACX,IAAI,CAACC,KAAK,GAAGD,IAAI;IACjB,IAAI,IAAI,CAACE,kBAAkB,EAAE;MACzB,IAAI,CAACA,kBAAkB,CAACF,IAAI,GAAG,GAAGA,IAAI,sBAAsB;IAChE;IACA,IAAI,IAAI,CAACG,MAAM,EAAE;MACb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACD,MAAM,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;QACzC,IAAI,CAACD,MAAM,CAACC,CAAC,CAAC,CAACJ,IAAI,GAAG,GAAGA,IAAI,SAAS;QACtC,IAAI,CAACM,MAAM,CAACF,CAAC,CAAC,CAACJ,IAAI,GAAG,GAAGA,IAAI,SAAS;MAC1C;IACJ;IACA,IAAI,IAAI,CAACO,MAAM,EAAE;MACb,IAAI,CAACA,MAAM,CAACP,IAAI,GAAG,GAAGA,IAAI,QAAQ;IACtC;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIQ,WAAWA,CAACR,IAAI,EAAES,UAAU,EAAEC,MAAM,EAAEC,SAAS,GAAG,CAAC,CAAC,2CAA2CC,GAAG,GAAG,KAAK,EAAE;IACxG,KAAK,CAACZ,IAAI,EAAES,UAAU,CAAC;IACvB;AACR;AACA;IACQ,IAAI,CAACI,kBAAkB,GAAG,CAAC;IAC3B;AACR;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,CAAC;IAC1B,IAAI,CAACX,MAAM,GAAG,EAAE;IAChB,IAAI,CAACG,MAAM,GAAG,EAAE;IAChB,IAAI,CAACS,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACE,GAAG,GAAGA,GAAG;IACd,IAAI,CAACI,2BAA2B,GAAG,CAAC;IACpC,IAAIJ,GAAG,EAAE;MACL,MAAMK,IAAI,GAAGP,MAAM,CAACQ,OAAO,CAAC,CAAC;MAC7B,IAAID,IAAI,CAACE,sBAAsB,EAAE;QAC7B,IAAI,CAACH,2BAA2B,GAAG,CAAC;MACxC,CAAC,MACI,IAAIC,IAAI,CAACG,kBAAkB,EAAE;QAC9B,IAAI,CAACJ,2BAA2B,GAAG,CAAC;MACxC;IACJ;IACA,IAAI,CAACK,YAAY,GAAG,IAAIvB,sBAAsB,CAACE,IAAI,EAAEU,MAAM,EAAEC,SAAS,EAAE,IAAI,CAAC;IAC7E,IAAI,CAACT,kBAAkB,GAAG,IAAIN,+BAA+B,CAAC,GAAGI,IAAI,sBAAsB,EAAE,IAAI,CAACsB,WAAW,EAAE,IAAI,CAACD,YAAY,CAACnB,kBAAkB,CAAC;IACpJ,MAAMqB,SAAS,GAAG,IAAI,CAACF,YAAY,CAACG,kBAAkB,CAACnB,MAAM;IAC7D,KAAK,IAAID,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmB,SAAS,EAAEnB,CAAC,EAAE,EAAE;MAChC,IAAI,CAACD,MAAM,CAACsB,IAAI,CAAC,IAAI5B,8BAA8B,CAAC,GAAGG,IAAI,SAAS,EAAE,IAAI,CAACsB,WAAW,EAAE,IAAI,CAACD,YAAY,CAACG,kBAAkB,CAACpB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACpI,IAAI,CAACE,MAAM,CAACmB,IAAI,CAAC,IAAI5B,8BAA8B,CAAC,GAAGG,IAAI,SAAS,EAAE,IAAI,CAACsB,WAAW,EAAE,IAAI,CAACD,YAAY,CAACK,kBAAkB,CAACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxI;IACA,IAAI,CAACG,MAAM,GAAG,IAAIZ,+BAA+B,CAAC,GAAGK,IAAI,QAAQ,EAAE,IAAI,CAACsB,WAAW,EAAE,IAAI,CAACD,YAAY,CAACM,SAAS,CAAC;IACjH,IAAI,CAACC,aAAa,GAAG,IAAI,CAACN,WAAW,CAACO,cAAc,CAACC,oBAAoB,CAAC,CAAC;EAC/E;EACAC,OAAOA,CAAA,EAAG;IACN,OAAO,IAAI,CAACV,YAAY,CAACU,OAAO,CAAC,CAAC;EACtC;EACAC,MAAMA,CAAA,EAAG;IACL,IAAI,IAAI,CAACC,aAAa,KAAKC,SAAS,IAAI,IAAI,CAACC,YAAY,KAAKD,SAAS,IAAI,IAAI,CAACE,MAAM,KAAKF,SAAS,EAAE;MAClG,MAAM,IAAIG,KAAK,CAAC,iFAAiF,CAAC;IACtG;IACA,MAAMC,wBAAwB,GAAG,IAAI,CAAChB,WAAW,CAACO,cAAc,CAACU,qBAAqB,CAAC,IAAI,CAACN,aAAa,CAAC;IAC1G,MAAMO,WAAW,GAAG;MAChBC,KAAK,EAAEH,wBAAwB,CAACI,IAAI,CAACD,KAAK;MAC1CE,MAAM,EAAEL,wBAAwB,CAACI,IAAI,CAACC;IAC1C,CAAC;IACD,MAAMC,8BAA8B,GAAG,IAAI,CAAC7B,OAAO,CAAC8B,QAAQ,IAAI,IAAI,CAAC9B,OAAO,CAAC+B,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAChG,MAAMC,sBAAsB,GAAG;MAC3BL,IAAI,EAAEF,WAAW;MACjBQ,OAAO,EAAE;QACLC,aAAa,EAAE,KAAK;QACpBC,KAAK,EAAE,CAAC,IAAI,CAAClC,2BAA2B,CAAC;QACzCmC,OAAO,EAAE,CAACP,8BAA8B,CAAC;QACzCQ,OAAO,EAAE,CAAC;QACVC,cAAc,EAAE,CAAC,KAAK,CAAC;QACvBC,MAAM,EAAE,CAAC,EAAE;MACf,CAAC;MACDC,gBAAgB,EAAE;IACtB,CAAC;IACD,MAAMC,8BAA8B,GAAG,IAAI,CAAClC,WAAW,CAACO,cAAc,CAAC4B,yBAAyB,CAAC,IAAI,CAACvD,kBAAkB,CAACF,IAAI,EAAE+C,sBAAsB,CAAC;IACtJ,IAAI,CAAC7C,kBAAkB,CAAC+B,aAAa,GAAG,IAAI,CAACA,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC/B,kBAAkB,CAACiC,YAAY,GAAG,IAAI,CAACA,YAAY;IACxD,IAAI,CAACjC,kBAAkB,CAACY,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;IAClE,IAAI,CAACZ,kBAAkB,CAACkC,MAAM,GAAG,IAAI,CAACA,MAAM;IAC5C,IAAI,CAAClC,kBAAkB,CAACwD,kBAAkB,GAAGF,8BAA8B;IAC3E,IAAI,CAACtD,kBAAkB,CAAC8B,MAAM,CAAC,IAAI,CAAC;IACpCe,sBAAsB,CAACC,OAAO,CAACG,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAMQ,SAAS,GAAG,EAAE;IACpB,KAAK,IAAIvD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACD,MAAM,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;MACzC,MAAMwD,KAAK,GAAG,IAAI,CAACvC,YAAY,CAACG,kBAAkB,CAACpB,CAAC,CAAC,CAAC,CAAC,CAAC;MACxDoC,WAAW,CAACC,KAAK,GAAGoB,IAAI,CAACC,KAAK,CAACxB,wBAAwB,CAACI,IAAI,CAACD,KAAK,GAAGmB,KAAK,CAAC;MAC3EpB,WAAW,CAACG,MAAM,GAAGkB,IAAI,CAACC,KAAK,CAACxB,wBAAwB,CAACI,IAAI,CAACC,MAAM,GAAGiB,KAAK,CAAC;MAC7Eb,sBAAsB,CAACC,OAAO,CAACM,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,IAAIlD,CAAC,GAAG,CAAC,CAAC;MAC5D,MAAM2D,kBAAkB,GAAG,IAAI,CAACzC,WAAW,CAACO,cAAc,CAAC4B,yBAAyB,CAAC,IAAI,CAACnD,MAAM,CAACF,CAAC,CAAC,CAACJ,IAAI,EAAE+C,sBAAsB,CAAC;MACjI,IAAI,CAACzC,MAAM,CAACF,CAAC,CAAC,CAAC6B,aAAa,GAAG7B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC6B,aAAa,GAAG,IAAI,CAAC9B,MAAM,CAACC,CAAC,GAAG,CAAC,CAAC,CAACwB,aAAa;MAC9F,IAAI,CAACtB,MAAM,CAACF,CAAC,CAAC,CAACS,kBAAkB,GAAG,CAAC;MACrC,IAAI,CAACP,MAAM,CAACF,CAAC,CAAC,CAAC4D,wBAAwB,GAAGR,8BAA8B;MACxE,IAAI,CAAClD,MAAM,CAACF,CAAC,CAAC,CAACsD,kBAAkB,GAAGK,kBAAkB;MACtD,IAAI,CAACzD,MAAM,CAACF,CAAC,CAAC,CAAC4B,MAAM,CAAC,IAAI,CAAC;MAC3B,MAAMiC,kBAAkB,GAAG,IAAI,CAAC3C,WAAW,CAACO,cAAc,CAAC4B,yBAAyB,CAAC,IAAI,CAACtD,MAAM,CAACC,CAAC,CAAC,CAACJ,IAAI,EAAE+C,sBAAsB,CAAC;MACjI,IAAI,CAAC5C,MAAM,CAACC,CAAC,CAAC,CAAC6B,aAAa,GAAG,IAAI,CAAC3B,MAAM,CAACF,CAAC,CAAC,CAACwB,aAAa;MAC3D,IAAI,CAACzB,MAAM,CAACC,CAAC,CAAC,CAACS,kBAAkB,GAAG,CAAC;MACrC,IAAI,CAACV,MAAM,CAACC,CAAC,CAAC,CAAC4D,wBAAwB,GAAGR,8BAA8B;MACxE,IAAI,CAACrD,MAAM,CAACC,CAAC,CAAC,CAACsD,kBAAkB,GAAGO,kBAAkB;MACtD,IAAI,CAAC9D,MAAM,CAACC,CAAC,CAAC,CAAC4B,MAAM,CAAC,IAAI,CAAC;MAC3B2B,SAAS,CAAClC,IAAI,CAACwC,kBAAkB,CAAC;IACtC;IACA,MAAMC,4BAA4B,GAAG,IAAI,CAAC5C,WAAW,CAACO,cAAc,CAACsC,yBAAyB,CAAC,IAAI,CAAClC,aAAa,CAAC;IAClH,IAAI,CAACX,WAAW,CAACO,cAAc,CAACuC,qBAAqB,CAAC,IAAI,CAACxC,aAAa,EAAE,IAAI,CAAC8B,kBAAkB,EAAE,IAAI,CAACnD,MAAM,CAACP,IAAI,EAAEkE,4BAA4B,CAAC;IAClJ,IAAI,CAAC3D,MAAM,CAAC0B,aAAa,GAAG,IAAI,CAACA,aAAa;IAC9C,IAAI,CAAC1B,MAAM,CAACM,kBAAkB,GAAG,IAAI,CAACA,kBAAkB;IACxD,IAAI,CAACN,MAAM,CAACyD,wBAAwB,GAAGR,8BAA8B;IACrE,IAAI,CAACjD,MAAM,CAACoD,SAAS,GAAGA,SAAS;IACjC,IAAI,CAACpD,MAAM,CAACmD,kBAAkB,GAAG,IAAI,CAAC9B,aAAa;IACnD,IAAI,CAACrB,MAAM,CAACyB,MAAM,CAAC,IAAI,CAAC;IACxB,MAAMqC,YAAY,GAAG,IAAI,CAAC/C,WAAW,CAACgD,aAAa,CAAC,IAAI,CAACtE,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC;IAClFqE,YAAY,CAACE,eAAe,CAAC,IAAI,CAAC3C,aAAa,CAAC;IAChDyC,YAAY,CAACG,cAAc,CAAEC,OAAO,IAAK;MACrCA,OAAO,CAACC,WAAW,CAAC,IAAI,CAACzC,aAAa,CAAC;IAC3C,CAAC,CAAC;EACN;EACA0C,OAAOA,CAAA,EAAG;IACN,IAAI,CAACzE,kBAAkB,CAACyE,OAAO,CAAC,CAAC;IACjC,KAAK,IAAIvE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACD,MAAM,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;MACzC,IAAI,CAACD,MAAM,CAACC,CAAC,CAAC,CAACuE,OAAO,CAAC,CAAC;MACxB,IAAI,CAACrE,MAAM,CAACF,CAAC,CAAC,CAACuE,OAAO,CAAC,CAAC;IAC5B;IACA,IAAI,CAACpE,MAAM,CAACoE,OAAO,CAAC,CAAC;IACrB,KAAK,CAACA,OAAO,CAAC,CAAC;EACnB;AACJ","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}