@famibee/skynovel 1.64.22 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +3 -3
  2. package/dist/Button.js +131 -163
  3. package/dist/Button.js.map +1 -1
  4. package/dist/CallStack.js +19 -22
  5. package/dist/CallStack.js.map +1 -1
  6. package/dist/CmnInterface.js +91 -0
  7. package/dist/CmnInterface.js.map +1 -0
  8. package/dist/CmnLib.js +94 -0
  9. package/dist/CmnLib.js.map +1 -0
  10. package/dist/Config.js +26 -0
  11. package/dist/Config.js.map +1 -0
  12. package/dist/ConfigBase.js +152 -0
  13. package/dist/ConfigBase.js.map +1 -0
  14. package/dist/DebugMng.js +89 -102
  15. package/dist/DebugMng.js.map +1 -1
  16. package/dist/EventListenerCtn.js +21 -0
  17. package/dist/EventListenerCtn.js.map +1 -0
  18. package/dist/EventMng.js +1435 -1577
  19. package/dist/EventMng.js.map +1 -1
  20. package/dist/Grammar.js +194 -0
  21. package/dist/Grammar.js.map +1 -0
  22. package/dist/GrpLayer.js +163 -195
  23. package/dist/GrpLayer.js.map +1 -1
  24. package/dist/Layer.js +260 -0
  25. package/dist/Layer.js.map +1 -0
  26. package/dist/LayerMng.js +810 -992
  27. package/dist/LayerMng.js.map +1 -1
  28. package/dist/Main.js +144 -393
  29. package/dist/Main.js.map +1 -1
  30. package/dist/PropParser.js +936 -834
  31. package/dist/PropParser.js.map +1 -1
  32. package/dist/Reading.js +918 -786
  33. package/dist/Reading.js.map +1 -1
  34. package/dist/RubySpliter.js +59 -89
  35. package/dist/RubySpliter.js.map +1 -1
  36. package/dist/ScriptIterator.js +805 -1035
  37. package/dist/ScriptIterator.js.map +1 -1
  38. package/dist/SndBuf.js +1097 -1326
  39. package/dist/SndBuf.js.map +1 -1
  40. package/dist/SoundMng.js +124 -135
  41. package/dist/SoundMng.js.map +1 -1
  42. package/dist/SpritesMng.js +220 -232
  43. package/dist/SpritesMng.js.map +1 -1
  44. package/dist/SysBase.js +1729 -0
  45. package/dist/SysBase.js.map +1 -0
  46. package/dist/TxtLayer.js +1212 -1398
  47. package/dist/TxtLayer.js.map +1 -1
  48. package/dist/Variable.js +398 -466
  49. package/dist/Variable.js.map +1 -1
  50. package/dist/chunk.js +18 -0
  51. package/dist/gamepad.js +723 -511
  52. package/dist/gamepad.js.map +1 -1
  53. package/dist/pixi.js +13422 -0
  54. package/dist/pixi.js.map +1 -0
  55. package/dist/platform.js +424 -369
  56. package/dist/platform.js.map +1 -1
  57. package/dist/sn/AnalyzeTagArg.d.ts +1 -1
  58. package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
  59. package/dist/sn/CmnInterface.d.ts +3 -1
  60. package/dist/sn/CmnInterface.d.ts.map +1 -1
  61. package/dist/sn/CmnLib.d.ts.map +1 -1
  62. package/dist/sn/CmnTween.d.ts +7 -7
  63. package/dist/sn/CmnTween.d.ts.map +1 -1
  64. package/dist/sn/EventMng.d.ts.map +1 -1
  65. package/dist/sn/FocusMng.d.ts.map +1 -1
  66. package/dist/sn/Grammar.d.ts +1 -1
  67. package/dist/sn/Grammar.d.ts.map +1 -1
  68. package/dist/sn/Log.d.ts.map +1 -1
  69. package/dist/sn/Main.d.ts.map +1 -1
  70. package/dist/sn/Pages.d.ts.map +1 -1
  71. package/dist/sn/PropParser.d.ts +2 -2
  72. package/dist/sn/PropParser.d.ts.map +1 -1
  73. package/dist/sn/Reading.d.ts +7 -0
  74. package/dist/sn/Reading.d.ts.map +1 -1
  75. package/dist/sn/RubySpliter.d.ts.map +1 -1
  76. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  77. package/dist/sn/SndBuf.d.ts +27 -16
  78. package/dist/sn/SndBuf.d.ts.map +1 -1
  79. package/dist/sn/SoundMng.d.ts +4 -1
  80. package/dist/sn/SoundMng.d.ts.map +1 -1
  81. package/dist/sn/SysBase.d.ts.map +1 -1
  82. package/dist/sn/TxtStage.d.ts +4 -1
  83. package/dist/sn/TxtStage.d.ts.map +1 -1
  84. package/dist/test/ValTest.d.ts +1 -1
  85. package/dist/test/ValTest.d.ts.map +1 -1
  86. package/dist/web.js +653 -8
  87. package/dist/web.js.map +1 -1
  88. package/dist_app/Button.js +131 -163
  89. package/dist_app/Button.js.map +1 -1
  90. package/dist_app/CallStack.js +19 -22
  91. package/dist_app/CallStack.js.map +1 -1
  92. package/dist_app/CmnInterface.js +91 -0
  93. package/dist_app/CmnInterface.js.map +1 -0
  94. package/dist_app/CmnLib.js +94 -0
  95. package/dist_app/CmnLib.js.map +1 -0
  96. package/dist_app/Config.js +26 -0
  97. package/dist_app/Config.js.map +1 -0
  98. package/dist_app/ConfigBase.js +152 -0
  99. package/dist_app/ConfigBase.js.map +1 -0
  100. package/dist_app/DebugMng.js +92 -0
  101. package/dist_app/DebugMng.js.map +1 -0
  102. package/dist_app/EventListenerCtn.js +21 -0
  103. package/dist_app/EventListenerCtn.js.map +1 -0
  104. package/dist_app/EventMng.js +1435 -1577
  105. package/dist_app/EventMng.js.map +1 -1
  106. package/dist_app/Grammar.js +194 -0
  107. package/dist_app/Grammar.js.map +1 -0
  108. package/dist_app/GrpLayer.js +163 -195
  109. package/dist_app/GrpLayer.js.map +1 -1
  110. package/dist_app/Layer.js +260 -0
  111. package/dist_app/Layer.js.map +1 -0
  112. package/dist_app/LayerMng.js +810 -992
  113. package/dist_app/LayerMng.js.map +1 -1
  114. package/dist_app/Main.js +144 -392
  115. package/dist_app/Main.js.map +1 -1
  116. package/dist_app/PropParser.js +936 -834
  117. package/dist_app/PropParser.js.map +1 -1
  118. package/dist_app/Reading.js +918 -786
  119. package/dist_app/Reading.js.map +1 -1
  120. package/dist_app/RubySpliter.js +59 -89
  121. package/dist_app/RubySpliter.js.map +1 -1
  122. package/dist_app/ScriptIterator.js +805 -1034
  123. package/dist_app/ScriptIterator.js.map +1 -1
  124. package/dist_app/SndBuf.js +1097 -1326
  125. package/dist_app/SndBuf.js.map +1 -1
  126. package/dist_app/SoundMng.js +124 -135
  127. package/dist_app/SoundMng.js.map +1 -1
  128. package/dist_app/SpritesMng.js +220 -231
  129. package/dist_app/SpritesMng.js.map +1 -1
  130. package/dist_app/SysBase.js +1729 -0
  131. package/dist_app/SysBase.js.map +1 -0
  132. package/dist_app/TxtLayer.js +1212 -1397
  133. package/dist_app/TxtLayer.js.map +1 -1
  134. package/dist_app/Variable.js +398 -466
  135. package/dist_app/Variable.js.map +1 -1
  136. package/dist_app/app.js +211 -8
  137. package/dist_app/app.js.map +1 -1
  138. package/dist_app/appMain.js +20 -21
  139. package/dist_app/appMain.js.map +1 -1
  140. package/dist_app/chunk.js +18 -0
  141. package/dist_app/gamepad.js +723 -511
  142. package/dist_app/gamepad.js.map +1 -1
  143. package/dist_app/pixi.js +11181 -0
  144. package/dist_app/pixi.js.map +1 -0
  145. package/dist_app/platform.js +424 -369
  146. package/dist_app/platform.js.map +1 -1
  147. package/dist_app/preload.js +2 -2
  148. package/dist_app/preload.js.map +1 -1
  149. package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
  150. package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
  151. package/dist_app/sn/CmnInterface.d.ts +3 -1
  152. package/dist_app/sn/CmnInterface.d.ts.map +1 -1
  153. package/dist_app/sn/CmnLib.d.ts.map +1 -1
  154. package/dist_app/sn/CmnTween.d.ts +7 -7
  155. package/dist_app/sn/CmnTween.d.ts.map +1 -1
  156. package/dist_app/sn/EventMng.d.ts.map +1 -1
  157. package/dist_app/sn/FocusMng.d.ts.map +1 -1
  158. package/dist_app/sn/Grammar.d.ts +1 -1
  159. package/dist_app/sn/Grammar.d.ts.map +1 -1
  160. package/dist_app/sn/Log.d.ts.map +1 -1
  161. package/dist_app/sn/Main.d.ts.map +1 -1
  162. package/dist_app/sn/Pages.d.ts.map +1 -1
  163. package/dist_app/sn/PropParser.d.ts +2 -2
  164. package/dist_app/sn/PropParser.d.ts.map +1 -1
  165. package/dist_app/sn/Reading.d.ts +7 -0
  166. package/dist_app/sn/Reading.d.ts.map +1 -1
  167. package/dist_app/sn/RubySpliter.d.ts.map +1 -1
  168. package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
  169. package/dist_app/sn/SndBuf.d.ts +27 -16
  170. package/dist_app/sn/SndBuf.d.ts.map +1 -1
  171. package/dist_app/sn/SoundMng.d.ts +4 -1
  172. package/dist_app/sn/SoundMng.d.ts.map +1 -1
  173. package/dist_app/sn/SysBase.d.ts.map +1 -1
  174. package/dist_app/sn/TxtStage.d.ts +4 -1
  175. package/dist_app/sn/TxtStage.d.ts.map +1 -1
  176. package/dist_app/test/ValTest.d.ts +1 -1
  177. package/dist_app/test/ValTest.d.ts.map +1 -1
  178. package/package.json +24 -14
  179. package/dist/CmnTween.js +0 -193
  180. package/dist/CmnTween.js.map +0 -1
  181. package/dist/web2.js +0 -21644
  182. package/dist/web2.js.map +0 -1
  183. package/dist_app/CmnTween.js +0 -193
  184. package/dist_app/CmnTween.js.map +0 -1
  185. package/dist_app/app2.js +0 -18547
  186. package/dist_app/app2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LayerMng.js","sources":["../src/sn/Pages.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: TArg, readonly sys: SysBase, readonly val: T_Variable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: TArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: TArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: TArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_GetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements T_GetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: T_Main): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: TArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${String(a)}; ${b_color} position: absolute; left:${\n\t\t\tString(FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale)\n\t\t}px; top: ${\n\t\t\tString(FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale)\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${String(sx)}, ${String(sy)}) rotate(${\n\t\t\tString(r)}deg);\" width=\"${\n\t\t\tString(rct.width *FrameMng.#sys.cvsScale)\n\t\t}\" height=\"${\n\t\t\tString(rct.height *FrameMng.#sys.cvsScale)\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${String(e)}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: TArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0),\n\t\t\targChk_Num(a, 'y', 0),\n\t\t\targChk_Num(a, 'width', CmnLib.stageW),\n\t\t\targChk_Num(a, 'height', CmnLib.stageH),\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) {\n\t\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\n\t\t\t\t\t// これをすると二度目のフレーム画面表示で画像が壊れる\n\t\t\t\t\t// next();\n\t\t\t\t\t// URL.revokeObjectURL(r.src);\n\t\t\t\t\t// return;\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${String(e)}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.style.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: TArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst v = win[<keyof Window>var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: TArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: TArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = String(++this.#zIdx);\n\t\telse if ('index' in hArg) s.zIndex = String(argChk_Num(hArg, 'index', 0));\n\t\telse if (hArg.dive) s.zIndex = String(-++this.#zIdx);\t// -は必要\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\ts.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${String(sx)}, ${String(sy)}) rotate(${String(r)}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: TArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = (_d: {a: number})=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = d=> {\n\t\t\t\tf.style.opacity = String(d.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', d.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = (_d: {\n\t\t\tx: number;\n\t\t\ty: number;\n\t\t\tsx: number;\n\t\t\tsy: number;\n\t\t\tr: number;\n\t\t})=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = d=> {\n\t\t\t\tf.style.left = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +d.x *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.top = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +d.y *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.transform = `scale(${String(d.sx)}, ${String(d.sy)}) rotate(${String(d.r)}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', d.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', d.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', d.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', d.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', d.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = (_d: {w: number})=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = d=> {\n\t\t\t\tf.width = `${String(d.w *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', d.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = (_d: {h: number})=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = d=> {\n\t\t\t\tf.height = `${String(d.h *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', d.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), d=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tfncA(d); fncXYSR(d); fncW(d); fncH(d);\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg, T_HTag} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak: ()=> void;\n};\n\ntype T_LOG_DATA = TArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: T_HTag, private readonly val: T_Variable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: TArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: TArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: TArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TW_NM_TRANS} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_HPage, T_GetFrm, T_PropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements T_GetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable, private readonly main: T_Main, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: T_PropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng, this.appPixi);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tTxtLayer.msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('|&emsp;《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: TArg)=> { /* empty */ };\n\tbreakPage = (_hArg: TArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: TArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: TArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: TArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) TxtLayer.msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: TArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\t// page=both で両面削除\n\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-205.html\n\t\t\tif (hArg.page === 'both') {\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t\t});\n\t\t};\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {comp(); return false}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_NM_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\ttw.start();\n\t\t\tticker.add(fncRender);\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: TArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: TArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\n\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: TArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render) {\n\t\t\tif (this.#evtMng.isSkipping) lay.renderStart(true);\n\t\t\telse {\n\t\t\t\tlay.renderStart(false);\n\t\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t\t}\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of CmnTween.aLayerPrpNm) (<any>spBack)[nm] = lay[nm];\n\t\t});\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\t//MARK: 文字を追加する\n\t#ch(hArg: TArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\t// [ch text=\"\"]に改行を含められる方法\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-275.html\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: TArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: TArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {TxtLayer.msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: TArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: TArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: TArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: TArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: TArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: TArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: TArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: TArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: TArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: TArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: TArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: TArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: TArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: TArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: T_HPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"names":["Pages","layname","cls","fore","back","hArg","sys","val","ret","fncF","b","nm","argChk_Boolean","#pg","valnm","hash","def","v","aPrm","FrameMng","hTag","appPixi","o","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#cfg","#sys","#main","cfg","main","#evtMng","evtMng","#hIfrm","f","id","style","#hIfrmVisibleBk","src","a","sx","sy","vn","b_color","rct","#rect","RPN_ADD_FRAME","Reading","url","SEARCH_PATH_ARG_EXT","ld","Loader","LoaderResource","res","next","r","e","_ldr","hRes","#hDisabled","iLastSep","path_parent","path_pa_pa","m","br","_","p1","win","i","#loadPic2Img","argChk_Num","CmnLib","img","onload","oUrl","#hEncImgOUrl","aImg","#hARetImg","srcNoPrm","Prm","path","ld2","s2","u2","ri","x","y","w","h","var_name","text","#zIdx","s","d","alpha","scale_x","scale_y","rotate","width","height","hNow","hArg2","CmnTween","fncA","_d","fncXYSR","fncW","fncH","Log","oCfg","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","cnvSArg","LayerMng","scrItr","sndMng","prpPrs","fncResizeLay","#modeLnSub","ln","#aLayName","#hPages","#frmMng","#elc","tid","#log","TxtLayer","me","GrpLayer","#loadplugin","#snapshot","#snapshot4proc","RPN_SNAPSHOT","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","SpritesMng","#dump_lay","#enable_event","#button","#cmdTxt","#bg_color","parseColor","grp","Graphics","#fore","#back","#stage","#spTransBack","#spTransFore","fncTxt_b_alpha","_name","#foreachRedrawTxtLayBack","fncBtnFont","Button","DesignCast","type","#hProcDbgRes","Container","EventListenerCtn","lay","gdc","#selectNode","#curTxtlay","#modeLn","node","pages","#grpCover","visible","bg_color","p","RubySpliter","TxtStage","g_alpha","cmd","tl","_record","_hArg","dt","getDateStr","fn0","PROTOCOL_USERDATA","PROTOCOL_DL","layer","aBk","ctn","#getLayers","sp","argChk_Color","rnd","autoDetectRenderer","pg","re","renTx","RenderTexture","fn","join","RPN_LOADPLUGIN","addStyle","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","dive","idx_dive","pg_dive","back_dive","fore_dive","idx_back_dive","idx_fore_dive","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","Sprite","#rtTransFore","sDoTrans","aLayFore","comp","idx","TW_NM_TRANS","aBackTransAfter","aBack","ticker","renderer","fncRenderBack","oldFnc","render","fncRenderFore","fncRender","glsl","rule","comp2","uniforms","Texture","Filter","tw","isStop","fnc","aLn","layers","ai","bi","l","aLayCtn","c","uint","fncV","name","finishBlendLayer","hTo","arrive","backlay","spBack","Layer","#add_filter2","#enable_filter2","len","record","doRecLog","#pgTxtlay","tf","t","$hPages","aSort","ps"],"mappings":"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"}
1
+ {"version":3,"file":"LayerMng.js","names":["cls: string","hArg: TArg","sys: SysBase","val: T_Variable","ret: {isWait: boolean}","#pg","#cfg","#sys","#main","appPixi: Application","val: T_Variable","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#evtMng","#hIfrm","#hIfrmVisibleBk","#rect","#hDisabled","#loadPic2Img","#hEncImgOUrl","#hARetImg","win: any","#zIdx","hNow: {[val_name: string]: number}","hTo: {[val_name: string]: number}","oCfg: T_CFG","hTag: T_HTag","val: T_Variable","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","#stage","#frmMng","#bg_color","#log","#elc","cfg: Config","hTag: T_HTag","appPixi: Application","val: T_Variable","main: T_Main","scrItr: ScriptIterator","sys: SysBase","#modeLnSub","#aLayName","#hPages","#evtMng","tid: NodeJS.Timeout | undefined","#loadplugin","#snapshot","#snapshot4proc","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","#dump_lay","#enable_event","#button","#cmdTxt","#fore","#back","#spTransBack","#spTransFore","#foreachRedrawTxtLayBack","#hProcDbgRes","#selectNode","#curTxtlay","#modeLn","#grpCover","ret: [Sprite, boolean]","#getLayers","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","#rtTransFore","aPrm: Promise<void>[]","aBackTransAfter: Sprite[]","#add_filter2","#enable_filter2","#pgTxtlay","o: any","aSort: {ln: string, idx: number}[]"],"sources":["../src/sn/Pages.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: TArg, readonly sys: SysBase, readonly val: T_Variable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: TArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: TArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: TArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_GetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements T_GetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: T_Main): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: TArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${String(a)}; ${b_color} position: absolute; left:${\n\t\t\tString(FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale)\n\t\t}px; top: ${\n\t\t\tString(FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale)\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${String(sx)}, ${String(sy)}) rotate(${\n\t\t\tString(r)}deg);\" width=\"${\n\t\t\tString(rct.width *FrameMng.#sys.cvsScale)\n\t\t}\" height=\"${\n\t\t\tString(rct.height *FrameMng.#sys.cvsScale)\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${String(e)}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: TArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0),\n\t\t\targChk_Num(a, 'y', 0),\n\t\t\targChk_Num(a, 'width', CmnLib.stageW),\n\t\t\targChk_Num(a, 'height', CmnLib.stageH),\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) {\n\t\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\n\t\t\t\t\t// これをすると二度目のフレーム画面表示で画像が壊れる\n\t\t\t\t\t// next();\n\t\t\t\t\t// URL.revokeObjectURL(r.src);\n\t\t\t\t\t// return;\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${String(e)}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.style.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: TArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst v = win[<keyof Window>var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: TArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: TArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = String(++this.#zIdx);\n\t\telse if ('index' in hArg) s.zIndex = String(argChk_Num(hArg, 'index', 0));\n\t\telse if (hArg.dive) s.zIndex = String(-++this.#zIdx);\t// -は必要\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\ts.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${String(sx)}, ${String(sy)}) rotate(${String(r)}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: TArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = (_d: {a: number})=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = d=> {\n\t\t\t\tf.style.opacity = String(d.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', d.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = (_d: {\n\t\t\tx: number;\n\t\t\ty: number;\n\t\t\tsx: number;\n\t\t\tsy: number;\n\t\t\tr: number;\n\t\t})=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = d=> {\n\t\t\t\tf.style.left = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +d.x *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.top = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +d.y *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.transform = `scale(${String(d.sx)}, ${String(d.sy)}) rotate(${String(d.r)}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', d.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', d.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', d.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', d.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', d.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = (_d: {w: number})=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = d=> {\n\t\t\t\tf.width = `${String(d.w *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', d.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = (_d: {h: number})=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = d=> {\n\t\t\t\tf.height = `${String(d.h *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', d.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), d=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tfncA(d); fncXYSR(d); fncW(d); fncH(d);\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg, T_HTag} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak\t: ()=> void;\n};\n\ntype T_LOG_DATA = TArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: T_HTag, private readonly val: T_Variable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: TArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: TArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: TArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TW_NM_TRANS} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_HPage, T_GetFrm, T_PropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements T_GetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable, private readonly main: T_Main, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: T_PropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tTxtLayer.msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('|&emsp;《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: TArg)=> { /* empty */ };\n\tbreakPage = (_hArg: TArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: TArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: TArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: TArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) TxtLayer.msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: TArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\t// page=both で両面削除\n\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-205.html\n\t\t\tif (hArg.page === 'both') {\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t\t});\n\t\t};\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {comp(); return false}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_NM_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\ttw.start();\n\t\t\tticker.add(fncRender);\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: TArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: TArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\n\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: TArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render) {\n\t\t\tif (this.#evtMng.isSkipping) lay.renderStart(true);\n\t\t\telse {\n\t\t\t\tlay.renderStart(false);\n\t\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t\t}\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of CmnTween.aLayerPrpNm) (<any>spBack)[nm] = lay[nm];\n\t\t});\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\t//MARK: 文字を追加する\n\t#ch(hArg: TArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\t// [ch text=\"\"]に改行を含められる方法\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-275.html\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: TArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: TArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {TxtLayer.msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: TArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: TArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: TArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: TArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: TArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: TArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: TArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: TArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: TArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: TArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: TArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: TArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: TArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: TArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: T_HPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,IAAa,QAAb,MAAa,EAAM;CAClB;CAEA,YAAY,GAAiB,GAAsB,GAAiB,GAAiB,GAAqB,GAAuB,GAA0B,GAAiC;AAAxB,EAA9H,KAAA,MAAA,GAAwD,KAAA,OAAA,GAAqB,KAAA,MAAA,GAAuB,KAAA,MAAA,GAA0B,KAAA,MAAA;EACnK,IAAM,IAAO,EAAI,YAAY;AAC7B,MAAI,CAAE,EAAM,OAAM,YAAY,EAAI;EAElC,IAAM,IAAI,GAAM,EACV,IAAI,GAAM;AAChB,IAAE,UACF,EAAE,UAAU;EACZ,IAAM,IAAK,EAAK,aAAa,SAAS,EAAQ,OAAO,EAAI;AASzD,EARA,EAAE,IAAI,OAAO,EAAE,OAAO,IAAI,KAC1B,EAAE,IAAI,OAAO,EAAE,OAAO,IAAI,KAC1B,EAAK,SAAS,EAAE,IAAI,EACpB,EAAK,SAAS,EAAE,IAAI,EACpB,eAAe,GAAM,WAAW,GAAK,EACrC,eAAe,GAAM,WAAW,GAAK,EACrC,EAAI,SAAS,EAAE,IAAI,EAAK,IAAI,EAAE,IAAI,EAAK,EACvC,MAAA,IAAW;GAAC,MAAM;GAAG,MAAM;GAAE,EAC7B,EAAK,UAAU;EAGf,IAAM,IAAQ,gBAAgB;AAa9B,EAZA,EAAI,aAAa,OAAO,GAAO,GAAK,EACpC,EAAI,OAAO,IAAO,qBAAoB,MAAA,EAAS,KAAK,MAAM,EAC1D,EAAI,OAAO,IAAO,qBAAoB,MAAA,EAAS,KAAK,MAAM,EAC1D,EAAI,OAAO,IAAO,sBAAqB,MAAA,EAAS,KAAK,OAAO,EAC5D,EAAI,OAAO,IAAO,sBAAqB,MAAA,EAAS,KAAK,OAAO,EAC5D,EAAI,OAAO,IAAO,uBAAsB,MAAA,EAAS,KAAK,IAAI,QAAQ,EAClE,EAAI,OAAO,IAAO,uBAAsB,MAAA,EAAS,KAAK,IAAI,QAAQ,EAClE,EAAI,OAAO,IAAO,qBAAoB,MAAA,EAAS,KAAK,MAAM,EAC1D,EAAI,OAAO,IAAO,qBAAoB,MAAA,EAAS,KAAK,MAAM,EAC1D,EAAI,OAAO,IAAO,iBAAgB,MAAA,EAAS,KAAK,EAAE,EAClD,EAAI,OAAO,IAAO,iBAAgB,MAAA,EAAS,KAAK,EAAE,EAClD,EAAI,OAAO,IAAO,iBAAgB,MAAA,EAAS,KAAK,EAAE,EAClD,EAAI,OAAO,IAAO,iBAAgB,MAAA,EAAS,KAAK,EAAE;;CAEnD,UAAU;AAET,EADA,MAAA,EAAS,KAAK,SAAS,EACvB,MAAA,EAAS,KAAK,SAAS;;CAGxB,OAAgB,MAAc,KAAK,QAAQ,EAAK,CAAC,IAAI,EAAK;CAC1D,WAAoB,MACnB,EAAM,YAAY,GAAM,OAAO,KAAK,SAEjC,MAAA,EAAS,OADT,MAAA,EAAS;CAEb,OAAO,YAAY,GAAY,GAAqB;EACnD,IAAM,IAAI,EAAK,QAAQ;AACvB,MAAI,MAAM,UAAU,MAAM,OAAwB,QAAf,EAAK,OAAO,GAAU;AAEzD,QAAM,MAAM,aAAY,IAAG,SAAS;;CAErC,IAAI,OAAc;AAAC,SAAO,MAAA,EAAS;;CACnC,IAAI,OAAc;AAAC,SAAO,MAAA,EAAS;;CAEnC,UAAU,GAA6B;AAEtC,EADA,CAAC,MAAA,EAAS,MAAM,MAAA,EAAS,QAAQ,CAAC,MAAA,EAAS,MAAM,MAAA,EAAS,KAAK,EAC/D,MAAA,EAAS,KAAK,KAAK,MAAA,EAAS,MAAM,EAAK;;GCxD5B,WAAb,MAAa,EAA6B;CACzC,QAAA;CACA,QAAA;CACA,QAAA;CACA,OAAO,KAAK,GAAa,GAAc,GAAoB;AAG1D,EAFA,GAAA,IAAgB,GAChB,GAAA,IAAgB,GAChB,GAAA,IAAiB;;CAGlB,YAAY,GAAc,GAAuC,GAAkC;AAMlG,EAN0C,KAAA,UAAA,GAAuC,KAAA,MAAA,GAEjF,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE,EACxC,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE,EACxC,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE,EACxC,EAAK,SAAU,MAAI,MAAA,EAAY,EAAE,EACjC,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE;;CAGzC;CACA,UAAU,GAAiB;AAAC,QAAA,IAAe;;CAG3C,KAA6C,OAAO,OAAO,KAAK;CAChE,UAAU;AAET,OAAK,IAAM,KAAK,OAAO,OAAO,MAAA,EAAY,CAAE,GAAE,cAAe,YAAY,EAAE;AAE3E,QAAA,IAAc,OAAO,OAAO,KAAK;;CAGlC,eAAe;AACd,OAAK,IAAM,CAAC,GAAI,EAAC,eAAW,OAAO,QAAQ,MAAA,EAAY,CAEtD,CADA,MAAA,EAAqB,KAAM,EAAM,YAAY,QAC7C,EAAM,UAAU;;CAIlB,KAA2C,OAAO,OAAO,KAAK;CAC9D,kBAAkB;AACjB,OAAK,IAAM,CAAC,GAAI,MAAM,OAAO,QAAQ,MAAA,EAAqB,EAAE;GAC3D,IAAM,IAAI,MAAA,EAAY;AACtB,GAAI,MAAG,EAAE,MAAM,UAAU,IAAG,WAAU;;AAGvC,QAAA,IAAuB,OAAO,OAAO,KAAK;;CAK3C,GAAW,GAAY;EACtB,IAAM,EAAC,OAAI,QAAK,OAAO,IAAE,GAAG,SAAS,IAAG,GAAG,SAAS,IAAG,GAAG,QAAQ,IAAE,MAAM;AAC1E,MAAI,CAAE,EAAI,OAAM;AAChB,MAAI,CAAE,EAAK,OAAM;EACjB,IAAM,IAAK,kBAAiB;AAC5B,MAAI,KAAK,IAAI,OAAO,OAAO,IAAK,CAAE,OAAM,SAAS,EAAG;EAEpD,IAAM,IAAI,eAAe,GAAM,WAAW,GAAK,EACzC,IAAU,EAAK,UAAS,sBAAsB,EAAK,QAAQ,KAAI,IAC/D,IAAM,MAAA,EAAW,EAAK;AAE5B,KAAA,EAAe,IAAI,mBAAmB,eAAe,eAAe,EAAG,oBAAoB,OAAO,EAAE,CAAC,IAAI,EAAQ,4BAChH,OAAO,GAAA,EAAc,cAAa,EAAI,IAAG,GAAA,EAAc,SAAS,CAChE,WACA,OAAO,GAAA,EAAc,aAAY,EAAI,IAAG,GAAA,EAAc,SAAS,CAC/D,0DACA,IAAG,WAAU,OACb,qBAAqB,OAAO,EAAG,CAAC,IAAI,OAAO,EAAG,CAAC,WAC/C,OAAO,EAAE,CAAC,gBACV,OAAO,EAAI,QAAO,GAAA,EAAc,SAAS,CACzC,YACA,OAAO,EAAI,SAAQ,GAAA,EAAc,SAAS,CAC1C,aAAa;EAEd,IAAM,IAAgB,QAAQ,SAAQ,gBAAgB;AACtD,UAAQ,UAAU,EAAc;EAChC,IAAM,IAAM,GAAA,EAAc,WAAW,GAAK,oBAAoB,KAAK,EAC7D,IAAM,IAAI,QAAM,CACrB,IAAI;GAAC,MAAM;GAAK;GAAK,SAAS,eAAe,kBAAkB;GAAK,CAAC;AA2DtE,SA1DI,GAAA,EAAc,IAAI,UAAQ,EAAG,KAE/B,GAAK,MAAQ,KAAK,GAAA,EAAc,IAAI,EAAI,WAAW,EAAI,KAAK,CAC5D,MAAK,MAAI;AAET,GADA,EAAI,OAAO,GACX,GAAM;IACL,CACD,OAAO,MAAc;AAErB,GADA,GAAA,EAAe,UAAU,+BAA+B,EAAI,KAAK,GAAG,OAAO,EAAE,IAAI,GAAM,EACvF,GAAM;IACL,CACF,EACD,EAAG,MAAM,GAAM,MAAQ;GACtB,IAAM,IAAuB,SAAS,eAAe,EAAG;AAExD,GADA,MAAA,EAAY,KAAM,GAClB,MAAA,EAAgB,KAAM;GAEtB,IAAM,IAAW,EAAI,YAAY,IAAI,GAAE,GACjC,IAAc,EAAI,MAAM,GAAG,EAAS,EACpC,IAAa,EAAY,MAAM,GAAG,EAAS;AAgBjD,GAfA,EAAE,SAAS,OAAO,EAAK,IAAM,KAAK,CACjC,QAAQ,gBAAgB,GAAG,CAC3B,WACA,mCACC,GAAG,GAAY,MAAa,EAAE,WAAW,MAAM,GAC9C,IAAa,EAAE,MAAM,EAAE,GACvB,EAAE,QAAQ,MAAM,GAAG,CACnB,QAAQ,GAAI,IAAK,EAAY,CAC/B,EAEG,EAAE,OAAO,SAAS,gBAAgB,KAAE,EAAE,SAAS,EAAE,OAAO,WAC3D,oCACC,GAAG,MAAc,aAAa,EAAG,MAClC,GAED,EAAE,eAAc;AAaf,IAZA,QAAQ,QAAQ,EAAc,EAG9B,KAAK,IAAI,aAAa,OAAO,GAAI,GAAK,EACtC,KAAK,IAAI,aAAa,OAAO,IAAI,UAAU,EAAE,EAC7C,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAI,EAAE,EAC7C,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAI,EAAE,EAC7C,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAG,EAChD,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAG,EAChD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAE,EAC9C,KAAK,IAAI,aAAa,OAAO,IAAI,UAAU,EAAI,MAAM,EACrD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAI,OAAO,EACvD,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAE;IAG/C,IAAM,IAAM,EAAE;AAIR,IAHN,MAAA,EAAa,eAAgC,EAAI,SAAS,KAAK,EAGzD,EAAK,aAAa,MAAuB,GAAA,EAAsB,EAAE,QAAQ,OAAO,IAAI,EAAE,CAAC;;IAE7F,EACK;;CAER,KAAuC,EAAE;CAEzC,eAAe,GAAqB;AAAC,SAAO,MAAA,EAAgB;;CAC5D,GAAM,GAAqB;EAC1B,IAAM,IAAI,EAAC,GAAG,GAAK;AACnB,SAAO,IAAI,QACV,WAAW,GAAG,KAAK,EAAE,EACrB,WAAW,GAAG,KAAK,EAAE,EACrB,WAAW,GAAG,SAAS,OAAO,OAAO,EACrC,WAAW,GAAG,UAAU,OAAO,OAAO,CACtC;;CAGF,QAAA,EAAoB,GAAa,GAAuB,GAA0C;EACjG,IAAM,IAAO,MAAA,EAAkB;AAC/B,MAAI,GAAM;AAET,GADA,EAAI,MAAM,GACN,MAAQ,EAAI,eAAc,EAAO,EAAI;AACzC;;EAGD,IAAM,IAAO,MAAA,EAAe;AAC5B,MAAI,GAAM;AAAC,KAAK,KAAK,EAAI;AAAE;;AAC3B,QAAA,EAAe,KAAO,CAAC,EAAI;EAE3B,IAAM,CAAC,IAAS,IAAI,IAAI,MAAM,EAAI,MAAM,IAAI,EACtC,IAAO,GAAA,EAAc,WAAW,GAAU,oBAAoB,OAAO,EACrE,IAAO,IAAI,QAAM,CACtB,IAAI;GAAC,MAAM;GAAK,KAAK;GAAM,SAAS,eAAe,kBAAkB;GAAQ,CAAC;AA2B/E,EAxBI,GAAA,EAAc,iBAAiB,GAAK,GAAM,GAAK,GAAA,EAAe,IAE9D,GAAA,EAAc,IAAI,UAAU,EAAK,SAAS,OAAO,IAAE,EAAI,KAAK,GAAK,MAAQ;AAC5E,OAAI,EAAI,cAAc,OAAO;AAAC,OAAM;AAAE;;AAGjC,MAAA,EAAc,MAAM,EAAI,KAAK,CACjC,MAAK,MAAI;AAUT,IATA,EAAI,OAAO,GACP,aAAa,qBAChB,EAAI,OAAO,eAAe,KAAK,QAOhC,GAAM;KACL,CACD,OAAO,MAAc;AAErB,IADA,GAAA,EAAe,UAAU,+BAA+B,EAAI,KAAK,GAAG,OAAO,EAAE,IAAI,GAAM,EACvF,GAAM;KACL;IACD,EACF,EAAI,MAAM,GAAM,MAAQ;AACvB,QAAK,IAAM,CAAC,GAAI,EAAC,MAAM,EAAC,KAAA,UAAU,OAAO,QAAQ,EAAK,EAAE;IAEvD,IAAM,IAAK,MAAA,EAAkB,KAAM,KAElC,EAAI,WAAW,QAAQ,IAAI,EAAI,WAAW,QAAQ,GACjD,KAAI,IAAM,MAAK,IAAK,KAEhB,IAAK,MAAA,EAAe;AAC1B,QAAI,EAAI,MAAK,IAAM,KAAK,EAEvB,CADA,EAAE,MAAM,GACJ,MAAQ,EAAE,eAAc,EAAO,EAAE;AAGtC,WAAO,MAAA,EAAe;;IAGtB;;CAEH,QAAA,IAA0D,EAAE;CAC5D,QAAA,IAAmD,EAAE;CAGrD,YAAY;AACX,OAAK,IAAM,CAAC,GAAI,MAAM,OAAO,QAAQ,MAAA,EAAY,EAAE;GAClD,IAAM,IAAK,kBAAiB,GACtB,IAAI,OAAO,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,EACrC,IAAI,OAAO,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,EACrC,IAAI,OAAO,KAAK,IAAI,OAAO,IAAI,SAAS,CAAC,EACzC,IAAI,OAAO,KAAK,IAAI,OAAO,IAAI,UAAU,CAAC;AAQhD,GAPA,EAAE,MAAM,OAAO,GAAG,OACjB,GAAA,EAAc,cAAa,IAAG,GAAA,EAAc,SAC5C,CAAC,KACF,EAAE,MAAM,MAAO,GAAG,OACjB,GAAA,EAAc,aAAa,IAAG,GAAA,EAAc,SAC5C,CAAC,KACF,EAAE,QAAQ,OAAO,IAAG,GAAA,EAAc,SAAS,EAC3C,EAAE,SAAS,OAAO,IAAG,GAAA,EAAc,SAAS;;;CAK9C,GAAW,GAAY;EACtB,IAAM,EAAC,OAAI,gBAAY;AACvB,MAAI,CAAE,EAAI,OAAM;EAChB,IAAM,IAA8B,SAAS,eAAe,EAAG;AAC/D,MAAI,CAAE,EAAG,OAAM,MAAM,EAAG;EACxB,IAAM,IAAK,kBAAiB;AAC5B,MAAI,CAAE,KAAK,IAAI,OAAO,OAAO,IAAK,CAAE,OAAM,SAAS,EAAG;AACtD,MAAI,CAAE,EAAU,OAAM;EAGtB,IAAM,IAAM,EAAE;AACd,MAAI,CAAE,OAAO,OAAO,GAAK,EAAS,CAAE,OAAM,SAAS,EAAG,UAAU,EAAS;EAGzE,IAAM,IAAI,EAAkB;AAS5B,SAPA,KAAK,IAAI,aACR,OACA,IAAI,MAAK,GAET,eAAe,GAAM,YAAY,GAAM,GAAE,GAAG,GAAE,EAC9C,EAEM;;CAIR,GAAW,GAAY;EACtB,IAAM,EAAC,OAAI,aAAU,YAAQ;AAC7B,MAAI,CAAE,EAAI,OAAM;EAChB,IAAM,IAA8B,SAAS,eAAe,EAAG;AAC/D,MAAI,CAAE,EAAG,OAAM,MAAM,EAAG;EACxB,IAAM,IAAK,kBAAiB;AAC5B,MAAI,CAAE,KAAK,IAAI,OAAO,OAAO,IAAK,CAAE,OAAM,SAAS,EAAG;AACtD,MAAI,CAAE,EAAU,OAAM;AACtB,MAAI,CAAE,EAAM,OAAM;AAGlB,OAAK,IAAI,aAAa,OAAO,IAAI,MAAK,GAAU,EAAK;EAIrD,IAAMwB,IAAW,EAAE;AAInB,SAFA,EAAI,KAAY,GAET;;CAIR,KAAQ;CACR,GAAO,GAAY;EAClB,IAAM,EAAC,UAAM;AACb,MAAI,CAAE,EAAI,OAAM;EAChB,IAAM,IAA8B,SAAS,eAAe,EAAG;AAC/D,MAAI,CAAE,EAAG,OAAM,MAAM,EAAG;EACxB,IAAM,IAAK,kBAAiB;AAC5B,MAAI,CAAE,KAAK,IAAI,OAAO,SAAQ,EAAG,CAAE,OAAM,SAAS,EAAG;EAErD,IAAM,IAAI,EAAE;AAKZ,MAJI,eAAe,GAAM,SAAS,GAAM,GAAE,EAAE,SAAS,OAAO,EAAE,MAAA,EAAW,GAChE,WAAW,IAAM,EAAE,SAAS,OAAO,WAAW,GAAM,SAAS,EAAE,CAAC,GAChE,EAAK,SAAM,EAAE,SAAS,OAAO,CAAC,EAAE,MAAA,EAAW,GAEhD,WAAW,GAAM;GACpB,IAAM,IAAI,EAAE,UAAU,OAAO,EAAK,MAAM;AACxC,QAAK,IAAI,aAAa,OAAO,IAAI,UAAU,EAAE;;EAE9C,IAAM,IAAM,MAAA,EAAW,EAAK;AAW5B,OAVI,OAAO,KAAQ,OAAO,OACzB,EAAE,OAAO,GAAG,OACX,GAAA,EAAc,cAAa,EAAI,IAAG,GAAA,EAAc,SAChD,CAAC,KACF,EAAE,MAAO,GAAG,OACX,GAAA,EAAc,aAAa,EAAI,IAAG,GAAA,EAAc,SAChD,CAAC,KACF,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAI,EAAE,EAC7C,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAI,EAAE,GAE1C,aAAa,KAAQ,aAAa,KAAQ,YAAY,GAAM;GAC/D,IAAM,IAAK,WAAW,GAAM,WAAW,EAAE,EACnC,IAAK,WAAW,GAAM,WAAW,EAAE,EACnC,IAAI,WAAW,GAAM,UAAU,EAAE;AAIvC,GAHA,EAAE,YAAY,SAAS,OAAO,EAAG,CAAC,IAAI,OAAO,EAAG,CAAC,WAAW,OAAO,EAAE,CAAC,OACtE,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAG,EAChD,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAG,EAChD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAE;;AAU/C,MARI,WAAW,MACd,EAAE,QAAQ,OAAO,EAAI,QAAO,GAAA,EAAc,SAAS,EACnD,KAAK,IAAI,aAAa,OAAO,IAAI,UAAU,EAAI,MAAM,GAElD,YAAY,MACf,EAAE,SAAS,OAAO,EAAI,SAAQ,GAAA,EAAc,SAAS,EACrD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAI,OAAO,GAEpD,aAAa,GAAM;GACtB,IAAM,IAAI,eAAe,GAAM,WAAW,GAAK;AAE/C,GADA,EAAE,UAAU,IAAG,WAAU,QACzB,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAE;;AAIhD,MADI,aAAa,MAAM,EAAE,kBAAkB,EAAK,UAC5C,cAAc,GAAM;GACvB,IAAM,IAAI,MAAA,EAAgB,KAAM,eAAe,GAAM,YAAY,GAAK,EAEhE,IAAI,EAAE,gBAAiB;AAC7B,QAAK,IAAM,KAAK,CACf,GAAG,MAAM,KAAK,EAAE,qBAAqB,QAAQ,CAAC,EAC9C,GAAG,MAAM,KAAK,EAAE,qBAAqB,SAAS,CAAC,CAC/C,CAAE,GAAE,WAAW;;AAGjB,SAAO;;CAIR,GAAW,GAAY;EACtB,IAAM,EAAC,OAAI,UAAO,MAAG,GAAG,YAAS,YAAS,WAAQ,UAAO,cAAU;AACnE,MAAI,CAAE,EAAI,OAAM;EAChB,IAAM,IAA8B,SAAS,eAAe,EAAG;AAC/D,MAAI,CAAE,EAAG,OAAM,MAAM,EAAG;EACxB,IAAM,IAAK,kBAAiB;AAC5B,MAAI,CAAE,KAAK,IAAI,OAAO,OAAO,KAAM,EAAE,CAAE,OAAM,SAAS,EAAG;EAEzD,IAAME,IAAqC,EAAE;AAU7C,EATI,MAAO,EAAK,IAAI,OAAO,EAAE,MAAM,QAAQ,IACvC,KAAK,KAAK,KAAW,KAAW,OACnC,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,IAAI,CAAC,EAC/C,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,IAAI,CAAC,EAC/C,EAAK,KAAK,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,UAAU,CAAC,EACtD,EAAK,KAAK,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,UAAU,CAAC,EACtD,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,SAAS,CAAC,GAEjD,MAAO,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,QAAQ,CAAC,GAC1D,MAAQ,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAO,EAAG,SAAS,CAAC;EAChE,IAAM,IAAQ,SAAS,YAAY,GAAM,EAAK,EAExCC,IAAoC,EAAE,EACxC,KAAQ,MAAmB;AAC/B,EAAI,MACH,EAAI,IAAI,WAAW,GAAO,SAAS,EAAE,EACrC,KAAO,MAAI;AAEV,GADA,EAAE,MAAM,UAAU,OAAO,EAAE,EAAE,EAC7B,KAAK,IAAI,aAAa,OAAO,SAAS,EAAE,EAAE;;EAG5C,IAAI,KAAW,MAMV,IACC,IAAM,MAAA,EAAW,EAAM;AAC7B,GAAI,KAAK,KAAK,KAAW,KAAW,OACnC,EAAI,IAAI,EAAI,GACZ,EAAI,IAAI,EAAI,GACZ,EAAI,KAAK,WAAW,GAAO,WAAW,EAAE,EACxC,EAAI,KAAK,WAAW,GAAO,WAAW,EAAE,EACxC,EAAI,IAAI,WAAW,GAAO,UAAU,EAAE,EACtC,KAAU,MAAI;AAYb,GAXA,EAAE,MAAM,OAAO,GAAG,OACjB,GAAA,EAAc,cAAa,EAAE,IAAG,GAAA,EAAc,SAC9C,CAAC,MACF,EAAE,MAAM,MAAO,GAAG,OACjB,GAAA,EAAc,aAAa,EAAE,IAAG,GAAA,EAAc,SAC9C,CAAC,MACF,EAAE,MAAM,YAAY,SAAS,OAAO,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,GAAG,CAAC,WAAW,OAAO,EAAE,EAAE,CAAC,OAClF,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAE,EAAE,EAC3C,KAAK,IAAI,aAAa,OAAO,IAAI,MAAM,EAAE,EAAE,EAC3C,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAE,GAAG,EAClD,KAAK,IAAI,aAAa,OAAO,IAAI,YAAY,EAAE,GAAG,EAClD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAE,EAAE;;EAGlD,IAAI,KAAQ,MAAmB;AAC/B,EAAI,MACH,EAAI,IAAI,EAAI,OACZ,KAAO,MAAI;AAEV,GADA,EAAE,QAAQ,GAAG,OAAO,EAAE,IAAG,GAAA,EAAc,SAAS,CAAC,MACjD,KAAK,IAAI,aAAa,OAAO,IAAI,UAAU,EAAE,EAAE;;EAGjD,IAAI,KAAQ,MAAmB;AAe/B,SAdI,MACH,EAAI,IAAI,EAAI,QACZ,KAAO,MAAI;AAEV,GADA,EAAE,SAAS,GAAG,OAAO,EAAE,IAAG,GAAA,EAAc,SAAS,CAAC,MAClD,KAAK,IAAI,aAAa,OAAO,IAAI,WAAW,EAAE,EAAE;MAIlD,KAAK,QAAQ,MAAM,cAAc,IACjC,SAAS,MAAM,QAAQ,KAAM,GAAM,GAAM,SAAS,YAAY,GAAM,EAAK,GAAE,MAAI;AAEhD,GAA9B,EAAK,EAAE,EAAE,EAAQ,EAAE,EAAE,EAAK,EAAE,EAAE,EAAK,EAAE;WAC9B;AAAC,QAAK,QAAQ,MAAM,cAAc;WAAY,GAAgB,EAE/D;;GC5aI,MAAb,MAAkC;CACjC,KAAwB,EAAC,MAAM,IAAG;CAClC,KAAwB,EAAE;CAG1B,YAAY,GAA8B,GAA+B,GAAkC;AAiB1G,EAjB4B,KAAA,OAAA,GAA8B,KAAA,OAAA,GAA+B,KAAA,MAAA,GACzF,EAAK,UAAW,MAAI,MAAA,EAAa,EAAE,EACnC,EAAK,SAAU,MAAI,MAAA,EAAY,EAAE,EACjC,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE,EAIxC,EAAI,OAAO,2BAA0B;AAGpC,SAAA,EAAc,OACd,MAAA,EAAc,KACb,WAAW,+BAAiC,GAAG;GAEhD,IAAM,IAAI,CAAC,GAAG,MAAA,GAAY,MAAA,EAAc;AACxC,UAAO,KAAK,UAAU,EAAE;IACvB,EACF,KAAK,QAAQ,GAAG;;CAQjB,QAAQ,GAAc;AAErB,EADA,MAAA,EAAc,OAAO,GACrB,KAAK,IAAI,aAAa,QAAQ,iBAC7B,OAAO,KAAK,IAAI,OAAO,oBAAoB,CAAC,CAC5C;;CAKF,GAAQ,GAAY;AAanB,SAZA,MAAA,IAAgB;GAAC,GAAG;GAAM,MAAM,MAAA,EAAc;GAAK,EAC7C,EAAK,QAOX,EAAK,SAAS,IACd,EAAK,UAAU,IACf,EAAK,SAAS,kBACd,EAAK,OAAO,GACL,KAAK,KAAK,GAAG,EAAK,KAVxB,KAAK,IAAI,aAAa,QAAQ,iBAC7B,OAAO,KAAK,IAAI,OAAO,oBAAoB,CAAC,CAC5C,EACM;;CAWT,GAAO,GAAY;AAAC,SAAO,MAAA,EAAa;GAAC,GAAG;GAAM,MAAM;GAAM,CAAC;;CAO/D,GAAW,GAAY;AAMtB,SALA,MAAA,IAAa,EAAE,EACf,EAAK,SAAS,IACd,MAAA,IAAgB,EAAC,MAAM,EAAK,MAAK,EACjC,KAAK,IAAI,aAAa,QAAQ,iBAAiB,KAAK,UAAU,CAAC,MAAA,EAAc,CAAC,CAAC,EAExE;;CAIR,YAAY;AACX,QAAA,EAAc,OACd,MAAA,EAAc,KACb,WAAW,+BAAiC,GAAG,EAE1C,MAAA,EAAc,SAEhB,MAAA,EAAW,KAAK,MAAA,EAAc,GAAG,KAAK,KAAK,IAAI,YAAS,MAAA,IAAa,MAAA,EAAW,MAAM,CAAC,KAAK,KAAK,IAAI,QAAQ,GACjH,MAAA,IAAgB,EAAC,MAAM,IAAG;;CAK3B,WAAW;AAEV,EADA,MAAA,IAA2B,KAAK,MAAM,OAAO,KAAK,IAAI,OAAO,qBAAqB,CAAC,CAAC,EACpF,MAAA,IAAgB,EAAC,MAAM,IAAG;;;AC7E5B,SAAS,QAAQ,GAAkB;AAElC,QAAO,mBAAmB,KAAK,UAAU,EAAE,CAAC;;AAI7C,IAAa,WAAb,MAAa,EAA6B;CACzC;CACG,KAAQ,IAAI,WAAS;CACrB,KAAQ,IAAI,WAAS;CAExB;CACA;CAEA;CAEA,KAAiB,IAAI,kBAAgB;CAGrC,YAAY,GAA8B,GAA+B,GAAuC,GAAkC,GAA+B,GAAyC,GAA+B,GAAkB,GAAsB;AAAtD,EAA9M,KAAA,MAAA,GAA8B,KAAA,OAAA,GAA+B,KAAA,UAAA,GAAuC,KAAA,MAAA,GAAkC,KAAA,OAAA,GAA+B,KAAA,SAAA,GAAyC,KAAA,MAAA;EAE1O,IAAM,UAAoB;AAGzB,OAFA,EAAI,WAAW,EACf,KAAK,iBAAiB,EAClB,MAAA,EAAiB,MAAK,IAAM,KAAM,MAAA,EACrC,OAAA,EAAa,GAAK,KAAK,mBAAmB;OAEtC,MAAK,IAAM,KAAM,MAAA,EACrB,OAAA,EAAa,GAAK,KAAK,WAAW;AAInC,GADA,MAAA,EAAa,WAAW,EACxB,MAAA,EAAa,WAAW;;AAEzB,MAAI,OAAO,SACV,OAAA,EAAU,IAAI,YAAY,qBAAqB,GAAc,EAAC,SAAS,IAAK,CAAC;OAEzE;GACJ,IAAIyB;AACJ,SAAA,EAAU,IAAI,YAAY,gBAAe;AACpC,IACJ,MAAM,iBAAgB;AAAkB,KAAjB,IAAM,KAAA,GAAW,GAAc;OAAG,MAAM,KAAI,GAAG;MACpE,EAAC,SAAS,IAAK,CAAC;;AA4FpB,EA1FA,EAAI,WAAW,EAEf,MAAA,IAAY,IAAI,IAAI,KAAK,IAAI,MAAM,GAAM,EAAI,EAC7C,SAAS,KAAK,GAAK,GAAM,GAAK,MAAA,IAAW,MAAK,MAAA,EAAa,EAAG,SAAU,SAAS,GAAI,EAAQ,EAC7F,SAAS,KAAK,GAAM,GAAK,GAAS,GAAK,GAAQ,EAAI,EACnD,SAAS,KAAK,GAAK,GAAK,EAAK,EAE7B,MAAA,IAAe,IAAI,SAAS,GAAM,GAAS,EAAI,EAG/C,EAAK,cAAc,MAAI,MAAA,EAAiB,EAAE,EAE1C,EAAK,YAAY,MAAI,MAAA,EAAe,EAAE,EACtC,MAAA,IAAsB,KAAK,IAAI,SAC3B,GAAM,GAAK,GAAO,GAAQ,MAAgB,MAAA,EAAmB,GAAM,GAAK,GAAO,GAAQ,EAAa,IACpG,GAAM,GAAK,GAAO,GAAQ,MAAgB,MAAA,EAAmB,GAAM,GAAK,GAAO,GAAQ,EAAa,EAGxG,EAAK,WAAW,MAAI,MAAA,EAAc,EAAE,EACpC,EAAK,aAAa,MAAI,MAAA,EAAgB,EAAE,EACxC,EAAK,qBAAoB,IACzB,EAAK,OAAQ,MAAI,MAAA,EAAU,EAAE,EAC7B,EAAK,SAAU,MAAI,MAAA,EAAY,EAAE,EACjC,EAAK,MAAQ,MAAI,SAAS,GAAG,EAAE,EAE/B,EAAK,SAAU,MAAI,MAAA,EAAY,EAAE,EACjC,EAAK,aAAc,EAAK,cACxB,EAAK,KAAQ,EAAK,IAElB,EAAK,aAAa,MAAI,SAAS,UAAU,EAAE,EAC3C,EAAK,cAAc,MAAI,SAAS,WAAW,EAAE,EAC7C,EAAK,YAAY,MAAI,SAAS,SAAS,EAAE,EACzC,EAAK,OAAQ,MAAI,MAAA,EAAU,EAAE,EAC7B,EAAK,YAAY,MAAI,SAAS,SAAS,EAAE,EAEzC,EAAK,cAAc,MAAI,MAAA,EAAiB,EAAE,EAC1C,EAAK,gBAAe,MAAI,MAAA,EAAmB,EAAE,EAC7C,EAAK,iBAAgB,MAAI,MAAA,EAAoB,EAAE,EAK/C,EAAK,MAAQ,MAAI,MAAA,EAAS,EAAE,EAG5B,EAAK,cAAc,MAAI,MAAA,EAAiB,EAAE,EAC1C,EAAK,WAAW,MAAI,MAAA,EAAc,EAAE,EACpC,EAAK,WAAW,MAAI,MAAA,EAAc,EAAE,EACpC,EAAK,MAAQ,MAAI,MAAA,GAAS,EAAE,EAC5B,EAAK,SAAU,MAAI,MAAA,GAAY,EAAE,EACjC,EAAK,QAAS,MAAI,MAAA,GAAW,EAAE,EAC/B,EAAK,KAAO,MAAI,MAAA,GAAQ,EAAE,EAM1B,EAAK,SAAU,MAAI,MAAA,GAAY,EAAE,EACjC,EAAK,QAAS,MAAI,MAAA,GAAW,EAAE,EAC/B,EAAK,OAAQ,MAAI,MAAA,GAAU,EAAE,EAG7B,EAAK,YAAY,MAAI,WAAW,SAAS,EAAE,EAG3C,EAAK,MAAQ,MAAI,WAAW,GAAG,EAAE,EAGjC,EAAK,YAAY,MAAI,MAAA,GAAe,EAAE,EAGtC,EAAK,gBAAe,MAAI,MAAA,GAAmB,EAAE,EAG7C,EAAK,UAAW,MAAI,MAAA,GAAa,EAAE,EAG/B,EAAI,oBAAiB,KAAK,aAAa,MAAc;AAIxD,GAHA,OAAO,EAAK,SACZ,EAAK,KAAK,SACV,EAAK,MAAK,aACV,MAAA,EAAa,SAAQ,QAAgC,EAAK,CAAC;MAExD,EAAI,oBAAiB,KAAK,aAAa,MAAc;AAIxD,GAHA,OAAO,EAAK,SACZ,EAAK,KAAK,SACV,EAAK,MAAK,aACV,MAAA,EAAa,SAAQ,QAAgC,EAAK,CAAC;MAG5D,MAAA,IAAiB,WAAW,OAAO,EAAI,KAAK,KAAK,SAAS,CAAC;EAC3D,IAAM,IAAM,IAAI,UAAQ;AAiBxB,EAhBA,EACC,UAAU,MAAA,EAAe,CACzB,UAAU,GAAG,MAAA,EAAe,CAC5B,SAAS,GAAG,GAAG,OAAO,QAAQ,OAAO,OAAO,CAC5C,SAAS,EACV,MAAA,EAAW,SAAS,EAAI,OAAO,CAAC,EAChC,MAAA,EAAW,SAAS,EAAI,EACxB,MAAA,EAAW,UAAU,IACrB,MAAA,EAAW,OAAO,UAClB,MAAA,EAAW,OAAO,UAElB,MAAA,IAAc,EAAQ,OACtB,MAAA,EAAY,SAAS,MAAA,EAAW,EAChC,MAAA,EAAY,SAAS,MAAA,EAAW,EAChC,MAAA,EAAY,SAAS,MAAA,EAAkB,EACvC,MAAA,EAAY,SAAS,MAAA,EAAkB,EACvC,MAAA,EAAY,OAAO;EAWnB,IAAM,KAAkB,GAAe,MAAY;AAClD,SAAA,EAA8B,OAAO,EAAI,CAAC;;AAG3C,EADA,EAAe,IAAI,EAAI,OAAO,4BAA4B,EAAE,CAAC,EAC7D,EAAI,UAAU,4BAA4B,EAAe;EAGzD,IAAM,KAAc,GAAe,MAAY;AAAC,UAAO,aAAa;;AAMpE,EALA,EAAW,IAAI,EAAI,OAAO,4BAA4B,OAAO,WAAW,CAAC,EACzE,EAAI,UAAU,4BAA4B,EAAW,EAErD,EAAI,OAAO,iCAAgC,KAAK,mBAAmB,YAAY,GAAG,EAClF,EAAI,OAAO,uCAAsC,KAAK,mBAAmB,iBAAiB,GAAG,EACzF,OAAO,UACV,WAAW,KAAK,GAAS,GAAK,GAAQ,GAAQ,GAAK,MAAA,EAAa,EAChE,KAAK,wBAAuB,WAAW,iBAAiB,EACxD,EAAI,SAAS,GAAM,MAAK;AACjB,SAAA,EAAkB,KAAQ,GAAM,EAAE,IAExC,OAAO,MAAA,EAAkB;IACxB;;CAGJ,kBAA0B;CAG1B,KAEuD;EACtD,SAAU,OAAK,WAAW,WAAW,EAAS;EAC9C,WAAW,OAAK,WAAW,WAAW,EAAS;EAC/C,aAAa,OAAK,WAAW,WAAW,EAAS;EACjD,eAAc,MAAI;AACjB,cAAW,WAAW;AACtB,QAAK,IAAM,KAAM,MAAA,GAAgB;IAChC,IAAM,IAAM,MAAA,EAAa,GAAK;AAE9B,IADA,EAAI,wBAAuB,MAAM,EAAI,MAAM,CAAC,EAC5C,EAAI,gBAAe,MAAM,EAAI,MAAM,CAAC;;AAGF,UAAnC,MAAA,EAAiB,MAAA,EAAgB,EAAS;;EAK3C,gBAAgB,GAAG,OAAM,WAAW,aAAa,EAAE,EAAS;EAE5D,cAAe,GAAG,OAAM,MAAA,EAAiB,EAAE,KAAK,EAAS;EACzD;CACD,KAAW;CACX,KAAa;CACb,GAAY,GAAc;AACzB,GAAC,MAAA,IAAa,IAAI,MAAA,IAAgB,MAAM,EAAK,MAAM,IAAI;EACvD,IAAM,IAAQ,MAAA,EAAa,MAAA;AACrB,QAEN,WAAW,SAAS,EAChB,MAAA,IAAiB,EAAM,KAAK,wBAAwB,GACnD,EAAM,KAAK,gBAAgB;;CAGjC,kBAAkB,MAAc,MAAA,EAAa,eAAe,EAAG;CAE/D,KAAmC,KAAA;CACnC,MAAM,GAAkB,IAAW,GAAK;AAMvC,EALA,AAGC,MAAA,OAFA,MAAA,EAAY,YAAY,MAAA,EAAe,EACvC,MAAA,EAAe,SAAS,EACP,KAAA,IAEd,KAAS,MAAA,EAAY,UACvB,MAAA,IAAiB,IAAI,UAAQ,EAC7B,UAAU,EAAS,CACnB,UAAU,GAAG,EAAS,CACtB,SAAS,GAAG,GAAG,OAAO,QAAQ,OAAO,OAAO,CAC5C,SAAS,CACV;;CAGF;CACA,UAAU,GAAiB;AAI1B,EAHA,MAAA,IAAe,GACf,MAAA,EAAa,UAAU,EAAO,EAC9B,WAAW,UAAU,EAAO,EAC5B,SAAS,KAAK,EAAO;;CAGtB,UAAU;AACT,OAAK,IAAM,KAAK,OAAO,OAAO,MAAA,EAAa,CAAE,GAAE,SAAS;AAWxD,EATA,MAAA,EAAU,OAAO,EACjB,SAAS,SAAS,EAClB,YAAY,SAAS,EACrB,SAAS,SAAS,EAClB,SAAS,SAAS,EAElB,MAAA,EAAa,SAAS,EAEtB,SAAS,SAAS,EAClB,SAAS,aAAa;;CAKvB,GAAyB,GAAiB;AACzC,OAAK,IAAM,KAAM,MAAA,GAAgB;GAChC,IAAM,EAAC,SAAM,YAAQ,MAAA,EAAa;AAC3B,gBAAgB,aACvB,EAAK,aAAa,EAAQ,EACf,EAAM,aAAa,EAAQ;;;CAKxC,MAAW,GAAa,IAAK,KAAK,0BAA0B,IAAU,OAAQ,EAAG,MAAM,aAAY,IAAK,IAAI;CAC5G,cAAa;CACb,IAAI,YAAY;AAAC,SAAO,KAAK,mBAAmB,aAAa;;CAC7D,aAAa,MAAe;CAC5B,aAAa,MAAe;CAC5B,aAAa;AACN,OAAK,sBAEX,KAAK,mBAAkB,MAAA,EAAa,YAAY,EAChD,KAAK,YAAY;;CAGlB,cAAuB;AAGtB,SAFM,KAAK,oBAEJ,MAAA,EACN,KAAI,MAAK,MAAA,EAAa,GAAK,KAAK,CAChC,MAAK,MAAI,aAAa,YAAY,EAAE,OAAO,CAAC,GAJR;;CAUtC,GAAU,GAAY;EACrB,IAAM,IAAK,WAAW,KAAK,KAAK,IAAI,IAAI,EAClC,IAAM,EAAK,KACf,EAAK,GAAG,WAAA,aAA6B,GACpC,EAAK,KACL,GAAG,cAAc,EAAK,KAAK,EAAG,QAC/B,GAAG,YAAY,UAAU,EAAG,OACxB,IAAM,KAAK,IAAI,WAAW,EAAI,EAC9B,IAAQ,WAAW,GAAM,SAAS,OAAO,OAAO,EAChD,IAAQ,WAAW,GAAM,UAAU,OAAO,OAAO;AACvD,SAAO,MAAA,EAAoB,GAAM,GAAK,GAAO,GAAQ,eAAe,IAAK;;CAE1E,WAAgH;CAChH,GAAc,EAAC,YAAc,GAAa,GAAe,GAAgB,GAA+B;AAGvG,MAFA,MAAA,EAAa,cAAc,EAC3B,QAAQ,UAAU,EAAa,EAC3B,CAAE,EAKL,QAJA,KAAK,IAAI,YAAY,GAAK,GAAO,SAAa;AAE7C,GADA,MAAA,EAAa,iBAAiB,EAC9B,QAAQ,QAAQ,EAAa;IAC5B,EACK;EAIR,IAAM,IAAM,MAAA,EACX,KAAI,MAAK;GACT,IAAM,EAAC,WAAO,MAAA,EAAa,GAAK,MAC1BwC,IAAyB,CAAC,GAAK,EAAI,QAAQ;AAEjD,UADA,EAAI,UAAU,IACP;IACN;AACF,OAAK,IAAM,KAAM,MAAA,EAAgB,EAAM,CAAE,OAAA,EAAa,GAAK,KAAK,IAAI,UAAU;AAO9E,SALA,KAAK,IAAI,YAAY,GAAK,GAAO,SAAa;AAC7C,QAAK,IAAM,CAAC,GAAI,MAAM,EAAK,GAAG,UAAU;AAExC,GADA,MAAA,EAAa,iBAAiB,EAC9B,QAAQ,QAAQ,EAAa;IAC5B,EACK;;CAER,GAAc,GAAY,GAAa,GAAe,GAAgB,GAA+B;AACpG,UAAQ,UAAU,EAAa;EAC/B,IAAM,IAAU,aAAa,GAAM,WAAW,MAAA,EAAe,EACvD,IAAM,mBAAmB;GAC9B;GACA;GACA,iBAAiB,IAAU,YAAa,EAAI,SAAS,OAAO,GAAE,IAAG;GACjE,WAAW,eAAe,GAAM,aAAa,GAAM;GACnD,uBAAuB;GACvB,iBAAiB,IAAU;GAC3B,aAAa;GACb,CAAC,EACI,IAAK,EAAK,SAAS,SAAgB,SAAR,QAC3B,EAAC,aAAS;AAoBhB,SAnBK,QAAQ,WACZ,MAAA,EAAgB,EAAM,CAAC,KAAI,MAAK,IAAI,SACnC,MAAK,MAAA,EAAa,GAAK,GAAI,SAAS,GAAK,EAAG,CAC5C,CAAC,CACF,CAAC,KAAK,YAAW;GACjB,IAAM,IAAQ,cAAc,OAAO;IAAC,OAAO,EAAI;IAAO,QAAQ,EAAI;IAAO,CAAC;AAO1E,GANA,EAAI,OAAO,MAAA,GAAa,EAAC,eAAe,GAAM,CAAC,EAC/C,MAAM,KAAK,IAAI,QACd,GAEA,EAAI,QAAQ,QAAQ,OAAO,EAAM,CACjC,EACD,EAAM,SAAS;AAEf,QAAK,IAAM,KAAM,MAAA,EAAgB,EAAM,CAAE,OAAA,EAAa,GAAK,GAAI,cAAc;AAG7E,GAFA,EAAI,QAAQ,GAAK,EAEjB,QAAQ,QAAQ,EAAa;IAC5B,EACK;;CAIR,GAAY,GAAY;EACvB,IAAM,EAAC,UAAM;AACb,MAAI,CAAE,EAAI,OAAM;AAChB,MAAI,CAAE,EAAG,SAAS,OAAO,CAAE,OAAM;EAEjC,IAAM,IAAO,eAAe,GAAM,QAAQ,GAAK,EACzC,IAAiB,QAAQ,SAAQ,iBAAiB;AAUxD,SATI,KAAM,QAAQ,UAAU,EAAe,GAC1C,YAAW;GACX,IAAM,IAAM,MAAM,MAAM,EAAG;AAC3B,OAAI,CAAE,EAAI,GAAI,OAAU,MAAM,+BAA+B;AAG7D,GADA,SAAS,MAAM,EAAI,MAAM,CAAC,EACtB,KAAM,QAAQ,QAAQ,EAAe;MACtC,EAEG;;CAMR,GAAS,GAAY;EACpB,IAAM,EAAC,UAAO,OAAO,MAAO;AAC5B,MAAI,CAAE,EAAO,OAAM;AACnB,MAAI,EAAM,SAAS,IAAI,CAAE,OAAM;AAC/B,MAAI,KAAS,MAAA,EAAc,OAAM,SAAS,EAAM;AAChD,MAAI,CAAE,EAAK,OAAM;EAEjB,IAAM,IAAM,EAAC,QAAQ,IAAM;AAG3B,UAFA,MAAA,EAAa,KAAS,IAAI,MAAM,GAAO,GAAK,MAAA,GAAY,MAAA,GAAY,GAAM,KAAK,KAAK,KAAK,KAAK,EAAI,EAClG,MAAA,EAAe,KAAK,EAAM,EAClB,GAAR;GACA,KAAK;AAgBJ,IAfM,MAAA,MACL,MAAA,UAAuB,IACvB,MAAA,KAAoB,MAAI,MAAA,EAAmB,EAAE,EAC7C,MAAA,KAAgB,MAAI,MAAA,EAAe,EAAE,EACrC,KAAK,KAAK,QAAQ,EAAC,UAAM,CAAC,EAC1B,KAAK,cAAa;AACjB,KAAI,MAAA,EAAa,aAAY,SAAS,aAAa,IAC9C,KAAK,iBAAiB;AAC3B,UAAK,IAAM,KAAM,MAAA,GAAgB;MAChC,IAAM,IAAI,MAAA,EAAa,GAAK;AAC5B,MAAI,aAAa,YAAU,MAAA,EAAa,UAAU,GAAG,GAAM;;QAK9D,KAAK,IAAI,aAAa,QAAQ,oBAAmB,IAAO,YAAY,GAAK;AACzE;GAED,KAAK;AACJ,QAAI,MAAA,EAAmB;AACvB,UAAA,IAAoB;AACpB;;AAKD,SAFA,KAAK,OAAO,aAAa,EAAK,EAEvB,EAAI;;CAEZ,KAAoB,EAAe;CACnC,KAAuB,EAAE;CACzB,KAAc;CACd,KAAe;CAEf,GAAK,GAAqB;EAEzB,IAAM,IAAK,MAAA,EAAmB,EAAK,EAC7B,IAAK,MAAA,EAAa,IAClB,IAAO,EAAG,KAAK,KACf,IAAO,EAAG,KAAK;AACrB,MAAI,eAAe,GAAM,SAAS,GAAM,CAGvC,CAFA,MAAA,EAAW,cAAc,GAAM,MAAA,EAAW,SAAS,SAAQ,EAAE,EAC7D,MAAA,EAAW,cAAc,GAAM,MAAA,EAAW,SAAS,SAAQ,EAAE,EAC7D,MAAA,GAA4B;WAEpB,EAAK,OACT,WAAW,GAAM,SAAS,EAAE,KAC/B,MAAA,EAAW,cAAc,GAAM,EAAK,MAAM,EAC1C,MAAA,EAAW,cAAc,GAAM,EAAK,MAAM,EAC1C,MAAA,GAA4B;WAGrB,EAAK,MAAM;GACnB,IAAM,EAAC,YAAQ,GACX,IAAW;AACf,OAAI,MAAO,EAAM,OAAM,4BAA2B,IAAM;GAExD,IAAM,IAAU,MAAA,EAAa;AAC7B,OAAI,CAAE,EAAS,OAAM,mBAAkB,IAAM;GAC7C,IAAM,IAAY,EAAQ,MACpB,IAAY,EAAQ,MACpB,IAAgB,MAAA,EAAW,cAAc,EAAU,IAAI,EACvD,IAAgB,MAAA,EAAW,cAAc,EAAU,IAAI;AAM7D,GALA,IAAW,IAAgB,IAAe,IAAe,GACrD,IAAW,MAAA,EAAW,cAAc,EAAK,IAAE,EAAE,GAEjD,MAAA,EAAW,cAAc,GAAM,EAAS,EACxC,MAAA,EAAW,cAAc,GAAM,EAAS,EACxC,MAAA,GAA4B;;AAM7B,SAHA,EAAK,aAAa,EAAG,KAAK,KAAK,MAAM,GAAG,GAAG,EAC3C,KAAK,OAAO,aAAa,EAAK,EAEvB,EAAG,IAAI,EAAK;;CAEpB,KAAwB;AAAC,QAAA,IAAiB,MAAA,GAAkB;;CAG5D,GAAW,GAAY;AAetB,SAdA,MAAA,EAAoB,IAAM,MAAQ;GAGjC,IAAM,IAAK,MAAA,EAAa,MAAA,EAAmB,EAAC,UAAM,CAAC;AAGnD,OAAI,EAAK,SAAS,QAAQ;AAEzB,IADA,EAAG,KAAK,SAAS,EAAK,EACtB,EAAG,KAAK,SAAS,EAAK;AACtB;;AAED,KAAG,QAAQ,EAAK,CAAC,SAAS,EAAK;IAC9B,EAEK;;CAKR,QAAA,IAAkD;CAyClD,KAAe,cAAc,OAAO;EACnC,OAAQ,OAAO;EACf,QAAS,OAAO;EAChB,CAAC;CACF,KAAe,IAAI,OAAO,MAAA,EAAkB;CAE5C,KAAe,cAAc,OAAO;EACnC,OAAQ,OAAO;EACf,QAAS,OAAO;EAChB,CAAC;CACF,KAAe,IAAI,OAAO,MAAA,EAAkB;CAI5C,GAAO,GAAY;EAClB,IAAM,EAAC,aAAS,GACV,oBAAW,IAAI,KAAW,EAC1B,IAAW,MAAA,EAAgB,EAAM,CAAC,KAAI,OAC3C,EAAS,IAAI,EAAG,EACT,MAAA,EAAa,GAAK,MACxB,EAEI,UAAY;AACjB,IAAC,MAAA,GAAY,MAAA,KAAc,CAAC,MAAA,GAAY,MAAA,EAAW;GACnD,IAAMc,IAAwB,EAAE;AAChC,QAAK,IAAM,CAAC,GAAI,MAAO,OAAO,QAAQ,MAAA,EAAa,EAAE;AACpD,QAAI,EAAS,IAAI,EAAG,EAAE;AAAC,OAAG,UAAU,EAAK;AAAE;;IAG3C,IAAM,EAAC,MAAM,EAAC,KAAK,KAAI,MAAM,EAAC,KAAK,QAAM,GACnC,IAAM,MAAA,EAAW,cAAc,EAAE;AAIvC,IAHA,MAAA,EAAW,YAAY,EAAE,EACzB,MAAA,EAAW,YAAY,EAAE,EACzB,MAAA,EAAW,WAAW,GAAG,EAAI,EAC7B,MAAA,EAAW,WAAW,GAAG,EAAI;;AAEzB,WAAQ,WAAW,EAAK,CAAC,WAAU;AAMvC,IALA,MAAA,EAAW,UAAU,IACrB,MAAA,EAAW,UAAU,IACrB,MAAA,EAAkB,UAAU,IAC5B,MAAA,EAAkB,UAAU,IAE5B,QAAQ,cAAc,YAAY;KACjC;;AASH,MALA,MAAA,EAAkB,UAAU,EAAE,EAC9B,MAAA,EAAkB,QAAQ,GAGb,WAAW,GAAM,QAAQ,EAAE,KAC3B,KAAK,MAAA,EAAa,WAAqB,QAAR,GAAM,EAAS;EAG3D,IAAMC,IAA4B,EAAE,EAC9B,IAAQ,MAAA,EAAe,KAAI,MAAK;GACrC,IAAM,EAAC,SAAM,YAAQ,MAAA,EAAa,IAC5B,IAAM,EAAS,IAAI,EAAG,GAAE,IAAM;AAEpC,UADI,EAAI,IAAI,WAAS,EAAgB,KAAK,EAAI,IAAI,EAC3C;IACN,EACI,EAAC,WAAQ,gBAAY,KAAK;AAChC,IAAS,OAAO,MAAA,GAAY,EAAC,eAAe,MAAA,GAAkB,CAAC;EAE/D,IAAI,UAAqB;AACxB,QAAK,IAAM,KAAO,EAAiB,GAAS,OAC3C,GACA;IAAC,eAAe,MAAA;IAAmB,OAAO;IAAM,CAChD;;AAEF,MAAI,CAAE,EAAM,MAAK,MAAM,EAAI,gBAAgB,EAAE;GAC5C,IAAM,IAAS;AACf,aAAqB;AAAuC,IAAtC,UAAqB,IAAiB,GAAQ;;;EAGrE,IAAM,UAAc,EAAS,OAAO,MAAA,GAAY,EAAC,eAAe,MAAA,GAAkB,CAAC;AACnF,KAAQ;EACR,IAAI,UAAqB;AAGxB,GAFA,MAAA,EAAW,UAAU,IACrB,GAAQ,EACR,MAAA,EAAW,UAAU;;AAEtB,MAAI,CAAE,EAAS,MAAK,MAAM,EAAI,gBAAgB,EAAE;GAC/C,IAAM,IAAS;AACf,aAAqB;AAAuC,IAAtC,UAAqB,IAAiB,GAAQ;;;EAErE,IAAM,UAAiB;AAKtB,GAJA,GAAe,EACf,MAAA,EAAkB,UAAU,IAE5B,GAAe,EACf,MAAA,EAAkB,UAAU;KAKvB,EAAC,SAAM,YAAQ,GACf,UAAa;AAA2B,GAA1B,EAAO,OAAO,EAAU,EAAE,GAAM;;AACpD,MAAI,CAAE,KAAQ,CAAE,EAGf,QAFA,SAAS,MAAM,aAAa,GAAM,MAAA,GAAmB,EAAC,OAAO,GAAE,QAAO,IAAiB,SAAY,GAAgB,EACnH,EAAO,IAAI,EAAU,EACd;EAIR,IAAM,IAAW;GAChB,MAAO,QAAQ;GACf,OAAQ,WAAW,GAAM,SAAS,IAAK;GACvC,MAAO;GACP;AACD,QAAA,EAAkB,UAAU,CAAC,IAAI,OAChC,KAAA,GACA,KAAQ,GAAA,GACR,EACA,CAAC;EACF,IAAM,IAAK,SAAS,MAAM,aAAa,GAAM,GAAU,EAAC,MAAM,GAAE,QAAO,IAAiB,SAAY,IAAiB,CAAE,EAAK;AAc5H,SAbM,IAMK,IAAI,WAAW,GAAM,KAAA,IAAW,MAAK;AAK/C,GAJA,EAAS,OAAO,EAAG,SACnB,EAAG,SAAS,EAEZ,EAAG,OAAO,EACV,EAAO,IAAI,EAAU;MACnB,MAAS;AAAC,GAAI,KAAQ,KAAK,KAAK,QAAQ;IAAE,CACnC,OAZT,EAAO,IAAI,EAAU,EACd;;CAcT,GAAW,IAAQ,IAAc;AAAC,SAAO,IAAO,EAAM,MAAM,IAAI,GAAE,MAAA;;CAClE,GAAe,GAAY,GAAyD;EACnF,IAAM,IAAM,MAAA,EAAgB,EAAK,MAAM;AACvC,OAAK,IAAM,KAAM,GAAK;GACrB,IAAM,IAAK,MAAA,EAAa;AACxB,OAAI,CAAE,EAAI,OAAM,cAAc,EAAG;AAEjC,KAAI,GAAI,EAAG;;AAGZ,SAAO;;CAER,GAAY,IAAS,IAAc;AAClC,SAAO,MAAA,EAAgB,EAAO,CAC7B,MAAM,GAAG,MAAK;GACd,IAAM,IAAK,MAAA,EAAW,cAAc,MAAA,EAAa,GAAI,KAAK,IAAI,EACxD,IAAK,MAAA,EAAW,cAAc,MAAA,EAAa,GAAI,KAAK,IAAI;AAG9D,UAFI,IAAK,IAAW,KAChB,IAAK,IAAW,IACb;IACN;;CAGH,mBAAmB,GAAe;AACjC,OAAK,IAAM,KAAM,MAAA,GAAgB;GAChC,IAAM,IAAI,MAAA,EAAa,GAAK;AAC5B,GAAI,aAAa,YAAU,EAAE,IAAI,EAAC,UAAM,CAAC;;;CAM3C,GAAO,GAAY;AAClB,MAAI,WAAW,GAAM,QAAQ,IAAI,KAAK,EAAG,QAAO;EAEhD,IAAM,IAAU,MAAA,EAAgB,EAAK,MAAM,CAC1C,KAAI,MAAK,MAAA,EAAa,GAAK,KAAK,IAAI,EAC/B,EAAC,aAAU,cAAU,KAAK;AAChC,QAAA,EAAkB,OAAO,OAAO,QAAQ,OAAO,OAAO;EACtD,IAAM,UAAiB;AACtB,SAAA,EAAW,UAAU;AACrB,QAAK,IAAM,KAAK,EAAS,GAAS,OACjC,GAAG;IAAC,eAAe,MAAA;IAAmB,OAAO;IAAM,CACnD;AACD,SAAA,EAAW,UAAU;;AAGtB,EADA,MAAA,EAAkB,UAAU,IAC5B,MAAA,EAAkB,QAAQ;EAE1B,IAAM,IAAI,KAAK,WAAW,GAAM,QAAQ,GAAG,CAAC,EACtC,IAAI,KAAK,WAAW,GAAM,QAAQ,GAAG,CAAC,EACtC,IAAO,MAAM,UACX,WACA;AAAC,SAAA,EAAkB,IAAI,KAAK,MAAM,KAAK,QAAQ,GAAE,IAAE,EAAE,GAAE;KACzD,IAAO,MAAM,UACX,WACA;AAAC,SAAA,EAAkB,IAAI,KAAK,MAAM,KAAK,QAAQ,GAAE,IAAE,EAAE,GAAE;;AAe/D,SAdA,MAAA,EAAkB,UAAU,EAAE,EAE9B,SAAS,MAAM,aAAa,GAAM,MAAA,GAAmB;GAAC,GAAG;GAAG,GAAG;GAAE,QAAO;AAAS,GAAR,GAAM,EAAE,GAAM;WAAQ;AAQ9F,GAPA,EAAO,OAAO,EAAU,EAExB,MAAA,EAAW,UAAU,IACrB,MAAA,EAAkB,UAAU,IAC5B,MAAA,EAAkB,IAAI,GACtB,MAAA,EAAkB,IAAI,GAEtB,QAAQ,cAAc,YAAY;WAC3B,GAAgB,EACxB,EAAO,IAAI,EAAU,EAEd;;CAKR,GAAK,GAAY;EAChB,IAAM,EAAC,UAAO,WAAQ,YAAQ;AAC9B,MAAI,CAAE,EAAO,OAAM;EAEnB,IAAM,IAAK,MAAA,EAAa,MAAA,EAAmB,EAAK,GAC1C,IAAM,EAAG,MAEX,UAAwB;AAC5B,EAAI,MACC,MAAA,EAAa,aAAY,EAAI,YAAY,GAAK,IAEjD,EAAI,YAAY,GAAM,EACtB,UAAwB,EAAI,WAAW;EAIzC,IAAM,IAAM,SAAS,YAAY,GAAM,EAAI,EACrC,IAAS,eAAe,GAAM,UAAU,GAAM,EAC9C,IAAU,eAAe,GAAM,WAAW,GAAM,EAChD,IAAS,EAAG,KAAK;AAcvB,SAbA,SAAS,MAAM,KAAQ,GAAO,GAAM,GAAK,SAAS,YAAY,GAAM,EAAI,QAAO,IAAiB,SAAuB;AAGtH,OAFI,KAAQ,OAAO,OAAO,GAAK,EAAI,EAE/B,EAAS,MAAK,IAAM,KAAM,SAAS,YAAmB,GAAQ,KAAM,EAAI;IAC3E,EAIE,YAAY,MACf,EAAI,IAAI,UAAU,CAAC,MAAM,WAAW,EAAK,CAAC,EAC1C,EAAI,WAAW,CAAC,EAAK,GAGf;;CAKR,GAAY,GAAY;AAYvB,SAXA,MAAA,EAAoB,IAAM,MAAQ;GACjC,IAAM,IAAK,MAAA,EAAa,MAAA,EAAmB,EAAC,UAAM,CAAC;AACnD,OAAI,EAAK,SAAS,QAAQ;AAEzB,IADA,MAAA,EAAkB,EAAG,MAAM,EAAK,EAChC,MAAA,EAAkB,EAAG,MAAM,EAAK;AAChC;;GAED,IAAM,IAAI,EAAG,QAAQ,EAAK;AAC1B,SAAA,EAAkB,GAAG,EAAK;IACzB,EAEK;;CAER,GAAa,GAAU,GAAY;EAClC,IAAM,IAAI,EAAE;AAGZ,EAFA,EAAE,YAAY,EAAE,EAChB,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,MAAM,WAAW,EAAK,CAAC,EAClD,EAAE,SAAS,KAAK,EAAK;;CAItB,GAAc,GAAY;AAiBzB,SAhBA,MAAA,EAAoB,IAAM,MAAQ;GACjC,IAAM,IAAK,MAAA,EAAa,MAAA,EAAmB,EAAC,UAAM,CAAC;AACnD,OAAI,EAAK,SAAS,QAAQ;IACzB,IAAM,IAAI,EAAG,MACP,IAAI,EAAG;AAIb,IAHA,EAAE,IAAI,UAAU,MAChB,EAAE,IAAI,UAAU,MAChB,EAAE,WAAW,EAAE,EACf,EAAE,WAAW,EAAE;AACf;;GAED,IAAM,IAAI,EAAG,QAAQ,EAAK;AAE1B,GADA,EAAE,IAAI,UAAU,MAChB,EAAE,WAAW,EAAE;IACd,EAEK;;CAIR,GAAe,GAAY;AAY1B,SAXA,MAAA,EAAoB,IAAM,MAAQ;GACjC,IAAM,IAAK,MAAA,EAAa,MAAA,EAAmB,EAAC,UAAM,CAAC;AACnD,OAAI,EAAK,SAAS,QAAQ;AAEzB,IADA,MAAA,EAAqB,EAAG,MAAM,EAAK,EACnC,MAAA,EAAqB,EAAG,MAAM,EAAK;AACnC;;GAED,IAAM,IAAI,EAAG,QAAQ,EAAK;AAC1B,SAAA,EAAqB,GAAG,EAAK;IAC5B,EAEK;;CAER,GAAgB,GAAU,GAAY;EACrC,IAAM,IAAI,EAAE;AACZ,MAAI,CAAE,EAAE,QAAS,OAAM;EAEvB,IAAM,IAAI,KAAK,WAAW,GAAM,SAAS,EAAE,CAAC,EACtC,IAAM,EAAE,QAAQ;AACtB,MAAI,KAAO,EAAG,OAAM,YAAY,OAAO,EAAI,CAAC;AAE5C,IAAE,SAAS,GAAI,UACf,EAAE,QAAQ,GAAI,UAAU,eAAe,GAAM,WAAW,GAAK;;CAM9D,GAAI,GAAY;EACf,IAAM,EAAC,YAAQ;AACf,MAAI,CAAE,EAAM,OAAM;EAElB,IAAM,IAAK,MAAA,EAAkB,EAAK;AAMlC,EALA,OAAO,EAAK,MACZ,KAAK,iBAAiB,EAClB,MAAA,EAAa,aAAY,EAAK,OAAO,IAChC,UAAU,KAAM,WAAW,GAAM,QAAQ,IAAI,EAEtD,MAAA,EAAa,SAAQ,QAAgC,EAAK,EAAE,EAAG;EAG/D,IAAM,IAAS,eAAe,GAAM,UAAU,GAAK,EAC7C,IAAW,KAAK,IAAI,UAAU;AASpC,SANM,KAAQ,KAAK,IAAI,aAAa,QAAQ,eAAe,EAAO,EAClE,EAAG,MAAM,EAAK,WAAW,OAAO,KAAK,CAAC,EACtC,KAAK,IAAI,aAAa,QAAQ,eAAe,EAAS,EAEtD,MAAA,EAAa,cAAc,EAAG,EAEvB;;CAGR,MAAgB,MAAyB;AAAoB,QAAnB,MAAA,GAAiB,EAAQ;;CACnE,GAAc,GAAsB;EACnC,IAAM,IAAK,MAAA,EAAmB,GAAM,MAAA,EAAgB,EAE9C,IADK,MAAA,EAAa,GACT,QAAQ,EAAK;AAC5B,MAAI,EAAG,aAAe,UAAW,OAAM,IAAI;AAE3C,SAAO;;CAER,kBAAwB;AAAC,WAAS,aAAa,KAAK,OAAO;;CAI3D,MAAY,MAAwB;AAAoB,QAAnB,MAAA,GAAiB,EAAQ;;CAC9D,GAAU,GAAY;EACrB,IAAM,EAAC,aAAS;AAChB,MAAI,CAAE,EAAO,OAAM;EAEnB,IAAM,IAAM,MAAA,EAAa;AACzB,MAAI,CAAE,KAAO,EAAG,EAAI,QAAQ,EAAK,YAAY,UAAW,OAAM,GAAG,EAAM;AAKvE,EAJA,MAAA,IAAiB,GAEjB,MAAA,EAAU,WAAW,EACrB,MAAA,IAAkB,GAClB,KAAK,IAAI,aAAa,QAAQ,qBAAqB,EAAM;AACzD,OAAK,IAAM,KAAM,MAAA,GAAgB;GAChC,IAAM,EAAC,SAAM,YAAQ,MAAA,EAAa;AAC3B,gBAAgB,aACvB,EAAK,QAAQ,EAAiB,QAAQ,MAAO;;AAG9C,SAAO;;CAER,IAAI,2BAAqC;AAExC,SADA,MAAA,GAAiB,EACV,KAAK;;CAEb,IAAI,oBAAqC;AAGxC,SAFM,MAAA,IAEW,MAAA,EAAe,OAFH;;CAI9B,KAAgC,KAAA;CAChC,WAA8B;AAAC,QAAM;;CAErC,GAAc,GAAY,IAAM,IAAY;EAC3C,IAAM,IAAK,EAAK,SAAS;AACzB,MAAI,EAAG,SAAS,IAAI,CAAE,OAAM;AAC5B,MAAI,EAAG,KAAM,MAAA,GAAe,OAAM,cAAa,IAAI;AAGnD,SADA,EAAK,QAAQ,GACN;;CAIR,eAAe;AAAC,QAAA,EAAU,WAAW;;CAIrC,GAAY,GAAY;EACvB,IAAM,IAAK,MAAA,EAAkB,EAAK;AAGlC,SAFI,EAAK,UAAU,MAAA,KAAmB,EAAK,SAAS,UAAQ,MAAA,EAAU,WAAW,EACjF,EAAG,WAAW,EACP;;CAKR,GAAS,GAAY;AAAoD,SAAnD,MAAA,EAAa,YAAY,MAAA,EAAkB,EAAK,CAAC,EAAS;;CAGhF,IAAI,GAAY;AAQf,SAPI,eAAe,GAAM,kBAAkB,GAAK,IAAE,MAAA,EAAU,WAAW,EAEnE,MAAA,MACH,MAAA,EAAe,KAAK,SAAS,EAAK,EAClC,MAAA,EAAe,KAAK,SAAS,EAAK,GAG5B;;CAIR,IAAO,GAAY;AAClB,MAAI,CAAE,EAAK,IAAK,OAAM;AAGtB,SADA,MAAA,EAAa,SAAQ,QAAgC,EAAK,EAAE,MAAA,EAAkB,EAAK,CAAC,EAC7E;;CAIR,IAAM,GAAY;AACjB,MAAI,CAAE,EAAK,MAAM,CAAE,EAAK,SAAS,CAAE,EAAK,IAAK,OAAM;AAOnD,SANA,EAAK,OAAO,KAAK,OAAO,UAExB,EAAK,UAAU,wCACf,EAAK,gBAAgB,wCACrB,EAAK,kBAAkB,EAAK,OAC5B,MAAA,EAAa,UAAS,QAAgC,EAAK,EAAE,MAAA,EAAkB,EAAK,CAAC,EAC9E;;CAIR,IAAG,GAAY;AAAC,SAAO,MAAA,EAAS;GAAC,GAAG;GAAM,MAAM;GAAK,CAAC;;CAGtD,IAAO,GAAY;EAClB,IAAM,EAAC,MAAG,SAAK;AACf,MAAI,CAAE,EAAG,OAAM;AACf,MAAI,CAAE,EAAG,OAAM;AAKf,SAHA,EAAK,OAAO,MAAK,mBAAmB,EAAE,GAAE,MAAK,mBAAmB,EAAE,GAAE,KACpE,OAAO,EAAK,GACZ,OAAO,EAAK,GACL,MAAA,EAAS,EAAK;;CAKtB,IAAM,GAAY;AAEjB,SADA,MAAA,EAAa,UAAS,QAAgC,EAAK,EAAE,MAAA,EAAkB,EAAK,CAAC,EAC9E;;CAIR,IAAK,GAAY;AAChB,MAAI,CAAE,EAAK,EAAG,OAAM;AAGpB,SADA,MAAA,EAAa,SAAQ,QAAgC,EAAK,EAAE,MAAA,EAAkB,EAAK,CAAC,EAC7E;;CAKR,IAAU,EAAC,YAAc;AACxB,UAAQ,MAAM,gBAAgB;AAC9B,OAAK,IAAM,KAAM,MAAA,EAAgB,EAAM,EAAE;GACxC,IAAM,EAAC,SAAM,YAAQ,MAAA,EAAa;AAClC,OAAI;AACH,YAAQ,KAAK,KAAK,EAAK,KAAK,MAAM,GAAG,GAAG,CAAC,MAAM,UAAU,OAAO,aAAY,QAAO,MAAM,IACzF,KAAK,MAAM,YAAY,EAAK,MAAM,CAAC,aAAa,EAAK,MAAM,CAAC,IAAI,CAAC;YACzD,GAAG;AAGX,IAFA,QAAQ,MAAM,mBAAmB,EAAE,EACnC,QAAQ,MAAM,WAAW,EAAK,MAAM,GAAG,EACvC,QAAQ,MAAM,WAAW,EAAK,MAAM,GAAG;;;AAKzC,SAFA,QAAQ,UAAU,EAEX;;CAKR,IAAc,GAAY;EACzB,IAAM,IAAK,MAAA,EAAmB,GAAM,MAAA,EAAgB,EAC9C,IAAI,eAAe,GAAM,WAAW,GAAK;AAI/C,SAHA,MAAA,EAAkB,EAAK,CAAC,UAAU,GAClC,KAAK,IAAI,aAAa,QAAQ,oBAAmB,IAAI,YAAY,EAAE,EAE5D;;CAKR,IAAQ,GAAY;AASnB,SARA,MAAM,YAAY,GAAM,OAAO,EAC/B,EAAK,OAAO,KAAK,OAAO,UAGnB,MAAA,EAAkB,EAAK,CAAC,UAAU,EAAK,EAE5C,KAAK,OAAO,aAAa,EAAK,EAEvB;;CAKR,SAAc;EAEb,IAAMI,IAAS,EAAE;AACjB,OAAK,IAAM,KAAM,MAAA,GAAgB;GAChC,IAAM,IAAK,MAAA,EAAa;AAExB,KAAE,KAAM;IACP,KAAK,EAAG;IACR,MAAM,EAAG,KAAK,QAAQ;IACtB,MAAM,EAAG,KAAK,QAAQ;IACtB;;AAEF,SAAO;;CAER,SAAS,GAAmC;AAE3C,QAAA,EAAU,UAAU;EAEpB,IAAML,IAAwB,EAAE,EAC1BM,IAAqC,EAAE;AAC7C,OAAK,IAAM,CAAC,GAAI,EAAC,SAAM,MAAM,EAAC,UAAM,SAAM,aAAS,OAAO,QAAQ,EAAQ,EAAE;AAC3E,KAAM,KAAK;IAAC;IAAI;IAAI,CAAC;GACrB,IAAM,IAAK,MAAA,EAAa,OAAQ,IAAI,MAAM,GAAI,GAAK,MAAA,GAAY,MAAA,GAAY,EAAE,EAAE,KAAK,KAAK,KAAK,KAAK,EAAC,QAAQ,IAAM,CAAC;AAEnH,GADA,EAAG,KAAK,SAAS,GAAM,EAAK,EAC5B,EAAG,KAAK,SAAS,GAAM,EAAK;;EAG7B,IAAM,IAAM,MAAA,EAAW,SAAS;AAahC,SAZA,EAAK,KAAK,IAAI,SAAQ,MAAK;AAC1B,QAAK,IAAM,EAAC,OAAI,YAAQ,EAAM,MAAM,EAAC,KAAK,KAAI,EAAC,KAAK,QAAM,MAAM,IAAG,IAAG,IAAI,IAAG,KAAI,EAAE,EAAE;IACpF,IAAM,IAAK,MAAA,EAAa;AACxB,QAAI,CAAE,EAAI;IAEV,IAAM,IAAI,IAAM,IAAK,IAAK,IAAK,GACzB,EAAC,SAAM,YAAQ;AAErB,IADA,MAAA,EAAW,cAAc,EAAK,KAAK,EAAE,EACrC,MAAA,EAAW,cAAc,EAAK,KAAK,EAAE;;AAEtC,MAAI;IACH,CAAC,EACI"}