From b7f5131c2bd6137e68f215d98ccc3395ec40904e Mon Sep 17 00:00:00 2001 From: sebavan Date: Fri, 20 Mar 2026 14:29:35 +0100 Subject: [PATCH 1/3] feat: migrate embedded frontend from custom MVX framework to React 18 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the custom MVX rendering framework (BaseComponent, StateStore, Compositor, MVX orchestrator) with React 18 functional components using an adapter pattern that preserves the existing public API. ## What changed - **Adapter pattern**: ReactCaptureMenu and ReactResultView implement the exact same public API as the original classes, using ExternalStore + useSyncExternalStore for state management instead of MVX state IDs - **32 React components** replace 31 MVX components across CaptureMenu (5 components) and ResultView (18 components + JSONRenderTree) - **Visual regression tests**: 38 Playwright screenshot tests ensure pixel-level visual parity with the original UI - **SCSS unchanged**: Same 3 SCSS files, same class names, same DOM structure — zero CSS changes needed - **Ace editor**: Wrapped with useRef/useEffect for proper lifecycle management (no StrictMode — incompatible with Ace) ## Architecture - ExternalStore bridges imperative API → React reactivity - Adapter classes translate method calls → store.setState() → re-render - React components are purely presentational (read store, call handlers) - Context pattern passes adapter instance to component tree - JSONRenderItem discriminated union for recursive JSON tree rendering ## Bug fixes - hide() now actually works (MVX had truthy-check bug) - Removed dead IE11 navigator.msSaveBlob code path - Fixed falsy number rendering in VisualStateListItem (textureLayer=0) ## Bundle impact - Before: 667 KB (MVX + Ace) - After: 794 KB (React + ReactDOM + Ace) — +127 KB for React Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitignore | 2 +- dist/spector.bundle.js | 84 +- dist/spector.bundle.js.LICENSE.txt | 39 + package-lock.json | 214 ++++- package.json | 11 +- spec/AI_WORKING_SPEC.md | 374 ++++++++ .../captureMenu/canvasListComponent.ts | 28 - .../captureMenu/canvasListItemComponent.ts | 22 - .../captureMenu/captureMenu.ts | 267 ------ .../captureMenuActionsComponent.ts | 36 - .../captureMenu/captureMenuComponent.ts | 25 - .../captureMenu/fpsCounterComponent.ts | 11 - src/embeddedFrontend/mvx/baseComponent.ts | 179 ---- src/embeddedFrontend/mvx/componentInstance.ts | 91 -- src/embeddedFrontend/mvx/compositor.ts | 65 -- src/embeddedFrontend/mvx/mvx.ts | 115 --- src/embeddedFrontend/mvx/stateStore.ts | 187 ---- .../react/CaptureMenu/CanvasList.tsx | 43 + .../react/CaptureMenu/CanvasListItem.tsx | 20 + .../react/CaptureMenu/CaptureMenuActions.tsx | 42 + .../react/CaptureMenu/CaptureMenuContext.ts | 12 + .../react/CaptureMenu/CaptureMenuRoot.tsx | 47 + .../react/CaptureMenu/FpsCounter.tsx | 16 + .../react/CaptureMenu/ReactCaptureMenu.ts | 250 ++++++ .../ResultView/CaptureList/CaptureList.tsx | 98 +++ .../CaptureList/CaptureListItem.tsx | 54 ++ .../ResultView/CommandList/CommandDetail.tsx | 19 + .../ResultView/CommandList/CommandList.tsx | 22 + .../CommandList/CommandListItem.tsx | 114 +++ .../ResultView/Content/ResultViewContent.tsx | 19 + .../Information/InformationColumn.tsx | 22 + .../react/ResultView/JSON/JSONContent.tsx | 19 + .../react/ResultView/JSON/JSONGroup.tsx | 28 + .../react/ResultView/JSON/JSONHelpItem.tsx | 32 + .../react/ResultView/JSON/JSONImageItem.tsx | 33 + .../react/ResultView/JSON/JSONItem.tsx | 25 + .../react/ResultView/JSON/JSONRenderTree.tsx | 45 + .../ResultView/JSON/JSONVisualStateItem.tsx | 46 + .../react/ResultView/Menu/ResultViewMenu.tsx | 140 +++ .../react/ResultView/ReactResultView.ts | 816 +++++++++++++++++ .../react/ResultView/ResultViewContext.ts | 12 + .../react/ResultView/ResultViewRoot.tsx | 120 +++ .../ResultView/SourceCode/SourceCode.tsx | 462 ++++++++++ .../VisualStateList/VisualStateList.tsx | 22 + .../VisualStateList/VisualStateListItem.tsx | 70 ++ src/embeddedFrontend/react/jsx-augments.d.ts | 17 + .../react/shared/ExternalStore.ts | 59 ++ .../shared}/mdnCommandLinkHelper.ts | 0 src/embeddedFrontend/react/shared/types.ts | 114 +++ .../resultView/JSON/jsonContentComponent.ts | 11 - .../resultView/JSON/jsonGroupComponent.ts | 13 - .../resultView/JSON/jsonHelpItemComponent.ts | 19 - .../resultView/JSON/jsonImageItemComponent.ts | 15 - .../resultView/JSON/jsonItemComponent.ts | 15 - .../JSON/jsonVisualStateItemComponent.ts | 35 - .../captureList/captureListComponent.ts | 87 -- .../captureList/captureListItemComponent.ts | 53 -- .../commandList/commandDetailComponent.ts | 11 - .../commandList/commandListComponent.ts | 13 - .../commandList/commandListItemComponent.ts | 110 --- .../content/resultViewContentComponent.ts | 9 - .../information/informationColumnComponent.ts | 10 - .../menu/resultViewMenuComponent.ts | 81 -- src/embeddedFrontend/resultView/resultView.ts | 821 ------------------ .../resultView/resultViewComponent.ts | 11 - .../sourceCode/sourceCodeComponent.ts | 349 -------- .../visualStateListComponent.ts | 12 - .../visualStateListItemComponent.ts | 74 -- .../ux/scrollIntoViewHelper.ts | 25 - src/spector.ts | 8 +- src/tsconfig.json | 6 +- test/.gitignore | 2 + test/fixtures/captured-frame.json | 728 ++++++++++++++++ test/fixtures/generate-capture.spec.ts | 68 ++ test/fixtures/test-scene.html | 120 +++ test/helpers/capture-helper.ts | 62 ++ test/helpers/spector-fixture.ts | 114 +++ test/playwright.config.ts | 46 + .../capture-menu-default-chromium-win32.png | Bin 0 -> 6750 bytes ...ture-menu-dropdown-open-chromium-win32.png | Bin 0 -> 1976 bytes .../capture-menu-error-log-chromium-win32.png | Bin 0 -> 1453 bytes .../capture-menu-fps-chromium-win32.png | Bin 0 -> 784 bytes .../capture-menu-full-chromium-win32.png | Bin 0 -> 6750 bytes .../capture-menu-hidden-chromium-win32.png | Bin 0 -> 6750 bytes .../capture-menu-info-log-chromium-win32.png | Bin 0 -> 3196 bytes .../capture-menu-paused-chromium-win32.png | Bin 0 -> 2427 bytes .../capture-menu-playing-chromium-win32.png | Bin 0 -> 1649 bytes ...apture-menu-please-wait-chromium-win32.png | Bin 0 -> 2556 bytes .../responsive-1023x600-chromium-win32.png | Bin 0 -> 47945 bytes .../responsive-1025x600-chromium-win32.png | Bin 0 -> 52791 bytes .../responsive-1366x768-chromium-win32.png | Bin 0 -> 68450 bytes .../responsive-1920x1080-chromium-win32.png | Bin 0 -> 68289 bytes ...ult-view-active-command-chromium-win32.png | Bin 0 -> 8991 bytes ...esult-view-captures-tab-chromium-win32.png | Bin 0 -> 19220 bytes ...ult-view-command-detail-chromium-win32.png | Bin 0 -> 36405 bytes ...esult-view-command-list-chromium-win32.png | Bin 0 -> 8967 bytes ...lt-view-commands-layout-chromium-win32.png | Bin 0 -> 68289 bytes ...sult-view-end-state-tab-chromium-win32.png | Bin 0 -> 44747 bytes ...result-view-full-layout-chromium-win32.png | Bin 0 -> 68289 bytes ...lt-view-information-tab-chromium-win32.png | Bin 0 -> 63168 bytes ...ult-view-init-state-tab-chromium-win32.png | Bin 0 -> 44747 bytes .../result-view-menu-bar-chromium-win32.png | Bin 0 -> 4303 bytes ...sult-view-search-filter-chromium-win32.png | Bin 0 -> 5588 bytes ...sult-view-visual-states-chromium-win32.png | Bin 0 -> 18265 bytes .../smoke-baseline-chromium-win32.png | Bin 0 -> 25970 bytes .../source-code-beautify-chromium-win32.png | Bin 0 -> 55644 bytes .../source-code-fragment-chromium-win32.png | Bin 0 -> 48507 bytes .../source-code-tab-bar-chromium-win32.png | Bin 0 -> 3072 bytes .../source-code-vertex-chromium-win32.png | Bin 0 -> 55799 bytes ...ual-state-no-stray-text-chromium-win32.png | Bin 0 -> 18265 bytes test/visual/capture-menu.spec.ts | 199 +++++ test/visual/responsive.spec.ts | 58 ++ test/visual/result-view.spec.ts | 195 +++++ test/visual/smoke.spec.ts | 56 ++ test/visual/source-code.spec.ts | 149 ++++ .../visual/visual-state-no-stray-text.spec.ts | 53 ++ 116 files changed, 5332 insertions(+), 2894 deletions(-) create mode 100644 dist/spector.bundle.js.LICENSE.txt create mode 100644 spec/AI_WORKING_SPEC.md delete mode 100644 src/embeddedFrontend/captureMenu/canvasListComponent.ts delete mode 100644 src/embeddedFrontend/captureMenu/canvasListItemComponent.ts delete mode 100644 src/embeddedFrontend/captureMenu/captureMenu.ts delete mode 100644 src/embeddedFrontend/captureMenu/captureMenuActionsComponent.ts delete mode 100644 src/embeddedFrontend/captureMenu/captureMenuComponent.ts delete mode 100644 src/embeddedFrontend/captureMenu/fpsCounterComponent.ts delete mode 100644 src/embeddedFrontend/mvx/baseComponent.ts delete mode 100644 src/embeddedFrontend/mvx/componentInstance.ts delete mode 100644 src/embeddedFrontend/mvx/compositor.ts delete mode 100644 src/embeddedFrontend/mvx/mvx.ts delete mode 100644 src/embeddedFrontend/mvx/stateStore.ts create mode 100644 src/embeddedFrontend/react/CaptureMenu/CanvasList.tsx create mode 100644 src/embeddedFrontend/react/CaptureMenu/CanvasListItem.tsx create mode 100644 src/embeddedFrontend/react/CaptureMenu/CaptureMenuActions.tsx create mode 100644 src/embeddedFrontend/react/CaptureMenu/CaptureMenuContext.ts create mode 100644 src/embeddedFrontend/react/CaptureMenu/CaptureMenuRoot.tsx create mode 100644 src/embeddedFrontend/react/CaptureMenu/FpsCounter.tsx create mode 100644 src/embeddedFrontend/react/CaptureMenu/ReactCaptureMenu.ts create mode 100644 src/embeddedFrontend/react/ResultView/CaptureList/CaptureList.tsx create mode 100644 src/embeddedFrontend/react/ResultView/CaptureList/CaptureListItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/CommandList/CommandDetail.tsx create mode 100644 src/embeddedFrontend/react/ResultView/CommandList/CommandList.tsx create mode 100644 src/embeddedFrontend/react/ResultView/CommandList/CommandListItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/Content/ResultViewContent.tsx create mode 100644 src/embeddedFrontend/react/ResultView/Information/InformationColumn.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONContent.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONGroup.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONHelpItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONImageItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONRenderTree.tsx create mode 100644 src/embeddedFrontend/react/ResultView/JSON/JSONVisualStateItem.tsx create mode 100644 src/embeddedFrontend/react/ResultView/Menu/ResultViewMenu.tsx create mode 100644 src/embeddedFrontend/react/ResultView/ReactResultView.ts create mode 100644 src/embeddedFrontend/react/ResultView/ResultViewContext.ts create mode 100644 src/embeddedFrontend/react/ResultView/ResultViewRoot.tsx create mode 100644 src/embeddedFrontend/react/ResultView/SourceCode/SourceCode.tsx create mode 100644 src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateList.tsx create mode 100644 src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateListItem.tsx create mode 100644 src/embeddedFrontend/react/jsx-augments.d.ts create mode 100644 src/embeddedFrontend/react/shared/ExternalStore.ts rename src/embeddedFrontend/{resultView/commandList => react/shared}/mdnCommandLinkHelper.ts (100%) create mode 100644 src/embeddedFrontend/react/shared/types.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonContentComponent.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonGroupComponent.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonHelpItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonImageItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/JSON/jsonVisualStateItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/captureList/captureListComponent.ts delete mode 100644 src/embeddedFrontend/resultView/captureList/captureListItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/commandList/commandDetailComponent.ts delete mode 100644 src/embeddedFrontend/resultView/commandList/commandListComponent.ts delete mode 100644 src/embeddedFrontend/resultView/commandList/commandListItemComponent.ts delete mode 100644 src/embeddedFrontend/resultView/content/resultViewContentComponent.ts delete mode 100644 src/embeddedFrontend/resultView/information/informationColumnComponent.ts delete mode 100644 src/embeddedFrontend/resultView/menu/resultViewMenuComponent.ts delete mode 100644 src/embeddedFrontend/resultView/resultView.ts delete mode 100644 src/embeddedFrontend/resultView/resultViewComponent.ts delete mode 100644 src/embeddedFrontend/resultView/sourceCode/sourceCodeComponent.ts delete mode 100644 src/embeddedFrontend/resultView/visualStateList/visualStateListComponent.ts delete mode 100644 src/embeddedFrontend/resultView/visualStateList/visualStateListItemComponent.ts delete mode 100644 src/embeddedFrontend/ux/scrollIntoViewHelper.ts create mode 100644 test/.gitignore create mode 100644 test/fixtures/captured-frame.json create mode 100644 test/fixtures/generate-capture.spec.ts create mode 100644 test/fixtures/test-scene.html create mode 100644 test/helpers/capture-helper.ts create mode 100644 test/helpers/spector-fixture.ts create mode 100644 test/playwright.config.ts create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-default-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-dropdown-open-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-error-log-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-fps-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-full-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-hidden-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-info-log-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-paused-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-playing-chromium-win32.png create mode 100644 test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-please-wait-chromium-win32.png create mode 100644 test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1023x600-chromium-win32.png create mode 100644 test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1025x600-chromium-win32.png create mode 100644 test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1366x768-chromium-win32.png create mode 100644 test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1920x1080-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-active-command-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-captures-tab-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-detail-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-list-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-commands-layout-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-end-state-tab-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-full-layout-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-information-tab-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-init-state-tab-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-menu-bar-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-search-filter-chromium-win32.png create mode 100644 test/screenshots/visual/result-view.spec.ts-snapshots/result-view-visual-states-chromium-win32.png create mode 100644 test/screenshots/visual/smoke.spec.ts-snapshots/smoke-baseline-chromium-win32.png create mode 100644 test/screenshots/visual/source-code.spec.ts-snapshots/source-code-beautify-chromium-win32.png create mode 100644 test/screenshots/visual/source-code.spec.ts-snapshots/source-code-fragment-chromium-win32.png create mode 100644 test/screenshots/visual/source-code.spec.ts-snapshots/source-code-tab-bar-chromium-win32.png create mode 100644 test/screenshots/visual/source-code.spec.ts-snapshots/source-code-vertex-chromium-win32.png create mode 100644 test/screenshots/visual/visual-state-no-stray-text.spec.ts-snapshots/visual-state-no-stray-text-chromium-win32.png create mode 100644 test/visual/capture-menu.spec.ts create mode 100644 test/visual/responsive.spec.ts create mode 100644 test/visual/result-view.spec.ts create mode 100644 test/visual/smoke.spec.ts create mode 100644 test/visual/source-code.spec.ts create mode 100644 test/visual/visual-state-no-stray-text.spec.ts diff --git a/.gitignore b/.gitignore index 90ffdcdf..6222f2c2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ /node_modules npm-debug.log.** npm-debug.log -.DS_Store \ No newline at end of file +.DS_Storeplaywright-report/ diff --git a/dist/spector.bundle.js b/dist/spector.bundle.js index 23a2d552..926701db 100644 --- a/dist/spector.bundle.js +++ b/dist/spector.bundle.js @@ -1,82 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("SPECTOR",[],t):"object"==typeof exports?exports.SPECTOR=t():e.SPECTOR=t()}(self,(()=>(()=>{var e={874:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},327:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeEveryOtherGenerator=t.makeGenerator=void 0,t.makeGenerator=function(e){var t=function(n){return"string"==typeof n?n:null==n?"":Array.isArray(n)?n.map(t).join(""):n.type in e?e[n.type](n):"NO GENERATOR FOR ".concat(n.type)+n};return t},t.makeEveryOtherGenerator=function(e){return function(t,n){return t.reduce((function(i,r,s){return i+e(r)+(s===t.length-1?"":e(n[s]))}),"")}}},83:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(327),t),r(n(416),t),r(n(874),t)},416:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visit=void 0,t.visit=function(e,t){var n=function(e,i,r,s,o){var a,l=t[e.type],c=function(e,t,n,i,r){return{node:e,parent:t,parentPath:n,key:i,index:r,skip:function(){this.skipped=!0},remove:function(){this.removed=!0},replaceWith:function(e){this.replaced=e},findParent:function(e){return n?e(n)?n:n.findParent(e):n}}}(e,i,r,s,o),u=i;if(null==l?void 0:l.enter){if(l.enter(c),c.removed){if(!s||!i)throw new Error("Asked to remove ".concat(e," but no parent key was present in ").concat(i));return"number"==typeof o?u[s].splice(o,1):u[s]=null,c}if(c.replaced){if(!s||!i)throw new Error("Asked to remove ".concat(e," but no parent key was present in ").concat(i));"number"==typeof o?u[s].splice(o,1,c.replaced):u[s]=c.replaced}if(c.skipped)return c}Object.entries(e).filter((function(e){return e[0],function(e){return function(e){return!!(null==e?void 0:e.type)}(e)||Array.isArray(e)}(e[1])})).forEach((function(t){var i=t[0],r=t[1];if(Array.isArray(r))for(var s=0,o=0;s-o{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=(0,n(83).makeGenerator)({program:function(e){return i(e.program)+i(e.wsEnd)},segment:function(e){return i(e.blocks)},text:function(e){return i(e.text)},literal:function(e){return i(e.wsStart)+i(e.literal)+i(e.wsEnd)},identifier:function(e){return i(e.identifier)+i(e.wsEnd)},binary:function(e){return i(e.left)+i(e.operator)+i(e.right)},group:function(e){return i(e.lp)+i(e.expression)+i(e.rp)},unary:function(e){return i(e.operator)+i(e.expression)},unary_defined:function(e){return i(e.operator)+i(e.lp)+i(e.identifier)+i(e.rp)},int_constant:function(e){return i(e.token)+i(e.wsEnd)},elseif:function(e){return i(e.token)+i(e.expression)+i(e.wsEnd)+i(e.body)},if:function(e){return i(e.token)+i(e.expression)+i(e.wsEnd)+i(e.body)},ifdef:function(e){return i(e.token)+i(e.identifier)+i(e.wsEnd)},ifndef:function(e){return i(e.token)+i(e.identifier)+i(e.wsEnd)},else:function(e){return i(e.token)+i(e.body)+i(e.wsEnd)},error:function(e){return i(e.error)+i(e.message)+i(e.wsEnd)},undef:function(e){return i(e.undef)+i(e.identifier)+i(e.wsEnd)},define:function(e){return i(e.wsStart)+i(e.define)+i(e.identifier)+i(e.body)+i(e.wsEnd)},define_arguments:function(e){return i(e.wsStart)+i(e.define)+i(e.identifier)+i(e.lp)+i(e.args)+i(e.rp)+i(e.body)+i(e.wsEnd)},conditional:function(e){return i(e.wsStart)+i(e.ifPart)+i(e.elseIfParts)+i(e.elsePart)+i(e.endif)+i(e.wsEnd)},version:function(e){return i(e.version)+i(e.value)+i(e.profile)+i(e.wsEnd)},pragma:function(e){return i(e.pragma)+i(e.body)+i(e.wsEnd)},line:function(e){return i(e.line)+i(e.value)+i(e.wsEnd)},extension:function(e){return i(e.extension)+i(e.name)+i(e.colon)+i(e.behavior)+i(e.wsEnd)}});t.default=i},29:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.parser=t.preprocess=t.generate=t.preprocessComments=t.preprocessAst=void 0;var r=i(n(851));t.generate=r.default;var s=n(168);Object.defineProperty(t,"preprocessAst",{enumerable:!0,get:function(){return s.preprocessAst}}),Object.defineProperty(t,"preprocessComments",{enumerable:!0,get:function(){return s.preprocessComments}});var o=i(n(180));t.parser=o.default;var a=function(e,t){return(0,r.default)((0,s.preprocessAst)(o.default.parse(t.preserveComments?e:(0,s.preprocessComments)(e)),t))};t.preprocess=a,t.default=a},180:e=>{"use strict";function t(e,n,i,r){var s=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(s,t.prototype),s.expected=n,s.found=i,s.location=r,s.name="SyntaxError",s}function n(e,t,n){return n=n||" ",e.length>t?e:(t-=e.length,e+(n+=n.repeat(t)).slice(0,t))}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(t,Error),t.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var i,r=null;for(i=0;i0){for(t=1,n=1;t>",!1),B=dt("<=",!1),$=dt(">=",!1),P=dt("==",!1),k=dt("!=",!1),D=dt("&&",!1),U=dt("||",!1),G=dt("(",!1),W=dt(")",!1),V=dt(",",!1),H=dt("!",!1),X=dt("-",!1),z=dt("~",!1),K=dt("+",!1),j=dt("*",!1),Y=dt("/",!1),q=dt("%",!1),Z=dt("<",!1),Q=dt(">",!1),J=dt("|",!1),ee=dt("^",!1),te=dt("&",!1),ne=dt(":",!1),ie=dt("#define",!1),re=(dt("#include",!1),dt("#line",!1)),se=dt("#undef",!1),oe=dt("#error",!1),ae=dt("#pragma",!1),le=dt("defined",!1),ce=dt("#if",!1),ue=dt("#ifdef",!1),he=dt("#ifndef",!1),de=dt("#elif",!1),me=dt("#else",!1),pe=dt("#endif",!1),ge=dt("#version",!1),fe=dt("#extension",!1),Ee=mt([["A","Z"],["a","z"],"_"],!1,!1),ve=mt([["A","Z"],["a","z"],"_",["0","9"]],!1,!1),_e=pt("number"),Ce=mt(["u","U"],!1,!1),Ae=mt([["1","9"]],!1,!1),Re=dt("0",!1),Se=mt([["0","7"]],!1,!1),Te=mt(["x","X"],!1,!1),be=mt([["0","9"],["a","f"],["A","F"]],!1,!1),we=mt([["0","9"]],!1,!1),xe=pt("control line"),ye=mt(["\n"],!1,!1),Le=pt("token string"),Ie=mt(["\n"],!0,!1),Fe=pt("text"),Ne=dt("#",!1),Me=pt("if"),Oe=pt("primary expression"),Be=pt("unary expression"),$e=pt("multiplicative expression"),Pe=pt("additive expression"),ke=pt("shift expression"),De=pt("relational expression"),Ue=pt("equality expression"),Ge=pt("and expression"),We=pt("exclusive or expression"),Ve=pt("inclusive or expression"),He=pt("logical and expression"),Xe=pt("logical or expression"),ze=pt("constant expression"),Ke=pt("whitespace or comment"),je=dt("//",!1),Ye=dt("/*",!1),qe=dt("*/",!1),Ze={type:"any"},Qe=pt("whitespace"),Je=mt([" ","\t"],!1,!1),et=function(e,t){return dn("literal",{literal:e,wsEnd:t})},tt=function(e,t,n){return dn("literal",{literal:t,wsStart:e,wsEnd:n})},nt=function(e){return dn("text",{text:e.join("")})},it=function(e,t,n,i,r){return dn("elseif",{token:t,expression:n,wsEnd:i,body:r})},rt=function(e,t){return gn(e,t)},st=function(e,t,n){return mn(t,n)},ot=0,at=[{line:1,column:1}],lt=0,ct=[],ut=0,ht={};if("startRule"in n){if(!(n.startRule in o))throw new Error("Can't start parsing from rule \""+n.startRule+'".');a=o[n.startRule]}function dt(e,t){return{type:"literal",text:e,ignoreCase:t}}function mt(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function pt(e){return{type:"other",description:e}}function gt(t){var n,i=at[t];if(i)return i;for(n=t-1;!at[n];)n--;for(i={line:(i=at[n]).line,column:i.column};nlt&&(lt=ot,ct=[]),ct.push(e))}function vt(){var e,t=74*ot+0,n=ht[t];return n?(ot=n.nextPos,n.result):(e=function(){var e,t,n,i=74*ot+1,s=ht[i];return s?(ot=s.nextPos,s.result):(e=ot,(t=zt())!==r?(n=cn(),e=dn("program",{program:t.blocks,wsEnd:n})):(ot=e,e=r),ht[i]={nextPos:ot,result:e},e)}(),ht[t]={nextPos:ot,result:e},e)}function _t(){var t,n,i,s=74*ot+3,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"<<"===e.substr(ot,2)?(n="<<",ot+=2):(n=r,0===ut&&Et(M)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Ct(){var t,n,i,s=74*ot+4,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,">>"===e.substr(ot,2)?(n=">>",ot+=2):(n=r,0===ut&&Et(O)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function At(){var t,n,i,s=74*ot+5,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"<="===e.substr(ot,2)?(n="<=",ot+=2):(n=r,0===ut&&Et(B)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Rt(){var t,n,i,s=74*ot+6,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,">="===e.substr(ot,2)?(n=">=",ot+=2):(n=r,0===ut&&Et($)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function St(){var t,n,i,s=74*ot+7,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"=="===e.substr(ot,2)?(n="==",ot+=2):(n=r,0===ut&&Et(P)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Tt(){var t,n,i,s=74*ot+8,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"!="===e.substr(ot,2)?(n="!=",ot+=2):(n=r,0===ut&&Et(k)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function bt(){var t,n,i,s=74*ot+9,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"&&"===e.substr(ot,2)?(n="&&",ot+=2):(n=r,0===ut&&Et(D)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function wt(){var t,n,i,s=74*ot+10,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,"||"===e.substr(ot,2)?(n="||",ot+=2):(n=r,0===ut&&Et(U)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function xt(){var t,n,i,s=74*ot+11,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,40===e.charCodeAt(ot)?(n="(",ot++):(n=r,0===ut&&Et(G)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function yt(){var t,n,i,s=74*ot+12,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,41===e.charCodeAt(ot)?(n=")",ot++):(n=r,0===ut&&Et(W)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Lt(){var t,n,i,s=74*ot+13,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,44===e.charCodeAt(ot)?(n=",",ot++):(n=r,0===ut&&Et(V)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function It(){var t,n,i,s=74*ot+15,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,45===e.charCodeAt(ot)?(n="-",ot++):(n=r,0===ut&&Et(X)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Ft(){var t,n,i,s=74*ot+17,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,43===e.charCodeAt(ot)?(n="+",ot++):(n=r,0===ut&&Et(K)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Nt(){var t,n,i,s=74*ot+18,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,42===e.charCodeAt(ot)?(n="*",ot++):(n=r,0===ut&&Et(j)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Mt(){var t,n,i,s=74*ot+19,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,47===e.charCodeAt(ot)?(n="/",ot++):(n=r,0===ut&&Et(Y)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Ot(){var t,n,i,s=74*ot+20,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,37===e.charCodeAt(ot)?(n="%",ot++):(n=r,0===ut&&Et(q)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Bt(){var t,n,i,s=74*ot+21,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,60===e.charCodeAt(ot)?(n="<",ot++):(n=r,0===ut&&Et(Z)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function $t(){var t,n,i,s=74*ot+22,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,62===e.charCodeAt(ot)?(n=">",ot++):(n=r,0===ut&&Et(Q)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Pt(){var t,n,i,s=74*ot+23,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,124===e.charCodeAt(ot)?(n="|",ot++):(n=r,0===ut&&Et(J)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function kt(){var t,n,i,s=74*ot+24,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,94===e.charCodeAt(ot)?(n="^",ot++):(n=r,0===ut&&Et(ee)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Dt(){var t,n,i,s=74*ot+25,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,38===e.charCodeAt(ot)?(n="&",ot++):(n=r,0===ut&&Et(te)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}function Ut(){var t,n,i,s,o=74*ot+27,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,7)===l?(i=l,ot+=7):(i=r,0===ut&&Et(ie)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}function Gt(){var t,n,i,s,o=74*ot+37,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,5)===f?(i=f,ot+=5):(i=r,0===ut&&Et(de)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}function Wt(){var t,n,i,s,o,a,l=74*ot+42,c=ht[l];if(c)return ot=c.nextPos,c.result;if(t=ot,n=ot,i=ot,R.test(e.charAt(ot))?(s=e.charAt(ot),ot++):(s=r,0===ut&&Et(Ee)),s!==r){for(o=[],S.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ve));a!==r;)o.push(a),S.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ve));i=s=[s,o]}else ot=i,i=r;return(n=i!==r?e.substring(n,ot):i)!==r?(i=cn(),t=dn("identifier",{identifier:n,wsEnd:i})):(ot=t,t=r),ht[l]={nextPos:ot,result:t},t}function Vt(){var t,n,i,s,o=74*ot+44,a=ht[o];return a?(ot=a.nextPos,a.result):(ut++,t=ot,n=ot,i=function(){var t,n,i,s,o,a=74*ot+46,l=ht[a];if(l)return ot=l.nextPos,l.result;if(t=ot,n=ot,b.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Ae)),i!==r){for(s=[],o=Xt();o!==r;)s.push(o),o=Xt();n=i=[i,s]}else ot=n,n=r;return t=n!==r?e.substring(t,ot):n,ht[a]={nextPos:ot,result:t},t}(),i!==r?((s=Ht())===r&&(s=null),n=i=[i,s]):(ot=n,n=r),(t=n!==r?e.substring(t,ot):n)===r&&(t=ot,n=ot,i=function(){var t,n,i,s,o=74*ot+47,a=ht[o];if(a)return ot=a.nextPos,a.result;if(t=ot,48===e.charCodeAt(ot)?(n="0",ot++):(n=r,0===ut&&Et(Re)),n!==r){for(i=[],w.test(e.charAt(ot))?(s=e.charAt(ot),ot++):(s=r,0===ut&&Et(Se));s!==r;)i.push(s),w.test(e.charAt(ot))?(s=e.charAt(ot),ot++):(s=r,0===ut&&Et(Se));t=n=[n,i]}else ot=t,t=r;return ht[o]={nextPos:ot,result:t},t}(),i!==r?((s=Ht())===r&&(s=null),n=i=[i,s]):(ot=n,n=r),(t=n!==r?e.substring(t,ot):n)===r&&(t=ot,n=ot,i=function(){var t,n,i,s,o,a=74*ot+48,l=ht[a];if(l)return ot=l.nextPos,l.result;if(t=ot,48===e.charCodeAt(ot)?(n="0",ot++):(n=r,0===ut&&Et(Re)),n!==r)if(x.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Te)),i!==r){for(s=[],y.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(be));o!==r;)s.push(o),y.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(be));t=n=[n,i,s]}else ot=t,t=r;else ot=t,t=r;return ht[a]={nextPos:ot,result:t},t}(),i!==r?((s=Ht())===r&&(s=null),n=i=[i,s]):(ot=n,n=r),t=n!==r?e.substring(t,ot):n)),ut--,t===r&&(n=r,0===ut&&Et(_e)),ht[o]={nextPos:ot,result:t},t)}function Ht(){var t,n=74*ot+45,i=ht[n];return i?(ot=i.nextPos,i.result):(T.test(e.charAt(ot))?(t=e.charAt(ot),ot++):(t=r,0===ut&&Et(Ce)),ht[n]={nextPos:ot,result:t},t)}function Xt(){var t,n=74*ot+49,i=ht[n];return i?(ot=i.nextPos,i.result):(L.test(e.charAt(ot))?(t=e.charAt(ot),ot++):(t=r,0===ut&&Et(we)),ht[n]={nextPos:ot,result:t},t)}function zt(){var e,t,n,i,s,o=74*ot+50,a=ht[o];if(a)return ot=a.nextPos,a.result;if(e=ot,t=[],(n=Kt())===r){if(n=ot,i=[],(s=Yt())!==r)for(;s!==r;)i.push(s),s=Yt();else i=r;i!==r&&(i=nt(i)),n=i}if(n!==r){for(;n!==r;)if(t.push(n),(n=Kt())===r){if(n=ot,i=[],(s=Yt())!==r)for(;s!==r;)i.push(s),s=Yt();else i=r;i!==r&&(i=nt(i)),n=i}}else t=r;return t!==r&&(t=dn("segment",{blocks:t})),e=t,ht[o]={nextPos:ot,result:e},e}function Kt(){var t,n,i,s,o,a,l,m,f,A,T,b,w,x=74*ot+51,y=ht[x];if(y)return ot=y.nextPos,y.result;if(ut++,t=function(){var t,n,i,s,o,a,l,c,u,h,d,m=74*ot+54,f=ht[m];if(f)return ot=f.nextPos,f.result;if(t=ot,n=ot,i=function(){var t,n,i,s=74*ot+55,o=ht[s];return o?(ot=o.nextPos,o.result):(ut++,t=ot,n=function(){var t,n,i,s,o=74*ot+35,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,6)===p?(i=p,ot+=6):(i=r,0===ut&&Et(ue)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),n!==r&&(i=Wt())!==r?t=dn("ifdef",{token:n,identifier:i}):(ot=t,t=r),t===r&&(t=ot,n=function(){var t,n,i,s,o=74*ot+36,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,7)===g?(i=g,ot+=7):(i=r,0===ut&&Et(he)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),n!==r&&(i=Wt())!==r?t=dn("ifndef",{token:n,identifier:i}):(ot=t,t=r),t===r&&(t=ot,n=function(){var t,n,i,s,o=74*ot+34,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),"#if"===e.substr(ot,3)?(i="#if",ot+=3):(i=r,0===ut&&Et(ce)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),n!==r?((i=ln())===r&&(i=null),t=function(e,t){return dn("if",{token:e,expression:t})}(n,i)):(ot=t,t=r))),ut--,t===r&&(n=r,0===ut&&Et(Me)),ht[s]={nextPos:ot,result:t},t)}(),i!==r?(I.test(e.charAt(ot))?(s=e.charAt(ot),ot++):(s=r,0===ut&&Et(ye)),s!==r?((o=zt())===r&&(o=null),u=i,h=s,d=o,n={...u,body:d,wsEnd:h}):(ot=n,n=r)):(ot=n,n=r),n!==r){for(i=[],s=ot,(o=Gt())!==r&&(a=ln())!==r?(I.test(e.charAt(ot))?(l=e.charAt(ot),ot++):(l=r,0===ut&&Et(ye)),l!==r?((c=zt())===r&&(c=null),s=it(0,o,a,l,c)):(ot=s,s=r)):(ot=s,s=r);s!==r;)i.push(s),s=ot,(o=Gt())!==r&&(a=ln())!==r?(I.test(e.charAt(ot))?(l=e.charAt(ot),ot++):(l=r,0===ut&&Et(ye)),l!==r?((c=zt())===r&&(c=null),s=it(0,o,a,l,c)):(ot=s,s=r)):(ot=s,s=r);s=ot,o=function(){var t,n,i,s,o=74*ot+38,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,5)===E?(i=E,ot+=5):(i=r,0===ut&&Et(me)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),o!==r?(I.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ye)),a!==r?((l=zt())===r&&(l=null),s=function(e,t,n,i,r){return dn("else",{token:n,wsEnd:i,body:r})}(0,0,o,a,l)):(ot=s,s=r)):(ot=s,s=r),s===r&&(s=null),o=function(){var t,n,i,s,o=74*ot+39,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,6)===v?(i=v,ot+=6):(i=r,0===ut&&Et(pe)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),o!==r?(I.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ye)),a===r&&(a=null),t=function(e,t,n,i,r){return dn("conditional",{ifPart:e,elseIfParts:t,elsePart:n,endif:i,wsEnd:r})}(n,i,s,o,a)):(ot=t,t=r)}else ot=t,t=r;return ht[m]={nextPos:ot,result:t},t}(),t===r){if(t=ot,n=ot,(i=Ut())!==r)if((s=function(){var t,n,i,s,o,a,l=74*ot+43,c=ht[l];if(c)return ot=c.nextPos,c.result;if(t=ot,n=ot,i=ot,R.test(e.charAt(ot))?(s=e.charAt(ot),ot++):(s=r,0===ut&&Et(Ee)),s!==r){for(o=[],S.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ve));a!==r;)o.push(a),S.test(e.charAt(ot))?(a=e.charAt(ot),ot++):(a=r,0===ut&&Et(ve));i=s=[s,o]}else ot=i,i=r;return(n=i!==r?e.substring(n,ot):i)!==r&&(n=dn("identifier",{identifier:n})),t=n,ht[l]={nextPos:ot,result:t},t}())!==r)if((o=xt())!==r){if(a=ot,(l=Wt())!==r){for(m=[],f=ot,(A=Lt())!==r&&(T=Wt())!==r?f=A=[A,T]:(ot=f,f=r);f!==r;)m.push(f),f=ot,(A=Lt())!==r&&(T=Wt())!==r?f=A=[A,T]:(ot=f,f=r);a=[l,...m.flat()]}else ot=a,a=r;a===r&&(a=null),(l=yt())!==r?((m=jt())===r&&(m=null),n=function(e,t,n,i,r,s){return dn("define_arguments",{define:e,identifier:t,lp:n,args:i||[],rp:r,body:s})}(i,s,o,a,l,m)):(ot=n,n=r)}else ot=n,n=r;else ot=n,n=r;else ot=n,n=r;if(n===r&&(n=ot,(i=Ut())!==r&&(s=Wt())!==r?((o=jt())===r&&(o=null),n=function(e,t,n){return dn("define",{define:e,identifier:t,body:n})}(i,s,o)):(ot=n,n=r),n===r)){if(n=ot,i=function(){var t,n,i,s,o=74*ot+29,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,5)===c?(i=c,ot+=5):(i=r,0===ut&&Et(re)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r){if(s=ot,o=[],(a=Xt())!==r)for(;a!==r;)o.push(a),a=Xt();else o=r;(s=o!==r?e.substring(s,ot):o)!==r?n=dn("line",{line:i,value:s}):(ot=n,n=r)}else ot=n,n=r;n===r&&(n=ot,i=function(){var t,n,i,s,o=74*ot+30,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,6)===u?(i=u,ot+=6):(i=r,0===ut&&Et(se)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r&&(s=Wt())!==r?n=dn("undef",{undef:i,identifier:s}):(ot=n,n=r),n===r&&(n=ot,i=function(){var t,n,i,s,o=74*ot+31,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,6)===h?(i=h,ot+=6):(i=r,0===ut&&Et(oe)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r&&(s=jt())!==r?n=dn("error",{error:i,message:s}):(ot=n,n=r),n===r&&(n=ot,i=function(){var t,n,i,s,o=74*ot+32,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,7)===d?(i=d,ot+=7):(i=r,0===ut&&Et(ae)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r&&(s=jt())!==r?n=dn("pragma",{pragma:i,body:s}):(ot=n,n=r),n===r&&(n=ot,i=function(){var t,n,i,s,o=74*ot+40,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,8)===_?(i=_,ot+=8):(i=r,0===ut&&Et(ge)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r&&(s=Vt())!==r?((o=jt())===r&&(o=null),n=dn("version",{version:i,value:s,profile:o})):(ot=n,n=r),n===r&&(n=ot,i=function(){var t,n,i,s,o=74*ot+41,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,10)===C?(i=C,ot+=10):(i=r,0===ut&&Et(fe)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),i!==r&&(s=Wt())!==r?(o=function(){var t,n,i,s=74*ot+26,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,58===e.charCodeAt(ot)?(n=":",ot++):(n=r,0===ut&&Et(ne)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}(),o!==r&&(a=jt())!==r?n=dn("extension",{extension:i,name:s,colon:o,behavior:a}):(ot=n,n=r)):(ot=n,n=r))))))}n!==r?(I.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(ye)),i===r&&(i=null),b=n,w=i,t={...b,wsEnd:w}):(ot=t,t=r)}return ut--,t===r&&(n=r,0===ut&&Et(xe)),ht[x]={nextPos:ot,result:t},t}function jt(){var t,n,i,s=74*ot+52,o=ht[s];if(o)return ot=o.nextPos,o.result;if(ut++,t=ot,n=[],F.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Ie)),i!==r)for(;i!==r;)n.push(i),F.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Ie));else n=r;return t=n!==r?e.substring(t,ot):n,ut--,t===r&&(n=r,0===ut&&Et(Le)),ht[s]={nextPos:ot,result:t},t}function Yt(){var t,n,i,s,o,a,l=74*ot+53,c=ht[l];if(c)return ot=c.nextPos,c.result;if(ut++,t=ot,n=ot,i=ot,ut++,s=ot,(o=hn())===r&&(o=null),35===e.charCodeAt(ot)?(a="#",ot++):(a=r,0===ut&&Et(Ne)),a!==r?s=o=[o,a]:(ot=s,s=r),ut--,s===r?i=void 0:(ot=i,i=r),i!==r){if(s=[],F.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(Ie)),o!==r)for(;o!==r;)s.push(o),F.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(Ie));else s=r;s!==r?(I.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(ye)),o===r&&(o=null),n=i=[i,s,o]):(ot=n,n=r)}else ot=n,n=r;return n===r&&(I.test(e.charAt(ot))?(n=e.charAt(ot),ot++):(n=r,0===ut&&Et(ye))),t=n!==r?e.substring(t,ot):n,ut--,t===r&&(n=r,0===ut&&Et(Fe)),ht[l]={nextPos:ot,result:t},t}function qt(){var e,t,n,i,s=74*ot+56,o=ht[s];return o?(ot=o.nextPos,o.result):(ut++,(e=function(){var e,t,n,i=74*ot+2,s=ht[i];return s?(ot=s.nextPos,s.result):(e=ot,(t=Vt())!==r?(n=cn(),e=dn("int_constant",{token:t,wsEnd:n})):(ot=e,e=r),ht[i]={nextPos:ot,result:e},e)}())===r&&(e=ot,(t=xt())!==r&&(n=ln())!==r&&(i=yt())!==r?e=dn("group",{lp:t,expression:n,rp:i}):(ot=e,e=r),e===r&&(e=Wt())),ut--,e===r&&(t=r,0===ut&&Et(Oe)),ht[s]={nextPos:ot,result:e},e)}function Zt(){var t,n,i,s,o,a=74*ot+57,l=ht[a];return l?(ot=l.nextPos,l.result):(ut++,t=ot,n=function(){var t,n,i,s,o=74*ot+33,a=ht[o];return a?(ot=a.nextPos,a.result):(t=ot,n=cn(),e.substr(ot,7)===m?(i=m,ot+=7):(i=r,0===ut&&Et(le)),i!==r?(s=cn(),t=tt(n,i,s)):(ot=t,t=r),ht[o]={nextPos:ot,result:t},t)}(),n!==r&&(i=xt())!==r&&(s=Wt())!==r&&(o=yt())!==r?t=dn("unary_defined",{operator:n,lp:i,identifier:s,rp:o}):(ot=t,t=r),t===r&&(t=ot,(n=Ft())===r&&(n=It())===r&&(n=function(){var t,n,i,s=74*ot+14,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,33===e.charCodeAt(ot)?(n="!",ot++):(n=r,0===ut&&Et(H)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}(),n===r&&(n=function(){var t,n,i,s=74*ot+16,o=ht[s];return o?(ot=o.nextPos,o.result):(t=ot,126===e.charCodeAt(ot)?(n="~",ot++):(n=r,0===ut&&Et(z)),n!==r?(i=cn(),t=et(n,i)):(ot=t,t=r),ht[s]={nextPos:ot,result:t},t)}())),n!==r&&(i=Zt())!==r?t=dn("unary",{operator:n,expression:i}):(ot=t,t=r),t===r&&(t=qt())),ut--,t===r&&(n=r,0===ut&&Et(Be)),ht[a]={nextPos:ot,result:t},t)}function Qt(){var e,t,n,i,s,o,a=74*ot+58,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=Zt())!==r){for(n=[],i=ot,(s=Nt())===r&&(s=Mt())===r&&(s=Ot()),s!==r&&(o=Zt())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=Nt())===r&&(s=Mt())===r&&(s=Ot()),s!==r&&(o=Zt())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et($e)),ht[a]={nextPos:ot,result:e},e}function Jt(){var e,t,n,i,s,o,a=74*ot+59,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=Qt())!==r){for(n=[],i=ot,(s=Ft())===r&&(s=It()),s!==r&&(o=Qt())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=Ft())===r&&(s=It()),s!==r&&(o=Qt())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(Pe)),ht[a]={nextPos:ot,result:e},e}function en(){var e,t,n,i,s,o,a=74*ot+60,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=Jt())!==r){for(n=[],i=ot,(s=Ct())===r&&(s=_t()),s!==r&&(o=Jt())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=Ct())===r&&(s=_t()),s!==r&&(o=Jt())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(ke)),ht[a]={nextPos:ot,result:e},e}function tn(){var e,t,n,i,s,o,a=74*ot+61,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=en())!==r){for(n=[],i=ot,(s=At())===r&&(s=Rt())===r&&(s=Bt())===r&&(s=$t()),s!==r&&(o=en())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=At())===r&&(s=Rt())===r&&(s=Bt())===r&&(s=$t()),s!==r&&(o=en())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(De)),ht[a]={nextPos:ot,result:e},e}function nn(){var e,t,n,i,s,o,a=74*ot+62,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=tn())!==r){for(n=[],i=ot,(s=St())===r&&(s=Tt()),s!==r&&(o=tn())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=St())===r&&(s=Tt()),s!==r&&(o=tn())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(Ue)),ht[a]={nextPos:ot,result:e},e}function rn(){var e,t,n,i,s,o,a=74*ot+63,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=nn())!==r){for(n=[],i=ot,(s=Dt())!==r&&(o=nn())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=Dt())!==r&&(o=nn())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(Ge)),ht[a]={nextPos:ot,result:e},e}function sn(){var e,t,n,i,s,o,a=74*ot+64,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=rn())!==r){for(n=[],i=ot,(s=kt())!==r&&(o=rn())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=kt())!==r&&(o=rn())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(We)),ht[a]={nextPos:ot,result:e},e}function on(){var e,t,n,i,s,o,a=74*ot+65,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=sn())!==r){for(n=[],i=ot,(s=Pt())!==r&&(o=sn())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=Pt())!==r&&(o=sn())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(Ve)),ht[a]={nextPos:ot,result:e},e}function an(){var e,t,n,i,s,o,a=74*ot+66,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=on())!==r){for(n=[],i=ot,(s=bt())!==r&&(o=on())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=bt())!==r&&(o=on())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(He)),ht[a]={nextPos:ot,result:e},e}function ln(){var e,t=74*ot+68,n=ht[t];return n?(ot=n.nextPos,n.result):(ut++,e=function(){var e,t,n,i,s,o,a=74*ot+67,l=ht[a];if(l)return ot=l.nextPos,l.result;if(ut++,e=ot,(t=an())!==r){for(n=[],i=ot,(s=wt())!==r&&(o=an())!==r?i=s=[s,o]:(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=wt())!==r&&(o=an())!==r?i=s=[s,o]:(ot=i,i=r);e=rt(t,n)}else ot=e,e=r;return ut--,e===r&&(t=r,0===ut&&Et(Xe)),ht[a]={nextPos:ot,result:e},e}(),ut--,e===r&&0===ut&&Et(ze),ht[t]={nextPos:ot,result:e},e)}function cn(){var e,t,n,i,s,o,a=74*ot+69,l=ht[a];if(l)return ot=l.nextPos,l.result;for(ut++,e=ot,(t=hn())===r&&(t=null),n=[],i=ot,(s=un())!==r?((o=hn())===r&&(o=null),i=s=[s,o]):(ot=i,i=r);i!==r;)n.push(i),i=ot,(s=un())!==r?((o=hn())===r&&(o=null),i=s=[s,o]):(ot=i,i=r);return e=pn(t,n),ut--,t=r,0===ut&&Et(Ke),ht[a]={nextPos:ot,result:e},e}function un(){var t,n,i,s,o,a,l=74*ot+70,c=ht[l];if(c)return ot=c.nextPos,c.result;if(t=function(){var t,n,i,s,o,a=74*ot+71,l=ht[a];if(l)return ot=l.nextPos,l.result;if(t=ot,n=ot,"//"===e.substr(ot,2)?(i="//",ot+=2):(i=r,0===ut&&Et(je)),i!==r){for(s=[],F.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(Ie));o!==r;)s.push(o),F.test(e.charAt(ot))?(o=e.charAt(ot),ot++):(o=r,0===ut&&Et(Ie));n=i=[i,s]}else ot=n,n=r;return t=n!==r?e.substring(t,ot):n,ht[a]={nextPos:ot,result:t},t}(),t===r)if(t=ot,n=function(){var t,n,i,s,o,a,l,c=74*ot+72,u=ht[c];if(u)return ot=u.nextPos,u.result;if(t=ot,n=ot,"/*"===e.substr(ot,2)?(i="/*",ot+=2):(i=r,0===ut&&Et(Ye)),i!==r){for(s=[],o=ot,a=ot,ut++,e.substr(ot,2)===A?(l=A,ot+=2):(l=r,0===ut&&Et(qe)),ut--,l===r?a=void 0:(ot=a,a=r),a!==r?(e.length>ot?(l=e.charAt(ot),ot++):(l=r,0===ut&&Et(Ze)),l!==r?o=l:(ot=o,o=r)):(ot=o,o=r);o!==r;)s.push(o),o=ot,a=ot,ut++,e.substr(ot,2)===A?(l=A,ot+=2):(l=r,0===ut&&Et(qe)),ut--,l===r?a=void 0:(ot=a,a=r),a!==r?(e.length>ot?(l=e.charAt(ot),ot++):(l=r,0===ut&&Et(Ze)),l!==r?o=l:(ot=o,o=r)):(ot=o,o=r);e.substr(ot,2)===A?(o=A,ot+=2):(o=r,0===ut&&Et(qe)),o!==r?n=i=[i,s,o]:(ot=n,n=r)}else ot=n,n=r;return t=n!==r?e.substring(t,ot):n,ht[c]={nextPos:ot,result:t},t}(),n!==r){for(i=[],s=ot,(o=hn())!==r&&(a=un())!==r?s=st(0,o,a):(ot=s,s=r);s!==r;)i.push(s),s=ot,(o=hn())!==r&&(a=un())!==r?s=st(0,o,a):(ot=s,s=r);t=mn(n,i.flat())}else ot=t,t=r;return ht[l]={nextPos:ot,result:t},t}function hn(){var t,n,i,s=74*ot+73,o=ht[s];if(o)return ot=o.nextPos,o.result;if(ut++,t=ot,n=[],N.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Je)),i!==r)for(;i!==r;)n.push(i),N.test(e.charAt(ot))?(i=e.charAt(ot),ot++):(i=r,0===ut&&Et(Je));else n=r;return t=n!==r?e.substring(t,ot):n,ut--,t===r&&(n=r,0===ut&&Et(Qe)),ht[s]={nextPos:ot,result:t},t}const dn=(e,t)=>({type:e,...t}),mn=(...e)=>e.flat().filter((e=>null!=e&&""!==e&&0!==e.length)),pn=(...e)=>{return(t=mn(e)).length>1?t:t[0];var t},gn=(...e)=>e.flat().reduce(((e,[t,n])=>({type:"binary",operator:t,left:e,right:n})));if((i=a())!==r&&ot===e.length)return i;throw i!==r&&ots.length)throw new Error("'".concat(t,"': Too many arguments for macro"));if(d.length>":return t(n)>>t(i);case"<":return t(n)":return t(n)>t(i);case"<=":return t(n)<=t(i);case">=":return t(n)>=t(i);case"==":return t(n)==t(i);case"!=":return t(n)!=t(i);case"&":return t(n)&t(i);case"^":return t(n)^t(i);case"|":return t(n)|t(i);case"&&":return t(n)&&t(i);case"||":return t(n)||t(i);default:throw new Error("Preprocessing error: Unknown binary operator ".concat(r))}},unary:function(e,t){switch(e.operator.literal){case"+":return t(e.expression);case"-":return-1*t(e.expression);case"!":return!t(e.expression);case"~":return~t(e.expression);default:throw new Error("Preprocessing error: Unknown unary operator ".concat(e.operator.literal))}}},i=function(e){var t=n[e.type];if(!t)throw new Error("No evaluate() evaluator for ".concat(e.type));return t(e,i)},i(e);var n,i},d=s.visit;t.preprocessAst=function(e,t){void 0===t&&(t={});var n,s=Object.entries(t.defines||{}).reduce((function(e,t){var n,r=t[0],s=t[1];return i(i({},e),((n={})[r]={body:s},n))}),{}),o=(void 0===(n=t.preserve)&&(n={}),function(e){var t=null==n?void 0:n[e.node.type];return"function"==typeof t?t(e):t});return d(e,{conditional:{enter:function(e){var t=e,n=t.node;o(t)||(u.apply(void 0,r([s],r([n.ifPart.expression],n.elseIfParts.map((function(e){return e.expression})),!0).filter(c),!1)),function(e,t){return"if"===t.type?h(t.expression,e):"ifdef"===t.type?t.identifier.identifier in e:"ifndef"===t.type?!(t.identifier.identifier in e):void 0}(s,n.ifPart)?t.replaceWith(n.ifPart.body):n.elseIfParts.reduce((function(e,n){return e||h(n.expression,s)&&(t.replaceWith(n.body),!0)}),!1)||(n.elsePart?t.replaceWith(n.elsePart.body):t.remove()))}},text:{enter:function(e){var t=e;t.node.text=l(t.node.text,s)}},define_arguments:{enter:function(e){var t=e,n=t.node,i=n.identifier.identifier,r=n.body,a=n.args;s[i]={args:a,body:r},!o(t)&&t.remove()}},define:{enter:function(e){var t=e,n=t.node,i=n.identifier.identifier,r=n.body;s[i]={body:r},!o(t)&&t.remove()}},undef:{enter:function(e){var t=e;delete s[t.node.identifier.identifier],!o(t)&&t.remove()}},error:{enter:function(e){var n=e;if(t.stopOnError)throw new Error(n.node.message);!o(n)&&n.remove()}},pragma:{enter:function(e){var t=e;!o(t)&&t.remove()}},version:{enter:function(e){var t=e;!o(t)&&t.remove()}},extension:{enter:function(e){var t=e;!o(t)&&t.remove()}},line:{enter:function(e){var t=e;!o(t)&&t.remove()}}}),e}},866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var i=n(81),r=n.n(i),s=n(645),o=n.n(s)()(r());o.push([e.id,"@import url(https://fonts.googleapis.com/css?family=Montserrat:300,400);"]),o.push([e.id,'.captureMenuComponent{position:absolute;padding:7px;z-index:99999;top:10px;left:50%;margin-left:-209px;height:40px;width:400px;border:2px solid #222;background-color:#2c2c2c;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.captureMenuComponent.active{visibility:visible;display:block}.captureMenuComponent,.captureMenuComponent:after,.captureMenuComponent:before{box-sizing:content-box}.captureMenuLogComponent{position:absolute;padding:7px;z-index:80000;top:66px;left:50%;margin-left:-209px;height:40px;width:400px;border:2px solid #222;background-color:#2c2c2c;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.captureMenuLogComponent.active{visibility:visible;display:block}.captureMenuLogComponent,.captureMenuLogComponent:after,.captureMenuLogComponent:before{box-sizing:content-box}.captureMenuLogComponent span.error{color:red}.canvasListComponent{float:left;width:50%;height:100%}.canvasListComponent [commandName=onCanvasSelection]{vertical-align:center;line-height:40px;white-space:nowrap;text-overflow:ellipsis;width:190px;display:inline-block;overflow:hidden;margin:0px 5px}.canvasListComponent [commandName=onCanvasSelection]:hover{color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.canvasListComponent ul{margin:0px;padding:7px;list-style:none;position:absolute;top:54px;left:-2px;width:400px;border:2px solid #222;background-color:#2c2c2c}.canvasListComponent ul li{margin:5px}.canvasListComponent ul li:hover{color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.captureMenuActionsComponent{float:left;width:30%;height:100%;margin-top:7.5px}.captureMenuActionsComponent div{float:left}.captureMenuActionsComponent [commandName=onCaptureRequested]{border-radius:50%;background:#2c2c2c;border:2px solid red;width:21px;height:21px}.captureMenuActionsComponent [commandName=onCaptureRequested]:hover{background:red;cursor:pointer;transition:background .3s;-webkit-transition:background .3s;-moz-transition:background .3s}.captureMenuActionsComponent [commandName=onPlayRequested],.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]{width:21px;height:21px;border:2px solid #f9f9f9;border-radius:50%;margin-left:9px}.captureMenuActionsComponent [commandName=onPlayRequested]:before,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:before{content:"";position:absolute;display:inline-block;margin-top:6px;margin-left:4px;width:7px;height:7px;border-top:2px solid #f9f9f9;border-right:2px solid #f9f9f9;background-color:#f9f9f9;-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-20}.captureMenuActionsComponent [commandName=onPlayRequested]:after,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:after{content:"";position:absolute;display:inline-block;width:8px;height:20px;background-color:#2c2c2c;z-index:-10}.captureMenuActionsComponent [commandName=onPlayRequested]:hover,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:hover{cursor:pointer;border:2px solid #c9c9c9;transition:border .3s;-webkit-transition:border .3s;-moz-transition:border .3s}.captureMenuActionsComponent [commandName=onPauseRequested]{width:21px;height:21px;border:2px solid #f9f9f9;border-radius:50%;margin-left:9px}.captureMenuActionsComponent [commandName=onPauseRequested]:before{content:"";position:absolute;display:inline-block;width:2px;height:13px;margin-left:12px;margin-top:4px;background-color:#f9f9f9}.captureMenuActionsComponent [commandName=onPauseRequested]:after{content:"";position:absolute;display:inline-block;width:2px;height:13px;margin-left:7px;margin-top:4px;background-color:#f9f9f9}.captureMenuActionsComponent [commandName=onPauseRequested]:hover{cursor:pointer;border:2px solid #c9c9c9;transition:border .3s;-webkit-transition:border .3s;-moz-transition:border .3s}.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:before{background-color:#2c2c2c}.fpsCounterComponent{float:left;width:20%;vertical-align:center;line-height:40px;white-space:nowrap}',""]);const a=o},625:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var i=n(81),r=n.n(i),s=n(645),o=n.n(s)()(r());o.push([e.id,"@import url(https://fonts.googleapis.com/css?family=Montserrat:300,400);"]),o.push([e.id,'.resultViewComponent{position:absolute;z-index:99999;border:1px solid #000;top:0;left:0;bottom:0;right:0;background-color:#222;opacity:1;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.resultViewComponent.active{visibility:visible;display:block}.resultViewComponent,.resultViewComponent:after,.resultViewComponent:before{box-sizing:content-box}.resultViewMenuComponent{font-family:"Montserrat",sans-serif;font-size:13px;font-weight:300;line-height:40px;flex:1 100%;display:flex;flex-flow:row wrap;height:42px;outline:0 none;border-bottom:2px solid #222;box-sizing:border-box;list-style:none;margin:0;background:#2c2c2c;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-end}.resultViewMenuComponent .resultViewMenuOpen{display:none;visibility:hidden}.resultViewMenuComponent a{outline:0 none;text-decoration:none;display:block;padding:0 20px 0 20px;color:#ccc;background:#2c2c2c;box-sizing:border-box;height:100%}.resultViewMenuComponent a.active{background:#222;color:#fff;font-weight:400;border-bottom:2px solid #f0640d}.resultViewMenuComponent a:hover{background:#222;color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.resultViewMenuComponent a:hover.active{color:#f0640d;transition:color 0;-webkit-transition:color 0;-moz-transition:color 0}.resultViewMenuComponent a.clearSearch{padding:0px;margin-left:-30px;margin-right:20px;z-index:9000;color:#f9f9f9}.resultViewMenuComponent a.clearSearch:hover{background:#2c2c2c;color:#f0640d}@media all and (max-width: 1024px){.resultViewMenuComponent{padding:0px;position:absolute;overflow-y:visible;top:0px;left:0px;right:0px;bottom:0px;z-index:999999;display:block}.resultViewMenuComponent .resultViewMenuOpen{display:block;visibility:visible}.resultViewMenuComponent li:not(.resultViewMenuSmall){display:none;visibility:hidden}.resultViewMenuComponent li{background:#2c2c2c}.resultViewMenuComponent li.searchContainer{background:#464646}.resultViewMenuComponent a.active{background:#2c2c2c}}.resultViewMenuComponent input{border:0;font-family:"Montserrat",sans-serif;font-weight:300;padding:0 20px 0 20px;background:#464646;color:#f9f9f9;height:40px;position:relative;top:-1px;box-sizing:border-box}.resultViewMenuComponent input:focus{border:0;outline:0 none}.resultViewMenuComponent .clearSearch{position:relative;background:rgba(0,0,0,0);display:inline;padding:0px;margin-left:-30px;z-index:9000;color:#f0640d}.resultViewMenuComponent .clearSearch:hover{background:rgba(0,0,0,0) !important}.resultViewMenuComponent ::-webkit-input-placeholder{color:#ccc}.resultViewMenuComponent :-moz-placeholder{color:#ccc}.resultViewMenuComponent ::-moz-placeholder{color:#ccc}.resultViewMenuComponent :-ms-input-placeholder{color:#ccc}.resultViewContentComponent{position:absolute;top:40px;left:0;bottom:0;right:0}.informationColumnLeftComponent{position:absolute;top:0;left:0;bottom:0;right:50%;overflow:auto;overflow-x:hidden;overflow-y:visible}.informationColumnRightComponent{position:absolute;top:0;left:50%;bottom:0;right:0;overflow:auto;overflow-x:hidden;overflow-y:visible}.captureListComponent{position:absolute;top:40px;left:0;bottom:0;right:0;background:#222;z-index:9000;display:none;visibility:hidden;overflow-y:visible;overflow-x:hidden}.captureListComponent.active{display:block;visibility:visible}.captureListComponent .openCaptureFile{border:1px dashed #f9f9f9;display:block;margin:5px;padding:5px;text-align:center;font-style:italic}.captureListComponent .openCaptureFile span{line-height:100%;vertical-align:middle}.captureListComponent ul{margin:0px;padding:0px;list-style:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-start}.captureListComponent ul li{margin:5px;border:1px solid #606060}.captureListComponent ul li img{width:295px;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px;display:block}.captureListComponent ul li span{display:block;text-align:center;border:5px solid #222}.captureListComponent ul li span .captureListItemSave{color:#f9f9f9;font-size:16px;margin-left:10px;position:relative;padding:3px 8px 3px 32px}.captureListComponent ul li span .captureListItemSave:before,.captureListComponent ul li span .captureListItemSave:after{box-sizing:border-box;content:"";position:absolute}.captureListComponent ul li span .captureListItemSave:before{background:#d9d9d9;border-color:#f9f9f9;border-style:solid;border-width:7px 2px 1px;border-radius:1px;height:16px;left:8px;top:5px;width:16px}.captureListComponent ul li span .captureListItemSave:after{background:#f9f9f9;border-color:#d9d9d9;border-style:solid;border-width:1px 1px 1px 4px;height:5px;left:13px;top:5px;width:7px}.captureListComponent ul li:hover{cursor:pointer}.captureListComponent ul li.active span{background:#f0640d;border:5px solid #f0640d}.captureListComponent ul li.active span .captureListItemSave:before{background:#f0640d}.captureListComponent ul li.active span .captureListItemSave:after{border-color:#f0640d}.visualStateListComponent{position:absolute;top:0;left:0;bottom:0;padding:5px;right:80%;overflow-y:visible;overflow-x:hidden}.visualStateListComponent ul{margin:0px;padding:0px;list-style:none}.visualStateListComponent ul li{margin:20px 15px 0px 15px;border:1px solid #606060}.visualStateListComponent ul li img{display:block;padding:0px;box-sizing:border-box;max-height:600px;width:100%;margin:0 auto;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px}.visualStateListComponent ul li:hover{cursor:pointer}.visualStateListComponent ul li span{border:5px solid #222;background:#222;box-sizing:border-box;display:inline-block;width:100%;margin:0px;padding:5px;word-wrap:break-word}.visualStateListComponent ul li.active{border:2px solid #f0640d}.commandListComponent{position:absolute;top:0;left:20%;right:40%;bottom:0;color:#d3d3d3}.commandListComponent ul{margin:0px;padding:0px;list-style:none;overflow-y:visible;overflow-x:hidden;height:100%}.commandListComponent ul li{padding:8px}.commandListComponent ul li span{word-wrap:break-word;line-height:22px}.commandListComponent ul li:hover{color:#f9f9f9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.commandListComponent ul li:nth-child(even){background:#2c2c2c}.commandListComponent ul li:nth-child(odd){background:#222}.commandListComponent ul li .important{font-weight:800}.commandListComponent ul li .important.deprecated{color:red}.commandListComponent ul li .important.unused{color:#ff0}.commandListComponent ul li .important.disabled{color:gray}.commandListComponent ul li .important.redundant{color:orange}.commandListComponent ul li .important.valid{color:#adff2f}.commandListComponent ul li .marker{font-size:16px;font-weight:900;color:#adff2f}.commandListComponent ul li.active{background:#f37628;color:#222}.commandListComponent ul li.drawCall{background:#5db0d7;color:#222}.commandListComponent ul li a{margin-left:5px;margin-right:5px;color:#5db0d7;background:#222;padding:5px;font-weight:900;display:inline-block}.commandDetailComponent{position:absolute;top:0;left:60%;right:0;bottom:0;overflow-y:visible;overflow-x:hidden}.jsonGroupComponent{display:block;margin:10px;padding:10px;padding-bottom:5px}.jsonGroupComponent .jsonGroupComponentTitle{display:block;font-size:16px;color:#5db0d7;border-bottom:1px solid #5db0d7;padding-bottom:5px;margin-bottom:5px;text-transform:capitalize}.jsonGroupComponent ul{margin:0px;padding:0px;list-style:none}.jsonGroupComponent ul li:nth-child(even){background:#222}.jsonGroupComponent ul li:nth-child(odd){background:#222}.jsonItemComponentKey{color:#f0640d}.jsonItemComponentValue{white-space:pre-wrap}.jsonItemImageHolder{width:50%;margin:auto}.jsonItemImageHolder .jsonItemImage{margin:5px;display:block;border:1px solid #606060;width:100%}.jsonItemImageHolder .jsonItemImage img{width:100%;display:block;margin:auto;max-width:256px;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px}.jsonItemImageHolder .jsonItemImage span{margin:0px;padding:5px;word-wrap:break-word;display:inline-block;width:100%;box-sizing:border-box}[commandName=onOpenSourceClicked]:hover{color:#f9f9f9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.jsonVisualStateItemComponent{text-align:center;padding:10px}.jsonVisualStateItemComponent img{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px;border:1px solid #606060;margin:5px;width:100%;max-width:512px;max-height:800px}.jsonVisualStateItemComponent span{display:block}.jsonContentComponent{position:absolute;top:0;left:0;right:0;bottom:0;padding:10px;overflow-y:visible;overflow-x:hidden}.jsonItemComponentValue{word-break:break-all;white-space:normal}.jsonSourceItemComponentOpen{font-weight:bold;color:#5db0d7;text-decoration:underline}.sourceCodeMenuComponentContainer{position:absolute;left:0;top:0;bottom:48px;right:40%}.sourceCodeMenuComponentFooter{position:absolute;left:0;right:40%;bottom:0;padding:0 15px}.sourceCodeMenuComponent{font-family:"Montserrat",sans-serif;font-size:13px;font-weight:300;line-height:40px;flex:1 100%;display:flex;flex-flow:row wrap;height:42px;outline:0 none;border-bottom:2px solid #222;box-sizing:border-box;list-style:none;margin:0;background:#2c2c2c;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-end}.sourceCodeMenuComponent .resultViewMenuOpen{display:none;visibility:hidden}.sourceCodeMenuComponent a{outline:0 none;text-decoration:none;display:block;padding:0 20px 0 20px;color:#ccc;background:#2c2c2c;box-sizing:border-box;height:100%}.sourceCodeMenuComponent a.active{background:#222;color:#fff;font-weight:400;border-bottom:2px solid #f0640d}.sourceCodeMenuComponent a:hover{background:#222;color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.sourceCodeMenuComponent a:hover.active{color:#f0640d;transition:color 0;-webkit-transition:color 0;-moz-transition:color 0}.sourceCodeMenuComponent a.clearSearch{display:inline-block;padding:0px;margin-left:-30px;margin-right:20px;z-index:9000;color:#f9f9f9}.sourceCodeMenuComponent a.clearSearch:hover{background:#2c2c2c;color:#f0640d}.sourceCodeMenuComponent input{border:0;font-family:"Montserrat",sans-serif;font-weight:300;padding:0 20px 0 20px;background:#464646;color:#f9f9f9;height:100%;position:relative;top:-1px;box-sizing:border-box}.sourceCodeMenuComponent input:focus{border:0;outline:0 none}.sourceCodeMenuComponent .clearSearch{position:relative;background:rgba(0,0,0,0);display:inline;padding:0px;margin-left:-30px;z-index:9000;color:#f0640d}.sourceCodeMenuComponent .clearSearch:hover{background:rgba(0,0,0,0) !important}.sourceCodeMenuComponent ::-webkit-input-placeholder{color:#ccc}.sourceCodeMenuComponent :-moz-placeholder{color:#ccc}.sourceCodeMenuComponent ::-moz-placeholder{color:#ccc}.sourceCodeMenuComponent :-ms-input-placeholder{color:#ccc}.sourceCodeComponent{position:absolute;top:42px;left:0;bottom:48px;right:40%;background:#222;z-index:9000;overflow-x:visible;overflow:auto}.sourceCodeComponent .sourceCodeComponentTitle{font-size:16px;font-weight:800;line-height:50px;color:#f0640d;padding:1em;margin:.5em 0}',""]);const a=o},827:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var i=n(81),r=n.n(i),s=n(645),o=n.n(s)()(r());o.push([e.id,".ace-monokai {\r\n color: #f9f9f9;\r\n font-size: 14px;\r\n}\r\n\r\n.ace-monokai .ace_entity.ace_name.ace_tag,\r\n.ace-monokai .ace_keyword,\r\n.ace-monokai .ace_meta.ace_tag,\r\n.ace-monokai .ace_storage {\r\n color: #F0640D\r\n}\r\n\r\n.ace-monokai .ace_constant.ace_character,\r\n.ace-monokai .ace_constant.ace_other {\r\n color: #5db0d7;\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_selection {\r\n background: #a6e22e\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_bracket {\r\n margin: -1px 0 0 -1px;\r\n border: 1px solid #a6e22e;\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_active-line {\r\n background: #2c2c2c\r\n}\r\n.ace-monokai .ace_gutter-active-line {\r\n background-color: #2c2c2c\r\n}\r\n.ace-monokai .ace_marker-layer .ace_selected-word {\r\n border: 1px solid #a6e22e\r\n}\r\n\r\n.ace-monokai .ace_constant.ace_language {\r\n color: #e6db74\r\n}\r\n.ace-monokai .ace_constant.ace_numeric {\r\n color: #ae81ff\r\n}\r\n\r\n.ace-monokai .ace_gutter {\r\n background: #222;\r\n color: #8F908A;\r\n}",""]);const a=o},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,s){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=s),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},81:e=>{"use strict";e.exports=function(e){return e[1]}},819:(e,t,n)=>{e=n.nmd(e),function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,n,i){"string"==typeof e?(2==arguments.length&&(i=n),t.modules[e]||(t.payloads[e]=i,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var n,i=function(e,t,n){if("string"==typeof t){var i=o(e,t);if(null!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(t)){for(var s=[],a=0,l=t.length;a1&&l(i,"")>-1&&(n=RegExp(this.source,r.replace.call(a(this),"g","")),r.replace.call(e.slice(i.index),n,(function(){for(var e=1;ei.index&&this.lastIndex--}return i},o||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))})),ace.define("ace/lib/es5-shim",["require","exports","module"],(function(e,t,n){function i(){}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=d.call(arguments,1),r=function(){if(this instanceof r){var i=t.apply(this,n.concat(d.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(d.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,r.prototype=new i,i.prototype=null),r});var r,s,o,a,l,c=Function.prototype.call,u=Array.prototype,h=Object.prototype,d=u.slice,m=c.bind(h.toString),p=c.bind(h.hasOwnProperty);if((l=p(h,"__defineGetter__"))&&(r=c.bind(h.__defineGetter__),s=c.bind(h.__defineSetter__),o=c.bind(h.__lookupGetter__),a=c.bind(h.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,"XXX"),n.length,t+1==n.length)return!0}()){var g=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?g.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(d.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):null==e?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=c;h--;)this[l+h]=this[a+h];if(s&&e===u)this.length=u,this.push.apply(this,r);else for(this.length=u+s,h=0;h>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(i),s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,s=[],o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,s=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(s in n){r=n[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}for(;s>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,s=i-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(s in n){r=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}do{s in this&&(r=e.call(void 0,r,n[s],s,t))}while(s--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=_&&"[object String]"==m(this)?this.split(""):N(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=F(arguments[1])),i=i>=0?i:Math.max(0,n+i);i>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,F(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:h)}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(p(e,t)){var n;if(n={enumerable:!0,configurable:!0},l){var i=e.__proto__;e.__proto__=h;var r=o(e,t),s=a(e,t);if(e.__proto__=i,r||s)return r&&(n.get=r),s&&(n.set=s),n}return n.value=e[t],n}}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create||(f=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=f();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var i=function(){};i.prototype=e,(n=new i).__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}),Object.defineProperty){var A=C({}),R="undefined"==typeof document||C(document.createElement("div"));if(!A||!R)var S=Object.defineProperty}Object.defineProperty&&!S||(Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError("Property description must be an object: "+n);if(S)try{return S.call(Object,e,t,n)}catch(e){}if(p(n,"value"))if(l&&(o(e,t)||a(e,t))){var i=e.__proto__;e.__proto__=h,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!l)throw new TypeError("getters & setters can not be defined on this javascript engine");p(n,"get")&&r(e,t,n.get),p(n,"set")&&s(e,t,n.set)}return e}),Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze((function(){}))}catch(e){Object.freeze=(E=Object.freeze,function(e){return"function"==typeof e?e:E(e)})}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";p(e,t);)t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n}),!Object.keys){var T=!0,b=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],w=b.length;for(var x in{toString:null})T=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)p(e,n)&&t.push(n);if(T)for(var i=0,r=w;i0||-1)*Math.floor(Math.abs(e))),e}var N=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}})),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],(function(e,t,n){"use strict";e("./regexp"),e("./es5-shim"),"undefined"==typeof Element||Element.prototype.remove||Object.defineProperty(Element.prototype,"remove",{enumerable:!1,writable:!0,configurable:!0,value:function(){this.parentNode&&this.parentNode.removeChild(this)}})})),ace.define("ace/lib/useragent",["require","exports","module"],(function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};var i="object"==typeof navigator?navigator:{},r=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),s=i.userAgent||"",o=i.appName||"";t.isWin="win"==r,t.isMac="mac"==r,t.isLinux="linux"==r,t.isIE="Microsoft Internet Explorer"==o||o.indexOf("MSAppHost")>=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=s.match(/ Gecko\/\d+/),t.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(s.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(s.split(" Chrome/")[1])||void 0,t.isEdge=parseFloat(s.split(" Edge/")[1])||void 0,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isAndroid=s.indexOf("Android")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid})),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./useragent");if(t.buildDom=function e(t,n,i){if("string"==typeof t&&t){var r=document.createTextNode(t);return n&&n.appendChild(r),r}if(!Array.isArray(t))return t;if("string"!=typeof t[0]||!t[0]){for(var s=[],o=0;o=1.5,"undefined"!=typeof document){var r=document.createElement("div");t.HI_DPI&&void 0!==r.style.transform&&(t.HAS_CSS_TRANSFORMS=!0),i.isEdge||void 0===r.style.animationName||(t.HAS_CSS_ANIMATION=!0),r=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}})),ace.define("ace/lib/oop",["require","exports","module"],(function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}})),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],(function(e,t,n){"use strict";var i=e("./oop"),r=function(){var e,t,n={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}};for(t in n.FUNCTION_KEYS)e=n.FUNCTION_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);for(t in n.PRINTABLE_KEYS)e=n.PRINTABLE_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);return i.mixin(n,n.MODIFIER_KEYS),i.mixin(n,n.PRINTABLE_KEYS),i.mixin(n,n.FUNCTION_KEYS),n.enter=n.return,n.escape=n.esc,n.del=n.delete,n[173]="-",function(){for(var e=["cmd","ctrl","alt","shift"],t=Math.pow(2,e.length);t--;)n.KEY_MODS[t]=e.filter((function(e){return t&n.KEY_MODS[e]})).join("-")+"-"}(),n.KEY_MODS[0]="",n.KEY_MODS[-1]="input-",n}();i.mixin(t,r),t.keyCodeToString=function(e){var t=r[e];return"string"!=typeof t&&(t=String.fromCharCode(e)),t.toLowerCase()}})),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./keys"),r=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent("on"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||r.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function r(e){n&&n(e),i&&i(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",(function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),n(e)})):"onwheel"in e?t.addListener(e,"wheel",(function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}n(e)})):t.addListener(e,"DOMMouseScroll",(function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),n(e)}))},t.addMultiMouseDownListener=function(e,n,i,s){var o,a,l,c=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};function h(e){if(0!==t.getButton(e)?c=0:e.detail>1?++c>4&&(c=1):c=1,r.isIE){var h=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;l&&!h||(c=1),l&&clearTimeout(l),l=setTimeout((function(){l=null}),n[c-1]||600),1==c&&(o=e.clientX,a=e.clientY)}if(e._clicks=c,i[s]("mousedown",e),c>4)c=0;else if(c>1)return i[s](u[c],e)}function d(e){c=2,l&&clearTimeout(l),l=setTimeout((function(){l=null}),n[c-1]||600),i[s]("mousedown",e),i[s](u[c],e)}Array.isArray(e)||(e=[e]),e.forEach((function(e){t.addListener(e,"mousedown",h),r.isOldIE&&t.addListener(e,"dblclick",d)}))};var a=r.isMac&&r.isOpera&&!("KeyboardEvent"in window)?function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)}:function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};function l(e,t,n){var l=a(t);if(!r.isMac&&s){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(l|=8),s.altGr){if(3==(3&l))return;s.altGr=0}if(18===n||17===n){var c="location"in t?t.location:t.keyLocation;17===n&&1===c?1==s[n]&&(o=t.timeStamp):18===n&&3===l&&2===c&&t.timeStamp-o<50&&(s.altGr=!0)}}if(n in i.MODIFIER_KEYS&&(n=-1),l||13!==n||3!==(c="location"in t?t.location:t.keyLocation)||(e(t,l,-n),!t.defaultPrevented)){if(r.isChromeOS&&8&l){if(e(t,l,n),t.defaultPrevented)return;l&=-9}return!!(l||n in i.FUNCTION_KEYS||n in i.PRINTABLE_KEYS)&&e(t,l,n)}}function c(){s=Object.create(null)}if(t.getModifierString=function(e){return i.KEY_MODS[a(e)]},t.addCommandKeyListener=function(e,n){var i=t.addListener;if(r.isOldGecko||r.isOpera&&!("KeyboardEvent"in window)){var o=null;i(e,"keydown",(function(e){o=e.keyCode})),i(e,"keypress",(function(e){return l(n,e,o)}))}else{var a=null;i(e,"keydown",(function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=l(n,e,e.keyCode);return a=e.defaultPrevented,t})),i(e,"keypress",(function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)})),i(e,"keyup",(function(e){s[e.keyCode]=null})),s||(c(),i(window,"focus",c))}},"object"==typeof window&&window.postMessage&&!r.isOldIE){var u=1;t.nextTick=function(e,n){n=n||window;var i="zero-timeout-message-"+u++,r=function(s){s.data==i&&(t.stopPropagation(s),t.removeListener(n,"message",r),e())};t.addListener(n,"message",r),n.postMessage(i,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout((function n(){t.$idleBlocked?setTimeout(n,100):e()}),n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout((function(){t.$idleBlocked=!1}),e||100)},t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}})),ace.define("ace/range",["require","exports","module"],(function(e,t,n){"use strict";var i=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)&&!this.isStart(e,t)},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else this.end.rowt)var r={row:t+1,column:0};else this.start.row0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;nDate.now()-50)||(i=!1)},cancel:function(){i=Date.now()}}})),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],(function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),a=e("../clipboard"),l=r.isChrome<18,c=r.isIE,u=r.isChrome>63,h=400,d=e("../lib/keys"),m=d.KEY_MODS,p=r.isIOS,g=p?/\s/:/\n/;t.TextInput=function(e,t){var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var f=!1,E=!1,v=!1,_=!1,C="";r.isMobile||(n.style.fontSize="1px");var A=!1,R=!1,S="",T=0,b=0,w=0;try{var x=document.activeElement===n}catch(e){}i.addListener(n,"blur",(function(e){R||(t.onBlur(e),x=!1)})),i.addListener(n,"focus",(function(e){if(!R){if(x=!0,r.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),r.isEdge?setTimeout(y):y()}})),this.$focusScroll=!1,this.focus=function(){if(C||u||"browser"==this.$focusScroll)return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=0!=n.getBoundingClientRect().top}catch(e){return}var i=[];if(t)for(var r=n.parentElement;r&&1==r.nodeType;)i.push(r),r.setAttribute("ace_nocontext",!0),r=!r.parentElement&&r.getRootNode?r.getRootNode().host:r.parentElement;n.focus({preventScroll:!0}),t&&i.forEach((function(e){e.removeAttribute("ace_nocontext")})),setTimeout((function(){n.style.position="","0px"==n.style.top&&(n.style.top=e)}),0)},this.blur=function(){n.blur()},this.isFocused=function(){return x},t.on("beforeEndOperation",(function(){t.curOp&&"insertstring"==t.curOp.command.name||(v&&(S=n.value="",D()),y())}));var y=p?function(e){if(x&&(!f||e)&&!_){e||(e="");var i="\n ab"+e+"cde fg\n";i!=n.value&&(n.value=S=i);var r=4+(e.length||(t.selection.isEmpty()?0:1));4==T&&b==r||n.setSelectionRange(4,r),T=4,b=r}}:function(){if(!v&&!_&&(x||I)){v=!0;var e=t.selection,i=e.getRange(),r=e.cursor.row,s=i.start.column,o=i.end.column,a=t.session.getLine(r);if(i.start.row!=r){var l=t.session.getLine(r-1);s=i.start.rowr+1?c.length:o,o+=a.length+1,a=a+"\n"+c}a.length>h&&(s0&&S[h]==e[h];)h++,o--;for(l=l.slice(h),h=1;a>0&&S.length-h>T-1&&S[S.length-h]==e[e.length-h];)h++,a--;c-=h-1,u-=h-1;var d=l.length-h+1;return d<0&&(o=-d,d=0),l=l.slice(0,d),i||l||c||o||a||u?(_=!0,l&&!o&&!a&&!c&&!u||A?t.onTextInput(l):t.onTextInput(l,{extendLeft:o,extendRight:a,restoreStart:c,restoreEnd:u}),_=!1,S=e,T=r,b=s,w=u,l):""},N=function(e){if(v)return k();if(e&&e.inputType){if("historyUndo"==e.inputType)return t.execCommand("undo");if("historyRedo"==e.inputType)return t.execCommand("redo")}var i=n.value,r=F(i,!0);(i.length>500||g.test(r))&&y()},M=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!l){var r=c||n?"Text":"text/plain";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return M(e,t,!0)}}},O=function(e,r){var s=t.getCopyText();if(!s)return i.preventDefault(e);M(e,s)?(p&&(y(s),f=s,setTimeout((function(){f=!1}),10)),r?t.onCut():t.onCopy(),i.preventDefault(e)):(f=!0,n.value=s,n.select(),setTimeout((function(){f=!1,y(),r?t.onCut():t.onCopy()})))},B=function(e){O(e,!0)},$=function(e){O(e,!1)},P=function(e){var s=M(e);a.pasteCancelled()||("string"==typeof s?(s&&t.onPaste(s,e),r.isIE&&setTimeout(y),i.preventDefault(e)):(n.value="",E=!0))};i.addCommandKeyListener(n,t.onCommandKey.bind(t)),i.addListener(n,"select",(function(e){v||(f?f=!1:function(e){return 0===e.selectionStart&&e.selectionEnd>=S.length&&e.value===S&&S&&e.selectionEnd!==b}(n)&&(t.selectAll(),y()))})),i.addListener(n,"input",N),i.addListener(n,"cut",B),i.addListener(n,"copy",$),i.addListener(n,"paste",P),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(e,"keydown",(function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:$(e);break;case 86:P(e);break;case 88:B(e)}}));var k=function(){if(v&&t.onCompositionUpdate&&!t.$readOnly){if(A)return U();if(v.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;F(e),v.markerRange&&(v.context&&(v.markerRange.start.column=v.selectionStart=v.context.compositionStartOffset),v.markerRange.end.column=v.markerRange.start.column+b-v.selectionStart+w)}}},D=function(e){t.onCompositionEnd&&!t.$readOnly&&(v=!1,t.onCompositionEnd(),t.off("mousedown",U),e&&N())};function U(){R=!0,n.blur(),n.focus(),R=!1}var G,W=o.delayedCall(k,50).schedule.bind(null,null);function V(){clearTimeout(G),G=setTimeout((function(){C&&(n.style.cssText=C,C=""),t.renderer.$isMousePressed=!1,t.renderer.$keepTextAreaAtCursor&&t.renderer.$moveTextAreaToCursor()}),0)}i.addListener(n,"compositionstart",(function(e){if(!v&&t.onCompositionStart&&!t.$readOnly&&(v={},!A)){setTimeout(k,0),t.on("mousedown",U);var i=t.getSelectionRange();i.end.row=i.start.row,i.end.column=i.start.column,v.markerRange=i,v.selectionStart=T,t.onCompositionStart(v),v.useTextareaForIME?(n.value="",S="",T=0,b=0):(n.msGetInputContext&&(v.context=n.msGetInputContext()),n.getInputContext&&(v.context=n.getInputContext()))}})),i.addListener(n,"compositionupdate",k),i.addListener(n,"keyup",(function(e){27==e.keyCode&&n.value.lengthb&&"\n"==S[s]?o=d.end:ib&&S.slice(0,s).split("\n").length>2?o=d.down:s>b&&" "==S[s-1]?(o=d.right,a=m.option):(s>b||s==b&&b!=T&&i==s)&&(o=d.right),i!==s&&(a|=m.shift),o){if(!t.onCommandKey({},a,o)&&t.commands){o=d.keyCodeToString(o);var l=t.commands.findKeyCommand(a,o);l&&t.execCommand(l)}T=i,b=s,y("")}}};document.addEventListener("selectionchange",s),t.on("destroy",(function(){document.removeEventListener("selectionchange",s)}))}(0,t,n)}})),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/useragent");function r(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach((function(t){e[t]=this[t]}),this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function s(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,s=e.getButton();return 0!==s?((r.getSelectionRange().isEmpty()||1==s)&&r.selection.moveToPosition(n),void(2==s&&(r.textInput.onContextMenu(e.domEvent),i.isMozilla||e.preventDefault()))):(this.mousedownEvent.time=Date.now(),!t||r.isFocused()||(r.focus(),!this.$focusTimeout||this.$clickSelection||r.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e)))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"))},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var r=s(this.$clickSelection,n);n=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),r=n.selection[e](i.row,i.column);if(this.$clickSelection){var o=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==o&&a<=0)t=this.$clickSelection.end,r.end.row==i.row&&r.end.column==i.column||(i=r.start);else if(1==a&&o>=0)t=this.$clickSelection.start,r.start.row==i.row&&r.start.column==i.column||(i=r.end);else if(-1==o&&1==a)i=r.end,t=r.start;else{var l=s(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e,t,n,i,r=(e=this.mousedownEvent.x,t=this.mousedownEvent.y,n=this.x,i=this.y,Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))),s=Date.now();(r>0||s-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,r=i-n.t,s=r?e.wheelX/r:n.vx,o=r?e.wheelY/r:n.vy;r<550&&(s=(s+n.vx)/2,o=(o+n.vy)/2);var a=Math.abs(s/o),l=!1;return a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l?n.allowed=i:i-n.allowed<550&&(Math.abs(s)<=1.5*Math.abs(n.vx)&&Math.abs(o)<=1.5*Math.abs(n.vy)?(l=!0,n.allowed=i):n.allowed=0),n.t=i,n.vx=s,n.vy=o,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}}).call(r.prototype),t.DefaultHandlers=r})),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],(function(e,t,n){"use strict";e("./lib/oop");var i=e("./lib/dom");function r(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){this.getElement().textContent=e},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(r.prototype),t.Tooltip=r})),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;function a(e){o.call(this,e)}r.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),s=this.getHeight();(e+=15)+r>n&&(e-=e+r-n),(t+=15)+s>i&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=function(e){var t,n,r,o=e.editor,l=o.renderer.$gutterLayer,c=new a(o.container);function u(){t&&(t=clearTimeout(t)),r&&(c.hide(),r=null,o._signal("hideGutterTooltip",c),o.removeEventListener("mousewheel",u))}function h(e){c.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",(function(t){if(o.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var n=t.getDocumentPosition().row,i=o.session.selection;if(t.getShiftKey())i.selectTo(n,0);else{if(2==t.domEvent.detail)return o.selectAll(),t.preventDefault();e.$clickSelection=o.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}})),e.editor.setDefaultHandler("guttermousemove",(function(s){var a=s.domEvent.target||s.domEvent.srcElement;if(i.hasCssClass(a,"ace_fold-widget"))return u();r&&e.$tooltipFollowsMouse&&h(s),n=s,t||(t=setTimeout((function(){t=null,n&&!e.isMousePressed?function(){var t=n.getDocumentPosition().row,i=l.$annotations[t];if(!i)return u();if(t==o.session.getLength()){var s=o.renderer.pixelToScreenCoordinates(0,n.y).row,a=n.$pos;if(s>o.session.documentToScreenRow(a.row,a.column))return u()}if(r!=i)if(r=i.text.join("
"),c.setHtml(r),c.show(),o._signal("showGutterTooltip",c),o.on("mousewheel",u),e.$tooltipFollowsMouse)h(n);else{var d=n.domEvent.target.getBoundingClientRect(),m=c.getElement().style;m.left=d.right+"px",m.top=d.bottom+"px"}}():u()}),50))})),s.addListener(o.renderer.$gutter,"mouseout",(function(e){n=null,r&&!t&&(t=setTimeout((function(){t=null,u()}),50))})),o.on("changeSession",u)}})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/event"),s=e("../lib/useragent");function o(e){var t=e.editor,n=i.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(t){e[t]=this[t]}),this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var o,l,c,u,h,d,m,p,g,f,E,v=t.container,_=0;function C(){var e=d;(function(e,n){var i=Date.now(),r=!n||e.row!=n.row,s=!n||e.column!=n.column;!f||r||s?(t.moveCursorToPosition(e),f=i,E={x:l,y:c}):a(E.x,E.y,l,c)>5?f=null:i-f>=200&&(t.renderer.scrollCursorIntoView(),f=null)})(d=t.renderer.screenToTextCoordinates(l,c),e),function(e,n){var i=Date.now(),r=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,o=t.renderer.scroller.getBoundingClientRect(),a={x:{left:l-o.left,right:o.right-l},y:{top:c-o.top,bottom:o.bottom-c}},u=Math.min(a.x.left,a.x.right),h=Math.min(a.y.top,a.y.bottom),d={row:e.row,column:e.column};u/s<=2&&(d.column+=a.x.left=200&&t.renderer.scrollCursorIntoView(d):g=i:g=null}(d,e)}function A(){h=t.selection.toOrientedRange(),o=t.session.addMarker(h,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(u),C(),u=setInterval(C,20),_=0,r.addListener(document,"mousemove",T)}function R(){clearInterval(u),t.session.removeMarker(o),o=null,t.selection.fromOrientedRange(h),t.isFocused()&&!p&&t.$resetCursorStyle(),h=null,d=null,_=0,g=null,f=null,r.removeListener(document,"mousemove",T)}this.onDragStart=function(e){if(this.cancelDrag||!v.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(e)}),0),e.preventDefault()}h=t.getSelectionRange();var r=e.dataTransfer;r.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),r.setDragImage&&r.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),r.clearData(),r.setData("Text",t.session.getTextRange()),p=!0,this.setState("drag")},this.onDragEnd=function(e){if(v.draggable=!1,p=!1,this.setState(null),!t.getReadOnly()){var n=e.dataTransfer.dropEffect;m||"move"!=n||t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&b(e.dataTransfer))return l=e.clientX,c=e.clientY,o||A(),_++,e.dataTransfer.dropEffect=m=w(e),r.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&b(e.dataTransfer))return l=e.clientX,c=e.clientY,o||(A(),_++),null!==S&&(S=null),e.dataTransfer.dropEffect=m=w(e),r.preventDefault(e)},this.onDragLeave=function(e){if(--_<=0&&o)return R(),m=null,r.preventDefault(e)},this.onDrop=function(e){if(d){var n=e.dataTransfer;if(p)switch(m){case"move":h=h.contains(d.row,d.column)?{start:d,end:d}:t.moveText(h,d);break;case"copy":h=t.moveText(h,d,!0)}else{var i=n.getData("Text");h={start:d,end:t.session.insert(d,i)},t.focus(),m=null}return R(),r.preventDefault(e)}},r.addListener(v,"dragstart",this.onDragStart.bind(e)),r.addListener(v,"dragend",this.onDragEnd.bind(e)),r.addListener(v,"dragenter",this.onDragEnter.bind(e)),r.addListener(v,"dragover",this.onDragOver.bind(e)),r.addListener(v,"dragleave",this.onDragLeave.bind(e)),r.addListener(v,"drop",this.onDrop.bind(e));var S=null;function T(){null==S&&(S=setTimeout((function(){null!=S&&o&&R()}),20))}function b(e){var t=e.types;return!t||Array.prototype.some.call(t,(function(e){return"text/plain"==e||"Text"==e}))}function w(e){var t=["copy","copymove","all","uninitialized"],n=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return n&&t.indexOf(i)>=0?r="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?r="move":t.indexOf(i)>=0&&(r="copy"),r}}function a(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=s.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;s.isIE&&"dragReady"==this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop(),"dragWait"===this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;"unselectable"in r&&(r.unselectable="on"),t.getDragDelay()?(s.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(o.prototype),t.DragdropHandler=o})),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./mouse_event").MouseEvent,r=e("../lib/dom");t.addTouchListeners=function(e,t){var n,s,o,a,l,c,u,h,d,m="scroll",p=0,g=0,f=0,E=0;function v(){var e,n,i;d||(e=window.navigator&&window.navigator.clipboard,n=!1,i=function(i){var s,o,a=i.target.getAttribute("action");if("more"==a||!n)return n=!n,s=t.getCopyText(),o=t.session.getUndoManager().hasUndo(),void d.replaceChild(r.buildDom(n?["span",!s&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],s&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],s&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],e&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],o&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPallete"},"Pallete"]]:["span"]),d.firstChild);"paste"==a?e.readText().then((function(e){t.execCommand(a,e)})):a&&("cut"!=a&&"copy"!=a||(e?e.writeText(t.getCopyText()):document.execCommand("copy")),t.execCommand(a)),d.firstChild.style.display="none",n=!1,"openCommandPallete"!=a&&t.focus()},d=r.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(e){m="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),i(e)},onclick:i},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],t.container));var s=t.selection.cursor,o=t.renderer.textToScreenCoordinates(s.row,s.column),a=t.container.getBoundingClientRect();d.style.top=o.pageY-a.top-3+"px",d.style.right="10px",d.style.display="",d.firstChild.style.display="none",t.on("input",_)}function _(e){d&&(d.style.display="none"),t.off("input",_)}function C(){l=null,clearTimeout(l);var e=t.selection.getRange(),n=e.contains(u.row,u.column);!e.isEmpty()&&n||(t.selection.moveToPosition(u),t.selection.selectWord()),m="wait",v()}e.addEventListener("contextmenu",(function(e){h&&t.textInput.getElement().focus()})),e.addEventListener("touchstart",(function(e){var r=e.touches;if(l||r.length>1)return clearTimeout(l),l=null,o=-1,void(m="zoom");h=t.$mouseHandler.isMousePressed=!0;var c=t.renderer.layerConfig.lineHeight,d=t.renderer.layerConfig.lineHeight,v=e.timeStamp;a=v;var _=r[0],A=_.clientX,R=_.clientY;Math.abs(n-A)+Math.abs(s-R)>c&&(o=-1),n=e.clientX=A,s=e.clientY=R,f=E=0;var S=new i(e,t);if(u=S.getDocumentPosition(),v-o<500&&1==r.length&&!p)g++,e.preventDefault(),e.button=0,function(){l=null,clearTimeout(l),t.selection.moveToPosition(u);var e=g>=2?t.selection.getLineRange(u.row):t.session.getBracketRange(u);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),m="wait"}();else{g=0;var T=t.selection.cursor,b=t.selection.isEmpty()?T:t.selection.anchor,w=t.renderer.$cursorLayer.getPixelPosition(T,!0),x=t.renderer.$cursorLayer.getPixelPosition(b,!0),y=t.renderer.scroller.getBoundingClientRect(),L=function(e,t){return(e/=d)*e+(t=t/c-.75)*t};if(e.clientXF?"cursor":"anchor"),m=F<3.5?"anchor":I<3.5?"cursor":"scroll",l=setTimeout(C,450)}o=v})),e.addEventListener("touchend",(function(e){h=t.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),"zoom"==m?(m="",p=0):l?(t.selection.moveToPosition(u),p=0,v()):"scroll"==m?(p+=60,c=setInterval((function(){p--<=0&&(clearInterval(c),c=null),Math.abs(f)<.01&&(f=0),Math.abs(E)<.01&&(E=0),p<20&&(f*=.9),p<20&&(E*=.9);var e=t.session.getScrollTop();t.renderer.scrollBy(10*f,10*E),e==t.session.getScrollTop()&&(p=0)}),10),e.preventDefault(),_()):v(),clearTimeout(l),l=null})),e.addEventListener("touchmove",(function(e){l&&(clearTimeout(l),l=null);var r=e.touches;if(!(r.length>1||"zoom"==m)){var o=r[0],c=n-o.clientX,u=s-o.clientY;if("wait"==m){if(!(c*c+u*u>4))return e.preventDefault();m="cursor"}n=o.clientX,s=o.clientY,e.clientX=o.clientX,e.clientY=o.clientY;var h=e.timeStamp,d=h-a;if(a=h,"scroll"==m){var p=new i(e,t);p.speed=1,p.wheelX=c,p.wheelY=u,10*Math.abs(c)1&&(r=n[n.length-2]);var o=l[t+"Path"];return null==o?o=l.basePath:"/"==i&&(t=i=""),o&&"/"!=o.slice(-1)&&(o+="/"),o+t+i+r+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var r,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{r=e(n)}catch(e){}if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var a=function(){e([n],(function(e){t._emit("load.module",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach((function(t){t&&t(e)}))}))};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),c()}};var c=function(){l.basePath||l.workerPath||l.modePath||l.themePath||Object.keys(l.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};function u(r){if(a&&a.document){l.packaged=r||e.packaged||i.packaged||a.define&&n.amdD.packaged;for(var s,o={},c="",u=document.currentScript||document._currentScript,h=(u&&u.ownerDocument||document).getElementsByTagName("script"),d=0;d=e){for(s=h+1;s=e;)s++;for(a=h,l=s-1;a=t.length||2!=(l=n[r-1])&&3!=l||2!=(c=t[r+1])&&3!=c?4:(s&&(c=3),c==l?c:4);case 10:return 2==(l=r>0?n[r-1]:5)&&r+10&&2==n[r-1])return 2;if(s)return 4;for(m=r+1,d=t.length;m=1425&&g<=2303||64286==g;if(l=t[m],f&&(1==l||7==l))return 1}return r<1||5==(l=t[r-1])?4:n[r-1];case 5:return s=!1,o=!0,i;case 6:return a=!0,4;case 13:case 14:case 16:case 17:case 15:s=!1;case h:return 4}}function f(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?0:d[t]:5==n?/[\u0591-\u05f4]/.test(e)?1:0:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?12:/[\u0660-\u0669\u066b-\u066c]/.test(e)?3:1642==t?u:/[\u06f0-\u06f9]/.test(e)?2:7:32==n&&t<=8287?m[255&t]:254==n&&t>=65136?7:4}t.L=0,t.R=1,t.EN=2,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="·",t.doBidiReorder=function(e,n,u){if(e.length<2)return{};var d=e.split(""),m=new Array(d.length),E=new Array(d.length),v=[];i=u?1:0,function(e,t,n,u){var h=i?c:l,d=null,m=null,p=null,E=0,v=null,_=-1,C=null,A=null,R=[];if(!u)for(C=0,u=[];C0)if(16==v){for(C=_;C-1){for(C=_;C=0&&8==u[S];S--)t[S]=i}}(d,v,d.length,n);for(var _=0;_7&&n[_]<13||4===n[_]||n[_]===h)?v[_]=t.ON_R:_>0&&"ل"===d[_-1]&&/\u0622|\u0623|\u0625|\u0627/.test(d[_])&&(v[_-1]=v[_]=t.R_H,_++);for(d[d.length-1]===t.DOT&&(v[d.length-1]=t.B),"‫"===d[0]&&(v[0]=t.RLE),_=0;_=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var n,i=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===i;)i=n,e++;else e=this.currentRow;return e},this.updateRowLine=function(e,t){void 0===e&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var s=this.session.$wrapData[e];s&&(void 0===t&&(t=this.getSplitIndex()),t>0&&s.length?(this.wrapIndent=s.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,r=i.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[r]%2!=0&&r++;for(var a=0;at&&s[r]%2==0&&(o+=this.charWidths[s[r]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n,i=this.bidiMap,r=i.bidiLevels,s=[],o=0,a=Math.min(e,t)-this.wrapIndent,l=Math.max(e,t)-this.wrapIndent,c=!1,u=!1,h=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var d,m=0;m=a&&dn+s/2;){if(n+=s,i===r.length-1){s=0;break}s=this.charWidths[r[++i]]}return i>0&&r[i-1]%2!=0&&r[i]%2==0?(e0&&r[i-1]%2==0&&r[i]%2!=0?t=1+(e>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===r.length-1&&0===s&&r[i-1]%2==0||!this.isRtlDir&&0===i&&r[i]%2!=0?t=1+this.bidiMap.logicalFromVisual[i]:(i>0&&r[i-1]%2!=0&&0!==s&&i--,t=this.bidiMap.logicalFromVisual[i]),0===t&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o})),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,a=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",(function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),t.$isEmpty||t.$silent||t._emit("changeSelection"),t.$keepDesiredColumnOnChange||e.old.column==e.value.column||(t.$desiredColumn=null)})),this.anchor.on("change",(function(){t.$anchorChanged=!0,t.$isEmpty||t.$silent||t._emit("changeSelection")}))};(function(){i.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,i=t?e.start:e.end;this.$setSelection(n.row,n.column,i.row,i.column)},this.$setSelection=function(e,t,n,i){var r=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,i),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||r!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection((function(){this.moveCursorTo(e,t)}))},this.selectToPosition=function(e){this.$moveSelection((function(){this.moveCursorToPosition(e)}))},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(i);return r?(i=r.start.row,n=r.end.row):n=i,!0===t?new o(i,0,n,this.session.getLine(n).length):new o(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,r=e.column+t;return n<0&&(i=e.column-t,r=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,r).split(" ").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);if(r)this.moveCursorTo(r.end.row,r.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(s)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},this.$shortWordEndIndex=function(e){var t,n=0,i=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(r.lastIndex=0;(t=e[n])&&!r.test(t);)if(r.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==n.length){var s=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var s=r.stringReverse(i),o=this.$shortWordEndIndex(s);return this.moveCursorTo(t,n-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var r=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(r.charAt(t))&&r.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(e){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map((function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t}));else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(null==e.start){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a})),ace.define("ace/tokenizer",["require","exports","module","ace/config"],(function(e,t,n){"use strict";var i=e("./config"),r=2e3,s=function(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[t],i=[],r=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",a=[],l=0;l1?this.$applyToken:c.token),h>1&&(/\\\d/.test(c.regex)?u=c.regex.replace(/\\([0-9]+)/g,(function(e,t){return"\\"+(parseInt(t,10)+r+1)})):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),s[r]=l,r+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(s[0]=0,i.push("$")),a.forEach((function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)}),this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],r=0,s=n.length;ru){var E=e.substring(u,f-g.length);d.type==m?d.value+=E:(d.type&&c.push(d),d={type:m,value:E})}for(var v=0;vr){for(h>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(s.prototype),t.Tokenizer=s})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],(function(e,t,n){"use strict";var i=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)}}).call(r.prototype),t.TokenIterator=r})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i,r=e("../../lib/oop"),s=e("../behaviour").Behaviour,o=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],c=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},m=function(e,t,n,i){var r=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},p=function(e){this.add("braces","insertion",(function(t,n,r,s,o){var l=r.getCursorPosition(),c=s.doc.getLine(l.row);if("{"==o){d(r);var u=r.getSelectionRange(),h=s.doc.getTextRange(u);if(""!==h&&"{"!==h&&r.getWrapBehavioursEnabled())return m(u,h,"{","}");if(p.isSaneInsertion(r,s))return/[\]\}\)]/.test(c[l.column])||r.inMultiSelectMode||e&&e.braces?(p.recordAutoInsert(r,s,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(r,s,"{"),{text:"{",selection:[1,1]})}else if("}"==o){if(d(r),"}"==c.substring(l.column,l.column+1)&&null!==s.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&p.isAutoInsertedClosing(l,c,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==o||"\r\n"==o){d(r);var g="";if(p.isMaybeInsertedClosing(l,c)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var f=s.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!f)return null;var E=this.$getIndent(s.getLine(f.row))}else{if(!g)return void p.clearMaybeInsertedClosing();E=this.$getIndent(c)}var v=E+s.getTabString();return{text:"\n"+v+"\n"+E+g,selection:[1,v.length,1,v.length]}}p.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(e,t,n,r,s){var o=r.doc.getTextRange(s);if(!s.isMultiLine()&&"{"==o){if(d(n),"}"==r.doc.getLine(s.start.row).substring(s.end.column,s.end.column+1))return s.end.column++,s;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(e,t,n,i,r){if("("==r){d(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return m(s,o,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("parens","deletion",(function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"("==s&&(d(n),")"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("brackets","insertion",(function(e,t,n,i,r){if("["==r){d(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return m(s,o,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("brackets","deletion",(function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"["==s&&(d(n),"]"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("string_dquotes","insertion",(function(e,t,n,i,r){var s=i.$mode.$quotes||h;if(1==r.length&&s[r]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(n);var o=r,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(""===l||1==l.length&&s[l])&&n.getWrapBehavioursEnabled())return m(a,l,o,o);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),p=u.substring(c.column-1,c.column),g=u.substring(c.column,c.column+1),f=i.getTokenAt(c.row,c.column),E=i.getTokenAt(c.row,c.column+1);if("\\"==p&&f&&/escape/.test(f.type))return null;var v,_=f&&/string|escape/.test(f.type),C=!E||/string|escape/.test(E.type);if(g==o)(v=_!==C)&&/string\.end/.test(E.type)&&(v=!1);else{if(_&&!C)return null;if(_&&C)return null;var A=i.$mode.tokenRe;A.lastIndex=0;var R=A.test(p);A.lastIndex=0;var S=A.test(p);if(R||S)return null;if(g&&!/[\s;,.})\]\\]/.test(g))return null;var T=u[c.column-2];if(p==o&&(T==o||A.test(T)))return null;v=!0}return{text:v?o+o:"",selection:[1,1]}}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,r){var s=i.$mode.$quotes||h,o=i.doc.getTextRange(r);if(!r.isMultiLine()&&s.hasOwnProperty(o)&&(d(n),i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o))return r.end.column++,r}))};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new o(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var r=new o(t,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,s,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+s.substr(r.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,s)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=s.substr(0,r.column)+n,i.maybeInsertedLineEnd=s.substr(r.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(p,s),t.CstyleBehaviour=p})),ace.define("ace/unicode",["require","exports","module"],(function(e,t,n){"use strict";for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],r=0,s=[],o=0;o2?i%c!=c-1:i%c==0})}else{if(!this.blockComment)return!1;var m=this.blockComment.start,p=this.blockComment.end,g=new RegExp("^(\\s*)(?:"+l.escapeRegExp(m)+")"),f=new RegExp("(?:"+l.escapeRegExp(p)+")\\s*$"),E=function(e,t){_(e,t)||s&&!/\S/.test(e)||(r.insertInLine({row:t,column:e.length},p),r.insertInLine({row:t,column:a},m))},v=function(e,t){var n;(n=e.match(f))&&r.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(g))&&r.removeInLine(t,n[1].length,n[0].length)},_=function(e,n){if(g.test(e))return!0;for(var i=t.getTokens(n),r=0;re.length&&(A=e.length)})),a==1/0&&(a=A,s=!1,o=!1),u&&a%c!=0&&(a=Math.floor(a/c)*c),C(o?v:E)},this.toggleBlockComment=function(e,t,n,i){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var s,o,a=(g=new c(t,i.row,i.column)).getCurrentToken(),l=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var h,d;a&&/comment/.test(a.type);){if(-1!=(f=a.value.indexOf(r.start))){var m=g.getCurrentTokenRow(),p=g.getCurrentTokenColumn()+f;h=new u(m,p,m,p+r.start.length);break}a=g.stepBackward()}var g;for(a=(g=new c(t,i.row,i.column)).getCurrentToken();a&&/comment/.test(a.type);){var f;if(-1!=(f=a.value.indexOf(r.end))){m=g.getCurrentTokenRow(),p=g.getCurrentTokenColumn()+f,d=new u(m,p,m,p+r.end.length);break}a=g.stepForward()}d&&t.remove(d),h&&(t.remove(h),s=h.start.row,o=-r.start.length)}else o=r.start.length,s=n.start.row,t.insert(n.end,r.end),t.insert(n.start,r.start);l.start.row==s&&(l.start.column+=o),l.end.row==s&&(l.end.column+=o),t.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)if(e[t]){var n=e[t],r=n.prototype.$id,s=i.$modes[r];s||(i.$modes[r]=s=new n),i.$modes[t]||(i.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var n=function(t,n,i){var r="insert"==t.action,s=(r?1:-1)*(t.end.row-t.start.row),o=(r?1:-1)*(t.end.column-t.start.column),a=t.start,l=r?a:t.end;return e(n,a,i)?{row:n.row,column:n.column}:e(l,n,!i)?{row:n.row+s,column:n.column+(n.row==l.row?o:0)}:{row:a.row,column:a.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var r={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:r,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)})),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return null==t&&(t=i.length),{row:e,column:t=Math.min(Math.max(t,0),i.length)}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){return e instanceof o||(e=o.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(r(this.$lines,e,t),this._signal("change",e)))},this.$splitAndapplyLargeDelta=function(e,t){for(var n=e.lines,i=n.length-t+1,r=e.start.row,s=e.start.column,o=0,a=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),s<=i&&n.fireUpdateEvent(s,i)}}};(function(){i.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(s.prototype),t.BackgroundTokenizer=s})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),s=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,s){if(this.regExp)for(var o=s.firstRow,a=s.lastRow,l=o;l<=a;l++){var c=this.cache[l];null==c&&((c=i.getMatchOffsets(n.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map((function(e){return new r(l,e.offset,l,e.offset+e.length)})),this.cache[l]=c.length?c:"");for(var u=c.length;u--;)t.drawSingleLineMarker(e,c[u].toScreenRange(n),this.clazz,s)}}}).call(s.prototype),t.SearchHighlight=s})),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range;function r(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new i(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach((function(e){e.setFoldLine(this)}),this)}(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach((function(t){t.start.row+=e,t.end.row+=e}))},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort((function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)})),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,r,s=0,o=this.folds,a=!0;null==t&&(t=this.end.row,n=this.end.column);for(var l=0;l0)){var l=i(e,o.start);return 0===a?t&&0!==l?-s-2:s:l>0||0===l&&!t?s:-s-1}}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],n=this.ranges,r=(n=n.sort((function(e,t){return i(e.start,t.start)})))[0],s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=i);o++);if("insert"==e.action){for(var l=r-i,c=-t.column+n.column;oi);o++)if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$bias<=0||(u.start.column+=c,u.start.row+=l)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$bias<0)continue;u.end.column==t.column&&c>0&&ou.start.column&&u.end.column==s[o+1].start.column&&(u.end.column-=c),u.end.column+=c,u.end.row+=l}}else for(l=i-r,c=t.column-n.column;or);o++)u.end.rowt.column)&&(u.end.column=t.column,u.end.row=t.row):(u.end.column+=c,u.end.row+=l):u.end.row>r&&(u.end.row+=l),u.start.rowt.column)&&(u.start.column=t.column,u.start.row=t.row):(u.start.column+=c,u.start.row+=l):u.start.row>r&&(u.start.row+=l);if(0!=l&&o=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0);i=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,r=0;r=t){a=e?i-=t-a:i=0);break}o>=e&&(i-=a>=e?o-a:o-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort((function(e,t){return e.start.row-t.start.row})),e},this.addFold=function(e,t){var n,i=this.$foldData,o=!1;e instanceof s?n=e:(n=new s(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column,h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var m=this.getFoldsInRange(n.range);m.length>0&&(this.removeFolds(m),m.forEach((function(e){n.addSubFold(e)})));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach((function(e){this.expandFold(e)}),this)},this.unfold=function(e,t){var n,r;if(null==e?(n=new i(0,0,this.getLength(),0),t=!0):n="number"==typeof e?new i(e,0,e,this.getLine(e).length):"row"in e?i.fromPoints(e,e):e,r=this.getFoldsInRangeList(n),t)this.removeFolds(r);else for(var s=r;s.length;)this.expandFolds(s),s=this.getFoldsInRangeList(n);if(r.length)return r},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,r){null==i&&(i=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk((function(e,t,n,a){if(!(tu)break}while(s&&l.test(s.type));s=r.stepBackward()}else s=r.getCurrentToken();return c.end.row=r.getCurrentTokenRow(),c.end.column=r.getCurrentTokenColumn()+s.value.length-2,c}},this.foldAll=function(e,t,n){null==n&&(n=1e5);var i=this.foldWidgets;if(i){t=t||this.getLength();for(var r=e=e||0;r=e){r=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};for(var i,r=e-1;r>=0;){var s=n[r];if(null==s&&(s=n[r]=this.getFoldWidget(r)),"start"==s){var o=this.getFoldWidgetRange(r);if(i||(i=o),o&&o.end.row>=e)break}r--}return{range:-1!==r&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),r="end"===n?-1:1,s=this.getFoldAt(e,-1===r?0:i.length,r);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()&&(s=this.getFoldAt(o.start.row,o.start.column,1))&&o.isEqual(s.range))return this.removeFold(s),s;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=o?o.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,r=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,s=n.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);if(o||(s=n.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),i=!1),!o)return null;if(o[1]){if(!(a=this.$findClosingBracket(o[1],e)))return null;t=r.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(o[2],e)))return null;t=r.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-o.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==r){if(0==(s-=1))return{row:o.getCurrentTokenRow(),column:l+o.getCurrentTokenColumn()}}else u==e&&(s+=1);l-=1}do{a=o.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-o.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;ln&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var r=n+i>>1,s=e[r];if(t>s)n=r+1;else{if(!(t=t);s++);return(n=i[s])?(n.index=s,n.start=r-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var r=this.tokenRe;else r=/^\s+$/.test(n.slice(t-1,t+1))?/\s/:this.nonTokenRe;var s=t;if(s>0){do{s--}while(s>=0&&n.charAt(s).match(r));s++}for(var o=t;oe&&(e=t.screenWidth)})),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,r=0,s=this.$foldData[r],o=s?s.start.row:1/0,a=t.length,l=0;lo){if((l=s.end.row+1)>=a)break;o=(s=this.$foldData[r++])?s.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=e.length-1;-1!=n;n--){var i=e[n];"insert"==i.action||"remove"==i.action?this.doc.revertDelta(i):i.folds&&this.addFolds(i.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=c),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=c)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}if(s.end=this.insert(s.start,i),r.length){var a=e.start,l=s.start,c=(o=l.row-a.row,l.column-a.column);this.addFolds(r.map((function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=o,e.end.row+=o,e})))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var s=this.getLine(r);n.start.row=r,n.end.row=r;for(var o=0;o0){var r;if((r=this.getRowFoldEnd(t+n))>this.doc.getLength()-1)return 0;i=r-t}else e=this.$clipRowToDocument(e),i=(t=this.$clipRowToDocument(t))-e+1;var s=new u(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map((function(e){return(e=e.clone()).start.row+=i,e.end.row+=i,e})),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,a),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,r=e.end,s=i.row,o=r.row,a=o-s,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(s,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var u=0;if(g=this.getFoldLine(r.row)){g.addRemoveChars(r.row,r.column,i.column-r.column),g.shiftRow(-a);var h=this.getFoldLine(s);h&&h!==g&&(h.merge(g),g=h),u=c.indexOf(g)+1}for(;u=r.row&&g.shiftRow(-a);o=s}else{var d=Array(a);d.unshift(s,0);var m=t?this.$wrapData:this.$rowLengthCache;if(m.splice.apply(m,d),c=this.$foldData,u=0,g=this.getFoldLine(s)){var p=g.range.compareInside(i.row,i.column);0==p?(g=g.split(i.row,i.column))&&(g.shiftRow(a),g.addRemoveChars(o,0,r.column-i.column)):-1==p&&(g.addRemoveChars(s,0,r.column-i.column),g.shiftRow(a)),u=c.indexOf(g)+1}for(;u=s&&g.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(g=this.getFoldLine(s))&&g.addRemoveChars(s,i.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),l},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(n,i){var r,s,o=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,u=n;for(i=Math.min(i,o.length-1);u<=i;)(s=this.getFoldLine(u,s))?(r=[],s.walk(function(n,i,s,a){var l;if(null!=n){(l=this.$getDisplayTokens(n,r.length))[0]=e;for(var c=1;c=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}this.$computeWrapSplits=function(n,i,r){if(0==n.length)return[];var s=[],o=n.length,a=0,l=0,c=this.$wrapAsCode,u=this.$indentedSoftWrap,h=i<=Math.max(2*r,8)||!1===u?0:Math.floor(i/2);function d(e){for(var t=e-a,i=a;ii-m;){var p=a+i-m;if(n[p-1]>=10&&n[p]>=10)d(p);else if(n[p]!=e&&n[p]!=t){for(var g=Math.max(p-(i-(i>>2)),a-1);p>g&&n[p]g&&n[p]g&&9==n[p];)p--}else for(;p>g&&n[p]<10;)p--;p>g?d(++p):(2==n[p=a+i]&&p--,d(p-m))}else{for(;p!=a-1&&n[p]!=e;p--);if(p>a){d(p);continue}for(p=a+i;p39&&o<48||o>57&&o<64?r.push(9):o>=4352&&n(o)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(e,t,i){if(0==t)return[0,0];var r,s;for(null==t&&(t=1/0),i=i||0,s=0;s=4352&&n(r)?i+=2:i+=1,!(i>t));s++);return[i,s]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0){a=c[u],s=this.$docRowCache[u];var d=e>c[h-1]}else d=!h;for(var m=this.getLength()-1,p=this.getNextFoldLine(s),g=p?p.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(s))>e||s>=m);)a+=l,++s>g&&(s=p.end.row+1,g=(p=this.getNextFoldLine(s,p))?p.start.row:1/0),d&&(this.$docRowCache.push(s),this.$screenRowCache.push(a));if(p&&p.start.row<=s)i=this.getFoldDisplayLine(p),s=p.start.row;else{if(a+l<=e||s>m)return{row:m,column:this.getLine(m).length};i=this.getLine(s),p=null}var f=0,E=Math.floor(e-a);if(this.$useWrapMode){var v=this.$wrapData[s];v&&(r=v[E],E>0&&v.length&&(f=v.indent,o=v[E-1]||v[v.length-1],i=i.substring(o)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+E,s,E)&&(t=this.$bidiHandler.offsetToCol(n)),o+=this.$getStringScreenWidth(i,t-f)[1],this.$useWrapMode&&o>=r&&(o=r-1),p?p.idxToPosition(o):{row:s,column:o}},this.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i,r=0,s=null;(i=this.getFoldAt(e,t,1))&&(e=i.start.row,t=i.start.column);var o,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),u=l.length;if(u&&c>=0){a=l[c],r=this.$screenRowCache[c];var h=e>l[u-1]}else h=!u;for(var d=this.getNextFoldLine(a),m=d?d.start.row:1/0;a=m){if((o=d.end.row+1)>e)break;m=(d=this.getNextFoldLine(o,d))?d.start.row:1/0}else o=a+1;r+=this.getRowLength(a),a=o,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(r))}var p="";d&&a>=m?(p=this.getFoldDisplayLine(d,e,t),s=d.start.row):(p=this.getLine(e).substring(0,t),s=e);var g=0;if(this.$useWrapMode){var f=this.$wrapData[s];if(f){for(var E=0;p.length>=f[E];)r++,E++;p=p.substring(f[E-1]||0,p.length),g=E>0?f.indent:0}}return{row:r,column:g+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,r=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);ir&&(i=t.end.row+1,r=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var o=this.$foldData,a=0;an);s++);return[i,s]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=n}.call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),o.defineOptions(p.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){(e=parseInt(e))>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=p})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),r=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach((function(e,n,r,o){return i=new s(e,n,r,o),!(n==o&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start)&&(i=null,1))})),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,r=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,u=r.length-c;e:for(var h=a.offset||0;h<=u;h++){for(var d=0;dg||(o.push(l=new s(h,g,h+c-1,f)),c>2&&(h=h+c-2))}}else for(var E=0;EA&&o[d].end.row==n.end.row;)d--;for(o=o.slice(E,d+1),E=0,d=o.length;E=a;n--)if(h(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=l,a=o.row;n>=a;n--)if(h(n,Number.MAX_VALUE,e))return}};else c=function(e){var n=o.row;if(!h(n,o.column,e)){for(n+=1;n<=l;n++)if(h(n,0,e))return;if(0!=t.wrap)for(n=a,l=o.row;n<=l;n++)if(h(n,0,e))return}};if(t.$isMultiLine)var u=n.length,h=function(t,r,s){var o=i?t-u+1:t;if(!(o<0)){var a=e.getLine(o),l=a.search(n[0]);if(!(!i&&lr))return!!s(o,l,o+u-1,h)||void 0}}};else h=i?function(t,i,r){var s,o=e.getLine(t),a=[],l=0;for(n.lastIndex=0;s=n.exec(o);){var c=s[0].length;if(l=s.index,!c){if(l>=o.length)break;n.lastIndex=l+=1}if(s.index+c>i)break;a.push(s.index,c)}for(var u=a.length-1;u>=0;u-=2){var h=a[u-1];if(r(t,h,t,h+(c=a[u])))return!0}}:function(t,i,r){var s,o,a=e.getLine(t);for(n.lastIndex=i;o=n.exec(a);){var l=o[0].length;if(r(t,s=o.index,t,s+l))return!0;if(!l&&(n.lastIndex=s+=1,s>=a.length))return!1}};return{forEach:c}}}).call(o.prototype),t.Search=o})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/keys"),r=e("../lib/useragent"),s=i.KEY_MODS;function o(e,t){this.platform=t||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function a(e,t){o.call(this,e,t),this.$singleCommand=!1}a.prototype=o.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var r in i){var s=i[r];if(s==e)delete i[r];else if(Array.isArray(s)){var o=s.indexOf(e);-1!=o&&(s.splice(o,1),1==s.length&&(i[r]=s[0]))}}},this.bindKey=function(e,t,n){if("object"==typeof e&&e&&(null==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach((function(e){var i="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach((function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var o=this.parseKeys(e),a=s[o.hashId]+o.key;this._addCommandToBinding(i+a,t,n)}),this)},this._addCommandToBinding=function(t,n,i){var r,s=this.commandKeyBinding;if(n)if(!s[t]||this.$singleCommand)s[t]=n;else{Array.isArray(s[t])?-1!=(r=s[t].indexOf(n))&&s[t].splice(r,1):s[t]=[s[t]],"number"!=typeof i&&(i=e(n));var o=s[t];for(r=0;ri);r++);o.splice(r,0,n)}else delete s[t]},this.addCommands=function(e){e&&Object.keys(e).forEach((function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}}),this)},this.removeCommands=function(e){Object.keys(e).forEach((function(t){this.removeCommand(e[t])}),this)},this.bindKeys=function(e){Object.keys(e).forEach((function(t){this.bindKey(t,e[t])}),this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(e){return e})),n=t.pop(),r=i[n];if(i.FUNCTION_KEYS[r])n=i.FUNCTION_KEYS[r].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var s=0,o=t.length;o--;){var a=i.KEY_MODS[t[o]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=a}return{key:n,hashId:s}},this.findKeyCommand=function(e,t){var n=s[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var r=s[t]+n,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=a})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",(function(e){return e.command.exec(e.editor,e.args||{})}))};i.inherits(o,r),function(){i.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(0!=this.$checkCommandState&&e.isAvailable&&!e.isAvailable(t))return!1;var r={editor:t,command:e,args:n};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach((function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])}),this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map((function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e}))}}.call(o.prototype),t.CommandManager=o})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/lang"),r=e("../config"),s=e("../range").Range;function o(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",(function(t){t.init(e),e.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){r.loadModule("./ext/error_marker",(function(t){t.showErrorMarker(e,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){r.loadModule("./ext/error_marker",(function(t){t.showErrorMarker(e,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){"number"!=typeof t||isNaN(t)||e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){r.loadModule("ace/ext/searchbox",(function(t){t.Search(e)}))},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty()?e.selection.getLineRange():e.selection.getRange();e._emit("cut",t),t.isEmpty()||e.session.remove(t),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",(function(t){t.Search(e,!0)}))}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(i.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),r=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=r.row+1;c++){var u=i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(c)));0!==u.length&&(u=" "+u),l+=u}r.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,r=[];i.length<1&&(i=[e.selection.getRange()]);for(var o=0;o=r.lastRow||i.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e&&"ace"!=e){this.$keybindingId=e;var n=this;E.loadModule(["keybinding",e],(function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout((function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)var i=new m(n.row,n.column,n.row,n.column+1);else t.$mode.getMatching&&(i=t.$mode.getMatching(e.session));i&&(t.$bracketHighlight=t.addMarker(i,"ace_bracket","text"))}}),50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout((function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new v(e.session,n.row,n.column),r=i.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=i.stepForward())){var s=r.value,o=0,a=i.stepBackward();if("<"==a.value)do{a=r,(r=i.stepForward())&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"=0);else{do{r=a,a=i.stepBackward(),r&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new m(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column,i=t.end.column,r=e.getLine(t.start.row),s=r.substring(n,i);if(!(s.length>5e3)&&/[\w\d]/.test(s)){var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),a=r.substring(n-1,i+1);if(o.test(a))return o}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;for(var i=this.selection.getAllRanges(),r=0;ra.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);n.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,u=n.getState(r.row),h=(a=n.getLine(r.row),i.checkOutdent(u,a,e));if(n.insert(r,e),s&&s.selection&&(2==s.selection.length?this.selection.setSelectionRange(new m(r.row,c+s.selection[0],r.row,c+s.selection[1])):this.selection.setSelectionRange(new m(r.row+s.selection[0],s.selection[1],r.row+s.selection[2],s.selection[3]))),n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(u,a.slice(0,r.column),n.getTabString());n.insert({row:r.row+1,column:0},d)}h&&i.autoOutdent(u,n,r.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){var n;(t.extendLeft||t.extendRight)&&((n=this.selection.getRange()).start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),e||n.isEmpty()||this.remove()),!e&&this.selection.isEmpty()||this.insert(e,!0),(t.restoreStart||t.restoreEnd)&&((n=this.selection.getRange()).start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n))},this.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),r=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var s=n.getTextRange(t);if("\n"==s[s.length-1]){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,r=this.session.getLine(e.row);tt.toLowerCase()?1:0}));var r=new m(0,0,0,0);for(i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:r[0],start:r.index,end:r.index+r[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new m(t,n-1,t,n),r=this.session.getTextRange(i);if(!isNaN(parseFloat(r))&&isFinite(r)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,a=s.start+s.value.length-o,l=parseFloat(s.value);l*=Math.pow(10,a),o!==s.end&&n=a&&o<=l&&(n=t,c.selection.clearSelection(),c.moveCursorTo(e,a+i),c.selection.selectTo(e,l+i)),a=l}));for(var u,h=this.$toggleWordPairs,d=0;dm+1)break;m=p.last}for(u--,a=this.session.$moveLines(d,m,t?0:e),t&&-1==e&&(h=u+1);h<=u;)o[h].moveBy(a,0),h++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,r=e*Math.floor(i.height/i.lineHeight);!0===t?this.selection.$moveSelection((function(){this.moveCursorBy(r,0)})):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,r*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new v(this.session,n.row,n.column),r=i.getCurrentToken(),s=r||i.stepForward();if(s){var o,a,l=!1,c={},u=n.column-s.start,h={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;u=0;--s)this.$tryReplace(n[s],e)&&i++;return this.selection.setSelectionRange(r),i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var r=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(r)||this.$search.$options.needle)||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var s=this.$search.find(this.session);return t.preventScroll?s:s?(this.revealRange(s,n),s):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var s=this.on("changeSelection",(function(){i=!0})),o=this.renderer.on("beforeRender",(function(){i&&(t=n.renderer.container.getBoundingClientRect())})),a=this.renderer.on("afterRender",(function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,a=s.top-o.offset;null!=(i=s.top>=0&&a+t.top<0||!(s.topwindow.innerHeight)&&null)&&(r.style.top=a+"px",r.style.left=s.left+"px",r.style.height=o.lineHeight+"px",r.scrollIntoView(i)),i=t=null}}));this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",o))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))},this.prompt=function(e,t,n){var i=this;E.loadModule("./ext/prompt",(function(r){r.prompt(i,e,t,n)}))}}.call(C.prototype),E.defineOptions(C.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?A.attach(this):A.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?A.attach(this):A.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.renderer.$composition||this.getValue();if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),r.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!e&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),r.addCssClass(this.container,"ace_hasPlaceholder");var t=r.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var A={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"·":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=C})),ace.define("ace/undomanager",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=function(){this.$maxRev=0,this.$fromUndo=!1,this.reset()};(function(){this.addSession=function(e){this.$session=e},this.add=function(e,t,n){this.$fromUndo||e!=this.$lastDelta&&(!1!==t&&this.lastDeltas||(this.lastDeltas=[],this.$undoStack.push(this.lastDeltas),e.id=this.$rev=++this.$maxRev),"remove"!=e.action&&"insert"!=e.action||(this.$lastDelta=e),this.lastDeltas.push(e))},this.addSelection=function(e,t){this.selections.push({value:e,rev:t||this.$rev})},this.startNewGroup=function(){return this.lastDeltas=null,this.$rev},this.markIgnored=function(e,t){null==t&&(t=this.$rev+1);for(var n=this.$undoStack,i=n.length;i--;){var r=n[i][0];if(r.id<=e)break;r.id0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){null==e&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?a(e):a(this.$undoStack)+"\n---\n"+a(this.$redoStack)}}).call(i.prototype);var r=e("./range").Range,s=r.comparePoints;function o(e){return{row:e.row,column:e.column}}function a(e){if(e=e||this,Array.isArray(e))return e.map(a).join("\n");var t="";return e.action?(t="insert"==e.action?"+":"-",t+="["+e.lines+"]"):e.value&&(t=Array.isArray(e.value)?e.value.map(l).join("\n"):l(e.value)),e.start&&(t+=l(e)),(e.id||e.rev)&&(t+="\t("+(e.id||e.rev)+")"),t}function l(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function c(e,t){var n="insert"==e.action,i="insert"==t.action;if(n&&i)if(s(t.start,e.end)>=0)d(t,e,-1);else{if(!(s(t.start,e.start)<=0))return null;d(e,t,1)}else if(n&&!i)if(s(t.start,e.end)>=0)d(t,e,-1);else{if(!(s(t.end,e.start)<=0))return null;d(e,t,-1)}else if(!n&&i)if(s(t.start,e.start)>=0)d(t,e,1);else{if(!(s(t.start,e.start)<=0))return null;d(e,t,1)}else if(!n&&!i)if(s(t.start,e.start)>=0)d(t,e,1);else{if(!(s(t.end,e.start)<=0))return null;d(e,t,-1)}return[t,e]}function u(e,t){for(var n=e.length;n--;)for(var i=0;i=0?d(e,t,-1):(s(e.start,t.start)<=0||d(e,r.fromPoints(t.start,e.start),-1),d(t,e,1));else if(!n&&i)s(t.start,e.end)>=0?d(t,e,-1):(s(t.start,e.start)<=0||d(t,r.fromPoints(e.start,t.start),-1),d(e,t,1));else if(!n&&!i)if(s(t.start,e.end)>=0)d(t,e,-1);else{var o,a;if(!(s(t.end,e.start)<=0))return s(e.start,t.start)<0&&(o=e,e=p(e,t.start)),s(e.end,t.end)>0&&(a=p(e,t.end)),m(t.end,e.start,e.end,-1),a&&!o&&(e.lines=a.lines,e.start=a.start,e.end=a.end,a=e),[t,o,a].filter(Boolean);d(e,t,-1)}return[t,e]}function d(e,t,n){m(e.start,t.start,t.end,n),m(e.end,t.start,t.end,n)}function m(e,t,n,i){e.row==(1==i?t:n).row&&(e.column+=i*(n.column-t.column)),e.row+=i*(n.row-t.row)}function p(e,t){var n=e.lines,i=e.end;e.end=o(t);var r=e.end.row-e.start.row,s=n.splice(r,n.length),a=r?t.column:t.column-e.start.column;return n.push(s[0].substring(0,a)),s[0]=s[0].substr(a),{start:o(t),end:i,lines:s,action:e.action}}function g(e,t){t=function(e){return{start:o(e.start),end:o(e.end),action:e.action,lines:e.lines.slice()}}(t);for(var n=e.length;n--;){for(var i=e[n],r=0;rs&&(l=r.end.row+1,s=(r=t.getNextFoldLine(l,r))?r.start.row:1/0),l>i){for(;this.$lines.getLength()>a+1;)this.$lines.pop();break}(o=this.$lines.get(++a))?o.row=l:(o=this.$lines.createCell(l,e,this.session,c),this.$lines.push(o)),this.$renderCell(o,e,r,l),l++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,i=t.$firstLineNumber,r=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||t.$useWrapMode)&&(r=t.getLength()+i-1);var s=n?n.getWidth(t,r,e):r.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();(s+=o.left+o.right)===this.gutterWidth||isNaN(s)||(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(this.$highlightGutterLine){var e=this.session.selection.getCursor();this.$cursorRow!==e.row&&(this.$cursorRow=e.row)}},this.updateLineHighlight=function(){if(this.$highlightGutterLine){var e=this.session.selection.cursor.row;if(this.$cursorRow=e,!this.$cursorCell||this.$cursorCell.row!=e){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(i.row>this.$cursorRow){var r=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&r&&r.start.row==t[n-1].row))break;i=t[n-1]}i.element.className="ace_gutter-active-line "+i.element.className,this.$cursorCell=i;break}}}}},this.scrollLines=function(e){var t=this.config;if(this.config=e,this.$updateCursorRow(),this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),i=this.oldLastRow;if(this.oldLastRow=n,!t||i0;r--)this.$lines.shift();if(i>n)for(r=this.session.getFoldedRowCount(n+1,i);r>0;r--)this.$lines.pop();e.firstRowi&&this.$lines.push(this.$renderLines(e,i+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){for(var i=[],r=t,s=this.session.getNextFoldLine(r),o=s?s.start.row:1/0;r>o&&(r=s.end.row+1,o=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),!(r>n);){var a=this.$lines.createCell(r,e,this.session,c);this.$renderCell(a,e,s,r),i.push(a),r++}return i},this.$renderCell=function(e,t,n,r){var s=e.element,o=this.session,a=s.childNodes[0],l=s.childNodes[1],c=o.$firstLineNumber,u=o.$breakpoints,h=o.$decorations,d=o.gutterRenderer||this.$renderer,m=this.$showFoldWidgets&&o.foldWidgets,p=n?n.start.row:Number.MAX_VALUE,g="ace_gutter-cell ";if(this.$highlightGutterLine&&(r==this.$cursorRow||n&&r=p&&this.$cursorRow<=n.end.row)&&(g+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),u[r]&&(g+=u[r]),h[r]&&(g+=h[r]),this.$annotations[r]&&(g+=this.$annotations[r].className),s.className!=g&&(s.className=g),m){var f=m[r];null==f&&(f=m[r]=o.getFoldWidget(r))}if(f){g="ace_fold-widget ace_"+f,"start"==f&&r==p&&rn.right-t.right?"foldWidgets":void 0}}).call(l.prototype),t.Gutter=l})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../range").Range,r=e("../lib/dom"),s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=-1!=this.i&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(e){var t;for(var n in this.config=e,this.i=0,this.markers){var i=this.markers[n];if(i.range){var r=i.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var s=this.$getTop(r.start.row,e),o=this.$padding+r.start.column*e.characterWidth;i.renderer(t,r,o,s,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,r,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,r,i.clazz,e):r.isMultiLine()?"text"==i.type?this.drawTextMarker(t,r,i.clazz,e):this.drawMultiLineMarker(t,r,i.clazz,e):this.drawSingleLineMarker(t,r,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}if(-1!=this.i)for(;this.id?4:0)|(c==l?8:0)),r,c==l?0:1,s)},this.drawMultiLineMarker=function(e,t,n,i,r){var s=this.$padding,o=i.lineHeight,a=this.$getTop(t.start.row,i),l=s+t.start.column*i.characterWidth;if(r=r||"",this.session.$bidiHandler.isBidiRow(t.start.row)?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,n+" ace_br1 ace_start",i,null,r)):this.elt(n+" ace_br1 ace_start","height:"+o+"px;right:0;top:"+a+"px;left:"+l+"px;"+(r||"")),this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,n+" ace_br12",i,null,r)}else{a=this.$getTop(t.end.row,i);var u=t.end.column*i.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;width:"+u+"px;top:"+a+"px;left:"+s+"px;"+(r||""))}if(!((o=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(h?" ace_br"+h:""),"height:"+o+"px;right:0;top:"+a+"px;left:"+s+"px;"+(r||""))}},this.drawSingleLineMarker=function(e,t,n,i,r,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,i,r,s);var o=i.lineHeight,a=(t.end.column+(r||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;this.elt(n,"height:"+o+"px;width:"+a+"px;top:"+l+"px;left:"+c+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,i,r,s){var o=i.lineHeight,a=this.$getTop(t.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach((function(e){this.elt(n,"height:"+o+"px;width:"+e.width+(r||0)+"px;top:"+a+"px;left:"+(l+e.left)+"px;"+(s||""))}),this)},this.drawFullLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,i)-s),this.elt(n,"height:"+o+"px;top:"+s+"px;left:0;right:0;"+(r||""))},this.drawScreenLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;this.elt(n,"height:"+o+"px;top:"+s+"px;left:0;right:0;"+(r||""))}}).call(s.prototype),t.Marker=s})),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,a=e("../lib/event_emitter").EventEmitter,l=function(e){this.dom=r,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){i.implement(this,a),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t="\n"==e.getNewLineCharacter()&&"windows"!=e.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;nu&&(a=l.end.row+1,u=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>r);){var h=s[o++];if(h){this.dom.removeChildren(h),this.$renderLine(h,a,a==u&&l),c&&(h.style.top=this.$lines.computeLineTop(a,e,this.session)+"px");var d=e.lineHeight*this.session.getRowLength(a)+"px";h.style.height!=d&&(c=!0,h.style.height=d)}a++}if(c)for(;o0;r--)this.$lines.shift();if(t.lastRow>e.lastRow)for(r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){for(var i=[],s=t,o=this.session.getNextFoldLine(s),a=o?o.start.row:1/0;s>a&&(s=o.end.row+1,a=(o=this.session.getNextFoldLine(s,o))?o.start.row:1/0),!(s>n);){var l=this.$lines.createCell(s,e,this.session),c=l.element;this.dom.removeChildren(c),r.setStyle(c.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),r.setStyle(c.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(c,s,s==a&&o),this.$useLineGroups()?c.className="ace_line_group":c.className="ace_line",i.push(l),s++}return i},this.update=function(e){this.$lines.moveContainer(e),this.config=e;for(var t=e.firstRow,n=e.lastRow,i=this.$lines;i.getLength();)i.pop();i.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){for(var r,o=this,a=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,l=this.dom.createFragment(this.element),c=0;r=a.exec(i);){var u=r[1],h=r[2],d=r[3],m=r[4],p=r[5];if(o.showInvisibles||!h){var g=c!=r.index?i.slice(c,r.index):"";if(c=r.index+r[0].length,g&&l.appendChild(this.dom.createTextNode(g,this.element)),u){var f=o.session.getScreenTabSize(t+r.index);l.appendChild(o.$tabStrings[f].cloneNode(!0)),t+=f-1}else h?o.showInvisibles?((v=this.dom.createElement("span")).className="ace_invisible ace_invisible_space",v.textContent=s.stringRepeat(o.SPACE_CHAR,h.length),l.appendChild(v)):l.appendChild(this.com.createTextNode(h,this.element)):d?((v=this.dom.createElement("span")).className="ace_invisible ace_invisible_space ace_invalid",v.textContent=s.stringRepeat(o.SPACE_CHAR,d.length),l.appendChild(v)):m?(t+=1,(v=this.dom.createElement("span")).style.width=2*o.config.characterWidth+"px",v.className=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",v.textContent=o.showInvisibles?o.SPACE_CHAR:m,l.appendChild(v)):p&&(t+=1,(v=this.dom.createElement("span")).style.width=2*o.config.characterWidth+"px",v.className="ace_cjk",v.textContent=p,l.appendChild(v))}}if(l.appendChild(this.dom.createTextNode(c?i.slice(c):i,this.element)),this.$textToken[n.type])e.appendChild(l);else{var E="ace_"+n.type.replace(/\./g," ace_"),v=this.dom.createElement("span");"fold"==n.type&&(v.style.width=n.value.length*this.config.characterWidth+"px"),v.className=E,v.appendChild(l),e.appendChild(v)}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);if(i<=0||i>=n)return t;if(" "==t[0]){for(var r=(i-=i%this.tabSize)/this.tabSize,s=0;s=o;)a=this.$renderToken(l,a,u,h.substring(0,o-i)),h=h.substring(o-i),i=o,l=this.$createLineElement(),e.appendChild(l),l.appendChild(this.dom.createTextNode(s.stringRepeat(" ",n.indent),this.element)),a=0,o=n[++r]||Number.MAX_VALUE;0!=h.length&&(i+=h.length,a=this.$renderToken(l,a,u,h))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(l,a,null,"",!0)},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],r=i.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(n=this.$renderToken(e,n,i,r));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,i,r);n=this.$renderToken(e,n,i,r)}},this.$renderOverflowMessage=function(e,t,n,i,r){n&&this.$renderToken(e,t,n,i.slice(0,this.MAX_LINE_LENGTH-t));var s=this.dom.createElement("span");s.className="ace_inline_button ace_keyword ace_toggle_wrap",s.textContent=r?"":"",e.appendChild(s)},this.$renderLine=function(e,t,n){if(n||0==n||(n=this.session.getFoldLine(t)),n)var i=this.$getFoldLineTokens(t,n);else i=this.session.getTokens(t);var r=e;if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?(this.$renderWrappedLine(e,i,s),r=e.lastChild):(r=e,this.$useLineGroups()&&(r=this.$createLineElement(),e.appendChild(r)),this.$renderSimpleLine(r,i))}else this.$useLineGroups()&&(r=this.$createLineElement(),e.appendChild(r));if(this.showInvisibles&&r){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,r.appendChild(o)}},this.$getFoldLineTokens=function(e,t){var n=this.session,i=[],r=n.getTokens(e);return t.walk((function(e,t,s,o,a){null!=e?i.push({type:"fold",value:e}):(a&&(r=n.getTokens(t)),r.length&&function(e,t,n){for(var r=0,s=0;s+e[r].value.lengthn-t&&(o=o.substring(0,n-t)),i.push({type:e[r].type,value:o}),s=t+o.length,r+=1);sn?i.push({type:e[r].type,value:o.substring(0,n-s)}):i.push(e[r]),s+=o.length,r+=1}}(r,o,s))}),t.end.row,this.session.getLine(t.end.row).length),i},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(l.prototype),t.Text=l})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)i.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){for(var e=this.cursors,t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){i.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,i.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=i.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&i.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&setTimeout(function(){i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this)),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout((function(){e(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){e(!0),t()}),this.blinkInterval),t()}else this.$stopCssAnimation()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)){var a=this.cursors[r++]||this.addCursor(),l=a.style;this.drawCursor?this.drawCursor(a,o,e,t[n],this.session):this.isCursorInView(o,e)?(i.setStyle(l,"display","block"),i.translate(a,o.left,o.top),i.setStyle(l,"width",Math.round(e.characterWidth)+"px"),i.setStyle(l,"height",e.lineHeight+"px")):i.setStyle(l,"display","none")}}for(;this.cursors.length>r;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,a=32768,l=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){i.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(l.prototype);var c=function(e,t){l.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};i.inherits(c,l),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>a?(this.coeff=a/e,e=a):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(c.prototype);var u=function(e,t){l.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(u,l),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(u.prototype),t.ScrollBar=c,t.ScrollBarV=c,t.ScrollBarH=u,t.VScrollBar=c,t.HScrollBar=u})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(e,t,n){"use strict";var i=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;if(t&&(i.blockIdle(100),n.changes=0,n.onRender(t)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(r.prototype),t.RenderLoop=r})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],(function(e,t,n){var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),a=e("../lib/useragent"),l=e("../lib/event_emitter").EventEmitter,c=256,u="function"==typeof ResizeObserver,h=200,d=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",c),this.$characterSize={width:0,height:0},u?this.$addObserver():this.checkForSizeChanges()};(function(){i.implement(this,l),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",a.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){if(void 0===e&&(e=this.$measureSizes()),e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver((function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/c})})),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle((function t(){e.checkForSizeChanges(),o.onIdle(t,500)}),500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/c};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=s.stringRepeat(e,c),this.$main.getBoundingClientRect().width/c},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=r.buildDom([e(0,0),e(h,0),e(0,h),e(h,h)],this.el)},this.transformCoordinates=function(e,t){function n(e,t,n){var i=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/i,(+e[1]*n[0]-e[0]*n[1])/i]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function r(e,t){return[e[0]+t[0],e[1]+t[1]]}function s(e,t){return[e*t[0],e*t[1]]}function o(e){var t=e.getBoundingClientRect();return[t.left,t.top]}e&&(e=s(1/this.$getZoom(this.el),e)),this.els||this.$initTransformMeasureNodes();var a=o(this.els[0]),l=o(this.els[1]),c=o(this.els[2]),u=o(this.els[3]),d=n(i(u,l),i(u,c),i(r(l,c),r(u,a))),m=s(1+d[0],i(l,a)),p=s(1+d[1],i(c,a));if(t){var g=t,f=d[0]*g[0]/h+d[1]*g[1]/h+1,E=r(s(g[0],m),s(g[1],p));return r(s(1/f/h,E),a)}var v=i(e,a),_=n(i(m,s(d[0],v)),i(p,s(d[1],v)),v);return s(h,_)}}).call(d.prototype)})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,d=e("./renderloop").RenderLoop,m=e("./layer/font_metrics").FontMetrics,p=e("./lib/event_emitter").EventEmitter,g='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;perspective: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);opacity: 0.7;transform-origin: left;text-indent: 10px;}',f=e("./lib/useragent"),E=f.isIE;r.importCssString(g,"ace_editor.css");var v=function(e,t){var n=this;this.container=e||r.createElement("div"),r.addCssClass(this.container,"ace_editor"),r.HI_DPI&&r.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var i=this.$textLayer=new l(this.content);this.canvas=i.element,this.$markerFront=new a(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",(function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)})),this.scrollBarH.addEventListener("scroll",(function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new m(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",(function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!f.isIOS,this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._signal("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,p),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),r.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;i||(i=r.clientHeight||r.scrollHeight),n||(n=r.clientWidth||r.scrollWidth);var s=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var s=0,o=this.$size,a={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};if(i&&(e||o.height!=i)&&(o.height=i,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL),n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,r.setStyle(this.scrollBarH.element.style,"left",t+"px"),r.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),r.setStyle(this.$gutter.style,"left",this.margin.left+"px");var l=this.scrollBarV.getWidth()+"px";r.setStyle(this.scrollBarH.element.style,"right",l),r.setStyle(this.scroller.style,"right",l),r.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(s|=this.CHANGE_FULL)}return o.$dirty=!n||!i,s&&this._signal("resize",a),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var e=this.textarea.style,t=this.$composition;if(this.$keepTextAreaAtCursor||t){var n=this.$cursorLayer.$pixelPos;if(n){t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var i=this.layerConfig,s=n.top,o=n.left;s-=i.offset;var a=t&&t.useTextareaForIME?this.lineHeight:E?0:1;if(s<0||s>i.height-a)r.translate(this.textarea,0,0);else{var l=1,c=this.$size.height-a;if(t)if(t.useTextareaForIME){var u=this.textarea.value;l=this.characterWidth*this.session.$getStringScreenWidth(u)[0]}else s+=this.lineHeight+2;else s+=this.lineHeight;(o-=this.scrollLeft)>this.$size.scrollerWidth-l&&(o=this.$size.scrollerWidth-l),o+=this.gutterWidth+this.margin.left,r.setStyle(e,"height",a+"px"),r.setStyle(e,"width",l+"px"),r.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-l),Math.min(s,c))}}}else r.translate(this.textarea,-100,0)}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.setMargin=function(e,t,n,i){var r=this.margin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig()|this.$loop.clear(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),r.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";r.setStyle(this.content.style,"width",s),r.setStyle(this.content.style,"height",o)}if(e&this.CHANGE_H_SCROLL&&(r.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=!(n<=2*this.lineHeight)&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var r=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,r=this.$getLongestLine(),s=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-r-2*this.$padding<0),o=this.$horizScroll!==s;o&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,r+2*this.$padding-t.scrollerWidth+u.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>u.top),d=a!==h;d&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var m,p,g=this.scrollTop%this.lineHeight,f=Math.ceil(l/this.lineHeight)-1,E=Math.max(0,Math.round((this.scrollTop-g)/this.lineHeight)),v=E+f,_=this.lineHeight;E=e.screenToDocumentRow(E,0);var C=e.getFoldLine(E);C&&(E=C.start.row),m=e.documentToScreenRow(E,0),p=e.getRowLength(E)*_,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(v)*_+p,g=this.scrollTop-m*_;var A=0;return(this.layerConfig.width!=r||o)&&(A=this.CHANGE_H_SCROLL),(o||d)&&(A|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(r=this.$getLongestLine())),this.layerConfig={width:r,padding:this.$padding,firstRow:E,firstRowScreen:m,lastRow:v,lineHeight:_,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:g,gutterOffset:_?Math.max(0,Math.ceil((g+t.height-t.scrollerHeight)/_)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(r-this.$padding),A},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(e),r=i.left,s=i.top,o=n&&n.top||0,a=n&&n.bottom||0,l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+o>s?(t&&l+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),0===s&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):l+this.$size.scrollerHeight-ar?(r=1-this.scrollMargin.top||t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var r=e+this.scrollLeft-n.left-this.$padding,s=r/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),a=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:a,side:s-a>0?1:-1,offsetX:r}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var r=e+this.scrollLeft-n.left-this.$padding,s=r/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),a=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(a,Math.max(o,0),r)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),r=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),s=i.row*this.lineHeight;return{pageX:n.left+r-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),r.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display="")},this.addToken=function(e,t,n,i){var r=this.session;r.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=r.getTokens(n);if(null==i)o.push(s);else for(var a=0,l=0;l50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype),t.UIWorkerClient=function(e,t,n){var i=null,r=!1,a=Object.create(s),c=[],u=new l({messageBuffer:c,terminate:function(){},postMessage:function(e){c.push(e),i&&(r?setTimeout(h):h())}});u.setEmitSync=function(e){r=e};var h=function(){var e=c.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};return a.postMessage=function(e){u.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],(function(e){for(i=new e[n](a);c.length;)h()})),u},t.WorkerClient=l,t.createWorker=a})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(e,t,n){"use strict";var i=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,i,r,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){o.onCursorChange()}))},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,r),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=n.addMarker(new i(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)})),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach((function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)}))}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=n),r&&!this.session.$fromUndo)if("insert"===e.action)for(var o=this.others.length-1;o>=0;o--){var a={row:(l=this.others[o]).row,column:l.column+s};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(o=this.others.length-1;o>=0;o--){var l;a={row:(l=this.others[o]).row,column:l.column+s},this.doc.remove(new i(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,r){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),r,null,!1)};n(this.pos,this.mainClass);for(var r=this.others.length;r--;)n(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{n=this.getRange();var i=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(i)var a=n.end,l=n.start;else a=n.start,l=n.end;return this.addRange(r.fromPoints(l,l)),void this.addRange(r.fromPoints(a,a))}var c=[],u=this.getLineRange(s,!0);u.start.column=n.start.column,c.push(u);for(var h=s+1;h1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor);this.rectangularRangeBlock(i,s).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],s=e.column0;)v--;if(v>0)for(var _=0;i[_].isEmpty();)_++;for(var C=v;C>=_;C--)i[C].isEmpty()&&i.splice(C,1)}return i}}.call(s.prototype);var d=e("./editor").Editor;function m(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(c.defaultCommands),function(e){if(e.textInput){var t=e.textInput.getElement(),n=!1;a.addListener(t,"keydown",(function(t){var r=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&r?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&i()})),a.addListener(t,"keyup",i),a.addListener(t,"blur",i)}function i(t){n&&(e.renderer.setMouseCursor(""),n=!1)}}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var r=t.indexOf(i);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,r=n&&n.keepOrder,o=1==n||n&&n.$byLines,a=this.session,l=this.selection,c=l.rangeList,u=(r?l:c).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=l._eventRegistry;l._eventRegistry={};var d=new s(a);this.inVirtualSelectionMode=!0;for(var m=u.length;m--;){if(o)for(;m>0&&u[m].start.row==u[m-1].end.row;)m--;d.fromOrientedRange(u[m]),d.index=m,this.selection=a.selection=d;var p=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===p||(i=p),d.toOrientedRange(u[m])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=h,l.mergeOverlappingRanges(),l.ranges[0]&&l.fromOrientedRange(l.ranges[0]);var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;io&&(o=n.column),iu?e.insert(i,l.stringRepeat(" ",s-u)):e.remove(new r(i.row,i.column,i.row,i.column-s+u)),t.start.column=t.end.column=o,t.start.row=t.end.row=i.row,t.cursor=t.end})),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,d=u.end.row,m=h==d;if(m){var p,g=this.session.getLength();do{p=this.session.getLine(d)}while(/[=:]/.test(p)&&++d0);h<0&&(h=0),d>=g&&(d=g-1)}var f=this.session.removeFullLines(h,d);f=this.$reAlignText(f,m),this.session.insert({row:h,column:0},f.join("\n")+"\n"),m||(u.start.column=0,u.end.column=f[f.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(e,t){var n,i,r,s=!0,o=!0;return e.map((function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==n?(n=t[1].length,i=t[2].length,r=t[3].length,t):(n+i+r!=t[1].length+t[2].length+t[3].length&&(o=!1),n!=t[1].length&&(s=!1),n>t[1].length&&(n=t[1].length),it[3].length&&(r=t[3].length),t):[e]})).map(t?c:s?o?function(e){return e[2]?a(n+i-e[2].length)+e[2]+a(r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(n)+e[2]+a(r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(n)+e[2]+a(i-e[2].length+r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var r=/\S/,s=e.getLine(t),o=s.search(r);if(-1!=o){for(var a=n||s.length,l=e.getLength(),c=t,u=t;++tc){var m=e.getLine(u).length;return new i(c,a,u,m)}}},this.openingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r+1},a=e.$findClosingBracket(t,o,s);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>o.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(o,a)}},this.closingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r},a=e.$findOpeningBracket(t,o);if(a)return a.column++,o.column--,i.fromPoints(a,o)}}).call(r.prototype)})),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate",e("../lib/dom").importCssString(t.cssText,t.cssClass)})),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],(function(e,t,n){"use strict";e("./lib/oop");var i=e("./lib/dom");function r(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}e("./range").Range,function(){this.getRowLength=function(e){var t;return t=this.lineWidgets&&this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach((function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)})),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach((function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))}))}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,r=i.start.row,s=i.end.row,o="add"==e.action,a=r+1;a0&&!i[r];)r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=r;o<=s;o++){var a=i[o];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}.call(r.prototype),t.LineWidgets=r})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],(function(e,t,n){"use strict";var i=e("../line_widgets").LineWidgets,r=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(e));var o=e.getCursorPosition(),a=o.row,l=n.widgetManager.getWidgetsAtRow(a).filter((function(e){return"errorMarker"==e.type}))[0];l?l.destroy():a-=t;var c,u=function(e,t,n){var i=e.getAnnotations().sort(s.comparePoints);if(i.length){var r=function(e,t,n){for(var i=0,r=e.length-1;i<=r;){var s=i+r>>1,o=n(t,e[s]);if(o>0)i=s+1;else{if(!(o<0))return s;r=s-1}}return-(i+1)}(i,{row:t,column:-1},s.comparePoints);r<0&&(r=-r-1),r>=i.length?r=n>0?0:i.length-1:0===r&&n<0&&(r=i.length-1);var o=i[r];if(o&&n){if(o.row===t){do{o=i[r+=n]}while(o&&o.row===t);if(!o)return i.slice()}var a=[];t=o.row;do{a[n<0?"unshift":"push"](o),o=i[r+=n]}while(o&&o.row==t);return a.length&&a}}}(n,a,t);if(u){var h=u[0];o.column=(h.pos&&"number"!=typeof h.column?h.pos.sc:h.column)||0,o.row=h.row,c=e.renderer.$gutterLayer.$annotations[o.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(o.row),e.selection.moveToPosition(o);var d={row:o.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div"),type:"errorMarker"},m=d.el.appendChild(r.createElement("div")),p=d.el.appendChild(r.createElement("div"));p.className="error_widget_arrow "+c.className;var g=e.renderer.$cursorLayer.getPixelPosition(o).left;p.style.left=g+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",m.className="error_widget "+c.className,m.innerHTML=c.text.join("
"),m.appendChild(r.createElement("div"));var f=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(f),n.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(f),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},r.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")})),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],(function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),s=e("./lib/event"),o=e("./range").Range,a=e("./editor").Editor,l=e("./edit_session").EditSession,c=e("./undomanager").UndoManager,u=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.define=n.amdD,t.edit=function(e,n){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof a)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var l=e;o=l.value,e=r.createElement("pre"),l.parentNode.replaceChild(e,l)}else e&&(o=e.textContent,e.innerHTML="");var c=t.createEditSession(o),h=new a(new u(e),c,n),d={document:c,editor:h,onResize:h.resize.bind(h,null)};return l&&(d.textarea=l),s.addListener(window,"resize",d.onResize),h.on("destroy",(function(){s.removeListener(window,"resize",d.onResize),d.editor.container.env=null})),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var n=new l(e,t);return n.setUndoManager(new c),n},t.Range=o,t.Editor=a,t.EditSession=l,t.UndoManager=c,t.VirtualRenderer=u,t.version=t.config.version})),ace.require(["ace/ace"],(function(t){for(var n in t&&(t.config.init(!0),t.define=ace.define),window.ace||(window.ace=t),t)t.hasOwnProperty(n)&&(window.ace[n]=t[n]);window.ace.default=window.ace,e&&(e.exports=window.ace)})),e.exports={ace}},655:(e,t,n)=>{"use strict";var i=n(379),r=n.n(i),s=n(795),o=n.n(s),a=n(569),l=n.n(a),c=n(565),u=n.n(c),h=n(216),d=n.n(h),m=n(589),p=n.n(m),g=n(827),f={};f.styleTagTransform=p(),f.setAttributes=u(),f.insert=l().bind(null,"html"),f.domAPI=o(),f.insertStyleElement=d(),r()(g.Z,f),g.Z&&g.Z.locals&&g.Z.locals},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,i=0;i{"use strict";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var s=n.sourceMap;s&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},986:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EmbeddedFrontend:()=>qt,Spector:()=>Zt});class i{static isBuildableProgram(e){return!!e&&!!e[this.rebuildProgramFunctionName]}static rebuildProgram(e,t,n,i,r){this.isBuildableProgram(e)&&e[this.rebuildProgramFunctionName](t,n,i,r)}}var r;i.rebuildProgramFunctionName="__SPECTOR_rebuildProgram",function(e){e[e.noLog=0]="noLog",e[e.error=1]="error",e[e.warning=2]="warning",e[e.info=3]="info"}(r||(r={}));class s{static error(e,...t){this.level>0&&console.error(e,t)}static warn(e,...t){this.level>1&&console.warn(e,t)}static info(e,...t){this.level>2&&console.log(e,t)}}s.level=r.warning;class o{constructor(){this.callbacks=[],this.counter=-1}add(e,t){return this.counter++,t&&(e=e.bind(t)),this.callbacks[this.counter]=e,this.counter}remove(e){delete this.callbacks[e]}clear(){this.callbacks={}}trigger(e){for(const t in this.callbacks)this.callbacks.hasOwnProperty(t)&&this.callbacks[t](e)}}class a{constructor(){if(window.performance&&window.performance.now)this.nowFunction=this.dateBasedPerformanceNow.bind(this);else{const e=new Date;this.nowFunction=e.getTime.bind(e)}}dateBasedPerformanceNow(){return performance.timing.navigationStart+performance.now()}static get now(){return a.instance.nowFunction()}}a.instance=new a;class l{constructor(e){this.options=e}appendAnalysis(e){e.analyses=e.analyses||[];const t=this.getAnalysis(e);e.analyses.push(t)}getAnalysis(e){const t={analyserName:this.analyserName};return this.appendToAnalysis(e,t),t}}class c extends l{get analyserName(){return c.analyserName}appendToAnalysis(e,t){if(!e.commands)return;const n={};for(const t of e.commands)n[t.name]=n[t.name]||0,n[t.name]++;const i=Object.keys(n).map((e=>[e,n[e]]));i.sort(((e,t)=>{const n=t[1]-e[1];return 0===n?e[0].localeCompare(t[0]):n}));for(const e of i)t[e[0]]=e[1]}}c.analyserName="Commands";const u=["drawArrays","drawElements","drawArraysInstanced","drawArraysInstancedANGLE","drawElementsInstanced","drawElementsInstancedANGLE","drawRangeElements","multiDrawArraysWEBGL","multiDrawElementsWEBGL","multiDrawArraysInstancedWEBGL","multiDrawElementsInstancedWEBGL","multiDrawArraysInstancedBaseInstanceWEBGL","multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL","drawArraysInstancedBaseInstanceWEBGL","drawElementsInstancedBaseVertexBaseInstanceWEBGL"];class h extends l{get analyserName(){return h.analyserName}appendToAnalysis(e,t){if(e.commands){t.total=e.commands.length,t.draw=0,t.clear=0;for(const n of e.commands)"clear"===n.name?t.clear++:u.indexOf(n.name)>-1&&t.draw++}}}h.analyserName="CommandsSummary";class d{static isWebGlConstant(e){return null!==p[e]&&void 0!==p[e]}static stringifyWebGlConstant(e,t){if(null==e)return"";if(0===e){return this.zeroMeaningByCommand[t]||"0"}if(1===e){return this.oneMeaningByCommand[t]||"1"}const n=p[e];return n?n.name:e+""}}d.DEPTH_BUFFER_BIT={name:"DEPTH_BUFFER_BIT",value:256,description:"Passed to clear to clear the current depth buffer."},d.STENCIL_BUFFER_BIT={name:"STENCIL_BUFFER_BIT",value:1024,description:"Passed to clear to clear the current stencil buffer."},d.COLOR_BUFFER_BIT={name:"COLOR_BUFFER_BIT",value:16384,description:"Passed to clear to clear the current color buffer."},d.POINTS={name:"POINTS",value:0,description:"Passed to drawElements or drawArrays to draw single points."},d.LINES={name:"LINES",value:1,description:"Passed to drawElements or drawArrays to draw lines. Each vertex connects to the one after it."},d.LINE_LOOP={name:"LINE_LOOP",value:2,description:"Passed to drawElements or drawArrays to draw lines. Each set of two vertices is treated as a separate line segment."},d.LINE_STRIP={name:"LINE_STRIP",value:3,description:"Passed to drawElements or drawArrays to draw a connected group of line segments from the first vertex to the last."},d.TRIANGLES={name:"TRIANGLES",value:4,description:"Passed to drawElements or drawArrays to draw triangles. Each set of three vertices creates a separate triangle."},d.TRIANGLE_STRIP={name:"TRIANGLE_STRIP",value:5,description:"Passed to drawElements or drawArrays to draw a connected group of triangles."},d.TRIANGLE_FAN={name:"TRIANGLE_FAN",value:6,description:"Passed to drawElements or drawArrays to draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan."},d.ZERO={name:"ZERO",value:0,description:"Passed to blendFunc or blendFuncSeparate to turn off a component."},d.ONE={name:"ONE",value:1,description:"Passed to blendFunc or blendFuncSeparate to turn on a component."},d.SRC_COLOR={name:"SRC_COLOR",value:768,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by the source elements color."},d.ONE_MINUS_SRC_COLOR={name:"ONE_MINUS_SRC_COLOR",value:769,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by one minus the source elements color."},d.SRC_ALPHA={name:"SRC_ALPHA",value:770,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by the source's alpha."},d.ONE_MINUS_SRC_ALPHA={name:"ONE_MINUS_SRC_ALPHA",value:771,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by one minus the source's alpha."},d.DST_ALPHA={name:"DST_ALPHA",value:772,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by the destination's alpha."},d.ONE_MINUS_DST_ALPHA={name:"ONE_MINUS_DST_ALPHA",value:773,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by one minus the destination's alpha."},d.DST_COLOR={name:"DST_COLOR",value:774,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by the destination's color."},d.ONE_MINUS_DST_COLOR={name:"ONE_MINUS_DST_COLOR",value:775,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by one minus the destination's color."},d.SRC_ALPHA_SATURATE={name:"SRC_ALPHA_SATURATE",value:776,description:"Passed to blendFunc or blendFuncSeparate to multiply a component by the minimum of source's alpha or one minus the destination's alpha."},d.CONSTANT_COLOR={name:"CONSTANT_COLOR",value:32769,description:"Passed to blendFunc or blendFuncSeparate to specify a constant color blend function."},d.ONE_MINUS_CONSTANT_COLOR={name:"ONE_MINUS_CONSTANT_COLOR",value:32770,description:"Passed to blendFunc or blendFuncSeparate to specify one minus a constant color blend function."},d.CONSTANT_ALPHA={name:"CONSTANT_ALPHA",value:32771,description:"Passed to blendFunc or blendFuncSeparate to specify a constant alpha blend function."},d.ONE_MINUS_CONSTANT_ALPHA={name:"ONE_MINUS_CONSTANT_ALPHA",value:32772,description:"Passed to blendFunc or blendFuncSeparate to specify one minus a constant alpha blend function."},d.FUNC_ADD={name:"FUNC_ADD",value:32774,description:"Passed to blendEquation or blendEquationSeparate to set an addition blend function."},d.FUNC_SUBSTRACT={name:"FUNC_SUBSTRACT",value:32778,description:"Passed to blendEquation or blendEquationSeparate to specify a subtraction blend function (source - destination)."},d.FUNC_REVERSE_SUBTRACT={name:"FUNC_REVERSE_SUBTRACT",value:32779,description:"Passed to blendEquation or blendEquationSeparate to specify a reverse subtraction blend function (destination - source)."},d.BLEND_EQUATION={name:"BLEND_EQUATION",value:32777,description:"Passed to getParameter to get the current RGB blend function."},d.BLEND_EQUATION_RGB={name:"BLEND_EQUATION_RGB",value:32777,description:"Passed to getParameter to get the current RGB blend function. Same as BLEND_EQUATION"},d.BLEND_EQUATION_ALPHA={name:"BLEND_EQUATION_ALPHA",value:34877,description:"Passed to getParameter to get the current alpha blend function. Same as BLEND_EQUATION"},d.BLEND_DST_RGB={name:"BLEND_DST_RGB",value:32968,description:"Passed to getParameter to get the current destination RGB blend function."},d.BLEND_SRC_RGB={name:"BLEND_SRC_RGB",value:32969,description:"Passed to getParameter to get the current destination RGB blend function."},d.BLEND_DST_ALPHA={name:"BLEND_DST_ALPHA",value:32970,description:"Passed to getParameter to get the current destination alpha blend function."},d.BLEND_SRC_ALPHA={name:"BLEND_SRC_ALPHA",value:32971,description:"Passed to getParameter to get the current source alpha blend function."},d.BLEND_COLOR={name:"BLEND_COLOR",value:32773,description:"Passed to getParameter to return a the current blend color."},d.ARRAY_BUFFER_BINDING={name:"ARRAY_BUFFER_BINDING",value:34964,description:"Passed to getParameter to get the array buffer binding."},d.ELEMENT_ARRAY_BUFFER_BINDING={name:"ELEMENT_ARRAY_BUFFER_BINDING",value:34965,description:"Passed to getParameter to get the current element array buffer."},d.LINE_WIDTH={name:"LINE_WIDTH",value:2849,description:"Passed to getParameter to get the current lineWidth (set by the lineWidth method)."},d.ALIASED_POINT_SIZE_RANGE={name:"ALIASED_POINT_SIZE_RANGE",value:33901,description:"Passed to getParameter to get the current size of a point drawn with gl.POINTS"},d.ALIASED_LINE_WIDTH_RANGE={name:"ALIASED_LINE_WIDTH_RANGE",value:33902,description:"Passed to getParameter to get the range of available widths for a line. Returns a length-2 array with the lo value at 0, and hight at 1."},d.CULL_FACE_MODE={name:"CULL_FACE_MODE",value:2885,description:"Passed to getParameter to get the current value of cullFace. Should return FRONT, BACK, or FRONT_AND_BACK"},d.FRONT_FACE={name:"FRONT_FACE",value:2886,description:"Passed to getParameter to determine the current value of frontFace. Should return CW or CCW."},d.DEPTH_RANGE={name:"DEPTH_RANGE",value:2928,description:"Passed to getParameter to return a length-2 array of floats giving the current depth range."},d.DEPTH_WRITEMASK={name:"DEPTH_WRITEMASK",value:2930,description:"Passed to getParameter to determine if the depth write mask is enabled."},d.DEPTH_CLEAR_VALUE={name:"DEPTH_CLEAR_VALUE",value:2931,description:"Passed to getParameter to determine the current depth clear value."},d.DEPTH_FUNC={name:"DEPTH_FUNC",value:2932,description:"Passed to getParameter to get the current depth function. Returns NEVER, ALWAYS, LESS, EQUAL, LEQUAL, GREATER, GEQUAL, or NOTEQUAL."},d.STENCIL_CLEAR_VALUE={name:"STENCIL_CLEAR_VALUE",value:2961,description:"Passed to getParameter to get the value the stencil will be cleared to."},d.STENCIL_FUNC={name:"STENCIL_FUNC",value:2962,description:"Passed to getParameter to get the current stencil function. Returns NEVER, ALWAYS, LESS, EQUAL, LEQUAL, GREATER, GEQUAL, or NOTEQUAL."},d.STENCIL_FAIL={name:"STENCIL_FAIL",value:2964,description:"Passed to getParameter to get the current stencil fail function. Should return KEEP, REPLACE, INCR, DECR, INVERT, INCR_WRAP, or DECR_WRAP."},d.STENCIL_PASS_DEPTH_FAIL={name:"STENCIL_PASS_DEPTH_FAIL",value:2965,description:"Passed to getParameter to get the current stencil fail function should the depth buffer test fail. Should return KEEP, REPLACE, INCR, DECR, INVERT, INCR_WRAP, or DECR_WRAP."},d.STENCIL_PASS_DEPTH_PASS={name:"STENCIL_PASS_DEPTH_PASS",value:2966,description:"Passed to getParameter to get the current stencil fail function should the depth buffer test pass. Should return KEEP, REPLACE, INCR, DECR, INVERT, INCR_WRAP, or DECR_WRAP."},d.STENCIL_REF={name:"STENCIL_REF",value:2967,description:"Passed to getParameter to get the reference value used for stencil tests."},d.STENCIL_VALUE_MASK={name:"STENCIL_VALUE_MASK",value:2963,description:" "},d.STENCIL_WRITEMASK={name:"STENCIL_WRITEMASK",value:2968,description:" "},d.STENCIL_BACK_FUNC={name:"STENCIL_BACK_FUNC",value:34816,description:" "},d.STENCIL_BACK_FAIL={name:"STENCIL_BACK_FAIL",value:34817,description:" "},d.STENCIL_BACK_PASS_DEPTH_FAIL={name:"STENCIL_BACK_PASS_DEPTH_FAIL",value:34818,description:" "},d.STENCIL_BACK_PASS_DEPTH_PASS={name:"STENCIL_BACK_PASS_DEPTH_PASS",value:34819,description:" "},d.STENCIL_BACK_REF={name:"STENCIL_BACK_REF",value:36003,description:" "},d.STENCIL_BACK_VALUE_MASK={name:"STENCIL_BACK_VALUE_MASK",value:36004,description:" "},d.STENCIL_BACK_WRITEMASK={name:"STENCIL_BACK_WRITEMASK",value:36005,description:" "},d.VIEWPORT={name:"VIEWPORT",value:2978,description:"Returns an Int32Array with four elements for the current viewport dimensions."},d.SCISSOR_BOX={name:"SCISSOR_BOX",value:3088,description:"Returns an Int32Array with four elements for the current scissor box dimensions."},d.COLOR_CLEAR_VALUE={name:"COLOR_CLEAR_VALUE",value:3106,description:" "},d.COLOR_WRITEMASK={name:"COLOR_WRITEMASK",value:3107,description:" "},d.UNPACK_ALIGNMENT={name:"UNPACK_ALIGNMENT",value:3317,description:" "},d.PACK_ALIGNMENT={name:"PACK_ALIGNMENT",value:3333,description:" "},d.MAX_TEXTURE_SIZE={name:"MAX_TEXTURE_SIZE",value:3379,description:" "},d.MAX_VIEWPORT_DIMS={name:"MAX_VIEWPORT_DIMS",value:3386,description:" "},d.SUBPIXEL_BITS={name:"SUBPIXEL_BITS",value:3408,description:" "},d.RED_BITS={name:"RED_BITS",value:3410,description:" "},d.GREEN_BITS={name:"GREEN_BITS",value:3411,description:" "},d.BLUE_BITS={name:"BLUE_BITS",value:3412,description:" "},d.ALPHA_BITS={name:"ALPHA_BITS",value:3413,description:" "},d.DEPTH_BITS={name:"DEPTH_BITS",value:3414,description:" "},d.STENCIL_BITS={name:"STENCIL_BITS",value:3415,description:" "},d.POLYGON_OFFSET_UNITS={name:"POLYGON_OFFSET_UNITS",value:10752,description:" "},d.POLYGON_OFFSET_FACTOR={name:"POLYGON_OFFSET_FACTOR",value:32824,description:" "},d.TEXTURE_BINDING_2D={name:"TEXTURE_BINDING_2D",value:32873,description:" "},d.SAMPLE_BUFFERS={name:"SAMPLE_BUFFERS",value:32936,description:" "},d.SAMPLES={name:"SAMPLES",value:32937,description:" "},d.SAMPLE_COVERAGE_VALUE={name:"SAMPLE_COVERAGE_VALUE",value:32938,description:" "},d.SAMPLE_COVERAGE_INVERT={name:"SAMPLE_COVERAGE_INVERT",value:32939,description:" "},d.COMPRESSED_TEXTURE_FORMATS={name:"COMPRESSED_TEXTURE_FORMATS",value:34467,description:" "},d.VENDOR={name:"VENDOR",value:7936,description:" "},d.RENDERER={name:"RENDERER",value:7937,description:" "},d.VERSION={name:"VERSION",value:7938,description:" "},d.IMPLEMENTATION_COLOR_READ_TYPE={name:"IMPLEMENTATION_COLOR_READ_TYPE",value:35738,description:" "},d.IMPLEMENTATION_COLOR_READ_FORMAT={name:"IMPLEMENTATION_COLOR_READ_FORMAT",value:35739,description:" "},d.BROWSER_DEFAULT_WEBGL={name:"BROWSER_DEFAULT_WEBGL",value:37444,description:" "},d.STATIC_DRAW={name:"STATIC_DRAW",value:35044,description:"Passed to bufferData as a hint about whether the contents of the buffer are likely to be used often and not change often."},d.STREAM_DRAW={name:"STREAM_DRAW",value:35040,description:"Passed to bufferData as a hint about whether the contents of the buffer are likely to not be used often."},d.DYNAMIC_DRAW={name:"DYNAMIC_DRAW",value:35048,description:"Passed to bufferData as a hint about whether the contents of the buffer are likely to be used often and change often."},d.ARRAY_BUFFER={name:"ARRAY_BUFFER",value:34962,description:"Passed to bindBuffer or bufferData to specify the type of buffer being used."},d.ELEMENT_ARRAY_BUFFER={name:"ELEMENT_ARRAY_BUFFER",value:34963,description:"Passed to bindBuffer or bufferData to specify the type of buffer being used."},d.BUFFER_SIZE={name:"BUFFER_SIZE",value:34660,description:"Passed to getBufferParameter to get a buffer's size."},d.BUFFER_USAGE={name:"BUFFER_USAGE",value:34661,description:"Passed to getBufferParameter to get the hint for the buffer passed in when it was created."},d.CURRENT_VERTEX_ATTRIB={name:"CURRENT_VERTEX_ATTRIB",value:34342,description:"Passed to getVertexAttrib to read back the current vertex attribute."},d.VERTEX_ATTRIB_ARRAY_ENABLED={name:"VERTEX_ATTRIB_ARRAY_ENABLED",value:34338,description:" "},d.VERTEX_ATTRIB_ARRAY_SIZE={name:"VERTEX_ATTRIB_ARRAY_SIZE",value:34339,description:" "},d.VERTEX_ATTRIB_ARRAY_STRIDE={name:"VERTEX_ATTRIB_ARRAY_STRIDE",value:34340,description:" "},d.VERTEX_ATTRIB_ARRAY_TYPE={name:"VERTEX_ATTRIB_ARRAY_TYPE",value:34341,description:" "},d.VERTEX_ATTRIB_ARRAY_NORMALIZED={name:"VERTEX_ATTRIB_ARRAY_NORMALIZED",value:34922,description:" "},d.VERTEX_ATTRIB_ARRAY_POINTER={name:"VERTEX_ATTRIB_ARRAY_POINTER",value:34373,description:" "},d.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING={name:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",value:34975,description:" "},d.CULL_FACE={name:"CULL_FACE",value:2884,description:"Passed to enable/disable to turn on/off culling. Can also be used with getParameter to find the current culling method."},d.FRONT={name:"FRONT",value:1028,description:"Passed to cullFace to specify that only front faces should be drawn."},d.BACK={name:"BACK",value:1029,description:"Passed to cullFace to specify that only back faces should be drawn."},d.FRONT_AND_BACK={name:"FRONT_AND_BACK",value:1032,description:"Passed to cullFace to specify that front and back faces should be drawn."},d.BLEND={name:"BLEND",value:3042,description:"Passed to enable/disable to turn on/off blending. Can also be used with getParameter to find the current blending method."},d.DEPTH_TEST={name:"DEPTH_TEST",value:2929,description:"Passed to enable/disable to turn on/off the depth test. Can also be used with getParameter to query the depth test."},d.DITHER={name:"DITHER",value:3024,description:"Passed to enable/disable to turn on/off dithering. Can also be used with getParameter to find the current dithering method."},d.POLYGON_OFFSET_FILL={name:"POLYGON_OFFSET_FILL",value:32823,description:"Passed to enable/disable to turn on/off the polygon offset. Useful for rendering hidden-line images, decals, and or solids with highlighted edges. Can also be used with getParameter to query the scissor test."},d.SAMPLE_ALPHA_TO_COVERAGE={name:"SAMPLE_ALPHA_TO_COVERAGE",value:32926,description:"Passed to enable/disable to turn on/off the alpha to coverage. Used in multi-sampling alpha channels."},d.SAMPLE_COVERAGE={name:"SAMPLE_COVERAGE",value:32928,description:"Passed to enable/disable to turn on/off the sample coverage. Used in multi-sampling."},d.SCISSOR_TEST={name:"SCISSOR_TEST",value:3089,description:"Passed to enable/disable to turn on/off the scissor test. Can also be used with getParameter to query the scissor test."},d.STENCIL_TEST={name:"STENCIL_TEST",value:2960,description:"Passed to enable/disable to turn on/off the stencil test. Can also be used with getParameter to query the stencil test."},d.NO_ERROR={name:"NO_ERROR",value:0,description:"Returned from getError."},d.INVALID_ENUM={name:"INVALID_ENUM",value:1280,description:"Returned from getError."},d.INVALID_VALUE={name:"INVALID_VALUE",value:1281,description:"Returned from getError."},d.INVALID_OPERATION={name:"INVALID_OPERATION",value:1282,description:"Returned from getError."},d.OUT_OF_MEMORY={name:"OUT_OF_MEMORY",value:1285,description:"Returned from getError."},d.CONTEXT_LOST_WEBGL={name:"CONTEXT_LOST_WEBGL",value:37442,description:"Returned from getError."},d.CW={name:"CW",value:2304,description:"Passed to frontFace to specify the front face of a polygon is drawn in the clockwise direction"},d.CCW={name:"CCW",value:2305,description:"Passed to frontFace to specify the front face of a polygon is drawn in the counter clockwise direction"},d.DONT_CARE={name:"DONT_CARE",value:4352,description:"There is no preference for this behavior."},d.FASTEST={name:"FASTEST",value:4353,description:"The most efficient behavior should be used."},d.NICEST={name:"NICEST",value:4354,description:"The most correct or the highest quality option should be used."},d.GENERATE_MIPMAP_HINT={name:"GENERATE_MIPMAP_HINT",value:33170,description:"Hint for the quality of filtering when generating mipmap images with WebGLRenderingContext.generateMipmap()."},d.BYTE={name:"BYTE",value:5120,description:" "},d.UNSIGNED_BYTE={name:"UNSIGNED_BYTE",value:5121,description:" "},d.SHORT={name:"SHORT",value:5122,description:" "},d.UNSIGNED_SHORT={name:"UNSIGNED_SHORT",value:5123,description:" "},d.INT={name:"INT",value:5124,description:" "},d.UNSIGNED_INT={name:"UNSIGNED_INT",value:5125,description:" "},d.FLOAT={name:"FLOAT",value:5126,description:" "},d.DEPTH_COMPONENT={name:"DEPTH_COMPONENT",value:6402,description:" "},d.ALPHA={name:"ALPHA",value:6406,description:" "},d.RGB={name:"RGB",value:6407,description:" "},d.RGBA={name:"RGBA",value:6408,description:" "},d.LUMINANCE={name:"LUMINANCE",value:6409,description:" "},d.LUMINANCE_ALPHA={name:"LUMINANCE_ALPHA",value:6410,description:" "},d.UNSIGNED_SHORT_4_4_4_4={name:"UNSIGNED_SHORT_4_4_4_4",value:32819,description:" "},d.UNSIGNED_SHORT_5_5_5_1={name:"UNSIGNED_SHORT_5_5_5_1",value:32820,description:" "},d.UNSIGNED_SHORT_5_6_5={name:"UNSIGNED_SHORT_5_6_5",value:33635,description:" "},d.FRAGMENT_SHADER={name:"FRAGMENT_SHADER",value:35632,description:"Passed to createShader to define a fragment shader."},d.VERTEX_SHADER={name:"VERTEX_SHADER",value:35633,description:"Passed to createShader to define a vertex shader"},d.COMPILE_STATUS={name:"COMPILE_STATUS",value:35713,description:"Passed to getShaderParamter to get the status of the compilation. Returns false if the shader was not compiled. You can then query getShaderInfoLog to find the exact error"},d.DELETE_STATUS={name:"DELETE_STATUS",value:35712,description:"Passed to getShaderParamter to determine if a shader was deleted via deleteShader. Returns true if it was, false otherwise."},d.LINK_STATUS={name:"LINK_STATUS",value:35714,description:"Passed to getProgramParameter after calling linkProgram to determine if a program was linked correctly. Returns false if there were errors. Use getProgramInfoLog to find the exact error."},d.VALIDATE_STATUS={name:"VALIDATE_STATUS",value:35715,description:"Passed to getProgramParameter after calling validateProgram to determine if it is valid. Returns false if errors were found."},d.ATTACHED_SHADERS={name:"ATTACHED_SHADERS",value:35717,description:"Passed to getProgramParameter after calling attachShader to determine if the shader was attached correctly. Returns false if errors occurred."},d.ACTIVE_ATTRIBUTES={name:"ACTIVE_ATTRIBUTES",value:35721,description:"Passed to getProgramParameter to get the number of attributes active in a program."},d.ACTIVE_UNIFORMS={name:"ACTIVE_UNIFORMS",value:35718,description:"Passed to getProgramParamter to get the number of uniforms active in a program."},d.MAX_VERTEX_ATTRIBS={name:"MAX_VERTEX_ATTRIBS",value:34921,description:" "},d.MAX_VERTEX_UNIFORM_VECTORS={name:"MAX_VERTEX_UNIFORM_VECTORS",value:36347,description:" "},d.MAX_VARYING_VECTORS={name:"MAX_VARYING_VECTORS",value:36348,description:" "},d.MAX_COMBINED_TEXTURE_IMAGE_UNITS={name:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",value:35661,description:" "},d.MAX_VERTEX_TEXTURE_IMAGE_UNITS={name:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",value:35660,description:" "},d.MAX_TEXTURE_IMAGE_UNITS={name:"MAX_TEXTURE_IMAGE_UNITS",value:34930,description:"Implementation dependent number of maximum texture units. At least 8."},d.MAX_FRAGMENT_UNIFORM_VECTORS={name:"MAX_FRAGMENT_UNIFORM_VECTORS",value:36349,description:" "},d.SHADER_TYPE={name:"SHADER_TYPE",value:35663,description:" "},d.SHADING_LANGUAGE_VERSION={name:"SHADING_LANGUAGE_VERSION",value:35724,description:" "},d.CURRENT_PROGRAM={name:"CURRENT_PROGRAM",value:35725,description:" "},d.NEVER={name:"NEVER",value:512,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will never pass. i.e. Nothing will be drawn."},d.ALWAYS={name:"ALWAYS",value:519,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will always pass. i.e. Pixels will be drawn in the order they are drawn."},d.LESS={name:"LESS",value:513,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than the stored value."},d.EQUAL={name:"EQUAL",value:514,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is equals to the stored value."},d.LEQUAL={name:"LEQUAL",value:515,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than or equal to the stored value."},d.GREATER={name:"GREATER",value:516,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than the stored value."},d.GEQUAL={name:"GEQUAL",value:518,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than or equal to the stored value."},d.NOTEQUAL={name:"NOTEQUAL",value:517,description:"Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is not equal to the stored value."},d.KEEP={name:"KEEP",value:7680,description:" "},d.REPLACE={name:"REPLACE",value:7681,description:" "},d.INCR={name:"INCR",value:7682,description:" "},d.DECR={name:"DECR",value:7683,description:" "},d.INVERT={name:"INVERT",value:5386,description:" "},d.INCR_WRAP={name:"INCR_WRAP",value:34055,description:" "},d.DECR_WRAP={name:"DECR_WRAP",value:34056,description:" "},d.NEAREST={name:"NEAREST",value:9728,description:" "},d.LINEAR={name:"LINEAR",value:9729,description:" "},d.NEAREST_MIPMAP_NEAREST={name:"NEAREST_MIPMAP_NEAREST",value:9984,description:" "},d.LINEAR_MIPMAP_NEAREST={name:"LINEAR_MIPMAP_NEAREST",value:9985,description:" "},d.NEAREST_MIPMAP_LINEAR={name:"NEAREST_MIPMAP_LINEAR",value:9986,description:" "},d.LINEAR_MIPMAP_LINEAR={name:"LINEAR_MIPMAP_LINEAR",value:9987,description:" "},d.TEXTURE_MAG_FILTER={name:"TEXTURE_MAG_FILTER",value:10240,description:" "},d.TEXTURE_MIN_FILTER={name:"TEXTURE_MIN_FILTER",value:10241,description:" "},d.TEXTURE_WRAP_S={name:"TEXTURE_WRAP_S",value:10242,description:" "},d.TEXTURE_WRAP_T={name:"TEXTURE_WRAP_T",value:10243,description:" "},d.TEXTURE_2D={name:"TEXTURE_2D",value:3553,description:" "},d.TEXTURE={name:"TEXTURE",value:5890,description:" "},d.TEXTURE_CUBE_MAP={name:"TEXTURE_CUBE_MAP",value:34067,description:" "},d.TEXTURE_BINDING_CUBE_MAP={name:"TEXTURE_BINDING_CUBE_MAP",value:34068,description:" "},d.TEXTURE_CUBE_MAP_POSITIVE_X={name:"TEXTURE_CUBE_MAP_POSITIVE_X",value:34069,description:" "},d.TEXTURE_CUBE_MAP_NEGATIVE_X={name:"TEXTURE_CUBE_MAP_NEGATIVE_X",value:34070,description:" "},d.TEXTURE_CUBE_MAP_POSITIVE_Y={name:"TEXTURE_CUBE_MAP_POSITIVE_Y",value:34071,description:" "},d.TEXTURE_CUBE_MAP_NEGATIVE_Y={name:"TEXTURE_CUBE_MAP_NEGATIVE_Y",value:34072,description:" "},d.TEXTURE_CUBE_MAP_POSITIVE_Z={name:"TEXTURE_CUBE_MAP_POSITIVE_Z",value:34073,description:" "},d.TEXTURE_CUBE_MAP_NEGATIVE_Z={name:"TEXTURE_CUBE_MAP_NEGATIVE_Z",value:34074,description:" "},d.MAX_CUBE_MAP_TEXTURE_SIZE={name:"MAX_CUBE_MAP_TEXTURE_SIZE",value:34076,description:" "},d.TEXTURE0={name:"TEXTURE0",value:33984,description:"A texture unit."},d.TEXTURE1={name:"TEXTURE1",value:33985,description:"A texture unit."},d.TEXTURE2={name:"TEXTURE2",value:33986,description:"A texture unit."},d.TEXTURE3={name:"TEXTURE3",value:33987,description:"A texture unit."},d.TEXTURE4={name:"TEXTURE4",value:33988,description:"A texture unit."},d.TEXTURE5={name:"TEXTURE5",value:33989,description:"A texture unit."},d.TEXTURE6={name:"TEXTURE6",value:33990,description:"A texture unit."},d.TEXTURE7={name:"TEXTURE7",value:33991,description:"A texture unit."},d.TEXTURE8={name:"TEXTURE8",value:33992,description:"A texture unit."},d.TEXTURE9={name:"TEXTURE9",value:33993,description:"A texture unit."},d.TEXTURE10={name:"TEXTURE10",value:33994,description:"A texture unit."},d.TEXTURE11={name:"TEXTURE11",value:33995,description:"A texture unit."},d.TEXTURE12={name:"TEXTURE12",value:33996,description:"A texture unit."},d.TEXTURE13={name:"TEXTURE13",value:33997,description:"A texture unit."},d.TEXTURE14={name:"TEXTURE14",value:33998,description:"A texture unit."},d.TEXTURE15={name:"TEXTURE15",value:33999,description:"A texture unit."},d.TEXTURE16={name:"TEXTURE16",value:34e3,description:"A texture unit."},d.TEXTURE17={name:"TEXTURE17",value:34001,description:"A texture unit."},d.TEXTURE18={name:"TEXTURE18",value:34002,description:"A texture unit."},d.TEXTURE19={name:"TEXTURE19",value:34003,description:"A texture unit."},d.TEXTURE20={name:"TEXTURE20",value:34004,description:"A texture unit."},d.TEXTURE21={name:"TEXTURE21",value:34005,description:"A texture unit."},d.TEXTURE22={name:"TEXTURE22",value:34006,description:"A texture unit."},d.TEXTURE23={name:"TEXTURE23",value:34007,description:"A texture unit."},d.TEXTURE24={name:"TEXTURE24",value:34008,description:"A texture unit."},d.TEXTURE25={name:"TEXTURE25",value:34009,description:"A texture unit."},d.TEXTURE26={name:"TEXTURE26",value:34010,description:"A texture unit."},d.TEXTURE27={name:"TEXTURE27",value:34011,description:"A texture unit."},d.TEXTURE28={name:"TEXTURE28",value:34012,description:"A texture unit."},d.TEXTURE29={name:"TEXTURE29",value:34013,description:"A texture unit."},d.TEXTURE30={name:"TEXTURE30",value:34014,description:"A texture unit."},d.TEXTURE31={name:"TEXTURE31",value:34015,description:"A texture unit."},d.ACTIVE_TEXTURE={name:"ACTIVE_TEXTURE",value:34016,description:"The current active texture unit."},d.REPEAT={name:"REPEAT",value:10497,description:" "},d.CLAMP_TO_EDGE={name:"CLAMP_TO_EDGE",value:33071,description:" "},d.MIRRORED_REPEAT={name:"MIRRORED_REPEAT",value:33648,description:" "},d.FLOAT_VEC2={name:"FLOAT_VEC2",value:35664,description:" "},d.FLOAT_VEC3={name:"FLOAT_VEC3",value:35665,description:" "},d.FLOAT_VEC4={name:"FLOAT_VEC4",value:35666,description:" "},d.INT_VEC2={name:"INT_VEC2",value:35667,description:" "},d.INT_VEC3={name:"INT_VEC3",value:35668,description:" "},d.INT_VEC4={name:"INT_VEC4",value:35669,description:" "},d.BOOL={name:"BOOL",value:35670,description:" "},d.BOOL_VEC2={name:"BOOL_VEC2",value:35671,description:" "},d.BOOL_VEC3={name:"BOOL_VEC3",value:35672,description:" "},d.BOOL_VEC4={name:"BOOL_VEC4",value:35673,description:" "},d.FLOAT_MAT2={name:"FLOAT_MAT2",value:35674,description:" "},d.FLOAT_MAT3={name:"FLOAT_MAT3",value:35675,description:" "},d.FLOAT_MAT4={name:"FLOAT_MAT4",value:35676,description:" "},d.SAMPLER_2D={name:"SAMPLER_2D",value:35678,description:" "},d.SAMPLER_CUBE={name:"SAMPLER_CUBE",value:35680,description:" "},d.LOW_FLOAT={name:"LOW_FLOAT",value:36336,description:" "},d.MEDIUM_FLOAT={name:"MEDIUM_FLOAT",value:36337,description:" "},d.HIGH_FLOAT={name:"HIGH_FLOAT",value:36338,description:" "},d.LOW_INT={name:"LOW_INT",value:36339,description:" "},d.MEDIUM_INT={name:"MEDIUM_INT",value:36340,description:" "},d.HIGH_INT={name:"HIGH_INT",value:36341,description:" "},d.FRAMEBUFFER={name:"FRAMEBUFFER",value:36160,description:" "},d.RENDERBUFFER={name:"RENDERBUFFER",value:36161,description:" "},d.RGBA4={name:"RGBA4",value:32854,description:" "},d.RGB5_A1={name:"RGB5_A1",value:32855,description:" "},d.RGB565={name:"RGB565",value:36194,description:" "},d.DEPTH_COMPONENT16={name:"DEPTH_COMPONENT16",value:33189,description:" "},d.STENCIL_INDEX={name:"STENCIL_INDEX",value:6401,description:" "},d.STENCIL_INDEX8={name:"STENCIL_INDEX8",value:36168,description:" "},d.DEPTH_STENCIL={name:"DEPTH_STENCIL",value:34041,description:" "},d.RENDERBUFFER_WIDTH={name:"RENDERBUFFER_WIDTH",value:36162,description:" "},d.RENDERBUFFER_HEIGHT={name:"RENDERBUFFER_HEIGHT",value:36163,description:" "},d.RENDERBUFFER_INTERNAL_FORMAT={name:"RENDERBUFFER_INTERNAL_FORMAT",value:36164,description:" "},d.RENDERBUFFER_RED_SIZE={name:"RENDERBUFFER_RED_SIZE",value:36176,description:" "},d.RENDERBUFFER_GREEN_SIZE={name:"RENDERBUFFER_GREEN_SIZE",value:36177,description:" "},d.RENDERBUFFER_BLUE_SIZE={name:"RENDERBUFFER_BLUE_SIZE",value:36178,description:" "},d.RENDERBUFFER_ALPHA_SIZE={name:"RENDERBUFFER_ALPHA_SIZE",value:36179,description:" "},d.RENDERBUFFER_DEPTH_SIZE={name:"RENDERBUFFER_DEPTH_SIZE",value:36180,description:" "},d.RENDERBUFFER_STENCIL_SIZE={name:"RENDERBUFFER_STENCIL_SIZE",value:36181,description:" "},d.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE={name:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",value:36048,description:" "},d.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME={name:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",value:36049,description:" "},d.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL={name:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",value:36050,description:" "},d.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE={name:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",value:36051,description:" "},d.COLOR_ATTACHMENT0={name:"COLOR_ATTACHMENT0",value:36064,description:" "},d.DEPTH_ATTACHMENT={name:"DEPTH_ATTACHMENT",value:36096,description:" "},d.STENCIL_ATTACHMENT={name:"STENCIL_ATTACHMENT",value:36128,description:" "},d.DEPTH_STENCIL_ATTACHMENT={name:"DEPTH_STENCIL_ATTACHMENT",value:33306,description:" "},d.NONE={name:"NONE",value:0,description:" "},d.FRAMEBUFFER_COMPLETE={name:"FRAMEBUFFER_COMPLETE",value:36053,description:" "},d.FRAMEBUFFER_INCOMPLETE_ATTACHMENT={name:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",value:36054,description:" "},d.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT={name:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",value:36055,description:" "},d.FRAMEBUFFER_INCOMPLETE_DIMENSIONS={name:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",value:36057,description:" "},d.FRAMEBUFFER_UNSUPPORTED={name:"FRAMEBUFFER_UNSUPPORTED",value:36061,description:" "},d.FRAMEBUFFER_BINDING={name:"FRAMEBUFFER_BINDING",value:36006,description:" "},d.RENDERBUFFER_BINDING={name:"RENDERBUFFER_BINDING",value:36007,description:" "},d.MAX_RENDERBUFFER_SIZE={name:"MAX_RENDERBUFFER_SIZE",value:34024,description:" "},d.INVALID_FRAMEBUFFER_OPERATION={name:"INVALID_FRAMEBUFFER_OPERATION",value:1286,description:" "},d.UNPACK_FLIP_Y_WEBGL={name:"UNPACK_FLIP_Y_WEBGL",value:37440,description:" "},d.UNPACK_PREMULTIPLY_ALPHA_WEBGL={name:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",value:37441,description:" "},d.UNPACK_COLORSPACE_CONVERSION_WEBGL={name:"UNPACK_COLORSPACE_CONVERSION_WEBGL",value:37443,description:" "},d.READ_BUFFER={name:"READ_BUFFER",value:3074,description:" "},d.UNPACK_ROW_LENGTH={name:"UNPACK_ROW_LENGTH",value:3314,description:" "},d.UNPACK_SKIP_ROWS={name:"UNPACK_SKIP_ROWS",value:3315,description:" "},d.UNPACK_SKIP_PIXELS={name:"UNPACK_SKIP_PIXELS",value:3316,description:" "},d.PACK_ROW_LENGTH={name:"PACK_ROW_LENGTH",value:3330,description:" "},d.PACK_SKIP_ROWS={name:"PACK_SKIP_ROWS",value:3331,description:" "},d.PACK_SKIP_PIXELS={name:"PACK_SKIP_PIXELS",value:3332,description:" "},d.TEXTURE_BINDING_3D={name:"TEXTURE_BINDING_3D",value:32874,description:" "},d.UNPACK_SKIP_IMAGES={name:"UNPACK_SKIP_IMAGES",value:32877,description:" "},d.UNPACK_IMAGE_HEIGHT={name:"UNPACK_IMAGE_HEIGHT",value:32878,description:" "},d.MAX_3D_TEXTURE_SIZE={name:"MAX_3D_TEXTURE_SIZE",value:32883,description:" "},d.MAX_ELEMENTS_VERTICES={name:"MAX_ELEMENTS_VERTICES",value:33e3,description:" "},d.MAX_ELEMENTS_INDICES={name:"MAX_ELEMENTS_INDICES",value:33001,description:" "},d.MAX_TEXTURE_LOD_BIAS={name:"MAX_TEXTURE_LOD_BIAS",value:34045,description:" "},d.MAX_FRAGMENT_UNIFORM_COMPONENTS={name:"MAX_FRAGMENT_UNIFORM_COMPONENTS",value:35657,description:" "},d.MAX_VERTEX_UNIFORM_COMPONENTS={name:"MAX_VERTEX_UNIFORM_COMPONENTS",value:35658,description:" "},d.MAX_ARRAY_TEXTURE_LAYERS={name:"MAX_ARRAY_TEXTURE_LAYERS",value:35071,description:" "},d.MIN_PROGRAM_TEXEL_OFFSET={name:"MIN_PROGRAM_TEXEL_OFFSET",value:35076,description:" "},d.MAX_PROGRAM_TEXEL_OFFSET={name:"MAX_PROGRAM_TEXEL_OFFSET",value:35077,description:" "},d.MAX_VARYING_COMPONENTS={name:"MAX_VARYING_COMPONENTS",value:35659,description:" "},d.FRAGMENT_SHADER_DERIVATIVE_HINT={name:"FRAGMENT_SHADER_DERIVATIVE_HINT",value:35723,description:" "},d.RASTERIZER_DISCARD={name:"RASTERIZER_DISCARD",value:35977,description:" "},d.VERTEX_ARRAY_BINDING={name:"VERTEX_ARRAY_BINDING",value:34229,description:" "},d.MAX_VERTEX_OUTPUT_COMPONENTS={name:"MAX_VERTEX_OUTPUT_COMPONENTS",value:37154,description:" "},d.MAX_FRAGMENT_INPUT_COMPONENTS={name:"MAX_FRAGMENT_INPUT_COMPONENTS",value:37157,description:" "},d.MAX_SERVER_WAIT_TIMEOUT={name:"MAX_SERVER_WAIT_TIMEOUT",value:37137,description:" "},d.MAX_ELEMENT_INDEX={name:"MAX_ELEMENT_INDEX",value:36203,description:" "},d.RED={name:"RED",value:6403,description:" "},d.RGB8={name:"RGB8",value:32849,description:" "},d.RGBA8={name:"RGBA8",value:32856,description:" "},d.RGB10_A2={name:"RGB10_A2",value:32857,description:" "},d.TEXTURE_3D={name:"TEXTURE_3D",value:32879,description:" "},d.TEXTURE_WRAP_R={name:"TEXTURE_WRAP_R",value:32882,description:" "},d.TEXTURE_MIN_LOD={name:"TEXTURE_MIN_LOD",value:33082,description:" "},d.TEXTURE_MAX_LOD={name:"TEXTURE_MAX_LOD",value:33083,description:" "},d.TEXTURE_BASE_LEVEL={name:"TEXTURE_BASE_LEVEL",value:33084,description:" "},d.TEXTURE_MAX_LEVEL={name:"TEXTURE_MAX_LEVEL",value:33085,description:" "},d.TEXTURE_COMPARE_MODE={name:"TEXTURE_COMPARE_MODE",value:34892,description:" "},d.TEXTURE_COMPARE_FUNC={name:"TEXTURE_COMPARE_FUNC",value:34893,description:" "},d.SRGB={name:"SRGB",value:35904,description:" "},d.SRGB8={name:"SRGB8",value:35905,description:" "},d.SRGB8_ALPHA8={name:"SRGB8_ALPHA8",value:35907,description:" "},d.COMPARE_REF_TO_TEXTURE={name:"COMPARE_REF_TO_TEXTURE",value:34894,description:" "},d.RGBA32F={name:"RGBA32F",value:34836,description:" "},d.RGB32F={name:"RGB32F",value:34837,description:" "},d.RGBA16F={name:"RGBA16F",value:34842,description:" "},d.RGB16F={name:"RGB16F",value:34843,description:" "},d.TEXTURE_2D_ARRAY={name:"TEXTURE_2D_ARRAY",value:35866,description:" "},d.TEXTURE_BINDING_2D_ARRAY={name:"TEXTURE_BINDING_2D_ARRAY",value:35869,description:" "},d.R11F_G11F_B10F={name:"R11F_G11F_B10F",value:35898,description:" "},d.RGB9_E5={name:"RGB9_E5",value:35901,description:" "},d.RGBA32UI={name:"RGBA32UI",value:36208,description:" "},d.RGB32UI={name:"RGB32UI",value:36209,description:" "},d.RGBA16UI={name:"RGBA16UI",value:36214,description:" "},d.RGB16UI={name:"RGB16UI",value:36215,description:" "},d.RGBA8UI={name:"RGBA8UI",value:36220,description:" "},d.RGB8UI={name:"RGB8UI",value:36221,description:" "},d.RGBA32I={name:"RGBA32I",value:36226,description:" "},d.RGB32I={name:"RGB32I",value:36227,description:" "},d.RGBA16I={name:"RGBA16I",value:36232,description:" "},d.RGB16I={name:"RGB16I",value:36233,description:" "},d.RGBA8I={name:"RGBA8I",value:36238,description:" "},d.RGB8I={name:"RGB8I",value:36239,description:" "},d.RED_INTEGER={name:"RED_INTEGER",value:36244,description:" "},d.RGB_INTEGER={name:"RGB_INTEGER",value:36248,description:" "},d.RGBA_INTEGER={name:"RGBA_INTEGER",value:36249,description:" "},d.R8={name:"R8",value:33321,description:" "},d.RG8={name:"RG8",value:33323,description:" "},d.R16F={name:"R16F",value:33325,description:" "},d.R32F={name:"R32F",value:33326,description:" "},d.RG16F={name:"RG16F",value:33327,description:" "},d.RG32F={name:"RG32F",value:33328,description:" "},d.R8I={name:"R8I",value:33329,description:" "},d.R8UI={name:"R8UI",value:33330,description:" "},d.R16I={name:"R16I",value:33331,description:" "},d.R16UI={name:"R16UI",value:33332,description:" "},d.R32I={name:"R32I",value:33333,description:" "},d.R32UI={name:"R32UI",value:33334,description:" "},d.RG8I={name:"RG8I",value:33335,description:" "},d.RG8UI={name:"RG8UI",value:33336,description:" "},d.RG16I={name:"RG16I",value:33337,description:" "},d.RG16UI={name:"RG16UI",value:33338,description:" "},d.RG32I={name:"RG32I",value:33339,description:" "},d.RG32UI={name:"RG32UI",value:33340,description:" "},d.R8_SNORM={name:"R8_SNORM",value:36756,description:" "},d.RG8_SNORM={name:"RG8_SNORM",value:36757,description:" "},d.RGB8_SNORM={name:"RGB8_SNORM",value:36758,description:" "},d.RGBA8_SNORM={name:"RGBA8_SNORM",value:36759,description:" "},d.RGB10_A2UI={name:"RGB10_A2UI",value:36975,description:" "},d.TEXTURE_IMMUTABLE_FORMAT={name:"TEXTURE_IMMUTABLE_FORMAT",value:37167,description:" "},d.TEXTURE_IMMUTABLE_LEVELS={name:"TEXTURE_IMMUTABLE_LEVELS",value:33503,description:" "},d.UNSIGNED_INT_2_10_10_10_REV={name:"UNSIGNED_INT_2_10_10_10_REV",value:33640,description:" "},d.UNSIGNED_INT_10F_11F_11F_REV={name:"UNSIGNED_INT_10F_11F_11F_REV",value:35899,description:" "},d.UNSIGNED_INT_5_9_9_9_REV={name:"UNSIGNED_INT_5_9_9_9_REV",value:35902,description:" "},d.FLOAT_32_UNSIGNED_INT_24_8_REV={name:"FLOAT_32_UNSIGNED_INT_24_8_REV",value:36269,description:" "},d.UNSIGNED_INT_24_8={name:"UNSIGNED_INT_24_8",value:34042,description:" "},d.HALF_FLOAT={name:"HALF_FLOAT",value:5131,description:" "},d.RG={name:"RG",value:33319,description:" "},d.RG_INTEGER={name:"RG_INTEGER",value:33320,description:" "},d.INT_2_10_10_10_REV={name:"INT_2_10_10_10_REV",value:36255,description:" "},d.CURRENT_QUERY={name:"CURRENT_QUERY",value:34917,description:" "},d.QUERY_RESULT={name:"QUERY_RESULT",value:34918,description:" "},d.QUERY_RESULT_AVAILABLE={name:"QUERY_RESULT_AVAILABLE",value:34919,description:" "},d.ANY_SAMPLES_PASSED={name:"ANY_SAMPLES_PASSED",value:35887,description:" "},d.ANY_SAMPLES_PASSED_CONSERVATIVE={name:"ANY_SAMPLES_PASSED_CONSERVATIVE",value:36202,description:" "},d.MAX_DRAW_BUFFERS={name:"MAX_DRAW_BUFFERS",value:34852,description:" "},d.DRAW_BUFFER0={name:"DRAW_BUFFER0",value:34853,description:" "},d.DRAW_BUFFER1={name:"DRAW_BUFFER1",value:34854,description:" "},d.DRAW_BUFFER2={name:"DRAW_BUFFER2",value:34855,description:" "},d.DRAW_BUFFER3={name:"DRAW_BUFFER3",value:34856,description:" "},d.DRAW_BUFFER4={name:"DRAW_BUFFER4",value:34857,description:" "},d.DRAW_BUFFER5={name:"DRAW_BUFFER5",value:34858,description:" "},d.DRAW_BUFFER6={name:"DRAW_BUFFER6",value:34859,description:" "},d.DRAW_BUFFER7={name:"DRAW_BUFFER7",value:34860,description:" "},d.DRAW_BUFFER8={name:"DRAW_BUFFER8",value:34861,description:" "},d.DRAW_BUFFER9={name:"DRAW_BUFFER9",value:34862,description:" "},d.DRAW_BUFFER10={name:"DRAW_BUFFER10",value:34863,description:" "},d.DRAW_BUFFER11={name:"DRAW_BUFFER11",value:34864,description:" "},d.DRAW_BUFFER12={name:"DRAW_BUFFER12",value:34865,description:" "},d.DRAW_BUFFER13={name:"DRAW_BUFFER13",value:34866,description:" "},d.DRAW_BUFFER14={name:"DRAW_BUFFER14",value:34867,description:" "},d.DRAW_BUFFER15={name:"DRAW_BUFFER15",value:34868,description:" "},d.MAX_COLOR_ATTACHMENTS={name:"MAX_COLOR_ATTACHMENTS",value:36063,description:" "},d.COLOR_ATTACHMENT1={name:"COLOR_ATTACHMENT1",value:36065,description:" "},d.COLOR_ATTACHMENT2={name:"COLOR_ATTACHMENT2",value:36066,description:" "},d.COLOR_ATTACHMENT3={name:"COLOR_ATTACHMENT3",value:36067,description:" "},d.COLOR_ATTACHMENT4={name:"COLOR_ATTACHMENT4",value:36068,description:" "},d.COLOR_ATTACHMENT5={name:"COLOR_ATTACHMENT5",value:36069,description:" "},d.COLOR_ATTACHMENT6={name:"COLOR_ATTACHMENT6",value:36070,description:" "},d.COLOR_ATTACHMENT7={name:"COLOR_ATTACHMENT7",value:36071,description:" "},d.COLOR_ATTACHMENT8={name:"COLOR_ATTACHMENT8",value:36072,description:" "},d.COLOR_ATTACHMENT9={name:"COLOR_ATTACHMENT9",value:36073,description:" "},d.COLOR_ATTACHMENT10={name:"COLOR_ATTACHMENT10",value:36074,description:" "},d.COLOR_ATTACHMENT11={name:"COLOR_ATTACHMENT11",value:36075,description:" "},d.COLOR_ATTACHMENT12={name:"COLOR_ATTACHMENT12",value:36076,description:" "},d.COLOR_ATTACHMENT13={name:"COLOR_ATTACHMENT13",value:36077,description:" "},d.COLOR_ATTACHMENT14={name:"COLOR_ATTACHMENT14",value:36078,description:" "},d.COLOR_ATTACHMENT15={name:"COLOR_ATTACHMENT15",value:36079,description:" "},d.SAMPLER_3D={name:"SAMPLER_3D",value:35679,description:" "},d.SAMPLER_2D_SHADOW={name:"SAMPLER_2D_SHADOW",value:35682,description:" "},d.SAMPLER_2D_ARRAY={name:"SAMPLER_2D_ARRAY",value:36289,description:" "},d.SAMPLER_2D_ARRAY_SHADOW={name:"SAMPLER_2D_ARRAY_SHADOW",value:36292,description:" "},d.SAMPLER_CUBE_SHADOW={name:"SAMPLER_CUBE_SHADOW",value:36293,description:" "},d.INT_SAMPLER_2D={name:"INT_SAMPLER_2D",value:36298,description:" "},d.INT_SAMPLER_3D={name:"INT_SAMPLER_3D",value:36299,description:" "},d.INT_SAMPLER_CUBE={name:"INT_SAMPLER_CUBE",value:36300,description:" "},d.INT_SAMPLER_2D_ARRAY={name:"INT_SAMPLER_2D_ARRAY",value:36303,description:" "},d.UNSIGNED_INT_SAMPLER_2D={name:"UNSIGNED_INT_SAMPLER_2D",value:36306,description:" "},d.UNSIGNED_INT_SAMPLER_3D={name:"UNSIGNED_INT_SAMPLER_3D",value:36307,description:" "},d.UNSIGNED_INT_SAMPLER_CUBE={name:"UNSIGNED_INT_SAMPLER_CUBE",value:36308,description:" "},d.UNSIGNED_INT_SAMPLER_2D_ARRAY={name:"UNSIGNED_INT_SAMPLER_2D_ARRAY",value:36311,description:" "},d.MAX_SAMPLES={name:"MAX_SAMPLES",value:36183,description:" "},d.SAMPLER_BINDING={name:"SAMPLER_BINDING",value:35097,description:" "},d.PIXEL_PACK_BUFFER={name:"PIXEL_PACK_BUFFER",value:35051,description:" "},d.PIXEL_UNPACK_BUFFER={name:"PIXEL_UNPACK_BUFFER",value:35052,description:" "},d.PIXEL_PACK_BUFFER_BINDING={name:"PIXEL_PACK_BUFFER_BINDING",value:35053,description:" "},d.PIXEL_UNPACK_BUFFER_BINDING={name:"PIXEL_UNPACK_BUFFER_BINDING",value:35055,description:" "},d.COPY_READ_BUFFER={name:"COPY_READ_BUFFER",value:36662,description:" "},d.COPY_WRITE_BUFFER={name:"COPY_WRITE_BUFFER",value:36663,description:" "},d.COPY_READ_BUFFER_BINDING={name:"COPY_READ_BUFFER_BINDING",value:36662,description:" "},d.COPY_WRITE_BUFFER_BINDING={name:"COPY_WRITE_BUFFER_BINDING",value:36663,description:" "},d.FLOAT_MAT2x3={name:"FLOAT_MAT2x3",value:35685,description:" "},d.FLOAT_MAT2x4={name:"FLOAT_MAT2x4",value:35686,description:" "},d.FLOAT_MAT3x2={name:"FLOAT_MAT3x2",value:35687,description:" "},d.FLOAT_MAT3x4={name:"FLOAT_MAT3x4",value:35688,description:" "},d.FLOAT_MAT4x2={name:"FLOAT_MAT4x2",value:35689,description:" "},d.FLOAT_MAT4x3={name:"FLOAT_MAT4x3",value:35690,description:" "},d.UNSIGNED_INT_VEC2={name:"UNSIGNED_INT_VEC2",value:36294,description:" "},d.UNSIGNED_INT_VEC3={name:"UNSIGNED_INT_VEC3",value:36295,description:" "},d.UNSIGNED_INT_VEC4={name:"UNSIGNED_INT_VEC4",value:36296,description:" "},d.UNSIGNED_NORMALIZED={name:"UNSIGNED_NORMALIZED",value:35863,description:" "},d.SIGNED_NORMALIZED={name:"SIGNED_NORMALIZED",value:36764,description:" "},d.VERTEX_ATTRIB_ARRAY_INTEGER={name:"VERTEX_ATTRIB_ARRAY_INTEGER",value:35069,description:" "},d.VERTEX_ATTRIB_ARRAY_DIVISOR={name:"VERTEX_ATTRIB_ARRAY_DIVISOR",value:35070,description:" "},d.TRANSFORM_FEEDBACK_BUFFER_MODE={name:"TRANSFORM_FEEDBACK_BUFFER_MODE",value:35967,description:" "},d.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS={name:"MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",value:35968,description:" "},d.TRANSFORM_FEEDBACK_VARYINGS={name:"TRANSFORM_FEEDBACK_VARYINGS",value:35971,description:" "},d.TRANSFORM_FEEDBACK_BUFFER_START={name:"TRANSFORM_FEEDBACK_BUFFER_START",value:35972,description:" "},d.TRANSFORM_FEEDBACK_BUFFER_SIZE={name:"TRANSFORM_FEEDBACK_BUFFER_SIZE",value:35973,description:" "},d.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN={name:"TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",value:35976,description:" "},d.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS={name:"MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",value:35978,description:" "},d.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS={name:"MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",value:35979,description:" "},d.INTERLEAVED_ATTRIBS={name:"INTERLEAVED_ATTRIBS",value:35980,description:" "},d.SEPARATE_ATTRIBS={name:"SEPARATE_ATTRIBS",value:35981,description:" "},d.TRANSFORM_FEEDBACK_BUFFER={name:"TRANSFORM_FEEDBACK_BUFFER",value:35982,description:" "},d.TRANSFORM_FEEDBACK_BUFFER_BINDING={name:"TRANSFORM_FEEDBACK_BUFFER_BINDING",value:35983,description:" "},d.TRANSFORM_FEEDBACK={name:"TRANSFORM_FEEDBACK",value:36386,description:" "},d.TRANSFORM_FEEDBACK_PAUSED={name:"TRANSFORM_FEEDBACK_PAUSED",value:36387,description:" "},d.TRANSFORM_FEEDBACK_ACTIVE={name:"TRANSFORM_FEEDBACK_ACTIVE",value:36388,description:" "},d.TRANSFORM_FEEDBACK_BINDING={name:"TRANSFORM_FEEDBACK_BINDING",value:36389,description:" "},d.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING={name:"FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",value:33296,description:" "},d.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE={name:"FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",value:33297,description:" "},d.FRAMEBUFFER_ATTACHMENT_RED_SIZE={name:"FRAMEBUFFER_ATTACHMENT_RED_SIZE",value:33298,description:" "},d.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE={name:"FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",value:33299,description:" "},d.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE={name:"FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",value:33300,description:" "},d.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE={name:"FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",value:33301,description:" "},d.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE={name:"FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",value:33302,description:" "},d.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE={name:"FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",value:33303,description:" "},d.FRAMEBUFFER_DEFAULT={name:"FRAMEBUFFER_DEFAULT",value:33304,description:" "},d.DEPTH24_STENCIL8={name:"DEPTH24_STENCIL8",value:35056,description:" "},d.DRAW_FRAMEBUFFER_BINDING={name:"DRAW_FRAMEBUFFER_BINDING",value:36006,description:" "},d.READ_FRAMEBUFFER={name:"READ_FRAMEBUFFER",value:36008,description:" "},d.DRAW_FRAMEBUFFER={name:"DRAW_FRAMEBUFFER",value:36009,description:" "},d.READ_FRAMEBUFFER_BINDING={name:"READ_FRAMEBUFFER_BINDING",value:36010,description:" "},d.RENDERBUFFER_SAMPLES={name:"RENDERBUFFER_SAMPLES",value:36011,description:" "},d.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER={name:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",value:36052,description:" "},d.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE={name:"FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",value:36182,description:" "},d.UNIFORM_BUFFER={name:"UNIFORM_BUFFER",value:35345,description:" "},d.UNIFORM_BUFFER_BINDING={name:"UNIFORM_BUFFER_BINDING",value:35368,description:" "},d.UNIFORM_BUFFER_START={name:"UNIFORM_BUFFER_START",value:35369,description:" "},d.UNIFORM_BUFFER_SIZE={name:"UNIFORM_BUFFER_SIZE",value:35370,description:" "},d.MAX_VERTEX_UNIFORM_BLOCKS={name:"MAX_VERTEX_UNIFORM_BLOCKS",value:35371,description:" "},d.MAX_FRAGMENT_UNIFORM_BLOCKS={name:"MAX_FRAGMENT_UNIFORM_BLOCKS",value:35373,description:" "},d.MAX_COMBINED_UNIFORM_BLOCKS={name:"MAX_COMBINED_UNIFORM_BLOCKS",value:35374,description:" "},d.MAX_UNIFORM_BUFFER_BINDINGS={name:"MAX_UNIFORM_BUFFER_BINDINGS",value:35375,description:" "},d.MAX_UNIFORM_BLOCK_SIZE={name:"MAX_UNIFORM_BLOCK_SIZE",value:35376,description:" "},d.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS={name:"MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",value:35377,description:" "},d.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS={name:"MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",value:35379,description:" "},d.UNIFORM_BUFFER_OFFSET_ALIGNMENT={name:"UNIFORM_BUFFER_OFFSET_ALIGNMENT",value:35380,description:" "},d.ACTIVE_UNIFORM_BLOCKS={name:"ACTIVE_UNIFORM_BLOCKS",value:35382,description:" "},d.UNIFORM_TYPE={name:"UNIFORM_TYPE",value:35383,description:" "},d.UNIFORM_SIZE={name:"UNIFORM_SIZE",value:35384,description:" "},d.UNIFORM_BLOCK_INDEX={name:"UNIFORM_BLOCK_INDEX",value:35386,description:" "},d.UNIFORM_OFFSET={name:"UNIFORM_OFFSET",value:35387,description:" "},d.UNIFORM_ARRAY_STRIDE={name:"UNIFORM_ARRAY_STRIDE",value:35388,description:" "},d.UNIFORM_MATRIX_STRIDE={name:"UNIFORM_MATRIX_STRIDE",value:35389,description:" "},d.UNIFORM_IS_ROW_MAJOR={name:"UNIFORM_IS_ROW_MAJOR",value:35390,description:" "},d.UNIFORM_BLOCK_BINDING={name:"UNIFORM_BLOCK_BINDING",value:35391,description:" "},d.UNIFORM_BLOCK_DATA_SIZE={name:"UNIFORM_BLOCK_DATA_SIZE",value:35392,description:" "},d.UNIFORM_BLOCK_ACTIVE_UNIFORMS={name:"UNIFORM_BLOCK_ACTIVE_UNIFORMS",value:35394,description:" "},d.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES={name:"UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",value:35395,description:" "},d.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER={name:"UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",value:35396,description:" "},d.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER={name:"UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",value:35398,description:" "},d.OBJECT_TYPE={name:"OBJECT_TYPE",value:37138,description:" "},d.SYNC_CONDITION={name:"SYNC_CONDITION",value:37139,description:" "},d.SYNC_STATUS={name:"SYNC_STATUS",value:37140,description:" "},d.SYNC_FLAGS={name:"SYNC_FLAGS",value:37141,description:" "},d.SYNC_FENCE={name:"SYNC_FENCE",value:37142,description:" "},d.SYNC_GPU_COMMANDS_COMPLETE={name:"SYNC_GPU_COMMANDS_COMPLETE",value:37143,description:" "},d.UNSIGNALED={name:"UNSIGNALED",value:37144,description:" "},d.SIGNALED={name:"SIGNALED",value:37145,description:" "},d.ALREADY_SIGNALED={name:"ALREADY_SIGNALED",value:37146,description:" "},d.TIMEOUT_EXPIRED={name:"TIMEOUT_EXPIRED",value:37147,description:" "},d.CONDITION_SATISFIED={name:"CONDITION_SATISFIED",value:37148,description:" "},d.WAIT_FAILED={name:"WAIT_FAILED",value:37149,description:" "},d.SYNC_FLUSH_COMMANDS_BIT={name:"SYNC_FLUSH_COMMANDS_BIT",value:1,description:" "},d.COLOR={name:"COLOR",value:6144,description:" "},d.DEPTH={name:"DEPTH",value:6145,description:" "},d.STENCIL={name:"STENCIL",value:6146,description:" "},d.MIN={name:"MIN",value:32775,description:" "},d.MAX={name:"MAX",value:32776,description:" "},d.DEPTH_COMPONENT24={name:"DEPTH_COMPONENT24",value:33190,description:" "},d.STREAM_READ={name:"STREAM_READ",value:35041,description:" "},d.STREAM_COPY={name:"STREAM_COPY",value:35042,description:" "},d.STATIC_READ={name:"STATIC_READ",value:35045,description:" "},d.STATIC_COPY={name:"STATIC_COPY",value:35046,description:" "},d.DYNAMIC_READ={name:"DYNAMIC_READ",value:35049,description:" "},d.DYNAMIC_COPY={name:"DYNAMIC_COPY",value:35050,description:" "},d.DEPTH_COMPONENT32F={name:"DEPTH_COMPONENT32F",value:36012,description:" "},d.DEPTH32F_STENCIL8={name:"DEPTH32F_STENCIL8",value:36013,description:" "},d.INVALID_INDEX={name:"INVALID_INDEX",value:4294967295,description:" "},d.TIMEOUT_IGNORED={name:"TIMEOUT_IGNORED",value:-1,description:" "},d.MAX_CLIENT_WAIT_TIMEOUT_WEBGL={name:"MAX_CLIENT_WAIT_TIMEOUT_WEBGL",value:37447,description:" "},d.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE={name:"VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE",value:35070,description:"Describes the frequency divisor used for instanced rendering.",extensionName:"ANGLE_instanced_arrays"},d.UNMASKED_VENDOR_WEBGL={name:"UNMASKED_VENDOR_WEBGL",value:37445,description:"Passed to getParameter to get the vendor string of the graphics driver.",extensionName:"ANGLE_instanced_arrays"},d.UNMASKED_RENDERER_WEBGL={name:"UNMASKED_RENDERER_WEBGL",value:37446,description:"Passed to getParameter to get the renderer string of the graphics driver.",extensionName:"WEBGL_debug_renderer_info"},d.MAX_TEXTURE_MAX_ANISOTROPY_EXT={name:"MAX_TEXTURE_MAX_ANISOTROPY_EXT",value:34047,description:"Returns the maximum available anisotropy.",extensionName:"EXT_texture_filter_anisotropic"},d.TEXTURE_MAX_ANISOTROPY_EXT={name:"TEXTURE_MAX_ANISOTROPY_EXT",value:34046,description:"Passed to texParameter to set the desired maximum anisotropy for a texture.",extensionName:"EXT_texture_filter_anisotropic"},d.COMPRESSED_RGB_S3TC_DXT1_EXT={name:"COMPRESSED_RGB_S3TC_DXT1_EXT",value:33776,description:"A DXT1-compressed image in an RGB image format.",extensionName:"WEBGL_compressed_texture_s3tc"},d.COMPRESSED_RGBA_S3TC_DXT1_EXT={name:"COMPRESSED_RGBA_S3TC_DXT1_EXT",value:33777,description:"A DXT1-compressed image in an RGB image format with a simple on/off alpha value.",extensionName:"WEBGL_compressed_texture_s3tc"},d.COMPRESSED_RGBA_S3TC_DXT3_EXT={name:"COMPRESSED_RGBA_S3TC_DXT3_EXT",value:33778,description:"A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.",extensionName:"WEBGL_compressed_texture_s3tc"},d.COMPRESSED_RGBA_S3TC_DXT5_EXT={name:"COMPRESSED_RGBA_S3TC_DXT5_EXT",value:33779,description:"A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3 compression in how the alpha compression is done.",extensionName:"WEBGL_compressed_texture_s3tc"},d.COMPRESSED_R11_EAC={name:"COMPRESSED_R11_EAC",value:37488,description:"One-channel (red) unsigned format compression.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_SIGNED_R11_EAC={name:"COMPRESSED_SIGNED_R11_EAC",value:37489,description:"One-channel (red) signed format compression.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_RG11_EAC={name:"COMPRESSED_RG11_EAC",value:37490,description:"Two-channel (red and green) unsigned format compression.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_SIGNED_RG11_EAC={name:"COMPRESSED_SIGNED_RG11_EAC",value:37491,description:"Two-channel (red and green) signed format compression.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_RGB8_ETC2={name:"COMPRESSED_RGB8_ETC2",value:37492,description:"Compresses RBG8 data with no alpha channel.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_RGBA8_ETC2_EAC={name:"COMPRESSED_RGBA8_ETC2_EAC",value:37493,description:"Compresses RGBA8 data. The RGB part is encoded the same as RGB_ETC2, but the alpha part is encoded separately.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_SRGB8_ETC2={name:"COMPRESSED_SRGB8_ETC2",value:37494,description:"Compresses sRBG8 data with no alpha channel.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC={name:"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",value:37495,description:"Compresses sRGBA8 data. The sRGB part is encoded the same as SRGB_ETC2, but the alpha part is encoded separately.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2={name:"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",value:37496,description:"Similar to RGB8_ETC, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2={name:"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",value:37497,description:"Similar to SRGB8_ETC, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent.",extensionName:"WEBGL_compressed_texture_etc"},d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG={name:"COMPRESSED_RGB_PVRTC_4BPPV1_IMG",value:35840,description:"RGB compression in 4-bit mode. One block for each 4×4 pixels.",extensionName:"WEBGL_compressed_texture_pvrtc"},d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG={name:"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",value:35842,description:"RGBA compression in 4-bit mode. One block for each 4×4 pixels.",extensionName:"WEBGL_compressed_texture_pvrtc"},d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG={name:"COMPRESSED_RGB_PVRTC_2BPPV1_IMG",value:35841,description:"RGB compression in 2-bit mode. One block for each 8×4 pixels.",extensionName:"WEBGL_compressed_texture_pvrtc"},d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG={name:"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",value:35843,description:"RGBA compression in 2-bit mode. One block for each 8×4 pixe",extensionName:"WEBGL_compressed_texture_pvrtc"},d.COMPRESSED_RGB_ETC1_WEBGL={name:"COMPRESSED_RGB_ETC1_WEBGL",value:36196,description:"Compresses 24-bit RGB data with no alpha channel.",extensionName:"WEBGL_compressed_texture_etc1"},d.COMPRESSED_RGB_ATC_WEBGL={name:"COMPRESSED_RGB_ATC_WEBGL",value:35986,description:"Compresses RGB textures with no alpha channel.",extensionName:"WEBGL_compressed_texture_atc"},d.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL={name:"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",value:35986,description:"Compresses RGBA textures using explicit alpha encoding (useful when alpha transitions are sharp).",extensionName:"WEBGL_compressed_texture_atc"},d.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL={name:"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",value:34798,description:"Compresses RGBA textures using interpolated alpha encoding (useful when alpha transitions are gradient).",extensionName:"WEBGL_compressed_texture_atc"},d.UNSIGNED_INT_24_8_WEBGL={name:"UNSIGNED_INT_24_8_WEBGL",value:34042,description:"Unsigned integer type for 24-bit depth texture data.",extensionName:"WEBGL_depth_texture"},d.HALF_FLOAT_OES={name:"HALF_FLOAT_OES",value:36193,description:"Half floating-point type (16-bit).",extensionName:"OES_texture_half_float"},d.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT={name:"FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT",value:33297,description:" ",extensionName:"WEBGL_color_buffer_float"},d.UNSIGNED_NORMALIZED_EXT={name:"UNSIGNED_NORMALIZED_EXT",value:35863,description:" ",extensionName:"WEBGL_color_buffer_float"},d.MIN_EXT={name:"MIN_EXT",value:32775,description:"Produces the minimum color components of the source and destination colors.",extensionName:"EXT_blend_minmax"},d.MAX_EXT={name:"MAX_EXT",value:32776,description:"Produces the maximum color components of the source and destination colors.",extensionName:"EXT_blend_minmax"},d.SRGB_EXT={name:"SRGB_EXT",value:35904,description:"Unsized sRGB format that leaves the precision up to the driver.",extensionName:"EXT_sRGB"},d.SRGB_ALPHA_EXT={name:"SRGB_ALPHA_EXT",value:35906,description:"Unsized sRGB format with unsized alpha component.",extensionName:"EXT_sRGB"},d.SRGB8_ALPHA8_EXT={name:"SRGB8_ALPHA8_EXT",value:35907,description:"Sized (8-bit) sRGB and alpha formats.",extensionName:"EXT_sRGB"},d.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT={name:"FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT",value:33296,description:"Returns the framebuffer color encoding.",extensionName:"EXT_sRGB"},d.FRAGMENT_SHADER_DERIVATIVE_HINT_OES={name:"FRAGMENT_SHADER_DERIVATIVE_HINT_OES",value:35723,description:"Indicates the accuracy of the derivative calculation for the GLSL built-in functions: dFdx, dFdy, and fwidth.",extensionName:"OES_standard_derivatives"},d.COLOR_ATTACHMENT0_WEBGL={name:"COLOR_ATTACHMENT0_WEBGL",value:36064,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT1_WEBGL={name:"COLOR_ATTACHMENT1_WEBGL",value:36065,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT2_WEBGL={name:"COLOR_ATTACHMENT2_WEBGL",value:36066,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT3_WEBGL={name:"COLOR_ATTACHMENT3_WEBGL",value:36067,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT4_WEBGL={name:"COLOR_ATTACHMENT4_WEBGL",value:36068,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT5_WEBGL={name:"COLOR_ATTACHMENT5_WEBGL",value:36069,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT6_WEBGL={name:"COLOR_ATTACHMENT6_WEBGL",value:36070,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT7_WEBGL={name:"COLOR_ATTACHMENT7_WEBGL",value:36071,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT8_WEBGL={name:"COLOR_ATTACHMENT8_WEBGL",value:36072,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT9_WEBGL={name:"COLOR_ATTACHMENT9_WEBGL",value:36073,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT10_WEBGL={name:"COLOR_ATTACHMENT10_WEBGL",value:36074,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT11_WEBGL={name:"COLOR_ATTACHMENT11_WEBGL",value:36075,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT12_WEBGL={name:"COLOR_ATTACHMENT12_WEBGL",value:36076,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT13_WEBGL={name:"COLOR_ATTACHMENT13_WEBGL",value:36077,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT14_WEBGL={name:"COLOR_ATTACHMENT14_WEBGL",value:36078,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.COLOR_ATTACHMENT15_WEBGL={name:"COLOR_ATTACHMENT15_WEBGL",value:36079,description:"Framebuffer color attachment point",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER0_WEBGL={name:"DRAW_BUFFER0_WEBGL",value:34853,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER1_WEBGL={name:"DRAW_BUFFER1_WEBGL",value:34854,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER2_WEBGL={name:"DRAW_BUFFER2_WEBGL",value:34855,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER3_WEBGL={name:"DRAW_BUFFER3_WEBGL",value:34856,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER4_WEBGL={name:"DRAW_BUFFER4_WEBGL",value:34857,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER5_WEBGL={name:"DRAW_BUFFER5_WEBGL",value:34858,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER6_WEBGL={name:"DRAW_BUFFER6_WEBGL",value:34859,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER7_WEBGL={name:"DRAW_BUFFER7_WEBGL",value:34860,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER8_WEBGL={name:"DRAW_BUFFER8_WEBGL",value:34861,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER9_WEBGL={name:"DRAW_BUFFER9_WEBGL",value:34862,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER10_WEBGL={name:"DRAW_BUFFER10_WEBGL",value:34863,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER11_WEBGL={name:"DRAW_BUFFER11_WEBGL",value:34864,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER12_WEBGL={name:"DRAW_BUFFER12_WEBGL",value:34865,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER13_WEBGL={name:"DRAW_BUFFER13_WEBGL",value:34866,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER14_WEBGL={name:"DRAW_BUFFER14_WEBGL",value:34867,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.DRAW_BUFFER15_WEBGL={name:"DRAW_BUFFER15_WEBGL",value:34868,description:"Draw buffer",extensionName:"WEBGL_draw_buffers"},d.MAX_COLOR_ATTACHMENTS_WEBGL={name:"MAX_COLOR_ATTACHMENTS_WEBGL",value:36063,description:"Maximum number of framebuffer color attachment points",extensionName:"WEBGL_draw_buffers"},d.MAX_DRAW_BUFFERS_WEBGL={name:"MAX_DRAW_BUFFERS_WEBGL",value:34852,description:"Maximum number of draw buffers",extensionName:"WEBGL_draw_buffers"},d.VERTEX_ARRAY_BINDING_OES={name:"VERTEX_ARRAY_BINDING_OES",value:34229,description:"The bound vertex array object (VAO).",extensionName:"VERTEX_ARRAY_BINDING_OES"},d.QUERY_COUNTER_BITS_EXT={name:"QUERY_COUNTER_BITS_EXT",value:34916,description:"The number of bits used to hold the query result for the given target.",extensionName:"EXT_disjoint_timer_query"},d.CURRENT_QUERY_EXT={name:"CURRENT_QUERY_EXT",value:34917,description:"The currently active query.",extensionName:"EXT_disjoint_timer_query"},d.QUERY_RESULT_EXT={name:"QUERY_RESULT_EXT",value:34918,description:"The query result.",extensionName:"EXT_disjoint_timer_query"},d.QUERY_RESULT_AVAILABLE_EXT={name:"QUERY_RESULT_AVAILABLE_EXT",value:34919,description:"A Boolean indicating whether or not a query result is available.",extensionName:"EXT_disjoint_timer_query"},d.TIME_ELAPSED_EXT={name:"TIME_ELAPSED_EXT",value:35007,description:"Elapsed time (in nanoseconds).",extensionName:"EXT_disjoint_timer_query"},d.TIMESTAMP_EXT={name:"TIMESTAMP_EXT",value:36392,description:"The current time.",extensionName:"EXT_disjoint_timer_query"},d.GPU_DISJOINT_EXT={name:"GPU_DISJOINT_EXT",value:36795,description:"A Boolean indicating whether or not the GPU performed any disjoint operation.",extensionName:"EXT_disjoint_timer_query"},d.zeroMeaningByCommand={getError:"NO_ERROR",blendFunc:"ZERO",blendFuncSeparate:"ZERO",readBuffer:"NONE",getFramebufferAttachmentParameter:"NONE",texParameterf:"NONE",texParameteri:"NONE",drawArrays:"POINTS",drawElements:"POINTS",drawArraysInstanced:"POINTS",drawArraysInstancedAngle:"POINTS",drawBuffers:"POINTS",drawElementsInstanced:"POINTS",drawRangeElements:"POINTS"},d.oneMeaningByCommand={blendFunc:"ONE",blendFuncSeparate:"ONE",drawArrays:"LINES",drawElements:"LINES",drawArraysInstanced:"LINES",drawArraysInstancedAngle:"LINES",drawBuffers:"LINES",drawElementsInstanced:"LINES",drawRangeElements:"LINES"};const m={},p={};!function(){for(const e in d)if(d.hasOwnProperty(e)){const t=d[e];m[t.name]=t,p[t.value]=t}}();class g extends l{get analyserName(){return g.analyserName}appendToAnalysis(e,t){if(!e.commands)return;const n={total:0,totalTriangles:0,totalTriangleStrip:0,totalTriangleFan:0,totalLines:0,totalLineStrip:0,totalLineLoop:0,totalPoints:0};for(const t of e.commands)"drawArrays"===t.name&&t.commandArguments.length>=3||"drawArraysInstanced"===t.name&&t.commandArguments.length>=3||"drawArraysInstancedANGLE"===t.name&&t.commandArguments.length>=3?this.appendToPrimitives(n,t.commandArguments[0],t.commandArguments[2]):"drawElements"===t.name&&t.commandArguments.length>=2||"drawElementsInstanced"===t.name&&t.commandArguments.length>=2||"drawElementsInstancedANGLE"===t.name&&t.commandArguments.length>=2?this.appendToPrimitives(n,t.commandArguments[0],t.commandArguments[1]):"drawRangeElements"===t.name&&t.commandArguments.length>=4&&this.appendToPrimitives(n,t.commandArguments[0],t.commandArguments[3]);t.total=n.total,t.triangles=n.totalTriangles,t.triangleStrip=n.totalTriangleStrip,t.triangleFan=n.totalTriangleFan,t.lines=n.totalLines,t.lineStrip=n.totalLineStrip,t.lineLoop=n.totalLineLoop,t.points=n.totalPoints}appendToPrimitives(e,t,n){t===d.POINTS.value?e.totalPoints+=n:t===d.LINES.value?e.totalLines+=n:t===d.LINE_STRIP.value?e.totalLineStrip+=n:t===d.LINE_LOOP.value?e.totalLineLoop+=n:t===d.TRIANGLES.value?e.totalTriangles+=n:t===d.TRIANGLE_STRIP.value?e.totalTriangleStrip+=n:t===d.TRIANGLE_FAN.value&&(e.totalTriangleFan+=n),e.total+=n}}g.analyserName="Primitives";class f{constructor(e){this.contextInformation=e,this.analysers=[],this.initAnalysers()}appendAnalyses(e){for(const t in this.analysers)this.analysers.hasOwnProperty(t)&&this.analysers[t].appendAnalysis(e)}initAnalysers(){this.analysers.push(new c(this.contextInformation),new h(this.contextInformation),new g(this.contextInformation))}}class E{static getWebGlObjectTag(e){return e[E.SPECTOROBJECTTAGKEY]}static attachWebGlObjectTag(e,t){t.displayText=E.stringifyWebGlObjectTag(t),e[E.SPECTOROBJECTTAGKEY]=t}static stringifyWebGlObjectTag(e){return e?`${e.typeName} - ID: ${e.id}`:"No tag available."}}E.SPECTOROBJECTTAGKEY="__SPECTOR_Object_TAG";class v{constructor(){this.id=0}get type(){return window[this.typeName]||null}tagWebGlObject(e){if(!this.type)return;let t;if(!e)return t;if(t=E.getWebGlObjectTag(e),t)return t;if(e instanceof this.type){const n=this.getNextId();return t={typeName:this.typeName,id:n},E.attachWebGlObjectTag(e,t),t}return t}getNextId(){return this.id++}}class _{constructor(e){this.options=e}createCapture(e,t,n){const i=class{static getStackTrace(e=0,t=0){const n=[];try{throw new Error("Errorator.")}catch(e){if(e.stack){const t=e.stack.split("\n");for(let e=0,i=t.length;e0;t++)n.shift();for(let e=0;e0;e++)n.pop()}return n}}.getStackTrace(4,1),r=0===e.name.indexOf("uniform")?this.stringifyUniform(e.arguments):this.stringify(e.arguments,e.result),s={id:t,startTime:e.startTime,commandEndTime:e.endTime,endTime:0,name:e.name,commandArguments:e.arguments,result:e.result,stackTrace:i,status:0,marker:n,text:r};this.transformCapture(s);for(let e=0;e50&&(s.commandArguments[e]="Array Length: "+t.length)}if(s.commandArguments){const e=[];for(let t=0;t0&&(n+=": "+this.stringifyArgs(e).join(", ")),null!=t&&(n+=" -> "+this.stringifyResult(t)),n}stringifyUniform(e){let t=this.spiedCommandName;if(e&&e.length>0){const n=[];n.push(this.stringifyValue(e[0]));for(let t=1;t0&&"number"==typeof s)i.push(null!==(n=null===(t=e[r])||void 0===t?void 0:t.toFixed(0))&&void 0!==n?n:"0");else{const e=this.stringifyValue(s);i.push(e)}}return i}}C.commandName="bufferSubData";class A{static storeOriginFunction(e,t){if(!e)return;if(!e[t])return;const n=this.getOriginFunctionName(t);e[n]||(e[n]=e[t])}static resetOriginFunction(e,t){if(!e)return;if(!e[t])return;const n=this.getOriginFunctionName(t);e[n]&&(e[t]=e[n],delete e[n])}static storePrototypeOriginFunction(e,t){if(!e)return;if(!e.prototype[t])return;const n=this.getOriginFunctionName(t);e.prototype[n]||(e.prototype[n]=e.prototype[t])}static executePrototypeOriginFunction(e,t,n,i){if(!e)return;const r=this.getOriginFunctionName(n);return t.prototype[r]?(e[r]||(e[r]=t.prototype[r]),this.executeFunction(e,r,i)):void 0}static executeOriginFunction(e,t,n){if(!e)return;const i=this.getOriginFunctionName(t);return e[i]?this.executeFunction(e,i,n):void 0}static executeFunction(e,t,n){const i=n;if(void 0===i||0===i.length)return e[t]();switch(i.length){case 1:return e[t](i[0]);case 2:return e[t](i[0],i[1]);case 3:return e[t](i[0],i[1],i[2]);case 4:return e[t](i[0],i[1],i[2],i[3]);case 5:return e[t](i[0],i[1],i[2],i[3],i[4]);case 6:return e[t](i[0],i[1],i[2],i[3],i[4],i[5]);case 7:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6]);case 8:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);case 9:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8]);case 10:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9]);case 11:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10]);case 12:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11]);case 13:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12]);case 14:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13]);case 15:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14]);case 16:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15]);case 17:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15],i[16]);case 18:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15],i[16],i[17]);case 19:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15],i[16],i[17],i[18]);case 20:return e[t](i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],i[12],i[13],i[14],i[15],i[16],i[17],i[18],i[19]);default:return e[t].apply(e,i)}}static getOriginFunctionName(e){return this.originFunctionPrefix+e}}A.originFunctionPrefix="__SPECTOR_Origin_";class R extends _{get spiedCommandName(){return R.commandName}stringifyArgs(e){const t=[];if(e.length>0){const n=e[0],i=this.stringifyValue(n);t.push(i)}if(e.length>1){const n=""+e[1];t.push(n)}return e.length>2&&t.push(e[2]),t}}R.commandName="bindAttribLocation";class S extends _{get spiedCommandName(){return S.commandName}stringifyArgs(e){const t=[],n=this.options.context.getParameter(d.READ_FRAMEBUFFER_BINDING.value),i=this.options.tagWebGlObject(n);t.push("READ FROM: "+this.stringifyValue(i));const r=this.options.context.getParameter(d.DRAW_FRAMEBUFFER_BINDING.value),s=this.options.tagWebGlObject(r);t.push("WRITE TO: "+this.stringifyValue(s));for(let n=0;n<8;n++)t.push(e[n]);return(e[8]&d.DEPTH_BUFFER_BIT.value)===d.DEPTH_BUFFER_BIT.value&&t.push(d.DEPTH_BUFFER_BIT.name),(e[8]&d.STENCIL_BUFFER_BIT.value)===d.STENCIL_BUFFER_BIT.value&&t.push(d.STENCIL_BUFFER_BIT.name),(e[8]&d.COLOR_BUFFER_BIT.value)===d.COLOR_BUFFER_BIT.value&&t.push(d.COLOR_BUFFER_BIT.name),t.push(d.stringifyWebGlConstant(e[9],"blitFrameBuffer")),t}}S.commandName="blitFrameBuffer";class T extends _{get spiedCommandName(){return T.commandName}stringifyArgs(e){const t=[];return(e[0]&d.DEPTH_BUFFER_BIT.value)===d.DEPTH_BUFFER_BIT.value&&t.push(d.DEPTH_BUFFER_BIT.name),(e[0]&d.STENCIL_BUFFER_BIT.value)===d.STENCIL_BUFFER_BIT.value&&t.push(d.STENCIL_BUFFER_BIT.name),(e[0]&d.COLOR_BUFFER_BIT.value)===d.COLOR_BUFFER_BIT.value&&t.push(d.COLOR_BUFFER_BIT.name),t}}T.commandName="clear";const b=["lineWidth"];class w extends _{constructor(e,t){super(e),this.internalSpiedCommandName=t,this.isDeprecated=b.indexOf(this.spiedCommandName)>-1}get spiedCommandName(){return this.internalSpiedCommandName}transformCapture(e){this.isDeprecated&&(e.status=50)}}class x extends _{get spiedCommandName(){return x.commandName}stringifyArgs(e){const t=[];return t.push(e[0]),t}}x.commandName="disableVertexAttribArray";class y extends _{get spiedCommandName(){return y.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(e[1]+" indices"),t.push(e[2]),t}}y.commandName="drawArrays";class L extends _{get spiedCommandName(){return L.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArraysInstanced")),t.push(e[1]),t.push(e[2]),t.push(e[3]),t}}L.commandName="drawArraysInstanced";class I extends _{get spiedCommandName(){return I.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArraysInstancedANGLE")),t.push(e[1]),t.push(e[2]),t.push(e[3]),t}}I.commandName="drawArraysInstancedANGLE";class F extends _{get spiedCommandName(){return F.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawElements")),t.push(e[1]+" indices"),t.push(d.stringifyWebGlConstant(e[2],"drawElements")),t.push(e[3]),t}}F.commandName="drawElements";class N extends _{get spiedCommandName(){return N.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawElementsInstancedANGLE")),t.push(e[1]+" indices"),t.push(d.stringifyWebGlConstant(e[2],"drawElementsInstancedANGLE")),t.push(e[3]),t.push(e[4]),t}}N.commandName="drawElementsInstancedANGLE";class M extends _{get spiedCommandName(){return M.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawElementsInstanced")),t.push(e[1]+" indices"),t.push(d.stringifyWebGlConstant(e[2],"drawElementsInstanced")),t.push(e[3]),t.push(e[4]),t}}M.commandName="drawElementsInstanced";class O extends _{get spiedCommandName(){return O.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawRangeElements")),t.push(e[1]),t.push(e[2]),t.push(e[3]),t.push(d.stringifyWebGlConstant(e[4],"drawRangeElements")),t.push(e[5]),t}}O.commandName="drawRangeElements";class B extends _{get spiedCommandName(){return B.commandName}stringifyResult(e){if(e)return`name: ${e.name}, size: ${e.size}, type: ${e.type}`}}B.commandName="getActiveAttrib";class $ extends _{get spiedCommandName(){return $.commandName}stringifyResult(e){if(e)return`name: ${e.name}, size: ${e.size}, type: ${e.type}`}}$.commandName="getActiveUniform";class P extends _{get spiedCommandName(){return P.commandName}stringifyResult(e){var t;if(null!=e)return null!==(t=null==e?void 0:e.toFixed(0))&&void 0!==t?t:"0"}}P.commandName="getAttribLocation";class k extends _{get spiedCommandName(){return k.commandName}stringifyResult(e){return e?"true":"false"}}k.commandName="getExtension";class D extends _{get spiedCommandName(){return D.commandName}stringifyResult(e){if(!e)return"null";const t=E.getWebGlObjectTag(e);return t?t.displayText:e}}D.commandName="getParameter";class U extends _{get spiedCommandName(){return U.commandName}stringifyResult(e){if(e)return`min: ${e.rangeMin}, max: ${e.rangeMax}, precision: ${e.precision}`}}U.commandName="getShaderPrecisionFormat";class G extends _{get spiedCommandName(){return G.commandName}stringifyResult(e){if(e)return`name: ${e.name}, size: ${e.size}, type: ${e.type}`}}G.commandName="getTransformFeedbackVarying";class W extends _{get spiedCommandName(){return W.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"multiDrawArraysInstancedBaseInstanceWEBGL")),t.push(`drawCount=${e[9]}`),t.push(e[2]),t.push(e[4]),t.push(e[6]),t.push(e[8]),t}}W.commandName="multiDrawArraysInstancedBaseInstanceWEBGL";class V extends _{get spiedCommandName(){return V.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(`drawCount=${e[7]}`),t.push(e[2]),t.push(e[4]),t.push(e[6]),t}}V.commandName="multiDrawArraysInstancedWEBGL";class H extends _{get spiedCommandName(){return H.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(`drawCount=${e[5]}`),t.push(e[2]),t.push(e[4]),t}}H.commandName="multiDrawArraysWEBGL";class X extends _{get spiedCommandName(){return X.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(d.stringifyWebGlConstant(e[3],"drawArrays")),t.push(`drawCount=${e[11]}`),t.push(e[2]),t.push(e[4]),t.push(e[6]),t.push(e[8]),t.push(e[10]),t}}X.commandName="multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL";class z extends _{get spiedCommandName(){return z.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(d.stringifyWebGlConstant(e[3],"drawArrays")),t.push(`drawCount=${e[8]}`),t.push(e[2]),t.push(e[5]),t.push(e[7]),t}}z.commandName="multiDrawElementsInstancedWEBGL";class K extends _{get spiedCommandName(){return K.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArrays")),t.push(d.stringifyWebGlConstant(e[3],"drawArrays")),t.push(`drawCount=${e[6]}`),t.push(e[2]),t.push(e[5]),t}}K.commandName="multiDrawElementsWEBGL";class j extends _{get spiedCommandName(){return j.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawArraysInstanced")),t.push(e[1]),t.push(e[2]),t.push(e[3]),t.push(`baseInstance = ${e[4]}`),t}}j.commandName="drawArraysInstancedBaseInstanceWEBGL";class Y extends _{get spiedCommandName(){return Y.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"drawElementsInstanced")),t.push(e[1]+" indices"),t.push(d.stringifyWebGlConstant(e[2],"drawElementsInstanced")),t.push(e[3]),t.push(e[4]),t.push(`baseVertex = ${e[5]}`),t.push(`baseInstance = ${e[6]}`),t}}Y.commandName="drawElementsInstancedBaseVertexBaseInstanceWEBGL";class q extends _{get spiedCommandName(){return q.commandName}stringifyArgs(e){var t,n;const i=[];for(let r=0;r<4;r++)i.push(null!==(n=null===(t=e[r])||void 0===t?void 0:t.toFixed(0))&&void 0!==n?n:"0");return i}}function Z(e){return null==e?"":`${e.toFixed(0)} (0b${(e>>>0).toString(2)})`}q.commandName="scissor";class Q extends _{get spiedCommandName(){return Q.commandName}stringifyArgs(e){const t=[];return t.push(Z(e[0])),t}}Q.commandName="stencilMask";class J extends _{get spiedCommandName(){return J.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"stencilMaskSeparate")),t.push(Z(e[1])),t}}J.commandName="stencilMaskSeparate";class ee extends _{get spiedCommandName(){return ee.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"stencilFunc")),t.push(Z(e[1])),t.push(Z(e[2])),t}}ee.commandName="stencilFunc";class te extends _{get spiedCommandName(){return te.commandName}stringifyArgs(e){const t=[];return t.push(d.stringifyWebGlConstant(e[0],"stencilFuncSeparate")),t.push(d.stringifyWebGlConstant(e[1],"stencilFuncSeparate")),t.push(Z(e[2])),t.push(Z(e[3])),t}}te.commandName="stencilFuncSeparate";class ne extends _{get spiedCommandName(){return ne.commandName}stringifyArgs(e){const t=[];return t.push(e[0]),t.push(e[1]),t.push(d.stringifyWebGlConstant(e[2],"vertexAttribPointer")),t.push(e[3]),t.push(e[4]),t.push(e[5]),t}}ne.commandName="vertexAttribPointer";class ie extends _{get spiedCommandName(){return ie.commandName}stringifyArgs(e){const t=[];for(let n=0;n<4;n++)t.push(e[n].toFixed(0));return t}}ie.commandName="viewport";class re extends _{get spiedCommandName(){return re.commandName}stringifyArgs(e){const t=[];return t.push(e[0]),t}}re.commandName="enableVertexAttribArray";class se{constructor(e){this.spiedCommandName=e.spiedCommandName,this.spiedCommandRunningContext=e.spiedCommandRunningContext,this.spiedCommand=this.spiedCommandRunningContext[this.spiedCommandName],A.storeOriginFunction(this.spiedCommandRunningContext,this.spiedCommandName),this.callback=e.callback,this.commandOptions={context:e.context,contextVersion:e.contextVersion,extensions:e.extensions,toggleCapture:e.toggleCapture},this.initCustomCommands(),this.initCommand()}spy(){this.spiedCommandRunningContext[this.spiedCommandName]=this.overloadedCommand}unSpy(){this.spiedCommandRunningContext[this.spiedCommandName]=this.spiedCommand}createCapture(e,t,n){return this.command.createCapture(e,t,n)}initCommand(){se.customCommandsConstructors[this.spiedCommandName]?this.command=se.customCommandsConstructors[this.spiedCommandName](this.commandOptions):this.command=new w(this.commandOptions,this.spiedCommandName),this.overloadedCommand=this.getSpy()}getSpy(){const e=this;return function(){const t=a.now,n=A.executeOriginFunction(e.spiedCommandRunningContext,e.spiedCommandName,arguments),i=a.now,r={name:e.spiedCommandName,arguments,result:n,startTime:t,endTime:i};return e.callback(e,r),n}}initCustomCommands(){se.customCommandsConstructors||(se.customCommandsConstructors={[R.commandName]:e=>new R(e),[S.commandName]:e=>new S(e),[C.commandName]:e=>new C(e),[T.commandName]:e=>new T(e),[x.commandName]:e=>new x(e),[y.commandName]:e=>new y(e),[L.commandName]:e=>new L(e),[I.commandName]:e=>new I(e),[F.commandName]:e=>new F(e),[M.commandName]:e=>new M(e),[N.commandName]:e=>new N(e),[O.commandName]:e=>new O(e),[B.commandName]:e=>new B(e),[$.commandName]:e=>new $(e),[P.commandName]:e=>new P(e),[k.commandName]:e=>new k(e),[D.commandName]:e=>new D(e),[U.commandName]:e=>new U(e),[G.commandName]:e=>new G(e),[W.commandName]:e=>new W(e),[V.commandName]:e=>new V(e),[H.commandName]:e=>new H(e),[X.commandName]:e=>new X(e),[z.commandName]:e=>new z(e),[K.commandName]:e=>new K(e),[j.commandName]:e=>new j(e),[Y.commandName]:e=>new Y(e),[q.commandName]:e=>new q(e),[Q.commandName]:e=>new Q(e),[J.commandName]:e=>new J(e),[ee.commandName]:e=>new ee(e),[te.commandName]:e=>new te(e),[ne.commandName]:e=>new ne(e),[ie.commandName]:e=>new ie(e),[re.commandName]:e=>new re(e)})}}class oe{constructor(e){this.options=e,this.context=e.context,this.contextVersion=e.contextVersion,this.extensions=e.extensions,this.toggleCapture=e.toggleCapture,this.consumeCommands=this.getConsumeCommands(),this.changeCommandsByState=this.getChangeCommandsByState(),this.commandNameToStates=this.getCommandNameToStates()}get requireStartAndStopStates(){return!0}startCapture(e,t,n){return this.quickCapture=t,this.fullCapture=n,this.capturedCommandsByState={},e&&this.requireStartAndStopStates&&(this.currentState={},this.readFromContextNoSideEffects()),this.copyCurrentStateToPrevious(),this.currentState={},this.previousState}stopCapture(){return this.requireStartAndStopStates&&this.readFromContextNoSideEffects(),this.analyse(void 0),this.currentState}registerCallbacks(e){for(const t in this.changeCommandsByState)if(this.changeCommandsByState.hasOwnProperty(t))for(const n of this.changeCommandsByState[t])e[n]=e[n]||[],e[n].push(this.onChangeCommand.bind(this));for(const t of this.consumeCommands)e[t]=e[t]||[],e[t].push(this.onConsumeCommand.bind(this))}getStateData(){return this.currentState}getConsumeCommands(){return[]}getChangeCommandsByState(){return{}}copyCurrentStateToPrevious(){this.currentState&&(this.previousState=this.currentState)}onChangeCommand(e){const t=this.commandNameToStates[e.name];for(const n of t){if(!this.isValidChangeCommand(e,n))return;this.capturedCommandsByState[n]=this.capturedCommandsByState[n]||[],this.capturedCommandsByState[n].push(e)}}isValidChangeCommand(e,t){return!0}onConsumeCommand(e){this.isValidConsumeCommand(e)&&(this.readFromContextNoSideEffects(),this.analyse(e),this.storeCommandIds(),e[this.stateName]=this.currentState,this.startCapture(!1,this.quickCapture,this.fullCapture))}isValidConsumeCommand(e){return this.lastCommandName=null==e?void 0:e.name,!0}analyse(e){for(const t in this.capturedCommandsByState)if(this.capturedCommandsByState.hasOwnProperty(t)){const n=this.capturedCommandsByState[t],i=n.length-1;if(i>=0)if(e){for(let t=0;t1&&this.parameters.push(this.getWebgl2Parameters());const e={};for(let t=1;t<=this.contextVersion&&!(t>this.parameters.length);t++)if(this.parameters[t-1])for(const n of this.parameters[t-1])if(n.changeCommands)for(const t of n.changeCommands)e[n.constant.name]=e[n.constant.name]||[],e[n.constant.name].push(t);return e}readFromContext(){for(let e=1;e<=this.contextVersion&&!(e>this.parameters.length);e++)for(const t of this.parameters[e-1]){const e=this.readParameterFromContext(t);if(null==e){const n=this.stringifyParameterValue(e,t);this.currentState[t.constant.name]=n;continue}const n=E.getWebGlObjectTag(e);if(n)this.currentState[t.constant.name]=n;else{const n=this.stringifyParameterValue(e,t);this.currentState[t.constant.name]=n}}}readParameterFromContext(e){return e.constant.extensionName&&!this.extensions[e.constant.extensionName]?`Extension ${e.constant.extensionName} is unavailable.`:this.context.getParameter(e.constant.value)}stringifyParameterValue(e,t){if(null===e)return"null";if(void 0===e)return"undefined";if(30===t.returnType)return Z(e);if("number"==typeof e&&d.isWebGlConstant(e)){if(20===t.returnType){const n=t.changeCommands&&t.changeCommands[0]||"";return d.stringifyWebGlConstant(e,n)}return e}if(e.length&&"string"!=typeof e){const t=[];for(let n=0;n1?i=this.context.getFramebufferAttachmentParameter(t,n,d.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE.value):this.context.getFramebufferAttachmentParameter(t,n,d.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME.value)===d.RENDERBUFFER.value&&(i=e.getRenderbufferParameter(e.RENDERBUFFER,e.RENDERBUFFER_STENCIL_SIZE))):i=this.readParameterFromContext({constant:d.STENCIL_BITS}),this.currentState[d.STENCIL_BITS.name]=""+i}isValidChangeCommand(e,t){return"enable"===e.name||"disable"===e.name?e.commandArguments[0]===d.STENCIL_TEST.value:"stencilOp"===e.name||"stencilOpSeparate"===e.name?_e.stencilOpStates.indexOf(e.commandArguments[0])>0:"stencilFunc"===e.name||"stencilFuncSeparate"===e.name?_e.stencilFuncStates.indexOf(e.commandArguments[0])>0:"stencilMask"!==e.name&&"stencilMaskSeparate"!==e.name||_e.stencilMaskStates.indexOf(e.commandArguments[0])>0}getConsumeCommands(){return u}isStateEnable(e,t){return this.context.isEnabled(d.STENCIL_TEST.value)}}_e.stateName="StencilState",_e.stencilOpStates=[d.STENCIL_BACK_FAIL.value,d.STENCIL_BACK_PASS_DEPTH_FAIL.value,d.STENCIL_BACK_PASS_DEPTH_PASS.value,d.STENCIL_FAIL.value,d.STENCIL_PASS_DEPTH_FAIL.value,d.STENCIL_PASS_DEPTH_PASS.value],_e.stencilFuncStates=[d.STENCIL_BACK_FUNC.value,d.STENCIL_BACK_REF.value,d.STENCIL_BACK_VALUE_MASK.value,d.STENCIL_FUNC.value,d.STENCIL_REF.value,d.STENCIL_VALUE_MASK.value],_e.stencilMaskStates=[d.STENCIL_BACK_WRITEMASK.value,d.STENCIL_WRITEMASK.value];class Ce{static isSupportedCombination(e,t,n){return e=e||d.UNSIGNED_BYTE.value,((t=t||d.RGBA.value)===d.RGB.value||t===d.RGBA.value)&&(n===d.RGB.value||n===d.RGBA.value||n===d.RGBA8.value||n===d.RGBA16F.value||n===d.RGBA32F.value||n===d.RGB16F.value||n===d.RGB32F.value||n===d.R11F_G11F_B10F.value||n===d.SRGB8.value||n===d.SRGB8_ALPHA8.value)&&this.isSupportedComponentType(e)}static readPixels(e,t,n,i,r,s){e.getError(),s===d.UNSIGNED_NORMALIZED.value&&(s=d.UNSIGNED_BYTE.value);const o=i*r*4;let a;if(s===d.UNSIGNED_BYTE.value?a=new Uint8Array(o):(s=d.FLOAT.value,a=new Float32Array(o)),e.readPixels(t,n,i,r,e.RGBA,s,a),e.getError())return;if(s===d.UNSIGNED_BYTE.value)return a;const l=new Uint8Array(i*r*4);for(let e=0;e1){const e=this.context.getParameter(d.MAX_DRAW_BUFFERS.value);for(let n=0;n1?this.context.getFramebufferAttachmentParameter(a,n.value,d.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE.value):d.UNSIGNED_BYTE.value;l===d.RENDERBUFFER.value?this.readFrameBufferAttachmentFromRenderBuffer(e,t,n,i,r,s,o,a,u,c):l===d.TEXTURE.value&&this.readFrameBufferAttachmentFromTexture(e,t,n,i,r,s,o,a,u,c)}readFrameBufferAttachmentFromRenderBuffer(e,t,n,i,r,s,o,a,l,c){let u=0,h=0;if(c.__SPECTOR_Object_CustomData){const e=c.__SPECTOR_Object_CustomData;if(s=e.width,o=e.height,u=e.samples,h=e.internalFormat,!u&&!Ce.isSupportedCombination(l,d.RGBA.value,h))return}else s+=i,o+=r;if(i=r=0,u){const a=e,c=e.createRenderbuffer(),u=e.getParameter(e.RENDERBUFFER_BINDING);e.bindRenderbuffer(e.RENDERBUFFER,c),e.renderbufferStorage(e.RENDERBUFFER,h,s,o),e.bindRenderbuffer(e.RENDERBUFFER,u),e.bindFramebuffer(d.FRAMEBUFFER.value,this.captureFrameBuffer),e.framebufferRenderbuffer(d.FRAMEBUFFER.value,d.COLOR_ATTACHMENT0.value,d.RENDERBUFFER.value,c);const m=a.getParameter(a.READ_FRAMEBUFFER_BINDING),p=a.getParameter(a.DRAW_FRAMEBUFFER_BINDING);a.bindFramebuffer(a.READ_FRAMEBUFFER,t),a.bindFramebuffer(a.DRAW_FRAMEBUFFER,this.captureFrameBuffer),a.blitFramebuffer(0,0,s,o,0,0,s,o,e.COLOR_BUFFER_BIT,e.NEAREST),a.bindFramebuffer(d.FRAMEBUFFER.value,this.captureFrameBuffer),a.bindFramebuffer(a.READ_FRAMEBUFFER,m),a.bindFramebuffer(a.DRAW_FRAMEBUFFER,p),this.context.checkFramebufferStatus(d.FRAMEBUFFER.value)===d.FRAMEBUFFER_COMPLETE.value&&this.getCapture(e,n.name,i,r,s,o,0,0,l),e.bindFramebuffer(d.FRAMEBUFFER.value,t),e.deleteRenderbuffer(c)}else e.bindFramebuffer(d.FRAMEBUFFER.value,this.captureFrameBuffer),e.framebufferRenderbuffer(d.FRAMEBUFFER.value,d.COLOR_ATTACHMENT0.value,d.RENDERBUFFER.value,c),this.context.checkFramebufferStatus(d.FRAMEBUFFER.value)===d.FRAMEBUFFER_COMPLETE.value&&this.getCapture(e,n.name,i,r,s,o,0,0,l),e.bindFramebuffer(d.FRAMEBUFFER.value,t)}readFrameBufferAttachmentFromTexture(e,t,n,i,r,s,o,a,l,c){let u=0;this.contextVersion>1&&(u=this.context.getFramebufferAttachmentParameter(a,n.value,d.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER.value));const h=this.context.getFramebufferAttachmentParameter(a,n.value,d.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL.value),m=this.context.getFramebufferAttachmentParameter(a,n.value,d.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE.value);m>0?p[m].name:d.TEXTURE_2D.name;let g=!1,f=l;if(c.__SPECTOR_Object_CustomData){const e=c.__SPECTOR_Object_CustomData;if(s=e.width,o=e.height,void 0!==e.type&&(f=e.type),g=e.target===d.TEXTURE_2D_ARRAY.name,!Ce.isSupportedCombination(e.type,e.format,e.internalFormat))return}else s+=i,o+=r;i=r=0,e.bindFramebuffer(d.FRAMEBUFFER.value,this.captureFrameBuffer),u>0||g?e.framebufferTextureLayer(d.FRAMEBUFFER.value,d.COLOR_ATTACHMENT0.value,c,h,u):e.framebufferTexture2D(d.FRAMEBUFFER.value,d.COLOR_ATTACHMENT0.value,m||d.TEXTURE_2D.value,c,h),this.context.checkFramebufferStatus(d.FRAMEBUFFER.value)===d.FRAMEBUFFER_COMPLETE.value&&this.getCapture(e,n.name,i,r,s,o,m,u,f),e.bindFramebuffer(d.FRAMEBUFFER.value,t)}getCapture(e,t,n,i,r,o,a,l,c){r=Math.floor(r),o=Math.floor(o);const u={attachmentName:t,src:null,textureCubeMapFace:a?p[a].name:null,textureLayer:l};if(!this.quickCapture)try{const t=Ce.readPixels(e,n,i,r,o,c);if(t){this.workingCanvas.width=r,this.workingCanvas.height=o;const e=this.workingContext2D.createImageData(r,o);if(e.data.set(t),this.workingContext2D.putImageData(e,0,0),this.fullCapture)this.captureCanvas.width=this.workingCanvas.width,this.captureCanvas.height=this.workingCanvas.height;else{const e=r/o;e<1?(this.captureCanvas.width=Ae.captureBaseSize*e,this.captureCanvas.height=Ae.captureBaseSize):e>1?(this.captureCanvas.width=Ae.captureBaseSize,this.captureCanvas.height=Ae.captureBaseSize/e):(this.captureCanvas.width=Ae.captureBaseSize,this.captureCanvas.height=Ae.captureBaseSize)}this.captureCanvas.width=Math.max(this.captureCanvas.width,1),this.captureCanvas.height=Math.max(this.captureCanvas.height,1),this.captureContext2D.globalCompositeOperation="copy",this.captureContext2D.scale(1,-1),this.captureContext2D.translate(0,-this.captureCanvas.height),this.captureContext2D.drawImage(this.workingCanvas,0,0,r,o,0,0,this.captureCanvas.width,this.captureCanvas.height),this.captureContext2D.setTransform(1,0,0,1,0,0),this.captureContext2D.globalCompositeOperation="source-over",u.src=this.captureCanvas.toDataURL()}}catch(e){s.warn("Spector can not capture the visual state: "+e)}this.currentState.Attachments.push(u)}analyse(e){}}Ae.stateName="VisualState",Ae.captureBaseSize=256;class Re{constructor(e){this.context=e.context,this.captureFrameBuffer=e.context.createFramebuffer(),this.workingCanvas=document.createElement("canvas"),this.workingContext2D=this.workingCanvas.getContext("2d"),this.captureCanvas=document.createElement("canvas"),this.captureContext2D=this.captureCanvas.getContext("2d"),this._setSmoothing(!0)}appendTextureState(e,t,n=null,i){if(!t)return;const r=t.__SPECTOR_Object_CustomData;if(r&&(this.fullCapture=i,r.type&&(e.textureType=this.getWebGlConstant(r.type)),r.format&&(e.format=this.getWebGlConstant(r.format)),r.internalFormat&&(e.internalFormat=this.getWebGlConstant(r.internalFormat)),e.width=r.width,e.height=r.height,r.depth&&(e.depth=r.depth),n)){const i="NEAREST"===e.samplerMagFilter||"NEAREST"===e.magFilter;e.visual=this.getTextureVisualState(n,t,r,i)}}getTextureVisualState(e,t,n,i){try{const r=this.context,s={};if(!Ce.isSupportedCombination(n.type,n.format,n.internalFormat))return s;const o=this.context.getParameter(d.FRAMEBUFFER_BINDING.value);r.bindFramebuffer(d.FRAMEBUFFER.value,this.captureFrameBuffer);try{const o=0,a=n.width,l=n.height;if(e===d.TEXTURE_3D&&n.depth){const e=r;for(let c=0;c2&&c2&&c1?(this.captureCanvas.width=Ae.captureBaseSize,this.captureCanvas.height=Ae.captureBaseSize/e):(this.captureCanvas.width=Ae.captureBaseSize,this.captureCanvas.height=Ae.captureBaseSize)}return this.captureCanvas.width=Math.max(this.captureCanvas.width,1),this.captureCanvas.height=Math.max(this.captureCanvas.height,1),this.captureContext2D.globalCompositeOperation="copy",this.captureContext2D.scale(1,-1),this.captureContext2D.translate(0,-this.captureCanvas.height),this._setSmoothing(!o),this.captureContext2D.drawImage(this.workingCanvas,0,0,i,r,0,0,this.captureCanvas.width,this.captureCanvas.height),this.captureContext2D.setTransform(1,0,0,1,0,0),this.captureContext2D.globalCompositeOperation="source-over",this.captureCanvas.toDataURL()}catch(e){}}getWebGlConstant(e){const t=p[e];return t?t.name:e+""}_setSmoothing(e){this.captureContext2D.imageSmoothingEnabled=e,this.captureContext2D.mozImageSmoothingEnabled=e,this.captureContext2D.oImageSmoothingEnabled=e,this.captureContext2D.webkitImageSmoothingEnabled=e,this.captureContext2D.msImageSmoothingEnabled=e}}Re.captureBaseSize=64,Re.cubeMapFaces=[d.TEXTURE_CUBE_MAP_POSITIVE_X,d.TEXTURE_CUBE_MAP_POSITIVE_Y,d.TEXTURE_CUBE_MAP_POSITIVE_Z,d.TEXTURE_CUBE_MAP_NEGATIVE_X,d.TEXTURE_CUBE_MAP_NEGATIVE_Y,d.TEXTURE_CUBE_MAP_NEGATIVE_Z];class Se{constructor(e){this.context=e.context}getUboValue(e,t,n,i){const r=Se.uboTypes[i];if(!r)return;const s=new r.arrayBufferView(n*r.lengthMultiplier),o=this.context,a=o.getIndexedParameter(d.UNIFORM_BUFFER_BINDING.value,e);if(a){const n=o.getIndexedParameter(d.UNIFORM_BUFFER_START.value,e),i=o.getParameter(d.UNIFORM_BUFFER_BINDING.value);try{o.bindBuffer(d.UNIFORM_BUFFER.value,a),o.getBufferSubData(d.UNIFORM_BUFFER.value,n+t,s)}catch(e){return}i&&o.bindBuffer(d.UNIFORM_BUFFER.value,i)}return Array.prototype.slice.call(s)}}Se.uboTypes={[d.BOOL.value]:{arrayBufferView:Uint8Array,lengthMultiplier:1},[d.BOOL_VEC2.value]:{arrayBufferView:Uint8Array,lengthMultiplier:2},[d.BOOL_VEC3.value]:{arrayBufferView:Uint8Array,lengthMultiplier:3},[d.BOOL_VEC4.value]:{arrayBufferView:Uint8Array,lengthMultiplier:4},[d.INT.value]:{arrayBufferView:Int32Array,lengthMultiplier:1},[d.INT_VEC2.value]:{arrayBufferView:Int32Array,lengthMultiplier:2},[d.INT_VEC3.value]:{arrayBufferView:Int32Array,lengthMultiplier:3},[d.INT_VEC4.value]:{arrayBufferView:Int32Array,lengthMultiplier:4},[d.UNSIGNED_INT.value]:{arrayBufferView:Uint32Array,lengthMultiplier:1},[d.UNSIGNED_INT_VEC2.value]:{arrayBufferView:Uint32Array,lengthMultiplier:2},[d.UNSIGNED_INT_VEC3.value]:{arrayBufferView:Uint32Array,lengthMultiplier:3},[d.UNSIGNED_INT_VEC4.value]:{arrayBufferView:Uint32Array,lengthMultiplier:4},[d.FLOAT.value]:{arrayBufferView:Float32Array,lengthMultiplier:1},[d.FLOAT_VEC2.value]:{arrayBufferView:Float32Array,lengthMultiplier:2},[d.FLOAT_VEC3.value]:{arrayBufferView:Float32Array,lengthMultiplier:3},[d.FLOAT_VEC4.value]:{arrayBufferView:Float32Array,lengthMultiplier:4},[d.FLOAT_MAT2.value]:{arrayBufferView:Float32Array,lengthMultiplier:4},[d.FLOAT_MAT2x3.value]:{arrayBufferView:Float32Array,lengthMultiplier:6},[d.FLOAT_MAT2x4.value]:{arrayBufferView:Float32Array,lengthMultiplier:8},[d.FLOAT_MAT3.value]:{arrayBufferView:Float32Array,lengthMultiplier:9},[d.FLOAT_MAT3x2.value]:{arrayBufferView:Float32Array,lengthMultiplier:6},[d.FLOAT_MAT3x4.value]:{arrayBufferView:Float32Array,lengthMultiplier:12},[d.FLOAT_MAT4.value]:{arrayBufferView:Float32Array,lengthMultiplier:16},[d.FLOAT_MAT4x2.value]:{arrayBufferView:Float32Array,lengthMultiplier:8},[d.FLOAT_MAT4x3.value]:{arrayBufferView:Float32Array,lengthMultiplier:12},[d.SAMPLER_2D.value]:{arrayBufferView:Uint8Array,lengthMultiplier:1},[d.SAMPLER_CUBE.value]:{arrayBufferView:Uint8Array,lengthMultiplier:1}};class Te extends v{get typeName(){return"WebGLBuffer"}}class be extends v{get typeName(){return"WebGLFramebuffer"}}class we extends v{get typeName(){return"WebGLProgram"}static saveInGlobalStore(e){const t=E.getWebGlObjectTag(e);t&&(this.store[t.id]=e)}static getFromGlobalStore(e){return this.store[e]}static updateInGlobalStore(e,t){if(!t)return;const n=this.getFromGlobalStore(e);if(!n)return;const i=E.getWebGlObjectTag(n);i&&(E.attachWebGlObjectTag(t,i),this.store[i.id]=t)}}we.store={};class xe extends v{get typeName(){return"WebGLQuery"}}class ye extends v{get typeName(){return"WebGLRenderbuffer"}}class Le extends v{get typeName(){return"WebGLSampler"}}class Ie extends v{get typeName(){return"WebGLShader"}}class Fe extends v{get typeName(){return"WebGLSync"}}class Ne extends v{get typeName(){return"WebGLTexture"}}class Me extends v{get typeName(){return"WebGLTransformFeedback"}}class Oe extends v{get typeName(){return"WebGLUniformLocation"}}class Be extends v{get typeName(){return"WebGLVertexArrayObject"}}class $e{static getProgramData(e,t){const n={LINK_STATUS:e.getProgramParameter(t,d.LINK_STATUS.value),VALIDATE_STATUS:e.getProgramParameter(t,d.VALIDATE_STATUS.value)},i=e.getAttachedShaders(t),r=new Array(2);let s=0;for(const t of i){const n=this.readShaderFromContext(e,t);s+=n.source.length,n.shaderType===d.FRAGMENT_SHADER.name?r[1]=n:r[0]=n}return{programStatus:n,shaders:r,length:s}}static readShaderFromContext(e,t){const n=e.getShaderSource(t),i=e.getExtension("WEBGL_debug_shaders"),r=i?i.getTranslatedShaderSource(t):null,s=e.getShaderParameter(t,d.SHADER_TYPE.value)===d.FRAGMENT_SHADER.value;let o=t&&t.__SPECTOR_Metadata&&t.__SPECTOR_Metadata.name?t.__SPECTOR_Metadata.name:this.readNameFromShaderSource(n);return o||(o=s?"Fragment":"Vertex"),{COMPILE_STATUS:e.getShaderParameter(t,d.COMPILE_STATUS.value),shaderType:s?d.FRAGMENT_SHADER.name:d.VERTEX_SHADER.name,name:o,source:n,translatedSource:r}}static readNameFromShaderSource(e){try{let t,n="";const i=/#define[\s]+SHADER_NAME[\s]+([\S]+)(\n|$)/gi;if(t=i.exec(e),null!==t&&(t.index===i.lastIndex&&i.lastIndex++,n=t[1]),""===n){const i=/#define[\s]+SHADER_NAME_B64[\s]+([\S]+)(\n|$)/gi;t=i.exec(e),null!==t&&(t.index===i.lastIndex&&i.lastIndex++,n=t[1]),n&&(n=decodeURIComponent(atob(n)))}return n}catch(e){return null}}}class Pe extends oe{constructor(e){super(e),this.drawCallTextureInputState=new Re(e),this.drawCallUboInputState=new Se(e)}get stateName(){return Pe.stateName}get requireStartAndStopStates(){return!1}getConsumeCommands(){return u}getChangeCommandsByState(){return{}}readFromContext(){var e,t;const n=this.context.getParameter(d.CURRENT_PROGRAM.value);if(!n)return;this.currentState.frameBuffer=this.readFrameBufferFromContext();const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData:$e.getProgramData(this.context,n);if(this.currentState.programStatus=Object.assign({},r.programStatus),this.currentState.programStatus.program=this.getSpectorData(n),this.currentState.programStatus.RECOMPILABLE=i.isBuildableProgram(n),this.currentState.programStatus.RECOMPILABLE&&we.saveInGlobalStore(n),this.currentState.shaders=r.shaders,(null===(e=this.lastCommandName)||void 0===e?void 0:e.indexOf("Elements"))>=0){const e=this.context.getParameter(this.context.ELEMENT_ARRAY_BUFFER_BINDING);e&&(this.currentState.elementArray={},this.currentState.elementArray.arrayBuffer=this.getSpectorData(e))}const s=this.context.getProgramParameter(n,d.ACTIVE_ATTRIBUTES.value);this.currentState.attributes=[];for(let e=0;e1){const e=this.context.getProgramParameter(n,d.ACTIVE_UNIFORM_BLOCKS.value);this.currentState.uniformBlocks=[];for(let t=0;t1){const e=this.context;t.colorAttachments=[];const n=e.getParameter(d.MAX_DRAW_BUFFERS.value);for(let e=0;e1&&(i.alphaSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE.value),i.blueSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE.value),i.encoding=this.getWebGlConstant(this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING.value)),i.componentType=this.getWebGlConstant(this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE.value)),i.depthSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE.value),i.greenSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE.value),i.redSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_RED_SIZE.value),i.stencilSize=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE.value),n===d.TEXTURE.value&&(i.textureLayer=this.context.getFramebufferAttachmentParameter(t,e,d.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER.value))),i}readAttributeFromContext(e,t){const n=this.context.getActiveAttrib(e,t),i=this.context.getAttribLocation(e,n.name);if(-1===i)return{name:n.name,size:n.size,type:this.getWebGlConstant(n.type),location:-1};const r=this.context.getVertexAttrib(i,d.CURRENT_VERTEX_ATTRIB.value),s=this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING.value),o={name:n.name,size:n.size,type:this.getWebGlConstant(n.type),location:i,offsetPointer:this.context.getVertexAttribOffset(i,d.VERTEX_ATTRIB_ARRAY_POINTER.value),bufferBinding:this.getSpectorData(s),enabled:this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_ENABLED.value),arraySize:this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_SIZE.value),stride:this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_STRIDE.value),arrayType:this.getWebGlConstant(this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_TYPE.value)),normalized:this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_NORMALIZED.value),vertexAttrib:Array.prototype.slice.call(r)};return this.extensions[d.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE.extensionName]?o.divisor=this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE.value):this.contextVersion>1&&(o.integer=this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_INTEGER.value),o.divisor=this.context.getVertexAttrib(i,d.VERTEX_ATTRIB_ARRAY_DIVISOR.value)),this.appendBufferCustomData(o,s),o}readUniformFromContext(e,t){const n=this.context.getActiveUniform(e,t),i=this.context.getUniformLocation(e,n.name);if(i){if(n.size>1&&n.name&&n.name.indexOf("[0]")===n.name.length-3){const t=[];for(let i=0;i1){i.baseLevel=this.context.getTexParameter(t.value,d.TEXTURE_BASE_LEVEL.value),i.immutable=this.context.getTexParameter(t.value,d.TEXTURE_IMMUTABLE_FORMAT.value),i.immutableLevels=this.context.getTexParameter(t.value,d.TEXTURE_IMMUTABLE_LEVELS.value),i.maxLevel=this.context.getTexParameter(t.value,d.TEXTURE_MAX_LEVEL.value);const e=this.context.getParameter(d.SAMPLER_BINDING.value);if(e){i.sampler=this.getSpectorData(e);const t=this.context;i.samplerMaxLod=t.getSamplerParameter(e,d.TEXTURE_MAX_LOD.value),i.samplerMinLod=t.getSamplerParameter(e,d.TEXTURE_MIN_LOD.value),i.samplerCompareFunc=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_COMPARE_FUNC.value)),i.samplerCompareMode=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_COMPARE_MODE.value)),i.samplerWrapS=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_WRAP_S.value)),i.samplerWrapT=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_WRAP_T.value)),i.samplerWrapR=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_WRAP_R.value)),i.samplerMagFilter=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_MAG_FILTER.value)),i.samplerMinFilter=this.getWebGlConstant(t.getSamplerParameter(e,d.TEXTURE_MIN_FILTER.value))}else i.maxLod=this.context.getTexParameter(t.value,d.TEXTURE_MAX_LOD.value),i.minLod=this.context.getTexParameter(t.value,d.TEXTURE_MIN_LOD.value),i.compareFunc=this.getWebGlConstant(this.context.getTexParameter(t.value,d.TEXTURE_COMPARE_FUNC.value)),i.compareMode=this.getWebGlConstant(this.context.getTexParameter(t.value,d.TEXTURE_COMPARE_MODE.value)),i.wrapR=this.getWebGlConstant(this.context.getTexParameter(t.value,d.TEXTURE_WRAP_R.value))}const r=this.getTextureStorage(t);if(r){const e=this.quickCapture?null:t;this.drawCallTextureInputState.appendTextureState(i,r,e,this.fullCapture)}return this.context.activeTexture(n),i}getTextureStorage(e){return e===d.TEXTURE_2D?this.context.getParameter(d.TEXTURE_BINDING_2D.value):e===d.TEXTURE_CUBE_MAP?this.context.getParameter(d.TEXTURE_BINDING_CUBE_MAP.value):e===d.TEXTURE_3D?this.context.getParameter(d.TEXTURE_BINDING_3D.value):e===d.TEXTURE_2D_ARRAY?this.context.getParameter(d.TEXTURE_BINDING_2D_ARRAY.value):void 0}readUniformsFromContextIntoState(e,t,n,i){const r=this.context,s=r.getActiveUniforms(e,t,d.UNIFORM_TYPE.value),o=r.getActiveUniforms(e,t,d.UNIFORM_SIZE.value),a=r.getActiveUniforms(e,t,d.UNIFORM_BLOCK_INDEX.value),l=r.getActiveUniforms(e,t,d.UNIFORM_OFFSET.value),c=r.getActiveUniforms(e,t,d.UNIFORM_ARRAY_STRIDE.value),u=r.getActiveUniforms(e,t,d.UNIFORM_MATRIX_STRIDE.value),h=r.getActiveUniforms(e,t,d.UNIFORM_IS_ROW_MAJOR.value);for(let d=0;d-1&&(t.blockName=r.getActiveUniformBlockName(e,t.blockIndice)),t.offset=l[d],t.arrayStride=c[d],t.matrixStride=u[d],t.rowMajor=h[d],t.blockIndice>-1){const e=i[a[d]].bindingPoint;t.value=this.drawCallUboInputState.getUboValue(e,t.offset,t.size,s[d])}}}readTransformFeedbackFromContext(e,t){const n=this.context,i=n.getTransformFeedbackVarying(e,t),r=n.getIndexedParameter(d.TRANSFORM_FEEDBACK_BUFFER_BINDING.value,t),s={name:i.name,size:i.size,type:this.getWebGlConstant(i.type),buffer:this.getSpectorData(r),bufferSize:n.getIndexedParameter(d.TRANSFORM_FEEDBACK_BUFFER_SIZE.value,t),bufferStart:n.getIndexedParameter(d.TRANSFORM_FEEDBACK_BUFFER_START.value,t)};return this.appendBufferCustomData(s,r),s}readUniformBlockFromContext(e,t){const n=this.context,i=n.getActiveUniformBlockParameter(e,t,d.UNIFORM_BLOCK_BINDING.value),r=n.getIndexedParameter(d.UNIFORM_BUFFER_BINDING.value,i),s={name:n.getActiveUniformBlockName(e,t),bindingPoint:i,size:n.getActiveUniformBlockParameter(e,t,d.UNIFORM_BLOCK_DATA_SIZE.value),activeUniformCount:n.getActiveUniformBlockParameter(e,t,d.UNIFORM_BLOCK_ACTIVE_UNIFORMS.value),vertex:n.getActiveUniformBlockParameter(e,t,d.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER.value),fragment:n.getActiveUniformBlockParameter(e,t,d.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER.value),buffer:this.getSpectorData(r)};return this.appendBufferCustomData(s,r),s}appendBufferCustomData(e,t){if(t){const n=t.__SPECTOR_Object_CustomData;n&&(n.usage&&(e.bufferUsage=this.getWebGlConstant(n.usage)),e.bufferLength=n.length,n.offset&&(e.bufferOffset=n.offset),n.sourceLength&&(e.bufferSourceLength=n.sourceLength))}}getWebGlConstant(e){const t=p[e];return t?t.name:e}}Pe.stateName="DrawCall",Pe.samplerTypes={[d.SAMPLER_2D.value]:d.TEXTURE_2D,[d.SAMPLER_CUBE.value]:d.TEXTURE_CUBE_MAP,[d.SAMPLER_3D.value]:d.TEXTURE_3D,[d.SAMPLER_2D_SHADOW.value]:d.TEXTURE_2D,[d.SAMPLER_2D_ARRAY.value]:d.TEXTURE_2D_ARRAY,[d.SAMPLER_2D_ARRAY_SHADOW.value]:d.TEXTURE_2D_ARRAY,[d.SAMPLER_CUBE_SHADOW.value]:d.TEXTURE_CUBE_MAP,[d.INT_SAMPLER_2D.value]:d.TEXTURE_2D,[d.INT_SAMPLER_3D.value]:d.TEXTURE_3D,[d.INT_SAMPLER_CUBE.value]:d.TEXTURE_CUBE_MAP,[d.INT_SAMPLER_2D_ARRAY.value]:d.TEXTURE_2D_ARRAY,[d.UNSIGNED_INT_SAMPLER_2D.value]:d.TEXTURE_2D,[d.UNSIGNED_INT_SAMPLER_3D.value]:d.TEXTURE_3D,[d.UNSIGNED_INT_SAMPLER_CUBE.value]:d.TEXTURE_CUBE_MAP,[d.UNSIGNED_INT_SAMPLER_2D_ARRAY.value]:d.TEXTURE_2D_ARRAY};class ke{constructor(e){this.contextInformation=e,this.stateTrackers=[],this.onCommandCapturedCallbacks={},this.initStateTrackers()}startCapture(e,t,n){for(const i of this.stateTrackers){const r=i.startCapture(!0,t,n);i.requireStartAndStopStates&&(e.initState[i.stateName]=r)}}stopCapture(e){for(const t of this.stateTrackers){const n=t.stopCapture();t.requireStartAndStopStates&&(e.endState[t.stateName]=n)}}captureState(e){const t=this.onCommandCapturedCallbacks[e.name];if(t)for(const n of t)n(e)}initStateTrackers(){this.stateTrackers.push(new le(this.contextInformation),new ce(this.contextInformation),new ue(this.contextInformation),new he(this.contextInformation),new de(this.contextInformation),new me(this.contextInformation),new pe(this.contextInformation),new ge(this.contextInformation),new fe(this.contextInformation),new Ee(this.contextInformation),new ve(this.contextInformation),new _e(this.contextInformation),new Ae(this.contextInformation),new Pe(this.contextInformation));for(const e of this.stateTrackers)e.registerCallbacks(this.onCommandCapturedCallbacks)}}class De{constructor(e){this.options=e,this.createCommandNames=this.getCreateCommandNames(),this.updateCommandNames=this.getUpdateCommandNames(),this.deleteCommandNames=this.getDeleteCommandNames(),this.startTime=a.now,this.memoryPerSecond={},this.totalMemory=0,this.frameMemory=0,this.capturing=!1,De.initializeByteSizeFormat()}static initializeByteSizeFormat(){this.byteSizePerInternalFormat||(this.byteSizePerInternalFormat={[d.R8.value]:1,[d.R16F.value]:2,[d.R32F.value]:4,[d.R8UI.value]:1,[d.RG8.value]:2,[d.RG16F.value]:4,[d.RG32F.value]:8,[d.ALPHA.value]:1,[d.RGB.value]:3,[d.RGBA.value]:4,[d.LUMINANCE.value]:1,[d.LUMINANCE_ALPHA.value]:2,[d.DEPTH_COMPONENT.value]:1,[d.DEPTH_STENCIL.value]:2,[d.SRGB_EXT.value]:3,[d.SRGB_ALPHA_EXT.value]:4,[d.RGB8.value]:3,[d.SRGB8.value]:3,[d.RGB565.value]:2,[d.R11F_G11F_B10F.value]:4,[d.RGB9_E5.value]:2,[d.RGB16F.value]:6,[d.RGB32F.value]:12,[d.RGB8UI.value]:3,[d.RGBA8.value]:4,[d.RGB5_A1.value]:2,[d.RGBA16F.value]:8,[d.RGBA32F.value]:16,[d.RGBA8UI.value]:4,[d.COMPRESSED_R11_EAC.value]:4,[d.COMPRESSED_SIGNED_R11_EAC.value]:4,[d.COMPRESSED_RG11_EAC.value]:4,[d.COMPRESSED_SIGNED_RG11_EAC.value]:4,[d.COMPRESSED_RGB8_ETC2.value]:4,[d.COMPRESSED_RGBA8_ETC2_EAC.value]:4,[d.COMPRESSED_SRGB8_ETC2.value]:4,[d.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC.value]:4,[d.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2.value]:4,[d.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2.value]:4,[d.COMPRESSED_RGB_S3TC_DXT1_EXT.value]:.5,[d.COMPRESSED_RGBA_S3TC_DXT3_EXT.value]:1,[d.COMPRESSED_RGBA_S3TC_DXT5_EXT.value]:1,[d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG.value]:.5,[d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG.value]:.5,[d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG.value]:.25,[d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG.value]:.25,[d.COMPRESSED_RGB_ETC1_WEBGL.value]:.5,[d.COMPRESSED_RGB_ATC_WEBGL.value]:.5,[d.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL.value]:1,[d.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL.value]:1})}registerCallbacks(e){for(const t of this.createCommandNames)e[t]=e[t]||[],e[t].push(this.createWithoutSideEffects.bind(this));for(const t of this.updateCommandNames)e[t]=e[t]||[],e[t].push(this.updateWithoutSideEffects.bind(this));for(const t of this.deleteCommandNames)e[t]=e[t]||[],e[t].push(this.deleteWithoutSideEffects.bind(this))}startCapture(){this.frameMemory=0,this.capturing=!0}stopCapture(){this.frameMemory=0,this.capturing=!1}appendRecordedInformation(e){e.frameMemory[this.objectName]=this.frameMemory,e.memory[this.objectName]=this.memoryPerSecond}create(e){}createWithoutSideEffects(e){this.options.toggleCapture(!1),this.create(e),this.options.toggleCapture(!0)}updateWithoutSideEffects(e){if(!e||0===e.arguments.length)return;this.options.toggleCapture(!1);const t=e.arguments[0],n=this.getBoundInstance(t);if(!n)return void this.options.toggleCapture(!0);if(!E.getWebGlObjectTag(n))return void this.options.toggleCapture(!0);const i=this.getWebGlConstant(t),r=this.update(e,i,n);this.changeMemorySize(r),this.options.toggleCapture(!0)}deleteWithoutSideEffects(e){if(!e||!e.arguments||e.arguments.length<1)return;const t=e.arguments[0];if(!t)return;this.options.toggleCapture(!1);const n=this.delete(t);this.changeMemorySize(-n),this.options.toggleCapture(!0)}changeMemorySize(e){this.totalMemory+=e,this.capturing&&(this.frameMemory+=e);const t=a.now-this.startTime,n=Math.round(t/1e3);this.memoryPerSecond[n]=this.totalMemory}getWebGlConstant(e){const t=p[e];return t?t.name:e+""}getByteSizeForInternalFormat(e){return De.byteSizePerInternalFormat[e]||4}}class Ue extends De{get objectName(){return"Buffer"}getCreateCommandNames(){return["createBuffer"]}getUpdateCommandNames(){return["bufferData"]}getDeleteCommandNames(){return["deleteBuffer"]}getBoundInstance(e){const t=this.options.context;return e===d.ARRAY_BUFFER.value?t.getParameter(d.ARRAY_BUFFER_BINDING.value):e===d.ELEMENT_ARRAY_BUFFER.value?t.getParameter(d.ELEMENT_ARRAY_BUFFER_BINDING.value):e===d.COPY_READ_BUFFER.value?t.getParameter(d.COPY_READ_BUFFER_BINDING.value):e===d.COPY_WRITE_BUFFER.value?t.getParameter(d.COPY_WRITE_BUFFER_BINDING.value):e===d.TRANSFORM_FEEDBACK_BUFFER.value?t.getParameter(d.TRANSFORM_FEEDBACK_BUFFER_BINDING.value):e===d.UNIFORM_BUFFER.value?t.getParameter(d.UNIFORM_BUFFER_BINDING.value):e===d.PIXEL_PACK_BUFFER.value?t.getParameter(d.PIXEL_PACK_BUFFER_BINDING.value):e===d.PIXEL_UNPACK_BUFFER.value?t.getParameter(d.PIXEL_UNPACK_BUFFER_BINDING.value):void 0}delete(e){const t=e.__SPECTOR_Object_CustomData;return t?t.length:0}update(e,t,n){const i=this.getCustomData(t,e);if(!i)return 0;const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData.length:0;return n.__SPECTOR_Object_CustomData=i,i.length-r}getCustomData(e,t){const n=this.getLength(t);return t.arguments.length>=4?{target:e,length:n,usage:t.arguments[2],offset:t.arguments[3],sourceLength:t.arguments[1]?t.arguments[1].length:-1}:3===t.arguments.length?{target:e,length:n,usage:t.arguments[2]}:void 0}getLength(e){let t=-1,n=0;return 5===e.arguments.length&&(t=e.arguments[4],n=e.arguments[3]),t<=0&&(t="number"==typeof e.arguments[1]?e.arguments[1]:e.arguments[1]&&(e.arguments[1].byteLength||e.arguments[1].length)||0),t-n}}class Ge extends De{get objectName(){return"Renderbuffer"}getCreateCommandNames(){return["createRenderbuffer"]}getUpdateCommandNames(){return["renderbufferStorage","renderbufferStorageMultisample"]}getDeleteCommandNames(){return["deleteRenderbuffer"]}getBoundInstance(e){const t=this.options.context;if(e===d.RENDERBUFFER.value)return t.getParameter(d.RENDERBUFFER_BINDING.value)}delete(e){const t=e.__SPECTOR_Object_CustomData;return t?t.length:0}update(e,t,n){const i=this.getCustomData(e,t);if(!i)return 0;const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData.length:0;return i.length=i.width*i.height*this.getByteSizeForInternalFormat(i.internalFormat),n.__SPECTOR_Object_CustomData=i,i.length-r}getCustomData(e,t){return 4===e.arguments.length?{target:t,internalFormat:e.arguments[1],width:e.arguments[2],height:e.arguments[3],length:0,samples:0}:{target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],length:0,samples:e.arguments[1]}}}class We extends De{get objectName(){return"Texture2d"}getCreateCommandNames(){return["createTexture"]}getUpdateCommandNames(){return["texImage2D","compressedTexImage2D","texStorage2D"]}getDeleteCommandNames(){return["deleteTexture"]}getBoundInstance(e){const t=this.options.context;return e===d.TEXTURE_2D.value?t.getParameter(d.TEXTURE_BINDING_2D.value):e===d.TEXTURE_CUBE_MAP_POSITIVE_X.value||e===d.TEXTURE_CUBE_MAP_POSITIVE_Y.value||e===d.TEXTURE_CUBE_MAP_POSITIVE_Z.value||e===d.TEXTURE_CUBE_MAP_NEGATIVE_X.value||e===d.TEXTURE_CUBE_MAP_NEGATIVE_Y.value||e===d.TEXTURE_CUBE_MAP_NEGATIVE_Z.value?t.getParameter(d.TEXTURE_BINDING_CUBE_MAP.value):void 0}delete(e){const t=e.__SPECTOR_Object_CustomData;return t?t.target===d.TEXTURE_2D_ARRAY.name||t.target===d.TEXTURE_3D.name?0:t.length:0}update(e,t,n){const i=this.getCustomData(e,t,n);if(!i)return 0;const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData.length:0;if(i.isCompressed){if(e.arguments.length>=7){const t=e.arguments[6];i.length="number"==typeof t?t:null==t?void 0:t.byteLength}}else{const e="TEXTURE_2D"===t?1:6;let n=i.internalFormat;n===d.RGBA.value&&(i.type===d.FLOAT.value&&(n=d.RGBA32F.value),i.type===d.HALF_FLOAT_OES.value&&(n=d.RGBA16F.value)),i.length=i.width*i.height*e*this.getByteSizeForInternalFormat(n)}return i.length=0|i.length,n.__SPECTOR_Object_CustomData=i,i.length-r}getCustomData(e,t,n){return"texImage2D"===e.name?this.getTexImage2DCustomData(e,t,n):"compressedTexImage2D"===e.name?this.getCompressedTexImage2DCustomData(e,t,n):"texStorage2D"===e.name?this.getTexStorage2DCustomData(e,t,n):void 0}getTexStorage2DCustomData(e,t,n){let i;return 5===e.arguments.length&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],length:0,isCompressed:!1}),i}getCompressedTexImage2DCustomData(e,t,n){if(0!==e.arguments[1])return;let i;return e.arguments.length>=7&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],length:0,isCompressed:!0}),i}getTexImage2DCustomData(e,t,n){if(0!==e.arguments[1])return;let i;return e.arguments.length>=8?i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],format:e.arguments[6],type:e.arguments[7],length:0,isCompressed:!1}:6===e.arguments.length&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[5].width,height:e.arguments[5].height,format:e.arguments[3],type:e.arguments[4],length:0,isCompressed:!1}),i}}class Ve extends De{get objectName(){return"Texture3d"}getCreateCommandNames(){return["createTexture"]}getUpdateCommandNames(){return["texImage3D","compressedTexImage3D","texStorage3D"]}getDeleteCommandNames(){return["deleteTexture"]}getBoundInstance(e){const t=this.options.context;return e===d.TEXTURE_2D_ARRAY.value?t.getParameter(d.TEXTURE_BINDING_2D_ARRAY.value):e===d.TEXTURE_3D.value?t.getParameter(d.TEXTURE_BINDING_3D.value):void 0}delete(e){const t=e.__SPECTOR_Object_CustomData;return t?t.target!==d.TEXTURE_2D_ARRAY.name&&t.target!==d.TEXTURE_3D.name?0:t.length:0}update(e,t,n){if(e.arguments.length>=2&&0!==e.arguments[1])return 0;const i=this.getCustomData(e,t,n);if(!i)return 0;const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData.length:0;if(i.isCompressed){if(e.arguments.length>=7){const t=e.arguments[6];i.length="number"==typeof t?t:null==t?void 0:t.byteLength}}else i.length=i.width*i.height*i.depth*this.getByteSizeForInternalFormat(i.internalFormat);return i.length=0|i.length,n.__SPECTOR_Object_CustomData=i,i.length-r}getCustomData(e,t,n){return"texImage3D"===e.name?this.getTexImage3DCustomData(e,t,n):"compressedTexImage3D"===e.name?this.getCompressedTexImage3DCustomData(e,t,n):"texStorage3D"===e.name?this.getTexStorage3DCustomData(e,t,n):void 0}getTexStorage3DCustomData(e,t,n){let i;return 6===e.arguments.length&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],depth:e.arguments[5],length:0,isCompressed:!1}),i}getCompressedTexImage3DCustomData(e,t,n){if(0!==e.arguments[1])return;let i;return e.arguments.length>=8&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],depth:e.arguments[5],length:0,isCompressed:!0}),i}getTexImage3DCustomData(e,t,n){if(0!==e.arguments[1])return;let i;return e.arguments.length>=9&&(i={target:t,internalFormat:e.arguments[2],width:e.arguments[3],height:e.arguments[4],depth:e.arguments[5],format:e.arguments[7],type:e.arguments[8],length:0,isCompressed:!1}),i}}class He extends De{get objectName(){return"Program"}getCreateCommandNames(){return["createProgram"]}getUpdateCommandNames(){return["linkProgram"]}getDeleteCommandNames(){return["deleteProgram"]}getBoundInstance(e){return e}delete(e){const t=e.__SPECTOR_Object_CustomData;return t?t.length:0}update(e,t,n){if(e.arguments.length>=1&&!e.arguments[0])return 0;const i=this.getCustomData(n);if(!i)return 0;const r=n.__SPECTOR_Object_CustomData?n.__SPECTOR_Object_CustomData.length:0;return n.__SPECTOR_Object_CustomData=i,i.length-r}getCustomData(e){const t=this.options.context;return $e.getProgramData(t,e)}}class Xe{constructor(e){this.contextInformation=e,this.onCommandCallbacks={},this.recorders=[],this.initRecorders()}recordCommand(e){const t=this.onCommandCallbacks[e.name];if(t)for(const n of t)n(e)}startCapture(){for(const e of this.recorders)e.startCapture()}stopCapture(){for(const e of this.recorders)e.stopCapture()}appendRecordedInformation(e){for(const t of this.recorders)t.appendRecordedInformation(e)}initRecorders(){this.recorders.push(new Ue(this.contextInformation),new Ge(this.contextInformation),new We(this.contextInformation),new Ve(this.contextInformation),new He(this.contextInformation));for(const e of this.recorders)e.registerCallbacks(this.onCommandCallbacks)}}class ze{constructor(e){this.contextInformation=e,this.webGlObjects=[],this.initWebglObjects()}tagWebGlObjects(e){for(const t of this.webGlObjects){for(let n=0;n0&&this.currentCapture.commands.length===this.maxCommands&&this.onMaxCommand.trigger(this)}}spyContext(e){const t=[];for(const n in e)n&&t.push(n);for(let n=0;n{this.spyRequestAnimationFrame("requestAnimationFrame",e.display)}))}spyRequestAnimationFrame(e,t){const n=this;A.storeOriginFunction(t,e),t[e]=function(){const i=arguments[0],r=n.getCallback(n,i,(()=>{n.spiedScope[e](i)})),s=A.executeOriginFunction(t,e,[r]);return s}}spySetTimer(e){const t=this,n=this.spiedScope,i="setTimeout"===e;A.storeOriginFunction(n,e),n[e]=function(){const r=arguments[0],s=arguments[1],o=Array.prototype.slice.call(arguments);Ze.setTimerCommonValues.indexOf(s)>-1&&(o[0]=t.getCallback(t,r,i?()=>{n[e](r)}:null));const a=A.executeOriginFunction(n,e,o);return a}}getCallback(e,t,n=null){return function(){const i=a.now;if(e.lastFrame=++e.lastFrame%e.speedRatio,e.willPlayNextFrame||e.speedRatio&&!e.lastFrame){e.onFrameStart.trigger(e);try{t.apply(e.spiedScope,arguments)}catch(t){e.onError.trigger(t)}e.lastSixtyFramesCurrentIndex=(e.lastSixtyFramesCurrentIndex+1)%Ze.fpsWindowSize,e.lastSixtyFramesDuration[e.lastSixtyFramesCurrentIndex]=i-e.lastSixtyFramesPreviousStart,e.onFrameEnd.trigger(e),e.willPlayNextFrame=!1}else n&&n();e.lastSixtyFramesPreviousStart=i}}}Ze.requestAnimationFrameFunctions=["requestAnimationFrame","msRequestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame"],Ze.setTimerFunctions=["setTimeout","setInterval"],Ze.setTimerCommonValues=[0,15,16,33,32,40],Ze.fpsWindowSize=60;class Qe{constructor(e){this.canvas=e,this.onContextRequested=new o,this.init()}init(){const e=this,t=function(){const t=this instanceof HTMLCanvasElement?HTMLCanvasElement:OffscreenCanvas,n=e.canvas?A.executeOriginFunction(this,"getContext",arguments):A.executePrototypeOriginFunction(this,t,"getContext",arguments);if(arguments.length>0){const e=arguments[0];if("webgl"!==e&&"experimental-webgl"!==e&&"webgl2"!==e&&"experimental-webgl2"!==e)return n}if(n){const t=Array.prototype.slice.call(arguments),i="webgl2"===t[0]||"experimental-webgl2"===t[0]?2:1;e.onContextRequested.trigger({context:n,contextVersion:i})}return n};this.canvas?(A.storeOriginFunction(this.canvas,"getContext"),this.canvas.getContext=t):(A.storePrototypeOriginFunction(HTMLCanvasElement,"getContext"),HTMLCanvasElement.prototype.getContext=t,"undefined"!=typeof OffscreenCanvas&&(A.storePrototypeOriginFunction(OffscreenCanvas,"getContext"),OffscreenCanvas.prototype.getContext=t))}}var Je=n(379),et=n.n(Je),tt=n(795),nt=n.n(tt),it=n(569),rt=n.n(it),st=n(565),ot=n.n(st),at=n(216),lt=n.n(at),ct=n(589),ut=n.n(ct),ht=n(866),dt={};dt.styleTagTransform=ut(),dt.setAttributes=ot(),dt.insert=rt().bind(null,"html"),dt.domAPI=nt(),dt.insertStyleElement=lt(),et()(ht.Z,dt),ht.Z&&ht.Z.locals&&ht.Z.locals;class mt{constructor(e,t){this.placeHolder=e,this.stateStore=t}compose(e){const t=this.stateStore.getStatesToProcess();let n=!1;for(const e in t)if(t.hasOwnProperty(e)){const i=t[e],r=this.stateStore.getLastOperation(i),s=this.stateStore.getComponentInstance(i),o=this.stateStore.getData(i);s.render(o,i,r),n=!0}if(!n)return;const i=this.stateStore.getLastOperation(e);this.composeInContainer(this.placeHolder,Number.MAX_VALUE,e,i)}composeChildren(e,t){if(!t)return;const n=this.stateStore.getChildrenIds(e);let i=0;for(let e=0;e0}add(e,t){const n=this.getNewId();return this.pendingOperation[n]=n,this.store[n]={data:e,id:n,parent:null,children:[],componentInstance:t,lastOperation:20},n}update(e,t){this.store[e],this.pendingOperation[e]=e,this.store[e].data=t,this.store[e].lastOperation=40}addChild(e,t,n){const i=this.store[e],r=this.add(t,n);this.pendingOperation[r]=r;const s=this.store[r];return s.parent=i,i.children.push(s),r}insertChildAt(e,t,n,i){const r=this.store[e],s=this.add(n,i);this.pendingOperation[s]=s;const o=this.store[s];return o.parent=r,t>=r.children.length?r.children.push(o):t>=0?r.children.splice(t,0,o):r.children.unshift(o),s}removeChildById(e,t){const n=this.store[e];for(let i=n.children.length-1;i>=0;i--)if(n.children[i].id===t){this.removeChildAt(e,i);break}}removeChildAt(e,t){const n=this.store[e];let i;t>n.children.length-1?(i=n.children[n.children.length-1],n.children[n.children.length-1].parent=null,n.children.splice(n.children.length-1,1)):t>=0?(i=n.children[t],n.children[t].parent=null,n.children.splice(t,1)):(i=n.children[0],n.children[0].parent=null,n.children.splice(0,1)),i.parent=null,this.remove(i.id)}remove(e){const t=this.store[e];t.parent?(this.store[t.parent.id],this.removeChildById(t.parent.id,e)):(this.removeChildren(e),this.store[e].lastOperation=50,this.pendingOperation[e]=e)}removeChildren(e){const t=this.store[e];for(;t.children.length;)this.remove(t.children[0].id)}getStatesToProcess(){return this.pendingOperation}flushPendingOperations(){for(const e in this.pendingOperation)this.pendingOperation[e]&&(50===this.store[e].lastOperation?delete this.store[e]:this.store[e].lastOperation=0);this.pendingOperation={}}getNewId(){return++this.idGenerator}}class gt{constructor(e){this.component=e}render(e,t,n){0!==n&&(50!==n?this.domNode=this.component.render(e,t):this.removeNode())}composeInContainer(e,t,n){if(50===n)return this.removeNode(),null;const i=this.cachedCurrentChildrenContainer;if(0===n)return i;const r=this.domNode,s=r.getAttribute("childrencontainer")?r:r.querySelector("[childrenContainer]");if(s&&i){const e=i.children;for(;e.length>0;)s.appendChild(e[0])}if(this.cachedCurrentChildrenContainer=s,t>=e.children.length)e.appendChild(r),this.cachedCurrentDomNode&&40===n&&(this.cachedCurrentDomNode.remove?this.cachedCurrentDomNode.remove():this.cachedCurrentDomNode.parentNode&&this.cachedCurrentDomNode.parentNode.removeChild(this.cachedCurrentDomNode));else{const i=e.children[t];e.insertBefore(r,i),40===n&&e.removeChild(i)}return this.cachedCurrentDomNode=this.domNode,s}removeNode(){this.domNode&&this.domNode.parentElement&&(this.domNode.remove?this.domNode.remove():this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode)),this.cachedCurrentDomNode&&this.cachedCurrentDomNode.parentElement&&(this.cachedCurrentDomNode.remove?this.cachedCurrentDomNode.remove():this.cachedCurrentDomNode.parentNode&&this.cachedCurrentDomNode.parentNode.removeChild(this.cachedCurrentDomNode))}}gt.idGenerator=0;class ft{constructor(e){this.stateStore=new pt,this.compositor=new mt(e,this.stateStore),this.willRender=!1,this.rootStateId=-1}addRootState(e,t,n=!1){const i=new gt(t),r=this.stateStore.add(e,i);return this.rootStateId=r,this.setForRender(n),r}addChildState(e,t,n,i=!1){const r=this.insertChildState(e,t,Number.MAX_VALUE,n);return this.setForRender(i),r}insertChildState(e,t,n,i,r=!1){const s=new gt(i),o=this.stateStore.insertChildAt(e,n,t,s);return this.setForRender(r),o}updateState(e,t,n=!1){this.stateStore.update(e,t),this.setForRender(n)}removeState(e,t=!1){this.stateStore.remove(e),this.setForRender(t)}removeChildrenStates(e,t=!1){this.stateStore.removeChildren(e),this.setForRender(t)}getState(e){return this.stateStore.getData(e)}getGenericState(e){return this.getState(e)}getChildrenState(e){return this.stateStore.getChildrenIds(e).map((t=>this.stateStore.getData(e)))}getChildrenGenericState(e){return this.getChildrenState(e)}hasChildren(e){return this.stateStore.hasChildren(e)}updateAllChildrenState(e,t){const n=this.stateStore.getChildrenIds(e);for(const e of n){const n=this.getGenericState(e);t(n),this.updateState(e,n)}}updateAllChildrenGenericState(e,t){this.updateAllChildrenState(e,t)}setForRender(e){this.willRender||(this.willRender=!0,e?this.compose():setTimeout(this.compose.bind(this),ft.REFRESHRATEINMILLISECONDS))}compose(){this.willRender=!1,this.compositor.compose(this.rootStateId),this.stateStore.flushPendingOperations()}}ft.REFRESHRATEINMILLISECONDS=100;class Et extends class{constructor(){this.dummyTextGeneratorElement=document.createElement("div")}createFromHtml(e){const t=document.createElement("div");return t.innerHTML=e,t.firstElementChild}htmlTemplate(e,...t){const n=e.raw;let i="";return t.forEach(((e,t)=>{let r=n[t];Array.isArray(e)&&(e=e.join("")),r&&r.length>0&&"$"===r[r.length-1]?r=r.slice(0,-1):e=this.htmlEscape(e),i+=r,i+=e})),i+=n[n.length-1],i}htmlEscape(e){return null==e||0===e.length?e:(this.dummyTextGeneratorElement.innerText=e,this.dummyTextGeneratorElement.innerHTML)}}{constructor(){super(),this.events={}}addEventListener(e,t,n=null){return this.events[e]?this.events[e].add(t,n):-1}removeEventListener(e,t){this.events[e]&&this.events[e].remove(t)}renderElementFromTemplate(e,t,n){const i=this.createFromHtml(e);return this.bindCommands(i,t,n),i}bindCommands(e,t,n){e.getAttribute("commandname")&&this.bindCommand(e,t,n);const i=e.querySelectorAll("[commandName]");for(let e=0;e -
-
-
- ${e.logText} -
- `;return this.renderElementFromTemplate(n,e,t)}}class _t extends Et{constructor(){super(),this.onCanvasSelected=this.createEvent("onCanvasSelected")}render(e,t){const n=document.createElement("li"),i=document.createElement("span");return i.innerText=`Id: ${e.id} - Size: ${e.width}*${e.height}`,n.appendChild(i),this.mapEventListener(n,"click","onCanvasSelected",e,t),n}}class Ct extends Et{constructor(){super(),this.onCaptureRequested=this.createEvent("onCaptureRequested"),this.onPlayRequested=this.createEvent("onPlayRequested"),this.onPauseRequested=this.createEvent("onPauseRequested"),this.onPlayNextFrameRequested=this.createEvent("onPlayNextFrameRequested")}render(e,t){const n=this.htmlTemplate` -
-
-
- $${e?'
\n
':'
\n
\n
\n
'} -
`;return this.renderElementFromTemplate(n,e,t)}}class At extends Et{constructor(){super(),this.onCanvasSelection=this.createEvent("onCanvasSelection")}render(e,t){const n=this.htmlTemplate` -
- - ${e.currentCanvasInformation?`${e.currentCanvasInformation.id} (${e.currentCanvasInformation.width}*${e.currentCanvasInformation.height})`:"Choose Canvas..."} - -
    -
    `;return this.renderElementFromTemplate(n,e,t)}}class Rt extends Et{render(e,t){const n=document.createElement("span");return n.className="fpsCounterComponent",n.innerText=e.toFixed(2)+" Fps",n}}class St{constructor(e={}){this.options=e,this.rootPlaceHolder=e.rootPlaceHolder||document.body,this.mvx=new ft(this.rootPlaceHolder),this.isTrackingCanvas=!1,this.onCanvasSelected=new o,this.onCaptureRequested=new o,this.onPauseRequested=new o,this.onPlayRequested=new o,this.onPlayNextFrameRequested=new o,this.captureMenuComponent=new vt,this.canvasListComponent=new At,this.canvasListItemComponent=new _t,this.actionsComponent=new Ct,this.fpsCounterComponent=new Rt,this.rootStateId=this.mvx.addRootState({visible:!0,logLevel:r.info,logText:St.SelectCanvasHelpText,logVisible:!this.options.hideLog},this.captureMenuComponent),this.canvasListStateId=this.mvx.addChildState(this.rootStateId,{currentCanvasInformation:null,showList:!1},this.canvasListComponent),this.actionsStateId=this.mvx.addChildState(this.rootStateId,!0,this.actionsComponent),this.fpsStateId=this.mvx.addChildState(this.rootStateId,0,this.fpsCounterComponent),this.actionsComponent.onCaptureRequested.add((()=>{const e=this.getSelectedCanvasInformation();e&&this.updateMenuStateLog(r.info,St.PleaseWaitHelpText,!0),setTimeout((()=>{this.onCaptureRequested.trigger(e)}),200)})),this.actionsComponent.onPauseRequested.add((()=>{this.onPauseRequested.trigger(this.getSelectedCanvasInformation()),this.mvx.updateState(this.actionsStateId,!1)})),this.actionsComponent.onPlayRequested.add((()=>{this.onPlayRequested.trigger(this.getSelectedCanvasInformation()),this.mvx.updateState(this.actionsStateId,!0)})),this.actionsComponent.onPlayNextFrameRequested.add((()=>{this.onPlayNextFrameRequested.trigger(this.getSelectedCanvasInformation())})),this.canvasListComponent.onCanvasSelection.add((e=>{this.mvx.updateState(this.canvasListStateId,{currentCanvasInformation:null,showList:!e.state.showList}),this.updateMenuStateLog(r.info,St.SelectCanvasHelpText),this.onCanvasSelected.trigger(null),this.isTrackingCanvas&&this.trackPageCanvases(),e.state.showList?this.showMenuStateLog():this.hideMenuStateLog()})),this.canvasListItemComponent.onCanvasSelected.add((e=>{this.mvx.updateState(this.canvasListStateId,{currentCanvasInformation:e.state,showList:!1}),this.onCanvasSelected.trigger(e.state),this.updateMenuStateLog(r.info,St.ActionsHelpText),this.showMenuStateLog()}))}getSelectedCanvasInformation(){return this.mvx.getGenericState(this.canvasListStateId).currentCanvasInformation}trackPageCanvases(){if(this.isTrackingCanvas=!0,document.body){const e=document.body.querySelectorAll("canvas");this.updateCanvasesList(e)}}updateCanvasesList(e){this.updateCanvasesListInformationInternal(e,(e=>({id:e.id,width:e.width,height:e.height,ref:e})))}updateCanvasesListInformation(e){this.updateCanvasesListInformationInternal(e,(e=>({id:e.id,width:e.width,height:e.height,ref:e.ref})))}display(){this.updateMenuStateVisibility(!0)}hide(){this.updateMenuStateVisibility(!1)}captureComplete(e){e?this.updateMenuStateLog(r.error,e):this.updateMenuStateLog(r.info,St.ActionsHelpText)}setFPS(e){this.mvx.updateState(this.fpsStateId,e)}updateCanvasesListInformationInternal(e,t){this.mvx.removeChildrenStates(this.canvasListStateId);const n=[];for(let i=0;i -
    - Drag files here to open a previously saved capture. -
    -
      - `,i=this.renderElementFromTemplate(n,e,t),r=i.querySelector(".openCaptureFile");return r.addEventListener("dragenter",(e=>(this.drag(e),!1)),!1),r.addEventListener("dragover",(e=>(this.drag(e),!1)),!1),r.addEventListener("drop",(e=>{this.drop(e)}),!1),i}drag(e){e.stopPropagation(),e.preventDefault()}drop(e){e.stopPropagation(),e.preventDefault(),this.loadFiles(e)}loadFiles(e){let t=null;if(e&&e.dataTransfer&&e.dataTransfer.files&&(t=e.dataTransfer.files),e&&e.target&&e.target.files&&(t=e.target.files),t&&t.length>0)for(let e=0;e{s.error("Error while reading file: "+n.name+e)},i.onload=e=>{try{const t=JSON.parse(e.target.result);this.onCaptureLoaded.trigger(t)}catch(e){s.error("Error while reading file: "+n.name+e)}},i.readAsText(n)}}}}class xt extends Et{constructor(){super(),this.onCaptureSelected=this.createEvent("onCaptureSelected"),this.onSaveRequested=this.createEvent("onSaveRequested")}render(e,t){const n=document.createElement("li");if(e.active&&(n.className="active"),e.capture.endState.VisualState.Attachments)for(const t of e.capture.endState.VisualState.Attachments){const e=document.createElement("img");e.src=encodeURI(t.src),n.appendChild(e)}else{const t=document.createElement("span");t.innerText=e.capture.endState.VisualState.FrameBufferStatus,n.appendChild(t)}const i=document.createElement("span");i.innerText=new Date(e.capture.startTime).toTimeString().split(" ")[0],n.appendChild(i);const r=document.createElement("a");return r.href="#",r.className="captureListItemSave",this.mapEventListener(r,"click","onSaveRequested",e,t,!1,!0),i.appendChild(r),this.mapEventListener(n,"click","onCaptureSelected",e,t),n}}class yt extends Et{render(e,t){const n=this.htmlTemplate` -
      -
        -
        `;return this.renderElementFromTemplate(n,e,t)}}class Lt{static scrollIntoView(e){const t=e.getBoundingClientRect();let n=e.parentElement;for(;n&&n.clientHeight===n.offsetHeight;)n=n.parentElement;if(!n)return;const i=n.getBoundingClientRect();t.topi.bottom&&e.scrollIntoView(!1)}}class It extends Et{constructor(){super(),this.onVisualStateSelected=this.createEvent("onVisualStateSelected")}render(e,t){const n=document.createElement("li");if(e.active&&(n.className="active",setTimeout((()=>{Lt.scrollIntoView(n)}),1)),e.VisualState.Attachments)for(const t of e.VisualState.Attachments){if(!t.src)continue;const i=document.createElement("img");if(i.src=encodeURI(t.src),n.appendChild(i),e.VisualState.Attachments.length>1){const e=document.createElement("span");e.innerText=t.attachmentName,n.appendChild(e)}if(t.textureLayer){const e=document.createElement("span");e.innerText="Layer: "+t.textureLayer,n.appendChild(e)}if(t.textureCubeMapFace){const e=document.createElement("span");e.innerText=t.textureCubeMapFace,n.appendChild(e)}}else{const t=document.createElement("span");t.innerText=e.VisualState.FrameBufferStatus,n.appendChild(t)}const i=document.createElement("span");return i.innerText=e.VisualState.FrameBuffer?"Frame buffer: "+e.VisualState.FrameBuffer.__SPECTOR_Object_TAG.id:"Canvas frame buffer",n.appendChild(i),this.mapEventListener(n,"click","onVisualStateSelected",e,t),n}}class Ft extends Et{render(e,t){const n=this.htmlTemplate` -
        -
          -
          `;return this.renderElementFromTemplate(n,e,t)}}class Nt extends Et{constructor(){super(),this.onCommandSelected=this.createEvent("onCommandSelected"),this.onVertexSelected=this.createEvent("onVertexSelected"),this.onFragmentSelected=this.createEvent("onFragmentSelected")}render(e,t){const n=document.createElement("li");let i="unknown";switch(e.capture.status){case 50:i="deprecated";break;case 10:i="unused";break;case 20:i="disabled";break;case 30:i="redundant";break;case 40:i="valid"}if(e.capture.VisualState&&(n.className=" drawCall"),e.active&&(n.className=" active",setTimeout((()=>{Lt.scrollIntoView(n)}),1)),e.capture.marker){const t=document.createElement("span");t.className=i+" marker important",t.innerText=e.capture.marker+" ",t.style.fontWeight="1000",n.appendChild(t)}if("LOG"===e.capture.name){const t=document.createElement("span");t.className=i+" marker important",t.innerText=e.capture.text+" ",t.style.fontWeight="1000",n.appendChild(t)}else{const t=document.createElement("span");let r=e.capture.text;r=r.replace(e.capture.name,`${e.capture.name}`),t.innerHTML=r,n.appendChild(t)}if(e.capture.VisualState&&"clear"!==e.capture.name)try{const i=e.capture.DrawCall.shaders[0],r=e.capture.DrawCall.shaders[1],s=document.createElement("a");s.innerText=i.name,s.href="#",n.appendChild(s),this.mapEventListener(s,"click","onVertexSelected",e,t);const o=document.createElement("a");o.innerText=r.name,o.href="#",n.appendChild(o),this.mapEventListener(o,"click","onFragmentSelected",e,t)}catch(e){}return this.mapEventListener(n,"click","onCommandSelected",e,t),n}}class Mt extends Et{render(e,t){const n=this.htmlTemplate` -
          -
          `;return this.renderElementFromTemplate(n,e,t)}}class Ot extends Et{render(e,t){const n=this.htmlTemplate` -
          -
          `;return this.renderElementFromTemplate(n,e,t)}}class Bt extends Et{render(e,t){const n=this.htmlTemplate` -
          -
          ${e?e.replace(/([A-Z])/g," $1").trim():""}
          -
            -
            `;return this.renderElementFromTemplate(n,e,t)}}class $t extends Et{render(e,t){const n=this.htmlTemplate` -
          • ${e.key}: ${e.value}
          • `;return this.renderElementFromTemplate(n,e,t)}}class Pt extends Et{render(e,t){const n=this.htmlTemplate` -
          • ${e.key}
          • `;return this.renderElementFromTemplate(n,e,t)}}class kt extends Et{render(e,t){const n=this.htmlTemplate` -
          • ${e.key}: - ${e.value} (Open help page) - -
          • `;return this.renderElementFromTemplate(n,e,t)}}class Dt extends Et{render(e,t){const n=document.createElement("div");if(n.className="jsonVisualStateItemComponent",e.Attachments)for(const t of e.Attachments){if(!t.src)continue;const i=document.createElement("img");if(i.src=encodeURI(t.src),n.appendChild(i),e.Attachments.length>1){const e=document.createElement("span");e.innerText=t.attachmentName,n.appendChild(e)}}else{const t=document.createElement("span");t.innerText=e.FrameBufferStatus,n.appendChild(t)}const i=document.createElement("span");return i.innerText=e.FrameBuffer?e.FrameBuffer.__SPECTOR_Object_TAG.displayText:"Canvas frame buffer",n.appendChild(i),n}}class Ut extends Et{constructor(){super(),this.onCapturesClicked=this.createEvent("onCapturesClicked"),this.onCommandsClicked=this.createEvent("onCommandsClicked"),this.onInformationClicked=this.createEvent("onInformationClicked"),this.onInitStateClicked=this.createEvent("onInitStateClicked"),this.onEndStateClicked=this.createEvent("onEndStateClicked"),this.onCloseClicked=this.createEvent("onCloseClicked"),this.onSearchTextChanged=this.createEvent("onSearchTextChanged"),this.onSearchTextCleared=this.createEvent("onSearchTextCleared")}render(e,t){const n=this.htmlTemplate``,i=this.renderElementFromTemplate(n,e,t),r=i.querySelector(".resultViewMenuOpen"),s=i.querySelectorAll("li:not(.resultViewMenuSmall)");return r.addEventListener("click",(e=>{if("true"===r.getAttribute("open")){r.setAttribute("open","false");for(let e=0;e',e,t)}}class Wt extends Et{render(e,t){const n=this.htmlTemplate` -
            -
            `;return this.renderElementFromTemplate(n,e,t)}}var Vt=n(29),Ht=n.n(Vt);class Xt extends Et{constructor(){super(),this.onTranslatedVertexSourceClicked=this.createEvent("onTranslatedVertexSourceClicked"),this.onTranslatedFragmentSourceClicked=this.createEvent("onTranslatedFragmentSourceClicked"),this.onVertexSourceClicked=this.createEvent("onVertexSourceClicked"),this.onFragmentSourceClicked=this.createEvent("onFragmentSourceClicked"),this.onSourceCodeCloseClicked=this.createEvent("onSourceCodeCloseClicked"),this.onSourceCodeChanged=this.createEvent("onSourceCodeChanged"),this.onBeautifyChanged=this.createEvent("onBeautifyChanged"),this.onPreprocessChanged=this.createEvent("onPreprocessChanged")}showError(e){if(!this.editor)return;const t=[];if(e=e||""){const n=/^.*ERROR:\W([0-9]+):([0-9]+):(.*)$/gm;let i=n.exec(e);for(;null!=i;)t.push({row:+i[2]-1,column:i[1],text:i[3]||"Error",type:"error"}),i=n.exec(e)}this.editor.getSession().setAnnotations(t)}render(e,t){const n=e.fragment?e.sourceFragment:e.sourceVertex;let i,r=e.preprocessed;e.translated?(i=e.fragment?e.translatedSourceFragment:e.translatedSourceVertex,r=!1):i=null!=n?n:"";let o=i;if(r)try{o=Ht()(o,{preserveComments:!1,stopOnError:!0})}catch(e){s.error("shader preprocess failed",e)}e.beautify&&(o=this._indentIfdef(this._beautify(o)));const a=this.htmlTemplate` -
            -
            - -
            - $${this.htmlTemplate`
            ${o}
            `} -
            -

            - - -

            -
            -
            `,l=this.renderElementFromTemplate(a.replace(/
            /g,"\n"),e,t);this.editor=ace.edit(l.querySelector(".sourceCodeComponent")),this.editor.setTheme("ace/theme/monokai"),this.editor.getSession().setMode("ace/mode/glsl"),this.editor.setShowPrintMargin(!1);let c=-1;return this.editor.setReadOnly(!e.editable&&!e.translated),this.editor.getSession().on("change",(n=>{-1!==c&&clearTimeout(c),c=setTimeout((()=>{this._triggerCompilation(this.editor,e,l,t)}),1500)})),l}_triggerCompilation(e,t,n,i){t.fragment?t.sourceFragment=e.getValue():t.sourceVertex=e.getValue(),this.triggerEvent("onSourceCodeChanged",n,t,i)}_beautify(e,t=0){let n="";for(let e=0;ee.trim()+"\n"))).replace(/\s*([*+-/=><\s]*=)\s*/g,(e=>" "+e.trim()+" "))).replace(/\s*(,)\s*/g,(e=>e.trim()+" "))).replace(/\n[ \t]+/g,"\n")).replace(/\n/g,"\n"+n)).replace(/\s+$/g,"")).replace(/\n+$/g,"");else{const i=e.substr(0,s).trim(),r=e.substr(o+1,e.length).trim(),l=e.substr(s+1,o-s-1).trim();a=(""===i?n+"{":this._beautify(i,t)+" {\n")+this._beautify(l,t+1)+"\n"+n+"}\n"+this._beautify(r,t),a=a.replace(/\s*\n+\s*;/g,";")}return a=a.replace(Xt.semicolonReplacementKeyRegex,";"),a=a.replace(Xt.openCurlyReplacementKeyRegex,"{"),a=a.replace(Xt.closeCurlyReplacementKeyRegex,"}"),a}_adaptComments(e){let t=!1,n=!1;for(let i=0;i-1&&0===o?this._getBracket(e,n+1):{firstIteration:n,lastIteration:o}}_indentIfdef(e){let t=0;const n=e.split("\n");for(let e=0;e`;return this.renderElementFromTemplate(n,e,t)}}class Kt{static getMDNLink(e){const t=Kt.WebGL2Functions[e];if(t)return Kt.WebGL2RootUrl+t;const n=Kt.WebGLFunctions[e];if(n)return Kt.WebGLRootUrl+n;const i=Kt.AngleInstancedArraysExtFunctions[e];return i?Kt.AngleInstancedArraysExtRootUrl+i:Kt.WebGLRootUrl+e}}Kt.WebGL2RootUrl="https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/",Kt.WebGLRootUrl="https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/",Kt.AngleInstancedArraysExtRootUrl="https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays/",Kt.WebGL2Functions={beginQuery:"beginQuery",beginTransformFeedback:"beginTransformFeedback",bindBufferBase:"bindBufferBase",bindBufferRange:"bindBufferRange",bindSampler:"bindSampler",bindTransformFeedback:"bindTransformFeedback",bindVertexArray:"bindVertexArray",blitFramebuffer:"blitFramebuffer",clearBufferfv:"clearBuffer",clearBufferiv:"clearBuffer",clearBufferuiv:"clearBuffer",clearBufferfi:"clearBuffer",clientWaitSync:"clientWaitSync",compressedTexImage3D:"compressedTexImage3D",compressedTexSubImage3D:"compressedTexSubImage3D",copyBufferSubData:"copyBufferSubData",copyTexSubImage3D:"copyTexSubImage3D",createQuery:"createQuery",createSampler:"createSampler",createTransformFeedback:"createTransformFeedback",createVertexArray:"createVertexArray",deleteQuery:"deleteQuery",deleteSampler:"deleteSampler",deleteSync:"deleteSync",deleteTransformFeedback:"deleteTransformFeedback",deleteVertexArray:"deleteVertexArray",drawArraysInstanced:"drawArraysInstanced",drawBuffers:"drawBuffers",drawElementsInstanced:"drawElementsInstanced",drawRangeElements:"drawRangeElements",endQuery:"endQuery",endTransformFeedback:"endTransformFeedback",fenceSync:"fenceSync",framebufferTextureLayer:"framebufferTextureLayer",getActiveUniformBlockName:"getActiveUniformBlockName",getActiveUniformBlockParameter:"getActiveUniformBlockParameter",getActiveUniforms:"getActiveUniforms",getBufferSubData:"getBufferSubData",getFragDataLocation:"getFragDataLocation",getIndexedParameter:"getIndexedParameter",getInternalformatParameter:"getInternalformatParameter",getQuery:"getQuery",getQueryParameter:"getQueryParameter",getSamplerParameter:"getSamplerParameter",getSyncParameter:"getSyncParameter",getTransformFeedbackVarying:"getTransformFeedbackVarying",getUniformBlockIndex:"getUniformBlockIndex",getUniformIndices:"getUniformIndices",invalidateFramebuffer:"invalidateFramebuffer",invalidateSubFramebuffer:"invalidateSubFramebuffer",isQuery:"isQuery",isSampler:"isSampler",isSync:"isSync",isTransformFeedback:"isTransformFeedback",isVertexArray:"isVertexArray",pauseTransformFeedback:"pauseTransformFeedback",readBuffer:"readBuffer",renderbufferStorageMultisample:"renderbufferStorageMultisample",resumeTransformFeedback:"resumeTransformFeedback",samplerParameteri:"samplerParameter",samplerParameterf:"samplerParameter",texImage3D:"texImage3D",texStorage2D:"texStorage2D",texStorage3D:"texStorage3D",texSubImage3D:"texSubImage3D",transformFeedbackVaryings:"transformFeedbackVaryings",uniform1ui:"uniform",uniform2ui:"uniform",uniform3ui:"uniform",uniform4ui:"uniform",uniform1fv:"uniform",uniform2fv:"uniform",uniform3fv:"uniform",uniform4fv:"uniform",uniform1iv:"uniform",uniform2iv:"uniform",uniform3iv:"uniform",uniform4iv:"uniform",uniform1uiv:"uniform",uniform2uiv:"uniform",uniform3uiv:"uniform",uniform4uiv:"uniform",uniformBlockBinding:"uniformBlockBinding",uniformMatrix2fv:"uniformMatrix",uniformMatrix3x2fv:"uniformMatrix",uniformMatrix4x2fv:"uniformMatrix",uniformMatrix2x3fv:"uniformMatrix",uniformMatrix3fv:"uniformMatrix",uniformMatrix4x3fv:"uniformMatrix",uniformMatrix2x4fv:"uniformMatrix",uniformMatrix3x4fv:"uniformMatrix",uniformMatrix4fv:"uniformMatrix",vertexAttribDivisor:"vertexAttribDivisor",vertexAttribI4i:"vertexAttribI",vertexAttribI4ui:"vertexAttribI",vertexAttribI4iv:"vertexAttribI",vertexAttribI4uiv:"vertexAttribI",vertexAttribIPointer:"vertexAttribIPointer",waitSync:"waitSync"},Kt.WebGLFunctions={uniform1f:"uniform",uniform1fv:"uniform",uniform1i:"uniform",uniform1iv:"uniform",uniform2f:"uniform",uniform2fv:"uniform",uniform2i:"uniform",uniform2iv:"uniform",uniform3f:"uniform",uniform3i:"uniform",uniform3iv:"uniform",uniform4f:"uniform",uniform4fv:"uniform",uniform4i:"uniform",uniform4iv:"uniform",uniformMatrix2fv:"uniformMatrix",uniformMatrix3fv:"uniformMatrix",uniformMatrix4fv:"uniformMatrix",vertexAttrib1f:"vertexAttrib",vertexAttrib2f:"vertexAttrib",vertexAttrib3f:"vertexAttrib",vertexAttrib4f:"vertexAttrib",vertexAttrib1fv:"vertexAttrib",vertexAttrib2fv:"vertexAttrib",vertexAttrib3fv:"vertexAttrib",vertexAttrib4fv:"vertexAttrib"},Kt.AngleInstancedArraysExtFunctions={drawArraysInstancedANGLE:"drawArraysInstancedANGLE",drawElementsInstancedANGLE:"drawElementsInstancedANGLE",vertexAttribDivisorANGLE:"vertexAttribDivisorANGLE"};class jt{constructor(e=null){this.rootPlaceHolder=e,this.onSourceCodeChanged=new o,this.rootPlaceHolder=this.rootPlaceHolder||document.body,this.mvx=new ft(this.rootPlaceHolder),this.searchText="",this.currentCommandId=-1,this.visible=!1,this.commandCount=0,this.commandListStateId=-1,this.commandDetailStateId=-1,this.currentCaptureStateId=-1,this.currentCommandStateId=-1,this.currentVisualStateId=-1,this.visualStateListStateId=-1,this.initVisualStateId=-1,this.sourceCodeComponentStateId=-1,this.captureListComponent=new wt,this.captureListItemComponent=new xt,this.visualStateListComponent=new yt,this.visualStateListItemComponent=new It,this.commandListComponent=new Ft,this.commandListItemComponent=new Nt,this.commandDetailComponent=new Mt,this.jsonContentComponent=new Ot,this.jsonGroupComponent=new Bt,this.jsonItemComponent=new $t,this.jsonImageItemComponent=new Pt,this.jsonHelpItemComponent=new kt,this.jsonVisualStateItemComponent=new Dt,this.resultViewMenuComponent=new Ut,this.resultViewContentComponent=new Gt,this.resultViewComponent=new Wt,this.sourceCodeComponent=new Xt,this.informationColumnComponent=new zt,this.rootStateId=this.mvx.addRootState(null,this.resultViewComponent),this.menuStateId=this.mvx.addChildState(this.rootStateId,null,this.resultViewMenuComponent),this.contentStateId=this.mvx.addChildState(this.rootStateId,null,this.resultViewContentComponent),this.captureListStateId=this.mvx.addChildState(this.rootStateId,!1,this.captureListComponent),this.initKeyboardEvents(),this.initMenuComponent(),this.captureListComponent.onCaptureLoaded.add((e=>{this.addCapture(e)})),this.captureListItemComponent.onCaptureSelected.add((e=>{this.selectCapture(e.stateId)})),this.captureListItemComponent.onSaveRequested.add((e=>{this.saveCapture(e.state.capture)})),this.visualStateListItemComponent.onVisualStateSelected.add((e=>{this.selectVisualState(e.stateId)})),this.commandListItemComponent.onCommandSelected.add((e=>{this.selectCommand(e.stateId)})),this.commandListItemComponent.onVertexSelected.add((e=>{this.selectCommand(e.stateId),this.openShader(!1)})),this.commandListItemComponent.onFragmentSelected.add((e=>{this.selectCommand(e.stateId),this.openShader(!0)})),this.sourceCodeComponent.onSourceCodeCloseClicked.add((()=>{this.displayCurrentCapture()})),this.sourceCodeComponent.onTranslatedVertexSourceClicked.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.fragment=!1,t.translated=!0,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.sourceCodeComponent.onTranslatedFragmentSourceClicked.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.fragment=!0,t.translated=!0,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.sourceCodeComponent.onVertexSourceClicked.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.fragment=!1,t.translated=!1,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.sourceCodeComponent.onFragmentSourceClicked.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.fragment=!0,t.translated=!1,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.sourceCodeComponent.onSourceCodeChanged.add((e=>{this.onSourceCodeChanged.trigger({programId:e.state.programId,sourceFragment:e.state.sourceFragment,sourceVertex:e.state.sourceVertex,translatedSourceFragment:e.state.translatedSourceFragment,translatedSourceVertex:e.state.translatedSourceVertex})})),this.sourceCodeComponent.onBeautifyChanged.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.beautify=e.sender.checked,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.sourceCodeComponent.onPreprocessChanged.add((e=>{const t=this.mvx.getGenericState(this.sourceCodeComponentStateId);t.preprocessed=e.sender.checked,this.mvx.updateState(this.sourceCodeComponentStateId,t)})),this.updateViewState()}saveCapture(e){const t=JSON.stringify(e,null,4),n=new Blob([t],{type:"octet/stream"}),i="capture "+new Date(e.startTime).toTimeString().split(" ")[0]+".json";if(navigator.msSaveBlob)navigator.msSaveBlob(n,i);else{const e=document.createElement("a"),t=window.URL.createObjectURL(n);e.setAttribute("href",t),e.setAttribute("download",i),e.click()}}selectCapture(e){this.currentCommandId=-1,this.currentCaptureStateId=e,this.displayCurrentCapture()}selectCommand(e){this.currentCommandStateId=e,this.currentVisualStateId=this.displayCurrentCommand(),this.displayCurrentVisualState()}selectVisualState(e){this.currentVisualStateId=e,this.currentCommandStateId=this.displayCurrentVisualState(),this.displayCurrentCommand()}display(){this.visible=!0,this.updateViewState()}hide(){this.visible=!1,this.updateViewState()}addCapture(e){const t=this.mvx.insertChildState(this.captureListStateId,{capture:e,active:!1},0,this.captureListItemComponent);return this.selectCapture(t),t}showSourceCodeError(e){this.sourceCodeComponent.showError(e)}initKeyboardEvents(){this.rootPlaceHolder.addEventListener("keydown",(e=>{40===this.mvx.getGenericState(this.menuStateId).status&&(38===e.keyCode?(e.preventDefault(),e.stopPropagation(),this.selectPreviousCommand()):40===e.keyCode?(e.preventDefault(),e.stopPropagation(),this.selectNextCommand()):33===e.keyCode?(e.preventDefault(),e.stopPropagation(),this.selectPreviousVisualState()):34===e.keyCode&&(e.preventDefault(),e.stopPropagation(),this.selectNextVisualState()))}))}openShader(e){this.mvx.removeChildrenStates(this.contentStateId);const t=this.mvx.getGenericState(this.currentCommandStateId);this.sourceCodeComponentStateId=this.mvx.addChildState(this.contentStateId,{programId:t.capture.DrawCall.programStatus.program.__SPECTOR_Object_TAG.id,nameVertex:t.capture.DrawCall.shaders[0].name,nameFragment:t.capture.DrawCall.shaders[1].name,sourceVertex:t.capture.DrawCall.shaders[0].source,sourceFragment:t.capture.DrawCall.shaders[1].source,translatedSourceVertex:t.capture.DrawCall.shaders[0].translatedSource,translatedSourceFragment:t.capture.DrawCall.shaders[1].translatedSource,fragment:e,translated:!1,editable:t.capture.DrawCall.programStatus.RECOMPILABLE,beautify:!0},this.sourceCodeComponent),this.commandDetailStateId=this.mvx.addChildState(this.contentStateId,null,this.commandDetailComponent),this.displayCurrentCommandDetail(t)}selectPreviousCommand(){const e=this.mvx.getGenericState(this.currentCommandStateId);e.previousCommandStateId<0||this.selectCommand(e.previousCommandStateId)}selectNextCommand(){const e=this.mvx.getGenericState(this.currentCommandStateId);e.nextCommandStateId<0||this.selectCommand(e.nextCommandStateId)}selectPreviousVisualState(){const e=this.mvx.getGenericState(this.currentVisualStateId);e.previousVisualStateId<0||this.selectVisualState(e.previousVisualStateId)}selectNextVisualState(){const e=this.mvx.getGenericState(this.currentVisualStateId);e.nextVisualStateId<0||this.selectVisualState(e.nextVisualStateId)}initMenuComponent(){this.mvx.updateState(this.menuStateId,{status:0,searchText:this.searchText,commandCount:0}),this.resultViewMenuComponent.onCloseClicked.add((e=>{this.hide()})),this.resultViewMenuComponent.onCapturesClicked.add((e=>{this.displayCaptures()})),this.resultViewMenuComponent.onCommandsClicked.add((e=>{this.displayCurrentCapture()})),this.resultViewMenuComponent.onInformationClicked.add((e=>{this.displayInformation()})),this.resultViewMenuComponent.onInitStateClicked.add((e=>{this.displayInitState()})),this.resultViewMenuComponent.onEndStateClicked.add((e=>{this.displayEndState()})),this.resultViewMenuComponent.onSearchTextChanged.add((e=>{this.search(e.sender.value)})),this.resultViewMenuComponent.onSearchTextCleared.add((e=>{this.mvx.updateState(this.menuStateId,{status:e.state.status,searchText:"",commandCount:e.state.commandCount}),this.search("")}))}onCaptureRelatedAction(e){const t=this.mvx.getGenericState(this.currentCaptureStateId);return this.commandCount=t.capture.commands.length,this.mvx.removeChildrenStates(this.contentStateId),this.mvx.updateState(this.menuStateId,{status:e,searchText:this.searchText,commandCount:this.commandCount}),this.mvx.getGenericState(this.captureListStateId)&&this.mvx.updateState(this.captureListStateId,!1),t.capture}displayCaptures(){this.mvx.updateState(this.menuStateId,{status:0,searchText:this.searchText,commandCount:this.commandCount}),this.mvx.updateState(this.captureListStateId,!0)}displayInformation(){const e=this.onCaptureRelatedAction(10),t=this.mvx.addChildState(this.contentStateId,!0,this.informationColumnComponent),n=this.mvx.addChildState(this.contentStateId,!1,this.informationColumnComponent),i=this.mvx.addChildState(t,null,this.jsonContentComponent);this.displayJSONGroup(i,"Canvas",e.canvas),this.displayJSONGroup(i,"Context",e.context);const r=this.mvx.addChildState(n,null,this.jsonContentComponent);for(const t of e.analyses)"Primitives"===t.analyserName?this.displayJSONGroup(r,"Vertices count",t):this.displayJSONGroup(r,t.analyserName,t);this.displayJSONGroup(r,"Frame Memory Changes",e.frameMemory),this.displayJSONGroup(r,"Total Memory (seconds since application start: bytes)",e.memory)}displayJSON(e,t){t.VisualState&&this.mvx.addChildState(e,t.VisualState,this.jsonVisualStateItemComponent);for(const n in t){if("VisualState"===n||"analyserName"===n||"source"===n||"translatedSource"===n)continue;const i=t[n];if("visual"===n)for(const n in i)i.hasOwnProperty(n)&&i[n]&&this.mvx.addChildState(e,{key:n,value:i[n],pixelated:"NEAREST"===t.samplerMagFilter||"NEAREST"===t.magFilter},this.jsonImageItemComponent);else{const t=this.getJSONAsString(e,n,i);if(null==t)continue;if(this.toFilter(n)&&this.toFilter(i))continue;this.mvx.addChildState(e,{key:n,value:t},this.jsonItemComponent)}i&&i.__SPECTOR_Metadata&&this.displayJSONGroup(e,"Metadata",i.__SPECTOR_Metadata)}}getJSONAsString(e,t,n){if(null===n)return"null";if(void 0===n)return"undefined";if("number"==typeof n)return Math.floor(n)===n?n.toFixed(0):n.toFixed(4);if("string"==typeof n)return n;if("boolean"==typeof n)return n?"true":"false";if(0===n.length)return"Empty Array";if(n.length){const i=[];for(let r=0;r(e.active=!1,e))),this.mvx.updateState(this.currentCaptureStateId,{capture:e,active:!0}),this.createVisualStates(e),this.commandListStateId=this.mvx.addChildState(this.contentStateId,null,this.commandListComponent),this.commandDetailStateId=this.mvx.addChildState(this.contentStateId,null,this.commandDetailComponent),this.createCommands(e)}displayCurrentCommand(){if(40!==this.mvx.getGenericState(this.menuStateId).status)return-1;const e=this.mvx.getGenericState(this.currentCommandStateId),t=e.capture;return this.currentCommandId=t.id,this.mvx.updateAllChildrenGenericState(this.commandListStateId,(e=>(e.active=!1,e))),this.mvx.updateState(this.currentCommandStateId,{capture:t,visualStateId:e.visualStateId,previousCommandStateId:e.previousCommandStateId,nextCommandStateId:e.nextCommandStateId,active:!0}),this.displayCurrentCommandDetail(e)}displayCurrentCommandDetail(e){const t=e.capture;this.mvx.removeChildrenStates(this.commandDetailStateId);const n=this.mvx.getGenericState(e.visualStateId);this.mvx.addChildState(this.commandDetailStateId,n.VisualState,this.jsonVisualStateItemComponent);let i="Unknown";switch(t.status){case 50:i="Deprecated";break;case 10:i="Unused";break;case 20:i="Disabled";break;case 30:i="Redundant";break;case 40:i="Valid"}const r=Kt.getMDNLink(t.name);t.result?this.displayJSONGroup(this.commandDetailStateId,"Global",{name:{help:r,name:t.name},duration:t.commandEndTime-t.startTime,result:t.result,status:i}):"LOG"!==t.name&&this.displayJSONGroup(this.commandDetailStateId,"Global",{name:{help:r,name:t.name},duration:t.commandEndTime-t.startTime,status:i});for(const e in t)"VisualState"!==e&&"result"!==e&&"object"==typeof t[e]&&this.displayJSONGroup(this.commandDetailStateId,e,t[e]);return e.visualStateId}displayCurrentVisualState(){if(40!==this.mvx.getGenericState(this.menuStateId).status)return null;const e=this.mvx.getGenericState(this.currentVisualStateId);return e.commandStateId===Number.MIN_VALUE?this.displayInitState():e.commandStateId===Number.MAX_VALUE&&this.displayEndState(),this.mvx.updateAllChildrenGenericState(this.visualStateListStateId,(e=>(e.active=!1,e))),e.active=!0,this.mvx.updateState(this.currentVisualStateId,e),e.commandStateId}createVisualStates(e){this.visualStateListStateId=this.mvx.addChildState(this.contentStateId,null,this.visualStateListComponent),this.mvx.removeChildrenStates(this.visualStateListStateId),this.initVisualStateId=this.mvx.addChildState(this.visualStateListStateId,{VisualState:e.initState.VisualState,time:e.startTime,commandStateId:Number.MIN_VALUE,active:!1},this.visualStateListItemComponent)}createCommands(e){this.mvx.removeChildrenStates(this.commandListStateId);let t=this.initVisualStateId,n=!1,i=null,r=-1,s=null,o=-1;for(let a=0;a2&&-1===e.indexOf(this.searchText.toLowerCase()))}search(e){switch(this.searchText=e,this.mvx.getGenericState(this.menuStateId).status){case 0:case 40:this.displayCurrentCapture();break;case 30:this.displayEndState();break;case 10:this.displayInformation();break;case 20:this.displayInitState()}this.searchText=""}}class Yt{constructor(e){this.timeSpy=e,this.init()}spyXRSession(e){this.currentXRSession&&this.unspyXRSession();for(const e of Ze.getRequestAnimationFrameFunctionNames())A.resetOriginFunction(this.timeSpy.getSpiedScope(),e);this.timeSpy.spyRequestAnimationFrame("requestAnimationFrame",e),this.currentXRSession=e}unspyXRSession(){if(this.currentXRSession){A.resetOriginFunction(this.currentXRSession,"requestAnimationFrame"),this.currentXRSession=void 0;for(const e of Ze.getRequestAnimationFrameFunctionNames())this.timeSpy.spyRequestAnimationFrame(e,this.timeSpy.getSpiedScope())}}init(){if(!navigator.xr)return;class e extends XRWebGLLayer{constructor(e,t,n){super(e,t,n),this.glContext=t}getContext(){return this.glContext}}class t extends XRWebGLBinding{constructor(e,t){super(e,t),this.glContext=t}createProjectionLayer(e){const t=super.createProjectionLayer(e);return t.glContext=this.glContext,t}}window.XRWebGLLayer=e,window.XRWebGLBinding=t;const n=navigator.xr.requestSession;Object.defineProperty(navigator.xr,"requestSessionInternal",{writable:!0}),navigator.xr.requestSessionInternal=n,Object.defineProperty(navigator.xr,"requestSession",{writable:!0}),navigator.xr.requestSession=(e,t)=>((e,t)=>navigator.xr.requestSessionInternal(e,t).then((e=>{const t=e;return t._updateRenderState=e.updateRenderState,t.updateRenderState=e=>{return n=this,i=void 0,s=function*(){if(e.baseLayer){const n=e.baseLayer;t.glContext=n.getContext()}if(e.layers)for(const n of e.layers){const e=n;e.glContext&&(t.glContext=e.glContext)}return t._updateRenderState(e)},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(o,a)}l((s=s.apply(n,i||[])).next())}));var n,i,r,s},this.spyXRSession(t),e.addEventListener("end",(()=>{this.unspyXRSession()})),Promise.resolve(e)})))(e,t)}}const qt={CaptureMenu:St,ResultView:jt};class Zt{constructor(e={}){this.noFrameTimeout=-1,this.options=Object.assign({enableXRCapture:!1},e),this.captureNextFrames=0,this.captureNextCommands=0,this.quickCapture=!1,this.fullCapture=!1,this.retry=0,this.contexts=[],this.timeSpy=new Ze,this.onCaptureStarted=new o,this.onCapture=new o,this.onError=new o,this.timeSpy.onFrameStart.add(this.onFrameStart,this),this.timeSpy.onFrameEnd.add(this.onFrameEnd,this),this.timeSpy.onError.add(this.onErrorInternal,this),this.options.enableXRCapture&&(this.xrSpy=new Yt(this.timeSpy))}static getFirstAvailable3dContext(e){return this.tryGetContextFromHelperField(e)||this.tryGetContextFromCanvas(e,"webgl")||this.tryGetContextFromCanvas(e,"experimental-webgl")||this.tryGetContextFromCanvas(e,"webgl2")||this.tryGetContextFromCanvas(e,"experimental-webgl2")}static tryGetContextFromHelperField(e){const t=e instanceof HTMLCanvasElement?e.getAttribute("__spector_context_type"):e.__spector_context_type;if(t)return this.tryGetContextFromCanvas(e,t)}static tryGetContextFromCanvas(e,t){let n;try{n=e.getContext(t)}catch(e){}return n}displayUI(e=!1){this.captureMenu||(this.getCaptureUI(),this.captureMenu.onPauseRequested.add(this.pause,this),this.captureMenu.onPlayRequested.add(this.play,this),this.captureMenu.onPlayNextFrameRequested.add(this.playNextFrame,this),this.captureMenu.onCaptureRequested.add((e=>{e&&this.captureCanvas(e.ref)}),this),setInterval((()=>{this.captureMenu.setFPS(this.getFps())}),1e3),e||this.captureMenu.trackPageCanvases(),this.captureMenu.display()),this.resultView||(this.getResultUI(),this.onCapture.add((e=>{this.resultView.display(),this.resultView.addCapture(e)})))}getResultUI(){return this.resultView||(this.resultView=new jt,this.resultView.onSourceCodeChanged.add((e=>{this.rebuildProgramFromProgramId(e.programId,e.sourceVertex,e.sourceFragment,(t=>{this.referenceNewProgram(e.programId,t),this.resultView.showSourceCodeError(null)}),(e=>{this.resultView.showSourceCodeError(e)}))}))),this.resultView}getCaptureUI(){return this.captureMenu||(this.captureMenu=new St),this.captureMenu}rebuildProgramFromProgramId(e,t,n,i,r){const s=we.getFromGlobalStore(e);this.rebuildProgram(s,t,n,i,r)}rebuildProgram(e,t,n,r,s){i.rebuildProgram(e,t,n,r,s)}referenceNewProgram(e,t){we.updateInGlobalStore(e,t)}pause(){this.timeSpy.changeSpeedRatio(0)}play(){this.timeSpy.changeSpeedRatio(1)}playNextFrame(){this.timeSpy.playNextFrame()}drawOnlyEveryXFrame(e){this.timeSpy.changeSpeedRatio(e)}getFps(){return this.timeSpy.getFps()}spyCanvases(){this.canvasSpy?this.onErrorInternal("Already spying canvas."):(this.canvasSpy=new Qe,this.canvasSpy.onContextRequested.add(this.spyContext,this))}spyCanvas(e){this.canvasSpy?this.onErrorInternal("Already spying canvas."):(this.canvasSpy=new Qe(e),this.canvasSpy.onContextRequested.add(this.spyContext,this))}getAvailableContexts(){return this.getAvailableContexts()}captureCanvas(e,t=0,n=!1,i=!1){const r=this.getAvailableContextSpyByCanvas(e);if(r)this.captureContextSpy(r,t,n,i);else{const r=Zt.getFirstAvailable3dContext(e);r?this.captureContext(r,t,n,i):s.error("No webgl context available on the chosen canvas.")}}captureContext(e,t=0,n=!1,i=!1){let r=this.getAvailableContextSpyByCanvas(e.canvas);r||(r=e.getIndexedParameter?new qe({context:e,version:2,recordAlways:!1}):new qe({context:e,version:1,recordAlways:!1}),r.onMaxCommand.add(this.stopCapture,this),this.contexts.push({canvas:r.context.canvas,contextSpy:r})),r&&this.captureContextSpy(r,t,n,i)}captureXRContext(e=0,t=!1,n=!1){this.captureContext(this.getXRContext(),e,t,n)}captureContextSpy(e,t=0,n=!1,i=!1){this.quickCapture=n,this.fullCapture=i,this.capturingContext?this.onErrorInternal("Already capturing a context."):(this.retry=0,this.capturingContext=e,this.capturingContext.setMarker(this.marker),(t=Math.min(t,1e4))>0?this.captureCommands(t):this.captureFrames(1),this.noFrameTimeout=setTimeout((()=>{t>0?this.stopCapture():this.capturingContext&&this.retry>1?this.onErrorInternal("No frames with gl commands detected. Try moving the camera."):this.onErrorInternal("No frames detected. Try moving the camera or implementing requestAnimationFrame.")}),1e4))}captureNextFrame(e,t=!1,n=!1){e instanceof HTMLCanvasElement||self.OffscreenCanvas&&e instanceof OffscreenCanvas?this.captureCanvas(e,0,t,n):this.captureContext(e,0,t,n)}startCapture(e,t,n=!1,i=!1){e instanceof HTMLCanvasElement||self.OffscreenCanvas&&e instanceof OffscreenCanvas?this.captureCanvas(e,t,n,i):this.captureContext(e,t,n,i)}stopCapture(){if(this.capturingContext){const e=this.capturingContext.stopCapture();if(e.commands.length>0)return this.noFrameTimeout>-1&&clearTimeout(this.noFrameTimeout),this.triggerCapture(e),this.capturingContext=void 0,this.captureNextFrames=0,this.captureNextCommands=0,e;0===this.captureNextCommands&&(this.retry++,this.captureFrames(1))}}setMarker(e){this.marker=e,this.capturingContext&&this.capturingContext.setMarker(e)}clearMarker(){this.marker=null,this.capturingContext&&this.capturingContext.clearMarker()}addRequestAnimationFrameFunctionName(e){this.timeSpy.addRequestAnimationFrameFunctionName(e)}setSpiedScope(e){this.timeSpy.setSpiedScope(e)}log(e){this.capturingContext&&this.capturingContext.log(e)}captureFrames(e){this.captureNextFrames=e,this.captureNextCommands=0,this.playNextFrame()}captureCommands(e){this.captureNextFrames=0,this.captureNextCommands=e,this.play(),this.capturingContext?(this.onCaptureStarted.trigger(void 0),this.capturingContext.startCapture(e,this.quickCapture,this.fullCapture)):(this.onErrorInternal("No context to capture from."),this.captureNextCommands=0)}spyContext(e){let t=this.getAvailableContextSpyByCanvas(e.context.canvas);t||(t=new qe({context:e.context,version:e.contextVersion,recordAlways:!0}),t.onMaxCommand.add(this.stopCapture,this),this.contexts.push({canvas:t.context.canvas,contextSpy:t})),t.spy()}getAvailableContextSpyByCanvas(e){for(const t of this.contexts)if(t.canvas===e)return t.contextSpy}getXRContext(){return this.options.enableXRCapture||s.error("Cannot retrieve WebXR context if capturing WebXR is disabled."),this.xrSpy.currentXRSession||s.error("No currently active WebXR session."),this.xrSpy.currentXRSession.glContext}onFrameStart(){this.captureNextCommands>0||(this.captureNextFrames>0?(this.capturingContext&&(this.onCaptureStarted.trigger(void 0),this.capturingContext.startCapture(0,this.quickCapture,this.fullCapture)),this.captureNextFrames--):this.capturingContext=void 0)}onFrameEnd(){this.captureNextCommands>0||0===this.captureNextFrames&&this.stopCapture()}triggerCapture(e){this.captureMenu&&this.captureMenu.captureComplete(null),this.onCapture.trigger(e)}onErrorInternal(e){if(s.error(e),this.noFrameTimeout>-1&&clearTimeout(this.noFrameTimeout),!this.capturingContext)throw e;this.capturingContext=void 0,this.captureNextFrames=0,this.captureNextCommands=0,this.retry=0,this.captureMenu&&this.captureMenu.captureComplete(e),this.onError.trigger(e)}}},18:(e,t,n)=>{e=n.nmd(e),ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],(function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/event"),o='.ace_search {background-color: #ddd;color: #666;border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;min-height: 1.8em;box-sizing: content-box;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;color: #666;}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: "";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width: 2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing: border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}',a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(o,"ace_searchbox");var c=function(e,t,n){var r=i.createElement("div");i.buildDom(["div",{class:"ace_search right"},["span",{action:"hide",class:"ace_searchbtn_close"}],["div",{class:"ace_search_form"},["input",{class:"ace_search_field",placeholder:"Search for",spellcheck:"false"}],["span",{action:"findPrev",class:"ace_searchbtn prev"},"​"],["span",{action:"findNext",class:"ace_searchbtn next"},"​"],["span",{action:"findAll",class:"ace_searchbtn",title:"Alt-Enter"},"All"]],["div",{class:"ace_replace_form"},["input",{class:"ace_search_field",placeholder:"Replace with",spellcheck:"false"}],["span",{action:"replaceAndFindNext",class:"ace_searchbtn"},"Replace"],["span",{action:"replaceAll",class:"ace_searchbtn"},"All"]],["div",{class:"ace_search_options"},["span",{action:"toggleReplace",class:"ace_button",title:"Toggle Replace mode",style:"float:left;margin-top:-2px;padding:0 5px;"},"+"],["span",{class:"ace_search_counter"}],["span",{action:"toggleRegexpMode",class:"ace_button",title:"RegExp Search"},".*"],["span",{action:"toggleCaseSensitive",class:"ace_button",title:"CaseSensitive Search"},"Aa"],["span",{action:"toggleWholeWords",class:"ace_button",title:"Whole Word Search"},"\\b"],["span",{action:"searchInSelection",class:"ace_button",title:"Search In Selection"},"S"]]],r),this.element=r.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(e),i.importCssString(o,"ace_searchbox",e.container)};(function(){this.setEditor=function(e){e.searchBox=this,e.renderer.scroller.appendChild(this.element),this.editor=e},this.setSession=function(e){this.searchRange=null,this.$syncOptions(!0)},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOption=e.querySelector("[action=searchInSelection]"),this.replaceOption=e.querySelector("[action=toggleReplace]"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field"),this.searchCounter=e.querySelector(".ace_search_counter")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",(function(e){setTimeout((function(){t.activeInput.focus()}),0),s.stopPropagation(e)})),s.addListener(e,"click",(function(e){var n=(e.target||e.srcElement).getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),s.stopPropagation(e)})),s.addCommandKeyListener(e,(function(e,n,i){var r=l.keyCodeToString(i),o=t.$searchBarKb.findKeyCommand(n,r);o&&o.exec&&(o.exec(t),s.stopEvent(e))})),this.$onChange=r.delayedCall((function(){t.find(!1,!1)})),s.addListener(this.searchInput,"input",(function(){t.$onChange.schedule(20)})),s.addListener(this.searchInput,"focus",(function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()})),s.addListener(this.replaceInput,"focus",(function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()}))},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.replaceOption.checked=!1,e.$syncOptions(),e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.editor.getReadOnly()||(e.replaceOption.checked=!0,e.$syncOptions(),e.replaceInput.focus())},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout((function(){e.hide()}))},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}},{name:"toggleReplace",exec:function(e){e.replaceOption.checked=!e.replaceOption.checked,e.$syncOptions()}},{name:"searchInSelection",exec:function(e){e.searchOption.checked=!e.searchRange,e.setSearchRange(e.searchOption.checked&&e.editor.getSelectionRange()),e.$syncOptions()}}]),this.setSearchRange=function(e){this.searchRange=e,e?this.searchRangeMarker=this.editor.session.addMarker(e,"ace_active-line"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},this.$syncOptions=function(e){i.setCssClass(this.replaceOption,"checked",this.searchRange),i.setCssClass(this.searchOption,"checked",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?"-":"+",i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked);var t=this.editor.getReadOnly();this.replaceOption.style.display=t?"none":"",this.replaceBox.style.display=this.replaceOption.checked&&!t?"":"none",this.find(!1,!1,e)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var r=!this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n,range:this.searchRange})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight(),this.updateCounter()},this.updateCounter=function(){var e=this.editor,t=e.$search.$options.re,n=0,i=0;if(t){var r=this.searchRange?e.session.getTextRange(this.searchRange):e.getValue(),s=e.session.doc.positionToIndex(e.selection.anchor);this.searchRange&&(s-=e.session.doc.positionToIndex(this.searchRange.start));for(var o,a=t.lastIndex=0;(o=t.exec(r))&&(n++,(a=o.index)<=s&&i++,!(n>999))&&(o[0]||(t.lastIndex=a+=1,!(a>=r.length))););}this.searchCounter.textContent=i+" of "+(n>999?"999+":n)},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=!this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",e),this.editor._emit("findSearchBox",{match:!e}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.active=!0,this.editor.on("changeSession",this.setSession),this.element.style.display="",this.replaceOption.checked=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}})),ace.require(["ace/ext/searchbox"],(function(t){e&&(e.exports=t)}))},176:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};i.inherits(s,r),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s})),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",a=function(){var e=this.$keywords=this.createKeywordMapper({"keyword.control":"break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using","storage.type":"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t","storage.modifier":"const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local","keyword.operator":"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace","variable.language":"this","constant.language":"NULL|true|false|TRUE|FALSE|nullptr"},"identifier"),t=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,n="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},r.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+t+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:t},{token:"constant.language.escape",regex:n},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef|version)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(r,"doc-",[r.getEndRule("start")]),this.normalizeRules()};i.inherits(a,s),t.c_cppHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var r=n[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var o=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),o)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),r=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var r=this._getFoldWidgetBase(e,t,n);return!r&&this.startRegionRe.test(i)?"start":r},this.getFoldWidgetRange=function(e,t,n,i){var r,s=e.getLine(n);if(this.startRegionRe.test(s))return this.getCommentRegionBlock(e,s,n);if(r=s.match(this.foldingStartMarker)){var o=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,o);var a=e.getCommentFoldRange(n,o+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(r=s.match(this.foldingStopMarker))?(o=r.index+r[0].length,r[1]?this.closingBracketBlock(e,r[1],n,o):e.getCommentFoldRange(n,o,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),s=t,o=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=s)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new r(s,o,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),s=e.getLength(),o=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++no)return new r(o,i,n,t.length)}}.call(o.prototype)})),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,a=(e("../range").Range,e("./behaviour/cstyle").CstyleBehaviour),l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new l};i.inherits(c,r),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),r=this.getTokenizer().getLineTokens(t,e),s=r.tokens,o=r.state;if(s.length&&"comment"==s[s.length-1].type)return i;if("start"==e)(a=t.match(/^.*[\{\(\[]\s*$/))&&(i+=n);else if("doc-start"==e){if("start"==o)return"";var a;(a=t.match(/^\s*(\/?)\*/))&&(a[1]&&(i+=" "),i+="* ")}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(c.prototype),t.Mode=c})),ace.define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("./c_cpp_highlight_rules").c_cppHighlightRules,s=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"layout|attribute|const|uniform|varying|break|continue|do|for|while|if|else|in|out|inout|float|int|void|bool|true|false|lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|samplerCube|struct","constant.language":"radians|degrees|sin|cos|tan|asin|acos|atan|pow|exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|normalize|faceforward|reflect|refract|matrixCompMult|lessThan|lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|texture2DProjLod|textureCube|textureCubeLod|gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|gl_DepthRangeParameters|gl_DepthRange|gl_Position|gl_PointSize|gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData"},"identifier");this.$rules=(new r).$rules,this.$rules.start.forEach((function(t){"function"==typeof t.token&&(t.token=e)}))};i.inherits(s,r),t.glslHighlightRules=s})),ace.define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("./c_cpp").Mode,s=e("./glsl_highlight_rules").glslHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,a=(e("../range").Range,e("./behaviour/cstyle").CstyleBehaviour),l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new l};i.inherits(c,r),function(){this.$id="ace/mode/glsl"}.call(c.prototype),t.Mode=c})),ace.require(["ace/mode/glsl"],(function(t){e&&(e.exports=t)}))},793:(e,t,n)=>{e=n.nmd(e),ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],(function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}",e("../lib/dom").importCssString(t.cssText,t.cssClass)})),ace.require(["ace/theme/monokai"],(function(t){e&&(e.exports=t)}))}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.loaded=!0,s.exports}return n.amdD=function(){throw new Error("define cannot be used indirect")},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.nc=void 0,n(819),n(176),n(793),n(655),n(18),n(986)})())); \ No newline at end of file +/*! For license information please see spector.bundle.js.LICENSE.txt */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("SPECTOR",[],t):"object"==typeof exports?exports.SPECTOR=t():e.SPECTOR=t()}(self,()=>(()=>{var e={25(e,t,n){"use strict";n.d(t,{A:()=>a});var i=n(601),r=n.n(i),s=n(314),o=n.n(s)()(r());o.push([e.id,'.captureMenuComponent{position:absolute;padding:7px;z-index:99999;top:10px;left:50%;margin-left:-209px;height:40px;width:400px;border:2px solid #222;background-color:#2c2c2c;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.captureMenuComponent.active{visibility:visible;display:block}.captureMenuComponent,.captureMenuComponent:after,.captureMenuComponent:before{box-sizing:content-box}.captureMenuLogComponent{position:absolute;padding:7px;z-index:80000;top:66px;left:50%;margin-left:-209px;height:40px;width:400px;border:2px solid #222;background-color:#2c2c2c;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.captureMenuLogComponent.active{visibility:visible;display:block}.captureMenuLogComponent,.captureMenuLogComponent:after,.captureMenuLogComponent:before{box-sizing:content-box}.captureMenuLogComponent span.error{color:red}.canvasListComponent{float:left;width:50%;height:100%}.canvasListComponent [commandName=onCanvasSelection]{vertical-align:center;line-height:40px;white-space:nowrap;text-overflow:ellipsis;width:190px;display:inline-block;overflow:hidden;margin:0px 5px}.canvasListComponent [commandName=onCanvasSelection]:hover{color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.canvasListComponent ul{margin:0px;padding:7px;list-style:none;position:absolute;top:54px;left:-2px;width:400px;border:2px solid #222;background-color:#2c2c2c}.canvasListComponent ul li{margin:5px}.canvasListComponent ul li:hover{color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.captureMenuActionsComponent{float:left;width:30%;height:100%;margin-top:7.5px}.captureMenuActionsComponent div{float:left}.captureMenuActionsComponent [commandName=onCaptureRequested]{border-radius:50%;background:#2c2c2c;border:2px solid red;width:21px;height:21px}.captureMenuActionsComponent [commandName=onCaptureRequested]:hover{background:red;cursor:pointer;transition:background .3s;-webkit-transition:background .3s;-moz-transition:background .3s}.captureMenuActionsComponent [commandName=onPlayRequested],.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]{width:21px;height:21px;border:2px solid #f9f9f9;border-radius:50%;margin-left:9px}.captureMenuActionsComponent [commandName=onPlayRequested]:before,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:before{content:"";position:absolute;display:inline-block;margin-top:6px;margin-left:4px;width:7px;height:7px;border-top:2px solid #f9f9f9;border-right:2px solid #f9f9f9;background-color:#f9f9f9;-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-20}.captureMenuActionsComponent [commandName=onPlayRequested]:after,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:after{content:"";position:absolute;display:inline-block;width:8px;height:20px;background-color:#2c2c2c;z-index:-10}.captureMenuActionsComponent [commandName=onPlayRequested]:hover,.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:hover{cursor:pointer;border:2px solid #c9c9c9;transition:border .3s;-webkit-transition:border .3s;-moz-transition:border .3s}.captureMenuActionsComponent [commandName=onPauseRequested]{width:21px;height:21px;border:2px solid #f9f9f9;border-radius:50%;margin-left:9px}.captureMenuActionsComponent [commandName=onPauseRequested]:before{content:"";position:absolute;display:inline-block;width:2px;height:13px;margin-left:12px;margin-top:4px;background-color:#f9f9f9}.captureMenuActionsComponent [commandName=onPauseRequested]:after{content:"";position:absolute;display:inline-block;width:2px;height:13px;margin-left:7px;margin-top:4px;background-color:#f9f9f9}.captureMenuActionsComponent [commandName=onPauseRequested]:hover{cursor:pointer;border:2px solid #c9c9c9;transition:border .3s;-webkit-transition:border .3s;-moz-transition:border .3s}.captureMenuActionsComponent [commandName=onPlayNextFrameRequested]:before{background-color:#2c2c2c}.fpsCounterComponent{float:left;width:20%;vertical-align:center;line-height:40px;white-space:nowrap}',""]);const a=o},984(e,t,n){"use strict";n.d(t,{A:()=>a});var i=n(601),r=n.n(i),s=n(314),o=n.n(s)()(r());o.push([e.id,'.resultViewComponent{position:absolute;z-index:99999;border:1px solid #000;top:0;left:0;bottom:0;right:0;background-color:#222;opacity:1;visibility:hidden;display:none;color:#f9f9f9;font-family:Consolas,monaco,monospace;font-size:14px;font-weight:500}.resultViewComponent.active{visibility:visible;display:block}.resultViewComponent,.resultViewComponent:after,.resultViewComponent:before{box-sizing:content-box}.resultViewMenuComponent{font-family:sans-serif;font-size:13px;font-weight:300;line-height:40px;flex:1 100%;display:flex;flex-flow:row wrap;height:42px;outline:0 none;border-bottom:2px solid #222;box-sizing:border-box;list-style:none;margin:0;background:#2c2c2c;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-end}.resultViewMenuComponent .resultViewMenuOpen{display:none;visibility:hidden}.resultViewMenuComponent a{outline:0 none;text-decoration:none;display:block;padding:0 20px 0 20px;color:#ccc;background:#2c2c2c;box-sizing:border-box;height:100%}.resultViewMenuComponent a.active{background:#222;color:#fff;font-weight:400;border-bottom:2px solid #f0640d}.resultViewMenuComponent a:hover{background:#222;color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.resultViewMenuComponent a:hover.active{color:#f0640d;transition:color 0;-webkit-transition:color 0;-moz-transition:color 0}.resultViewMenuComponent a.clearSearch{padding:0px;margin-left:-30px;margin-right:20px;z-index:9000;color:#f9f9f9}.resultViewMenuComponent a.clearSearch:hover{background:#2c2c2c;color:#f0640d}@media all and (max-width: 1024px){.resultViewMenuComponent{padding:0px;position:absolute;overflow-y:visible;top:0px;left:0px;right:0px;bottom:0px;z-index:999999;display:block}.resultViewMenuComponent .resultViewMenuOpen{display:block;visibility:visible}.resultViewMenuComponent li:not(.resultViewMenuSmall){display:none;visibility:hidden}.resultViewMenuComponent li{background:#2c2c2c}.resultViewMenuComponent li.searchContainer{background:#464646}.resultViewMenuComponent a.active{background:#2c2c2c}}.resultViewMenuComponent input{border:0;font-family:sans-serif;font-weight:300;padding:0 20px 0 20px;background:#464646;color:#f9f9f9;height:40px;position:relative;top:-1px;box-sizing:border-box}.resultViewMenuComponent input:focus{border:0;outline:0 none}.resultViewMenuComponent .clearSearch{position:relative;background:rgba(0,0,0,0);display:inline;padding:0px;margin-left:-30px;z-index:9000;color:#f0640d}.resultViewMenuComponent .clearSearch:hover{background:rgba(0,0,0,0) !important}.resultViewMenuComponent ::-webkit-input-placeholder{color:#ccc}.resultViewMenuComponent :-moz-placeholder{color:#ccc}.resultViewMenuComponent ::-moz-placeholder{color:#ccc}.resultViewMenuComponent :-ms-input-placeholder{color:#ccc}.resultViewContentComponent{position:absolute;top:40px;left:0;bottom:0;right:0}.informationColumnLeftComponent{position:absolute;top:0;left:0;bottom:0;right:50%;overflow:auto;overflow-x:hidden;overflow-y:visible}.informationColumnRightComponent{position:absolute;top:0;left:50%;bottom:0;right:0;overflow:auto;overflow-x:hidden;overflow-y:visible}.captureListComponent{position:absolute;top:40px;left:0;bottom:0;right:0;background:#222;z-index:9000;display:none;visibility:hidden;overflow-y:visible;overflow-x:hidden}.captureListComponent.active{display:block;visibility:visible}.captureListComponent .openCaptureFile{border:1px dashed #f9f9f9;display:block;margin:5px;padding:5px;text-align:center;font-style:italic}.captureListComponent .openCaptureFile span{line-height:100%;vertical-align:middle}.captureListComponent ul{margin:0px;padding:0px;list-style:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-start}.captureListComponent ul li{margin:5px;border:1px solid #606060}.captureListComponent ul li img{width:295px;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px;display:block}.captureListComponent ul li span{display:block;text-align:center;border:5px solid #222}.captureListComponent ul li span .captureListItemSave{color:#f9f9f9;font-size:16px;margin-left:10px;position:relative;padding:3px 8px 3px 32px}.captureListComponent ul li span .captureListItemSave:before,.captureListComponent ul li span .captureListItemSave:after{box-sizing:border-box;content:"";position:absolute}.captureListComponent ul li span .captureListItemSave:before{background:#d9d9d9;border-color:#f9f9f9;border-style:solid;border-width:7px 2px 1px;border-radius:1px;height:16px;left:8px;top:5px;width:16px}.captureListComponent ul li span .captureListItemSave:after{background:#f9f9f9;border-color:#d9d9d9;border-style:solid;border-width:1px 1px 1px 4px;height:5px;left:13px;top:5px;width:7px}.captureListComponent ul li:hover{cursor:pointer}.captureListComponent ul li.active span{background:#f0640d;border:5px solid #f0640d}.captureListComponent ul li.active span .captureListItemSave:before{background:#f0640d}.captureListComponent ul li.active span .captureListItemSave:after{border-color:#f0640d}.visualStateListComponent{position:absolute;top:0;left:0;bottom:0;padding:5px;right:80%;overflow-y:visible;overflow-x:hidden}.visualStateListComponent ul{margin:0px;padding:0px;list-style:none}.visualStateListComponent ul li{margin:20px 15px 0px 15px;border:1px solid #606060}.visualStateListComponent ul li img{display:block;padding:0px;box-sizing:border-box;max-height:600px;width:100%;margin:0 auto;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px}.visualStateListComponent ul li:hover{cursor:pointer}.visualStateListComponent ul li span{border:5px solid #222;background:#222;box-sizing:border-box;display:inline-block;width:100%;margin:0px;padding:5px;word-wrap:break-word}.visualStateListComponent ul li.active{border:2px solid #f0640d}.commandListComponent{position:absolute;top:0;left:20%;right:40%;bottom:0;color:#d3d3d3}.commandListComponent ul{margin:0px;padding:0px;list-style:none;overflow-y:visible;overflow-x:hidden;height:100%}.commandListComponent ul li{padding:8px}.commandListComponent ul li span{word-wrap:break-word;line-height:22px}.commandListComponent ul li:hover{color:#f9f9f9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.commandListComponent ul li:nth-child(even){background:#2c2c2c}.commandListComponent ul li:nth-child(odd){background:#222}.commandListComponent ul li .important{font-weight:800}.commandListComponent ul li .important.deprecated{color:red}.commandListComponent ul li .important.unused{color:#ff0}.commandListComponent ul li .important.disabled{color:gray}.commandListComponent ul li .important.redundant{color:orange}.commandListComponent ul li .important.valid{color:#adff2f}.commandListComponent ul li .marker{font-size:16px;font-weight:900;color:#adff2f}.commandListComponent ul li.active{background:#f37628;color:#222}.commandListComponent ul li.drawCall{background:#5db0d7;color:#222}.commandListComponent ul li a{margin-left:5px;margin-right:5px;color:#5db0d7;background:#222;padding:5px;font-weight:900;display:inline-block}.commandDetailComponent{position:absolute;top:0;left:60%;right:0;bottom:0;overflow-y:visible;overflow-x:hidden}.jsonGroupComponent{display:block;margin:10px;padding:10px;padding-bottom:5px}.jsonGroupComponent .jsonGroupComponentTitle{display:block;font-size:16px;color:#5db0d7;border-bottom:1px solid #5db0d7;padding-bottom:5px;margin-bottom:5px;text-transform:capitalize}.jsonGroupComponent ul{margin:0px;padding:0px;list-style:none}.jsonGroupComponent ul li:nth-child(even){background:#222}.jsonGroupComponent ul li:nth-child(odd){background:#222}.jsonItemComponentKey{color:#f0640d}.jsonItemComponentValue{white-space:pre-wrap}.jsonItemImageHolder{width:50%;margin:auto}.jsonItemImageHolder .jsonItemImage{margin:5px;display:block;border:1px solid #606060;width:100%}.jsonItemImageHolder .jsonItemImage img{width:100%;display:block;margin:auto;max-width:256px;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px}.jsonItemImageHolder .jsonItemImage span{margin:0px;padding:5px;word-wrap:break-word;display:inline-block;width:100%;box-sizing:border-box}[commandName=onOpenSourceClicked]:hover{color:#f9f9f9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.jsonVisualStateItemComponent{text-align:center;padding:10px}.jsonVisualStateItemComponent img{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, #c9c9c9), color-stop(0.25, transparent)),-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9)),-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.75, transparent), color-stop(0.75, #c9c9c9));background-image:-moz-linear-gradient(45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(-45deg, #d9d9d9 25%, transparent 25%),-moz-linear-gradient(45deg, transparent 75%, #d9d9d9 75%),-moz-linear-gradient(-45deg, transparent 75%, #d9d9d9 75%);-webkit-background-size:50px 51px;-moz-background-size:50px 50px;background-size:50px 50px;background-position:0 0,25px 0,25px -25px,0px 25px;border:1px solid #606060;margin:5px;width:100%;max-width:512px;max-height:800px}.jsonVisualStateItemComponent span{display:block}.jsonContentComponent{position:absolute;top:0;left:0;right:0;bottom:0;padding:10px;overflow-y:visible;overflow-x:hidden}.jsonItemComponentValue{word-break:break-all;white-space:normal}.jsonSourceItemComponentOpen{font-weight:bold;color:#5db0d7;text-decoration:underline}.sourceCodeMenuComponentContainer{position:absolute;left:0;top:0;bottom:48px;right:40%}.sourceCodeMenuComponentFooter{position:absolute;left:0;right:40%;bottom:0;padding:0 15px}.sourceCodeMenuComponent{font-family:sans-serif;font-size:13px;font-weight:300;line-height:40px;flex:1 100%;display:flex;flex-flow:row wrap;height:42px;outline:0 none;border-bottom:2px solid #222;box-sizing:border-box;list-style:none;margin:0;background:#2c2c2c;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;justify-content:flex-end}.sourceCodeMenuComponent .resultViewMenuOpen{display:none;visibility:hidden}.sourceCodeMenuComponent a{outline:0 none;text-decoration:none;display:block;padding:0 20px 0 20px;color:#ccc;background:#2c2c2c;box-sizing:border-box;height:100%}.sourceCodeMenuComponent a.active{background:#222;color:#fff;font-weight:400;border-bottom:2px solid #f0640d}.sourceCodeMenuComponent a:hover{background:#222;color:#c9c9c9;cursor:pointer;transition:color .3s;-webkit-transition:color .3s;-moz-transition:color .3s}.sourceCodeMenuComponent a:hover.active{color:#f0640d;transition:color 0;-webkit-transition:color 0;-moz-transition:color 0}.sourceCodeMenuComponent a.clearSearch{display:inline-block;padding:0px;margin-left:-30px;margin-right:20px;z-index:9000;color:#f9f9f9}.sourceCodeMenuComponent a.clearSearch:hover{background:#2c2c2c;color:#f0640d}.sourceCodeMenuComponent input{border:0;font-family:sans-serif;font-weight:300;padding:0 20px 0 20px;background:#464646;color:#f9f9f9;height:100%;position:relative;top:-1px;box-sizing:border-box}.sourceCodeMenuComponent input:focus{border:0;outline:0 none}.sourceCodeMenuComponent .clearSearch{position:relative;background:rgba(0,0,0,0);display:inline;padding:0px;margin-left:-30px;z-index:9000;color:#f0640d}.sourceCodeMenuComponent .clearSearch:hover{background:rgba(0,0,0,0) !important}.sourceCodeMenuComponent ::-webkit-input-placeholder{color:#ccc}.sourceCodeMenuComponent :-moz-placeholder{color:#ccc}.sourceCodeMenuComponent ::-moz-placeholder{color:#ccc}.sourceCodeMenuComponent :-ms-input-placeholder{color:#ccc}.sourceCodeComponent{position:absolute;top:42px;left:0;bottom:48px;right:40%;background:#222;z-index:9000;overflow-x:visible;overflow:auto}.sourceCodeComponent .sourceCodeComponentTitle{font-size:16px;font-weight:800;line-height:50px;color:#f0640d;padding:1em;margin:.5em 0}',""]);const a=o},636(e,t,n){"use strict";n.d(t,{A:()=>a});var i=n(601),r=n.n(i),s=n(314),o=n.n(s)()(r());o.push([e.id,".ace-monokai {\r\n color: #f9f9f9;\r\n font-size: 14px;\r\n}\r\n\r\n.ace-monokai .ace_entity.ace_name.ace_tag,\r\n.ace-monokai .ace_keyword,\r\n.ace-monokai .ace_meta.ace_tag,\r\n.ace-monokai .ace_storage {\r\n color: #F0640D\r\n}\r\n\r\n.ace-monokai .ace_constant.ace_character,\r\n.ace-monokai .ace_constant.ace_other {\r\n color: #5db0d7;\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_selection {\r\n background: #a6e22e\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_bracket {\r\n margin: -1px 0 0 -1px;\r\n border: 1px solid #a6e22e;\r\n}\r\n\r\n.ace-monokai .ace_marker-layer .ace_active-line {\r\n background: #2c2c2c\r\n}\r\n.ace-monokai .ace_gutter-active-line {\r\n background-color: #2c2c2c\r\n}\r\n.ace-monokai .ace_marker-layer .ace_selected-word {\r\n border: 1px solid #a6e22e\r\n}\r\n\r\n.ace-monokai .ace_constant.ace_language {\r\n color: #e6db74\r\n}\r\n.ace-monokai .ace_constant.ace_numeric {\r\n color: #ae81ff\r\n}\r\n\r\n.ace-monokai .ace_gutter {\r\n background: #222;\r\n color: #8F908A;\r\n}",""]);const a=o},314(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,i,r,s){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=s),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},601(e){"use strict";e.exports=function(e){return e[1]}},832(e,t,n){e=n.nmd(e),function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,n,i){"string"==typeof e?(2==arguments.length&&(i=n),t.modules[e]||(t.payloads[e]=i,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var n,i,r=function(e,t,n){if("string"==typeof t){var i=a(e,t);if(null!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],o=0,l=t.length;o1&&function(e,t,n){if(Array.prototype.indexOf)return e.indexOf("",n);for(var i=0;i-1&&(n=RegExp(this.source,r.replace.call(((i=this).global?"g":"")+(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.extended?"x":"")+(i.sticky?"y":""),"g","")),r.replace.call(e.slice(a.index),n,function(){for(var e=1;ea.index&&this.lastIndex--}return a},o||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function i(){}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=d.call(arguments,1),r=function(){if(this instanceof r){var i=t.apply(this,n.concat(d.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(d.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,r.prototype=new i,i.prototype=null),r});var r,s,o,a,l,c=Function.prototype.call,u=Array.prototype,h=Object.prototype,d=u.slice,m=c.bind(h.toString),f=c.bind(h.hasOwnProperty);if((l=f(h,"__defineGetter__"))&&(r=c.bind(h.__defineGetter__),s=c.bind(h.__defineSetter__),o=c.bind(h.__lookupGetter__),a=c.bind(h.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,"XXX"),n.length,t+1==n.length)return!0}()){var p=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?p.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(d.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):null==e?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=c;h--;)this[l+h]=this[a+h];if(s&&e===u)this.length=u,this.push.apply(this,r);else for(this.length=u+s,h=0;h>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(i),s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,s=[],o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,s=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(s in n){r=n[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}for(;s>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,s=i-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(s in n){r=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}do{s in this&&(r=e.call(void 0,r,n[s],s,t))}while(s--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=_&&"[object String]"==m(this)?this.split(""):M(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=F(arguments[1])),i=i>=0?i:Math.max(0,n+i);i>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,F(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:h)}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(f(e,t)){var n;if(n={enumerable:!0,configurable:!0},l){var i=e.__proto__;e.__proto__=h;var r=o(e,t),s=a(e,t);if(e.__proto__=i,r||s)return r&&(n.get=r),s&&(n.set=s),n}return n.value=e[t],n}}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create||(g=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=g();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var i=function(){};i.prototype=e,(n=new i).__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}),Object.defineProperty){var b=C({}),S="undefined"==typeof document||C(document.createElement("div"));if(!b||!S)var R=Object.defineProperty}Object.defineProperty&&!R||(Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError("Property description must be an object: "+n);if(R)try{return R.call(Object,e,t,n)}catch(e){}if(f(n,"value"))if(l&&(o(e,t)||a(e,t))){var i=e.__proto__;e.__proto__=h,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!l)throw new TypeError("getters & setters can not be defined on this javascript engine");f(n,"get")&&r(e,t,n.get),f(n,"set")&&s(e,t,n.set)}return e}),Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)f(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=(v=Object.freeze,function(e){return"function"==typeof e?e:v(e)})}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";f(e,t);)t+="?";e[t]=!0;var n=f(e,t);return delete e[t],n}),!Object.keys){var A=!0,w=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],T=w.length;for(var y in{toString:null})A=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)f(e,n)&&t.push(n);if(A)for(var i=0,r=T;i0||-1)*Math.floor(Math.abs(e))),e}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){"use strict";e("./regexp"),e("./es5-shim"),"undefined"==typeof Element||Element.prototype.remove||Object.defineProperty(Element.prototype,"remove",{enumerable:!1,writable:!0,configurable:!0,value:function(){this.parentNode&&this.parentNode.removeChild(this)}})}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};var i="object"==typeof navigator?navigator:{},r=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),s=i.userAgent||"",o=i.appName||"";t.isWin="win"==r,t.isMac="mac"==r,t.isLinux="linux"==r,t.isIE="Microsoft Internet Explorer"==o||o.indexOf("MSAppHost")>=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=s.match(/ Gecko\/\d+/),t.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(s.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(s.split(" Chrome/")[1])||void 0,t.isEdge=parseFloat(s.split(" Edge/")[1])||void 0,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isAndroid=s.indexOf("Android")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("./useragent");if(t.buildDom=function e(t,n,i){if("string"==typeof t&&t){var r=document.createTextNode(t);return n&&n.appendChild(r),r}if(!Array.isArray(t))return t;if("string"!=typeof t[0]||!t[0]){for(var s=[],o=0;o=1.5,"undefined"!=typeof document){var r=document.createElement("div");t.HI_DPI&&void 0!==r.style.transform&&(t.HAS_CSS_TRANSFORMS=!0),i.isEdge||void 0===r.style.animationName||(t.HAS_CSS_ANIMATION=!0),r=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){"use strict";var i=e("./oop"),r=function(){var e,t,n={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}};for(t in n.FUNCTION_KEYS)e=n.FUNCTION_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);for(t in n.PRINTABLE_KEYS)e=n.PRINTABLE_KEYS[t].toLowerCase(),n[e]=parseInt(t,10);return i.mixin(n,n.MODIFIER_KEYS),i.mixin(n,n.PRINTABLE_KEYS),i.mixin(n,n.FUNCTION_KEYS),n.enter=n.return,n.escape=n.esc,n.del=n.delete,n[173]="-",function(){for(var e=["cmd","ctrl","alt","shift"],t=Math.pow(2,e.length);t--;)n.KEY_MODS[t]=e.filter(function(e){return t&n.KEY_MODS[e]}).join("-")+"-"}(),n.KEY_MODS[0]="",n.KEY_MODS[-1]="input-",n}();i.mixin(t,r),t.keyCodeToString=function(e){var t=r[e];return"string"!=typeof t&&(t=String.fromCharCode(e)),t.toLowerCase()}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("./keys"),r=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent("on"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||r.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function r(e){n&&n(e),i&&i(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),n(e)})},t.addMultiMouseDownListener=function(e,n,i,s){var o,a,l,c=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};function h(e){if(0!==t.getButton(e)?c=0:e.detail>1?++c>4&&(c=1):c=1,r.isIE){var h=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;l&&!h||(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},n[c-1]||600),1==c&&(o=e.clientX,a=e.clientY)}if(e._clicks=c,i[s]("mousedown",e),c>4)c=0;else if(c>1)return i[s](u[c],e)}function d(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},n[c-1]||600),i[s]("mousedown",e),i[s](u[c],e)}Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",h),r.isOldIE&&t.addListener(e,"dblclick",d)})};var a=r.isMac&&r.isOpera&&!("KeyboardEvent"in window)?function(e){return(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)}:function(e){return(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};function l(e,t,n){var l=a(t);if(!r.isMac&&s){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(l|=8),s.altGr){if(!(3&~l))return;s.altGr=0}if(18===n||17===n){var c="location"in t?t.location:t.keyLocation;17===n&&1===c?1==s[n]&&(o=t.timeStamp):18===n&&3===l&&2===c&&t.timeStamp-o<50&&(s.altGr=!0)}}if(n in i.MODIFIER_KEYS&&(n=-1),l||13!==n||3!==(c="location"in t?t.location:t.keyLocation)||(e(t,l,-n),!t.defaultPrevented)){if(r.isChromeOS&&8&l){if(e(t,l,n),t.defaultPrevented)return;l&=-9}return!!(l||n in i.FUNCTION_KEYS||n in i.PRINTABLE_KEYS)&&e(t,l,n)}}function c(){s=Object.create(null)}if(t.getModifierString=function(e){return i.KEY_MODS[a(e)]},t.addCommandKeyListener=function(e,n){var i=t.addListener;if(r.isOldGecko||r.isOpera&&!("KeyboardEvent"in window)){var o=null;i(e,"keydown",function(e){o=e.keyCode}),i(e,"keypress",function(e){return l(n,e,o)})}else{var a=null;i(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=l(n,e,e.keyCode);return a=e.defaultPrevented,t}),i(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),i(e,"keyup",function(e){s[e.keyCode]=null}),s||(c(),i(window,"focus",c))}},"object"==typeof window&&window.postMessage&&!r.isOldIE){var u=1;t.nextTick=function(e,n){n=n||window;var i="zero-timeout-message-"+u++,r=function(s){s.data==i&&(t.stopPropagation(s),t.removeListener(n,"message",r),e())};t.addListener(n,"message",r),n.postMessage(i,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function n(){t.$idleBlocked?setTimeout(n,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var i=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)&&!this.isStart(e,t)},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else this.end.rowt)var r={row:t+1,column:0};else this.start.row0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;nDate.now()-50)||(i=!1)},cancel:function(){i=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),a=e("../clipboard"),l=r.isChrome<18,c=r.isIE,u=r.isChrome>63,h=400,d=e("../lib/keys"),m=d.KEY_MODS,f=r.isIOS,p=f?/\s/:/\n/;t.TextInput=function(e,t){var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var g=!1,v=!1,E=!1,_=!1,C="";r.isMobile||(n.style.fontSize="1px");var b=!1,S=!1,R="",A=0,w=0,T=0;try{var y=document.activeElement===n}catch(e){}i.addListener(n,"blur",function(e){S||(t.onBlur(e),y=!1)}),i.addListener(n,"focus",function(e){if(!S){if(y=!0,r.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),r.isEdge?setTimeout(x):x()}}),this.$focusScroll=!1,this.focus=function(){if(C||u||"browser"==this.$focusScroll)return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=0!=n.getBoundingClientRect().top}catch(e){return}var i=[];if(t)for(var r=n.parentElement;r&&1==r.nodeType;)i.push(r),r.setAttribute("ace_nocontext",!0),r=!r.parentElement&&r.getRootNode?r.getRootNode().host:r.parentElement;n.focus({preventScroll:!0}),t&&i.forEach(function(e){e.removeAttribute("ace_nocontext")}),setTimeout(function(){n.style.position="","0px"==n.style.top&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return y},t.on("beforeEndOperation",function(){t.curOp&&"insertstring"==t.curOp.command.name||(E&&(R=n.value="",D()),x())});var x=f?function(e){if(y&&(!g||e)&&!_){e||(e="");var i="\n ab"+e+"cde fg\n";i!=n.value&&(n.value=R=i);var r=4+(e.length||(t.selection.isEmpty()?0:1));4==A&&w==r||n.setSelectionRange(4,r),A=4,w=r}}:function(){if(!E&&!_&&(y||N)){E=!0;var e=t.selection,i=e.getRange(),r=e.cursor.row,s=i.start.column,o=i.end.column,a=t.session.getLine(r);if(i.start.row!=r){var l=t.session.getLine(r-1);s=i.start.rowr+1?c.length:o,o+=a.length+1,a=a+"\n"+c}a.length>h&&(s0&&R[h]==e[h];)h++,o--;for(l=l.slice(h),h=1;a>0&&R.length-h>A-1&&R[R.length-h]==e[e.length-h];)h++,a--;c-=h-1,u-=h-1;var d=l.length-h+1;return d<0&&(o=-d,d=0),l=l.slice(0,d),i||l||c||o||a||u?(_=!0,l&&!o&&!a&&!c&&!u||b?t.onTextInput(l):t.onTextInput(l,{extendLeft:o,extendRight:a,restoreStart:c,restoreEnd:u}),_=!1,R=e,A=r,w=s,T=u,l):""},M=function(e){if(E)return $();if(e&&e.inputType){if("historyUndo"==e.inputType)return t.execCommand("undo");if("historyRedo"==e.inputType)return t.execCommand("redo")}var i=n.value,r=F(i,!0);(i.length>500||p.test(r))&&x()},I=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!l){var r=c||n?"Text":"text/plain";try{return t?!1!==i.setData(r,t):i.getData(r)}catch(e){if(!n)return I(e,t,!0)}}},k=function(e,r){var s=t.getCopyText();if(!s)return i.preventDefault(e);I(e,s)?(f&&(x(s),g=s,setTimeout(function(){g=!1},10)),r?t.onCut():t.onCopy(),i.preventDefault(e)):(g=!0,n.value=s,n.select(),setTimeout(function(){g=!1,x(),r?t.onCut():t.onCopy()}))},O=function(e){k(e,!0)},P=function(e){k(e,!1)},B=function(e){var s=I(e);a.pasteCancelled()||("string"==typeof s?(s&&t.onPaste(s,e),r.isIE&&setTimeout(x),i.preventDefault(e)):(n.value="",v=!0))};i.addCommandKeyListener(n,t.onCommandKey.bind(t)),i.addListener(n,"select",function(e){E||(g?g=!1:function(e){return 0===e.selectionStart&&e.selectionEnd>=R.length&&e.value===R&&R&&e.selectionEnd!==w}(n)&&(t.selectAll(),x()))}),i.addListener(n,"input",M),i.addListener(n,"cut",O),i.addListener(n,"copy",P),i.addListener(n,"paste",B),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(e,"keydown",function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:P(e);break;case 86:B(e);break;case 88:O(e)}});var $=function(){if(E&&t.onCompositionUpdate&&!t.$readOnly){if(b)return U();if(E.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;F(e),E.markerRange&&(E.context&&(E.markerRange.start.column=E.selectionStart=E.context.compositionStartOffset),E.markerRange.end.column=E.markerRange.start.column+w-E.selectionStart+T)}}},D=function(e){t.onCompositionEnd&&!t.$readOnly&&(E=!1,t.onCompositionEnd(),t.off("mousedown",U),e&&M())};function U(){S=!0,n.blur(),n.focus(),S=!1}var G,W=o.delayedCall($,50).schedule.bind(null,null);function H(){clearTimeout(G),G=setTimeout(function(){C&&(n.style.cssText=C,C=""),t.renderer.$isMousePressed=!1,t.renderer.$keepTextAreaAtCursor&&t.renderer.$moveTextAreaToCursor()},0)}i.addListener(n,"compositionstart",function(e){if(!E&&t.onCompositionStart&&!t.$readOnly&&(E={},!b)){setTimeout($,0),t.on("mousedown",U);var i=t.getSelectionRange();i.end.row=i.start.row,i.end.column=i.start.column,E.markerRange=i,E.selectionStart=A,t.onCompositionStart(E),E.useTextareaForIME?(n.value="",R="",A=0,w=0):(n.msGetInputContext&&(E.context=n.msGetInputContext()),n.getInputContext&&(E.context=n.getInputContext()))}}),i.addListener(n,"compositionupdate",$),i.addListener(n,"keyup",function(e){27==e.keyCode&&n.value.lengthw&&"\n"==R[s]?o=d.end:iw&&R.slice(0,s).split("\n").length>2?o=d.down:s>w&&" "==R[s-1]?(o=d.right,a=m.option):(s>w||s==w&&w!=A&&i==s)&&(o=d.right),i!==s&&(a|=m.shift),o){if(!t.onCommandKey({},a,o)&&t.commands){o=d.keyCodeToString(o);var l=t.commands.findKeyCommand(a,o);l&&t.execCommand(l)}A=i,w=s,x("")}}};document.addEventListener("selectionchange",s),t.on("destroy",function(){document.removeEventListener("selectionchange",s)})}(0,t,n)}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/useragent");function r(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function s(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,s=e.getButton();return 0!==s?((r.getSelectionRange().isEmpty()||1==s)&&r.selection.moveToPosition(n),void(2==s&&(r.textInput.onContextMenu(e.domEvent),i.isMozilla||e.preventDefault()))):(this.mousedownEvent.time=Date.now(),!t||r.isFocused()||(r.focus(),!this.$focusTimeout||this.$clickSelection||r.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e)))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"))},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var r=s(this.$clickSelection,n);n=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),r=n.selection[e](i.row,i.column);if(this.$clickSelection){var o=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==o&&a<=0)t=this.$clickSelection.end,r.end.row==i.row&&r.end.column==i.column||(i=r.start);else if(1==a&&o>=0)t=this.$clickSelection.start,r.start.row==i.row&&r.start.column==i.column||(i=r.end);else if(-1==o&&1==a)i=r.end,t=r.start;else{var l=s(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e,t,n,i,r=(e=this.mousedownEvent.x,t=this.mousedownEvent.y,n=this.x,i=this.y,Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))),s=Date.now();(r>0||s-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,r=i-n.t,s=r?e.wheelX/r:n.vx,o=r?e.wheelY/r:n.vy;r<550&&(s=(s+n.vx)/2,o=(o+n.vy)/2);var a=Math.abs(s/o),l=!1;return a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l?n.allowed=i:i-n.allowed<550&&(Math.abs(s)<=1.5*Math.abs(n.vx)&&Math.abs(o)<=1.5*Math.abs(n.vy)?(l=!0,n.allowed=i):n.allowed=0),n.t=i,n.vx=s,n.vy=o,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}}).call(r.prototype),t.DefaultHandlers=r}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";e("./lib/oop");var i=e("./lib/dom");function r(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){this.getElement().textContent=e},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(r.prototype),t.Tooltip=r}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;function a(e){o.call(this,e)}r.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),s=this.getHeight();(e+=15)+r>n&&(e-=e+r-n),(t+=15)+s>i&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=function(e){var t,n,r,o=e.editor,l=o.renderer.$gutterLayer,c=new a(o.container);function u(){t&&(t=clearTimeout(t)),r&&(c.hide(),r=null,o._signal("hideGutterTooltip",c),o.removeEventListener("mousewheel",u))}function h(e){c.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",function(t){if(o.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var n=t.getDocumentPosition().row,i=o.session.selection;if(t.getShiftKey())i.selectTo(n,0);else{if(2==t.domEvent.detail)return o.selectAll(),t.preventDefault();e.$clickSelection=o.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}),e.editor.setDefaultHandler("guttermousemove",function(s){var a=s.domEvent.target||s.domEvent.srcElement;if(i.hasCssClass(a,"ace_fold-widget"))return u();r&&e.$tooltipFollowsMouse&&h(s),n=s,t||(t=setTimeout(function(){t=null,n&&!e.isMousePressed?function(){var t=n.getDocumentPosition().row,i=l.$annotations[t];if(!i)return u();if(t==o.session.getLength()){var s=o.renderer.pixelToScreenCoordinates(0,n.y).row,a=n.$pos;if(s>o.session.documentToScreenRow(a.row,a.column))return u()}if(r!=i)if(r=i.text.join("
            "),c.setHtml(r),c.show(),o._signal("showGutterTooltip",c),o.on("mousewheel",u),e.$tooltipFollowsMouse)h(n);else{var d=n.domEvent.target.getBoundingClientRect(),m=c.getElement().style;m.left=d.right+"px",m.top=d.bottom+"px"}}():u()},50))}),s.addListener(o.renderer.$gutter,"mouseout",function(e){n=null,r&&!t&&(t=setTimeout(function(){t=null,u()},50))}),o.on("changeSession",u)}}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/event"),r=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/dom"),r=e("../lib/event"),s=e("../lib/useragent");function o(e){var t=e.editor,n=i.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var o,l,c,u,h,d,m,f,p,g,v,E=t.container,_=0;function C(){var e=d;(function(e,n){var i=Date.now(),r=!n||e.row!=n.row,s=!n||e.column!=n.column;!g||r||s?(t.moveCursorToPosition(e),g=i,v={x:l,y:c}):a(v.x,v.y,l,c)>5?g=null:i-g>=200&&(t.renderer.scrollCursorIntoView(),g=null)})(d=t.renderer.screenToTextCoordinates(l,c),e),function(e,n){var i=Date.now(),r=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,o=t.renderer.scroller.getBoundingClientRect(),a={x:{left:l-o.left,right:o.right-l},y:{top:c-o.top,bottom:o.bottom-c}},u=Math.min(a.x.left,a.x.right),h=Math.min(a.y.top,a.y.bottom),d={row:e.row,column:e.column};u/s<=2&&(d.column+=a.x.left=200&&t.renderer.scrollCursorIntoView(d):p=i:p=null}(d,e)}function b(){h=t.selection.toOrientedRange(),o=t.session.addMarker(h,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(u),C(),u=setInterval(C,20),_=0,r.addListener(document,"mousemove",A)}function S(){clearInterval(u),t.session.removeMarker(o),o=null,t.selection.fromOrientedRange(h),t.isFocused()&&!f&&t.$resetCursorStyle(),h=null,d=null,_=0,p=null,g=null,r.removeListener(document,"mousemove",A)}this.onDragStart=function(e){if(this.cancelDrag||!E.draggable){var i=this;return setTimeout(function(){i.startSelect(),i.captureMouse(e)},0),e.preventDefault()}h=t.getSelectionRange();var r=e.dataTransfer;r.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),r.setDragImage&&r.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),r.clearData(),r.setData("Text",t.session.getTextRange()),f=!0,this.setState("drag")},this.onDragEnd=function(e){if(E.draggable=!1,f=!1,this.setState(null),!t.getReadOnly()){var n=e.dataTransfer.dropEffect;m||"move"!=n||t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&w(e.dataTransfer))return l=e.clientX,c=e.clientY,o||b(),_++,e.dataTransfer.dropEffect=m=T(e),r.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&w(e.dataTransfer))return l=e.clientX,c=e.clientY,o||(b(),_++),null!==R&&(R=null),e.dataTransfer.dropEffect=m=T(e),r.preventDefault(e)},this.onDragLeave=function(e){if(--_<=0&&o)return S(),m=null,r.preventDefault(e)},this.onDrop=function(e){if(d){var n=e.dataTransfer;if(f)switch(m){case"move":h=h.contains(d.row,d.column)?{start:d,end:d}:t.moveText(h,d);break;case"copy":h=t.moveText(h,d,!0)}else{var i=n.getData("Text");h={start:d,end:t.session.insert(d,i)},t.focus(),m=null}return S(),r.preventDefault(e)}},r.addListener(E,"dragstart",this.onDragStart.bind(e)),r.addListener(E,"dragend",this.onDragEnd.bind(e)),r.addListener(E,"dragenter",this.onDragEnter.bind(e)),r.addListener(E,"dragover",this.onDragOver.bind(e)),r.addListener(E,"dragleave",this.onDragLeave.bind(e)),r.addListener(E,"drop",this.onDrop.bind(e));var R=null;function A(){null==R&&(R=setTimeout(function(){null!=R&&o&&S()},20))}function w(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function T(e){var t=["copy","copymove","all","uninitialized"],n=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return n&&t.indexOf(i)>=0?r="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?r="move":t.indexOf(i)>=0&&(r="copy"),r}}function a(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=s.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;s.isIE&&"dragReady"==this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop(),"dragWait"===this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;"unselectable"in r&&(r.unselectable="on"),t.getDragDelay()?(s.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(o.prototype),t.DragdropHandler=o}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/dom"],function(e,t,n){"use strict";var i=e("./mouse_event").MouseEvent,r=e("../lib/dom");t.addTouchListeners=function(e,t){var n,s,o,a,l,c,u,h,d,m="scroll",f=0,p=0,g=0,v=0;function E(){var e,n,i;d||(e=window.navigator&&window.navigator.clipboard,n=!1,i=function(i){var s,o,a=i.target.getAttribute("action");if("more"==a||!n)return n=!n,s=t.getCopyText(),o=t.session.getUndoManager().hasUndo(),void d.replaceChild(r.buildDom(n?["span",!s&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],s&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],s&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],e&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],o&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPallete"},"Pallete"]]:["span"]),d.firstChild);"paste"==a?e.readText().then(function(e){t.execCommand(a,e)}):a&&("cut"!=a&&"copy"!=a||(e?e.writeText(t.getCopyText()):document.execCommand("copy")),t.execCommand(a)),d.firstChild.style.display="none",n=!1,"openCommandPallete"!=a&&t.focus()},d=r.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(e){m="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),i(e)},onclick:i},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],t.container));var s=t.selection.cursor,o=t.renderer.textToScreenCoordinates(s.row,s.column),a=t.container.getBoundingClientRect();d.style.top=o.pageY-a.top-3+"px",d.style.right="10px",d.style.display="",d.firstChild.style.display="none",t.on("input",_)}function _(e){d&&(d.style.display="none"),t.off("input",_)}function C(){l=null,clearTimeout(l);var e=t.selection.getRange(),n=e.contains(u.row,u.column);!e.isEmpty()&&n||(t.selection.moveToPosition(u),t.selection.selectWord()),m="wait",E()}e.addEventListener("contextmenu",function(e){h&&t.textInput.getElement().focus()}),e.addEventListener("touchstart",function(e){var r=e.touches;if(l||r.length>1)return clearTimeout(l),l=null,o=-1,void(m="zoom");h=t.$mouseHandler.isMousePressed=!0;var c=t.renderer.layerConfig.lineHeight,d=t.renderer.layerConfig.lineHeight,E=e.timeStamp;a=E;var _=r[0],b=_.clientX,S=_.clientY;Math.abs(n-b)+Math.abs(s-S)>c&&(o=-1),n=e.clientX=b,s=e.clientY=S,g=v=0;var R=new i(e,t);if(u=R.getDocumentPosition(),E-o<500&&1==r.length&&!f)p++,e.preventDefault(),e.button=0,function(){l=null,clearTimeout(l),t.selection.moveToPosition(u);var e=p>=2?t.selection.getLineRange(u.row):t.session.getBracketRange(u);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),m="wait"}();else{p=0;var A=t.selection.cursor,w=t.selection.isEmpty()?A:t.selection.anchor,T=t.renderer.$cursorLayer.getPixelPosition(A,!0),y=t.renderer.$cursorLayer.getPixelPosition(w,!0),x=t.renderer.scroller.getBoundingClientRect(),L=function(e,t){return(e/=d)*e+(t=t/c-.75)*t};if(e.clientXF?"cursor":"anchor"),m=F<3.5?"anchor":N<3.5?"cursor":"scroll",l=setTimeout(C,450)}o=E}),e.addEventListener("touchend",function(e){h=t.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),"zoom"==m?(m="",f=0):l?(t.selection.moveToPosition(u),f=0,E()):"scroll"==m?(f+=60,c=setInterval(function(){f--<=0&&(clearInterval(c),c=null),Math.abs(g)<.01&&(g=0),Math.abs(v)<.01&&(v=0),f<20&&(g*=.9),f<20&&(v*=.9);var e=t.session.getScrollTop();t.renderer.scrollBy(10*g,10*v),e==t.session.getScrollTop()&&(f=0)},10),e.preventDefault(),_()):E(),clearTimeout(l),l=null}),e.addEventListener("touchmove",function(e){l&&(clearTimeout(l),l=null);var r=e.touches;if(!(r.length>1||"zoom"==m)){var o=r[0],c=n-o.clientX,u=s-o.clientY;if("wait"==m){if(!(c*c+u*u>4))return e.preventDefault();m="cursor"}n=o.clientX,s=o.clientY,e.clientX=o.clientX,e.clientY=o.clientY;var h=e.timeStamp,d=h-a;if(a=h,"scroll"==m){var f=new i(e,t);f.speed=1,f.wheelX=c,f.wheelY=u,10*Math.abs(c)1&&(r=n[n.length-2]);var o=l[t+"Path"];return null==o?o=l.basePath:"/"==i&&(t=i=""),o&&"/"!=o.slice(-1)&&(o+="/"),o+t+i+r+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var r,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{r=e(n)}catch(e){}if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),c()}};var c=function(){l.basePath||l.workerPath||l.modePath||l.themePath||Object.keys(l.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};function u(r){if(a&&a.document){l.packaged=r||e.packaged||i.packaged||a.define&&n.amdD.packaged;for(var s={},o="",c=document.currentScript||document._currentScript,u=(c&&c.ownerDocument||document).getElementsByTagName("script"),d=0;d=e){for(s=h+1;s=e;)s++;for(a=h,l=s-1;a=t.length||2!=(l=n[r-1])&&3!=l||2!=(c=t[r+1])&&3!=c?4:(s&&(c=3),c==l?c:4);case 10:return 2==(l=r>0?n[r-1]:5)&&r+10&&2==n[r-1])return 2;if(s)return 4;for(m=r+1,d=t.length;m=1425&&p<=2303||64286==p;if(l=t[m],g&&(1==l||7==l))return 1}return r<1||5==(l=t[r-1])?4:n[r-1];case 5:return s=!1,o=!0,i;case 6:return a=!0,4;case 13:case 14:case 16:case 17:case 15:s=!1;case h:return 4}}function g(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?0:d[t]:5==n?/[\u0591-\u05f4]/.test(e)?1:0:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?12:/[\u0660-\u0669\u066b-\u066c]/.test(e)?3:1642==t?u:/[\u06f0-\u06f9]/.test(e)?2:7:32==n&&t<=8287?m[255&t]:254==n&&t>=65136?7:4}t.L=0,t.R=1,t.EN=2,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="·",t.doBidiReorder=function(e,n,u){if(e.length<2)return{};var d=e.split(""),m=new Array(d.length),v=new Array(d.length),E=[];i=u?1:0,function(e,t,n,u){var h=i?c:l,d=null,m=null,f=null,v=0,E=null,_=-1,C=null,b=null,S=[];if(!u)for(C=0,u=[];C0)if(16==E){for(C=_;C-1){for(C=_;C=0&&8==u[R];R--)t[R]=i}}(d,E,d.length,n);for(var _=0;_7&&n[_]<13||4===n[_]||n[_]===h)?E[_]=t.ON_R:_>0&&"ل"===d[_-1]&&/\u0622|\u0623|\u0625|\u0627/.test(d[_])&&(E[_-1]=E[_]=t.R_H,_++);for(d[d.length-1]===t.DOT&&(E[d.length-1]=t.B),"‫"===d[0]&&(E[0]=t.RLE),_=0;_=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var n,i=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===i;)i=n,e++;else e=this.currentRow;return e},this.updateRowLine=function(e,t){void 0===e&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var s=this.session.$wrapData[e];s&&(void 0===t&&(t=this.getSplitIndex()),t>0&&s.length?(this.wrapIndent=s.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,r=i.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[r]%2!=0&&r++;for(var a=0;at&&s[r]%2==0&&(o+=this.charWidths[s[r]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n,i=this.bidiMap,r=i.bidiLevels,s=[],o=0,a=Math.min(e,t)-this.wrapIndent,l=Math.max(e,t)-this.wrapIndent,c=!1,u=!1,h=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var d,m=0;m=a&&dn+s/2;){if(n+=s,i===r.length-1){s=0;break}s=this.charWidths[r[++i]]}return i>0&&r[i-1]%2!=0&&r[i]%2==0?(e0&&r[i-1]%2==0&&r[i]%2!=0?t=1+(e>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===r.length-1&&0===s&&r[i-1]%2==0||!this.isRtlDir&&0===i&&r[i]%2!=0?t=1+this.bidiMap.logicalFromVisual[i]:(i>0&&r[i-1]%2!=0&&0!==s&&i--,t=this.bidiMap.logicalFromVisual[i]),0===t&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,a=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),t.$isEmpty||t.$silent||t._emit("changeSelection"),t.$keepDesiredColumnOnChange||e.old.column==e.value.column||(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,t.$isEmpty||t.$silent||t._emit("changeSelection")})};(function(){i.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,i=t?e.start:e.end;this.$setSelection(n.row,n.column,i.row,i.column)},this.$setSelection=function(e,t,n,i){var r=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,i),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||r!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(i);return r?(i=r.start.row,n=r.end.row):n=i,!0===t?new o(i,0,n,this.session.getLine(n).length):new o(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,r=e.column+t;return n<0&&(i=e.column-t,r=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,r).split(" ").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);if(r)this.moveCursorTo(r.end.row,r.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(s)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},this.$shortWordEndIndex=function(e){var t,n=0,i=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(r.lastIndex=0;(t=e[n])&&!r.test(t);)if(r.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==n.length){var s=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var s=r.stringReverse(i),o=this.$shortWordEndIndex(s);return this.moveCursorTo(t,n-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var r=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(r.charAt(t))&&r.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(e){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(null==e.start){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var i=e("./config"),r=2e3,s=function(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[t],i=[],r=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",a=[],l=0;l1?this.$applyToken:c.token),h>1&&(/\\\d/.test(c.regex)?u=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),s[r]=l,r+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(s[0]=0,i.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],r=0,s=n.length;ru){var v=e.substring(u,g-p.length);d.type==m?d.value+=v:(d.type&&c.push(d),d={type:m,value:v})}for(var E=0;Er){for(h>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(s.prototype),t.Tokenizer=s}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var i=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,r=e("../../lib/oop"),s=e("../behaviour").Behaviour,o=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],c=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},m=function(e,t,n,i){var r=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(e){this.add("braces","insertion",function(t,n,r,s,o){var l=r.getCursorPosition(),c=s.doc.getLine(l.row);if("{"==o){d(r);var u=r.getSelectionRange(),h=s.doc.getTextRange(u);if(""!==h&&"{"!==h&&r.getWrapBehavioursEnabled())return m(u,h,"{","}");if(f.isSaneInsertion(r,s))return/[\]\}\)]/.test(c[l.column])||r.inMultiSelectMode||e&&e.braces?(f.recordAutoInsert(r,s,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(r,s,"{"),{text:"{",selection:[1,1]})}else if("}"==o){if(d(r),"}"==c.substring(l.column,l.column+1)&&null!==s.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&f.isAutoInsertedClosing(l,c,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==o||"\r\n"==o){d(r);var p="";if(f.isMaybeInsertedClosing(l,c)&&(p=a.stringRepeat("}",i.maybeInsertedBrackets),f.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var g=s.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!g)return null;var v=this.$getIndent(s.getLine(g.row))}else{if(!p)return void f.clearMaybeInsertedClosing();v=this.$getIndent(c)}var E=v+s.getTabString();return{text:"\n"+E+"\n"+v+p,selection:[1,E.length,1,E.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,s){var o=r.doc.getTextRange(s);if(!s.isMultiLine()&&"{"==o){if(d(n),"}"==r.doc.getLine(s.start.row).substring(s.end.column,s.end.column+1))return s.end.column++,s;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,r){if("("==r){d(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return m(s,o,"(",")");if(f.isSaneInsertion(n,i))return f.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"("==s&&(d(n),")"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r}),this.add("brackets","insertion",function(e,t,n,i,r){if("["==r){d(n);var s=n.getSelectionRange(),o=i.doc.getTextRange(s);if(""!==o&&n.getWrapBehavioursEnabled())return m(s,o,"[","]");if(f.isSaneInsertion(n,i))return f.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(e,t,n,i,r){var s=i.doc.getTextRange(r);if(!r.isMultiLine()&&"["==s&&(d(n),"]"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r}),this.add("string_dquotes","insertion",function(e,t,n,i,r){var s=i.$mode.$quotes||h;if(1==r.length&&s[r]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(n);var o=r,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(""===l||1==l.length&&s[l])&&n.getWrapBehavioursEnabled())return m(a,l,o,o);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),f=u.substring(c.column-1,c.column),p=u.substring(c.column,c.column+1),g=i.getTokenAt(c.row,c.column),v=i.getTokenAt(c.row,c.column+1);if("\\"==f&&g&&/escape/.test(g.type))return null;var E,_=g&&/string|escape/.test(g.type),C=!v||/string|escape/.test(v.type);if(p==o)(E=_!==C)&&/string\.end/.test(v.type)&&(E=!1);else{if(_&&!C)return null;if(_&&C)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var S=b.test(f);b.lastIndex=0;var R=b.test(f);if(S||R)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;var A=u[c.column-2];if(f==o&&(A==o||b.test(A)))return null;E=!0}return{text:E?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,r){var s=i.$mode.$quotes||h,o=i.doc.getTextRange(r);if(!r.isMultiLine()&&s.hasOwnProperty(o)&&(d(n),i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o))return r.end.column++,r})};f.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new o(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var r=new o(t,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,s,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+s.substr(r.column),i.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),s=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,s)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=s.substr(0,r.column)+n,i.maybeInsertedLineEnd=s.substr(r.column),i.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(f,s),t.CstyleBehaviour=f}),ace.define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],r=0,s=[],o=0;o2?i%c!=c-1:i%c==0})}else{if(!this.blockComment)return!1;var m=this.blockComment.start,f=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+l.escapeRegExp(m)+")"),g=new RegExp("(?:"+l.escapeRegExp(f)+")\\s*$"),v=function(e,t){_(e,t)||s&&!/\S/.test(e)||(r.insertInLine({row:t,column:e.length},f),r.insertInLine({row:t,column:a},m))},E=function(e,t){var n;(n=e.match(g))&&r.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&r.removeInLine(t,n[1].length,n[0].length)},_=function(e,n){if(p.test(e))return!0;for(var i=t.getTokens(n),r=0;re.length&&(b=e.length)}),a==1/0&&(a=b,s=!1,o=!1),u&&a%c!=0&&(a=Math.floor(a/c)*c),C(o?E:v)},this.toggleBlockComment=function(e,t,n,i){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var s,o,a=(p=new c(t,i.row,i.column)).getCurrentToken(),l=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var h,d;a&&/comment/.test(a.type);){if(-1!=(g=a.value.indexOf(r.start))){var m=p.getCurrentTokenRow(),f=p.getCurrentTokenColumn()+g;h=new u(m,f,m,f+r.start.length);break}a=p.stepBackward()}var p;for(a=(p=new c(t,i.row,i.column)).getCurrentToken();a&&/comment/.test(a.type);){var g;if(-1!=(g=a.value.indexOf(r.end))){m=p.getCurrentTokenRow(),f=p.getCurrentTokenColumn()+g,d=new u(m,f,m,f+r.end.length);break}a=p.stepForward()}d&&t.remove(d),h&&(t.remove(h),s=h.start.row,o=-r.start.length)}else o=r.start.length,s=n.start.row,t.insert(n.end,r.end),t.insert(n.start,r.start);l.start.row==s&&(l.start.column+=o),l.end.row==s&&(l.end.column+=o),t.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)if(e[t]){var n=e[t],r=n.prototype.$id,s=i.$modes[r];s||(i.$modes[r]=s=new n),i.$modes[t]||(i.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var n=function(t,n,i){var r="insert"==t.action,s=(r?1:-1)*(t.end.row-t.start.row),o=(r?1:-1)*(t.end.column-t.start.column),a=t.start,l=r?a:t.end;return e(n,a,i)?{row:n.row,column:n.column}:e(l,n,!i)?{row:n.row+s,column:n.column+(n.row==l.row?o:0)}:{row:a.row,column:a.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var r={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:r,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return null==t&&(t=i.length),{row:e,column:t=Math.min(Math.max(t,0),i.length)}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){return e instanceof o||(e=o.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(r(this.$lines,e,t),this._signal("change",e)))},this.$splitAndapplyLargeDelta=function(e,t){for(var n=e.lines,i=n.length-t+1,r=e.start.row,s=e.start.column,o=0,a=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),s<=i&&n.fireUpdateEvent(s,i)}}};(function(){i.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var i=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),s=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,s){if(this.regExp)for(var o=s.firstRow,a=s.lastRow,l=o;l<=a;l++){var c=this.cache[l];null==c&&((c=i.getMatchOffsets(n.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var u=c.length;u--;)t.drawSingleLineMarker(e,c[u].toScreenRange(n),this.clazz,s)}}}).call(s.prototype),t.SearchHighlight=s}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range;function r(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new i(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,r,s=0,o=this.folds,a=!0;null==t&&(t=this.end.row,n=this.end.column);for(var l=0;l0)){var l=i(e,o.start);return 0===a?t&&0!==l?-s-2:s:l>0||0===l&&!t?s:-s-1}}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],n=this.ranges,r=(n=n.sort(function(e,t){return i(e.start,t.start)}))[0],s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=i);o++);if("insert"==e.action){for(var l=r-i,c=-t.column+n.column;oi);o++)if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$bias<=0||(u.start.column+=c,u.start.row+=l)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$bias<0)continue;u.end.column==t.column&&c>0&&ou.start.column&&u.end.column==s[o+1].start.column&&(u.end.column-=c),u.end.column+=c,u.end.row+=l}}else for(l=i-r,c=t.column-n.column;or);o++)u.end.rowt.column)&&(u.end.column=t.column,u.end.row=t.row):(u.end.column+=c,u.end.row+=l):u.end.row>r&&(u.end.row+=l),u.start.rowt.column)&&(u.start.column=t.column,u.start.row=t.row):(u.start.column+=c,u.start.row+=l):u.start.row>r&&(u.start.row+=l);if(0!=l&&o=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0);i=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,r=0;r=t){a=e?i-=t-a:i=0);break}o>=e&&(i-=a>=e?o-a:o-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n,i=this.$foldData,o=!1;e instanceof s?n=e:(n=new s(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column,h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var m=this.getFoldsInRange(n.range);m.length>0&&(this.removeFolds(m),m.forEach(function(e){n.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,r;if(null==e?(n=new i(0,0,this.getLength(),0),t=!0):n="number"==typeof e?new i(e,0,e,this.getLine(e).length):"row"in e?i.fromPoints(e,e):e,r=this.getFoldsInRangeList(n),t)this.removeFolds(r);else for(var s=r;s.length;)this.expandFolds(s),s=this.getFoldsInRangeList(n);if(r.length)return r},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,r){null==i&&(i=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,a){if(!(tu)break}while(s&&l.test(s.type));s=r.stepBackward()}else s=r.getCurrentToken();return c.end.row=r.getCurrentTokenRow(),c.end.column=r.getCurrentTokenColumn()+s.value.length-2,c}},this.foldAll=function(e,t,n){null==n&&(n=1e5);var i=this.foldWidgets;if(i){t=t||this.getLength();for(var r=e=e||0;r=e){r=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};for(var i,r=e-1;r>=0;){var s=n[r];if(null==s&&(s=n[r]=this.getFoldWidget(r)),"start"==s){var o=this.getFoldWidgetRange(r);if(i||(i=o),o&&o.end.row>=e)break}r--}return{range:-1!==r&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),r="end"===n?-1:1,s=this.getFoldAt(e,-1===r?0:i.length,r);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()&&(s=this.getFoldAt(o.start.row,o.start.column,1))&&o.isEqual(s.range))return this.removeFold(s),s;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=o?o.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,r=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,s=n.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);if(o||(s=n.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),i=!1),!o)return null;if(o[1]){if(!(a=this.$findClosingBracket(o[1],e)))return null;t=r.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(o[2],e)))return null;t=r.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-o.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==r){if(0==(s-=1))return{row:o.getCurrentTokenRow(),column:l+o.getCurrentTokenColumn()}}else u==e&&(s+=1);l-=1}do{a=o.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var r=this.$brackets[e],s=1,o=new i(this,t.row,t.column),a=o.getCurrentToken();if(a||(a=o.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-o.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;ln&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var r=n+i>>1,s=e[r];if(t>s)n=r+1;else{if(!(t=t);s++);return(n=i[s])?(n.index=s,n.start=r-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var r=this.tokenRe;else r=/^\s+$/.test(n.slice(t-1,t+1))?/\s/:this.nonTokenRe;var s=t;if(s>0){do{s--}while(s>=0&&n.charAt(s).match(r));s++}for(var o=t;oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,r=0,s=this.$foldData[r],o=s?s.start.row:1/0,a=t.length,l=0;lo){if((l=s.end.row+1)>=a)break;o=(s=this.$foldData[r++])?s.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=e.length-1;-1!=n;n--){var i=e[n];"insert"==i.action||"remove"==i.action?this.doc.revertDelta(i):i.folds&&this.addFolds(i.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=c),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=c)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}if(s.end=this.insert(s.start,i),r.length){var a=e.start,l=s.start,c=(o=l.row-a.row,l.column-a.column);this.addFolds(r.map(function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var s=this.getLine(r);n.start.row=r,n.end.row=r;for(var o=0;o0){var r;if((r=this.getRowFoldEnd(t+n))>this.doc.getLength()-1)return 0;i=r-t}else e=this.$clipRowToDocument(e),i=(t=this.$clipRowToDocument(t))-e+1;var s=new u(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return(e=e.clone()).start.row+=i,e.end.row+=i,e}),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,a),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,r=e.end,s=i.row,o=r.row,a=o-s,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(s,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var u=0;if(p=this.getFoldLine(r.row)){p.addRemoveChars(r.row,r.column,i.column-r.column),p.shiftRow(-a);var h=this.getFoldLine(s);h&&h!==p&&(h.merge(p),p=h),u=c.indexOf(p)+1}for(;u=r.row&&p.shiftRow(-a);o=s}else{var d=Array(a);d.unshift(s,0);var m=t?this.$wrapData:this.$rowLengthCache;if(m.splice.apply(m,d),c=this.$foldData,u=0,p=this.getFoldLine(s)){var f=p.range.compareInside(i.row,i.column);0==f?(p=p.split(i.row,i.column))&&(p.shiftRow(a),p.addRemoveChars(o,0,r.column-i.column)):-1==f&&(p.addRemoveChars(s,0,r.column-i.column),p.shiftRow(a)),u=c.indexOf(p)+1}for(;u=s&&p.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(p=this.getFoldLine(s))&&p.addRemoveChars(s,i.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),l},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(n,i){var r,s,o=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,u=n;for(i=Math.min(i,o.length-1);u<=i;)(s=this.getFoldLine(u,s))?(r=[],s.walk(function(n,i,s,a){var l;if(null!=n){(l=this.$getDisplayTokens(n,r.length))[0]=e;for(var c=1;c=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}this.$computeWrapSplits=function(n,i,r){if(0==n.length)return[];var s=[],o=n.length,a=0,l=0,c=this.$wrapAsCode,u=this.$indentedSoftWrap,h=i<=Math.max(2*r,8)||!1===u?0:Math.floor(i/2);function d(e){for(var t=e-a,i=a;ii-m;){var f=a+i-m;if(n[f-1]>=10&&n[f]>=10)d(f);else if(n[f]!=e&&n[f]!=t){for(var p=Math.max(f-(i-(i>>2)),a-1);f>p&&n[f]p&&n[f]p&&9==n[f];)f--}else for(;f>p&&n[f]<10;)f--;f>p?d(++f):(2==n[f=a+i]&&f--,d(f-m))}else{for(;f!=a-1&&n[f]!=e;f--);if(f>a){d(f);continue}for(f=a+i;f39&&o<48||o>57&&o<64?r.push(9):o>=4352&&n(o)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(e,t,i){if(0==t)return[0,0];var r,s;for(null==t&&(t=1/0),i=i||0,s=0;s=4352&&n(r)?i+=2:i+=1,!(i>t));s++);return[i,s]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0){a=c[u],s=this.$docRowCache[u];var d=e>c[h-1]}else d=!h;for(var m=this.getLength()-1,f=this.getNextFoldLine(s),p=f?f.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(s))>e||s>=m);)a+=l,++s>p&&(s=f.end.row+1,p=(f=this.getNextFoldLine(s,f))?f.start.row:1/0),d&&(this.$docRowCache.push(s),this.$screenRowCache.push(a));if(f&&f.start.row<=s)i=this.getFoldDisplayLine(f),s=f.start.row;else{if(a+l<=e||s>m)return{row:m,column:this.getLine(m).length};i=this.getLine(s),f=null}var g=0,v=Math.floor(e-a);if(this.$useWrapMode){var E=this.$wrapData[s];E&&(r=E[v],v>0&&E.length&&(g=E.indent,o=E[v-1]||E[E.length-1],i=i.substring(o)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+v,s,v)&&(t=this.$bidiHandler.offsetToCol(n)),o+=this.$getStringScreenWidth(i,t-g)[1],this.$useWrapMode&&o>=r&&(o=r-1),f?f.idxToPosition(o):{row:s,column:o}},this.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i,r=0,s=null;(i=this.getFoldAt(e,t,1))&&(e=i.start.row,t=i.start.column);var o,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),u=l.length;if(u&&c>=0){a=l[c],r=this.$screenRowCache[c];var h=e>l[u-1]}else h=!u;for(var d=this.getNextFoldLine(a),m=d?d.start.row:1/0;a=m){if((o=d.end.row+1)>e)break;m=(d=this.getNextFoldLine(o,d))?d.start.row:1/0}else o=a+1;r+=this.getRowLength(a),a=o,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(r))}var f="";d&&a>=m?(f=this.getFoldDisplayLine(d,e,t),s=d.start.row):(f=this.getLine(e).substring(0,t),s=e);var p=0;if(this.$useWrapMode){var g=this.$wrapData[s];if(g){for(var v=0;f.length>=g[v];)r++,v++;f=f.substring(g[v-1]||0,f.length),p=v>0?g.indent:0}}return{row:r,column:p+this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,r=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);ir&&(i=t.end.row+1,r=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var o=this.$foldData,a=0;an);s++);return[i,s]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=n}.call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){(e=parseInt(e))>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var i=e("./lib/lang"),r=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach(function(e,n,r,o){return i=new s(e,n,r,o),!(n==o&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start)&&(i=null,1))}),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,r=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,u=r.length-c;e:for(var h=a.offset||0;h<=u;h++){for(var d=0;dp||(o.push(l=new s(h,p,h+c-1,g)),c>2&&(h=h+c-2))}}else for(var v=0;vb&&o[d].end.row==n.end.row;)d--;for(o=o.slice(v,d+1),v=0,d=o.length;v=a;n--)if(h(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=l,a=o.row;n>=a;n--)if(h(n,Number.MAX_VALUE,e))return}};else c=function(e){var n=o.row;if(!h(n,o.column,e)){for(n+=1;n<=l;n++)if(h(n,0,e))return;if(0!=t.wrap)for(n=a,l=o.row;n<=l;n++)if(h(n,0,e))return}};if(t.$isMultiLine)var u=n.length,h=function(t,r,s){var o=i?t-u+1:t;if(!(o<0)){var a=e.getLine(o),l=a.search(n[0]);if(!(!i&&lr))return!!s(o,l,o+u-1,h)||void 0}}};else h=i?function(t,i,r){var s,o=e.getLine(t),a=[],l=0;for(n.lastIndex=0;s=n.exec(o);){var c=s[0].length;if(l=s.index,!c){if(l>=o.length)break;n.lastIndex=l+=1}if(s.index+c>i)break;a.push(s.index,c)}for(var u=a.length-1;u>=0;u-=2){var h=a[u-1];if(r(t,h,t,h+(c=a[u])))return!0}}:function(t,i,r){var s,o,a=e.getLine(t);for(n.lastIndex=i;o=n.exec(a);){var l=o[0].length;if(r(t,s=o.index,t,s+l))return!0;if(!l&&(n.lastIndex=s+=1,s>=a.length))return!1}};return{forEach:c}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/keys"),r=e("../lib/useragent"),s=i.KEY_MODS;function o(e,t){this.platform=t||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function a(e,t){o.call(this,e,t),this.$singleCommand=!1}a.prototype=o.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var r in i){var s=i[r];if(s==e)delete i[r];else if(Array.isArray(s)){var o=s.indexOf(e);-1!=o&&(s.splice(o,1),1==s.length&&(i[r]=s[0]))}}},this.bindKey=function(e,t,n){if("object"==typeof e&&e&&(null==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var i="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")},this),i+=" "}var o=this.parseKeys(e),a=s[o.hashId]+o.key;this._addCommandToBinding(i+a,t,n)},this)},this._addCommandToBinding=function(t,n,i){var r,s=this.commandKeyBinding;if(n)if(!s[t]||this.$singleCommand)s[t]=n;else{Array.isArray(s[t])?-1!=(r=s[t].indexOf(n))&&s[t].splice(r,1):s[t]=[s[t]],"number"!=typeof i&&(i=e(n));var o=s[t];for(r=0;ri);r++);o.splice(r,0,n)}else delete s[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),r=i[n];if(i.FUNCTION_KEYS[r])n=i.FUNCTION_KEYS[r].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var s=0,o=t.length;o--;){var a=i.KEY_MODS[t[o]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=a}return{key:n,hashId:s}},this.findKeyCommand=function(e,t){var n=s[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var r=s[t]+n,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=a}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(o,r),function(){i.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(0!=this.$checkCommandState&&e.isAvailable&&!e.isAvailable(t))return!1;var r={editor:t,command:e,args:n};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";var i=e("../lib/lang"),r=e("../config"),s=e("../range").Range;function o(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){r.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){r.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){"number"!=typeof t||isNaN(t)||e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty()?e.selection.getLineRange():e.selection.getRange();e._emit("cut",t),t.isEmpty()||e.session.remove(t),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(i.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),r=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=r.row+1;c++){var u=i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(c)));0!==u.length&&(u=" "+u),l+=u}r.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,r=[];i.length<1&&(i=[e.selection.getRange()]);for(var o=0;o=r.lastRow||i.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e&&"ace"!=e){this.$keybindingId=e;var n=this;v.loadModule(["keybinding",e],function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)var i=new m(n.row,n.column,n.row,n.column+1);else t.$mode.getMatching&&(i=t.$mode.getMatching(e.session));i&&(t.$bracketHighlight=t.addMarker(i,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new E(e.session,n.row,n.column),r=i.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=i.stepForward())){var s=r.value,o=0,a=i.stepBackward();if("<"==a.value)do{a=r,(r=i.stepForward())&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"=0);else{do{r=a,a=i.stepBackward(),r&&r.value===s&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?o++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new m(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column,i=t.end.column,r=e.getLine(t.start.row),s=r.substring(n,i);if(!(s.length>5e3)&&/[\w\d]/.test(s)){var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),a=r.substring(n-1,i+1);if(o.test(a))return o}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;for(var i=this.selection.getAllRanges(),r=0;ra.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);n.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,u=n.getState(r.row),h=(a=n.getLine(r.row),i.checkOutdent(u,a,e));if(n.insert(r,e),s&&s.selection&&(2==s.selection.length?this.selection.setSelectionRange(new m(r.row,c+s.selection[0],r.row,c+s.selection[1])):this.selection.setSelectionRange(new m(r.row+s.selection[0],s.selection[1],r.row+s.selection[2],s.selection[3]))),n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(u,a.slice(0,r.column),n.getTabString());n.insert({row:r.row+1,column:0},d)}h&&i.autoOutdent(u,n,r.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){var n;(t.extendLeft||t.extendRight)&&((n=this.selection.getRange()).start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),e||n.isEmpty()||this.remove()),!e&&this.selection.isEmpty()||this.insert(e,!0),(t.restoreStart||t.restoreEnd)&&((n=this.selection.getRange()).start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n))},this.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),r=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var s=n.getTextRange(t);if("\n"==s[s.length-1]){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});var r=new m(0,0,0,0);for(i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:r[0],start:r.index,end:r.index+r[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new m(t,n-1,t,n),r=this.session.getTextRange(i);if(!isNaN(parseFloat(r))&&isFinite(r)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,a=s.start+s.value.length-o,l=parseFloat(s.value);l*=Math.pow(10,a),o!==s.end&&n=a&&o<=l&&(n=t,c.selection.clearSelection(),c.moveCursorTo(e,a+i),c.selection.selectTo(e,l+i)),a=l});for(var u,h=this.$toggleWordPairs,d=0;dm+1)break;m=f.last}for(u--,a=this.session.$moveLines(d,m,t?0:e),t&&-1==e&&(h=u+1);h<=u;)o[h].moveBy(a,0),h++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,r=e*Math.floor(i.height/i.lineHeight);!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,r*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new E(this.session,n.row,n.column),r=i.getCurrentToken(),s=r||i.stepForward();if(s){var o,a,l=!1,c={},u=n.column-s.start,h={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;u=0;--s)this.$tryReplace(n[s],e)&&i++;return this.selection.setSelectionRange(r),i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var r=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(r)||this.$search.$options.needle)||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var s=this.$search.find(this.session);return t.preventScroll?s:s?(this.revealRange(s,n),s):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var s=this.on("changeSelection",function(){i=!0}),o=this.renderer.on("beforeRender",function(){i&&(t=n.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,a=s.top-o.offset;null!=(i=s.top>=0&&a+t.top<0||!(s.topwindow.innerHeight)&&null)&&(r.style.top=a+"px",r.style.left=s.left+"px",r.style.height=o.lineHeight+"px",r.scrollIntoView(i)),i=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",o))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))},this.prompt=function(e,t,n){var i=this;v.loadModule("./ext/prompt",function(r){r.prompt(i,e,t,n)})}}.call(C.prototype),v.defineOptions(C.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?b.attach(this):b.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?b.attach(this):b.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.renderer.$composition||this.getValue();if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),r.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!e&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),r.addCssClass(this.container,"ace_hasPlaceholder");var t=r.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var b={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"·":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=C}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=function(){this.$maxRev=0,this.$fromUndo=!1,this.reset()};(function(){this.addSession=function(e){this.$session=e},this.add=function(e,t,n){this.$fromUndo||e!=this.$lastDelta&&(!1!==t&&this.lastDeltas||(this.lastDeltas=[],this.$undoStack.push(this.lastDeltas),e.id=this.$rev=++this.$maxRev),"remove"!=e.action&&"insert"!=e.action||(this.$lastDelta=e),this.lastDeltas.push(e))},this.addSelection=function(e,t){this.selections.push({value:e,rev:t||this.$rev})},this.startNewGroup=function(){return this.lastDeltas=null,this.$rev},this.markIgnored=function(e,t){null==t&&(t=this.$rev+1);for(var n=this.$undoStack,i=n.length;i--;){var r=n[i][0];if(r.id<=e)break;r.id0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){null==e&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?a(e):a(this.$undoStack)+"\n---\n"+a(this.$redoStack)}}).call(i.prototype);var r=e("./range").Range,s=r.comparePoints;function o(e){return{row:e.row,column:e.column}}function a(e){if(e=e||this,Array.isArray(e))return e.map(a).join("\n");var t="";return e.action?(t="insert"==e.action?"+":"-",t+="["+e.lines+"]"):e.value&&(t=Array.isArray(e.value)?e.value.map(l).join("\n"):l(e.value)),e.start&&(t+=l(e)),(e.id||e.rev)&&(t+="\t("+(e.id||e.rev)+")"),t}function l(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function c(e,t){var n="insert"==e.action,i="insert"==t.action;if(n&&i)if(s(t.start,e.end)>=0)d(t,e,-1);else{if(!(s(t.start,e.start)<=0))return null;d(e,t,1)}else if(n&&!i)if(s(t.start,e.end)>=0)d(t,e,-1);else{if(!(s(t.end,e.start)<=0))return null;d(e,t,-1)}else if(!n&&i)if(s(t.start,e.start)>=0)d(t,e,1);else{if(!(s(t.start,e.start)<=0))return null;d(e,t,1)}else if(!n&&!i)if(s(t.start,e.start)>=0)d(t,e,1);else{if(!(s(t.end,e.start)<=0))return null;d(e,t,-1)}return[t,e]}function u(e,t){for(var n=e.length;n--;)for(var i=0;i=0?d(e,t,-1):(s(e.start,t.start)<=0||d(e,r.fromPoints(t.start,e.start),-1),d(t,e,1));else if(!n&&i)s(t.start,e.end)>=0?d(t,e,-1):(s(t.start,e.start)<=0||d(t,r.fromPoints(e.start,t.start),-1),d(e,t,1));else if(!n&&!i)if(s(t.start,e.end)>=0)d(t,e,-1);else{var o,a;if(!(s(t.end,e.start)<=0))return s(e.start,t.start)<0&&(o=e,e=f(e,t.start)),s(e.end,t.end)>0&&(a=f(e,t.end)),m(t.end,e.start,e.end,-1),a&&!o&&(e.lines=a.lines,e.start=a.start,e.end=a.end,a=e),[t,o,a].filter(Boolean);d(e,t,-1)}return[t,e]}function d(e,t,n){m(e.start,t.start,t.end,n),m(e.end,t.start,t.end,n)}function m(e,t,n,i){e.row==(1==i?t:n).row&&(e.column+=i*(n.column-t.column)),e.row+=i*(n.row-t.row)}function f(e,t){var n=e.lines,i=e.end;e.end=o(t);var r=e.end.row-e.start.row,s=n.splice(r,n.length),a=r?t.column:t.column-e.start.column;return n.push(s[0].substring(0,a)),s[0]=s[0].substr(a),{start:o(t),end:i,lines:s,action:e.action}}function p(e,t){t=function(e){return{start:o(e.start),end:o(e.end),action:e.action,lines:e.lines.slice()}}(t);for(var n=e.length;n--;){for(var i=e[n],r=0;rs&&(l=r.end.row+1,s=(r=t.getNextFoldLine(l,r))?r.start.row:1/0),l>i){for(;this.$lines.getLength()>a+1;)this.$lines.pop();break}(o=this.$lines.get(++a))?o.row=l:(o=this.$lines.createCell(l,e,this.session,c),this.$lines.push(o)),this.$renderCell(o,e,r,l),l++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,i=t.$firstLineNumber,r=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||t.$useWrapMode)&&(r=t.getLength()+i-1);var s=n?n.getWidth(t,r,e):r.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();(s+=o.left+o.right)===this.gutterWidth||isNaN(s)||(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(this.$highlightGutterLine){var e=this.session.selection.getCursor();this.$cursorRow!==e.row&&(this.$cursorRow=e.row)}},this.updateLineHighlight=function(){if(this.$highlightGutterLine){var e=this.session.selection.cursor.row;if(this.$cursorRow=e,!this.$cursorCell||this.$cursorCell.row!=e){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(i.row>this.$cursorRow){var r=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&r&&r.start.row==t[n-1].row))break;i=t[n-1]}i.element.className="ace_gutter-active-line "+i.element.className,this.$cursorCell=i;break}}}}},this.scrollLines=function(e){var t=this.config;if(this.config=e,this.$updateCursorRow(),this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),i=this.oldLastRow;if(this.oldLastRow=n,!t||i0;r--)this.$lines.shift();if(i>n)for(r=this.session.getFoldedRowCount(n+1,i);r>0;r--)this.$lines.pop();e.firstRowi&&this.$lines.push(this.$renderLines(e,i+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){for(var i=[],r=t,s=this.session.getNextFoldLine(r),o=s?s.start.row:1/0;r>o&&(r=s.end.row+1,o=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),!(r>n);){var a=this.$lines.createCell(r,e,this.session,c);this.$renderCell(a,e,s,r),i.push(a),r++}return i},this.$renderCell=function(e,t,n,r){var s=e.element,o=this.session,a=s.childNodes[0],l=s.childNodes[1],c=o.$firstLineNumber,u=o.$breakpoints,h=o.$decorations,d=o.gutterRenderer||this.$renderer,m=this.$showFoldWidgets&&o.foldWidgets,f=n?n.start.row:Number.MAX_VALUE,p="ace_gutter-cell ";if(this.$highlightGutterLine&&(r==this.$cursorRow||n&&r=f&&this.$cursorRow<=n.end.row)&&(p+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),u[r]&&(p+=u[r]),h[r]&&(p+=h[r]),this.$annotations[r]&&(p+=this.$annotations[r].className),s.className!=p&&(s.className=p),m){var g=m[r];null==g&&(g=m[r]=o.getFoldWidget(r))}if(g){p="ace_fold-widget ace_"+g,"start"==g&&r==f&&rn.right-t.right?"foldWidgets":void 0}}).call(l.prototype),t.Gutter=l}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var i=e("../range").Range,r=e("../lib/dom"),s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,i){return(e?1:0)|(t?2:0)|(n?4:0)|(i?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=-1!=this.i&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(e){var t;for(var n in this.config=e,this.i=0,this.markers){var i=this.markers[n];if(i.range){var r=i.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var s=this.$getTop(r.start.row,e),o=this.$padding+r.start.column*e.characterWidth;i.renderer(t,r,o,s,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,r,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,r,i.clazz,e):r.isMultiLine()?"text"==i.type?this.drawTextMarker(t,r,i.clazz,e):this.drawMultiLineMarker(t,r,i.clazz,e):this.drawSingleLineMarker(t,r,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}if(-1!=this.i)for(;this.im,u==c),s,u==c?0:1,o)},this.drawMultiLineMarker=function(e,t,n,i,r){var s=this.$padding,o=i.lineHeight,a=this.$getTop(t.start.row,i),l=s+t.start.column*i.characterWidth;if(r=r||"",this.session.$bidiHandler.isBidiRow(t.start.row)?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,n+" ace_br1 ace_start",i,null,r)):this.elt(n+" ace_br1 ace_start","height:"+o+"px;right:0;top:"+a+"px;left:"+l+"px;"+(r||"")),this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,n+" ace_br12",i,null,r)}else{a=this.$getTop(t.end.row,i);var u=t.end.column*i.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;width:"+u+"px;top:"+a+"px;left:"+s+"px;"+(r||""))}if(!((o=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(h?" ace_br"+h:""),"height:"+o+"px;right:0;top:"+a+"px;left:"+s+"px;"+(r||""))}},this.drawSingleLineMarker=function(e,t,n,i,r,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,i,r,s);var o=i.lineHeight,a=(t.end.column+(r||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;this.elt(n,"height:"+o+"px;width:"+a+"px;top:"+l+"px;left:"+c+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,i,r,s){var o=i.lineHeight,a=this.$getTop(t.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach(function(e){this.elt(n,"height:"+o+"px;width:"+e.width+(r||0)+"px;top:"+a+"px;left:"+(l+e.left)+"px;"+(s||""))},this)},this.drawFullLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,i)-s),this.elt(n,"height:"+o+"px;top:"+s+"px;left:0;right:0;"+(r||""))},this.drawScreenLineMarker=function(e,t,n,i,r){var s=this.$getTop(t.start.row,i),o=i.lineHeight;this.elt(n,"height:"+o+"px;top:"+s+"px;left:0;right:0;"+(r||""))}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,a=e("../lib/event_emitter").EventEmitter,l=function(e){this.dom=r,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){i.implement(this,a),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t="\n"==e.getNewLineCharacter()&&"windows"!=e.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;nu&&(a=l.end.row+1,u=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>r);){var h=s[o++];if(h){this.dom.removeChildren(h),this.$renderLine(h,a,a==u&&l),c&&(h.style.top=this.$lines.computeLineTop(a,e,this.session)+"px");var d=e.lineHeight*this.session.getRowLength(a)+"px";h.style.height!=d&&(c=!0,h.style.height=d)}a++}if(c)for(;o0;r--)this.$lines.shift();if(t.lastRow>e.lastRow)for(r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){for(var i=[],s=t,o=this.session.getNextFoldLine(s),a=o?o.start.row:1/0;s>a&&(s=o.end.row+1,a=(o=this.session.getNextFoldLine(s,o))?o.start.row:1/0),!(s>n);){var l=this.$lines.createCell(s,e,this.session),c=l.element;this.dom.removeChildren(c),r.setStyle(c.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),r.setStyle(c.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(c,s,s==a&&o),this.$useLineGroups()?c.className="ace_line_group":c.className="ace_line",i.push(l),s++}return i},this.update=function(e){this.$lines.moveContainer(e),this.config=e;for(var t=e.firstRow,n=e.lastRow,i=this.$lines;i.getLength();)i.pop();i.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){for(var r,o=this,a=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,l=this.dom.createFragment(this.element),c=0;r=a.exec(i);){var u=r[1],h=r[2],d=r[3],m=r[4],f=r[5];if(o.showInvisibles||!h){var p=c!=r.index?i.slice(c,r.index):"";if(c=r.index+r[0].length,p&&l.appendChild(this.dom.createTextNode(p,this.element)),u){var g=o.session.getScreenTabSize(t+r.index);l.appendChild(o.$tabStrings[g].cloneNode(!0)),t+=g-1}else h?o.showInvisibles?((E=this.dom.createElement("span")).className="ace_invisible ace_invisible_space",E.textContent=s.stringRepeat(o.SPACE_CHAR,h.length),l.appendChild(E)):l.appendChild(this.com.createTextNode(h,this.element)):d?((E=this.dom.createElement("span")).className="ace_invisible ace_invisible_space ace_invalid",E.textContent=s.stringRepeat(o.SPACE_CHAR,d.length),l.appendChild(E)):m?(t+=1,(E=this.dom.createElement("span")).style.width=2*o.config.characterWidth+"px",E.className=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",E.textContent=o.showInvisibles?o.SPACE_CHAR:m,l.appendChild(E)):f&&(t+=1,(E=this.dom.createElement("span")).style.width=2*o.config.characterWidth+"px",E.className="ace_cjk",E.textContent=f,l.appendChild(E))}}if(l.appendChild(this.dom.createTextNode(c?i.slice(c):i,this.element)),this.$textToken[n.type])e.appendChild(l);else{var v="ace_"+n.type.replace(/\./g," ace_"),E=this.dom.createElement("span");"fold"==n.type&&(E.style.width=n.value.length*this.config.characterWidth+"px"),E.className=v,E.appendChild(l),e.appendChild(E)}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);if(i<=0||i>=n)return t;if(" "==t[0]){for(var r=(i-=i%this.tabSize)/this.tabSize,s=0;s=o;)a=this.$renderToken(l,a,u,h.substring(0,o-i)),h=h.substring(o-i),i=o,l=this.$createLineElement(),e.appendChild(l),l.appendChild(this.dom.createTextNode(s.stringRepeat(" ",n.indent),this.element)),a=0,o=n[++r]||Number.MAX_VALUE;0!=h.length&&(i+=h.length,a=this.$renderToken(l,a,u,h))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(l,a,null,"",!0)},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],r=i.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(n=this.$renderToken(e,n,i,r));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,i,r);n=this.$renderToken(e,n,i,r)}},this.$renderOverflowMessage=function(e,t,n,i,r){n&&this.$renderToken(e,t,n,i.slice(0,this.MAX_LINE_LENGTH-t));var s=this.dom.createElement("span");s.className="ace_inline_button ace_keyword ace_toggle_wrap",s.textContent=r?"":"",e.appendChild(s)},this.$renderLine=function(e,t,n){if(n||0==n||(n=this.session.getFoldLine(t)),n)var i=this.$getFoldLineTokens(t,n);else i=this.session.getTokens(t);var r=e;if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?(this.$renderWrappedLine(e,i,s),r=e.lastChild):(r=e,this.$useLineGroups()&&(r=this.$createLineElement(),e.appendChild(r)),this.$renderSimpleLine(r,i))}else this.$useLineGroups()&&(r=this.$createLineElement(),e.appendChild(r));if(this.showInvisibles&&r){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,r.appendChild(o)}},this.$getFoldLineTokens=function(e,t){var n=this.session,i=[],r=n.getTokens(e);return t.walk(function(e,t,s,o,a){null!=e?i.push({type:"fold",value:e}):(a&&(r=n.getTokens(t)),r.length&&function(e,t,n){for(var r=0,s=0;s+e[r].value.lengthn-t&&(o=o.substring(0,n-t)),i.push({type:e[r].type,value:o}),s=t+o.length,r+=1);sn?i.push({type:e[r].type,value:o.substring(0,n-s)}):i.push(e[r]),s+=o.length,r+=1}}(r,o,s))},t.end.row,this.session.getLine(t.end.row).length),i},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(l.prototype),t.Text=l}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var i=e("../lib/dom"),r=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)i.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){for(var e=this.cursors,t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){i.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,i.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=i.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&i.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&setTimeout(function(){i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this)),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}else this.$stopCssAnimation()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)){var a=this.cursors[r++]||this.addCursor(),l=a.style;this.drawCursor?this.drawCursor(a,o,e,t[n],this.session):this.isCursorInView(o,e)?(i.setStyle(l,"display","block"),i.translate(a,o.left,o.top),i.setStyle(l,"width",Math.round(e.characterWidth)+"px"),i.setStyle(l,"height",e.lineHeight+"px")):i.setStyle(l,"display","none")}}for(;this.cursors.length>r;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,a=32768,l=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){i.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(l.prototype);var c=function(e,t){l.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};i.inherits(c,l),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>a?(this.coeff=a/e,e=a):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(c.prototype);var u=function(e,t){l.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(u,l),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(u.prototype),t.ScrollBar=c,t.ScrollBarV=c,t.ScrollBarH=u,t.VScrollBar=c,t.HScrollBar=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var i=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;if(t&&(i.blockIdle(100),n.changes=0,n.onRender(t)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var i=e("../lib/oop"),r=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),a=e("../lib/useragent"),l=e("../lib/event_emitter").EventEmitter,c=256,u="function"==typeof ResizeObserver,h=200,d=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",c),this.$characterSize={width:0,height:0},u?this.$addObserver():this.checkForSizeChanges()};(function(){i.implement(this,l),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",a.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){if(void 0===e&&(e=this.$measureSizes()),e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/c})}),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/c};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=s.stringRepeat(e,c),this.$main.getBoundingClientRect().width/c},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=r.buildDom([e(0,0),e(h,0),e(0,h),e(h,h)],this.el)},this.transformCoordinates=function(e,t){function n(e,t,n){var i=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/i,(+e[1]*n[0]-e[0]*n[1])/i]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function r(e,t){return[e[0]+t[0],e[1]+t[1]]}function s(e,t){return[e*t[0],e*t[1]]}function o(e){var t=e.getBoundingClientRect();return[t.left,t.top]}e&&(e=s(1/this.$getZoom(this.el),e)),this.els||this.$initTransformMeasureNodes();var a=o(this.els[0]),l=o(this.els[1]),c=o(this.els[2]),u=o(this.els[3]),d=n(i(u,l),i(u,c),i(r(l,c),r(u,a))),m=s(1+d[0],i(l,a)),f=s(1+d[1],i(c,a));if(t){var p=t,g=d[0]*p[0]/h+d[1]*p[1]/h+1,v=r(s(p[0],m),s(p[1],f));return r(s(1/g/h,v),a)}var E=i(e,a),_=n(i(m,s(d[0],E)),i(f,s(d[1],E)),E);return s(h,_)}}).call(d.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("./lib/oop"),r=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,d=e("./renderloop").RenderLoop,m=e("./layer/font_metrics").FontMetrics,f=e("./lib/event_emitter").EventEmitter,p='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;perspective: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);opacity: 0.7;transform-origin: left;text-indent: 10px;}',g=e("./lib/useragent"),v=g.isIE;r.importCssString(p,"ace_editor.css");var E=function(e,t){var n=this;this.container=e||r.createElement("div"),r.addCssClass(this.container,"ace_editor"),r.HI_DPI&&r.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var i=this.$textLayer=new l(this.content);this.canvas=i.element,this.$markerFront=new a(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new m(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!g.isIOS,this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._signal("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,f),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),r.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;i||(i=r.clientHeight||r.scrollHeight),n||(n=r.clientWidth||r.scrollWidth);var s=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var s=0,o=this.$size,a={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};if(i&&(e||o.height!=i)&&(o.height=i,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL),n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,r.setStyle(this.scrollBarH.element.style,"left",t+"px"),r.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),r.setStyle(this.$gutter.style,"left",this.margin.left+"px");var l=this.scrollBarV.getWidth()+"px";r.setStyle(this.scrollBarH.element.style,"right",l),r.setStyle(this.scroller.style,"right",l),r.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(s|=this.CHANGE_FULL)}return o.$dirty=!n||!i,s&&this._signal("resize",a),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var e=this.textarea.style,t=this.$composition;if(this.$keepTextAreaAtCursor||t){var n=this.$cursorLayer.$pixelPos;if(n){t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var i=this.layerConfig,s=n.top,o=n.left;s-=i.offset;var a=t&&t.useTextareaForIME?this.lineHeight:v?0:1;if(s<0||s>i.height-a)r.translate(this.textarea,0,0);else{var l=1,c=this.$size.height-a;if(t)if(t.useTextareaForIME){var u=this.textarea.value;l=this.characterWidth*this.session.$getStringScreenWidth(u)[0]}else s+=this.lineHeight+2;else s+=this.lineHeight;(o-=this.scrollLeft)>this.$size.scrollerWidth-l&&(o=this.$size.scrollerWidth-l),o+=this.gutterWidth+this.margin.left,r.setStyle(e,"height",a+"px"),r.setStyle(e,"width",l+"px"),r.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-l),Math.min(s,c))}}}else r.translate(this.textarea,-100,0)}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.setMargin=function(e,t,n,i){var r=this.margin;r.top=0|e,r.bottom=0|t,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig()|this.$loop.clear(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),r.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";r.setStyle(this.content.style,"width",s),r.setStyle(this.content.style,"height",o)}if(e&this.CHANGE_H_SCROLL&&(r.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=!(n<=2*this.lineHeight)&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var r=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,r=this.$getLongestLine(),s=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-r-2*this.$padding<0),o=this.$horizScroll!==s;o&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,r+2*this.$padding-t.scrollerWidth+u.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>u.top),d=a!==h;d&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var m,f,p=this.scrollTop%this.lineHeight,g=Math.ceil(l/this.lineHeight)-1,v=Math.max(0,Math.round((this.scrollTop-p)/this.lineHeight)),E=v+g,_=this.lineHeight;v=e.screenToDocumentRow(v,0);var C=e.getFoldLine(v);C&&(v=C.start.row),m=e.documentToScreenRow(v,0),f=e.getRowLength(v)*_,E=Math.min(e.screenToDocumentRow(E,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(E)*_+f,p=this.scrollTop-m*_;var b=0;return(this.layerConfig.width!=r||o)&&(b=this.CHANGE_H_SCROLL),(o||d)&&(b|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(r=this.$getLongestLine())),this.layerConfig={width:r,padding:this.$padding,firstRow:v,firstRowScreen:m,lastRow:E,lineHeight:_,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:p,gutterOffset:_?Math.max(0,Math.ceil((p+t.height-t.scrollerHeight)/_)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(r-this.$padding),b},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(e),r=i.left,s=i.top,o=n&&n.top||0,a=n&&n.bottom||0,l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+o>s?(t&&l+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),0===s&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):l+this.$size.scrollerHeight-ar?(r=1-this.scrollMargin.top||t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var r=e+this.scrollLeft-n.left-this.$padding,s=r/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),a=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:a,side:s-a>0?1:-1,offsetX:r}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var r=e+this.scrollLeft-n.left-this.$padding,s=r/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),a=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(a,Math.max(o,0),r)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),r=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),s=i.row*this.lineHeight;return{pageX:n.left+r-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),r.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display="")},this.addToken=function(e,t,n,i){var r=this.session;r.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=r.getTokens(n);if(null==i)o.push(s);else for(var a=0,l=0;l50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype),t.UIWorkerClient=function(e,t,n){var i=null,r=!1,a=Object.create(s),c=[],u=new l({messageBuffer:c,terminate:function(){},postMessage:function(e){c.push(e),i&&(r?setTimeout(h):h())}});u.setEmitSync=function(e){r=e};var h=function(){var e=c.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};return a.postMessage=function(e){u.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){for(i=new e[n](a);c.length;)h()}),u},t.WorkerClient=l,t.createWorker=a}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var i=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,i,r,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,r),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=n.addMarker(new i(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=n),r&&!this.session.$fromUndo)if("insert"===e.action)for(var o=this.others.length-1;o>=0;o--){var a={row:(l=this.others[o]).row,column:l.column+s};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(o=this.others.length-1;o>=0;o--){var l;a={row:(l=this.others[o]).row,column:l.column+s},this.doc.remove(new i(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,r){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),r,null,!1)};n(this.pos,this.mainClass);for(var r=this.others.length;r--;)n(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{n=this.getRange();var i=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(i)var a=n.end,l=n.start;else a=n.start,l=n.end;return this.addRange(r.fromPoints(l,l)),void this.addRange(r.fromPoints(a,a))}var c=[],u=this.getLineRange(s,!0);u.start.column=n.start.column,c.push(u);for(var h=s+1;h1){var e=this.rangeList.ranges,t=e[e.length-1],n=r.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor);this.rectangularRangeBlock(i,s).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],s=e.column0;)v--;if(v>0)for(var E=0;i[E].isEmpty();)E++;for(var _=v;_>=E;_--)i[_].isEmpty()&&i.splice(_,1)}return i}}.call(s.prototype);var d=e("./editor").Editor;function m(e,t){return e.row==t.row&&e.column==t.column}function f(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(c.defaultCommands),function(e){if(e.textInput){var t=e.textInput.getElement(),n=!1;a.addListener(t,"keydown",function(t){var r=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&r?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&i()}),a.addListener(t,"keyup",i),a.addListener(t,"blur",i)}function i(t){n&&(e.renderer.setMouseCursor(""),n=!1)}}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var r=t.indexOf(i);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,r=n&&n.keepOrder,o=1==n||n&&n.$byLines,a=this.session,l=this.selection,c=l.rangeList,u=(r?l:c).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=l._eventRegistry;l._eventRegistry={};var d=new s(a);this.inVirtualSelectionMode=!0;for(var m=u.length;m--;){if(o)for(;m>0&&u[m].start.row==u[m-1].end.row;)m--;d.fromOrientedRange(u[m]),d.index=m,this.selection=a.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===f||(i=f),d.toOrientedRange(u[m])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=h,l.mergeOverlappingRanges(),l.ranges[0]&&l.fromOrientedRange(l.ranges[0]);var p=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),p&&p.from==p.to&&this.renderer.animateScrolling(p.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;io&&(o=n.column),iu?e.insert(i,l.stringRepeat(" ",s-u)):e.remove(new r(i.row,i.column,i.row,i.column-s+u)),t.start.column=t.end.column=o,t.start.row=t.end.row=i.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,d=u.end.row,m=h==d;if(m){var f,p=this.session.getLength();do{f=this.session.getLine(d)}while(/[=:]/.test(f)&&++d0);h<0&&(h=0),d>=p&&(d=p-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,m),this.session.insert({row:h,column:0},g.join("\n")+"\n"),m||(u.start.column=0,u.end.column=g[g.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(e,t){var n,i,r,s=!0,o=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==n?(n=t[1].length,i=t[2].length,r=t[3].length,t):(n+i+r!=t[1].length+t[2].length+t[3].length&&(o=!1),n!=t[1].length&&(s=!1),n>t[1].length&&(n=t[1].length),it[3].length&&(r=t[3].length),t):[e]}).map(t?c:s?o?function(e){return e[2]?a(n+i-e[2].length)+e[2]+a(r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(n)+e[2]+a(r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(n)+e[2]+a(i-e[2].length+r)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=f,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){f(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var r=/\S/,s=e.getLine(t),o=s.search(r);if(-1!=o){for(var a=n||s.length,l=e.getLength(),c=t,u=t;++tc){var m=e.getLine(u).length;return new i(c,a,u,m)}}},this.openingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r+1},a=e.$findClosingBracket(t,o,s);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>o.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(o,a)}},this.closingBracketBlock=function(e,t,n,r,s){var o={row:n,column:r},a=e.$findOpeningBracket(t,o);if(a)return a.column++,o.column--,i.fromPoints(a,o)}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate",e("../lib/dom").importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";e("./lib/oop");var i=e("./lib/dom");function r(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}e("./range").Range,function(){this.getRowLength=function(e){var t;return t=this.lineWidgets&&this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,r=i.start.row,s=i.end.row,o="add"==e.action,a=r+1;a0&&!i[r];)r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=r;o<=s;o++){var a=i[o];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}.call(r.prototype),t.LineWidgets=r}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";var i=e("../line_widgets").LineWidgets,r=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(e));var o=e.getCursorPosition(),a=o.row,l=n.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,u=function(e,t,n){var i=e.getAnnotations().sort(s.comparePoints);if(i.length){var r=function(e,t,n){for(var i=0,r=e.length-1;i<=r;){var s=i+r>>1,o=n(t,e[s]);if(o>0)i=s+1;else{if(!(o<0))return s;r=s-1}}return-(i+1)}(i,{row:t,column:-1},s.comparePoints);r<0&&(r=-r-1),r>=i.length?r=n>0?0:i.length-1:0===r&&n<0&&(r=i.length-1);var o=i[r];if(o&&n){if(o.row===t){do{o=i[r+=n]}while(o&&o.row===t);if(!o)return i.slice()}var a=[];t=o.row;do{a[n<0?"unshift":"push"](o),o=i[r+=n]}while(o&&o.row==t);return a.length&&a}}}(n,a,t);if(u){var h=u[0];o.column=(h.pos&&"number"!=typeof h.column?h.pos.sc:h.column)||0,o.row=h.row,c=e.renderer.$gutterLayer.$annotations[o.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(o.row),e.selection.moveToPosition(o);var d={row:o.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div"),type:"errorMarker"},m=d.el.appendChild(r.createElement("div")),f=d.el.appendChild(r.createElement("div"));f.className="error_widget_arrow "+c.className;var p=e.renderer.$cursorLayer.getPixelPosition(o).left;f.style.left=p+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",m.className="error_widget "+c.className,m.innerHTML=c.text.join("
            "),m.appendChild(r.createElement("div"));var g=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),n.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},r.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),s=e("./lib/event"),o=e("./range").Range,a=e("./editor").Editor,l=e("./edit_session").EditSession,c=e("./undomanager").UndoManager,u=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.define=n.amdD,t.edit=function(e,n){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof a)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var l=e;o=l.value,e=r.createElement("pre"),l.parentNode.replaceChild(e,l)}else e&&(o=e.textContent,e.innerHTML="");var c=t.createEditSession(o),h=new a(new u(e),c,n),d={document:c,editor:h,onResize:h.resize.bind(h,null)};return l&&(d.textarea=l),s.addListener(window,"resize",d.onResize),h.on("destroy",function(){s.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var n=new l(e,t);return n.setUndoManager(new c),n},t.Range=o,t.Editor=a,t.EditSession=l,t.UndoManager=c,t.VirtualRenderer=u,t.version=t.config.version}),ace.require(["ace/ace"],function(t){for(var n in t&&(t.config.init(!0),t.define=ace.define),window.ace||(window.ace=t),t)t.hasOwnProperty(n)&&(window.ace[n]=t[n]);window.ace.default=window.ace,e&&(e.exports=window.ace)}),e.exports={ace}},551(e,t,n){"use strict";var i=n(159),r=n(982);function s(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
          • Id: X - Size: WxH
          • + * + * Click triggers handleCanvasSelected on the adapter, which fires the + * onCanvasSelected observable for spector.ts subscribers. + */ +export function CanvasListItem({ canvas }: { canvas: ICanvasInformation }) { + const adapter = useCaptureMenu(); + + return ( +
          • adapter.handleCanvasSelected(canvas)}> + {`Id: ${canvas.id} - Size: ${canvas.width}*${canvas.height}`} +
          • + ); +} diff --git a/src/embeddedFrontend/react/CaptureMenu/CaptureMenuActions.tsx b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuActions.tsx new file mode 100644 index 00000000..a1a17783 --- /dev/null +++ b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuActions.tsx @@ -0,0 +1,42 @@ +import { useStore } from "../shared/ExternalStore"; +import { useCaptureMenu } from "./CaptureMenuContext"; + +/** + * Capture/play/pause action buttons. + * Original: src/embeddedFrontend/captureMenu/captureMenuActionsComponent.ts + * + * DOM structure: + *
            + *
            + * + *
            + * + *
            + *
            + *
            + * + * State in the original is `boolean` = isPlaying. + * When isPlaying is false (paused), show Play + PlayNextFrame. + * When isPlaying is true, show Pause. + * + * commandName attributes are required for SCSS [commandName=...] selectors + * that render the red circle, play triangle, pause bars, etc. + */ +export function CaptureMenuActions() { + const adapter = useCaptureMenu(); + const state = useStore(adapter.store); + + return ( +
            +
            + {!state.isPlaying ? ( + <> +
            +
            + + ) : ( +
            + )} +
            + ); +} diff --git a/src/embeddedFrontend/react/CaptureMenu/CaptureMenuContext.ts b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuContext.ts new file mode 100644 index 00000000..595904c7 --- /dev/null +++ b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuContext.ts @@ -0,0 +1,12 @@ +import { createContext, useContext } from "react"; +import type { ReactCaptureMenu } from "./ReactCaptureMenu"; + +export const CaptureMenuContext = createContext(null); + +export function useCaptureMenu(): ReactCaptureMenu { + const ctx = useContext(CaptureMenuContext); + if (!ctx) { + throw new Error("CaptureMenuContext not provided — CaptureMenuRoot must be rendered inside CaptureMenuContext.Provider"); + } + return ctx; +} diff --git a/src/embeddedFrontend/react/CaptureMenu/CaptureMenuRoot.tsx b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuRoot.tsx new file mode 100644 index 00000000..9fa1a7ce --- /dev/null +++ b/src/embeddedFrontend/react/CaptureMenu/CaptureMenuRoot.tsx @@ -0,0 +1,47 @@ +import { LogLevel } from "../../../shared/utils/logger"; +import { useStore } from "../shared/ExternalStore"; +import { useCaptureMenu } from "./CaptureMenuContext"; +import { CanvasList } from "./CanvasList"; +import { CaptureMenuActions } from "./CaptureMenuActions"; +import { FpsCounter } from "./FpsCounter"; + +/** + * Root component for the React CaptureMenu. + * Original: src/embeddedFrontend/captureMenu/captureMenuComponent.ts + * + * DOM structure: + *
            + *
            + * + * + * + *
            + *
            + * log text + *
            + *
            + * + * Note: The original MVX version always outputs "active" because it checks + * `${state ? "active" : ""}` where state is always truthy (an object). + * The React version uses `state.visible` which actually makes hide() work. + * This is a bug fix, not a regression. + */ +export function CaptureMenuRoot() { + const adapter = useCaptureMenu(); + const state = useStore(adapter.store); + + return ( +
            +
            + + + +
            +
            + + {state.logText} + +
            +
            + ); +} diff --git a/src/embeddedFrontend/react/CaptureMenu/FpsCounter.tsx b/src/embeddedFrontend/react/CaptureMenu/FpsCounter.tsx new file mode 100644 index 00000000..95041688 --- /dev/null +++ b/src/embeddedFrontend/react/CaptureMenu/FpsCounter.tsx @@ -0,0 +1,16 @@ +import { useStore } from "../shared/ExternalStore"; +import { useCaptureMenu } from "./CaptureMenuContext"; + +/** + * Displays the current FPS counter. + * Original: src/embeddedFrontend/captureMenu/fpsCounterComponent.ts + * Output: XX.XX Fps + */ +export function FpsCounter() { + const adapter = useCaptureMenu(); + const state = useStore(adapter.store); + + return ( + {state.fps.toFixed(2)} Fps + ); +} diff --git a/src/embeddedFrontend/react/CaptureMenu/ReactCaptureMenu.ts b/src/embeddedFrontend/react/CaptureMenu/ReactCaptureMenu.ts new file mode 100644 index 00000000..3f5aa141 --- /dev/null +++ b/src/embeddedFrontend/react/CaptureMenu/ReactCaptureMenu.ts @@ -0,0 +1,250 @@ +import { createRoot, Root } from "react-dom/client"; +import { createElement } from "react"; +import { Observable } from "../../../shared/utils/observable"; +import { LogLevel } from "../../../shared/utils/logger"; +import { ExternalStore } from "../shared/ExternalStore"; +import { ICanvasInformation, ICaptureMenuOptions, CaptureMenuState } from "../shared/types"; +import { CaptureMenuRoot } from "./CaptureMenuRoot"; +import { CaptureMenuContext } from "./CaptureMenuContext"; + +/** + * React adapter for CaptureMenu. + * + * Implements the exact same public API as the original MVX-based CaptureMenu + * (src/embeddedFrontend/captureMenu/captureMenu.ts) so it can be swapped in + * as a drop-in replacement. Internally uses ExternalStore + React 18 createRoot + * instead of the MVX framework. + * + * State flow: + * Imperative API call (e.g. setFPS(60)) + * → store.setState(prev => ({ ...prev, fps: 60 })) + * → React re-renders subscribed components + * + * Event flow: + * React component callback (e.g. onCaptureClick) + * → adapter method + * → Observable.trigger(canvasInfo) + * → external subscribers (spector.ts) + */ +export class ReactCaptureMenu { + // ─── Static help text (matches original) ────────────────────────────── + public static SelectCanvasHelpText = "Please, select a canvas in the list above."; + public static ActionsHelpText = "Record with the red button, you can also pause or continue playing the current scene."; + public static PleaseWaitHelpText = "Capturing, be patient (this can take up to 3 minutes)..."; + + // ─── Observables (same shape as original CaptureMenu) ───────────────── + public readonly onCanvasSelected: Observable; + public readonly onCaptureRequested: Observable; + public readonly onPauseRequested: Observable; + public readonly onPlayRequested: Observable; + public readonly onPlayNextFrameRequested: Observable; + + // ─── React internals ────────────────────────────────────────────────── + public readonly store: ExternalStore; + private readonly _root: Root; + private readonly _container: HTMLDivElement; + private readonly _rootPlaceHolder: Element; + + private _isTrackingCanvas: boolean; + private readonly _hideLog: boolean; + + constructor(private readonly options: ICaptureMenuOptions = {}) { + this._rootPlaceHolder = options.rootPlaceHolder || document.body; + this._hideLog = !!options.hideLog; + this._isTrackingCanvas = false; + + // ── Observables ── + this.onCanvasSelected = new Observable(); + this.onCaptureRequested = new Observable(); + this.onPauseRequested = new Observable(); + this.onPlayRequested = new Observable(); + this.onPlayNextFrameRequested = new Observable(); + + // ── Store ── + this.store = new ExternalStore({ + visible: true, + logText: ReactCaptureMenu.SelectCanvasHelpText, + logLevel: LogLevel.info, + logVisible: !this._hideLog, + canvases: [], + selectedCanvas: null, + showCanvasList: false, + isPlaying: true, + fps: 0, + }); + + // ── Mount React tree (once) ── + this._container = document.createElement("div"); + this._container.className = "spector-react-capture-menu"; + this._rootPlaceHolder.appendChild(this._container); + this._root = createRoot(this._container); + this._root.render( + createElement(CaptureMenuContext.Provider, { value: this }, + createElement(CaptureMenuRoot), + ), + ); + } + + // ─── Public API (matches original CaptureMenu exactly) ──────────────── + + public getSelectedCanvasInformation(): ICanvasInformation { + return this.store.getSnapshot().selectedCanvas; + } + + public trackPageCanvases(): void { + this._isTrackingCanvas = true; + if (document.body) { + const canvases = document.body.querySelectorAll("canvas"); + this.updateCanvasesList(canvases); + } + } + + public updateCanvasesList(canvases: NodeListOf): void { + const list: ICanvasInformation[] = []; + for (let i = 0; i < canvases.length; i++) { + const c = canvases[i]; + list.push({ id: c.id, width: c.width, height: c.height, ref: c }); + } + this._updateCanvasesInternal(list); + } + + public updateCanvasesListInformation(canvasesInformation: ICanvasInformation[]): void { + const list: ICanvasInformation[] = []; + for (let i = 0; i < canvasesInformation.length; i++) { + const info = canvasesInformation[i]; + list.push({ id: info.id, width: info.width, height: info.height, ref: info.ref }); + } + this._updateCanvasesInternal(list); + } + + public display(): void { + this.store.setState((prev) => ({ ...prev, visible: true })); + } + + public hide(): void { + this.store.setState((prev) => ({ ...prev, visible: false })); + } + + public captureComplete(errorText: string): void { + if (errorText) { + this.store.setState((prev) => ({ + ...prev, + logLevel: LogLevel.error, + logText: errorText, + logVisible: !this._hideLog, + })); + } else { + this.store.setState((prev) => ({ + ...prev, + logLevel: LogLevel.info, + logText: ReactCaptureMenu.ActionsHelpText, + logVisible: !this._hideLog, + })); + } + } + + public setFPS(fps: number): void { + this.store.setState((prev) => ({ ...prev, fps })); + } + + // ─── Callbacks for React components ─────────────────────────────────── + // These will be passed to the React tree as props/context in the next phase. + + /** Called by React component when user clicks the canvas selector toggle. */ + public handleCanvasListToggle = (): void => { + const state = this.store.getSnapshot(); + this.store.setState((prev) => ({ + ...prev, + selectedCanvas: null, + showCanvasList: !prev.showCanvasList, + logLevel: LogLevel.info, + logText: ReactCaptureMenu.SelectCanvasHelpText, + logVisible: prev.showCanvasList ? false : !this._hideLog, + })); + this.onCanvasSelected.trigger(null); + if (this._isTrackingCanvas) { + this.trackPageCanvases(); + } + }; + + /** Called by React component when user selects a specific canvas. */ + public handleCanvasSelected = (canvas: ICanvasInformation): void => { + this.store.setState((prev) => ({ + ...prev, + selectedCanvas: canvas, + showCanvasList: false, + logLevel: LogLevel.info, + logText: ReactCaptureMenu.ActionsHelpText, + logVisible: !this._hideLog, + })); + this.onCanvasSelected.trigger(canvas); + }; + + /** Called by React component when user clicks the capture button. */ + public handleCaptureRequested = (): void => { + const canvas = this.getSelectedCanvasInformation(); + if (canvas) { + this.store.setState((prev) => ({ + ...prev, + logLevel: LogLevel.info, + logText: ReactCaptureMenu.PleaseWaitHelpText, + logVisible: !this._hideLog, + })); + } + // Defer to ensure the log displays (matches original behavior). + setTimeout(() => { + this.onCaptureRequested.trigger(canvas); + }, 200); + }; + + /** Called by React component when user clicks pause. */ + public handlePauseRequested = (): void => { + this.onPauseRequested.trigger(this.getSelectedCanvasInformation()); + this.store.setState((prev) => ({ ...prev, isPlaying: false })); + }; + + /** Called by React component when user clicks play. */ + public handlePlayRequested = (): void => { + this.onPlayRequested.trigger(this.getSelectedCanvasInformation()); + this.store.setState((prev) => ({ ...prev, isPlaying: true })); + }; + + /** Called by React component when user clicks play next frame. */ + public handlePlayNextFrameRequested = (): void => { + this.onPlayNextFrameRequested.trigger(this.getSelectedCanvasInformation()); + }; + + // ─── Private ────────────────────────────────────────────────────────── + + private _updateCanvasesInternal(canvases: ICanvasInformation[]): void { + const prevState = this.store.getSnapshot(); + const wasListVisible = prevState.showCanvasList; + + if (!wasListVisible) { + if (canvases.length === 1) { + // Auto-select single canvas (matches original behavior). + this.store.setState((prev) => ({ + ...prev, + canvases, + selectedCanvas: canvases[0], + logLevel: LogLevel.info, + logText: ReactCaptureMenu.ActionsHelpText, + logVisible: !this._hideLog, + })); + this.onCanvasSelected.trigger(canvases[0]); + } else { + this.store.setState((prev) => ({ + ...prev, + canvases, + selectedCanvas: null, + logLevel: LogLevel.info, + logText: ReactCaptureMenu.SelectCanvasHelpText, + logVisible: !this._hideLog, + })); + this.onCanvasSelected.trigger(null); + } + } else { + this.store.setState((prev) => ({ ...prev, canvases })); + } + } +} diff --git a/src/embeddedFrontend/react/ResultView/CaptureList/CaptureList.tsx b/src/embeddedFrontend/react/ResultView/CaptureList/CaptureList.tsx new file mode 100644 index 00000000..342740e7 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/CaptureList/CaptureList.tsx @@ -0,0 +1,98 @@ +import React, { useCallback, useRef } from "react"; +import { ICapture } from "../../../../shared/capture/capture"; +import { Logger } from "../../../../shared/utils/logger"; +import { CaptureListItem } from "./CaptureListItem"; + +/** + * Capture list with drag-and-drop zone. + * Original: src/embeddedFrontend/resultView/captureList/captureListComponent.ts + * + * DOM: + *
            + *
            Drag files here to open...
            + *
              ...
            + *
            + */ +export interface CaptureListProps { + active: boolean; + captures: ReadonlyArray<{ capture: ICapture; active: boolean }>; + onCaptureSelected: (index: number) => void; + onSaveRequested: (capture: ICapture) => void; + onCaptureLoaded: (capture: ICapture) => void; +} + +export function CaptureList({ active, captures, onCaptureSelected, onSaveRequested, onCaptureLoaded }: CaptureListProps) { + const dropRef = useRef(null); + + const handleDrag = useCallback((e: React.DragEvent) => { + e.stopPropagation(); + e.preventDefault(); + }, []); + + const handleDrop = useCallback((e: React.DragEvent) => { + e.stopPropagation(); + e.preventDefault(); + loadFiles(e.nativeEvent, onCaptureLoaded); + }, [onCaptureLoaded]); + + return ( +
            +
            + Drag files here to open a previously saved capture. +
            +
              + {captures.map((entry, i) => ( + onCaptureSelected(i)} + onSaveRequested={() => onSaveRequested(entry.capture)} + /> + ))} +
            +
            + ); +} + +function loadFiles(event: DragEvent, onCaptureLoaded: (capture: ICapture) => void): void { + let filesToLoad: FileList | null = null; + + if (event && event.dataTransfer && event.dataTransfer.files) { + filesToLoad = event.dataTransfer.files; + } + + if (event && event.target && (event as any).target.files) { + filesToLoad = (event as any).target.files; + } + + if (filesToLoad && filesToLoad.length > 0) { + for (let i = 0; i < filesToLoad.length; i++) { + const name = filesToLoad[i].name.toLowerCase(); + const extension = name.split(".").pop(); + + if (extension === "json") { + const fileToLoad = filesToLoad[i]; + const reader = new FileReader(); + reader.onerror = (e) => { + Logger.error("Error while reading file: " + fileToLoad.name + e); + }; + reader.onload = (e) => { + try { + const capture = JSON.parse((e as any).target["result"]); + onCaptureLoaded(capture); + } catch (exception) { + Logger.error("Error while reading file: " + fileToLoad.name + exception); + } + }; + reader.readAsText(fileToLoad); + } + } + } +} diff --git a/src/embeddedFrontend/react/ResultView/CaptureList/CaptureListItem.tsx b/src/embeddedFrontend/react/ResultView/CaptureList/CaptureListItem.tsx new file mode 100644 index 00000000..0b956413 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/CaptureList/CaptureListItem.tsx @@ -0,0 +1,54 @@ +import React, { useCallback } from "react"; +import { ICapture } from "../../../../shared/capture/capture"; + +/** + * Single capture list thumbnail item. + * Original: src/embeddedFrontend/resultView/captureList/captureListItemComponent.ts + * + * DOM: + *
          • + * (per attachment) OR FrameBufferStatus + * HH:MM:SS + *
          • + */ +export interface CaptureListItemProps { + capture: ICapture; + active: boolean; + onCaptureSelected: () => void; + onSaveRequested: () => void; +} + +export function CaptureListItem({ capture, active, onCaptureSelected, onSaveRequested }: CaptureListItemProps) { + const handleSave = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + onSaveRequested(); + }, [onSaveRequested]); + + const handleSelect = useCallback(() => { + onCaptureSelected(); + }, [onCaptureSelected]); + + const timeStr = new Date(capture.startTime).toTimeString().split(" ")[0]; + + return ( +
          • + {capture.endState.VisualState.Attachments ? ( + capture.endState.VisualState.Attachments.map((imageState: any, i: number) => ( + + )) + ) : ( + {capture.endState.VisualState.FrameBufferStatus} + )} + + {timeStr} + + +
          • + ); +} diff --git a/src/embeddedFrontend/react/ResultView/CommandList/CommandDetail.tsx b/src/embeddedFrontend/react/ResultView/CommandList/CommandDetail.tsx new file mode 100644 index 00000000..3044a6aa --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/CommandList/CommandDetail.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +/** + * Container for command detail panel. + * Original: src/embeddedFrontend/resultView/commandList/commandDetailComponent.ts + * + * DOM:
            ...
            + */ +export interface CommandDetailProps { + children?: React.ReactNode; +} + +export function CommandDetail({ children }: CommandDetailProps) { + return ( +
            + {children} +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/CommandList/CommandList.tsx b/src/embeddedFrontend/react/ResultView/CommandList/CommandList.tsx new file mode 100644 index 00000000..cfc9fede --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/CommandList/CommandList.tsx @@ -0,0 +1,22 @@ +import React from "react"; + +/** + * Container for command list items. + * Original: src/embeddedFrontend/resultView/commandList/commandListComponent.ts + * + * DOM: + *
            + *
              ...
            + *
            + */ +export interface CommandListProps { + children?: React.ReactNode; +} + +export function CommandList({ children }: CommandListProps) { + return ( +
            +
              {children}
            +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/CommandList/CommandListItem.tsx b/src/embeddedFrontend/react/ResultView/CommandList/CommandListItem.tsx new file mode 100644 index 00000000..e6a97c8f --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/CommandList/CommandListItem.tsx @@ -0,0 +1,114 @@ +import React, { useCallback, useEffect, useRef } from "react"; +import { ICommandListItemState } from "../../shared/types"; +import { CommandCaptureStatus } from "../../../../shared/capture/commandCapture"; + +/** + * Single command list row. + * Original: src/embeddedFrontend/resultView/commandList/commandListItemComponent.ts + * + * IMPORTANT behavioral notes from original: + * - className assignment is sequential: drawCall is set first, active OVERWRITES it. + * This is preserved intentionally (existing behavior). + * - Markers render as bold spans with status + "marker important" classes. + * - LOG commands render differently (bold span with capture.text). + * - Non-clear draw calls show vertex/fragment shader links. + * - Active items auto-scroll into view via setTimeout(1). + */ +export interface CommandListItemProps { + command: ICommandListItemState; + onCommandSelected: () => void; + onVertexSelected?: () => void; + onFragmentSelected?: () => void; +} + +function getStatusString(status: CommandCaptureStatus): string { + switch (status) { + case CommandCaptureStatus.Deprecated: return "deprecated"; + case CommandCaptureStatus.Unused: return "unused"; + case CommandCaptureStatus.Disabled: return "disabled"; + case CommandCaptureStatus.Redundant: return "redundant"; + case CommandCaptureStatus.Valid: return "valid"; + default: return "unknown"; + } +} + +export function CommandListItem({ command, onCommandSelected, onVertexSelected, onFragmentSelected }: CommandListItemProps) { + const ref = useRef(null); + const capture = command.capture; + const status = getStatusString(capture.status); + const hasVisualState = !!(capture as any).VisualState; + + // Preserve original className assignment behavior: + // drawCall is set first, then active OVERWRITES it (not additive). + let className = ""; + if (hasVisualState) { + className = " drawCall"; + } + if (command.active) { + className = " active"; + } + + useEffect(() => { + if (command.active && ref.current) { + setTimeout(() => ref.current?.scrollIntoView({ block: "nearest" }), 1); + } + }, [command.active]); + + const handleClick = useCallback((e: React.MouseEvent) => { + onCommandSelected(); + }, [onCommandSelected]); + + const handleVertexClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + onVertexSelected?.(); + }, [onVertexSelected]); + + const handleFragmentClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + onFragmentSelected?.(); + }, [onFragmentSelected]); + + // Render shader links for non-clear draw calls + let shaderLinks: React.ReactNode = null; + if (hasVisualState && capture.name !== "clear") { + try { + const vertexShader = capture.DrawCall.shaders[0]; + const fragmentShader = capture.DrawCall.shaders[1]; + shaderLinks = ( + <> +
            {vertexShader.name} + {fragmentShader.name} + + ); + } catch (_e) { + // Do nothing but prevent crashing — matches original. + } + } + + return ( +
          • + {capture.marker && ( + {capture.marker + " "} + )} + {capture.name === "LOG" ? ( + {capture.text + " "} + ) : ( + ${capture.name}`, + ), + }} /> + )} + {shaderLinks} +
          • + ); +} diff --git a/src/embeddedFrontend/react/ResultView/Content/ResultViewContent.tsx b/src/embeddedFrontend/react/ResultView/Content/ResultViewContent.tsx new file mode 100644 index 00000000..65691beb --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/Content/ResultViewContent.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +/** + * Container for result view tab content. + * Original: src/embeddedFrontend/resultView/content/resultViewContentComponent.ts + * + * DOM:
            ...
            + */ +export interface ResultViewContentProps { + children?: React.ReactNode; +} + +export function ResultViewContent({ children }: ResultViewContentProps) { + return ( +
            + {children} +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/Information/InformationColumn.tsx b/src/embeddedFrontend/react/ResultView/Information/InformationColumn.tsx new file mode 100644 index 00000000..de5dab19 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/Information/InformationColumn.tsx @@ -0,0 +1,22 @@ +import React from "react"; + +/** + * Two-column layout container for information view. + * Original: src/embeddedFrontend/resultView/information/informationColumnComponent.ts + * + * DOM: + *
            ...
            (when left=true) + *
            ...
            (when left=false) + */ +export interface InformationColumnProps { + left: boolean; + children?: React.ReactNode; +} + +export function InformationColumn({ left, children }: InformationColumnProps) { + return ( +
            + {children} +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONContent.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONContent.tsx new file mode 100644 index 00000000..3cec539a --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONContent.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +/** + * Container for JSON groups/items. + * Original: src/embeddedFrontend/resultView/JSON/jsonContentComponent.ts + * + * DOM:
            ...
            + */ +export interface JSONContentProps { + children?: React.ReactNode; +} + +export function JSONContent({ children }: JSONContentProps) { + return ( +
            + {children} +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONGroup.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONGroup.tsx new file mode 100644 index 00000000..a8a25787 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONGroup.tsx @@ -0,0 +1,28 @@ +import React from "react"; + +/** + * JSON group with title. + * Original: src/embeddedFrontend/resultView/JSON/jsonGroupComponent.ts + * + * DOM: + *
            + *
            Spaced Title
            + *
              ...
            + *
            + * + * Title transforms camelCase to "Camel Case" via regex. + */ +export interface JSONGroupProps { + title: string; + children?: React.ReactNode; +} + +export function JSONGroup({ title, children }: JSONGroupProps) { + const displayTitle = title ? title.replace(/([A-Z])/g, " $1").trim() : ""; + return ( +
            +
            {displayTitle}
            +
              {children}
            +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONHelpItem.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONHelpItem.tsx new file mode 100644 index 00000000..325f0db6 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONHelpItem.tsx @@ -0,0 +1,32 @@ +import React from "react"; + +/** + * Help item with MDN link in JSON view. + * Original: src/embeddedFrontend/resultView/JSON/jsonHelpItemComponent.ts + * + * DOM: + *
          • + * key: + * + * value (Open help page) + * + *
          • + */ +export interface JSONHelpItemProps { + itemKey: string; + value: string; + help: string; +} + +export function JSONHelpItem({ itemKey, value, help }: JSONHelpItemProps) { + return ( +
          • + {itemKey + ": "} + + {value + " ("} + Open help page + {")"} + +
          • + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONImageItem.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONImageItem.tsx new file mode 100644 index 00000000..bd58040d --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONImageItem.tsx @@ -0,0 +1,33 @@ +import React from "react"; + +/** + * Image item in JSON view. + * Original: src/embeddedFrontend/resultView/JSON/jsonImageItemComponent.ts + * + * DOM: + *
          • + *
            + * + * key + *
            + *
          • + */ +export interface JSONImageItemProps { + itemKey: string; + value: string; + pixelated: boolean; +} + +export function JSONImageItem({ itemKey, value, pixelated }: JSONImageItemProps) { + return ( +
          • +
            + + {itemKey} +
            +
          • + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONItem.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONItem.tsx new file mode 100644 index 00000000..615e8365 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONItem.tsx @@ -0,0 +1,25 @@ +import React from "react"; + +/** + * Key-value pair item in JSON view. + * Original: src/embeddedFrontend/resultView/JSON/jsonItemComponent.ts + * + * DOM: + *
          • + * key: + * value + *
          • + */ +export interface JSONItemProps { + itemKey: string; + value: string; +} + +export function JSONItem({ itemKey, value }: JSONItemProps) { + return ( +
          • + {itemKey + ": "} + {value} +
          • + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONRenderTree.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONRenderTree.tsx new file mode 100644 index 00000000..221df3f2 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONRenderTree.tsx @@ -0,0 +1,45 @@ +import React from "react"; +import { JSONRenderItem } from "../../shared/types"; +import { JSONGroup } from "./JSONGroup"; +import { JSONItem } from "./JSONItem"; +import { JSONImageItem } from "./JSONImageItem"; +import { JSONHelpItem } from "./JSONHelpItem"; +import { JSONVisualStateItem } from "./JSONVisualStateItem"; + +/** + * Recursively renders a JSONRenderItem[] tree. + * This bridges the pure data structures built by the adapter + * into the React component tree that matches the original MVX DOM. + */ +export interface JSONRenderTreeProps { + items: JSONRenderItem[]; +} + +export function JSONRenderTree({ items }: JSONRenderTreeProps) { + if (!items || items.length === 0) return null; + + return ( + <> + {items.map((item, i) => { + switch (item.type) { + case "group": + return ( + + + + ); + case "item": + return ; + case "image": + return ; + case "help": + return ; + case "visualState": + return ; + default: + return null; + } + })} + + ); +} diff --git a/src/embeddedFrontend/react/ResultView/JSON/JSONVisualStateItem.tsx b/src/embeddedFrontend/react/ResultView/JSON/JSONVisualStateItem.tsx new file mode 100644 index 00000000..7b7d8810 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/JSON/JSONVisualStateItem.tsx @@ -0,0 +1,46 @@ +import React from "react"; + +/** + * Visual state image in JSON context. + * Original: src/embeddedFrontend/resultView/JSON/jsonVisualStateItemComponent.ts + * + * DOM: + *
            + * per attachment (skips without src) + * attachmentName (if multiple attachments) + * -- OR (no attachments) -- + * FrameBufferStatus + * -- always -- + * displayText or "Canvas frame buffer" + *
            + */ +export interface JSONVisualStateItemProps { + visualState: any; +} + +export function JSONVisualStateItem({ visualState }: JSONVisualStateItemProps) { + return ( +
            + {visualState.Attachments ? ( + visualState.Attachments.map((imageState: any, i: number) => { + if (!imageState.src) return null; + return ( + + + {visualState.Attachments.length > 1 && ( + {imageState.attachmentName} + )} + + ); + }) + ) : ( + {visualState.FrameBufferStatus} + )} + + {visualState.FrameBuffer + ? visualState.FrameBuffer.__SPECTOR_Object_TAG.displayText + : "Canvas frame buffer"} + +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/Menu/ResultViewMenu.tsx b/src/embeddedFrontend/react/ResultView/Menu/ResultViewMenu.tsx new file mode 100644 index 00000000..9fc9733a --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/Menu/ResultViewMenu.tsx @@ -0,0 +1,140 @@ +import React, { useCallback, useRef } from "react"; +import { useStore } from "../../shared/ExternalStore"; +import { useResultView } from "../ResultViewContext"; +import { MenuStatus } from "../../shared/types"; + +/** + * Result view tab menu bar. + * Original: src/embeddedFrontend/resultView/menu/resultViewMenuComponent.ts + * + * DOM structure (matching original exactly): + *
              + *
            • Menu
            • + *
            • + * + * X + *
            • + *
            • Captures
            • + * ... (Information, Init State, Commands, End State) + *
            • Close
            • + *
            + */ +export function ResultViewMenu() { + const adapter = useResultView(); + const state = useStore(adapter.store); + const lisRef = useRef(null); + + const handleMenuToggle = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + const openButton = (e.currentTarget.parentElement as HTMLLIElement); + const ul = openButton.parentElement; + if (!ul) return; + const lis = ul.querySelectorAll("li:not(.resultViewMenuSmall)"); + + if (openButton.getAttribute("open") === "true") { + openButton.setAttribute("open", "false"); + for (let i = 0; i < lis.length; i++) { + (lis[i] as HTMLElement).style.display = "none"; + (lis[i] as HTMLElement).style.visibility = "hidden"; + } + } else { + openButton.setAttribute("open", "true"); + for (let i = 0; i < lis.length; i++) { + (lis[i] as HTMLElement).style.display = "block"; + (lis[i] as HTMLElement).style.visibility = "visible"; + } + } + }, []); + + const handleSearch = useCallback((e: React.ChangeEvent) => { + adapter.handleSearchTextChange(e.target.value); + }, [adapter]); + + const handleClearSearch = useCallback((e: React.MouseEvent) => { + e.stopPropagation(); + adapter.handleSearchTextChange(""); + }, [adapter]); + + const handleTab = useCallback((status: MenuStatus) => (e: React.MouseEvent) => { + e.preventDefault(); + adapter.handleMenuStatusChange(status); + }, [adapter]); + + const handleClose = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + adapter.handleClose(); + }, [adapter]); + + return ( + + ); +} diff --git a/src/embeddedFrontend/react/ResultView/ReactResultView.ts b/src/embeddedFrontend/react/ResultView/ReactResultView.ts new file mode 100644 index 00000000..a32c2791 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/ReactResultView.ts @@ -0,0 +1,816 @@ +import { createRoot, Root } from "react-dom/client"; +import { createElement } from "react"; +import { Observable } from "../../../shared/utils/observable"; +import { ICapture } from "../../../shared/capture/capture"; +import { CommandCaptureStatus, ICommandCapture } from "../../../shared/capture/commandCapture"; +import { ExternalStore } from "../shared/ExternalStore"; +import { + ISourceCodeChangeEvent, + ICommandListItemState, + IVisualStateItem, + ISourceCodeState, + MenuStatus, + ResultViewState, + JSONRenderItem, +} from "../shared/types"; +import { ResultViewRoot } from "./ResultViewRoot"; +import { ResultViewContext } from "./ResultViewContext"; +import { MDNCommandLinkHelper } from "../shared/mdnCommandLinkHelper"; + +// ─── Default (empty) state ─────────────────────────────────────────────────── + +const EMPTY_STATE: ResultViewState = { + visible: false, + menuStatus: MenuStatus.Captures, + searchText: "", + captures: [], + currentCapture: null, + commands: [], + currentCommandIndex: -1, + visualStates: [], + currentVisualStateIndex: -1, + sourceCodeState: null, + sourceCodeError: "", + commandCount: 0, + informationLeft: [], + informationRight: [], + initStateData: [], + endStateData: [], + commandDetailData: [], +}; + +// ─── Pure JSON tree builder ────────────────────────────────────────────────── + +function toFilter(text: string, searchText: string): boolean { + if (!searchText || searchText.length <= 2) { + return false; + } + text = (text + "").toLowerCase(); + return text.indexOf(searchText.toLowerCase()) === -1; +} + +function getJSONAsString( + parentChildren: JSONRenderItem[], + key: string, + json: any, + searchText: string, +): string | null { + if (json === null) return "null"; + if (json === undefined) return "undefined"; + + if (typeof json === "number") { + return Math.floor(json) === json ? json.toFixed(0) : json.toFixed(4); + } + if (typeof json === "string") return json; + if (typeof json === "boolean") return json ? "true" : "false"; + + if (json.length === 0) return "Empty Array"; + + if (json.length) { + const arrayResult: string[] = []; + for (let i = 0; i < json.length; i++) { + const resultItem = getJSONAsString(parentChildren, `${key}(${i.toFixed(0)})`, json[i], searchText); + if (resultItem !== null) { + arrayResult.push(resultItem); + } + } + return arrayResult.length === 0 ? null : arrayResult.join(", "); + } + + if (json.help) { + parentChildren.push({ type: "help", key, value: json.name, help: json.help }); + return null; + } + + if (json.__SPECTOR_Object_TAG) { + return json.__SPECTOR_Object_TAG.displayText; + } + + if (json.displayText) { + return json.displayText; + } + + if (typeof json === "object") { + buildJSONGroup(parentChildren, key, json, searchText); + } + + return null; +} + +function buildJSON(parentChildren: JSONRenderItem[], json: any, searchText: string): void { + if (json.VisualState) { + parentChildren.push({ type: "visualState", visualState: json.VisualState }); + } + + for (const key in json) { + if (key === "VisualState" || key === "analyserName" || key === "source" || key === "translatedSource") { + continue; + } + + const value = json[key]; + if (key === "visual") { + for (const target in value) { + if (value.hasOwnProperty(target) && value[target]) { + parentChildren.push({ + type: "image", + key: target, + value: value[target], + pixelated: json["samplerMagFilter"] === "NEAREST" || json["magFilter"] === "NEAREST", + }); + } + } + } else { + const result = getJSONAsString(parentChildren, key, value, searchText); + if (result === null || result === undefined) { + continue; + } else if (toFilter(key, searchText) && toFilter(value, searchText)) { + continue; + } + + parentChildren.push({ type: "item", key, value: result }); + } + + if (value && value.__SPECTOR_Metadata) { + buildJSONGroup(parentChildren, "Metadata", value.__SPECTOR_Metadata, searchText); + } + } +} + +function buildJSONGroup( + parentChildren: JSONRenderItem[], + title: string, + json: any, + searchText: string, +): void { + if (!json) return; + + const children: JSONRenderItem[] = []; + buildJSON(children, json, searchText); + if (children.length === 0) return; + + parentChildren.push({ type: "group", title, children }); +} + +// ─── Command detail builder (pure) ────────────────────────────────────────── + +function buildCommandDetail( + command: ICommandCapture, + visualState: any, +): JSONRenderItem[] { + const items: JSONRenderItem[] = []; + + // Visual state thumbnail at top + if (visualState) { + items.push({ type: "visualState", visualState }); + } + + // Status string + let status: string = "Unknown"; + switch (command.status) { + case CommandCaptureStatus.Deprecated: status = "Deprecated"; break; + case CommandCaptureStatus.Unused: status = "Unused"; break; + case CommandCaptureStatus.Disabled: status = "Disabled"; break; + case CommandCaptureStatus.Redundant: status = "Redundant"; break; + case CommandCaptureStatus.Valid: status = "Valid"; break; + } + + // Global group with name+help link, duration, result, status + const helpLink = MDNCommandLinkHelper.getMDNLink(command.name); + if (command.result) { + buildJSONGroup(items, "Global", { + name: { help: helpLink, name: command.name }, + duration: command.commandEndTime - command.startTime, + result: command.result, + status, + }, ""); + } else if (command.name !== "LOG") { + buildJSONGroup(items, "Global", { + name: { help: helpLink, name: command.name }, + duration: command.commandEndTime - command.startTime, + status, + }, ""); + } + + // All object-typed properties of the command (except VisualState and result) + for (const key in command) { + if (key === "VisualState" || key === "result") { + continue; + } + if (typeof command[key] === "object") { + buildJSONGroup(items, key, command[key], ""); + } + } + + return items; +} + +// ─── Adapter class ────────────────────────────────────────────────────────── + +/** + * React adapter for ResultView. + * + * Implements the exact same public API as the original MVX-based ResultView + * so it can be swapped in as a drop-in replacement. All orchestration logic + * (command/visual-state building, JSON trees, keyboard navigation, search) + * is ported from the original 821-line resultView.ts. + */ +export class ReactResultView { + // ─── Observables ────────────────────────────────────────────────────── + public readonly onSourceCodeChanged: Observable; + + // ─── React internals ────────────────────────────────────────────────── + public readonly store: ExternalStore; + private readonly _root: Root; + private readonly _container: HTMLDivElement; + private readonly _rootPlaceHolder: Element; + + // ─── Tracking ───────────────────────────────────────────────────────── + private _currentCommandId: number = -1; + + constructor(rootPlaceHolder: Element = null) { + this._rootPlaceHolder = rootPlaceHolder || document.body; + + this.onSourceCodeChanged = new Observable(); + + // ── Store ── + this.store = new ExternalStore({ ...EMPTY_STATE }); + + // ── Mount React tree (once) ── + this._container = document.createElement("div"); + this._container.className = "spector-react-result-view"; + this._rootPlaceHolder.appendChild(this._container); + this._root = createRoot(this._container); + this._root.render( + createElement(ResultViewContext.Provider, { value: this }, + createElement(ResultViewRoot), + ), + ); + + // ── Keyboard navigation ── + this._rootPlaceHolder.addEventListener("keydown", (event) => { + const state = this.store.getSnapshot(); + if (state.menuStatus !== MenuStatus.Commands) return; + + const keyCode = (event as any).keyCode; + if (keyCode === 38) { // Up arrow + event.preventDefault(); + event.stopPropagation(); + this._selectPreviousCommand(); + } else if (keyCode === 40) { // Down arrow + event.preventDefault(); + event.stopPropagation(); + this._selectNextCommand(); + } else if (keyCode === 33) { // Page Up + event.preventDefault(); + event.stopPropagation(); + this._selectPreviousVisualState(); + } else if (keyCode === 34) { // Page Down + event.preventDefault(); + event.stopPropagation(); + this._selectNextVisualState(); + } + }); + } + + // ─── Public API (matches original ResultView) ───────────────────────── + + public display(): void { + this.store.setState((prev) => ({ ...prev, visible: true })); + } + + public hide(): void { + this.store.setState((prev) => ({ ...prev, visible: false })); + } + + public addCapture(capture: ICapture): number { + this.store.setState((prev) => { + const deactivated = prev.captures.map((entry) => ({ + capture: entry.capture, + active: false, + })); + return { + ...prev, + captures: [{ capture, active: true }, ...deactivated], + currentCapture: capture, + }; + }); + this._currentCommandId = -1; + this._displayCurrentCapture(); + return 0; + } + + public selectCapture(captureIndex: number): void { + this._currentCommandId = -1; + this.store.setState((prev) => { + const captures = prev.captures.map((entry, i) => ({ + capture: entry.capture, + active: i === captureIndex, + })); + return { + ...prev, + captures, + currentCapture: captures[captureIndex]?.capture ?? null, + }; + }); + this._displayCurrentCapture(); + } + + public selectCommand(commandIndex: number): void { + const state = this.store.getSnapshot(); + if (commandIndex < 0 || commandIndex >= state.commands.length) return; + + const cmd = state.commands[commandIndex]; + this._currentCommandId = cmd.capture.id; + const visualStateIndex = cmd.visualStateIndex; + + const commandDetailData = this._buildCommandDetail(commandIndex, state.commands, state.visualStates); + + this.store.setState((prev) => ({ + ...prev, + commands: prev.commands.map((c, i) => (c.active !== (i === commandIndex) ? { ...c, active: i === commandIndex } : c)), + currentCommandIndex: commandIndex, + visualStates: prev.visualStates.map((v, i) => (v.active !== (i === visualStateIndex) ? { ...v, active: i === visualStateIndex } : v)), + currentVisualStateIndex: visualStateIndex, + commandDetailData, + })); + } + + public selectVisualState(visualStateIndex: number): void { + const state = this.store.getSnapshot(); + if (visualStateIndex < 0 || visualStateIndex >= state.visualStates.length) return; + + const vs = state.visualStates[visualStateIndex]; + const commandIndex = vs.commandIndex; + + // Handle special sentinel values for init/end state + if (commandIndex === Number.MIN_VALUE) { + this._displayInitState(); + return; + } + if (commandIndex === Number.MAX_VALUE) { + this._displayEndState(); + return; + } + + if (commandIndex >= 0) { + this._currentCommandId = state.commands[commandIndex].capture.id; + } + + const commandDetailData = commandIndex >= 0 + ? this._buildCommandDetail(commandIndex, state.commands, state.visualStates) + : state.commandDetailData; + + this.store.setState((prev) => ({ + ...prev, + visualStates: prev.visualStates.map((v, i) => (v.active !== (i === visualStateIndex) ? { ...v, active: i === visualStateIndex } : v)), + currentVisualStateIndex: visualStateIndex, + commands: commandIndex >= 0 + ? prev.commands.map((c, i) => (c.active !== (i === commandIndex) ? { ...c, active: i === commandIndex } : c)) + : prev.commands, + currentCommandIndex: commandIndex >= 0 ? commandIndex : prev.currentCommandIndex, + commandDetailData, + })); + } + + public showSourceCodeError(error: string): void { + this.store.setState((prev) => ({ + ...prev, + sourceCodeError: error, + })); + } + + public saveCapture(capture: ICapture): void { + const captureInString = JSON.stringify(capture, null, 4); + const blob = new Blob([captureInString], { type: "octet/stream" }); + const fileName = "capture " + new Date(capture.startTime).toTimeString().split(" ")[0] + ".json"; + + const a = document.createElement("a"); + const url = window.URL.createObjectURL(blob); + a.setAttribute("href", url); + a.setAttribute("download", fileName); + a.click(); + } + + // ─── Callbacks for React components ─────────────────────────────────── + + /** Called by React when user selects a menu tab. */ + public handleMenuStatusChange = (status: MenuStatus): void => { + const state = this.store.getSnapshot(); + if (!state.currentCapture) { + // No capture — only allow switching to Captures tab + this.store.setState((prev) => ({ ...prev, menuStatus: MenuStatus.Captures })); + return; + } + switch (status) { + case MenuStatus.Captures: + this._displayCaptures(); + break; + case MenuStatus.Commands: + this._displayCurrentCapture(); + break; + case MenuStatus.Information: + this._displayInformation(); + break; + case MenuStatus.InitState: + this._displayInitState(); + break; + case MenuStatus.EndState: + this._displayEndState(); + break; + } + }; + + /** Called by React when search text changes. */ + public handleSearchTextChange = (searchText: string): void => { + this.store.setState((prev) => ({ ...prev, searchText })); + this._search(searchText); + }; + + /** Called by React when user selects a command. */ + public handleCommandSelected = (commandIndex: number): void => { + this.selectCommand(commandIndex); + }; + + /** Called by React when user selects a visual state. */ + public handleVisualStateSelected = (visualStateIndex: number): void => { + this.selectVisualState(visualStateIndex); + }; + + /** Called by React when a shader link is clicked (vertex). */ + public handleVertexSelected = (commandIndex: number): void => { + this.selectCommand(commandIndex); + this._openShader(false); + }; + + /** Called by React when a shader link is clicked (fragment). */ + public handleFragmentSelected = (commandIndex: number): void => { + this.selectCommand(commandIndex); + this._openShader(true); + }; + + /** Called by React when source code is edited. */ + public handleSourceCodeChanged = (event: ISourceCodeChangeEvent): void => { + this.onSourceCodeChanged.trigger(event); + }; + + /** Called by React when source code close button is clicked. */ + public handleSourceCodeClose = (): void => { + this._displayCurrentCapture(); + }; + + /** Called by React when source code tab changes. */ + public handleSourceCodeTabChange = (fragment: boolean, translated: boolean): void => { + this.store.setState((prev) => { + if (!prev.sourceCodeState) return prev; + return { + ...prev, + sourceCodeState: { ...prev.sourceCodeState, fragment, translated }, + }; + }); + }; + + /** Called by React when beautify checkbox changes. */ + public handleBeautifyChanged = (beautify: boolean): void => { + this.store.setState((prev) => { + if (!prev.sourceCodeState) return prev; + return { + ...prev, + sourceCodeState: { ...prev.sourceCodeState, beautify }, + }; + }); + }; + + /** Called by React when preprocess checkbox changes. */ + public handlePreprocessChanged = (preprocessed: boolean): void => { + this.store.setState((prev) => { + if (!prev.sourceCodeState) return prev; + return { + ...prev, + sourceCodeState: { ...prev.sourceCodeState, preprocessed }, + }; + }); + }; + + /** Called by React when save is requested on a capture. */ + public handleSaveRequested = (capture: ICapture): void => { + this.saveCapture(capture); + }; + + /** Called by React when a capture is loaded (drag-drop). */ + public handleCaptureLoaded = (capture: ICapture): void => { + this.addCapture(capture); + }; + + /** Called by React when user clicks close on the result view. */ + public handleClose = (): void => { + this.hide(); + }; + + // ─── Private: Display modes ────────────────────────────────────────── + + private _displayCaptures(): void { + this.store.setState((prev) => ({ + ...prev, + menuStatus: MenuStatus.Captures, + })); + } + + private _displayInformation(): void { + const state = this.store.getSnapshot(); + const capture = state.currentCapture; + if (!capture) return; + + const leftItems: JSONRenderItem[] = []; + buildJSONGroup(leftItems, "Canvas", capture.canvas, state.searchText); + buildJSONGroup(leftItems, "Context", capture.context, state.searchText); + + const rightItems: JSONRenderItem[] = []; + for (const analysis of capture.analyses) { + const title = analysis.analyserName === "Primitives" ? "Vertices count" : analysis.analyserName; + buildJSONGroup(rightItems, title, analysis, state.searchText); + } + buildJSONGroup(rightItems, "Frame Memory Changes", capture.frameMemory, state.searchText); + buildJSONGroup(rightItems, "Total Memory (seconds since application start: bytes)", capture.memory, state.searchText); + + this.store.setState((prev) => ({ + ...prev, + menuStatus: MenuStatus.Information, + commandCount: capture.commands.length, + informationLeft: leftItems, + informationRight: rightItems, + })); + } + + private _displayInitState(): void { + const state = this.store.getSnapshot(); + const capture = state.currentCapture; + if (!capture) return; + + const items: JSONRenderItem[] = []; + buildJSON(items, capture.initState, state.searchText); + + this.store.setState((prev) => ({ + ...prev, + menuStatus: MenuStatus.InitState, + commandCount: capture.commands.length, + initStateData: items, + })); + } + + private _displayEndState(): void { + const state = this.store.getSnapshot(); + const capture = state.currentCapture; + if (!capture) return; + + const items: JSONRenderItem[] = []; + buildJSON(items, capture.endState, state.searchText); + + this.store.setState((prev) => ({ + ...prev, + menuStatus: MenuStatus.EndState, + commandCount: capture.commands.length, + endStateData: items, + })); + } + + private _displayCurrentCapture(): void { + const state = this.store.getSnapshot(); + const capture = state.currentCapture; + if (!capture) return; + + const searchText = state.searchText; + + // Mark all captures inactive except current + const captures = state.captures.map((entry) => ({ + capture: entry.capture, + active: entry.capture === capture, + })); + + // Build visual states array + const visualStates: IVisualStateItem[] = []; + // Init visual state (index 0) + visualStates.push({ + VisualState: capture.initState.VisualState, + time: capture.startTime, + commandIndex: Number.MIN_VALUE, + active: false, + previousVisualStateIndex: -1, + nextVisualStateIndex: -1, + }); + + // Build commands array + const commands: ICommandListItemState[] = []; + let currentVisualStateIdx = 0; // points to init visual state + let visualStateSet = false; + + let autoSelectCommandIdx = -1; + let autoSelectVisualStateIdx = -1; + + for (let i = 0; i < capture.commands.length; i++) { + const commandCapture = capture.commands[i]; + + // Filter check (matches original toFilter logic) + if (toFilter(commandCapture.marker, searchText) && + toFilter(commandCapture.name, searchText) && + commandCapture.id !== this._currentCommandId && + (commandCapture.name !== "LOG" || toFilter(commandCapture.text, searchText))) { + continue; + } + + const cmdIdx = commands.length; + + const commandState: ICommandListItemState = { + capture: commandCapture, + previousCommandIndex: cmdIdx > 0 ? cmdIdx - 1 : -1, + nextCommandIndex: -1, // will be updated by next command + visualStateIndex: currentVisualStateIdx, + active: false, + }; + + // Link previous command's nextCommandIndex + if (cmdIdx > 0) { + commands[cmdIdx - 1].nextCommandIndex = cmdIdx; + } + + if (commandCapture.VisualState) { + const vsIdx = visualStates.length; + const prevVsIdx = visualStates.length - 1; + + const vs: IVisualStateItem = { + VisualState: commandCapture.VisualState, + time: commandCapture.endTime, + commandIndex: cmdIdx, + active: false, + previousVisualStateIndex: prevVsIdx, + nextVisualStateIndex: -1, + }; + + // Link previous visual state + visualStates[prevVsIdx].nextVisualStateIndex = vsIdx; + + visualStates.push(vs); + currentVisualStateIdx = vsIdx; + visualStateSet = true; + } else if (!visualStateSet) { + // Before the first draw call, commands point to init visual state. + // Update init visual state to point to the first command. + visualStates[0].commandIndex = cmdIdx; + visualStateSet = true; + } + + commandState.visualStateIndex = currentVisualStateIdx; + commands.push(commandState); + + // Auto-select logic: first command, or command matching currentCommandId + if ((this._currentCommandId === -1 && cmdIdx === 0) || + (this._currentCommandId === commandCapture.id)) { + autoSelectCommandIdx = cmdIdx; + autoSelectVisualStateIdx = currentVisualStateIdx; + } + } + + // Apply auto-selection + if (autoSelectCommandIdx >= 0) { + commands[autoSelectCommandIdx].active = true; + this._currentCommandId = commands[autoSelectCommandIdx].capture.id; + } + if (autoSelectVisualStateIdx >= 0) { + visualStates[autoSelectVisualStateIdx].active = true; + } + + // Build command detail for the selected command + let commandDetailData: JSONRenderItem[] = []; + if (autoSelectCommandIdx >= 0) { + const selectedCmd = commands[autoSelectCommandIdx]; + const vsData = visualStates[selectedCmd.visualStateIndex]; + commandDetailData = buildCommandDetail(selectedCmd.capture, vsData?.VisualState); + } + + this.store.setState((prev) => ({ + ...prev, + captures, + menuStatus: MenuStatus.Commands, + commandCount: capture.commands.length, + commands, + currentCommandIndex: autoSelectCommandIdx, + visualStates, + currentVisualStateIndex: autoSelectVisualStateIdx, + sourceCodeState: null, + sourceCodeError: "", + commandDetailData, + })); + } + + private _openShader(fragment: boolean): void { + const state = this.store.getSnapshot(); + if (state.currentCommandIndex < 0 || state.currentCommandIndex >= state.commands.length) return; + + const commandState = state.commands[state.currentCommandIndex]; + const drawCall = commandState.capture.DrawCall; + if (!drawCall || !drawCall.shaders || drawCall.shaders.length < 2) return; + + const sourceCodeState: ISourceCodeState = { + programId: drawCall.programStatus.program.__SPECTOR_Object_TAG.id, + nameVertex: drawCall.shaders[0].name, + nameFragment: drawCall.shaders[1].name, + sourceVertex: drawCall.shaders[0].source, + sourceFragment: drawCall.shaders[1].source, + translatedSourceVertex: drawCall.shaders[0].translatedSource, + translatedSourceFragment: drawCall.shaders[1].translatedSource, + fragment, + translated: false, + editable: drawCall.programStatus.RECOMPILABLE, + beautify: true, + preprocessed: false, + }; + + // Build command detail for the source code view + const commandDetailData = this._buildCommandDetail( + state.currentCommandIndex, + state.commands, + state.visualStates, + ); + + this.store.setState((prev) => ({ + ...prev, + menuStatus: MenuStatus.SourceCode, + sourceCodeState, + sourceCodeError: "", + commandDetailData, + })); + } + + private _buildCommandDetail( + commandIndex: number, + commands: ICommandListItemState[], + visualStates: IVisualStateItem[], + ): JSONRenderItem[] { + if (commandIndex < 0 || commandIndex >= commands.length) return []; + const cmd = commands[commandIndex]; + const vs = visualStates[cmd.visualStateIndex]; + return buildCommandDetail(cmd.capture, vs?.VisualState); + } + + // ─── Private: Keyboard navigation ──────────────────────────────────── + + private _selectPreviousCommand(): void { + const state = this.store.getSnapshot(); + if (state.currentCommandIndex < 0) return; + const cmd = state.commands[state.currentCommandIndex]; + if (cmd.previousCommandIndex < 0) return; + this.selectCommand(cmd.previousCommandIndex); + } + + private _selectNextCommand(): void { + const state = this.store.getSnapshot(); + if (state.currentCommandIndex < 0) return; + const cmd = state.commands[state.currentCommandIndex]; + if (cmd.nextCommandIndex < 0) return; + this.selectCommand(cmd.nextCommandIndex); + } + + private _selectPreviousVisualState(): void { + const state = this.store.getSnapshot(); + if (state.currentVisualStateIndex < 0) return; + const vs = state.visualStates[state.currentVisualStateIndex]; + if (vs.previousVisualStateIndex < 0) return; + this.selectVisualState(vs.previousVisualStateIndex); + } + + private _selectNextVisualState(): void { + const state = this.store.getSnapshot(); + if (state.currentVisualStateIndex < 0) return; + const vs = state.visualStates[state.currentVisualStateIndex]; + if (vs.nextVisualStateIndex < 0) return; + this.selectVisualState(vs.nextVisualStateIndex); + } + + // ─── Private: Search ───────────────────────────────────────────────── + + private _search(searchText: string): void { + const state = this.store.getSnapshot(); + switch (state.menuStatus) { + case MenuStatus.Captures: + case MenuStatus.Commands: + this._displayCurrentCapture(); + break; + case MenuStatus.EndState: + this._displayEndState(); + break; + case MenuStatus.Information: + this._displayInformation(); + break; + case MenuStatus.InitState: + this._displayInitState(); + break; + } + // The original resets searchText after rebuilding. Match that behavior. + // Actually, reading the original more carefully: it sets this.searchText = text, + // then rebuilds (which uses this.searchText), then sets this.searchText = "". + // This means the search only applies during rebuild. We replicate by + // NOT resetting searchText — in React the state stays and the user can + // clear it themselves. The original behavior was odd (reset after use). + // We'll match the original: reset after use. + this.store.setState((prev) => ({ ...prev, searchText: "" })); + } +} diff --git a/src/embeddedFrontend/react/ResultView/ResultViewContext.ts b/src/embeddedFrontend/react/ResultView/ResultViewContext.ts new file mode 100644 index 00000000..73e92910 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/ResultViewContext.ts @@ -0,0 +1,12 @@ +import { createContext, useContext } from "react"; +import type { ReactResultView } from "./ReactResultView"; + +export const ResultViewContext = createContext(null); + +export function useResultView(): ReactResultView { + const ctx = useContext(ResultViewContext); + if (!ctx) { + throw new Error("ResultViewContext not provided — ResultViewRoot must be rendered inside ResultViewContext.Provider"); + } + return ctx; +} diff --git a/src/embeddedFrontend/react/ResultView/ResultViewRoot.tsx b/src/embeddedFrontend/react/ResultView/ResultViewRoot.tsx new file mode 100644 index 00000000..9416fd8a --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/ResultViewRoot.tsx @@ -0,0 +1,120 @@ +import React from "react"; +import { useStore } from "../shared/ExternalStore"; +import { useResultView } from "./ResultViewContext"; +import { ResultViewMenu } from "./Menu/ResultViewMenu"; +import { ResultViewContent } from "./Content/ResultViewContent"; +import { CaptureList } from "./CaptureList/CaptureList"; +import { VisualStateList } from "./VisualStateList/VisualStateList"; +import { VisualStateListItem } from "./VisualStateList/VisualStateListItem"; +import { CommandList } from "./CommandList/CommandList"; +import { CommandListItem } from "./CommandList/CommandListItem"; +import { CommandDetail } from "./CommandList/CommandDetail"; +import { InformationColumn } from "./Information/InformationColumn"; +import { JSONContent } from "./JSON/JSONContent"; +import { SourceCode } from "./SourceCode/SourceCode"; +import { JSONRenderTree } from "./JSON/JSONRenderTree"; +import { MenuStatus, JSONRenderItem } from "../shared/types"; + +/** + * Root component for the React ResultView. + * Original: src/embeddedFrontend/resultView/resultViewComponent.ts + * + * Renders the correct content panel for each tab/menuStatus, matching + * the exact DOM structure the SCSS expects. + */ +export function ResultViewRoot() { + const adapter = useResultView(); + const state = useStore(adapter.store); + + return ( +
            + + + {state.menuStatus === MenuStatus.Captures && ( + { adapter.selectCapture(i); adapter.handleMenuStatusChange(MenuStatus.Commands); }} + onSaveRequested={adapter.handleSaveRequested} + onCaptureLoaded={adapter.handleCaptureLoaded} + /> + )} + + {state.menuStatus === MenuStatus.Commands && ( + <> + + {state.visualStates.map((vs, i) => ( + adapter.handleVisualStateSelected(i)} + /> + ))} + + + {state.commands.map((cmd, i) => ( + adapter.handleCommandSelected(i)} + onVertexSelected={() => adapter.handleVertexSelected(i)} + onFragmentSelected={() => adapter.handleFragmentSelected(i)} + /> + ))} + + + + + + )} + + {state.menuStatus === MenuStatus.Information && ( + <> + + + + + + + + + + + + )} + + {state.menuStatus === MenuStatus.InitState && ( + + + + )} + + {state.menuStatus === MenuStatus.EndState && ( + + + + )} + + {state.menuStatus === MenuStatus.SourceCode && state.sourceCodeState && ( + <> + adapter.handleSourceCodeTabChange(false, false)} + onFragmentSourceClicked={() => adapter.handleSourceCodeTabChange(true, false)} + onTranslatedVertexSourceClicked={() => adapter.handleSourceCodeTabChange(false, true)} + onTranslatedFragmentSourceClicked={() => adapter.handleSourceCodeTabChange(true, true)} + onCloseClicked={adapter.handleSourceCodeClose} + onSourceCodeChanged={adapter.handleSourceCodeChanged} + onBeautifyChanged={adapter.handleBeautifyChanged} + onPreprocessChanged={adapter.handlePreprocessChanged} + /> + + + + + )} + +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/SourceCode/SourceCode.tsx b/src/embeddedFrontend/react/ResultView/SourceCode/SourceCode.tsx new file mode 100644 index 00000000..1b0c6696 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/SourceCode/SourceCode.tsx @@ -0,0 +1,462 @@ +import React, { useCallback, useEffect, useRef } from "react"; +import { ISourceCodeState, ISourceCodeChangeEvent } from "../../shared/types"; +import { Logger } from "../../../../shared/utils/logger"; + +// tslint:disable-next-line:no-submodule-imports +import preprocess from "@shaderfrog/glsl-parser/preprocessor"; + +/** + * Ace editor wrapper for GLSL shader source code. + * Original: src/embeddedFrontend/resultView/sourceCode/sourceCodeComponent.ts + * + * DOM: + *
            + *
            + * + *
            + *
            shader text
            + *
            + *

            + * + * + *

            + *
            + *
            + * + * Uses Ace editor (global `ace` object). Editor instance is held in a ref + * to avoid re-mounting on every render. Editor cleanup via useEffect return. + */ + +// Declare Ace types. +interface IAceEditorSession { + setMode(mode: string): void; + on(eventName: string, callback: (e: any) => void): void; + setAnnotations(annotations: any[]): void; +} +interface IAceEditor { + getValue(): string; + setValue(val: string, cursorPos?: number): void; + setTheme(theme: string): void; + getSession(): IAceEditorSession; + setReadOnly(readonly: boolean): void; + setShowPrintMargin(show: boolean): void; + destroy(): void; +} +type AceStatic = { + edit(element: Element): IAceEditor; +}; +declare const ace: AceStatic; + +const semicolonReplacementKey = "[[[semicolonReplacementKey]]]"; +const semicolonReplacementKeyRegex = /\[\[\[semicolonReplacementKey\]\]\]/g; +const openCurlyReplacementKey = "[[[openCurlyReplacementKey]]]"; +const openCurlyReplacementKeyRegex = /\[\[\[openCurlyReplacementKey\]\]\]/g; +const closeCurlyReplacementKey = "[[[closeCurlyReplacementKey]]]"; +const closeCurlyReplacementKeyRegex = /\[\[\[closeCurlyReplacementKey\]\]\]/g; + +export interface SourceCodeProps { + state: ISourceCodeState; + errorMessage?: string; + onVertexSourceClicked: () => void; + onFragmentSourceClicked: () => void; + onTranslatedVertexSourceClicked?: () => void; + onTranslatedFragmentSourceClicked?: () => void; + onCloseClicked: () => void; + onSourceCodeChanged: (event: ISourceCodeChangeEvent) => void; + onBeautifyChanged: (beautify: boolean) => void; + onPreprocessChanged: (preprocessed: boolean) => void; +} + +export function SourceCode({ + state, + errorMessage, + onVertexSourceClicked, + onFragmentSourceClicked, + onTranslatedVertexSourceClicked, + onTranslatedFragmentSourceClicked, + onCloseClicked, + onSourceCodeChanged, + onBeautifyChanged, + onPreprocessChanged, +}: SourceCodeProps) { + const editorContainerRef = useRef(null); + const editorRef = useRef(null); + const timeoutRef = useRef(-1); + + // Compute the displayed shader text. + let originalShader: string; + let preprocessed = state.preprocessed; + + if (state.translated) { + originalShader = state.fragment ? state.translatedSourceFragment : state.translatedSourceVertex; + preprocessed = false; + } else { + originalShader = (state.fragment ? state.sourceFragment : state.sourceVertex) ?? ""; + } + + let displayedShader = originalShader; + if (preprocessed) { + try { + displayedShader = preprocess(displayedShader, { + preserveComments: false, + stopOnError: true, + }); + } catch (e) { + Logger.error("shader preprocess failed", e); + } + } + + if (state.beautify) { + displayedShader = indentIfdef(beautify(displayedShader)); + } + + // Initialize Ace editor once, update content on state changes. + useEffect(() => { + if (!editorContainerRef.current) return undefined; + + if (!editorRef.current) { + const editor = ace.edit(editorContainerRef.current); + editor.setTheme("ace/theme/monokai"); + editor.getSession().setMode("ace/mode/glsl"); + editor.setShowPrintMargin(false); + editorRef.current = editor; + } + + const editor = editorRef.current; + editor.setReadOnly(!state.editable || state.translated); + + // Only update value if it differs (avoid cursor-reset on no-op). + if (editor.getValue() !== displayedShader) { + editor.setValue(displayedShader, -1); + } + + // Change handler with 1500ms debounce. + const changeHandler = () => { + if (timeoutRef.current !== -1) { + clearTimeout(timeoutRef.current); + } + timeoutRef.current = setTimeout(() => { + const currentValue = editor.getValue(); + const event: ISourceCodeChangeEvent = { + sourceVertex: state.fragment ? state.sourceVertex : currentValue, + sourceFragment: state.fragment ? currentValue : state.sourceFragment, + translatedSourceVertex: state.translatedSourceVertex, + translatedSourceFragment: state.translatedSourceFragment, + programId: state.programId, + }; + onSourceCodeChanged(event); + }, 1500) as any; + }; + + editor.getSession().on("change", changeHandler); + + return () => { + if (timeoutRef.current !== -1) { + clearTimeout(timeoutRef.current); + timeoutRef.current = -1; + } + }; + }, [displayedShader, state.editable, state.translated, state.fragment, + state.sourceVertex, state.sourceFragment, state.translatedSourceVertex, + state.translatedSourceFragment, state.programId, onSourceCodeChanged]); + + // Error annotations. + useEffect(() => { + if (!editorRef.current) return; + + const msg = errorMessage || ""; + const annotations: any[] = []; + + if (msg) { + const errorChecker = /^.*ERROR:\W([0-9]+):([0-9]+):(.*)$/gm; + let errors = errorChecker.exec(msg); + while (errors != null) { + annotations.push({ + row: +errors[2] - 1, + column: errors[1], + text: errors[3] || "Error", + type: "error", + }); + errors = errorChecker.exec(msg); + } + } + + editorRef.current.getSession().setAnnotations(annotations); + }, [errorMessage]); + + // Cleanup editor on unmount. + useEffect(() => { + return () => { + if (editorRef.current) { + editorRef.current.destroy(); + editorRef.current = null; + } + }; + }, []); + + const handleVertexClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + onVertexSourceClicked(); + }, [onVertexSourceClicked]); + + const handleFragmentClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + onFragmentSourceClicked(); + }, [onFragmentSourceClicked]); + + const handleTranslatedVertexClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + onTranslatedVertexSourceClicked?.(); + }, [onTranslatedVertexSourceClicked]); + + const handleTranslatedFragmentClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + onTranslatedFragmentSourceClicked?.(); + }, [onTranslatedFragmentSourceClicked]); + + const handleCloseClick = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + onCloseClicked(); + }, [onCloseClicked]); + + const handleBeautifyChange = useCallback((e: React.ChangeEvent) => { + onBeautifyChanged(e.target.checked); + }, [onBeautifyChanged]); + + const handlePreprocessChange = useCallback((e: React.ChangeEvent) => { + onPreprocessChanged(e.target.checked); + }, [onPreprocessChanged]); + + return ( +
            +
            + +
            +
            + {displayedShader} +
            +
            +

            + + +

            +
            +
            + ); +} + +// ─── Beautify utilities (ported from original SourceCodeComponent) ──────────── + +function adaptComments(str: string): string { + let singleLineComment = false; + let multiLineComment = false; + + for (let index = 0; index < str.length; index++) { + const char = str[index]; + if (char === "/") { + if (str[index - 1] === "*") { + multiLineComment = false; + } else if (str[index + 1] === "*") { + if (!singleLineComment) { + multiLineComment = true; + index++; + } + } else if (str[index + 1] === "/") { + if (!multiLineComment) { + singleLineComment = true; + index++; + } + } + } else if (char === "\n") { + singleLineComment = false; + } else if (char === ";") { + if (singleLineComment || multiLineComment) { + str = str.substr(0, index) + semicolonReplacementKey + str.substr(index + 1); + } + } else if (char === "{") { + if (singleLineComment || multiLineComment) { + str = str.substr(0, index) + openCurlyReplacementKey + str.substr(index + 1); + } + } else if (char === "}") { + if (singleLineComment || multiLineComment) { + str = str.substr(0, index) + closeCurlyReplacementKey + str.substr(index + 1); + } + } + } + + return str; +} + +function getBracket(str: string, searchFrom = -1): { firstIteration: number; lastIteration: number } { + const fb = str.indexOf("{", searchFrom); + const arr = str.substr(fb + 1).split(""); + let counter = 1; + let currentPosInString = fb; + let lastBracketIndex = 0; + for (const char of arr) { + currentPosInString++; + if (char === "{") counter++; + if (char === "}") counter--; + if (counter === 0) { + lastBracketIndex = currentPosInString; + break; + } + } + + // More open than close. + if (fb > -1 && lastBracketIndex === 0) { + return getBracket(str, fb + 1); + } + + return { firstIteration: fb, lastIteration: lastBracketIndex }; +} + +function beautify(glsl: string, level: number = 0): string { + let spaces = ""; + for (let i = 0; i < level; i++) { + spaces += " "; + } + + const untrimmedGlsl = glsl; + glsl = glsl.trim(); + + if (glsl[0] === "#") { + const preprocessorStart = untrimmedGlsl.indexOf("#"); + const newline = untrimmedGlsl.indexOf("\n"); + let preservedNewline = ""; + if (newline !== -1) { + if (newline < preprocessorStart) { + preservedNewline = spaces + "\n"; + } + } + + const firstLineEnd = glsl.indexOf("\n"); + const preprocessorLineEnd = firstLineEnd !== -1 ? firstLineEnd : glsl.length; + const preprocessorLine = glsl.substr(0, preprocessorLineEnd); + const rest = glsl.substr(preprocessorLineEnd + 1); + + return preservedNewline + spaces + preprocessorLine + "\n" + beautify(rest, level); + } + + glsl = adaptComments(glsl); + const brackets = getBracket(glsl); + const firstBracket = brackets.firstIteration; + const lastBracket = brackets.lastIteration; + + let result: string; + if (firstBracket === -1) { + glsl = spaces + glsl; + glsl = glsl.replace(/;(?![^\(]*\))\s*(\/\/.*)?/g, (x) => x.trim() + "\n"); + glsl = glsl.replace(/\s*([*+-/=><\s]*=)\s*/g, (x) => " " + x.trim() + " "); + glsl = glsl.replace(/\s*(,)\s*/g, (x) => x.trim() + " "); + glsl = glsl.replace(/\n[ \t]+/g, "\n"); + glsl = glsl.replace(/\n/g, "\n" + spaces); + glsl = glsl.replace(/\s+$/g, ""); + glsl = glsl.replace(/\n+$/g, ""); + result = glsl; + } else { + const left = glsl.substr(0, firstBracket).trim(); + const right = glsl.substr(lastBracket + 1, glsl.length).trim(); + const inside = glsl.substr(firstBracket + 1, lastBracket - firstBracket - 1).trim(); + const prettyLeft = left === "" ? spaces + "{" : beautify(left, level) + " {\n"; + const prettyInside = beautify(inside, level + 1); + const prettyRight = beautify(right, level); + result = prettyLeft + prettyInside + "\n" + spaces + "}\n" + prettyRight; + result = result.replace(/\s*\n+\s*;/g, ";"); + } + + result = result.replace(semicolonReplacementKeyRegex, ";"); + result = result.replace(openCurlyReplacementKeyRegex, "{"); + result = result.replace(closeCurlyReplacementKeyRegex, "}"); + + return result; +} + +function indentIfdef(str: string): string { + let level = 0; + const arr2 = str.split("\n"); + + for (let index = 0; index < arr2.length; index++) { + const line = arr2[index]; + if (line.indexOf("#endif") !== -1) level--; + if (line.indexOf("#else") !== -1) level--; + let spaces = ""; + for (let i = 0; i < level; i++) { + spaces += " "; + } + arr2[index] = spaces + line; + if (line.indexOf("#if") !== -1 || line.indexOf("#else") !== -1) { + level++; + } + } + return arr2.join("\n"); +} diff --git a/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateList.tsx b/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateList.tsx new file mode 100644 index 00000000..4b5e26f6 --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateList.tsx @@ -0,0 +1,22 @@ +import React from "react"; + +/** + * Container for visual state list items. + * Original: src/embeddedFrontend/resultView/visualStateList/visualStateListComponent.ts + * + * DOM: + *
            + *
              ...
            + *
            + */ +export interface VisualStateListProps { + children?: React.ReactNode; +} + +export function VisualStateList({ children }: VisualStateListProps) { + return ( +
            +
              {children}
            +
            + ); +} diff --git a/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateListItem.tsx b/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateListItem.tsx new file mode 100644 index 00000000..9f3b55be --- /dev/null +++ b/src/embeddedFrontend/react/ResultView/VisualStateList/VisualStateListItem.tsx @@ -0,0 +1,70 @@ +import React, { useCallback, useEffect, useRef } from "react"; +import { IVisualStateItem } from "../../shared/types"; + +/** + * Single visual state thumbnail item. + * Original: src/embeddedFrontend/resultView/visualStateList/visualStateListItemComponent.ts + * + * DOM: + *
          • + * per attachment (skips those without src) + * attachmentName (if multiple attachments) + * Layer: N (if textureLayer) + * cubemapFace (if textureCubeMapFace) + * -- OR (no attachments) -- + * FrameBufferStatus + * -- always -- + * Frame buffer: ID or Canvas frame buffer + *
          • + */ +export interface VisualStateListItemProps { + item: IVisualStateItem; + onVisualStateSelected: () => void; +} + +export function VisualStateListItem({ item, onVisualStateSelected }: VisualStateListItemProps) { + const ref = useRef(null); + + useEffect(() => { + if (item.active && ref.current) { + setTimeout(() => ref.current?.scrollIntoView({ block: "nearest" }), 1); + } + }, [item.active]); + + const handleClick = useCallback(() => { + onVisualStateSelected(); + }, [onVisualStateSelected]); + + const vs = item.VisualState; + + return ( +
          • + {vs.Attachments ? ( + vs.Attachments.map((imageState: any, i: number) => { + if (!imageState.src) return null; + return ( + + + {vs.Attachments.length > 1 && ( + {imageState.attachmentName} + )} + {!!imageState.textureLayer && ( + {"Layer: " + imageState.textureLayer} + )} + {!!imageState.textureCubeMapFace && ( + {imageState.textureCubeMapFace} + )} + + ); + }) + ) : ( + {vs.FrameBufferStatus} + )} + + {vs.FrameBuffer + ? "Frame buffer: " + vs.FrameBuffer.__SPECTOR_Object_TAG.id + : "Canvas frame buffer"} + +
          • + ); +} diff --git a/src/embeddedFrontend/react/jsx-augments.d.ts b/src/embeddedFrontend/react/jsx-augments.d.ts new file mode 100644 index 00000000..e258b164 --- /dev/null +++ b/src/embeddedFrontend/react/jsx-augments.d.ts @@ -0,0 +1,17 @@ +/** + * Augment React's JSX intrinsic elements to allow the `commandName` attribute + * on any HTML element. The SCSS styles in captureMenu.scss use + * [commandName=onCaptureRequested] etc. as selectors, so React components must + * output this attribute on the DOM. + * + * React passes unknown attributes through to the DOM on lowercase elements, + * but TypeScript needs this declaration to accept them in JSX. + */ +import "react"; + +declare module "react" { + interface HTMLAttributes { + commandName?: string; + commandEventBinding?: string; + } +} diff --git a/src/embeddedFrontend/react/shared/ExternalStore.ts b/src/embeddedFrontend/react/shared/ExternalStore.ts new file mode 100644 index 00000000..24d51dae --- /dev/null +++ b/src/embeddedFrontend/react/shared/ExternalStore.ts @@ -0,0 +1,59 @@ +import { useSyncExternalStore } from "react"; + +/** + * Lightweight external store for bridging imperative API calls to React state. + * Adapter classes call setState()/setSnapshot(); React components subscribe via useStore(). + * + * Design notes: + * - getSnapshot and subscribe are arrow functions (bound at construction) because + * React's useSyncExternalStore calls them without `this` context. + * - setState takes an updater function to enable safe derived-state transitions. + * - _listeners is a Set for O(1) add/delete — no linear scan on unsubscribe. + * - No defensive copy in getSnapshot: callers must produce new references in setState + * to trigger re-renders (standard React immutability contract). + */ +export class ExternalStore { + private _state: T; + private readonly _listeners: Set<() => void> = new Set(); + + constructor(initialState: T) { + this._state = initialState; + } + + /** Called by React internally via useSyncExternalStore. */ + getSnapshot = (): T => { + return this._state; + }; + + /** Subscribe to state changes. Returns unsubscribe function. */ + subscribe = (listener: () => void): (() => void) => { + this._listeners.add(listener); + return () => { this._listeners.delete(listener); }; + }; + + /** Update state via updater function. Must return a new reference to trigger re-render. */ + setState(updater: (prev: T) => T): void { + this._state = updater(this._state); + this._emitChange(); + } + + /** Replace state entirely. */ + setSnapshot(state: T): void { + this._state = state; + this._emitChange(); + } + + private _emitChange(): void { + for (const listener of this._listeners) { + listener(); + } + } +} + +/** + * React hook to subscribe to an ExternalStore. + * Components using this hook will re-render when setState/setSnapshot is called. + */ +export function useStore(store: ExternalStore): T { + return useSyncExternalStore(store.subscribe, store.getSnapshot); +} diff --git a/src/embeddedFrontend/resultView/commandList/mdnCommandLinkHelper.ts b/src/embeddedFrontend/react/shared/mdnCommandLinkHelper.ts similarity index 100% rename from src/embeddedFrontend/resultView/commandList/mdnCommandLinkHelper.ts rename to src/embeddedFrontend/react/shared/mdnCommandLinkHelper.ts diff --git a/src/embeddedFrontend/react/shared/types.ts b/src/embeddedFrontend/react/shared/types.ts new file mode 100644 index 00000000..cdec8ebb --- /dev/null +++ b/src/embeddedFrontend/react/shared/types.ts @@ -0,0 +1,114 @@ +/** + * Shared types for the React migration layer. + * These are parallel definitions used by adapter classes and React components. + * Domain types (ICapture, ICommandCapture, etc.) are imported from their original locations. + */ + +import { ICapture } from "../../../shared/capture/capture"; +import { ICommandCapture } from "../../../shared/capture/commandCapture"; +import { LogLevel } from "../../../shared/utils/logger"; + +// ─── CaptureMenu types ────────────────────────────────────────────────────── + +export interface ICanvasInformation { + id: string; + width: number; + height: number; + ref: any; +} + +export interface ICaptureMenuOptions { + readonly rootPlaceHolder?: Element; + readonly canvas?: HTMLCanvasElement; + readonly hideLog?: boolean; +} + +export interface CaptureMenuState { + visible: boolean; + logText: string; + logLevel: LogLevel; + logVisible: boolean; + canvases: ICanvasInformation[]; + selectedCanvas: ICanvasInformation | null; + showCanvasList: boolean; + isPlaying: boolean; + fps: number; +} + +// ─── ResultView types ──────────────────────────────────────────────────────── + +export const enum MenuStatus { + Captures = 0, + Information = 10, + InitState = 20, + EndState = 30, + Commands = 40, + SourceCode = 50, +} + +export interface ISourceCodeChangeEvent { + sourceVertex: string; + sourceFragment: string; + translatedSourceVertex: string; + translatedSourceFragment: string; + programId: number; +} + +export interface ICommandListItemState { + capture: ICommandCapture; + active: boolean; + visualStateIndex: number; + previousCommandIndex: number; + nextCommandIndex: number; +} + +export interface IVisualStateItem { + time: number; + commandIndex: number; + VisualState: any; + active: boolean; + previousVisualStateIndex: number; + nextVisualStateIndex: number; +} + +export interface ISourceCodeState extends ISourceCodeChangeEvent { + nameVertex: string; + nameFragment: string; + fragment: boolean; + translated: boolean; + editable: boolean; + beautify: boolean; + preprocessed: boolean; +} + +// ─── JSON render tree types ────────────────────────────────────────────────── + +export type JSONRenderItem = + | { type: "group"; title: string; children: JSONRenderItem[] } + | { type: "item"; key: string; value: string } + | { type: "image"; key: string; value: string; pixelated: boolean } + | { type: "help"; key: string; value: string; help: string } + | { type: "visualState"; visualState: any }; + +// ─── ResultView state ──────────────────────────────────────────────────────── + +export interface ResultViewState { + visible: boolean; + menuStatus: MenuStatus; + searchText: string; + captures: Array<{ capture: ICapture; active: boolean }>; + currentCapture: ICapture | null; + commands: ICommandListItemState[]; + currentCommandIndex: number; + visualStates: IVisualStateItem[]; + currentVisualStateIndex: number; + sourceCodeState: ISourceCodeState | null; + sourceCodeError: string; + commandCount: number; + // Content data for non-command tabs + informationLeft: JSONRenderItem[]; + informationRight: JSONRenderItem[]; + initStateData: JSONRenderItem[]; + endStateData: JSONRenderItem[]; + commandDetailData: JSONRenderItem[]; +} diff --git a/src/embeddedFrontend/resultView/JSON/jsonContentComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonContentComponent.ts deleted file mode 100644 index 33209426..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonContentComponent.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class JSONContentComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const htmlString = this.htmlTemplate` -
            -
            `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/JSON/jsonGroupComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonGroupComponent.ts deleted file mode 100644 index 35d3dac4..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonGroupComponent.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class JSONGroupComponent extends BaseComponent { - public render(state: string, stateId: number): Element { - const htmlString = this.htmlTemplate` -
            -
            ${state ? state.replace(/([A-Z])/g, " $1").trim() : ""}
            -
              -
              `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/JSON/jsonHelpItemComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonHelpItemComponent.ts deleted file mode 100644 index 4a053aa7..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonHelpItemComponent.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export interface IJSONHelpItemState { - key: string; - value: string; - help: string; -} - -export class JSONHelpItemComponent extends BaseComponent { - public render(state: IJSONHelpItemState, stateId: number): Element { - const htmlString = this.htmlTemplate` -
            • ${state.key}: - ${state.value} (Open help page) - -
            • `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/JSON/jsonImageItemComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonImageItemComponent.ts deleted file mode 100644 index 09b5b7c0..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonImageItemComponent.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; -import { IJSONItemState } from "./jsonItemComponent"; - -export interface IJSONImageState extends IJSONItemState { - pixelated: boolean; -} - -export class JSONImageItemComponent extends BaseComponent { - public render(state: IJSONImageState, stateId: number): Element { - const htmlString = this.htmlTemplate` -
            • ${state.key}
            • `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/JSON/jsonItemComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonItemComponent.ts deleted file mode 100644 index e7026158..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonItemComponent.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export interface IJSONItemState { - key: string; - value: string; -} - -export class JSONItemComponent extends BaseComponent { - public render(state: IJSONItemState, stateId: number): Element { - const htmlString = this.htmlTemplate` -
            • ${state.key}: ${state.value}
            • `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/JSON/jsonVisualStateItemComponent.ts b/src/embeddedFrontend/resultView/JSON/jsonVisualStateItemComponent.ts deleted file mode 100644 index 02c004e7..00000000 --- a/src/embeddedFrontend/resultView/JSON/jsonVisualStateItemComponent.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class JSONVisualStateItemComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const divHolder = document.createElement("div"); - divHolder.className = "jsonVisualStateItemComponent"; - if (state.Attachments) { - for (const imageState of state.Attachments) { - if (!imageState.src) { - continue; - } - - const img = document.createElement("img"); - img.src = encodeURI(imageState.src); - divHolder.appendChild(img); - - if (state.Attachments.length > 1) { - const attachment = document.createElement("span"); - attachment.innerText = imageState.attachmentName; - divHolder.appendChild(attachment); - } - } - } - else { - const status = document.createElement("span"); - status.innerText = state.FrameBufferStatus; - divHolder.appendChild(status); - } - const fbo = document.createElement("span"); - fbo.innerText = state.FrameBuffer ? state.FrameBuffer.__SPECTOR_Object_TAG.displayText : "Canvas frame buffer"; - divHolder.appendChild(fbo); - - return divHolder; - } -} diff --git a/src/embeddedFrontend/resultView/captureList/captureListComponent.ts b/src/embeddedFrontend/resultView/captureList/captureListComponent.ts deleted file mode 100644 index 001427a5..00000000 --- a/src/embeddedFrontend/resultView/captureList/captureListComponent.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Observable } from "../../../shared/utils/observable"; -import { ICapture } from "../../../shared/capture/capture"; -import { BaseComponent } from "../../mvx/baseComponent"; -import { Logger } from "../../../shared/utils/logger"; - -export class CaptureListComponent extends BaseComponent { - public onCaptureLoaded: Observable; - - constructor() { - super(); - this.onCaptureLoaded = new Observable(); - } - - public render(state: boolean, stateId: number): Element { - const htmlString = this.htmlTemplate` -
              -
              - Drag files here to open a previously saved capture. -
              -
                -
                `; - - const element = this.renderElementFromTemplate(htmlString, state, stateId); - - const openCaptureFileElement = element.querySelector(".openCaptureFile"); - openCaptureFileElement.addEventListener("dragenter", (e: DragEvent) => { this.drag(e); return false; }, false); - openCaptureFileElement.addEventListener("dragover", (e: DragEvent) => { this.drag(e); return false; }, false); - openCaptureFileElement.addEventListener("drop", (e: DragEvent) => { this.drop(e); }, false); - - return element; - } - - private drag(e: DragEvent): void { - e.stopPropagation(); - e.preventDefault(); - } - - private drop(eventDrop: DragEvent): void { - eventDrop.stopPropagation(); - eventDrop.preventDefault(); - - this.loadFiles(eventDrop); - } - - private loadFiles(event: DragEvent): void { - let filesToLoad: any = null; - - // Handling data transfer via drag'n'drop - if (event && event.dataTransfer && event.dataTransfer.files) { - filesToLoad = event.dataTransfer.files; - } - - // Handling files from input files - if (event && event.target && (event as any).target.files) { - filesToLoad = (event as any).target.files; - } - - // Load the files. - if (filesToLoad && filesToLoad.length > 0) { - for (let i = 0; i < filesToLoad.length; i++) { - const name = filesToLoad[i].name.toLowerCase(); - const extension = name.split(".").pop(); - const type = filesToLoad[i].type; - - if (extension === "json") { - const fileToLoad = filesToLoad[i]; - - const reader = new FileReader(); - reader.onerror = (e) => { - Logger.error("Error while reading file: " + fileToLoad.name + e); - }; - reader.onload = (e) => { - // target doesn't have result from ts 1.3 - try { - const capture = JSON.parse((e as any).target["result"]); - this.onCaptureLoaded.trigger(capture); - } - catch (exception) { - Logger.error("Error while reading file: " + fileToLoad.name + exception); - } - }; - reader.readAsText(fileToLoad); - } - } - } - } -} diff --git a/src/embeddedFrontend/resultView/captureList/captureListItemComponent.ts b/src/embeddedFrontend/resultView/captureList/captureListItemComponent.ts deleted file mode 100644 index 85570d19..00000000 --- a/src/embeddedFrontend/resultView/captureList/captureListItemComponent.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { ICapture } from "../../../shared/capture/capture"; -import { BaseComponent, IStateEvent } from "../../mvx/baseComponent"; - -export interface ICaptureListItemState { - capture: ICapture; - active: boolean; -} - -export class CaptureListItemComponent extends BaseComponent { - public onCaptureSelected: IStateEvent; - public onSaveRequested: IStateEvent; - - constructor() { - super(); - this.onCaptureSelected = this.createEvent("onCaptureSelected"); - this.onSaveRequested = this.createEvent("onSaveRequested"); - } - - public render(state: ICaptureListItemState, stateId: number): Element { - const liHolder = document.createElement("li"); - if (state.active) { - liHolder.className = "active"; - } - - if (state.capture.endState.VisualState.Attachments) { - for (const imageState of state.capture.endState.VisualState.Attachments) { - const img = document.createElement("img"); - img.src = encodeURI(imageState.src); - liHolder.appendChild(img); - } - } - else { - const status = document.createElement("span"); - status.innerText = state.capture.endState.VisualState.FrameBufferStatus; - liHolder.appendChild(status); - } - - const text = document.createElement("span"); - text.innerText = new Date(state.capture.startTime).toTimeString().split(" ")[0]; - liHolder.appendChild(text); - - const save = document.createElement("a") as HTMLAnchorElement; - save.href = "#"; - save.className = "captureListItemSave"; - this.mapEventListener(save, "click", "onSaveRequested", state, stateId, false, true); - - text.appendChild(save); - - this.mapEventListener(liHolder, "click", "onCaptureSelected", state, stateId); - - return liHolder; - } -} diff --git a/src/embeddedFrontend/resultView/commandList/commandDetailComponent.ts b/src/embeddedFrontend/resultView/commandList/commandDetailComponent.ts deleted file mode 100644 index 5838b52b..00000000 --- a/src/embeddedFrontend/resultView/commandList/commandDetailComponent.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class CommandDetailComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const htmlString = this.htmlTemplate` -
                -
                `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/commandList/commandListComponent.ts b/src/embeddedFrontend/resultView/commandList/commandListComponent.ts deleted file mode 100644 index 662df7bd..00000000 --- a/src/embeddedFrontend/resultView/commandList/commandListComponent.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class CommandListComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const htmlString = this.htmlTemplate` -
                -
                  -
                  `; - - const element = this.renderElementFromTemplate(htmlString, state, stateId); - return element; - } -} diff --git a/src/embeddedFrontend/resultView/commandList/commandListItemComponent.ts b/src/embeddedFrontend/resultView/commandList/commandListItemComponent.ts deleted file mode 100644 index cce76aae..00000000 --- a/src/embeddedFrontend/resultView/commandList/commandListItemComponent.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { ICommandCapture, CommandCaptureStatus } from "../../../shared/capture/commandCapture"; - -import { BaseComponent, IStateEvent } from "../../mvx/baseComponent"; - -import { ScrollIntoViewHelper } from "../../ux/scrollIntoViewHelper"; - -export interface ICommandListItemState { - capture: ICommandCapture; - active: boolean; - visualStateId: number; - - previousCommandStateId: number; - nextCommandStateId: number; -} - -export class CommandListItemComponent extends BaseComponent { - public onCommandSelected: IStateEvent; - public onVertexSelected: IStateEvent; - public onFragmentSelected: IStateEvent; - - constructor() { - super(); - this.onCommandSelected = this.createEvent("onCommandSelected"); - this.onVertexSelected = this.createEvent("onVertexSelected"); - this.onFragmentSelected = this.createEvent("onFragmentSelected"); - } - - public render(state: ICommandListItemState, stateId: number): Element { - const liHolder = document.createElement("li"); - let status: string = "unknown"; - switch (state.capture.status) { - case CommandCaptureStatus.Deprecated: - status = "deprecated"; - break; - case CommandCaptureStatus.Unused: - status = "unused"; - break; - case CommandCaptureStatus.Disabled: - status = "disabled"; - break; - case CommandCaptureStatus.Redundant: - status = "redundant"; - break; - case CommandCaptureStatus.Valid: - status = "valid"; - break; - } - - if ((state.capture as any).VisualState) { - liHolder.className = " drawCall"; - } - if (state.active) { - liHolder.className = " active"; - - setTimeout(() => { - ScrollIntoViewHelper.scrollIntoView(liHolder); - }, 1); - } - - if (state.capture.marker) { - const markerElement = document.createElement("span"); - markerElement.className = status + " marker important"; - markerElement.innerText = state.capture.marker + " "; - markerElement.style.fontWeight = "1000"; - liHolder.appendChild(markerElement); - } - - if (state.capture.name === "LOG") { - const logElement = document.createElement("span"); - logElement.className = status + " marker important"; - logElement.innerText = state.capture.text + " "; - logElement.style.fontWeight = "1000"; - liHolder.appendChild(logElement); - } - else { - const textElement = document.createElement("span"); - let text = state.capture.text; - text = text.replace(state.capture.name, `${state.capture.name}`); - - textElement.innerHTML = text; - liHolder.appendChild(textElement); - } - - if ((state.capture as any).VisualState && state.capture.name !== "clear") { - try { - const vertexShader = state.capture.DrawCall.shaders[0]; - const fragmentShader = state.capture.DrawCall.shaders[1]; - - const vertexElement = document.createElement("a"); - vertexElement.innerText = vertexShader.name; - vertexElement.href = "#"; - liHolder.appendChild(vertexElement); - this.mapEventListener(vertexElement, "click", "onVertexSelected", state, stateId); - - const fragmentElement = document.createElement("a"); - fragmentElement.innerText = fragmentShader.name; - fragmentElement.href = "#"; - liHolder.appendChild(fragmentElement); - this.mapEventListener(fragmentElement, "click", "onFragmentSelected", state, stateId); - } - catch (e) { - // Do nothing but prevent crashing. - } - } - - this.mapEventListener(liHolder, "click", "onCommandSelected", state, stateId); - - return liHolder; - } -} diff --git a/src/embeddedFrontend/resultView/content/resultViewContentComponent.ts b/src/embeddedFrontend/resultView/content/resultViewContentComponent.ts deleted file mode 100644 index c7710156..00000000 --- a/src/embeddedFrontend/resultView/content/resultViewContentComponent.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class ResultViewContentComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const htmlString = '
                  '; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/information/informationColumnComponent.ts b/src/embeddedFrontend/resultView/information/informationColumnComponent.ts deleted file mode 100644 index 453d366b..00000000 --- a/src/embeddedFrontend/resultView/information/informationColumnComponent.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class InformationColumnComponent extends BaseComponent { - public render(state: boolean, stateId: number): Element { - const htmlString = this.htmlTemplate` -
                  `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/menu/resultViewMenuComponent.ts b/src/embeddedFrontend/resultView/menu/resultViewMenuComponent.ts deleted file mode 100644 index 63f7dc91..00000000 --- a/src/embeddedFrontend/resultView/menu/resultViewMenuComponent.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { BaseComponent, IStateEvent } from "../../mvx/baseComponent"; - -export const enum MenuStatus { - Captures = 0, - Information = 10, - InitState = 20, - EndState = 30, - Commands = 40, -} - -export interface IResultViewMenuState { - status: MenuStatus; - searchText: string; - commandCount: number; -} - -export class ResultViewMenuComponent extends BaseComponent { - public onCapturesClicked: IStateEvent; - public onCommandsClicked: IStateEvent; - public onInformationClicked: IStateEvent; - public onInitStateClicked: IStateEvent; - public onEndStateClicked: IStateEvent; - public onCloseClicked: IStateEvent; - public onSearchTextChanged: IStateEvent; - public onSearchTextCleared: IStateEvent; - - constructor() { - super(); - this.onCapturesClicked = this.createEvent("onCapturesClicked"); - this.onCommandsClicked = this.createEvent("onCommandsClicked"); - this.onInformationClicked = this.createEvent("onInformationClicked"); - this.onInitStateClicked = this.createEvent("onInitStateClicked"); - this.onEndStateClicked = this.createEvent("onEndStateClicked"); - this.onCloseClicked = this.createEvent("onCloseClicked"); - this.onSearchTextChanged = this.createEvent("onSearchTextChanged"); - this.onSearchTextCleared = this.createEvent("onSearchTextCleared"); - } - - public render(state: IResultViewMenuState, stateId: number): Element { - - const htmlString = this.htmlTemplate``; - - const element = this.renderElementFromTemplate(htmlString, state, stateId); - const openButton = element.querySelector(".resultViewMenuOpen"); - const lis = element.querySelectorAll("li:not(.resultViewMenuSmall)"); - openButton.addEventListener("click", (_) => { - if (openButton.getAttribute("open") === "true") { - openButton.setAttribute("open", "false"); - for (let i = 0; i < lis.length; i++) { - (lis[i] as HTMLElement).style.display = "none"; - (lis[i] as HTMLElement).style.visibility = "hidden"; - } - } - else { - openButton.setAttribute("open", "true"); - for (let i = 0; i < lis.length; i++) { - (lis[i] as HTMLElement).style.display = "block"; - (lis[i] as HTMLElement).style.visibility = "visible"; - } - } - }); - return element; - } -} diff --git a/src/embeddedFrontend/resultView/resultView.ts b/src/embeddedFrontend/resultView/resultView.ts deleted file mode 100644 index ffa24740..00000000 --- a/src/embeddedFrontend/resultView/resultView.ts +++ /dev/null @@ -1,821 +0,0 @@ -// Import application Styles. -import "../styles/resultView.scss"; - -import { Observable } from "../../shared/utils/observable"; -import { ICapture } from "../../shared/capture/capture"; -import { MVX } from "../mvx/mvx"; -import { CaptureListComponent } from "./captureList/captureListComponent"; -import { CaptureListItemComponent, ICaptureListItemState } from "./captureList/captureListItemComponent"; -import { VisualStateListComponent } from "./visualStateList/visualStateListComponent"; -import { VisualStateListItemComponent, IVisualStateItem } from "./visualStateList/visualStateListItemComponent"; -import { CommandListComponent } from "./commandList/commandListComponent"; -import { CommandListItemComponent, ICommandListItemState } from "./commandList/commandListItemComponent"; -import { CommandDetailComponent } from "./commandList/commandDetailComponent"; -import { JSONContentComponent } from "./JSON/jsonContentComponent"; -import { JSONGroupComponent } from "./JSON/jsonGroupComponent"; -import { JSONItemComponent } from "./JSON/jsonItemComponent"; -import { JSONImageItemComponent } from "./JSON/jsonImageItemComponent"; -import { JSONHelpItemComponent } from "./JSON/jsonHelpItemComponent"; -import { JSONVisualStateItemComponent } from "./JSON/jsonVisualStateItemComponent"; -import { ResultViewMenuComponent, IResultViewMenuState, MenuStatus } from "./menu/resultViewMenuComponent"; -import { ResultViewContentComponent } from "./content/resultViewContentComponent"; -import { ResultViewComponent } from "./resultViewComponent"; -import { SourceCodeComponent, ISourceCodeState } from "./sourceCode/sourceCodeComponent"; -import { InformationColumnComponent } from "./information/informationColumnComponent"; -import { CommandCaptureStatus } from "../../shared/capture/commandCapture"; -import { MDNCommandLinkHelper } from "./commandList/mdnCommandLinkHelper"; - -export interface ISourceCodeChangeEvent { - sourceVertex: string; - sourceFragment: string; - translatedSourceVertex: string; - translatedSourceFragment: string; - programId: number; -} - -export class ResultView { - public readonly onSourceCodeChanged: Observable; - - private readonly mvx: MVX; - - private readonly captureListComponent: CaptureListComponent; - private readonly captureListItemComponent: CaptureListItemComponent; - private readonly visualStateListComponent: VisualStateListComponent; - private readonly visualStateListItemComponent: VisualStateListItemComponent; - private readonly commandListComponent: CommandListComponent; - private readonly commandListItemComponent: CommandListItemComponent; - private readonly commandDetailComponent: CommandDetailComponent; - private readonly jsonContentComponent: JSONContentComponent; - private readonly jsonGroupComponent: JSONGroupComponent; - private readonly jsonItemComponent: JSONItemComponent; - private readonly jsonImageItemComponent: JSONImageItemComponent; - private readonly jsonHelpItemComponent: JSONHelpItemComponent; - private readonly jsonVisualStateItemComponent: JSONVisualStateItemComponent; - private readonly resultViewMenuComponent: ResultViewMenuComponent; - private readonly resultViewContentComponent: ResultViewContentComponent; - private readonly resultViewComponent: ResultViewComponent; - private readonly sourceCodeComponent: SourceCodeComponent; - private readonly informationColumnComponent: InformationColumnComponent; - - private readonly rootStateId: number; - private readonly menuStateId: number; - private readonly contentStateId: number; - private readonly captureListStateId: number; - - private commandListStateId: number; - private commandDetailStateId: number; - private visualStateListStateId: number; - private currentCaptureStateId: number; - private currentCommandStateId: number; - private currentVisualStateId: number; - private initVisualStateId: number; - private sourceCodeComponentStateId: number; - - private searchText: string; - private currentCommandId: number; - private visible: boolean; - private commandCount: number; - - constructor(private readonly rootPlaceHolder: Element = null) { - this.onSourceCodeChanged = new Observable(); - - this.rootPlaceHolder = this.rootPlaceHolder || document.body; - this.mvx = new MVX(this.rootPlaceHolder); - - this.searchText = ""; - this.currentCommandId = -1; - this.visible = false; - this.commandCount = 0; - - this.commandListStateId = -1; - this.commandDetailStateId = -1; - this.currentCaptureStateId = -1; - this.currentCommandStateId = -1; - this.currentVisualStateId = -1; - this.visualStateListStateId = -1; - this.initVisualStateId = -1; - this.sourceCodeComponentStateId = -1; - - this.captureListComponent = new CaptureListComponent(); - this.captureListItemComponent = new CaptureListItemComponent(); - this.visualStateListComponent = new VisualStateListComponent(); - this.visualStateListItemComponent = new VisualStateListItemComponent(); - this.commandListComponent = new CommandListComponent(); - this.commandListItemComponent = new CommandListItemComponent(); - this.commandDetailComponent = new CommandDetailComponent(); - this.jsonContentComponent = new JSONContentComponent(); - this.jsonGroupComponent = new JSONGroupComponent(); - this.jsonItemComponent = new JSONItemComponent(); - this.jsonImageItemComponent = new JSONImageItemComponent(); - this.jsonHelpItemComponent = new JSONHelpItemComponent(); - this.jsonVisualStateItemComponent = new JSONVisualStateItemComponent(); - this.resultViewMenuComponent = new ResultViewMenuComponent(); - this.resultViewContentComponent = new ResultViewContentComponent(); - this.resultViewComponent = new ResultViewComponent(); - this.sourceCodeComponent = new SourceCodeComponent(); - this.informationColumnComponent = new InformationColumnComponent(); - - this.rootStateId = this.mvx.addRootState(null, this.resultViewComponent); - this.menuStateId = this.mvx.addChildState(this.rootStateId, null, this.resultViewMenuComponent); - this.contentStateId = this.mvx.addChildState(this.rootStateId, null, this.resultViewContentComponent); - this.captureListStateId = this.mvx.addChildState(this.rootStateId, false, this.captureListComponent); - - this.initKeyboardEvents(); - this.initMenuComponent(); - this.captureListComponent.onCaptureLoaded.add((capture) => { - this.addCapture(capture); - }); - this.captureListItemComponent.onCaptureSelected.add((captureEventArgs) => { - this.selectCapture(captureEventArgs.stateId); - }); - this.captureListItemComponent.onSaveRequested.add((captureEventArgs) => { - this.saveCapture(captureEventArgs.state.capture); - }); - this.visualStateListItemComponent.onVisualStateSelected.add((visualStateEventArgs) => { - this.selectVisualState(visualStateEventArgs.stateId); - }); - this.commandListItemComponent.onCommandSelected.add((commandEventArgs) => { - this.selectCommand(commandEventArgs.stateId); - }); - this.commandListItemComponent.onVertexSelected.add((commandEventArgs) => { - this.selectCommand(commandEventArgs.stateId); - this.openShader(false); - }); - this.commandListItemComponent.onFragmentSelected.add((commandEventArgs) => { - this.selectCommand(commandEventArgs.stateId); - this.openShader(true); - }); - this.sourceCodeComponent.onSourceCodeCloseClicked.add(() => { - this.displayCurrentCapture(); - }); - this.sourceCodeComponent.onTranslatedVertexSourceClicked.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.fragment = false; - state.translated = true; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - this.sourceCodeComponent.onTranslatedFragmentSourceClicked.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.fragment = true; - state.translated = true; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - this.sourceCodeComponent.onVertexSourceClicked.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.fragment = false; - state.translated = false; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - this.sourceCodeComponent.onFragmentSourceClicked.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.fragment = true; - state.translated = false; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - this.sourceCodeComponent.onSourceCodeChanged.add((sourceCodeState) => { - this.onSourceCodeChanged.trigger({ - programId: sourceCodeState.state.programId, - sourceFragment: sourceCodeState.state.sourceFragment, - sourceVertex: sourceCodeState.state.sourceVertex, - translatedSourceFragment: sourceCodeState.state.translatedSourceFragment, - translatedSourceVertex: sourceCodeState.state.translatedSourceVertex, - }); - }); - this.sourceCodeComponent.onBeautifyChanged.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.beautify = (sourceCodeState.sender as HTMLInputElement).checked; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - this.sourceCodeComponent.onPreprocessChanged.add((sourceCodeState) => { - const state = this.mvx.getGenericState(this.sourceCodeComponentStateId); - state.preprocessed = (sourceCodeState.sender as HTMLInputElement).checked; - this.mvx.updateState(this.sourceCodeComponentStateId, state); - }); - - - this.updateViewState(); - } - public saveCapture(capture: ICapture): void { - const captureInString = JSON.stringify(capture, null, 4); - const blob = new Blob([captureInString], { type: "octet/stream" }); - const fileName = "capture " + new Date(capture.startTime).toTimeString().split(" ")[0] + ".json"; - - if (navigator.msSaveBlob) { - navigator.msSaveBlob(blob, fileName); - } - else { - const a = document.createElement("a"); - const url = window.URL.createObjectURL(blob); - a.setAttribute("href", url); - a.setAttribute("download", fileName); - a.click(); - } - } - - public selectCapture(captureStateId: number): void { - this.currentCommandId = -1; - this.currentCaptureStateId = captureStateId; - this.displayCurrentCapture(); - } - - public selectCommand(commandStateId: number): void { - this.currentCommandStateId = commandStateId; - this.currentVisualStateId = this.displayCurrentCommand(); - this.displayCurrentVisualState(); - } - - public selectVisualState(visualStateId: number): void { - this.currentVisualStateId = visualStateId; - this.currentCommandStateId = this.displayCurrentVisualState(); - this.displayCurrentCommand(); - } - - public display(): void { - this.visible = true; - this.updateViewState(); - } - - public hide(): void { - this.visible = false; - this.updateViewState(); - } - - public addCapture(capture: ICapture): number { - const captureSateId = this.mvx.insertChildState(this.captureListStateId, { - capture, - active: false, - }, - 0, this.captureListItemComponent); - this.selectCapture(captureSateId); - return captureSateId; - } - - public showSourceCodeError(error: string): void { - this.sourceCodeComponent.showError(error); - } - - private initKeyboardEvents(): void { - this.rootPlaceHolder.addEventListener("keydown", (event) => { - if (this.mvx.getGenericState(this.menuStateId).status !== MenuStatus.Commands) { - return; - } - - if ((event as any).keyCode === 38) { - event.preventDefault(); - event.stopPropagation(); - this.selectPreviousCommand(); - } - else if ((event as any).keyCode === 40) { - event.preventDefault(); - event.stopPropagation(); - this.selectNextCommand(); - } - else if ((event as any).keyCode === 33) { - event.preventDefault(); - event.stopPropagation(); - this.selectPreviousVisualState(); - } - else if ((event as any).keyCode === 34) { - event.preventDefault(); - event.stopPropagation(); - this.selectNextVisualState(); - } - }); - } - - private openShader(fragment: boolean): void { - this.mvx.removeChildrenStates(this.contentStateId); - const commandState = this.mvx.getGenericState(this.currentCommandStateId); - this.sourceCodeComponentStateId = this.mvx.addChildState(this.contentStateId, { - programId: commandState.capture.DrawCall.programStatus.program.__SPECTOR_Object_TAG.id, - nameVertex: commandState.capture.DrawCall.shaders[0].name, - nameFragment: commandState.capture.DrawCall.shaders[1].name, - sourceVertex: commandState.capture.DrawCall.shaders[0].source, - sourceFragment: commandState.capture.DrawCall.shaders[1].source, - translatedSourceVertex: commandState.capture.DrawCall.shaders[0].translatedSource, - translatedSourceFragment: commandState.capture.DrawCall.shaders[1].translatedSource, - fragment, - translated: false, - editable: commandState.capture.DrawCall.programStatus.RECOMPILABLE, - beautify: true - }, this.sourceCodeComponent); - - this.commandDetailStateId = this.mvx.addChildState(this.contentStateId, null, this.commandDetailComponent); - this.displayCurrentCommandDetail(commandState); - } - - private selectPreviousCommand(): void { - const commandState = this.mvx.getGenericState(this.currentCommandStateId); - if (commandState.previousCommandStateId < 0) { - return; - } - - this.selectCommand(commandState.previousCommandStateId); - } - - private selectNextCommand(): void { - const commandState = this.mvx.getGenericState(this.currentCommandStateId); - if (commandState.nextCommandStateId < 0) { - return; - } - - this.selectCommand(commandState.nextCommandStateId); - } - - private selectPreviousVisualState(): void { - const visualState = this.mvx.getGenericState(this.currentVisualStateId); - if (visualState.previousVisualStateId < 0) { - return; - } - - this.selectVisualState(visualState.previousVisualStateId); - } - - private selectNextVisualState(): void { - const visualState = this.mvx.getGenericState(this.currentVisualStateId); - if (visualState.nextVisualStateId < 0) { - return; - } - - this.selectVisualState(visualState.nextVisualStateId); - } - - private initMenuComponent(): void { - this.mvx.updateState(this.menuStateId, { - status: MenuStatus.Captures, - searchText: this.searchText, - commandCount: 0, - }); - this.resultViewMenuComponent.onCloseClicked.add((_) => { - this.hide(); - }); - - this.resultViewMenuComponent.onCapturesClicked.add((_) => { - this.displayCaptures(); - }); - - this.resultViewMenuComponent.onCommandsClicked.add((_) => { - this.displayCurrentCapture(); - }); - this.resultViewMenuComponent.onInformationClicked.add((_) => { - this.displayInformation(); - }); - this.resultViewMenuComponent.onInitStateClicked.add((_) => { - this.displayInitState(); - }); - this.resultViewMenuComponent.onEndStateClicked.add((_) => { - this.displayEndState(); - }); - this.resultViewMenuComponent.onSearchTextChanged.add((menu) => { - this.search((menu.sender as HTMLInputElement).value); - }); - this.resultViewMenuComponent.onSearchTextCleared.add((menu) => { - this.mvx.updateState(this.menuStateId, { - status: menu.state.status, - searchText: "", - commandCount: menu.state.commandCount, - }); - this.search(""); - }); - } - - private onCaptureRelatedAction(menuStatus: MenuStatus): ICapture { - const captureState = this.mvx.getGenericState(this.currentCaptureStateId); - this.commandCount = captureState.capture.commands.length; - this.mvx.removeChildrenStates(this.contentStateId); - this.mvx.updateState(this.menuStateId, { - status: menuStatus, - searchText: this.searchText, - commandCount: this.commandCount, - }); - if (this.mvx.getGenericState(this.captureListStateId)) { - this.mvx.updateState(this.captureListStateId, false); - } - return captureState.capture; - } - - private displayCaptures(): void { - this.mvx.updateState(this.menuStateId, { - status: MenuStatus.Captures, - searchText: this.searchText, - commandCount: this.commandCount, - }); - this.mvx.updateState(this.captureListStateId, true); - } - - private displayInformation(): void { - const capture = this.onCaptureRelatedAction(MenuStatus.Information); - - const leftId = this.mvx.addChildState(this.contentStateId, true, this.informationColumnComponent); - const rightId = this.mvx.addChildState(this.contentStateId, false, this.informationColumnComponent); - - const leftJsonContentStateId = this.mvx.addChildState(leftId, null, this.jsonContentComponent); - this.displayJSONGroup(leftJsonContentStateId, "Canvas", capture.canvas); - this.displayJSONGroup(leftJsonContentStateId, "Context", capture.context); - - const rightJsonContentStateId = this.mvx.addChildState(rightId, null, this.jsonContentComponent); - for (const analysis of capture.analyses) { - if (analysis.analyserName === "Primitives") { - this.displayJSONGroup(rightJsonContentStateId, "Vertices count", analysis); - } - else { - this.displayJSONGroup(rightJsonContentStateId, analysis.analyserName, analysis); - } - } - this.displayJSONGroup(rightJsonContentStateId, "Frame Memory Changes", capture.frameMemory); - this.displayJSONGroup(rightJsonContentStateId, "Total Memory (seconds since application start: bytes)", capture.memory); - } - - private displayJSON(parentGroupId: number, json: any) { - if (json.VisualState) { - this.mvx.addChildState(parentGroupId, json.VisualState, this.jsonVisualStateItemComponent); - } - - for (const key in json) { - if (key === "VisualState" || key === "analyserName" || key === "source" || key === "translatedSource") { - continue; - } - - const value = json[key]; - if (key === "visual") { - for (const target in value) { - if (value.hasOwnProperty(target) && value[target]) { - this.mvx.addChildState(parentGroupId, { - key: target, - value: value[target], - pixelated: json["samplerMagFilter"] === "NEAREST" || json["magFilter"] === "NEAREST", - }, this.jsonImageItemComponent); - } - } - } - else { - const result = this.getJSONAsString(parentGroupId, key, value); - if (result === null || result === undefined) { - continue; - } - else if (this.toFilter(key) && this.toFilter(value)) { - continue; - } - - this.mvx.addChildState(parentGroupId, { - key, - value: result, - }, this.jsonItemComponent); - } - - if (value && value.__SPECTOR_Metadata) { - this.displayJSONGroup(parentGroupId, "Metadata", value.__SPECTOR_Metadata); - } - } - } - - private getJSONAsString(parentGroupId: number, key: string, json: any): string { - if (json === null) { - return "null"; - } - - if (json === undefined) { - return "undefined"; - } - - if (typeof json === "number") { - // Do not consider the isFinite case yet for browser compat. - if (Math.floor(json) === json) { - return json.toFixed(0); - } - - return json.toFixed(4); - } - - if (typeof json === "string") { - return json; - } - - if (typeof json === "boolean") { - return json ? "true" : "false"; - } - - if (json.length === 0) { - return "Empty Array"; - } - - if (json.length) { - const arrayResult: any[] = []; - for (let i = 0; i < json.length; i++) { - const resultItem = this.getJSONAsString(parentGroupId, `${key}(${i.toFixed(0)})`, json[i]); - if (resultItem !== null) { - arrayResult.push(resultItem); - } - } - return arrayResult.length === 0 ? null : arrayResult.join(", "); - } - - if (json.help) { - this.mvx.addChildState(parentGroupId, { - key, - value: json.name, - help: json.help, - }, this.jsonHelpItemComponent); - return null; - } - - if (json.__SPECTOR_Object_TAG) { - return json.__SPECTOR_Object_TAG.displayText; - } - - if (json.displayText) { - return json.displayText; - } - - if (typeof json === "object") { - this.displayJSONGroup(parentGroupId, key, json); - } - - return null; - } - - private displayJSONGroup(parentGroupId: number, title: string, json: any) { - if (!json) { - return; - } - - const groupId = this.mvx.addChildState(parentGroupId, title, this.jsonGroupComponent); - this.displayJSON(groupId, json); - if (!this.mvx.hasChildren(groupId)) { - this.mvx.removeState(groupId); - } - } - - private displayInitState(): void { - const capture = this.onCaptureRelatedAction(MenuStatus.InitState); - - const jsonContentStateId = this.mvx.addChildState(this.contentStateId, null, this.jsonContentComponent); - this.displayJSON(jsonContentStateId, capture.initState); - } - - private displayEndState(): void { - const capture = this.onCaptureRelatedAction(MenuStatus.EndState); - - const jsonContentStateId = this.mvx.addChildState(this.contentStateId, null, this.jsonContentComponent); - this.displayJSON(jsonContentStateId, capture.endState); - } - - private displayCurrentCapture(): void { - const capture = this.onCaptureRelatedAction(MenuStatus.Commands); - this.mvx.updateAllChildrenGenericState(this.captureListStateId, - (state) => { state.active = false; return state; }, - ); - this.mvx.updateState(this.currentCaptureStateId, { - capture, - active: true, - }); - - this.createVisualStates(capture); - this.commandListStateId = this.mvx.addChildState(this.contentStateId, null, this.commandListComponent); - this.commandDetailStateId = this.mvx.addChildState(this.contentStateId, null, this.commandDetailComponent); - - this.createCommands(capture); - } - - private displayCurrentCommand(): number { - if (this.mvx.getGenericState(this.menuStateId).status !== MenuStatus.Commands) { - return -1; - } - - const commandState = this.mvx.getGenericState(this.currentCommandStateId); - const command = commandState.capture; - this.currentCommandId = command.id; - - this.mvx.updateAllChildrenGenericState(this.commandListStateId, - (state) => { state.active = false; return state; }, - ); - this.mvx.updateState(this.currentCommandStateId, { - capture: command, - visualStateId: commandState.visualStateId, - previousCommandStateId: commandState.previousCommandStateId, - nextCommandStateId: commandState.nextCommandStateId, - active: true, - }); - - return this.displayCurrentCommandDetail(commandState); - } - - private displayCurrentCommandDetail(commandState: ICommandListItemState): number { - const command = commandState.capture; - this.mvx.removeChildrenStates(this.commandDetailStateId); - - const visualState = this.mvx.getGenericState(commandState.visualStateId); - this.mvx.addChildState(this.commandDetailStateId, visualState.VisualState, this.jsonVisualStateItemComponent); - - let status: string = "Unknown"; - switch (command.status) { - case CommandCaptureStatus.Deprecated: - status = "Deprecated"; - break; - case CommandCaptureStatus.Unused: - status = "Unused"; - break; - case CommandCaptureStatus.Disabled: - status = "Disabled"; - break; - case CommandCaptureStatus.Redundant: - status = "Redundant"; - break; - case CommandCaptureStatus.Valid: - status = "Valid"; - break; - } - - const helpLink = MDNCommandLinkHelper.getMDNLink(command.name); - if (command.result) { - this.displayJSONGroup(this.commandDetailStateId, "Global", { - name: { help: helpLink, name: command.name }, - duration: command.commandEndTime - command.startTime, - result: command.result, - status, - }); - } - else if (command.name !== "LOG") { - this.displayJSONGroup(this.commandDetailStateId, "Global", { - name: { help: helpLink, name: command.name }, - duration: command.commandEndTime - command.startTime, - status, - }); - } - - for (const key in command) { - if (key === "VisualState" || key === "result") { - continue; - } - else if (typeof command[key] === "object") { - this.displayJSONGroup(this.commandDetailStateId, key, command[key]); - } - } - - return commandState.visualStateId; - } - - private displayCurrentVisualState(): number { - if (this.mvx.getGenericState(this.menuStateId).status !== MenuStatus.Commands) { - return null; - } - - const visualState = this.mvx.getGenericState(this.currentVisualStateId); - if (visualState.commandStateId === Number.MIN_VALUE) { - this.displayInitState(); - } - else if (visualState.commandStateId === Number.MAX_VALUE) { - this.displayEndState(); - } - - this.mvx.updateAllChildrenGenericState(this.visualStateListStateId, - (state) => { state.active = false; return state; }, - ); - visualState.active = true; - this.mvx.updateState(this.currentVisualStateId, visualState); - - return visualState.commandStateId; - } - - private createVisualStates(capture: ICapture): void { - this.visualStateListStateId = this.mvx.addChildState(this.contentStateId, null, this.visualStateListComponent); - - this.mvx.removeChildrenStates(this.visualStateListStateId); - - this.initVisualStateId = this.mvx.addChildState(this.visualStateListStateId, { - VisualState: capture.initState.VisualState, - time: capture.startTime, - commandStateId: Number.MIN_VALUE, - active: false, - }, this.visualStateListItemComponent); - } - - private createCommands(capture: ICapture): void { - this.mvx.removeChildrenStates(this.commandListStateId); - let tempVisualStateId = this.initVisualStateId; - let visualStateSet = false; - - let previousCommandState: ICommandListItemState = null; - let previousCommandStateId = -1; - - let previousVisualState: IVisualStateItem = null; - let previousVisualStateId = -1; - - for (let i = 0; i < capture.commands.length; i++) { - const commandCapture = capture.commands[i]; - if (this.toFilter(commandCapture.marker) && - this.toFilter(commandCapture.name) && - commandCapture.id !== this.currentCommandId && - (commandCapture.name !== "LOG" || this.toFilter(commandCapture.text))) { - continue; - } - - const commandState: ICommandListItemState = { - capture: commandCapture, - previousCommandStateId, - nextCommandStateId: -1, - visualStateId: undefined as number, - active: false, - }; - - const commandStateId = this.mvx.addChildState(this.commandListStateId, - commandState, - this.commandListItemComponent); - - if (previousCommandState) { - previousCommandState = this.mvx.getGenericState(previousCommandStateId); - previousCommandState.nextCommandStateId = commandStateId; - this.mvx.updateState(previousCommandStateId, previousCommandState); - } - - previousCommandStateId = commandStateId; - previousCommandState = commandState; - - if (commandCapture.VisualState) { - const visualState = { - VisualState: commandCapture.VisualState, - time: commandCapture.endTime, - commandStateId, - active: false, - previousVisualStateId, - nextVisualStateId: -1, - }; - - tempVisualStateId = this.mvx.addChildState(this.visualStateListStateId, - visualState, - this.visualStateListItemComponent); - - if (previousVisualState) { - previousVisualState = this.mvx.getGenericState(previousVisualStateId); - previousVisualState.nextVisualStateId = tempVisualStateId; - this.mvx.updateState(previousVisualStateId, previousVisualState); - } - - previousVisualState = visualState; - previousVisualStateId = tempVisualStateId; - visualStateSet = true; - } - else if (!visualStateSet) { - const initVisualState = this.mvx.getGenericState(this.initVisualStateId); - initVisualState.commandStateId = commandStateId; - initVisualState.previousVisualStateId = -1; - initVisualState.nextVisualStateId = -1; - this.mvx.updateState(this.initVisualStateId, initVisualState); - - previousVisualState = initVisualState; - previousVisualStateId = tempVisualStateId; - visualStateSet = true; - } - - commandState.visualStateId = tempVisualStateId; - - this.mvx.updateState(commandStateId, commandState); - - if ((this.currentCommandId === -1 && i === 0) - || (this.currentCommandId === commandCapture.id)) { - this.currentCommandStateId = commandStateId; - this.displayCurrentCommand(); - - this.currentVisualStateId = tempVisualStateId; - this.displayCurrentVisualState(); - } - } - } - - private updateViewState() { - this.mvx.updateState(this.rootStateId, this.visible); - } - - private toFilter(text: string): boolean { - text += ""; - text = text.toLowerCase(); - - if (this.searchText && this.searchText.length > 2 && text.indexOf(this.searchText.toLowerCase()) === -1) { - return true; - } - return false; - } - - private search(text: string): void { - this.searchText = text; - const status = this.mvx.getGenericState(this.menuStateId).status; - switch (status) { - case MenuStatus.Captures: - this.displayCurrentCapture(); - break; - case MenuStatus.Commands: - this.displayCurrentCapture(); - break; - case MenuStatus.EndState: - this.displayEndState(); - break; - case MenuStatus.Information: - this.displayInformation(); - break; - case MenuStatus.InitState: - this.displayInitState(); - break; - } - this.searchText = ""; - } -} diff --git a/src/embeddedFrontend/resultView/resultViewComponent.ts b/src/embeddedFrontend/resultView/resultViewComponent.ts deleted file mode 100644 index 997cfb74..00000000 --- a/src/embeddedFrontend/resultView/resultViewComponent.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BaseComponent } from "../mvx/baseComponent"; - -export class ResultViewComponent extends BaseComponent { - public render(state: boolean, stateId: number): Element { - const htmlString = this.htmlTemplate` -
                  -
                  `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/sourceCode/sourceCodeComponent.ts b/src/embeddedFrontend/resultView/sourceCode/sourceCodeComponent.ts deleted file mode 100644 index 935d8089..00000000 --- a/src/embeddedFrontend/resultView/sourceCode/sourceCodeComponent.ts +++ /dev/null @@ -1,349 +0,0 @@ -import preprocess from "@shaderfrog/glsl-parser/preprocessor"; // tslint:disable-line:no-submodule-imports -import { BaseComponent, IStateEvent } from "../../mvx/baseComponent"; -import { ISourceCodeChangeEvent } from "../resultView"; -import { Logger } from "../../../shared/utils/logger"; - -export interface ISourceCodeState extends ISourceCodeChangeEvent { - nameVertex: string; - nameFragment: string; - fragment: boolean; - translated: boolean; - editable: boolean; - beautify: boolean; - preprocessed: boolean; -} - -// Declare Ace types here. -interface IAceEditorSession { - setMode(mode: string): void; - on(eventName: string, callback: (e: any) => void): void; - setAnnotations(annotations: any[]): void; -} -interface IAceEditor { - getValue(): string; - setTheme(theme: string): void; - getSession(): IAceEditorSession; - setReadOnly(readonly: boolean): void; - setShowPrintMargin(show: boolean): void; -} -type ace = { - edit(sourceCodeComponent: Element): IAceEditor; -}; -declare const ace: ace; - -export class SourceCodeComponent extends BaseComponent { - private static readonly semicolonReplacementKey = "[[[semicolonReplacementKey]]]"; - private static readonly semicolonReplacementKeyRegex = new RegExp("\\[\\[\\[semicolonReplacementKey\\]\\]\\]", "g"); - private static readonly openCurlyReplacementKey = "[[[openCurlyReplacementKey]]]"; - private static readonly openCurlyReplacementKeyRegex = new RegExp("\\[\\[\\[openCurlyReplacementKey\\]\\]\\]", "g"); - private static readonly closeCurlyReplacementKey = "[[[closeCurlyReplacementKey]]]"; - private static readonly closeCurlyReplacementKeyRegex = new RegExp("\\[\\[\\[closeCurlyReplacementKey\\]\\]\\]", "g"); - - public onTranslatedVertexSourceClicked: IStateEvent; - public onTranslatedFragmentSourceClicked: IStateEvent; - public onVertexSourceClicked: IStateEvent; - public onFragmentSourceClicked: IStateEvent; - public onSourceCodeCloseClicked: IStateEvent; - public onSourceCodeChanged: IStateEvent; - public onBeautifyChanged: IStateEvent; - public onPreprocessChanged: IStateEvent; - - private editor: IAceEditor; - - constructor() { - super(); - this.onTranslatedVertexSourceClicked = this.createEvent("onTranslatedVertexSourceClicked"); - this.onTranslatedFragmentSourceClicked = this.createEvent("onTranslatedFragmentSourceClicked"); - this.onVertexSourceClicked = this.createEvent("onVertexSourceClicked"); - this.onFragmentSourceClicked = this.createEvent("onFragmentSourceClicked"); - this.onSourceCodeCloseClicked = this.createEvent("onSourceCodeCloseClicked"); - this.onSourceCodeChanged = this.createEvent("onSourceCodeChanged"); - this.onBeautifyChanged = this.createEvent("onBeautifyChanged"); - this.onPreprocessChanged = this.createEvent("onPreprocessChanged"); - } - - public showError(errorMessage: string) { - if (!this.editor) { - return; - } - - errorMessage = errorMessage || ""; - - const annotations = []; - - if (errorMessage) { - const errorChecker = /^.*ERROR:\W([0-9]+):([0-9]+):(.*)$/gm; - let errors = errorChecker.exec(errorMessage); - while (errors != null) { - annotations.push({ - row: +errors[2] - 1, - column: errors[1], - text: errors[3] || "Error", - type: "error", // also warning and information - }); - errors = errorChecker.exec(errorMessage); - } - } - - this.editor.getSession().setAnnotations(annotations); - } - - public render(state: ISourceCodeState, stateId: number): Element { - const source = state.fragment ? state.sourceFragment : state.sourceVertex; - let originalShader: string; - let preprocessed = state.preprocessed; - - // tslint:disable-next-line:prefer-conditional-expression - if (state.translated) { - originalShader = state.fragment ? state.translatedSourceFragment : state.translatedSourceVertex; - preprocessed = false; - } - else { - originalShader = source ?? ""; - } - - let displayedShader = originalShader; - if (preprocessed) { - try { - displayedShader = preprocess(displayedShader, { - preserveComments: false, - stopOnError: true - }); - } catch (e) { - Logger.error("shader preprocess failed", e); - } - } - - if (state.beautify) { - displayedShader = this._indentIfdef(this._beautify(displayedShader)); - } - - const htmlString = this.htmlTemplate` -
                  -
                  - -
                  - $${this.htmlTemplate`
                  ${displayedShader}
                  ` - } -
                  -

                  - - -

                  -
                  -
                  `; - - const element = this.renderElementFromTemplate(htmlString.replace(/
                  /g, "\n"), state, stateId); - - this.editor = ace.edit(element.querySelector(".sourceCodeComponent")); - this.editor.setTheme("ace/theme/monokai"); - this.editor.getSession().setMode("ace/mode/glsl"); - this.editor.setShowPrintMargin(false); - let timeoutId = -1; - this.editor.setReadOnly(!state.editable && !state.translated); - this.editor.getSession().on("change", (e) => { - if (timeoutId !== -1) { - clearTimeout(timeoutId); - } - - timeoutId = setTimeout(() => { - this._triggerCompilation(this.editor, state, element, stateId); - }, 1500); - }); - - return element; - } - - private _triggerCompilation(editor: IAceEditor, state: ISourceCodeState, element: Element, stateId: number) { - if (state.fragment) { - state.sourceFragment = editor.getValue(); - } - else { - state.sourceVertex = editor.getValue(); - } - this.triggerEvent("onSourceCodeChanged", element, state, stateId); - } - - /** - * Beautify the given string : correct indentation according to brackets - */ - private _beautify(glsl: string, level: number = 0): string { - let spaces = ""; - for (let i = 0; i < level; i++) { - spaces += " "; // 4 spaces - } - - const untrimmedGlsl = glsl; - glsl = glsl.trim(); - - // If preprocessor, indent the preprocessor line and beautify the rest - if (glsl[0] === "#") { - - // Figure out if we trimmed away a newline - const preprocessorStart = untrimmedGlsl.indexOf("#"); - const newline = untrimmedGlsl.indexOf("\n"); - let preservedNewline: string = ""; - if (newline !== -1) { - if (newline < preprocessorStart) { - preservedNewline = spaces + "\n"; - } - } - - const firstLineEnd = glsl.indexOf("\n"); - const preprocessorLineEnd = (firstLineEnd !== -1) ? firstLineEnd : glsl.length; - const preprocessorLine = glsl.substr(0, preprocessorLineEnd); - const rest = glsl.substr(preprocessorLineEnd + 1); - - return preservedNewline + spaces + preprocessorLine + "\n" + this._beautify(rest, level); - } - - // return condition : no brackets at all - glsl = this._adaptComments(glsl); - const brackets = this._getBracket(glsl); - const firstBracket = brackets.firstIteration; - const lastBracket = brackets.lastIteration; - - let result: string; - // If no brackets, return the indented string - if (firstBracket === -1) { - glsl = spaces + glsl; // indent first line - glsl = glsl.replace(/;(?![^\(]*\))\s*(\/\/.*)?/g, (x) => x.trim() + "\n"); - glsl = glsl.replace(/\s*([*+-/=><\s]*=)\s*/g, (x) => " " + x.trim() + " "); // space around =, *=, +=, -=, /=, ==, >=, <= - glsl = glsl.replace(/\s*(,)\s*/g, (x) => x.trim() + " "); // space after , - glsl = glsl.replace(/\n[ \t]+/g, "\n"); // trim Start - glsl = glsl.replace(/\n/g, "\n" + spaces); // indentation - glsl = glsl.replace(/\s+$/g, ""); - glsl = glsl.replace(/\n+$/g, ""); - result = glsl; - } - else { - // if brackets, beautify the inside - // let insideWithBrackets = glsl.substr(firstBracket, lastBracket-firstBracket+1); - const left = glsl.substr(0, firstBracket).trim(); - const right = glsl.substr(lastBracket + 1, glsl.length).trim(); - const inside = glsl.substr(firstBracket + 1, lastBracket - firstBracket - 1).trim(); - const prettyLeft = (left === "") ? spaces + "{" : this._beautify(left, level) + " {\n"; - const prettyInside = this._beautify(inside, level + 1); - const prettyRight = this._beautify(right, level); - result = prettyLeft + prettyInside + "\n" + spaces + "}\n" + prettyRight; - result = result.replace(/\s*\n+\s*;/g, ";"); // Orphan ; - } - - result = result.replace(SourceCodeComponent.semicolonReplacementKeyRegex, ";"); - result = result.replace(SourceCodeComponent.openCurlyReplacementKeyRegex, "{"); - result = result.replace(SourceCodeComponent.closeCurlyReplacementKeyRegex, "}"); - - return result; - } - - private _adaptComments(str: string): string { - let singleLineComment = false; - let multiLineComment = false; - - for (let index = 0; index < str.length; index++) { - const char = str[index]; - if (char === "/") { - if (str[index - 1] === "*") { - multiLineComment = false; - } - else if (str[index + 1] === "*") { - if (!singleLineComment) { - multiLineComment = true; - index++; - } - } - else if (str[index + 1] === "/") { - if (!multiLineComment) { - singleLineComment = true; - index++; - } - } - } - else if (char === "\n") { - singleLineComment = false; - } - else if (char === ";") { - if (singleLineComment || multiLineComment) { - str = str.substr(0, index) + SourceCodeComponent.semicolonReplacementKey + str.substr(index + 1); - } - } - else if (char === "{") { - if (singleLineComment || multiLineComment) { - str = str.substr(0, index) + SourceCodeComponent.openCurlyReplacementKey + str.substr(index + 1); - } - } - else if (char === "}") { - if (singleLineComment || multiLineComment) { - str = str.substr(0, index) + SourceCodeComponent.closeCurlyReplacementKey + str.substr(index + 1); - } - } - } - - return str; - } - - /** - * Returns the position of the first "{" and the corresponding "}" - * @param str the Shader source code as a string - * @param searchFrom Search open brackets from this position - */ - private _getBracket(str: string, searchFrom = -1): { firstIteration: number, lastIteration: number } { - const fb = str.indexOf("{", searchFrom); - const arr = str.substr(fb + 1).split(""); - let counter = 1; - let currentPosInString = fb; - let lastBracketIndex = 0; - for (const char of arr) { - currentPosInString++; - - if (char === "{") { - counter++; - } - if (char === "}") { - counter--; - } - if (counter === 0) { - lastBracketIndex = currentPosInString; - break; - } - } - - // More open than close. - if (fb > -1 && lastBracketIndex === 0) { - return this._getBracket(str, fb + 1); - } - - return { firstIteration: fb, lastIteration: lastBracketIndex }; - } - - private _indentIfdef(str: string): string { - let level = 0; - - const arr2 = str.split("\n"); - - for (let index = 0; index < arr2.length; index++) { - const line = arr2[index]; - if (line.indexOf("#endif") !== -1) { - level--; - } - if (line.indexOf("#else") !== -1) { - level--; - } - let spaces = ""; - for (let i = 0; i < level; i++) { - spaces += " "; // 4 spaces - } - arr2[index] = spaces + line; - if (line.indexOf("#if") !== -1 || line.indexOf("#else") !== -1) { - level++; - } - } - return arr2.join("\n"); - } -} diff --git a/src/embeddedFrontend/resultView/visualStateList/visualStateListComponent.ts b/src/embeddedFrontend/resultView/visualStateList/visualStateListComponent.ts deleted file mode 100644 index 0d880e0c..00000000 --- a/src/embeddedFrontend/resultView/visualStateList/visualStateListComponent.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BaseComponent } from "../../mvx/baseComponent"; - -export class VisualStateListComponent extends BaseComponent { - public render(state: any, stateId: number): Element { - const htmlString = this.htmlTemplate` -
                  -
                    -
                    `; - - return this.renderElementFromTemplate(htmlString, state, stateId); - } -} diff --git a/src/embeddedFrontend/resultView/visualStateList/visualStateListItemComponent.ts b/src/embeddedFrontend/resultView/visualStateList/visualStateListItemComponent.ts deleted file mode 100644 index 8afa4c16..00000000 --- a/src/embeddedFrontend/resultView/visualStateList/visualStateListItemComponent.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { BaseComponent, IStateEvent } from "../../mvx/baseComponent"; -import { ScrollIntoViewHelper } from "../../ux/scrollIntoViewHelper"; - -export interface IVisualStateItem { - time: number; - commandStateId: number; - VisualState: any; - active: boolean; - - previousVisualStateId: number; - nextVisualStateId: number; -} -export class VisualStateListItemComponent extends BaseComponent { - public onVisualStateSelected: IStateEvent; - - constructor() { - super(); - this.onVisualStateSelected = this.createEvent("onVisualStateSelected"); - } - - public render(state: IVisualStateItem, stateId: number): Element { - const liHolder = document.createElement("li"); - if (state.active) { - liHolder.className = "active"; - setTimeout(() => { - ScrollIntoViewHelper.scrollIntoView(liHolder); - }, 1); - } - - if (state.VisualState.Attachments) { - for (const imageState of state.VisualState.Attachments) { - if (!imageState.src) { - continue; - } - - const img = document.createElement("img"); - img.src = encodeURI(imageState.src); - liHolder.appendChild(img); - - if (state.VisualState.Attachments.length > 1) { - const attachment = document.createElement("span"); - attachment.innerText = imageState.attachmentName; - liHolder.appendChild(attachment); - } - if (imageState.textureLayer) { - const layer = document.createElement("span"); - layer.innerText = "Layer: " + imageState.textureLayer; - liHolder.appendChild(layer); - } - if (imageState.textureCubeMapFace) { - const face = document.createElement("span"); - face.innerText = imageState.textureCubeMapFace; - liHolder.appendChild(face); - } - } - } - else { - const status = document.createElement("span"); - status.innerText = state.VisualState.FrameBufferStatus; - liHolder.appendChild(status); - } - - const fbo = document.createElement("span"); - fbo.innerText = (state.VisualState.FrameBuffer) ? - "Frame buffer: " + state.VisualState.FrameBuffer.__SPECTOR_Object_TAG.id : - "Canvas frame buffer"; - - liHolder.appendChild(fbo); - - this.mapEventListener(liHolder, "click", "onVisualStateSelected", state, stateId); - - return liHolder; - } -} diff --git a/src/embeddedFrontend/ux/scrollIntoViewHelper.ts b/src/embeddedFrontend/ux/scrollIntoViewHelper.ts deleted file mode 100644 index a8496f41..00000000 --- a/src/embeddedFrontend/ux/scrollIntoViewHelper.ts +++ /dev/null @@ -1,25 +0,0 @@ -export class ScrollIntoViewHelper { - public static scrollIntoView(element: HTMLElement): void { - const elementRect = element.getBoundingClientRect(); - - let parentElement = element.parentElement; - while (parentElement) { - if (parentElement.clientHeight !== parentElement.offsetHeight) { - break; - } - parentElement = parentElement.parentElement; - } - - if (!parentElement) { - return; - } - - const parentRect = parentElement.getBoundingClientRect(); - if (elementRect.top < parentRect.top) { - element.scrollIntoView(true); - } - else if (elementRect.bottom > parentRect.bottom) { - element.scrollIntoView(false); - } - } -} diff --git a/src/spector.ts b/src/spector.ts index c9c2ec19..613fc088 100644 --- a/src/spector.ts +++ b/src/spector.ts @@ -9,8 +9,12 @@ import { ContextSpy } from "./backend/spies/contextSpy"; import { TimeSpy } from "./backend/spies/timeSpy"; import { CanvasSpy } from "./backend/spies/canvasSpy"; import { Program } from "./backend/webGlObjects/webGlObjects"; -import { CaptureMenu } from "./embeddedFrontend/captureMenu/captureMenu"; -import { ResultView } from "./embeddedFrontend/resultView/resultView"; +import { ReactCaptureMenu as CaptureMenu } from "./embeddedFrontend/react/CaptureMenu/ReactCaptureMenu"; +import { ReactResultView as ResultView } from "./embeddedFrontend/react/ResultView/ReactResultView"; + +// Import SCSS styles (previously imported by the old MVX component entry files) +import "./embeddedFrontend/styles/captureMenu.scss"; +import "./embeddedFrontend/styles/resultView.scss"; import { XRSpy } from "./backend/spies/xrSpy"; const CAPTURE_LIMIT = 10000; // Limit command count to 10000 record (to be kept in sync with the documentation) diff --git a/src/tsconfig.json b/src/tsconfig.json index 77942ab2..fc8d02c2 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "outDir": "../.temp/tsc/", "rootDir": "./", - "types": ["@types/webxr"], + "types": ["@types/webxr", "@types/react", "@types/react-dom"], "sourceMap": true, "noImplicitAny": true, "noImplicitReturns": true, @@ -11,6 +11,8 @@ "experimentalDecorators": true, "module": "es6", "moduleResolution": "node", - "target": "ES2015" + "target": "ES2015", + "jsx": "react-jsx", + "esModuleInterop": true } } \ No newline at end of file diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 00000000..aaa9103e --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,2 @@ +test-results/ +playwright-report/ diff --git a/test/fixtures/captured-frame.json b/test/fixtures/captured-frame.json new file mode 100644 index 00000000..2e417713 --- /dev/null +++ b/test/fixtures/captured-frame.json @@ -0,0 +1,728 @@ +{ + "canvas": { + "width": 800, + "height": 600, + "clientWidth": 800, + "clientHeight": 600, + "browserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.6 Safari/537.36" + }, + "context": { + "version": 2, + "contextAttributes": { + "alpha": true, + "antialias": true, + "depth": true, + "desynchronized": false, + "failIfMajorPerformanceCaveat": false, + "powerPreference": "default", + "premultipliedAlpha": true, + "preserveDrawingBuffer": true, + "stencil": false, + "xrCompatible": false + }, + "capabilities": { + "RENDERER": "WebKit WebGL", + "VENDOR": "WebKit", + "VERSION": "WebGL 2.0 (OpenGL ES 3.0 Chromium)", + "SHADING_LANGUAGE_VERSION": "WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)", + "SAMPLES": 4, + "SAMPLE_BUFFERS": 1, + "RED_BITS": 8, + "GREEN_BITS": 8, + "BLUE_BITS": 8, + "ALPHA_BITS": 8, + "DEPTH_BITS": 24, + "STENCIL_BITS": 0, + "SUBPIXEL_BITS": 4, + "LINE_WIDTH": 1, + "ALIASED_LINE_WIDTH_RANGE": [ + 1, + 1 + ], + "ALIASED_POINT_SIZE_RANGE": [ + 1, + 1023 + ], + "IMPLEMENTATION_COLOR_READ_FORMAT": "RGBA", + "IMPLEMENTATION_COLOR_READ_TYPE": "UNSIGNED_BYTE", + "MAX_COMBINED_TEXTURE_IMAGE_UNITS": 64, + "MAX_CUBE_MAP_TEXTURE_SIZE": 16384, + "MAX_FRAGMENT_UNIFORM_VECTORS": 4096, + "MAX_RENDERBUFFER_SIZE": 8192, + "MAX_TEXTURE_IMAGE_UNITS": 32, + "MAX_TEXTURE_SIZE": 8192, + "MAX_VARYING_VECTORS": 31, + "MAX_VERTEX_ATTRIBS": 16, + "MAX_VERTEX_TEXTURE_IMAGE_UNITS": 32, + "MAX_VERTEX_UNIFORM_VECTORS": 4096, + "MAX_VIEWPORT_DIMS": [ + 8192, + 8192 + ], + "MAX_TEXTURE_MAX_ANISOTROPY_EXT": 16, + "MAX_COLOR_ATTACHMENTS_WEBGL": "Extension WEBGL_draw_buffers is unavailable.", + "MAX_DRAW_BUFFERS_WEBGL": "Extension WEBGL_draw_buffers is unavailable.", + "MAX_3D_TEXTURE_SIZE": 2048, + "MAX_ARRAY_TEXTURE_LAYERS": 2048, + "MAX_CLIENT_WAIT_TIMEOUT_WEBGL": 0, + "MAX_COLOR_ATTACHMENTS": 6, + "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS": 245760, + "MAX_COMBINED_UNIFORM_BLOCKS": 60, + "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS": 245760, + "MAX_DRAW_BUFFERS": 6, + "MAX_ELEMENT_INDEX": 1073741823, + "MAX_ELEMENTS_INDICES": 2147483647, + "MAX_ELEMENTS_VERTICES": 2147483647, + "MAX_FRAGMENT_INPUT_COMPONENTS": 128, + "MAX_FRAGMENT_UNIFORM_BLOCKS": 14, + "MAX_FRAGMENT_UNIFORM_COMPONENTS": 16384, + "MAX_PROGRAM_TEXEL_OFFSET": 7, + "MAX_SAMPLES": 4, + "MAX_SERVER_WAIT_TIMEOUT": 0, + "MAX_TEXTURE_LOD_BIAS": 15, + "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS": 128, + "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS": 4, + "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS": 4, + "MAX_UNIFORM_BLOCK_SIZE": 65536, + "MAX_UNIFORM_BUFFER_BINDINGS": 72, + "MAX_VARYING_COMPONENTS": 124, + "MAX_VERTEX_OUTPUT_COMPONENTS": 128, + "MAX_VERTEX_UNIFORM_BLOCKS": 14, + "MAX_VERTEX_UNIFORM_COMPONENTS": 16384, + "MIN_PROGRAM_TEXEL_OFFSET": -8 + }, + "extensions": { + "EXT_color_buffer_float": true, + "EXT_disjoint_timer_query": false, + "EXT_disjoint_timer_query_webgl2": false, + "EXT_texture_filter_anisotropic": true, + "OES_texture_float_linear": true, + "WEBGL_compressed_texture_astc": true, + "WEBGL_compressed_texture_atc": false, + "WEBGL_compressed_texture_etc": true, + "WEBGL_compressed_texture_etc1": true, + "WEBGL_compressed_texture_pvrtc": false, + "WEBGL_compressed_texture_s3tc": true, + "WEBGL_multi_draw": true, + "WEBGL_multi_draw_instanced_base_vertex_base_instance": false, + "WEBGL_draw_instanced_base_vertex_base_instance": false + }, + "compressedTextures": { + "COMPRESSED_TEXTURE_FORMATS": [ + "37808", + "37840", + "37809", + "37841", + "37810", + "37842", + "37811", + "37843", + "37812", + "37844", + "37813", + "37845", + "37814", + "37846", + "37815", + "37847", + "37816", + "37848", + "37817", + "37849", + "37818", + "37850", + "37819", + "37851", + "37820", + "37852", + "37821", + "37853", + "COMPRESSED_R11_EAC", + "COMPRESSED_SIGNED_R11_EAC", + "COMPRESSED_RGB8_ETC2", + "COMPRESSED_RGBA8_ETC2_EAC", + "COMPRESSED_SRGB8_ETC2", + "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", + "COMPRESSED_RG11_EAC", + "COMPRESSED_SIGNED_RG11_EAC", + "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", + "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", + "COMPRESSED_RGB_ETC1_WEBGL", + "COMPRESSED_RGB_S3TC_DXT1_EXT", + "COMPRESSED_RGBA_S3TC_DXT1_EXT", + "COMPRESSED_RGBA_S3TC_DXT3_EXT", + "COMPRESSED_RGBA_S3TC_DXT5_EXT" + ] + } + }, + "commands": [ + { + "id": 0, + "startTime": 1773999928765.6, + "commandEndTime": 1773999928765.7, + "endTime": 1773999928767.9, + "name": "clearColor", + "commandArguments": [ + 0.1, + 0.1, + 0.18, + 1 + ], + "stackTrace": [ + "render (http://localhost:7777/test/fixtures/test-scene.html:105:16)" + ], + "status": 30, + "text": "clearColor: 0.1, 0.1, 0.18, 1", + "consumeCommandId": 1 + }, + { + "id": 1, + "startTime": 1773999928767.9, + "commandEndTime": 1773999928767.9, + "endTime": 1773999928777, + "name": "clear", + "commandArguments": [ + 16384 + ], + "stackTrace": [ + "render (http://localhost:7777/test/fixtures/test-scene.html:106:16)" + ], + "status": 0, + "text": "clear: COLOR_BUFFER_BIT", + "ClearState": { + "COLOR_CLEAR_VALUE": [ + 0.10000000149011612, + 0.10000000149011612, + 0.18000000715255737, + 1 + ], + "DEPTH_CLEAR_VALUE": 1, + "STENCIL_CLEAR_VALUE": 0, + "redundantCommandIds": [ + 0 + ] + }, + "ScissorState": { + "SCISSOR_TEST": false, + "SCISSOR_BOX": [ + 0, + 0, + 800, + 600 + ] + }, + "VisualState": { + "Attachments": [ + { + "attachmentName": "Canvas COLOR_ATTACHMENT", + "src": "data:image/png;base64,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", + "textureCubeMapFace": null, + "textureLayer": 0 + } + ], + "FrameBuffer": null + } + }, + { + "id": 2, + "startTime": 1773999928777, + "commandEndTime": 1773999928777, + "endTime": 1773999928794.7, + "name": "drawArrays", + "commandArguments": [ + 4, + 0, + 3 + ], + "stackTrace": [ + "render (http://localhost:7777/test/fixtures/test-scene.html:107:16)" + ], + "status": 0, + "text": "drawArrays: TRIANGLES, 0 indices, 3", + "BlendState": { + "BLEND": false, + "BLEND_COLOR": [ + 0, + 0, + 0, + 0 + ], + "BLEND_DST_ALPHA": "ZERO", + "BLEND_DST_RGB": "ZERO", + "BLEND_EQUATION_ALPHA": "FUNC_ADD", + "BLEND_EQUATION_RGB": "FUNC_ADD", + "BLEND_SRC_ALPHA": "ONE", + "BLEND_SRC_RGB": "ONE" + }, + "ColorState": { + "COLOR_WRITEMASK": [ + true, + true, + true, + true + ] + }, + "CoverageState": { + "SAMPLE_COVERAGE_VALUE": 1, + "SAMPLE_COVERAGE_INVERT": false, + "SAMPLE_COVERAGE": false, + "SAMPLE_ALPHA_TO_COVERAGE": false + }, + "CullState": { + "CULL_FACE": false, + "CULL_FACE_MODE": "BACK" + }, + "DepthState": { + "DEPTH_TEST": false, + "DEPTH_FUNC": "LESS", + "DEPTH_RANGE": [ + 0, + 1 + ], + "DEPTH_WRITEMASK": true + }, + "DrawState": { + "DITHER": true, + "VIEWPORT": [ + 0, + 0, + 800, + 600 + ], + "FRONT_FACE": "CCW", + "FRAGMENT_SHADER_DERIVATIVE_HINT_OES": "Extension OES_standard_derivatives is unavailable.", + "RASTERIZER_DISCARD": false, + "FRAGMENT_SHADER_DERIVATIVE_HINT": 4352 + }, + "PolygonOffsetState": { + "POLYGON_OFFSET_FILL": false, + "POLYGON_OFFSET_FACTOR": 0, + "POLYGON_OFFSET_UNITS": 0 + }, + "ScissorState": { + "SCISSOR_TEST": false, + "SCISSOR_BOX": [ + 0, + 0, + 800, + 600 + ] + }, + "StencilState": { + "STENCIL_TEST": false, + "STENCIL_BACK_FAIL": "KEEP", + "STENCIL_BACK_FUNC": "ALWAYS", + "STENCIL_BACK_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_BACK_PASS_DEPTH_PASS": "KEEP", + "STENCIL_BACK_REF": 0, + "STENCIL_BACK_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BACK_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_FAIL": "KEEP", + "STENCIL_FUNC": "ALWAYS", + "STENCIL_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_PASS_DEPTH_PASS": "KEEP", + "STENCIL_REF": 0, + "STENCIL_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BITS": "0" + }, + "VisualState": { + "Attachments": [ + { + "attachmentName": "Canvas COLOR_ATTACHMENT", + "src": "data:image/png;base64,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", + "textureCubeMapFace": null, + "textureLayer": 0 + } + ], + "FrameBuffer": null + }, + "DrawCall": { + "frameBuffer": null, + "programStatus": { + "LINK_STATUS": true, + "VALIDATE_STATUS": false, + "program": { + "__SPECTOR_Object_TAG": { + "typeName": "WebGLProgram", + "id": 0, + "displayText": "WebGLProgram - ID: 0" + } + }, + "RECOMPILABLE": false + }, + "shaders": [ + { + "COMPILE_STATUS": true, + "shaderType": "VERTEX_SHADER", + "name": "Vertex", + "source": "attribute vec2 aPosition;\nattribute vec3 aColor;\nvarying vec3 vColor;\nvoid main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n vColor = aColor;\n}\n", + "translatedSource": "Inputs: aPosition aColor\nOutputs: vColor gl_Position\n\nPaste the following SPIR-V binary in https://www.khronos.org/spir/visualizer/ or pass to a recent build of `spirv-dis` (optionally with `--comment --nested-indent`)\n\nSetting the environment variable ANGLE_FEATURE_OVERRIDES_ENABLED=retainSPIRVDebugInfo will retain debug info\n\n0x07230203,0x00010400,0x00180001,0x0000008D,0x00000000,0x00020011,0x00000001,0x0008000A,0x5F565053,0x5F52484B,\n0x5F6E6F6E,0x616D6573,0x6369746E,0x666E695F,0x0000006F,0x0006000B,0x0000003F,0x4C534C47,0x6474732E,0x3035342E,\n0x00000000,0x0007000B,0x00000001,0x536E6F4E,0x6E616D65,0x2E636974,0x4C474E41,0x00000045,0x0003000E,0x00000000,\n0x00000001,0x0010000F,0x00000000,0x00000002,0x6E69616D,0x00000000,0x0000003C,0x0000003D,0x0000003E,0x00000045,\n0x0000001C,0x0000001D,0x0000001E,0x0000001F,0x00000019,0x0000006B,0x0000006C,0x00030003,0x00000002,0x000001C2,\n0x00040047,0x0000003C,0x0000001E,0x00000000,0x00040047,0x0000003D,0x0000001E,0x00000001,0x00040047,0x0000003E,\n0x0000001E,0x00000000,0x00050048,0x00000023,0x00000000,0x00000023,0x00000000,0x00050048,0x00000023,0x00000001,\n0x00000023,0x00000008,0x00050048,0x00000023,0x00000002,0x00000023,0x00000010,0x00050048,0x00000023,0x00000003,\n0x00000023,0x00000014,0x00050048,0x00000023,0x00000004,0x00000023,0x00000018,0x00050048,0x00000023,0x00000005,\n0x00000023,0x0000001C,0x00050048,0x00000023,0x00000006,0x00000023,0x00000020,0x00050048,0x00000023,0x00000007,\n0x00000023,0x00000030,0x00050048,0x00000023,0x00000008,0x00000023,0x00000034,0x00050048,0x00000023,0x00000009,\n0x00000023,0x00000038,0x00030047,0x00000023,0x00000002,0x00040047,0x00000046,0x00000006,0x00000004,0x00050048,\n0x00000026,0x00000000,0x00000023,0x00000000,0x00030047,0x00000026,0x00000002,0x00030047,0x0000001C,0x00000014,\n0x00040047,0x0000001C,0x00000022,0x00000000,0x00040047,0x0000001C,0x00000021,0x00000000,0x00050048,0x00000027,\n0x00000000,0x00000023,0x00000000,0x00030047,0x00000027,0x00000002,0x00030047,0x0000001D,0x00000014,0x00040047,\n0x0000001D,0x00000022,0x00000000,0x00040047,0x0000001D,0x00000021,0x00000001,0x00050048,0x00000028,0x00000000,\n0x00000023,0x00000000,0x00030047,0x00000028,0x00000002,0x00030047,0x0000001E,0x00000014,0x00040047,0x0000001E,\n0x00000022,0x00000000,0x00040047,0x0000001E,0x00000021,0x00000002,0x00050048,0x00000029,0x00000000,0x00000023,\n0x00000000,0x00030047,0x00000029,0x00000002,0x00030047,0x0000001F,0x00000014,0x00040047,0x0000001F,0x00000022,\n0x00000000,0x00040047,0x0000001F,0x00000021,0x00000003,0x00040048,0x00000022,0x00000001,0x00000000,0x00050048,\n0x00000022,0x00000000,0x0000000B,0x00000000,0x00050048,0x00000022,0x00000001,0x0000000B,0x00000001,0x00030047,\n0x00000022,0x00000002,0x00030047,0x0000005D,0x00000000,0x00030047,0x0000005E,0x00000000,0x00040047,0x0000006B,\n0x0000000B,0x0000002A,0x00040047,0x0000006C,0x0000000B,0x0000002B,0x00020013,0x00000003,0x00030016,0x00000004,\n0x00000020,0x00040017,0x00000005,0x00000004,0x00000002,0x00040018,0x00000008,0x00000005,0x00000002,0x00040017,\n0x00000006,0x00000004,0x00000003,0x00040018,0x00000009,0x00000006,0x00000003,0x00040017,0x00000007,0x00000004,\n0x00000004,0x00040018,0x0000000A,0x00000007,0x00000004,0x00040015,0x0000000D,0x00000020,0x00000000,0x00040015,\n0x0000000B,0x00000020,0x00000001,0x00040017,0x0000000C,0x0000000B,0x00000004,0x0004002B,0x0000000B,0x0000000E,\n0x00000000,0x0004002B,0x0000000B,0x0000000F,0x00000001,0x0004002B,0x0000000B,0x00000010,0x00000002,0x0004002B,\n0x0000000B,0x00000011,0x00000003,0x00040017,0x00000043,0x0000000D,0x00000002,0x000C001E,0x00000023,0x00000043,\n0x00000005,0x0000000D,0x0000000D,0x0000000D,0x0000000D,0x0000000C,0x0000000B,0x0000000D,0x00000043,0x0003001D,\n0x00000046,0x00000004,0x0003001E,0x00000026,0x00000046,0x0003001E,0x00000027,0x00000046,0x0003001E,0x00000028,\n0x00000046,0x0003001E,0x00000029,0x00000046,0x0004001E,0x00000022,0x00000007,0x00000004,0x0004002B,0x0000000D,\n0x0000004E,0x00000001,0x0004002B,0x0000000D,0x0000004F,0x00000005,0x00020014,0x00000054,0x0003002E,0x0000000D,\n0x00000056,0x0004002B,0x0000000D,0x0000005A,0x00000003,0x0004002B,0x0000000D,0x0000006E,0x00000007,0x0004002B,\n0x0000000D,0x00000077,0x00000006,0x0003002E,0x00000007,0x0000007E,0x0004002B,0x0000000D,0x0000007F,0x00000000,\n0x0003002E,0x00000006,0x00000081,0x0004002B,0x00000004,0x00000082,0x00000000,0x0004002B,0x00000004,0x00000083,\n0x3F800000,0x00040020,0x00000012,0x00000001,0x0000000B,0x00040020,0x00000013,0x00000003,0x00000007,0x00040020,\n0x00000014,0x00000007,0x0000000C,0x00040020,0x00000040,0x00000001,0x00000005,0x00040020,0x00000041,0x00000001,\n0x00000006,0x00040020,0x00000042,0x00000003,0x00000006,0x00040020,0x00000044,0x00000009,0x00000023,0x00040020,\n0x00000047,0x0000000C,0x00000026,0x00040020,0x00000048,0x0000000C,0x00000027,0x00040020,0x00000049,0x0000000C,\n0x00000028,0x00040020,0x0000004A,0x0000000C,0x00000029,0x00040020,0x00000015,0x00000003,0x00000022,0x00040020,\n0x00000050,0x00000009,0x0000000D,0x00040020,0x0000006F,0x00000009,0x0000000B,0x00040020,0x00000078,0x00000009,\n0x0000000C,0x00040021,0x0000004B,0x00000007,0x00000007,0x00030021,0x00000065,0x00000003,0x00040021,0x00000068,\n0x0000000C,0x0000000C,0x0004003B,0x00000040,0x0000003C,0x00000001,0x0004003B,0x00000041,0x0000003D,0x00000001,\n0x0004003B,0x00000042,0x0000003E,0x00000003,0x0004003B,0x00000044,0x00000045,0x00000009,0x0004003B,0x00000047,\n0x0000001C,0x0000000C,0x0004003B,0x00000048,0x0000001D,0x0000000C,0x0004003B,0x00000049,0x0000001E,0x0000000C,\n0x0004003B,0x0000004A,0x0000001F,0x0000000C,0x0004003B,0x00000015,0x00000019,0x00000003,0x0004003B,0x00000012,\n0x0000006B,0x00000001,0x0004003B,0x00000012,0x0000006C,0x00000001,0x0005000C,0x00000003,0x0000008C,0x00000001,\n0x00000040,0x00050036,0x00000007,0x00000016,0x00000000,0x0000004B,0x00030037,0x00000007,0x0000004C,0x000200F8,\n0x0000004D,0x00050041,0x00000050,0x00000051,0x00000045,0x0000004F,0x0004003D,0x0000000D,0x00000052,0x00000051,\n0x000500C7,0x0000000D,0x00000053,0x00000052,0x0000004E,0x000500AB,0x00000054,0x00000055,0x00000053,0x00000056,\n0x0007004F,0x00000005,0x00000057,0x0000004C,0x0000004C,0x00000001,0x00000000,0x0007004F,0x00000005,0x00000058,\n0x0000004C,0x0000004C,0x00000000,0x00000001,0x000600A9,0x00000005,0x00000059,0x00000055,0x00000057,0x00000058,\n0x00050041,0x00000050,0x0000005B,0x00000045,0x0000005A,0x0004003D,0x0000000D,0x0000005C,0x0000005B,0x0006000C,\n0x00000007,0x0000005D,0x0000003F,0x0000003F,0x0000005C,0x0007004F,0x00000005,0x0000005E,0x0000005D,0x0000005D,\n0x00000002,0x00000003,0x00050085,0x00000005,0x0000005F,0x00000059,0x0000005E,0x00050051,0x00000004,0x00000060,\n0x0000004C,0x00000002,0x00050051,0x00000004,0x00000061,0x0000004C,0x00000003,0x00050051,0x00000004,0x00000062,\n0x0000005F,0x00000000,0x00050051,0x00000004,0x00000063,0x0000005F,0x00000001,0x00070050,0x00000007,0x00000064,\n0x00000062,0x00000063,0x00000060,0x00000061,0x000200FE,0x00000064,0x00010038,0x00050036,0x00000003,0x0000001B,\n0x00000000,0x00000065,0x000200F8,0x00000066,0x0005000C,0x00000003,0x00000067,0x00000001,0x00000003,0x000100FD,\n0x00010038,0x00050036,0x0000000C,0x0000001A,0x00000000,0x00000068,0x00030037,0x0000000C,0x00000069,0x000200F8,\n0x0000006A,0x0004003D,0x0000000B,0x0000006D,0x0000006C,0x00050041,0x0000006F,0x00000070,0x00000045,0x0000006E,\n0x0004003D,0x0000000B,0x00000071,0x00000070,0x00050084,0x0000000B,0x00000072,0x0000006D,0x00000071,0x0004003D,\n0x0000000B,0x00000073,0x0000006B,0x00050080,0x0000000B,0x00000074,0x00000073,0x00000072,0x00070050,0x0000000C,\n0x00000076,0x00000074,0x00000074,0x00000074,0x00000074,0x00050084,0x0000000C,0x00000075,0x00000076,0x00000069,\n0x00050041,0x00000078,0x00000079,0x00000045,0x00000077,0x0004003D,0x0000000C,0x0000007A,0x00000079,0x00050080,\n0x0000000C,0x0000007B,0x0000007A,0x00000075,0x000200FE,0x0000007B,0x00010038,0x00050036,0x00000003,0x00000002,\n0x00000000,0x00000065,0x000200F8,0x0000007C,0x0005000C,0x00000003,0x0000007D,0x00000001,0x00000001,0x00050041,\n0x00000013,0x00000080,0x00000019,0x0000007F,0x0003003E,0x00000080,0x0000007E,0x0003003E,0x0000003E,0x00000081,\n0x0004003D,0x00000005,0x00000084,0x0000003C,0x00050051,0x00000004,0x00000085,0x00000084,0x00000000,0x00050051,\n0x00000004,0x00000086,0x00000084,0x00000001,0x00070050,0x00000007,0x00000087,0x00000085,0x00000086,0x00000082,\n0x00000083,0x00050041,0x00000013,0x00000088,0x00000019,0x0000007F,0x0003003E,0x00000088,0x00000087,0x0004003D,\n0x00000006,0x00000089,0x0000003D,0x0003003E,0x0000003E,0x00000089,0x00040039,0x00000003,0x0000008A,0x0000001B,\n0x0005000C,0x00000003,0x0000008B,0x00000001,0x00000002,0x000100FD,0x00010038,\u0000" + }, + { + "COMPILE_STATUS": true, + "shaderType": "FRAGMENT_SHADER", + "name": "Fragment", + "source": "precision mediump float;\nvarying vec3 vColor;\nvoid main() {\n gl_FragColor = vec4(vColor, 1.0);\n}\n", + "translatedSource": "Inputs: vColor\nOutputs: gl_FragColor\n\nPaste the following SPIR-V binary in https://www.khronos.org/spir/visualizer/ or pass to a recent build of `spirv-dis` (optionally with `--comment --nested-indent`)\n\nSetting the environment variable ANGLE_FEATURE_OVERRIDES_ENABLED=retainSPIRVDebugInfo will retain debug info\n\n0x07230203,0x00010400,0x00180001,0x0000004F,0x00000000,0x00020011,0x00000001,0x0008000A,0x5F565053,0x5F52484B,\n0x5F6E6F6E,0x616D6573,0x6369746E,0x666E695F,0x0000006F,0x0006000B,0x0000003E,0x4C534C47,0x6474732E,0x3035342E,\n0x00000000,0x0007000B,0x00000001,0x536E6F4E,0x6E616D65,0x2E636974,0x4C474E41,0x00000045,0x0003000E,0x00000000,\n0x00000001,0x0008000F,0x00000004,0x00000002,0x6E69616D,0x00000000,0x0000003C,0x00000042,0x0000003D,0x00030010,\n0x00000002,0x00000007,0x00030003,0x00000002,0x000001C2,0x00030047,0x0000003C,0x00000000,0x00040047,0x0000003C,\n0x0000001E,0x00000000,0x00050048,0x00000023,0x00000000,0x00000023,0x00000000,0x00050048,0x00000023,0x00000001,\n0x00000023,0x00000008,0x00050048,0x00000023,0x00000002,0x00000023,0x00000010,0x00050048,0x00000023,0x00000003,\n0x00000023,0x00000014,0x00050048,0x00000023,0x00000004,0x00000023,0x00000018,0x00050048,0x00000023,0x00000005,\n0x00000023,0x0000001C,0x00030047,0x00000023,0x00000002,0x00030047,0x0000003D,0x00000000,0x00040047,0x0000003D,\n0x0000001E,0x00000000,0x00030047,0x00000048,0x00000000,0x00030047,0x00000049,0x00000000,0x00030047,0x0000004A,\n0x00000000,0x00030047,0x0000004B,0x00000000,0x00030047,0x0000004C,0x00000000,0x00020013,0x00000003,0x00030016,\n0x00000004,0x00000020,0x00040017,0x00000005,0x00000004,0x00000002,0x00040018,0x00000008,0x00000005,0x00000002,\n0x00040017,0x00000006,0x00000004,0x00000003,0x00040018,0x00000009,0x00000006,0x00000003,0x00040017,0x00000007,\n0x00000004,0x00000004,0x00040018,0x0000000A,0x00000007,0x00000004,0x00040015,0x0000000D,0x00000020,0x00000000,\n0x00040015,0x0000000B,0x00000020,0x00000001,0x00040017,0x0000000C,0x0000000B,0x00000004,0x0004002B,0x0000000B,\n0x0000000E,0x00000000,0x0004002B,0x0000000B,0x0000000F,0x00000001,0x0004002B,0x0000000B,0x00000010,0x00000002,\n0x0004002B,0x0000000B,0x00000011,0x00000003,0x00040017,0x00000040,0x0000000D,0x00000002,0x0008001E,0x00000023,\n0x00000040,0x00000005,0x0000000D,0x0000000D,0x0000000D,0x0000000D,0x0003002E,0x00000007,0x00000046,0x0004002B,\n0x00000004,0x00000047,0x3F800000,0x00040020,0x00000012,0x00000001,0x0000000B,0x00040020,0x00000013,0x00000003,\n0x00000007,0x00040020,0x00000014,0x00000007,0x0000000C,0x00040020,0x0000003F,0x00000001,0x00000006,0x00040020,\n0x00000041,0x00000009,0x00000023,0x00030021,0x00000043,0x00000003,0x0004003B,0x0000003F,0x0000003C,0x00000001,\n0x0004003B,0x00000041,0x00000042,0x00000009,0x0004003B,0x00000013,0x0000003D,0x00000003,0x0005000C,0x00000003,\n0x0000004E,0x00000001,0x00000000,0x00050036,0x00000003,0x00000002,0x00000000,0x00000043,0x000200F8,0x00000044,\n0x0005000C,0x00000003,0x00000045,0x00000001,0x00000001,0x0003003E,0x0000003D,0x00000046,0x0004003D,0x00000006,\n0x00000048,0x0000003C,0x00050051,0x00000004,0x00000049,0x00000048,0x00000000,0x00050051,0x00000004,0x0000004A,\n0x00000048,0x00000001,0x00050051,0x00000004,0x0000004B,0x00000048,0x00000002,0x00070050,0x00000007,0x0000004C,\n0x00000049,0x0000004A,0x0000004B,0x00000047,0x0003003E,0x0000003D,0x0000004C,0x0005000C,0x00000003,0x0000004D,\n0x00000001,0x00000002,0x000100FD,0x00010038,\u0000" + } + ], + "attributes": [ + { + "name": "aPosition", + "size": 1, + "type": "FLOAT_VEC2", + "location": 0, + "offsetPointer": 0, + "bufferBinding": { + "__SPECTOR_Object_TAG": { + "typeName": "WebGLBuffer", + "id": 0, + "displayText": "WebGLBuffer - ID: 0" + } + }, + "enabled": true, + "arraySize": 2, + "stride": 20, + "arrayType": "FLOAT", + "normalized": false, + "vertexAttrib": [ + 0, + 0, + 0, + 1 + ], + "integer": false, + "divisor": 0 + }, + { + "name": "aColor", + "size": 1, + "type": "FLOAT_VEC3", + "location": 1, + "offsetPointer": 8, + "bufferBinding": { + "__SPECTOR_Object_TAG": { + "typeName": "WebGLBuffer", + "id": 0, + "displayText": "WebGLBuffer - ID: 0" + } + }, + "enabled": true, + "arraySize": 3, + "stride": 20, + "arrayType": "FLOAT", + "normalized": false, + "vertexAttrib": [ + 0, + 0, + 0, + 1 + ], + "integer": false, + "divisor": 0 + } + ], + "uniforms": [], + "uniformBlocks": [] + } + } + ], + "initState": { + "AlignmentState": { + "PACK_ALIGNMENT": 4, + "UNPACK_ALIGNMENT": 4, + "UNPACK_COLORSPACE_CONVERSION_WEBGL": "BROWSER_DEFAULT_WEBGL", + "UNPACK_FLIP_Y_WEBGL": false, + "UNPACK_PREMULTIPLY_ALPHA_WEBGL": false, + "PACK_ROW_LENGTH": 0, + "PACK_SKIP_PIXELS": 0, + "PACK_SKIP_ROWS": 0, + "UNPACK_IMAGE_HEIGHT": 0, + "UNPACK_SKIP_PIXELS": 0, + "UNPACK_SKIP_ROWS": 0, + "UNPACK_SKIP_IMAGES": 0 + }, + "BlendState": { + "BLEND": false, + "BLEND_COLOR": [ + 0, + 0, + 0, + 0 + ], + "BLEND_DST_ALPHA": "ZERO", + "BLEND_DST_RGB": "ZERO", + "BLEND_EQUATION_ALPHA": "FUNC_ADD", + "BLEND_EQUATION_RGB": "FUNC_ADD", + "BLEND_SRC_ALPHA": "ONE", + "BLEND_SRC_RGB": "ONE" + }, + "ClearState": { + "COLOR_CLEAR_VALUE": [ + 0.10000000149011612, + 0.10000000149011612, + 0.18000000715255737, + 1 + ], + "DEPTH_CLEAR_VALUE": 1, + "STENCIL_CLEAR_VALUE": 0 + }, + "ColorState": { + "COLOR_WRITEMASK": [ + true, + true, + true, + true + ] + }, + "CoverageState": { + "SAMPLE_COVERAGE_VALUE": 1, + "SAMPLE_COVERAGE_INVERT": false, + "SAMPLE_COVERAGE": false, + "SAMPLE_ALPHA_TO_COVERAGE": false + }, + "CullState": { + "CULL_FACE": false, + "CULL_FACE_MODE": "BACK" + }, + "DepthState": { + "DEPTH_TEST": false, + "DEPTH_FUNC": "LESS", + "DEPTH_RANGE": [ + 0, + 1 + ], + "DEPTH_WRITEMASK": true + }, + "DrawState": { + "DITHER": true, + "VIEWPORT": [ + 0, + 0, + 800, + 600 + ], + "FRONT_FACE": "CCW", + "FRAGMENT_SHADER_DERIVATIVE_HINT_OES": "Extension OES_standard_derivatives is unavailable.", + "RASTERIZER_DISCARD": false, + "FRAGMENT_SHADER_DERIVATIVE_HINT": 4352 + }, + "MipmapHintState": { + "GENERATE_MIPMAP_HINT": 4352 + }, + "PolygonOffsetState": { + "POLYGON_OFFSET_FILL": false, + "POLYGON_OFFSET_FACTOR": 0, + "POLYGON_OFFSET_UNITS": 0 + }, + "ScissorState": { + "SCISSOR_TEST": false, + "SCISSOR_BOX": [ + 0, + 0, + 800, + 600 + ] + }, + "StencilState": { + "STENCIL_TEST": false, + "STENCIL_BACK_FAIL": "KEEP", + "STENCIL_BACK_FUNC": "ALWAYS", + "STENCIL_BACK_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_BACK_PASS_DEPTH_PASS": "KEEP", + "STENCIL_BACK_REF": 0, + "STENCIL_BACK_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BACK_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_FAIL": "KEEP", + "STENCIL_FUNC": "ALWAYS", + "STENCIL_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_PASS_DEPTH_PASS": "KEEP", + "STENCIL_REF": 0, + "STENCIL_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BITS": "0" + }, + "VisualState": { + "Attachments": [ + { + "attachmentName": "Canvas COLOR_ATTACHMENT", + "src": "data:image/png;base64,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", + "textureCubeMapFace": null, + "textureLayer": 0 + } + ], + "FrameBuffer": null + } + }, + "endState": { + "AlignmentState": { + "PACK_ALIGNMENT": 4, + "UNPACK_ALIGNMENT": 4, + "UNPACK_COLORSPACE_CONVERSION_WEBGL": "BROWSER_DEFAULT_WEBGL", + "UNPACK_FLIP_Y_WEBGL": false, + "UNPACK_PREMULTIPLY_ALPHA_WEBGL": false, + "PACK_ROW_LENGTH": 0, + "PACK_SKIP_PIXELS": 0, + "PACK_SKIP_ROWS": 0, + "UNPACK_IMAGE_HEIGHT": 0, + "UNPACK_SKIP_PIXELS": 0, + "UNPACK_SKIP_ROWS": 0, + "UNPACK_SKIP_IMAGES": 0 + }, + "BlendState": { + "BLEND": false, + "BLEND_COLOR": [ + 0, + 0, + 0, + 0 + ], + "BLEND_DST_ALPHA": "ZERO", + "BLEND_DST_RGB": "ZERO", + "BLEND_EQUATION_ALPHA": "FUNC_ADD", + "BLEND_EQUATION_RGB": "FUNC_ADD", + "BLEND_SRC_ALPHA": "ONE", + "BLEND_SRC_RGB": "ONE" + }, + "ClearState": { + "COLOR_CLEAR_VALUE": [ + 0.10000000149011612, + 0.10000000149011612, + 0.18000000715255737, + 1 + ], + "DEPTH_CLEAR_VALUE": 1, + "STENCIL_CLEAR_VALUE": 0 + }, + "ColorState": { + "COLOR_WRITEMASK": [ + true, + true, + true, + true + ] + }, + "CoverageState": { + "SAMPLE_COVERAGE_VALUE": 1, + "SAMPLE_COVERAGE_INVERT": false, + "SAMPLE_COVERAGE": false, + "SAMPLE_ALPHA_TO_COVERAGE": false + }, + "CullState": { + "CULL_FACE": false, + "CULL_FACE_MODE": "BACK" + }, + "DepthState": { + "DEPTH_TEST": false, + "DEPTH_FUNC": "LESS", + "DEPTH_RANGE": [ + 0, + 1 + ], + "DEPTH_WRITEMASK": true + }, + "DrawState": { + "DITHER": true, + "VIEWPORT": [ + 0, + 0, + 800, + 600 + ], + "FRONT_FACE": "CCW", + "FRAGMENT_SHADER_DERIVATIVE_HINT_OES": "Extension OES_standard_derivatives is unavailable.", + "RASTERIZER_DISCARD": false, + "FRAGMENT_SHADER_DERIVATIVE_HINT": 4352 + }, + "MipmapHintState": { + "GENERATE_MIPMAP_HINT": 4352 + }, + "PolygonOffsetState": { + "POLYGON_OFFSET_FILL": false, + "POLYGON_OFFSET_FACTOR": 0, + "POLYGON_OFFSET_UNITS": 0 + }, + "ScissorState": { + "SCISSOR_TEST": false, + "SCISSOR_BOX": [ + 0, + 0, + 800, + 600 + ] + }, + "StencilState": { + "STENCIL_TEST": false, + "STENCIL_BACK_FAIL": "KEEP", + "STENCIL_BACK_FUNC": "ALWAYS", + "STENCIL_BACK_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_BACK_PASS_DEPTH_PASS": "KEEP", + "STENCIL_BACK_REF": 0, + "STENCIL_BACK_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BACK_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_FAIL": "KEEP", + "STENCIL_FUNC": "ALWAYS", + "STENCIL_PASS_DEPTH_FAIL": "KEEP", + "STENCIL_PASS_DEPTH_PASS": "KEEP", + "STENCIL_REF": 0, + "STENCIL_VALUE_MASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_WRITEMASK": "4294967295 (0b11111111111111111111111111111111)", + "STENCIL_BITS": "0" + }, + "VisualState": { + "Attachments": [ + { + "attachmentName": "Canvas COLOR_ATTACHMENT", + "src": "data:image/png;base64,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", + "textureCubeMapFace": null, + "textureLayer": 0 + } + ], + "FrameBuffer": null + } + }, + "startTime": 1773999928746.7, + "listenCommandsStartTime": 1773999928765.6, + "listenCommandsEndTime": 1773999928794.8, + "endTime": 1773999928806.6, + "analyses": [ + { + "analyserName": "Commands", + "clear": 1, + "clearColor": 1, + "drawArrays": 1 + }, + { + "analyserName": "CommandsSummary", + "total": 3, + "draw": 1, + "clear": 1 + }, + { + "analyserName": "Primitives", + "total": 3, + "triangles": 3, + "triangleStrip": 0, + "triangleFan": 0, + "lines": 0, + "lineStrip": 0, + "lineLoop": 0, + "points": 0 + } + ], + "frameMemory": { + "Buffer": 0, + "Renderbuffer": 0, + "Texture2d": 0, + "Texture3d": 0, + "Program": 0 + }, + "memory": { + "Buffer": {}, + "Renderbuffer": {}, + "Texture2d": {}, + "Texture3d": {}, + "Program": {} + } +} \ No newline at end of file diff --git a/test/fixtures/generate-capture.spec.ts b/test/fixtures/generate-capture.spec.ts new file mode 100644 index 00000000..df55a6d0 --- /dev/null +++ b/test/fixtures/generate-capture.spec.ts @@ -0,0 +1,68 @@ +/** + * One-time capture generation script. + * + * Run with: npx playwright test generate-capture --config test/playwright.config.ts + * + * This navigates to the test scene, triggers a Spector capture, and saves + * the resulting JSON to test/fixtures/captured-frame.json. + * The fixture is committed to git and used by all ResultView tests. + */ +import { test, expect } from "@playwright/test"; +import fs from "fs"; +import path from "path"; + +const FIXTURE_DIR = path.join(__dirname); +const FIXTURE_PATH = path.join(FIXTURE_DIR, "captured-frame.json"); + +test("generate captured-frame.json fixture", async ({ page }) => { + await page.goto("/test/fixtures/test-scene.html", { + waitUntil: "domcontentloaded", + }); + + // Wait for Spector + canvas globals. + await page.waitForFunction( + () => + typeof (window as any).__spector !== "undefined" && + typeof (window as any).__canvas !== "undefined", + { timeout: 15_000 }, + ); + + // Let at least one frame render. + await page.evaluate( + () => new Promise((r) => requestAnimationFrame(() => r())), + ); + + // Trigger a capture and extract the data. + const captureData = await page.evaluate(() => { + return new Promise((resolve, reject) => { + const spector = (window as any).__spector; + const canvas = (window as any).__canvas; + const timeout = setTimeout( + () => reject(new Error("Capture timed out after 30 s")), + 30_000, + ); + spector.onCapture.add((data: unknown) => { + clearTimeout(timeout); + resolve(data); + }); + spector.captureNextFrame(canvas); + }); + }); + + expect(captureData).toBeTruthy(); + expect(typeof captureData).toBe("object"); + + // Verify essential fields exist. + const capture = captureData as Record; + expect(capture.commands).toBeDefined(); + expect(Array.isArray(capture.commands)).toBe(true); + expect((capture.commands as unknown[]).length).toBeGreaterThan(0); + + // Write to disk. + const json = JSON.stringify(captureData, null, 2); + fs.writeFileSync(FIXTURE_PATH, json, "utf-8"); + + // Sanity: file was written and is valid JSON. + const readBack = JSON.parse(fs.readFileSync(FIXTURE_PATH, "utf-8")); + expect(readBack.commands).toBeDefined(); +}); diff --git a/test/fixtures/test-scene.html b/test/fixtures/test-scene.html new file mode 100644 index 00000000..1cc1c4f6 --- /dev/null +++ b/test/fixtures/test-scene.html @@ -0,0 +1,120 @@ + + + + + Spector.js Visual Test Scene + + + + + + + + + diff --git a/test/helpers/capture-helper.ts b/test/helpers/capture-helper.ts new file mode 100644 index 00000000..d3c81098 --- /dev/null +++ b/test/helpers/capture-helper.ts @@ -0,0 +1,62 @@ +import { Page } from "@playwright/test"; +import fs from "fs"; +import path from "path"; + +const FIXTURE_PATH = path.join(__dirname, "..", "fixtures", "captured-frame.json"); + +/** + * Load a pre-captured Spector frame JSON fixture and inject it into the + * Spector ResultView UI on the given page. + * + * Prerequisites: + * - `window.__spector` must already exist (displayUI called). + * - `test/fixtures/captured-frame.json` must be present on disk. + */ +export async function loadCapturedFrame(page: Page): Promise { + if (!fs.existsSync(FIXTURE_PATH)) { + throw new Error( + `Captured frame fixture not found at ${FIXTURE_PATH}. ` + + `Run "npx playwright test generate-capture" first.`, + ); + } + + const captureJSON = fs.readFileSync(FIXTURE_PATH, "utf-8"); + + // Inject the capture into the Spector ResultView. + await page.evaluate((json: string) => { + const spector = (window as any).__spector; + if (!spector) { + throw new Error("window.__spector is not defined"); + } + const captureData = JSON.parse(json); + const resultUI = spector.getResultUI(); + resultUI.display(); + resultUI.addCapture(captureData); + }, captureJSON); + + // Wait for the UI to be populated. + await page.waitForSelector(".resultViewComponent.active", { + state: "visible", + timeout: 30_000, + }); + + // Wait for at least one command item. + // Command list items are plain
                  • inside `.commandListComponent ul`. + await page.waitForSelector(".commandListComponent li", { + state: "attached", + timeout: 10_000, + }); + + // Wait for all images to finish loading. + await page.waitForFunction( + () => { + const imgs = Array.from( + document.querySelectorAll( + ".visualStateListItemComponent img, .resultViewComponent img", + ), + ) as HTMLImageElement[]; + return imgs.length === 0 || imgs.every((img) => img.complete && img.naturalWidth > 0); + }, + { timeout: 15_000 }, + ); +} diff --git a/test/helpers/spector-fixture.ts b/test/helpers/spector-fixture.ts new file mode 100644 index 00000000..ba101984 --- /dev/null +++ b/test/helpers/spector-fixture.ts @@ -0,0 +1,114 @@ +import { test as base, Page, expect } from "@playwright/test"; + +/** CSS injected to eliminate non-deterministic rendering artifacts. */ +const STABILIZATION_CSS = ` +* { + transition: none !important; + animation: none !important; +} +.ace_cursor { + display: none !important; +} +`; + +export interface SpectorPage { + /** The underlying Playwright Page. */ + page: Page; + /** Inject CSS that disables transitions, animations, and blinking cursors. */ + injectStabilizationCSS(): Promise; + /** + * Wait for the Spector result view to be fully populated: + * - `.resultViewComponent.active` is visible + * - At least one command list item exists in the DOM + * - All visual-state images are loaded + */ + waitForCaptureReady(): Promise; + /** + * Trigger a Spector capture on the canvas and wait for the + * `onCapture` observable to fire. Returns the raw capture object. + */ + triggerCapture(): Promise; +} + +export const test = base.extend<{ spectorPage: SpectorPage }>({ + spectorPage: async ({ page }, use) => { + // Navigate to the test scene and wait for the canvas + Spector global. + await page.goto("/test/fixtures/test-scene.html", { + waitUntil: "domcontentloaded", + }); + + // Wait for WebGL canvas to be present and Spector to be attached. + await page.waitForFunction( + () => + typeof (window as any).__spector !== "undefined" && + typeof (window as any).__canvas !== "undefined", + { timeout: 15_000 }, + ); + + // Wait one rAF so the first frame is guaranteed rendered. + await page.evaluate(() => new Promise((r) => requestAnimationFrame(() => r()))); + + const spectorPage: SpectorPage = { + page, + + async injectStabilizationCSS() { + await page.addStyleTag({ content: STABILIZATION_CSS }); + }, + + async waitForCaptureReady() { + // 1. Result view container is active. + await page.waitForSelector(".resultViewComponent.active", { + state: "visible", + timeout: 30_000, + }); + + // 2. At least one command item is present. + // Command list items are plain
                  • inside `.commandListComponent ul`. + await page.waitForSelector(".commandListComponent li", { + state: "attached", + timeout: 10_000, + }); + + // 3. All visual-state images have loaded. + await page.waitForFunction( + () => { + const imgs = Array.from( + document.querySelectorAll( + ".visualStateListItemComponent img, .resultViewComponent img", + ), + ) as HTMLImageElement[]; + return imgs.length === 0 || imgs.every((img) => img.complete && img.naturalWidth > 0); + }, + { timeout: 15_000 }, + ); + }, + + async triggerCapture() { + const capture = await page.evaluate(() => { + return new Promise((resolve, reject) => { + const spector = (window as any).__spector; + const canvas = (window as any).__canvas; + if (!spector || !canvas) { + reject(new Error("Spector or canvas not available")); + return; + } + const timeout = setTimeout( + () => reject(new Error("Capture timed out after 30 s")), + 30_000, + ); + spector.onCapture.add((captureData: unknown) => { + clearTimeout(timeout); + resolve(captureData); + }); + spector.captureNextFrame(canvas); + }); + }); + return capture; + }, + }; + + await use(spectorPage); + }, +}); + +export { expect }; diff --git a/test/playwright.config.ts b/test/playwright.config.ts new file mode 100644 index 00000000..5cd7c3bd --- /dev/null +++ b/test/playwright.config.ts @@ -0,0 +1,46 @@ +import { defineConfig, devices } from "@playwright/test"; +import path from "path"; + +const PORT = 7777; + +export default defineConfig({ + testDir: __dirname, + testMatch: ["visual/**/*.spec.ts", "fixtures/**/*.spec.ts"], + snapshotDir: path.join(__dirname, "screenshots"), + outputDir: path.join(__dirname, "test-results"), + fullyParallel: false, + retries: 0, + workers: 1, + reporter: "html", + use: { + baseURL: `http://localhost:${PORT}`, + viewport: { width: 1920, height: 1080 }, + deviceScaleFactor: 1, + launchOptions: { + args: [ + "--disable-lcd-text", + "--disable-font-subpixel-positioning", + "--font-render-hinting=none", + "--use-gl=swiftshader", + ], + }, + screenshot: "only-on-failure", + }, + expect: { + toHaveScreenshot: { + maxDiffPixels: 100, + }, + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + ], + webServer: { + command: `npx http-server "${path.join(__dirname, "..")}" -p ${PORT} --silent -c-1`, + port: PORT, + reuseExistingServer: !process.env.CI, + timeout: 10_000, + }, +}); diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-default-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-default-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..253e89bc7b6657f7d0e719e6a76fd0f0e16ea206 GIT binary patch literal 6750 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 bkPsOGbEJ*}<}!5*|AL?>t143~Wg7fHj|)30 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-dropdown-open-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-dropdown-open-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..c60aad68257851872a4b9a60110f64de75acb5c0 GIT binary patch literal 1976 zcmbW2c{~%0AIC?OE6Po36){)Z=4iQ>mD$`mqT!)pLdvHnIW$IH*Tn zm51|4-L|(Q0e}tl-u^jVY+ckA@kBdlWqo~}3wq7*oln^2veb3@ zdjju=*60%tCumYc>=XIBX2P3xaQek4tI|X@C)#;x8`p^s$%XWQ?Jbuc7D>NK<})JH z1|(Mgy4&|lW6%#qGB7$iy1`82+FNx^DES?B40^`Z8ZH7E9v*&o?~}NEN2Z#yQ*-F& ziHY!qzbPrQMxq>n8;drh!Cyb7+LYRw*4!wb zi7DGIPc-dyWhg&(dQ3+kpvge}iOETG-pzStu0s9S`ZHQStWz!c4L)s4N7L}y`vcN; zm{;eaicKHNJn#NRY{a~wv+X>~8+5rJv6IHW`m@a<=BTeu^A(3KkAV4Rt;`*HU^Dq| zW8h!5eoR&vm^@3!l3=aJv|w%1!ppF78 zNIE;;Lr%aMvW7g(*Eb|#Ff_Z8$ma?i{->NEo zQPo)FGTnjK&Ld6h;e^VaI*YvJ@kWX4>*`0hv~jCqov0&MNPGl$TrKjZ(L&Xwg+m(*j^hkH&)`7ZY>V@;BLJetBz$ z^L}O2{ig8WcxGdVaE%GYN+Je%x<`~ny1ycPYj<~+k(^y^somez!P^H1bmwR+(G$;z z-A54xgoGv=0ut;m3WF4sOulIQPCcO}wHUbw5IxP)uY&dp#Q4QkEZ~-|F>1E%%Bmcb zwd}&g#1`)Y=p$`Gh9%W6jt7}h)9nRS&jf#DR#Q~x$EPLg6m z!TC=0zeM%s>(6sWSG`;qF2^*2iYn}5>o#`Q+`HJoYBwdQx^JZ}0RJeC*w&_Yeb9u^g3bz@bl4M&N#K9X;{Nc>Fcdn;aq+M&gkD zT*yDh3qfC>EVK#6cNUrFzmT|e1J4hyGSq%FV2E?3FxJESnd&;0MpJT0uMYKoFPDGxO1n;Pc5pm<9X#*~Ua zO%AMSwWJyf+-VFnWecCC{*=uw$z`%FygJh^#n>v@2PA@0cT7E;(Z^7W3t=93KFZq; zz2bsjcBcwz;w)%FWZe+W#Ef584eST9$vs-IHh$S3gszOZMpkMpJ}i=(jHsMg7*wsN zOwcW|dxm!~Wisej>ZwdH%0B$1>;64XMFd=eCr_VWsi%gKY#S^k^kKDU`jZD%@S73J zo#R1(|0_k=_h1pjF`M_(XJf;{xaDLaZP}wo6MJ1ZmqeFNr zC#sThq5}bR8yn~oK&&8>`+OH=-C4=Sq#IK9FqVSoj1Jqr=1}0<(dg)?J0!6wM1~Ji zb(Xfd7vP6nNn>`l`^RNyE>gh7nTnVIJu^LIZ6OXgqcw}+$HLN Dm}k?? literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-error-log-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-error-log-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..ff6dcc018c0e510bb3d2607d32472067b0924498 GIT binary patch literal 1453 zcmbu9X)xOf0LA|(QK~Z*Rb<&_R9&l0yGurzS|TG+2@%mnCDzh7LgJ3Pss}Br-AZZe zia080#L{T%))YM)b)^;5(Gsb|Rb-3S+S#w2-4FZa&3kX&r}yD^%?;>QeUWs60>oEG+KhQLK2eFEW`7Mmv z^ox)Z8wo~=vJcj@XLE|LzV)!=sLnwQwNcBn#)$K#2*xpxYsmZ|OjCXtCa*OB6Pr(s zT@jy@9Se`kmKi&5EyQSJBp`iANr(mF4GYSBIwHWt=${DBZih9%J@AL9V&jNCpm?f(gJ2-q~e49w) zfq)$z*MBk5sr#lNoiMv99+mQBvdh{Rw(vb{euc;8xpU`&enpP4Hsqka2g8A|oy;>e z&8?4u5~%OQeSLBArO6V8oAKl;`iJ(^Hg~hJPunBabv~5KF!Npl(p7K*s%i3f9=*$+v6vY~%A=a&fu_`c*=6 z7%~CXO&eFm338z!9ST$nT#w}Q_JCCC>g(GvMr(ZRwd5YwR`+0S{Ml7y<^XiFDkTWv zVcFVJ>xa_bViUau(QC}BnTbLXlERp2o+&+HS#)>QqO?>q8zKjJuzIN`}BQ?H0 zXppjBE(Am0~*JP8Pw)WczEH>(S z0If1$YXp*1OPjPakjZ4Tk^OV`p5Q2f(;OJ=A;p#MiARMDD(wUX4|F|DkekO*D@fA2 zsR|a!4fTZnJ1hB?c!%|2a|Shrh}U^rntnqrA8SywVxdiAxqmKkxto=d1YI>1=ki-* zyMKPRsR&{mXR%aUhK60@zrfx0uFiI5hVc9+?;rFczkYV0C%?!D+5jCLETImjL8bys zw7|u%TBzGJ!#{dhF;K(`Skfkz;VPX`16r*om~xirq$)M(UHg~*@3~>BYw#nOrhpUUDh03s(&fnL? z&`E0-mEL$3u!%^aUuD^8ybqW#;$jxK2p$jFEH8ccesz^Sb}3|^^`e(+87-y|M@fji zEn@jY*fWi{gjxt$m1aIqXYq7amIb?D5NfTuFf;Kx8M{y#;iFd-8oTKZ^R5}Gp8`sr zO6G@X%Ok_NEU{5Jr$ef=8V2iX}*6!@6JE)^~jmqD& YRRYE(oDJNNn6uje7!=O2#=-C6Upc(Gga7~l literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-fps-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-fps-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..582ee19c307208e98d76ba7935ecf153847456f4 GIT binary patch literal 784 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 bkPsOGbEJ*}<}!5*|AL?>t143~Wg7fHj|)30 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-hidden-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-hidden-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..253e89bc7b6657f7d0e719e6a76fd0f0e16ea206 GIT binary patch literal 6750 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 bkPsOGbEJ*}<}!5*|AL?>t143~Wg7fHj|)30 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-info-log-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-info-log-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba6b3a25fadb8cdc069d7c80daa8191230535bc GIT binary patch literal 3196 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-please-wait-chromium-win32.png b/test/screenshots/visual/capture-menu.spec.ts-snapshots/capture-menu-please-wait-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..41642eae689fa967cfb32842178c855d31d0b606 GIT binary patch literal 2556 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 JW&_uxe*=i`*r@;j literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1023x600-chromium-win32.png b/test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1023x600-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..c9752869b91de43c349f330469b2300bc022b3a9 GIT binary patch literal 47945 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 z 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1920x1080-chromium-win32.png b/test/screenshots/visual/responsive.spec.ts-snapshots/responsive-1920x1080-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..b9894da2d69761c667393331afd6042caf6c5356 GIT binary patch literal 68289 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�I^`Ljcz~{X||F7`4FVhZ7nq5mky>&sb-Q&;%UfKr(FhN}pRz;XVq0L0X5-q1( zC~BBGRse1YMKI<-Man{1K0%(mJSx*~Jbudlfp@!p12#ep`7nEcNcR|hZ1^zIelSly zxyKThjEC}oAw{EhP2?qvj7lj_#UMe7m!G$@kNPk(AN}$Nl@_o++eBowo%>VY@$&Ls z7MfPz@XM3vwfNRcH2(Z472eL)a&Ek?2=hgCzfa?meGRUq9hVc-eiE+M$mJ6^Ts&%Z zQoA~j6DrS@G3=FTDu|5mn~>+h2<{ z4ZI}Lvmexohdxc2I5yv3-TS&QpqERIE}OuY3@qVz>o`PqFg|H+bW!kk+x>yO0Z`>6 z)He#)Uh1Db7^&~6HsBC0s^qZF&|m_8YSBAOzMN?pd@a;=S)~8ivq1&5`o}RNEiJ8{ zg4cQoF3DlucitIrEj>ro(Fe)+@|Ar2!1JZWDPScb?md!NZ0L6~)>j3gML0}W7>(q= z2R4M`!^8`&E>tIavx~U+C$i$4+d+SzCy$AIBj+n#=iIC;ktf5?q|i;xy94s_@~ja= z%vu#52L>2={MUGY`~x;83e^hg9{zubV>Gt2b%zqOl_s4YmL+nVqGjR)cHdUsnXZ46F(W1+9Vo6f&==>AKhO z7M0H9mXX5eRut^Qm{PQqUs3Vp%#@}UraHY+k@#kP7Oxf`EW+XN^mMYSyrLrO zyW1PXn{7?EJD<~CC+9{E0Sjbx(;S=sA@-EC4$XG2lEvLOMM)T^Rl@v&fb`374kq0I zA#YvGIY_~ZgA(r_Nc%Gs>TW{ZwknIkq)bMpVqBr~tW_ySYyiPp>gp!zPip{JDM}q~ z@w;+=Jjhqes~?__kPs5`@bTCdU%dE!^O=FZ3sJFV`M?{o40FvAt=Hj)g#|G7Pu0~W z`i*~JWw_p!O&clEfo}pJ{Qd=Su6mQ%Cc>S1AdCR=^1G}@MI8a)kjTSAiW**t752YA zcM=ri&G2VC%;0u_HRbHGZ7>|b?743$ZRZ-)2fX)Z>lI0ek+12g?k6QW2f2pC=L)?4 zGm#fYWouMgu>z>Dr`NlxTvknOR=Mgn-%LT%(7@ zz65GR-(&7woRN&cxKU$i>3h5^+q8-P?dh7SdI9~f_8I;sP)&n)ZlFcxt5e`0nu>>j z-fA6CzSL4&nzG0o)91B_4^(3j_C7`g>lW zBt9|0ed_%|x)IIo$e&(2AD^%5%s=ebekpHbZQWB*CD9-H%3EeQYt_gM0#S3P5><59 ztul`u6{f}P5#po4O(NTAicgH74Rn~UmW3BqDTTbEA(c1N+OAgY?M|d0YvbhNk~39L zmi@o3h9`!WYB~&O*Q&gzD1ozB9s*y`LKJ@+jvaN|+1WW!Z-2=*^jX;oqH5vh=GMTs z{Y(J3P(Ur)NY@s#-XwpHqEYb4z;qjazJ$h>o{)%J3XT`epM`#du6KyWEP4!F!N5To ze-7>`U~Bpv)M7a<>!F&>!o<`&8%r}kQlONalte^C1fa?ftAnrjvc22Ri3x>K(gVg9 zs5Mw#l>p7xjg5^Re!?dau0jE~z7}2<7H~J<{%g$~TO%Hpv00M#1504ukB^lJq@g*M@Cm$pz0>(|WbF3Eui-`y}r~k|` zK?{`$Q6E!g(W>|WI22*kxu4Vi`EtL?)e02#dnGIWtOQz}_5Xb^^4J3pz?lE|1^mAn zxv+|(8B}}-{0lydm+po4JpT;t&rm+@yi&^obTii2bf?69t*?yb6%w`lsoMdKX5w{g zwyn~0r@trYeND%U2d}lS8Xb!6CFVq!vp}L{>UR1wZ?m?#$_df3g#QvxQKs~Ztu0(3 zqMmN(-u|fuxgqWTtEpo|M8QaNP_Zw2y(W|1d(Fn6j3ZnjMFo zfD1J*zV-Dj?ts(miCUpTG_(osKLKSMrOc3p`nRO{vly6f>rP%Y0KRW zd4v%;u9tornE~*fpLjNFg|?enX_{KjKhg)uZ*EOg70M8o^DLQHs=aBQKUgf}g^seC z8t!c5(_gK&aT}b&0IK~r@ch8g_b&6Qw4Z3OQFs<*G}3yfD(rXFQEF1q7iWxo+BU$h zgPg0l>#*u=Ww-bK+_c(ai5R1eo`gihC5yI!d+Hn}eK?O>t30sm*gc>?!A_r0PhIj}4duD*x_sW@t&eU$&p+Htf-;tjt}WHzi-;Svs9AGgI? z-^Pk#jP#tmYc}4#DMm`g`WyoYJjg|sUo!aX?zOwUT9g#m#MP3(9J@@aS z`4=c=Q2i&`k`j8{rg#63y!rodpECfzd~okyM3YSNk(gO4>!Xd`zkSU9hs(@0#xg8U zYyS;~7OhjxZuGIx9HV#drt#b!e?fl&V9=xFa|brGws#VLNjcj8Y6v8iIz2s&M6yru zI4-trj}?#AxVTBFs;Q}IY1IL7j2jC9u(HRP6#PEdh6|ocKKG~YYC~HMIBl}${cR=| z#_v!C+n3aav%tk(TwF}}208iXFj7ZKd_$p7iS$ZEOdkf)d4U_6_c{GrS^dWNKM_v} z0^tdG#-t}j6dm+m-LiW1T?`D;WEAa0t*+h}>JEE)#x}(4%{TiTE_VQ76xIvvzbNwp z0l>1|d{cdCX{mr>L~w%eSPk_`eER9IJlo!Ez1mlq%YG&h@8wM=jcM&fX2SHY+n2!d z02E7aL4)sw^My|+y416Lkw0hkJEUp4=t` z)ZSsF(axLYE_3_nc;LW2n25-&_1u4d?_!QSHpc(R^V{wEtdsVT#Q~qk%p_vh7r}eQ zB;CpHa9H}1IB9;e&|}9#AVC-)1leD&GR${($)1L02Hbi*<^>rH%~e~eIXP9@a&vOp zPF5@}e*4tmw9w)Qg+k5D%m!|81%7|bU7*kORrRn`jCV8VPs=C(J_rY3@zmT5@Q}G! z9EaQM3soOqz|zXu**VvK_MpW4Wo*>c%MjDKx3qZ{v3E8Az@5SdZi#8pV%hH6JAQin zId_)j0WJ#N$GdMa;vFZ_gl|NF1Jo;IVh>|wlg+XH3KMejJ(^JWO+p37_9fhO4%YSB z4pLg|o;PyeemWkRo4?%V2*}4&Mx|gn=%YftL;I>SPTr`-yrJ#Bn7U|gTuX-Zs1?%h zJf2+N`a(T)R4vZy*Q%m;_fo3PW`gyCFNs;3sudUO1>@fc8fPFkeKXm??rJ&v5SQ!) z+f1bWrt0AbJ(XXAN1C5eamP&jGLiFM3K|ZtTJCHftftftKO)c*d{rpM&%%ozL9?Q7%afBSw;%295uK`4k|~#3dUrCo z)6&d7i(2}Fz5{i#e5|K>O_b5)cQ+oi0`kXW{PH1v8Ok(!2`qWd3+$*#U19IbjX@cD zclZ7GXV)!qxrV%YN}eqMww=s`2L!)#A7Ek*4{3DWNCXMx@wZ-7;mU48r34d(7w)JD zl{!ZJ?|M~nlig+OhfxEyxIf<{1<>Bg1}YAluj>@A0KQaw{?~Q$+7UjgT^WKtwYKHDUlqBx+W;il zB%^w#MP5W}D%S#SN<~`8R^VCY>6LsstQr*BafR7Wvf~L_X(P*WZCx3{O-c&@@gb`NK5 zlb4?H#v~($>n?<3i@)`}vbwi6*gAYXWkIrMK=GS~^nN%+v#xc;!Oi*x((kstwO6T7 z(qg||_&X3(Zxs07awA^{8cHGf1MGGZ8&->dw5B(v4{XA9X>hpjI$vAiX4*j1Mg#$M z7YJZ4=2I}DbMwBIX)w8@>;;sT?TThuOsIqqJfzcBcVsL9{Hn(Hx;j@+~b9;#v` zp&ummjQ3q-V$T=~OzTQ%h|?}fSm%D?YY&L8AaKwu(_=IgZzg&FKtYQ$G?Q5T*svbTzw)C|0t#N4Am=on#=-%5h)4D`e0_ce7kq{ zpTMo~_(vH6@#}{H(lq?RB00Z1;#=Yey2HK_rERM|d?9xEn0)ETF_ zd?5Fa0T#h#8);#miF)d@Q+1($%YDQ_lMou*vPn%%`r%eiaO-1A-i{jPhJEjpfns^kr-sZy@GE-5VqbIe# z$x-h1#+(d%@;i&A;;Ezh0FnMdzQeU;)jYu7#fM9*z?6A*Gq1H@vdzqvaeKirLg8zB zn&~j&$Jfhf$X5uGXPGW+_0?}d=ulLKQVB^00`)yiP{QRzl{r+coK*kUzaYd0g)`oicx{N!iusjjLj(tS_oaht>S z`CWWy0EHli&QWgv&aW&fp12IdncA%wx3qM|UjvXWoK9AqYMJfr`%OQH-bB5@Ao=m1 z00!+i@-L#Geau?ql9`w+ilh+ox<$=8kOMG-7I*L7xeh4W^+v^KBw)|7zQD!Nqwx2sE#7S}_JLxIq%-qLH1>NnpYH%6!(m!M!tZ#lb~ohtM%52Z&r7~`voD@FY+BYa4L`48_VT3}J|Sj_9_eZWh$?J#hIj*(kuXtORs*oFv9Ym? zu;Ri(6|^_k&p(z2Dl^ySHkyeJVwh<^?~R#k7CzYC*K@CAp(pyotP6eDHqX6U8D|&L zi_4mLUDgF|&sREQDcIQ9768E=IFVfTvk0^gUrY!$ZL(;H{5fa8m~>Fp&iT+6A@Z1~ zkgw_|8<^PcOxZk^O?V zxx$Gw>+0vx>~-7jN|2D>Y0)BRepQD{|{gO$0tQq3c6i40J-6EZVf zO*)@W%{O@+!6hR>OiYAmI4IEbdtbkz+wzj;KrSyr4`O3fA3Q`` zyrli6zP#4^KF9pF$Z=_27LV;pP(pQoqLxql(;kR$kjN8aKoLAybJS5Pwsjp(meO zZ0mA!bF;IJHU=_~`T%{@(4h0u>H#)G2nYIab#;Or|FWy$ zp4WIPfPUJL`(t$>orL4Jcy8R)20a$d!foxlE8EEy#`3e+xd1^v{$U3d%Vm0GJZw=6ebRceiR|CIG_8pW@!p`+03;+A5KQa;b$ zSu{(IJhPLNz)s`ILH8YN7s9uxpRlgH$`|aUs3m`!`I7=K;^1KOnvED}x&!EwZDaIq z(+lTi>v2Jw>B2ulurV9v2SLvXj^g!q((xe9=0(J!i6bMKO zY^Aq^P!a+JP>Rx(7D6B(Qlx}P3!R(`e4h6`=g<3{^PTgJ@%=dbV+?Y0=f1AB*0tuE zbKXd(fO=?90uOsWB(`l{jNiZ^I3biGnN@(rdV6>vH>Pt1w+q%@-wQ4v?6Y6H2(c5) zxI<^q0PEyEbzDQ+U0iZ^$kHd=RLjRle8hOxCx20 zihm~H9qmgS*L<0g`s^mgcbcBvb!aoz_5SuD8F;ksrWnW@8UWVw zAa=eiiRy*gI|iCBtzCrARO^d}yEIwUM+&*ukpvyBSBB3G)aHtHKX|{1Jyt0T&=?2= zCc6I@s^Vhx^b+NqwxeNX#l{D$E!$uW*JHB}O)bqz2S2aEXf*%MQoFNl3VY_JNzb%O zF#p899NaPKB(8DR;=TLC+K>wNa1rrb65}tVug)?DT6*tKEC1-_#3sNv*G&yQ^vo@c zZW)Cco(_zjxj)hl?>c=C?pvf;TzSP&;^*ty6sMp8*q?g{f`%rf_F}2o^5dGaw#82E z%!S!78>m9UyZ!W{!^Pxq{3gD`!pzRJ7Te&C?=xC76P82nev`B8`+srboCB5`oYY>; zm|@d?&Q>)l2!wW=En>ewWEeZh%CFW|)eO&<^s2|WNM7Cj%%5y4jcr(!+)%ABr`}Se zcp<}KFB2$BbQT(BE))doIui1{Bs@-bOpl6zmf4~&P0^n@M=1kV=7C2f4TK>+5xOQx zl(S-s1C2r2FF(vTVdlm|ED&S)@Y~``W>onTdbKIJMS&8OCRNyxKOyxi_h^ln-^E0= zemmSWcn9Rvyh5!{QxVUcKF5GYKmU6s9*@t-(cV{|eF0);ND!U zV+Iy7N{g*Sc%#oy^=rn%`(}`G;~{cJlyE;ug_ptL7;gWIhlj_!*vib-Hf-(Jca)fg zq&5E5zUyy%j{kCrchai6^8M*_rqTydTuGS>h7m1jUf%8D*pw!RnQNT*7$I01$MvUm z%XTKdOsHSt)Mnw7_V&GpWUW*_aQ|}WOdIO~7?D zL-#NNnvlqn+5`Vw%Fptl-Clsty>qAa+d_uaw54y4)^rJ|RzVbFO4W45LnGmvJgj`R zF242_Cat0GQ6HIXVQTu54$7qGV0nIJr6t}dU4;lhm|@9cP4e>&<2b&sEKPOKyvQQ>&kPHHmL#eor$B zaE%Y&2dNa=S!ObmQnfp_%-*Zif`t2NCOKwqlgVYyFYy4|5H?!>z%64n^(H@T>h_%b zEN;28f)N|y8A7cr`UyHlF(bj{o#o-$FqzL5)6P3tCG$`L!wvq@*49?A=AgZ!gpEZA zJ6pGYGUiLnDlo~*8vA@Md~0ptN0p8K=WV8lbVYu?9#h?C^wG0%MPCu+x27sygXN3Y z^oRh2N4S66F*L{8N`U{OAEowe`I!Be!}Up@D~r-OpC4zVsM02i;%2S5JscIKl0gbz z^~FX^%wM*k7z{2Qz4R~?WCPxy=wk*k{9n@9pRzVg?Y5Wf)Y`e@v$J4D2fc3^F2{2q zx9Cd9lOHKtM1kJ zgT`;!Am-hAgJMV4+TkvOt9Q-)B+J!?47Xl$uO6MRmIiz--^=CS8y3Q0Lq)ptgQ>D6ptMN?=iz1)qj;Fn&lX4q^c?@+)XefLKfLxf0>mE7gOiy^A{>*AHfbNqm4ggF z-vcQa^E^mtE=GXda~BaA(aH`Llr?Y;^$ba!8!fL3lpfE}R}~Rfl2pDJJwnP1ylDum z8g!D4a>oPfRIt-JsHwh3)A^lXJZbz#zw8?_#%7k1i^EB)tA~RWC>r**#P*^=JQJW3 zp`qCDz`}iqG1y~qZ#0pk7;Mt64s(dl5wQKT93Rep;8iR4^6wM-5mSrzJ!IcS4<{Y7 zTc6*c62cwj#LM7q5Bl%|l~?9FI}L1(>_U@oPNeC~(?jRpA$NAG`{|#u{FJVmKIOYm z+re<7o|*_!51KW9%eJZVz8j@%bk4(z;>xz>Z5aJFqgxU?^M@GdWV#aXXD`@wPNpAQ zrEdX5a#^|cNA0Ih?=8IjJ(GXT5IZ!Vi3TH;%WV~G~{B~z6cfFv@YYvO_ ziHY9eG2!2|&6_%RG-afnzgtVIVFXO*!SD)Df54QQ1m;b+!~K6nx6SXs^qju^^tqa7 ziPx8M?_1SXF>5xq>@2Y8R1I5^c!K1rF6Ah+ZjvpQ2`TX;^H||DGo-0dj>5m=s(+2G zl|j#?pFHkjrnh_9!~6ID`r0TeT=CHPp|z=nOW;qlh^zwk3+7l_5qKx(!Bhh!Ufx9i z1YEeCuDo3Z2XRpU57+7svMhShFZHR6D6SPSYJxy){}_E==>^+7kj>DECrHW2x~o*Y zU@t>=+@dB0YP8(MOkkFk2mmi=ygOw^<$6b_5e!bhWcgcvPfq*gL8R|Zu0}N=0_Dm= zgoo42pi7ApDWoFV68)iE1w|x9c8OxBJ@(FPXoZX*4Jyznx;3J~hem6Ux8-rJ@_S&t z(l=Ir%*IYu>`oORk9hYz@DZ8{9G1-%N#Kln5Q*z-boCc1i{yHinSP|(RTpoQjK|7& zZcb_;V*SbraYl}~ zwt!c542R-=KFouUygTVA{%Y?;b>xrH$D-&V#0dTP-H~pSjWKKTmh(g^4?Uz$WL$|0 z!pkfDW5WS1SJuo|o@`F|^T_4uIf-Jko{;yuoEwshiN=#B)Sd znUiF4ujg75Thr*CydKc?n3Y?P4Q)j|g&7Cu>f%eF&&^xpaHW~=k%RYlt`wGuRBP-l z`{DWn4%BZfnOXEFUmI0vYN|@dHFw&dB2aGpu)Qb1uWD?Qd~8K@!|>-6tP&OBsEngV53{jWV8p#y=$(D@MxK+)WhPP7i=CCQ+5DQ$nXxVB=`(~kY#~+;VBy~DBx;ihz zjf!qduFctUh|SazN+xVq^pm~6+j0~#Btl*)6?-i9VkQZGshr%q%$MtrPCe@3Q7xD< zIma4p{uHCzZsL&(EWRAH@`k-Jf6hj)Xh$4>mz~dm?Shp-S%k(ddn`^?rO%gxkm+?|I1@g5dJlvrDQ7)7^!=4x|?*si9Mc z2sFP7Gx^&oTBFVhw@>@owDcfGI0g*OUvzkc#w%PcjaSf!7T?kn%7*nYEX8`xikzA?{7`FF zD(+-eQTjS68ZB3@f=zio@`hnXwd81nS+-$3>*&!nt6i=H(cNnu7P$X(T+Y{VDp!5` z{+NIkepW~WqbvYz?uZ1vWwiL}@i!{i7ej;_GPEYWIveUGq7&ma2btZ}7bC;d(s^Hhv!Z8Kc)ZS!$MlAL>lBc+7mKSvdA@EZ~+QKDq*J^Vurjd_aaK=1TjsMc(`| zez?sJy3>ajV%~Ze<~xJi;y9)JVek4^!1XzVf)YcQ(~deO8!_#v<%C`ZnF$~Y?& z-Rhm_N{XfV2>Kbia|J0vwJ?*Hg2)?VW-Z%73okp}7WZ$#G!`z7U*dva9S>WxH9Qb> z5J1V0zxe(bRih}r)e3w4WDQ2JfC@l@g=XV>^|5ADL z^N@$*N=)NDT+g{#JL$H?VKqX(FT{g!?VqNledr9mly10W2(Ys|f`Ir|s zK~Bc5BHD8Hvh$A4m{*n}Pib}9MGS)@>YBqZ|d0dXv=?U-ZZcS9q48eSg4q{)r{ee01gM1`= z`V89KwY9?LfB`N&5&q4MI&8E!aAa7EP%*OL{?TDC!(FoZdf-<=N;=#IFxl@_LBWYwDIZgJ zTCh(WGc;(%;pV!df&yMBjqoiM>^&np-w75GacXN(b0-?FiNU;-yp3i zyIruQUb3MU)Z7RiBt}fV0hLf!I^=J`|ZKb=yJ5_ERGlsv=>V;8QfV| zf_A|DY4E%EcAv;4OP>Qie+w(EaC8L6S7oLvFQl~T1al?HOmS}Z=j-P{l{-=_6E}D2 zwL2&<2eDz&^LU1f@RYocs!65Tj!PgFJP(>v zN7Q4ROUrf;&lg_Q8vcc7G$Dxkb|i+HxqDsvXGiZr(!&^s2<@s=jtY{=t8EWxw(W~n zs1+qV=%VtHfe~Fq&LZzNz9uNX-+w&nd~1yZ$y>jJrw-Ul*4CAQ4Z50PW|Q3!3wXDPgd#6 zsTX<%F)iJbYaNf9mYW*zNKOw~MQeq?hcylNk-{v_-#f!_biYsMzL0dHW4Q0iu4XmaAcOAip$g%Zs8_R4tCZ;d+;nXs)8Q1vfXmM zpr=K!bmO3tmd@~3-_OLMAZlsq>D~K&Esj4L_ciZ}#IaPN1iLqj-i(ICm&2PqrJLzi z8~IZX!UzMtKEm5;{Y*X=9gSuaYS~k7c-tIBp7u%pg>x=XI=Wz3{=_OehOREJ_Nno) zQ%I!2ARMl>1g?H|M_+AebeNar(B9F*2|0fU2!>8eKnDUEwkBV>h>>l=Ls#bli$f;T zx#%Q8EIpk*CobvI`zAi=kTu34KFF%nhT(E19)+x`Fezddjn9d{b?J}y>as!4IX_o) zr7g9{>kpBXxe#GBpCd_f%%oGwpv}83$}Xb*n?G}&3MNfhwIw*6QJeolQLl|4x!w?y zvoUg?^4ERE!WR)#ft?L72Yo?)w+|+^?`ZuG^=?GNlS#`&PCfL==r8U>EGjV0y&b0C z>L(?Ls-)kEG>B3yi=mG<)u)^NvywJ`n!G)zeObN%Kaujz%l5!r;nL?|ZOs zz_>=Yj{S$f@M(F05aKM%WT9r06Y^T~aUO)4d2xc*uwd(6EZoh-=tf`Jj9I&WV2=%W z<5X!}ltJ+1<u22Q{ARr=mbH49eku)1)YwWX#oy5QCW7FH0{4NizOd5rs&o*so4=SPt?5t$Q zi-k)eZ++a{44RH6Ahzl2klRnxFOUJvGoTGiE7G?jGO_j%(zbyDb`dcz@47VhX7VoDCxSOs)WC z*|8i{s+1WR+Yw$-!fS7Pf629CwPkFmAIfz+dH#!b7~8e0Rq&bCAPtU?xI$aS30SVN zJ0@a6v`;9KWZo*{{lRK>Ik9MD5Hk!z4VY?K81WA*T13#taV-wi{DVKlc!Z5wndu2r zma8Cj^2pJLG!Ov^AekSDJ8344z%B5z43z3fOI_*|R)yf=H9$R@$iF&cAqd_Au`U~D z>YYZ&+99ha0ee1@^&owYuce`my2155@uW)z!JU=s`C5wgEK)~jJs*kOX4EO?WSNfT zEg=-bCzsCgg;0X^7)2%{#1Z~}9X%e?1DBq@eIt@@EJKW(a+nf~s5}Qpr|H_#dx!*XtW7hCc9X18(Zrl^R(9A1Gs+qrAbeSAMk!a*j=!5Pu18Y7MuImkIW-*l z)h%f_Z9u33I^Ch7|0H8xr@QjBci<1eI0@@&I=0yFe&w?K6ekMidF>K)n5)y^q*9uP zYad~ElD*R|plr+TiU@n$+1?!nm=j`cJT?Iabqv(J^F&X4?3Z;Z~`-T(~W3d^9tpsg^Ney};t&&USR z-{>dd>>|kJ-rp08u3k$~I3&+iYU~EuRj!B3qVrzDaH!abqeY9zQ0@9ai(vj{e`Bd* zrZ8co=k0cwPA500D`RtWFuf2F1GF(=xkyXJ-4Vwl+I89X!eiN`3yX*y>16{lGLUW& zg9=Li^%mMGeov2V*krxGApY(|bik(sjS&B^luv8*oO{!4n@*D>H1|Ab-MZn@8}461 z+?PwN2YKo_W#SH$sEURxu>yrWZW@()ueh>SFtyK<;t9%ri|>8SioJ+2747%jtIhoo zak-_&!)`5>IEs8s-^V`gcV(%`P9}f2juc{iJZ!bnz7S|8_=n+Kx+lcNl!)V74c@mm z9E|Q=xAt+IPR{ye3=&0yrGd=m&eXE#6%|4pgHvW9_f)R z91#=bFnf7@(fL)HVeoT7B?sF?vX=R(eZ+@OGL^39gz@B-VSG{HZf$RKGg+Rj+Dl>2MUqp>{@FeX4^v{iNVNk@i5ZO(X5ruT>c0C&>)VN|j!OSMlB?h|DUzGzF?bZB z?a6lSG`g}zdNvWGdlk3842WNN6$S&7o@XK=d8e$j_4<=<&SkJv-dJq9swpcB-!^+H zM}`~Hekk1iVm3MC*`-Hmk-_?}+FOvwi!|$j>7M++RDzIv0fnM!B1DkfEV0imy$HUf zJ@UtMhThLOSS}gf-(`?pd#PfjELy%258 zYa=7UNr{u=*IQ;fb(ha>891~B-B{;(G|p#cWmWLP{o@n1>Y#IX$;n&KJK}dnLy@LM z3P+pATCVVP1>zdD?W+4$joX9!hCe7=To4O96y|xgHhi(T*f}Z}?hh~1aEo}rEFV(l zMSpHzT?xS09nV%;y_%cmM_4-{&8eu2`21YD4qW^{`4)w``W2I;7}Kp6dU458p&+_p z7XY7v=P~DKjS>DevP4>5=}ZJAG|;fEaVQRZ3@?V`Wxki)68*(J-t+wwe9J$#|HA1&vbNaEx%TUt~iz4n4u*|EVL z|HhfhYa4GsrMRMtLe3>{1DViY$QgL3X}reKX|RMS znc!!n&J;gRx4Je+%1I!8FSD=pag!BT!)BZTf-d zgj`O0Z_bmPiIEMW6VBdKmQ>Z;LH}0#QHp4s!)@_x3y2u&)6-L%j#EGXb?$%oIt`L0 zi*=b(7>N*7jU`w1ng<&fDjpv&RFxW((;LW-5;Df=CnTYSg9mGmmW4N0fSwNdp#q*$ zPPeTYlmnP)pqc;0hS`XrRtrcF=DB(8Sw=G7JW<_8##8u3XO*$Yzp(&**0UvRbDiRO zAKHz*=AfbR@R9oW*2+5D-w(ZgbGNu+$OD?}(iPzU)a#O>wQF)OqBz2Zxa81FEFv4? z{zRd7EX!`rmOpq=EY4{3T#|^pK{k{=POVvk61g_~z!JWtI*Hf?s$K6|_EyHOMBUwl z8O?j_^}H{ho;vl&Ka+S;!OG+l0Ozw|0*da$aHV);M}FH*-@9Qq#pHt>+-;pW#G<83 zXTH3KcR@u8deyIZDQ(g0(#_m7<{Ubfo~q+@qS~7WA6({0wX7L5%n6~A(%$)B{MJJB z61xZu=Rfuvq^+Dk&VukoPN)ps3$K#9_)&c9mN1@#>o1yDx}h*})qeQwQErO{o~1~1 z@F$F0*EG4Y`*U-GC*YgBn6 zPr4+p=PV!sF7{_W%uT{+T11vTHNTH5Ko#Y{I_(JW#}TiaUhM-|1Jd3#*nIs=RLpwwbZ~WE zcuqNhy%T!sqFZQ_*=-mT1U7d9z39~*C9ht;wmHbfAozuGwW+=bK-nXMEdm#0l!vEt z-#{c~cGfBT`zx`1O8z0Cr+Q(0g;HR%QtI$XHdoe|v3VqC7Qh&i+wM%4`pZ;SF%~=! z={5L%nbxw&z`9A%ulPlya%NifR6<8Jx7P4dnvH*|YTF%NZ}>q^)U|3_v>x+0>r&k2 z@%&GFLgGr><3Avt+uOW2x9^ti?d6j;4<%OnO6Ie3#r=6oyxRB4FP6}i8#(z^eFvGt z!2|EU^95p$@yk9fM2+D!(%0y(N01R%#=xJsb3>O~lqpnCoDD~@(|li+i8vg6)}iaq z*{3Y-YKMwF=wr68y(ml6Isj}oYon+bQ9!bdw;!%Yi+0!GG>dU3F!jzh~ zanN@aG9Y58^S$n!dh%1UFCR{r%U*d|!)CpdHEzbLGS8QS;A`ZZyLQ2hc;Dg@mozl% zK(9BK7``+7b~JLZG;a?;uM{|52N9oEkZ0XorX3R%6KKCU|7)^t+o(7E>BS%VRxB_u z2vx*+_=>azb`*Qu7B~7?QB$amoWGE8D?Ohp$*-6`m%N`Ij?IH_iz-9kSM(I;a*iBs zQm?N)p@C69^EY+#!n*@eJPnBb2(s|pFSPkQ;IM!na)!g%M+VgwJyIMMG{GoWE1Ei< z0y;MDv{_<#pT71rcsG{FQ>G9+i192MlFf*hm`ro_7bu<5)<-z*b8l0AZXNu|tInh{ zS`KI2nZitP@A&w4<~RLd&VUyuKU$u>#o$imt1hvkuo^nUz?m9!wSlhh*hUA|(&twg zTI#g7m8koUPjGOk6S=QMlr3B@$ncsLU6{3bc6&7@ZnBU*JW z%lA6<@Nr4gqFp%rtR-0_*NUS})|D*Roi3IAWvc9awfWCo zS`(lKwOlz?|NS#>h+43;t!F^Lj~|vW*Di+NjxwOo{`d*t0{wLD^sD3^eG*>+J=NDs z5Pn;kQ3#O9rXg8OM{pCq8sSAVZGpuN`Ul=0sm>}=uZ~?gjf?j%Q9j^rcZ0t1*WBZW zhrj*u?Av)h^h9DW4Pt~Fgdm?yi{KxhcOL3mX)b=}{h^dz-4T1jGZA_xkTG4yd#6{Q zWL~CUq={ObfptyPVw}9lnjTbAWr9oY-+3t{O8yK<1f1bxFDHKaWf(kU$IU!ZKcGX* zjoGA{7@iIaJ^VhMDK$u8DSPzR(%`$x>JwVhcjepCLJa;~4F?#0pdJh)F7(caK5I{W zgVWgRtIb7xX!@z6Ua?JIl%2pK#>~q6e+<0Ap;dT zeBNmO!Gd^&Z{dy8bR$ppur3TVPk9IFL`mYqFLe7q-4C(<0~(+~26V;P5pF^1W~zTI z!8tsqq%GL&=%?STR55?yI4wc!JdI?H51JnmaR>x7L3UUVUCJR4umumD6yVbpHb@k2 z>FOH6IlV0R2E%Kh#RU2p(j~j{y!Y>KSUFqQDIuAjY>*o=e`5BX=yGGM85QHiyFwog zMV%G%pU!Xm@L5`!$dhO*)e7^b5YbpasrP9x&B1Nk#EDvd4AHh6Rl|SZPgR0y*+Qv= zViW~ji2WlnhbE!9gMkahs0|ID8}5G9uS7<8SVISPCpjESfZm`Edobmbt7 z3aU9^6KjdP*~G!Pt|THN^7bFGx0Zw1LNLJKGy+Zwg82^s(?s;{#l+mw+-o^tekswqJAVev`FRPKntL+WCTwp z`&`>8eYK@g@Sv#A;x8D6j_3-czWIqQaVnE9M{Q2{v zkSEXn0^`&x*Nj(ee0!RnBZWiX-|rqMvP8zZPoK!YAu1_pTl+9LFmMGB#){XXIcQ;< zUUIrXGW|*!2wn3x^i>2@L&_U}0A5o513_Ybetu2O!2E8ZB%nxw_a!{sa$<~xo0Egdt4lQ za8=-}`Fil;xE`Q~svQH=DLbYq5sVL?T%Q3j&FvY@zF6%ZC}tAY=se-=IgOpwB{HXT6J;sYif_=#N87lDM3 z_u?dB$RD4t?CJYQH+*w0Ay?im$jNq{BNBpke&vuC0ny9ocwA%eab9^q?$SG2wzypX z_(0W_RKwf1JBEnZ&JG6iY&KQrzh`Z2-SFL~4y`L1wzU9= z;p&ofYrJQ&oJZogty@xK^@9aRx3^3n#=^pg##Ltjv4U>~y&Vk4j|IjnT})(|wKN-Z zCx*%dU4)u0&H!D23lfl?+0AorrwV0` zt~5mxC{%RS%i_|k!40#6Mf?X`tw3yEj{NJ~pQ!XfmN2_6~XngREh z4X|DQ6?wZ3CO*ecb8$)8)z(y1g#boUVxMyA1~APqf0}^d$lvJ9P`4|nWslW~6_EJ2 z2DX=|tsYRkiAqV?kwPl6>?r2{ev*a7I2;b>{@u$$KKKFO4rf!h8gXz%8M?)&>{b%MQEYsl%wa_#f6B$kkK8nj`8=$53?;cJIu! zY=~CUV*7vV&+%K3+zc3RF+RxJ5mR-UpW6;`wDn<%5OBB3BP%+iV|&!5ujz6veu)u zBfiF}@2nX}kxT{1z=;SbQF6BdudBNfXg8o`u6pw*gkBBcOD3LiQ-8Sj3kW39^?yS4 z-Pm2rv(Et2%q}nWvbxJA;6A?1AdG9FE$ZZce7fHH2^8ez|DqsY<&BDr1X@&(n^$^r za)d~@|A@3N%>Oac;@*f$los3VN(4dm+LO-1yzm$Fegga-ucvv#G|nb_OH9j#Gb2$2 zNM0j~y5HSraf+G$9CeQy9~v4eI!27k%kD-3a=V+FXN`YgsEk#3R6nap#II(jGRu9;1-8f{u;nJf#dKJnv&mn@SQ9#l zZ!8OHt88SLKfh%P+GGI!Vv|@4FoBqum;k;aiOaL?DF+`t0!ko|mY*_#bO%U8EY5L{ zbjv3A-E?wtvbIj`bzRY%0A$3Lyw1Lw16fj+`^g7q+n#2>s{xiTK&LppHJzK$9}NV0 zi>3v&aRk6C7WrlYDvGk~hkfU-{g&g##D}dITjuPOd}3x{A^hHyeLC%0em_V(gU}!P zGgZI?=c|DNJTX502TTzLvSz4$WPj3`SA$k-Dla>$N0a8LhCDlsJESjTm>*41ft6Thnl4K`&HacQ+MMWNN}1@?+y0< z7fR#r=pFz>X7x@rN-{EGwSzJ_9 z1Wazcyv!hv3ZL)h{41Ju3W{6zb?zOW7y&$DNt>!=ARPz30GxXcOZGlF@*DONzW02FN(IYI2^MDXnmwR#}z+L#i45f_L)0s|*a2}wy>RiIeVfrF0p>UIz2b>ED3B+9|@!0)Mw3t*sBc4Hnu(m}4=x&?)X z{`z=GP@$F8WLFnP+M@UT|I41}%emJRMH8`~|F1jI{|R>@Ens*1f8B}xzi}t}pLA*g z)#87`Z1w-ykq82L{J(Eh`R^<2wP!vyRrK%JuAyI^z*z!ham73Pb`Nmnz)uAXuF3x$ zH%NraZqBeIOn*uy@7lM_6!b9CEiA{}yj4TT)+VuHki#m!{d<1C5#bFSvE>HjA&jt0 z`lVC>GqTdl1NDKw#mG;u+z-*}tZV@UiuDkKI>@6i=pJhL2(rckU@41rlkBtv9@xR% c6Wjra+wyQn{HNpPyA@YY%TN<@)BeeS15{*IW&i*H literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-active-command-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-active-command-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..20373bc6df7949998a5fa226a35e6ce482a3a745 GIT binary patch literal 8991 zcmeHtXHb*tzI`l+ipa5xG?gYIqEsP5bfY5DR8$0{SwIXV)PxpdL$*loJr*ROgeV=- zu+an}T?k1)2%#l`014^W{hv8A_doZZGv~woxIewmywA-0VaELxy$$+{PT&|Mq`5`I(?4t5V2 zT-&wZ(%AZ%!(-UcCL|<;lk< zJA59W`^VWU`wK8TX8c%+GZDn=NWAs?_g=0Mt~C;Clna{tUc?rWV(46vl*6Gtp0&?C z&RTbwyrK@!-U4{|dL!V>mGyv^N7ex@X8{05E&%|$wE=*{odCf3|F&JOw&me6`DT=` z7ffOCk@v8v;_qIBwhpXxK*Ge&NMWL1;AsNub-Wdz)!%mg!3Z;uWjHx#e6fl71N}LxQ1P@IP+bH{80$r z+gz_`;fFx7n}6|OVWVA?;-jD-=H~G~CF+72Z(4`tyC<+RCJH4MtUq7L77xp@^X{aKus0gl zof=&1M@hpW{zfs>h+(zR_Cpon4OAGVd>$1wogc(NgCw&AwFqv9E;_niQPh`944+E3 zEz?Oc&F^p+` zCT{8HpkA9>Ns=IYm&O>9oUFIhKnLCVI*t({`91l{Qy7$IW2CgqZ0+V%395`Sexq?L(4-^0wLJ3~$@i-)z3VUoaAO=ad|ITq~3$v*nUw<=%>96zZB z9I3uIQfv;T)eU=5L=#1pwq$ zJ8sVp(KyH`PJO&x1%e5Ie5Ws$@QXrPl_!sx=oSTkKEKa1tG=tvn)lI!k$cRokFsj? zM)o7YI()g?+&kpk9-vuvNqI57dnLVZ{iR)cx>}*(tIwTdU(28N4MbO?z0eQ%t*;zu z{X|X=y{xQ3WrNechK{(-knM)iUtCv{n%$9pfv(eQ7#EXwsz1hRAnp+S!W|JGcCqJ0 z*%v7rP68T_IRw_+{g$|g;CakyWk3ScF|+%zdL345H_{#WV7oVMt<_xTyq9QnSUqCk z%9c^}#jhWV0T;C$?{SiC3aLl|F3k4Ui~NF;IeJxZU~v&^yHVp9I-rI>WbuF@rlWO!(UTKB9K|fog~i4>diVu9Yc^#Vm$P8e z2QhnSJtn2?G^9+znwq=mI&2ao96Me%#vWXe+&Pcbb$`5B=%(()^Dt?62<(q-<=_B{s||VJUqO*~FH9r|8jIb%3)Oa3=t35i105mwntHsfwXA zt{QmLSCX%Lgo$dOlo98nQrTA;qL%#wB{K?ssvr3SW71J2GZ`b<=IU0%Ch_{_2asW7WYvO$({-<2?7Tco@Ow(n5m?Ma^uvlL9H)2*)O$2| z<-853DcxJXvM73~8At zC1(De?-Ck#>NdMZKTqy;^2B{?h!Yu}SiEL-1TZSL95i;B1^46$__B!UhuhB-8qk{J zz-4{ET}dXvbO#AskslZuUZ;&UOJAjXb^AkvSD+Jb=+xLwsY|t(7hyAqH{YRbkvY`m zY}*y(x?SGRT+~B&!E|U^Na_6^lIU}3;xRSO_CTL6f}|;iE>b^cw9Q8Q%2B zsW;>d%R=^YH#lyk+=ibwI=vv@MIAFB+w3$WsAX61@yY}XL`+TrO;#$oPsC2V8wH9GUv{@^KLJ$b1{$Pw2|MUHDw9IiUu6c0QP1BBR)4U zP(Qr5=sCop^cp;ptypiwhQ3o7sZup zns=XgAn&l1>~Fo3-BioCA^Z)=b&u-U)zq>+%omz)(*HQc^3-Nr7=YETH;JEmd3M;= z@t4KJ5QuNC>MUL&20>=}pGJy33h$a zK+RE80ruwsriu-(|qmHQ%|2p7fOR4{tj2$pcv=Le%$iMCuKs zY_80JT9>pTNv5@Ec&xC1=mNj`%2O^&Sh$J*oAHoBD%-I`CE{u6#h$}>SwVMD&GKS+ z)rGDxkFy%g`5*NltW8f)(kV$=j{9dF!)wrL$8d#Rd$uICagWI@ZZs*E%aWdH-iVbA zCu2g!>Pkh}>l#G&*f6j!iTQIj01=Lv8!EoYu!5b%mB%iFmB_4)V@T@W`n@j0*E&ce z?e!xPwPi1F4LlCqNUyF4;@xz`>F$*Brjt7|)**P(Fo4Cc04oXnbc}mXvIe5}8Due} z1g-W;rrJ`jVo_qSz#|Z{gPuw^d9u}(Lf1L_y5t=9ESPpsdU#v>Na^><-)H?O!>R$R z(iB@cAEh3nDSfk}cO5HV+NbqDBga2=|H0g;VULgze?ugtf{$P(sylquRHE^_;Ur#j zY7uUBVs#QZP(Xo*hXl}`J2-9gSfLmx>o%^z%R6MWEpI;P&6$_Z4676QJ#u6q)Byb(^jx%e!k77?JJWVxD~Tg0uV1qaijJ5VrvPRLAe0!i3V#xX;i z-rw!!t?mpUHDrR=%g%hP|1+lgfbk8)JX<#lxSIn%o@aiJu^3ayVEkp|Q-t>+E)mF{imwDw|@Xe%{?jJ*Ex8xLX1Y#E&hS+ z#~bf7F)6uBxv`F{?q^n^^iDZY)Fp_2Va;`ASPL(l<0Ol<;9R__C5rnJ&twv2KznCV zx0#9$%-#F$`Y7Vc|9KbCy#wmTX`@Tnn!SofK|H+FJbWMX<*+CA(odKDIWN9N)cw^)I_R7@4+xAlOgbgM&o zk^qpT55kiyG$1}8B|-85_GLYJ5&hoC;KA$O;0>^O=PI+=-{K+u{!N}V<(d(sPZBt@ z#>-@XzVg^_OIVVOU?EQfZ%T_#LgW0{Bh&Ik0?az2Y1?fhw5pf*xFd4)gw$A8FvjY!r_9BRZ{NIAz=%?Q?!gTYP=B9icvo*q zpx=V^{l#;=WeG#~T$Znf7mhCQANN-mQn4cv)kE5XXrQiUWiz)rye|fL2*jqh2}JaObmV^$XQMJ zRnGuQZCrOYDP~9!xkPLd89Hv6SI@TjA|i^Czn*#E{SNug|AzgrwhdxlY|aS0gR9zs`i8ja>=^6GJc)C3fclyQ6a$6k=3B$1zkkVvI^+uP^p#6t^+$`Vx|OhG z*tBkZB6-)pNnmg~AS3F$+sYKt&0ppNr#G0?V-#a}B4RQ+WX`_F1|2hP)JN zPWNUolw&J%|NPXt?ct4=E{~apzz38VV>JqYX5Um{KIhD|8zxp`vw#Bkz*I&)n@SKDUqCoaarfK2MYq8ad7S7p&6ru4W&t zG47XjD`7-DIcSG2HoN|l&AlOzKj}$zMaM&}vu1TTFz>OpKqsj=U60PPucOv1<*#or z#qC1tMd=|sGLCh{^djRTUUL_ewV)$A{7L32DD&6mXZ08fl0K|IpMo2)23h=Y6N^!5 zOpi2{^D1bH>1BTS+wy1FlPO2Ct$x%PJ9>?VYo-7zJr$QUNFw_vQEN@b{4-F3UU1AY z;L-C2+4|X5-zh8{DI~y}rbG)5qAl&+naZY0-uDFrOnju!UbG#Etvt&ug~zhOYW6M2 zR*dOIx1&Y5hDDWri0wM=kNpnQ4T>xg(@N4=D7SPL&Y0yocBQv*NrGS;e?r9WO#jqH z*vosiJ$RqLW`g-DEg9?z*W88}hf2JlN6^rA{{2N7qpDj)eHQjkrAY0BpTZIP-0qQB zWUKotwZZxkHxHv<8w1pVh@pk9rOb`*p+Z>Mgr0H@&ppku1RgSoyp;5z}Ij;<49Nbrgqn{`xi-9}sl~2?iY{=X=Tf%hXW=5wQIOMZ~ z`qz&}u~g60pH@Q;^&S9sSIPQSAnE9=75Jm-)E6m;E0nbz)syz#LgA3MO5ng=+u;=F zv|AE+Qu7^2mDxOqZH4Nd&xgkf7n)d(QAv#NsM&Az32ym8cNIjU99Be6$@IgQ2y6J- z#z-v3IA5!gt;zg-e|Sx7V$~;c7R(Dltoh970#v=bAC_u!)geW}fc{je$>DSx!We!?TbtH##VB+*IDGs2vql&BHZts~vZ4%dDA)d6J% z9l*6Vn^nlD&VRClH<{$$o%&J~)d!PTE@(%s^jW-6>bzCAii`%GHvf>xye7XbV+a|o z3Fh1^;eFrGR%G&A`Gh+8)Vz7YS-jri{LH3`E%13E?pp+>7B8A0XsD^Dh%3r@(L^X zmFY%dF1jg8^U0pvIKKg76s3M3QzJ7XKZ;v64^BOrZSGGpeh$H*0N(>rrN=LWk(ee1 zjxe#Doc~3qN@pqc#D$`_?K|vrY9>b{S}xKcfA}bvxU8#dDOjv^^10x|A%f+S-l`uodY9s2qi&Pdsip>*V7Hl-98wkR&GX6o*e(SkGmX9E1l-xuP_ zEg~8B!g#>O;yg#2GOK#W(1hcgJP}CfVIFWvdv+Fm2*=u6@A646%nfZYdt4`g=-nvM2)L2c^MyiC*nDzYZ-!R_dofLEo5mT!91BZnDCR8YGE2#4o(+V8XG#1kggQ_adm zr0UxDh}HvluX?>!-{9!h96sy9m1Xq5b51cUIflH=TkD)SZyA{xx@RHt%44nN?Bc+! zrqWcOI{~h%Q$FQ`3^i$CWATJ+v)N}C9!V~In2}q$8veBc%RYG-=$mQtwqTIt+4R8} z9WM`*BKA2K^PaBd{AIgXk0n_&aB8N(>jdXvu`p2UN*~}NvdqIM3>$Bu*9YOeZpI69 z=CP8OPad8vd29=ye!B=1v{`@Hpt^3`59v{iC<13tY{%T}^AtV4;|%j>9F}l!_D7A0{Fk?0{*i`{%`#MFY*5y^M5z}@gHz)Kqe0W$Yg?j k$L{|gbJ_G4k2e5bS6DpSmGNuC?>7Lu^G@fg{_uJHU$7F+=l}o! literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-captures-tab-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-captures-tab-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..86c84035df498624108d4adb2bfa6fe6fa7f86f4 GIT binary patch literal 19220 zcmeIacT`hp_b<+jV?|&rh*C#UQK||`4LAa#q97u@L_~^GB18xf0y-8H1XSA4Cm@1^ z01_ayBnkr32^eaMfDi~Ifg~g(KynZ7d+%EJ{&m;-t>3zTe82BMtemqrd+)RBXYc1c z&#RkuHZpq@_ee=e$y~i+bxTU>H?fq|uOD{(3f#E`=`@s*`d#X()t|Sc@|GyOt51x3 zsm-SeGs|5(U@ov#e5N}ta3S;igR8hJfoE%ezp_i`(Ad+CJ70Rg{gSD!{EO#o3^$0{hL;F z^rKv^M|ZDVT$=1ax&X&Ul-lJtL5Fjxybq^6ykV4x*~~&Que7Z(QXErI`C8=ALT_CO zMraoNrB&4u?&mj4v{93xyR9aab5{~}NY#H-3g$|Eu2(U6G*1wZO5A4$24d&**>QsA z!fc)gYnFkk64!y(>&iAu;~1qZ{5p#*X0aRuIGPSkLB5pKP@^2SkZ+4pYUtNR63t$5#zhX8{dd2zaVJkcs1;yck zjed}uODcLQDpxUxd0tj#W_R05*=9u;1th3x6S?&D_jHmvhIe*nZf3!S%Lx{q9bznD zli3$EW|q%kkEznoK?)guGg#h#=#AzIEUrERv{Fn)KmPyN1F|9-uTX+AZYO)nqsLI^0Z zk#s5<&ngvAmNu{4R$G&c{jqJQoNDX)^Y(IT9rLTc|5@ni>Oz(a7Qh%oWUUcwer2bsIK@d*-lP?)UUb;R#Edpmop9@5F((Tw5sfBH#XCy{I~tC45C!?{*Z`@2 z?Dcm)yNpA{EPp*B|pvxYww)X(&o zqac&37Z+rFd(e(aw(g*i<)fY#g_DVGDKXFIkbAD*3P4tJc0mZ6{BxBq z2@d|%HCV>6^lliMQELAB^k{i-Rmw(1x4L#!TY@BZQvV)$D=T4~i1cP{&YD{PEh(T3A)A3!9EMd&l{PvXDuS zZjOCg(0X`=v#UqhRmEp@JU2YYvJi!|i^g-eHQa2-SDSRof@#dmptB|=~a0q6J+UJUEsc>~x*XZf>+`(aJMF`~y z8~t7%hMBL+D(-evZFE;XyZlSb#LA(E2$ZTqsxQVy6od>OkOX9RhqQM zJf)h%I_I;Z^)BoEjTqF*z!ipP*x7mVbO1h~r~ce{oT(4#dpS{JL>j zsXd0eITW;jHO{!w&DF$e!+2Y9@8c?*;OINXh39O0jZ*(eoAqC45E#HMTpUdnocv}) zHQyD0B=p*RKhd^HQkg3eycEB`rRs!uMXkLrve1&MFIEZ;*d{eOeErv1?Bq_h*y?hl z4CJSc0(Y0EK@rFgd!-DiQNEi_4XmHJ1YvH^orfcL`)}5jCtfESu7=81Tv-3H(_*Y* zWTf2PG5Q%B2!n1fUZ|tMbLV3d`^?gZKfk>tNCc8N9?tBVN`~hC*q`cZ|Ab!12Ws7{L?>v&rYFCEWvfTFUp-F9-oG-9I#k9u==MnL8rK<6DR;RC5nk| zH#*O^^VDBy4n&}9>9)v)%Mt+1{+IDV^Yen_&9oj%~R*fF}!YOXT-cCKlIXD{KE8X}f_ z)wBpX@pw>s7<6a`Mp&mv#5BqJX;LHdYD{;pa4XB_bn&^#_X`sa-PFNc%f8rjV7uID zIdNLy#=VHkPV~OvkJOh77-)t<>E1V_e^{KHEPGU*=M4`hl@1*&`PRuq4lkjSH2Bj# z05tdDe8ob02UUIdHo#%jE8?8Ixt#qON>&iRjKS`t<*g*P@jZi}W06KmXbjd?b7_|_ zF3+

                    WyWhqGcApU~z?5(Us6&_jgc&$vX<2(mC#;@&pD~yoNmuPMPXBq;dIR-a!)E|idaiDMvoYTe0B5GqebO+A;PR2y||U60F|EV;uFH1 z(vN?(Z!3tOQiz*UVMo~j$oX+T07GZCx)Z5aXMY^oYGT@lJ)LZ~ZhV#{$<&wstEH*b z5IGCi`c2t;lPi|~PjnA}ebd?dUkzMIh#Xo>(_?}B4E{SwuIm_AUr3*as! zI<9U40C-c%?5Vdzl=YjG)Q^_`DdT^UM$2%Yo~u_&M2Il(0yno=uoFZsl?Z!% zVQ8I{nx&3a659y6R8N|1IknYb=K}wst(6FB7fGTSdIebg?K!H$p>7Ga1~1~;#|pcN zIXuAVH}@f6)jf%;g+`lMqp8jq?SpR4k|o)x(iHRXHqirs&_y1lQC9_x^Jjk58nI_; zCJ~fQ&^Q`uvr2L`zlVaoqGyMuHoKq{K9HJHPWBxa`@Wt&L$#JC*4Di3$F?AcPx zlKtEqz~*y%_hY)sT=(784bZZGlfB>SN6;`zT zdlz2g{T}g@64T(VfuJ6Di=#;%H8;huqtBY1UA*gBl()D$7qRWaZC&wtc`e2sr)y$; zRf=z-{c9U*9PmQ@`-K2h*r=;B)YS#r+s8>6^UaP2qfb#iVwut7)2E(w1=5o{qYc`) z{_v6DcrjyQz%1^2t_;9G?>#c#=jdxOc6pZmynVcj(vn|zlg3gi;y1pb)Ypp%YR1vy zqElO<-UBTA!H@j`JR<9d(knEMmh^V5-qmlO z%QfUU8`lTgkc$j=By`NQ#Kf|@MV38_;KD9~iPqNiL}5Eo(0X3&a#g-DKOdT!oEVxC zvXe4@Uw=pE+o<9+Y@xTu?r{Ry0$a2Uc&O)ZRy65RQ@R>_oqWKWXjdJPg4X;@;g1B; zTU1_IdKtzIXA`e~;t%L%ZzZvh`hBGBj3x%zg1%z}N;+j#nt6_-y(?H6R6E6MH`-H-!fA!dDCDZV)2YNAhuwb6+%T z7DwAQd)gsv*`(DdASfOm{3!B%No`ynqd-d!aqeR5O#S3(u?$6mu#LyaRVTNYHlO+w57*I;Bf>mS=xr5;IJ$G&ILU@p-J-V`J|E!&#C$9K@GGbz}=E#9VzgQ*At!1)2dxwSHw*GefBGw|xg4^}DEl9;6a zBK&H{W|C-xDRh<_j)@b7i@yc)zxGa?HQaK(`}+`jy98`w@rP}xdcChN7xM>a9Y(-& zX!X#RY2wJtF{P$P*!)WDTSClPi~Q$cD)tcYn){E5%-6l~^fi<~4HpyYcl*(?(4b?e zP+mxHpnRSET`2Xy`_5Eu8NJ759Hl^a#w^XiU4X=JQPYYRFy6;a60l7pdn()eJc8k@ z*8JPBT;uwbDm4Ghn@mg3C6$3+Ri^tAmqc|N8A;=S0W2oa{4M=l;vo*n!#Tvw^;A%R zVA|6=I6XFLo<*)Ey~C=9`Q||Z83vm&40C^*h#En4ZGJ|YR)`pN*)E0IlIac6-TKDb zGh5YGLuBreI9|~Z#O_jHgTlti6LXsQ=pe5mlg=0Z$7RvvNyQH3jstGb?c7=BfgKdP z^-FIlO_{iR_gR9-D($VB__-e-V%klHGb>BjM!dQn|B;cT*joi5{a`0KNM(6*aik7b zSJuV2KBDj;N%f@O>85Q3#b-(A!?6o7;(QH0=mLD&78-;a0*05>ZL?1T+UmGH7U5h4 zy?n41r{bF^u84oL{#h8jK*7yCl)M%~DL6l2*^KJruf*qCLT%W8L3YWY+jPCd;MiwmPchz+^0no3CVub#By%E=E|m5a?pRrlH1 z$n{)1rdI1my`^(gz;Lhn=_~v|Z4ce0fFSwa2R}4g9QJLdtL)N%(a#6(%30^Efezsq zp4)L*)v?@&AmOZweC&3F_me!;JGjeZ1W56*a5M-B`XboyT= zV5<)Ugd$H81xF$#@xywiQA-ogXNv+;v{;4rjlU1OS=+9rIEDqfyq-Kkb_UFLwK_-d z)iiA6z$=JrE&&q8UT9g{s4M}9RBr=bEl-KBZT_(R?WA0uqP#=cd4uVoQk)Rgkl8Hn z+?-}MiZoH0j~*((UgG>*IljXJ5{=w7{wkJ7YRuT8F#Hlf@MaqnRYjO1n#$#spS;ET z$g95_vT2}Jwj&_SJ;nLL9?J9hgo)DBSXGzT5O2z6a%roLtXWw14In%}+o_Apw_O-v zB34PMw3hfV{||?=Vw3tsxJ}C}OJ%F#$2sTAn~{3mhj1Wzein~))*w{WSBPnPD9PR? zxljAFaySIYO)8goAhthd`UN6M&nSxXdBfeodeFgFIs7(J#oj3c`{J1WUxBJNG**l? zk^(jO&7@~1`xJ{d^IjZ#C!H2Q_s$|0Ebb-`U2|*N0T}716^)B}jm+w;!ZVlKcEYNH z_eSW}hu@dCYKBdvjA}igElzrlVqt$g+Grp`^=Yycfd^%LlHyxe+`(T@+AvK4Z%*~7 z#u<6&9*q0t-{KJ}ComhCZF1l`SYz+2MQiNd$y1eftq-X23ZbgoM;R74B9=XiG=@3_ zq*_DdqUXs1__$~TThPGB5?JtOqkB|<3TOIs9X zQT(&^r8l+N3=#-p$xS-)-^qOa(WMG;8(;stuzE~cn7EZomwqc^3v13aN3IPG4_G`Z z3f$3u_mAmAJ`ewz#n?=r)+?;(WU5?^KiNWN!jJ)OX z$>!xA&V03Ow@nT?dszQpnC{n;q5=g-12agkk?*>XmNQw=?QF<;;apuYfx*9Qb}*6M zrtc6jfhxe@-wr70U!mvo&rny5SeN&iu#@q#@!*=Mb{3IL0Ih9Bz{6hvv2cb|A<087 zUom+RD?Bc`01<`A9+zd#M$ah0xM5C_6HAVircl6rn&>h2OOX3{gLjq~S8|+Y-%uKw zBsw+_aeI&044~#&W<`T8Z68%_Uf}3A!_cYj`>>8iAtMo`wF2#dTp7}xovI0Ts||YN zd}@MnYB$yF#e?J$v?axCsR^ z9kI5|NosMt#(+^a{#fF({m`mzqM@sefQNDdl7{0P9_rb_uwG8C*q1~cdhk> zkoMx_g^Ekct)=Ww9>=H~T}eyjbqGC+2ul38WVTq}wpe>h#G8PK#T5c-^yZ2JCHDR6 z;u*41lcC_k1I&uZ5}BXK9eFczRW91}j6nWP!m+U0PEpGA{2xid)dnClk%?9fT}Q>l zq7Dy;(d0eM)UXA>#{V72byBKB~^f;eNb$_%>vZuZ#i z;+Nd3_p$O}%})!ld&+0PAtiltmuwv7USB9z0U0xa22TyET0n#^|d5O2T&6J0cqn7wesTqwC2dg@B>k=zhc@EZe zJnhUGt47^{%X)e5`v&o*hN+PGzKIj$wJ}bCCBx!7+J%(yla(EcTV{}KA>Q7xfunCP zO>H6ZEwVkf?AWCgkCZ;PDq11GK}k-YrF6-YpouDdESq-NZS+a*(;~}a5Ra-!)}_Db zK(`)EQ?;ntbXGfstb`wI+6UsEY_uS-ZO>uoOUI=j z*+^iw-U6$AxIR>8D-^NW@U33MY|@HWdaNfAC6^y94zZC{c0Jv6VmS2A^NSw_@eBFI z5wDttjcl+>F9M&Q=^sKm{>94P*MvzLR8^$l)EXoP>uOmGg6E}>n0u_XQFbh~4?A?6fY zus}Jg>@W(S){nV6*O7sOxW+BnN`pPRodKNs8Dqsmg!>01Y02rBKa`Ai#~NvhcF4K> zaxRp%C(pWB(dlrY!zO|iyNOAtvmeuor%UpvZF^`I_Gmr{Pl}(O z8j&k#SpVKT1ZKs2zqVDJG1dU_O1y}N!cS>gv-9lTpzV|jr+%6IJt2W95Bojd8o48| zjp@X-=g70;;q$#nQY=}vDD6aa@nc1I(;Tb$L6h(E%5Ba>qemZF_n<$Kt4!hsN@X{u zETzFfmnk){gDAM#Fx7Ej04_ejm0m0^G9C{P?EKbJnm1`E6J8vwq(jQ>Y$rYVBkYsY zZ!8&V+T*5=^Vh}7mj-0oKUW3xF+MN<%#jZ0nHcm75T#kmkcm zG2Jbzm6oc7w)U^tCss}YiRs_7fZTUYrSu94cded|a+b}{b2Br6-wpFWy~PP*MGMK! zK9bQW$XT@SV`(O`eo$pRR;uJZEtRE{BG+E`yr*;~_qp#gd0l*eL?L7GNO{c@zPP%H z1Z9JI(c4&7vta|m!Nw)cLzQ0mx$nKxg-b&HpskueaE1u;sKg0>$_yCe*+V3U`GXOb z0X4Isng!11L6b9sZfrvXPQVBj5%11Qhhi~;qWm_GZS|It#)C-Ax8aV=tO{`WVs=}S zkW;7^YrG}yQ!5&#d81rkFLu0mXO*j>6W8H9su}6!*|+0C%c@R;y@_ZJy^xQIWPxmX zl<)fFm^|y90;3bpMnMWbcb1`nSvlM}RXw-nB~}`&Fvpntm3-j&?m__T1SHOzIyo;* z;Nm1ogc^v1Q8s^kAcpwQoOb6?g9+2c{q3mVKpzj2bw3|U{ygr9FZ)(_YXBLq*T=v6 zProuV>|ApM)nvBMg?WS-Pa?WVCT0mSF>|$B;KfYeigq99Ed~}trp9UqA0MkKFv%xb|;`t+X!lE4$p%WK^p?WE+Wag{6Nao>FGqNV1<)4bfHjpLSD ztP3gS&7HxR69Y3vFzzvffs*m5Ik$mB&200Pp#jx3iaw@v3-t&!M6x;gV2dbbHmVSM zEO&Qt`BxLSFj&y)KMi?GCLe3CgE=suW+XR5Em1Egu8&gqE2`Xvd3RoBK-34R*D1~uDUTevsKYb$cR}U9Au9z>rLWaeM&p-0ECJ*lJ z>bn*`pI!lHt@qUsm-0)!ThjH+>lfbwv>z6{!f(oY!$kabH3}>+`e5H1&-Rw&M_E|z zlykZc$LHH^JN~KGsQ0IhdG%((J+wN2yv+6?JR;fP<^`&TZu7z; zxIAs}0G07l$$EMaEoH+*5~&M~8v6}<2tE%k%Al_(Ge6BY2N}lPe6%AtV4Tk%Q$Tj6 z-ANFS5$Za(pD=IkbR+oV02aZ## z>-i{HtR@ zd}Wh`u(F1n6{Y<=L2(smoz?jee^Qrn{jMRnzT1{cChYDMx$y-(hzqjgf)^ z^xSZ)4~~L3KXyRY>sTP41AGkcVTy4sm7eQ0>iW{wT7nl9knR643@HtVWB!^y{@Wb- zcUPVtp&_A+&R4W0HcY?itSWyRI+8Mv<`2r2AwPAVIqZpoF4#TDkLW+alTY&~9XFr7 z%jzyMwd(~nWmZ+p+HOrGmG>dqTEAqVz>)XZ=WVU`ZU5e)*XReb?lF4l%=Gzj0-5n9 zX(}chdK`+SYbWXdTq96&-?Xi{%)A{#hUFYJU!rz8_Mb2qb$uW1J{SI@uojz z#D<0OuK>m|QqX10n>NFk-C3$Q7AdtV0I}LTGIQp4(xvz^tq*%0`aK-#S;%YXh{K_L za$Z!UY^?(psnVKD1O<_&CwqrhD2+a6((N*L^(RPvAG{xbjfmY~pAYbMf3~5uZeC{s zH37Jog(yVuaMRYEayVYp1@OUk=ZuIm(-+j}n}2?SO_2v(-x)5VW<%e1_y2T4;%aXZ zcj3^h2^Y8_6d#IHUDks;&_~UXm;3Ki&EKOxd;U!RTg6%w{6kX)jGOy-exM{fZxRIl z#A~Sw7WV9n+xm73U}n0ejQrz+rOIIO+6;|6;5%-o=ECI5PV zUZ>Nrvqm)8BQQN3^Q8G<0)LFrh%=bprWpT$^NfU$4layKgm-BX)!*`ccoA|9BI!?s*d4oA?}u zGNe45&c%oSkR0(tZTa}eruiZW9{#BPsf}*4V6C^+pT(4cI39C*dD4e9heLx`tD?Tk z7J>wVIcBw@i2rx$WOJwI&i*o7#2F%jK+Nwzl2m8M#0^Rxyh<=&+?j);+`CghhP-U` zZ3@S@@F4wwEvV}l9%fC8^+8BfN-Ja9e8&rjW%IK5kmF4ikWJ(%j&+w#EkushhjlY_ zNiaHWSOX?=)0?3f{%dCk_~PG%y{aBNk4&F3En#@tN6^#-*x9I%{G5blYL8T z^pZKVfHy4v^s*uv=AMoOV;;4Gqs=U;y(F>NxC5g_}51g$`u$LQ( zHlKivPbWG1r|8b6ZjIG7*we4@?Mo%7^#WMT05jk+DWoo zpPy>lHPKuaY8=W6+pzQ7naMI~TpZ};p|;5+yuMbvslAsl1gw{{*f|o>U*SE9 zJ)*)bcx;lLt6BS3;DwuOA$+na#~5fOXn~B1=1zQwd!xx$6}zN{eCTdqBnLV{o>Og0 zznPC6ID1_;eDOhW-KhKw8rsNTo23rXb3X#ZpH3O z`#Py)y4VpMG;`{nbI`^;+}o&Anu5B7;Qi8z4kKvLh|Q4O?$f+OcTk;3OpU|L*O}}R zOV8F2ibI~<(pk3j)Ob|OqY<(%^~jX+v_d^Ks{>9n|NgX;aP*+Q{nGltmSc7`oGN0A z*Hcs)BxAiN7K_6yVeR>7e%V8JYjRQ5NRCXcLjGS5;*AZi4+SHxM3k}kWUt-#tLezj z+%GlXI_XLj-lURW;rGVxskt*aOjBC_=YWJ^_$HudnwF@-;_ zT|pO^?!(f<;Ok#N{`6_jOY?G58R$61PqmEaxj~Af+3{Q_XwWFjBW8uOs_{Kf3uPFgzJBbuC9 zC~m!QF60pHEPNzuFY9b-r!Pd{$q^SUmg0i6o%AZQ6hiGT9XiQ{(A!VIGuhrb@Si*u zZSo4xbV>!Jh4S*1`e-##%guyLwjz2|P+=G9EtB@sIXIcnm$P#2dT#Cm_jh|I_muTz z2Dblm#%wLx!#FZ1<|j+F_{-!`(@9k&`ng)fK;zG+%rK-8uSHKO1eaiNL?J&});n$k zQZZ|jMJKra)B=3uPPtVv#JQK&@Mv~jZBKJsSrYn23~LHeLogDg6$mq zJ5+PxXQ%<%o~b zTqhUh&4Nx@F=ke1Av3-;z}Rc6FY5Ouvm@hL1Y z%K$!dq+0_Ni~=dyj5}O7@)XoRi45qOyM+sbL-w*JeR09J^j}^`nw&`tQ^mprMh2Zu zAkRjsZ=E0J5Czl8FR5JY=tGSLtFirj*x5U6#;40qR{@#k#7Gf3h1A|IJ+XQ?schr@n-qwuv&c(louu+hP0Kd6X4M7+f z=nvmhq_<>DbIiQEA~*g>Erww1lyaVrv>bS4sq73_56u(=9}w->yu1%qc2C8mI6dKo zw@ssgcfcu==lI8pimQ_&q+K9WM(S7MdQDv?BUOPSD6yMsr#>I18Fi0j9Wqw|bi3pI zAp{*97CY5v-%D;XDtDQe3FwJ)aAm&2_w{KGOQR`SbhMSr-qn`;m!|2709fp9ygqcF z9mQt&(63zbErUXKH=XxzS{KLLBUOCjYNlz*di9 ze$|?mP1k0{Fh7ke6zDQexpr2I9lrQXBsTcK9ghikzjs`%u?VT3?9`KER&t&!O*BYj zO+OnoB}CU`-H0e@3RL@f)1CE#8|oJo4hub$Fm|ee?}=-n->pw+6x^9$I*Gh+5u@3& zb=jRGbizU49ZiN_;m5^wUJxUb_13Lbx72dNioew!W@&kYSwD5nYz2gf;x|UXvpR zvW?s?Ozg}O)2F8MuB4a2ol^iew$Lq}SG!8~11sUj_anG(z)j{7W~!ed`d~4Cnd1L= zNv;SfUlPMI?dx0*bUvv8qOa`jh=70F5hI(-w2TjnsKz0JXRaulfapxs*7uP>ruQc{ zHwND#>e6MIXAQ3PrFq1+eWo2WQ6K~=L(hJPjx=5KDSK=Y4Xz;~g~PPk3xd+zwgQ(e z#F2Th2om`)WJ-f@P_{CqCKTT{^H{O`(^rbp4adiK(}h;p=!M=Gmt6u%Uw0&i*sCop$4q8htRCLms|<1ZPe+9d2Iv2XbNxvlMoUHP;5j z>O`~t{rnR8DN+A3;uqlz+s$|xS}fGt!XY2|vv+>~Fz zM}I``fd_x+a~^Qm1tB|lDnzt7{}YmOy;3knh6r@YSHCU&)<2l#P^?Tv@3jH(Y7>^< zR|*GdiZA%CJa4X9g}I>xH|Lm#?%cl?NtTx8o2v^5Kdy_LX4J`XOkF8U`sM|6*YI%dgnMaGM|s^$^^!bY^&)( z<4z`6@}zUPh<$Tc;ohJ9ne47Panawxm~RSzE*}yn8;RI&EZ1Idm>Idrp#07e=%cdOCxrjBcLXi*hS9nJ{~N7aqSW zko8GJla2;O!V7AmIFaS7Ft~Z+FGfvkX%@eEzSW`S_L<#U5(fjpqZ?y-K}2oIL-Y`r zWi&1$y`>GWzw?0V6lz-9C3zs}VMJFytWp=}34aiVdT>x06Z%0WY%B=h(%9Mc1zWnn z7_qP{eMbfgoFnV&k2OYwE@`GOwZ6JC1iYJ_`CsjX5$|WcdAjVj1PmcyOw-+ymXv zgUqwiO#a6-O?$hese-ZKLS=7SP217y;@{7>#g|c3cU=B6Ah~Uq52tkyp3>(l3uLlL zcp&pcjOQa-)}RFctb)FV!P~bEZ5t09o&S-Vb;JnJfWoJIx7AIL)D-XV4^Fjt6%CG6 zD`~J}BhGNM%7%TYn2EOc86&zq8jl7=X599C2yMn3}l;2^3^@G9zBoSgJ}OgMm+z zP%`xhg|ZZV4K7fTTcsV;-K_ey9mkI)XS)WA%2qsoGSS1mSY>5r1r$N{ySS9q{2az;I>2XG;4MIyP}n*|v`|{M+V5(?4l>jY|oZ z{`CRCV$2n0Svea?s*}tTr&;>#mk^_&pu7g$wB0=FLujB)MVHytqpDqIx7|W6R}8vX z^_lF(9NDMwr@`L$eUWjCAMnmU2G%E=i_cd2*gV=Q5cBzwon$h6TM=6#Ta|tU3f;rmUDD3{1rh2c@PS z=c(TNwAS%Pt)~V&;GY8EgCBQmwiQ9n8oDTbxQ8 z^N__iBQ)w#V-+r@`YkI)aCm$DQt%Uu-m%M#P3Bo5<(VsHgLsPieF1smB%|@uKdkg2 zUV2@UrKwp$|7u~lZeOfwUpa+5Gk^0FFXxR~Hf7VptzHpG=SdyURS`YarcKd)%rA~8 zm`+L-_TyiE`4)=}PEH3s(%hY}tuH#te((c-&TZBrA@?BABa=6E%qA5i?hcJ_^MEfu z+TnY{-X!r4x4w^6gcREI$8^pcLSmWTC1*}dzp&dIYX2aEG=p0Ntj`}qfEltHT6TUj zFj)0(l=-7pe$>G+-T z(=iL9bJb%NVet$1HjyzRnwjjSr!#LX=Q9r^UA}};a{*zm^$9P^QKFHe2@UCA=`$pl zCFCNrKEY@vxwJqQL?81!+Yq74yiFt93PP!KG6QJ^n6A~r7QJW*f?zpH*cAW==jgki zkI}7Dr^|)qSKy<9GrOW-APBfWXz6|3V zi5I&zI2^5{16puBp#^|J9)>miQ_RjL2-k*`QmeqYLvmLNRP`2jefOfDynVkilx_R2 zeVJJo;qWOSvEq!_Y4Ij^MODN2f*LEDp<2u@+9!=Qc3O2D^Cd$Ad3pBY55ME|!oK#+ z2ukQDe1@D1HB(DrEW92=6iklo7 z@<>5@5hhgICr%|?_ASWGt~Q(YfuYQ&eTR(m%QugGtNZtb~(d70G#4V&j zUP!Kg%hKyb7M^k1YPx~mVVyFX)D0JFI@J1xAT~9e=3D9zfshd{-m3J_G|HiNI`lht zVt#OX+Him^W@e9D^wiV=VjO2)LW}wp0>q-Xb-6B=xk`>+GC#`(9T$6=(#|9l%*&g! zJu3c!-E=s^vzmRgie4EOIzcl(Fn9L*kLxemA}OF37=|_1tKw6O7@P2dug5%f2w1Ns9floN+`N}&DU(b%|GK7QxWCZ=o}$;|XtIcD z3A0Q~bef%yH9PeOqZ+Ckv}ky+z29{L2=FKq-9h%IFgyDxEdm<#!Rc(4N=fBK0PpO* z$pPHvzt!&F|2LbT8w%#vC4?0uuy{&s=D!16GSBeen-l);`>prqN=ykx(8;H(!|eow zH7xgeVO&d0wOFIjQ`m*wg5T1A&)ZgH!_}RpLtadsRssy^`N#jcTN~Ew@68{bqY0l> z!{dcfn}p4|ZhIU$_KZNs!e~92rshxY>1-z^xJXDeZ%J!>_D~m@wx)p*NaU1KN1R81 z4I*Bfv+=Hy2jX>e6KJPl#pVdXd()6DGimzw-IaT=)MlFG<5JEfc6=a>1g8NXV1C|i z$D?FsPlAmFbAl>~ke&4ko7n94QU~Lg?X|e(?%&@C+h|)=L)@uO%i65VHU&3x^k^8d zsl?^TqX011B3X6wmN2TA%idU+{^{$paBu8I^2WwHhz>ZHY4Ls2X)NA4jPdFr>$|=? zFgIAb8GT2IlZDsu7$b-$Ex_iwn9!9mOMNU^DMa5ye1&`e$RhTOQlO_Ry}#OJAvwyXM8BcP5eN8zXVI$ zi|PTmJ=Q75Prg%WK^lo3X1MqK6%yIUoE@%l_mI1wt40SZ&h_f4E>wrz=u~7A=Wu!3 zscldms&Q13pZs(K9lr;adQVDfPxjV%0T~u_`KkMp{bT;yeSqnQ&F_f9XAC<^a+FX> zVnz@!r``o!n&DGw5IndV+E8~JW7_{RQxnSR)e?(3a9@()hy-n!)PF)%Cb1iL#^T!< zHt}1tqCx-9+{la!YO-mBWC5##lT_Xvr6&K`-brw-uM+19GPe(LO0|Xk@$7++(kN3w zO7hock+j9({8 z?Gx7`)>#LY^v{4JLntKUw-$mY!4i4DmFTHbwL*zl(!4~7ZCSUGl)e565Zl^P5o&uR zsBNyV7MT;sn9Hhw^gEIaxExq!$q!;-3cZeD2bHf6XLk=sKJ$ApL<1L`bG%SZSDYV& znufY%>86;s@I53kzSq#utV)1nq^R0%$&T*WrUH*R@{lA=}u$336byxs&N?oyz{MWG!Qc?@&{=Jv!zsNoz03H4J zJzV1dO?mkbm;d%H~91l!cBocL6#lIHDwm|AOsj6J$ WowC2i$p9OvtJZc_m6z`P^*;c)Q%@ZL literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-detail-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-detail-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..94f7ad4af456d6438b91cb24339068d2c15ac601 GIT binary patch literal 36405 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 Tv;P-}fda$R)z4*}Q$iB}hHX8Q literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-list-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-command-list-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..9f797e06eb31b767c162843a01ddabd480d77a5e GIT binary patch literal 8967 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-commands-layout-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-commands-layout-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..b9894da2d69761c667393331afd6042caf6c5356 GIT binary patch literal 68289 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�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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-end-state-tab-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-end-state-tab-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..3294cd0105a7005bc7ff84014f81fd25d381786f GIT binary patch literal 44747 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

                    xflF$ttHh~o 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�I^`Ljcz~{X||F7`4FVhZ7nq5mky>&sb-Q&;%UfKr(FhN}pRz;XVq0L0X5-q1( zC~BBGRse1YMKI<-Man{1K0%(mJSx*~Jbudlfp@!p12#ep`7nEcNcR|hZ1^zIelSly zxyKThjEC}oAw{EhP2?qvj7lj_#UMe7m!G$@kNPk(AN}$Nl@_o++eBowo%>VY@$&Ls z7MfPz@XM3vwfNRcH2(Z472eL)a&Ek?2=hgCzfa?meGRUq9hVc-eiE+M$mJ6^Ts&%Z zQoA~j6DrS@G3=FTDu|5mn~>+h2<{ z4ZI}Lvmexohdxc2I5yv3-TS&QpqERIE}OuY3@qVz>o`PqFg|H+bW!kk+x>yO0Z`>6 z)He#)Uh1Db7^&~6HsBC0s^qZF&|m_8YSBAOzMN?pd@a;=S)~8ivq1&5`o}RNEiJ8{ zg4cQoF3DlucitIrEj>ro(Fe)+@|Ar2!1JZWDPScb?md!NZ0L6~)>j3gML0}W7>(q= z2R4M`!^8`&E>tIavx~U+C$i$4+d+SzCy$AIBj+n#=iIC;ktf5?q|i;xy94s_@~ja= z%vu#52L>2={MUGY`~x;83e^hg9{zubV>Gt2b%zqOl_s4YmL+nVqGjR)cHdUsnXZ46F(W1+9Vo6f&==>AKhO z7M0H9mXX5eRut^Qm{PQqUs3Vp%#@}UraHY+k@#kP7Oxf`EW+XN^mMYSyrLrO zyW1PXn{7?EJD<~CC+9{E0Sjbx(;S=sA@-EC4$XG2lEvLOMM)T^Rl@v&fb`374kq0I zA#YvGIY_~ZgA(r_Nc%Gs>TW{ZwknIkq)bMpVqBr~tW_ySYyiPp>gp!zPip{JDM}q~ z@w;+=Jjhqes~?__kPs5`@bTCdU%dE!^O=FZ3sJFV`M?{o40FvAt=Hj)g#|G7Pu0~W z`i*~JWw_p!O&clEfo}pJ{Qd=Su6mQ%Cc>S1AdCR=^1G}@MI8a)kjTSAiW**t752YA zcM=ri&G2VC%;0u_HRbHGZ7>|b?743$ZRZ-)2fX)Z>lI0ek+12g?k6QW2f2pC=L)?4 zGm#fYWouMgu>z>Dr`NlxTvknOR=Mgn-%LT%(7@ zz65GR-(&7woRN&cxKU$i>3h5^+q8-P?dh7SdI9~f_8I;sP)&n)ZlFcxt5e`0nu>>j z-fA6CzSL4&nzG0o)91B_4^(3j_C7`g>lW zBt9|0ed_%|x)IIo$e&(2AD^%5%s=ebekpHbZQWB*CD9-H%3EeQYt_gM0#S3P5><59 ztul`u6{f}P5#po4O(NTAicgH74Rn~UmW3BqDTTbEA(c1N+OAgY?M|d0YvbhNk~39L zmi@o3h9`!WYB~&O*Q&gzD1ozB9s*y`LKJ@+jvaN|+1WW!Z-2=*^jX;oqH5vh=GMTs z{Y(J3P(Ur)NY@s#-XwpHqEYb4z;qjazJ$h>o{)%J3XT`epM`#du6KyWEP4!F!N5To ze-7>`U~Bpv)M7a<>!F&>!o<`&8%r}kQlONalte^C1fa?ftAnrjvc22Ri3x>K(gVg9 zs5Mw#l>p7xjg5^Re!?dau0jE~z7}2<7H~J<{%g$~TO%Hpv00M#1504ukB^lJq@g*M@Cm$pz0>(|WbF3Eui-`y}r~k|` zK?{`$Q6E!g(W>|WI22*kxu4Vi`EtL?)e02#dnGIWtOQz}_5Xb^^4J3pz?lE|1^mAn zxv+|(8B}}-{0lydm+po4JpT;t&rm+@yi&^obTii2bf?69t*?yb6%w`lsoMdKX5w{g zwyn~0r@trYeND%U2d}lS8Xb!6CFVq!vp}L{>UR1wZ?m?#$_df3g#QvxQKs~Ztu0(3 zqMmN(-u|fuxgqWTtEpo|M8QaNP_Zw2y(W|1d(Fn6j3ZnjMFo zfD1J*zV-Dj?ts(miCUpTG_(osKLKSMrOc3p`nRO{vly6f>rP%Y0KRW zd4v%;u9tornE~*fpLjNFg|?enX_{KjKhg)uZ*EOg70M8o^DLQHs=aBQKUgf}g^seC z8t!c5(_gK&aT}b&0IK~r@ch8g_b&6Qw4Z3OQFs<*G}3yfD(rXFQEF1q7iWxo+BU$h zgPg0l>#*u=Ww-bK+_c(ai5R1eo`gihC5yI!d+Hn}eK?O>t30sm*gc>?!A_r0PhIj}4duD*x_sW@t&eU$&p+Htf-;tjt}WHzi-;Svs9AGgI? z-^Pk#jP#tmYc}4#DMm`g`WyoYJjg|sUo!aX?zOwUT9g#m#MP3(9J@@aS z`4=c=Q2i&`k`j8{rg#63y!rodpECfzd~okyM3YSNk(gO4>!Xd`zkSU9hs(@0#xg8U zYyS;~7OhjxZuGIx9HV#drt#b!e?fl&V9=xFa|brGws#VLNjcj8Y6v8iIz2s&M6yru zI4-trj}?#AxVTBFs;Q}IY1IL7j2jC9u(HRP6#PEdh6|ocKKG~YYC~HMIBl}${cR=| z#_v!C+n3aav%tk(TwF}}208iXFj7ZKd_$p7iS$ZEOdkf)d4U_6_c{GrS^dWNKM_v} z0^tdG#-t}j6dm+m-LiW1T?`D;WEAa0t*+h}>JEE)#x}(4%{TiTE_VQ76xIvvzbNwp z0l>1|d{cdCX{mr>L~w%eSPk_`eER9IJlo!Ez1mlq%YG&h@8wM=jcM&fX2SHY+n2!d z02E7aL4)sw^My|+y416Lkw0hkJEUp4=t` z)ZSsF(axLYE_3_nc;LW2n25-&_1u4d?_!QSHpc(R^V{wEtdsVT#Q~qk%p_vh7r}eQ zB;CpHa9H}1IB9;e&|}9#AVC-)1leD&GR${($)1L02Hbi*<^>rH%~e~eIXP9@a&vOp zPF5@}e*4tmw9w)Qg+k5D%m!|81%7|bU7*kORrRn`jCV8VPs=C(J_rY3@zmT5@Q}G! z9EaQM3soOqz|zXu**VvK_MpW4Wo*>c%MjDKx3qZ{v3E8Az@5SdZi#8pV%hH6JAQin zId_)j0WJ#N$GdMa;vFZ_gl|NF1Jo;IVh>|wlg+XH3KMejJ(^JWO+p37_9fhO4%YSB z4pLg|o;PyeemWkRo4?%V2*}4&Mx|gn=%YftL;I>SPTr`-yrJ#Bn7U|gTuX-Zs1?%h zJf2+N`a(T)R4vZy*Q%m;_fo3PW`gyCFNs;3sudUO1>@fc8fPFkeKXm??rJ&v5SQ!) z+f1bWrt0AbJ(XXAN1C5eamP&jGLiFM3K|ZtTJCHftftftKO)c*d{rpM&%%ozL9?Q7%afBSw;%295uK`4k|~#3dUrCo z)6&d7i(2}Fz5{i#e5|K>O_b5)cQ+oi0`kXW{PH1v8Ok(!2`qWd3+$*#U19IbjX@cD zclZ7GXV)!qxrV%YN}eqMww=s`2L!)#A7Ek*4{3DWNCXMx@wZ-7;mU48r34d(7w)JD zl{!ZJ?|M~nlig+OhfxEyxIf<{1<>Bg1}YAluj>@A0KQaw{?~Q$+7UjgT^WKtwYKHDUlqBx+W;il zB%^w#MP5W}D%S#SN<~`8R^VCY>6LsstQr*BafR7Wvf~L_X(P*WZCx3{O-c&@@gb`NK5 zlb4?H#v~($>n?<3i@)`}vbwi6*gAYXWkIrMK=GS~^nN%+v#xc;!Oi*x((kstwO6T7 z(qg||_&X3(Zxs07awA^{8cHGf1MGGZ8&->dw5B(v4{XA9X>hpjI$vAiX4*j1Mg#$M z7YJZ4=2I}DbMwBIX)w8@>;;sT?TThuOsIqqJfzcBcVsL9{Hn(Hx;j@+~b9;#v` zp&ummjQ3q-V$T=~OzTQ%h|?}fSm%D?YY&L8AaKwu(_=IgZzg&FKtYQ$G?Q5T*svbTzw)C|0t#N4Am=on#=-%5h)4D`e0_ce7kq{ zpTMo~_(vH6@#}{H(lq?RB00Z1;#=Yey2HK_rERM|d?9xEn0)ETF_ zd?5Fa0T#h#8);#miF)d@Q+1($%YDQ_lMou*vPn%%`r%eiaO-1A-i{jPhJEjpfns^kr-sZy@GE-5VqbIe# z$x-h1#+(d%@;i&A;;Ezh0FnMdzQeU;)jYu7#fM9*z?6A*Gq1H@vdzqvaeKirLg8zB zn&~j&$Jfhf$X5uGXPGW+_0?}d=ulLKQVB^00`)yiP{QRzl{r+coK*kUzaYd0g)`oicx{N!iusjjLj(tS_oaht>S z`CWWy0EHli&QWgv&aW&fp12IdncA%wx3qM|UjvXWoK9AqYMJfr`%OQH-bB5@Ao=m1 z00!+i@-L#Geau?ql9`w+ilh+ox<$=8kOMG-7I*L7xeh4W^+v^KBw)|7zQD!Nqwx2sE#7S}_JLxIq%-qLH1>NnpYH%6!(m!M!tZ#lb~ohtM%52Z&r7~`voD@FY+BYa4L`48_VT3}J|Sj_9_eZWh$?J#hIj*(kuXtORs*oFv9Ym? zu;Ri(6|^_k&p(z2Dl^ySHkyeJVwh<^?~R#k7CzYC*K@CAp(pyotP6eDHqX6U8D|&L zi_4mLUDgF|&sREQDcIQ9768E=IFVfTvk0^gUrY!$ZL(;H{5fa8m~>Fp&iT+6A@Z1~ zkgw_|8<^PcOxZk^O?V zxx$Gw>+0vx>~-7jN|2D>Y0)BRepQD{|{gO$0tQq3c6i40J-6EZVf zO*)@W%{O@+!6hR>OiYAmI4IEbdtbkz+wzj;KrSyr4`O3fA3Q`` zyrli6zP#4^KF9pF$Z=_27LV;pP(pQoqLxql(;kR$kjN8aKoLAybJS5Pwsjp(meO zZ0mA!bF;IJHU=_~`T%{@(4h0u>H#)G2nYIab#;Or|FWy$ zp4WIPfPUJL`(t$>orL4Jcy8R)20a$d!foxlE8EEy#`3e+xd1^v{$U3d%Vm0GJZw=6ebRceiR|CIG_8pW@!p`+03;+A5KQa;b$ zSu{(IJhPLNz)s`ILH8YN7s9uxpRlgH$`|aUs3m`!`I7=K;^1KOnvED}x&!EwZDaIq z(+lTi>v2Jw>B2ulurV9v2SLvXj^g!q((xe9=0(J!i6bMKO zY^Aq^P!a+JP>Rx(7D6B(Qlx}P3!R(`e4h6`=g<3{^PTgJ@%=dbV+?Y0=f1AB*0tuE zbKXd(fO=?90uOsWB(`l{jNiZ^I3biGnN@(rdV6>vH>Pt1w+q%@-wQ4v?6Y6H2(c5) zxI<^q0PEyEbzDQ+U0iZ^$kHd=RLjRle8hOxCx20 zihm~H9qmgS*L<0g`s^mgcbcBvb!aoz_5SuD8F;ksrWnW@8UWVw zAa=eiiRy*gI|iCBtzCrARO^d}yEIwUM+&*ukpvyBSBB3G)aHtHKX|{1Jyt0T&=?2= zCc6I@s^Vhx^b+NqwxeNX#l{D$E!$uW*JHB}O)bqz2S2aEXf*%MQoFNl3VY_JNzb%O zF#p899NaPKB(8DR;=TLC+K>wNa1rrb65}tVug)?DT6*tKEC1-_#3sNv*G&yQ^vo@c zZW)Cco(_zjxj)hl?>c=C?pvf;TzSP&;^*ty6sMp8*q?g{f`%rf_F}2o^5dGaw#82E z%!S!78>m9UyZ!W{!^Pxq{3gD`!pzRJ7Te&C?=xC76P82nev`B8`+srboCB5`oYY>; zm|@d?&Q>)l2!wW=En>ewWEeZh%CFW|)eO&<^s2|WNM7Cj%%5y4jcr(!+)%ABr`}Se zcp<}KFB2$BbQT(BE))doIui1{Bs@-bOpl6zmf4~&P0^n@M=1kV=7C2f4TK>+5xOQx zl(S-s1C2r2FF(vTVdlm|ED&S)@Y~``W>onTdbKIJMS&8OCRNyxKOyxi_h^ln-^E0= zemmSWcn9Rvyh5!{QxVUcKF5GYKmU6s9*@t-(cV{|eF0);ND!U zV+Iy7N{g*Sc%#oy^=rn%`(}`G;~{cJlyE;ug_ptL7;gWIhlj_!*vib-Hf-(Jca)fg zq&5E5zUyy%j{kCrchai6^8M*_rqTydTuGS>h7m1jUf%8D*pw!RnQNT*7$I01$MvUm z%XTKdOsHSt)Mnw7_V&GpWUW*_aQ|}WOdIO~7?D zL-#NNnvlqn+5`Vw%Fptl-Clsty>qAa+d_uaw54y4)^rJ|RzVbFO4W45LnGmvJgj`R zF242_Cat0GQ6HIXVQTu54$7qGV0nIJr6t}dU4;lhm|@9cP4e>&<2b&sEKPOKyvQQ>&kPHHmL#eor$B zaE%Y&2dNa=S!ObmQnfp_%-*Zif`t2NCOKwqlgVYyFYy4|5H?!>z%64n^(H@T>h_%b zEN;28f)N|y8A7cr`UyHlF(bj{o#o-$FqzL5)6P3tCG$`L!wvq@*49?A=AgZ!gpEZA zJ6pGYGUiLnDlo~*8vA@Md~0ptN0p8K=WV8lbVYu?9#h?C^wG0%MPCu+x27sygXN3Y z^oRh2N4S66F*L{8N`U{OAEowe`I!Be!}Up@D~r-OpC4zVsM02i;%2S5JscIKl0gbz z^~FX^%wM*k7z{2Qz4R~?WCPxy=wk*k{9n@9pRzVg?Y5Wf)Y`e@v$J4D2fc3^F2{2q zx9Cd9lOHKtM1kJ zgT`;!Am-hAgJMV4+TkvOt9Q-)B+J!?47Xl$uO6MRmIiz--^=CS8y3Q0Lq)ptgQ>D6ptMN?=iz1)qj;Fn&lX4q^c?@+)XefLKfLxf0>mE7gOiy^A{>*AHfbNqm4ggF z-vcQa^E^mtE=GXda~BaA(aH`Llr?Y;^$ba!8!fL3lpfE}R}~Rfl2pDJJwnP1ylDum z8g!D4a>oPfRIt-JsHwh3)A^lXJZbz#zw8?_#%7k1i^EB)tA~RWC>r**#P*^=JQJW3 zp`qCDz`}iqG1y~qZ#0pk7;Mt64s(dl5wQKT93Rep;8iR4^6wM-5mSrzJ!IcS4<{Y7 zTc6*c62cwj#LM7q5Bl%|l~?9FI}L1(>_U@oPNeC~(?jRpA$NAG`{|#u{FJVmKIOYm z+re<7o|*_!51KW9%eJZVz8j@%bk4(z;>xz>Z5aJFqgxU?^M@GdWV#aXXD`@wPNpAQ zrEdX5a#^|cNA0Ih?=8IjJ(GXT5IZ!Vi3TH;%WV~G~{B~z6cfFv@YYvO_ ziHY9eG2!2|&6_%RG-afnzgtVIVFXO*!SD)Df54QQ1m;b+!~K6nx6SXs^qju^^tqa7 ziPx8M?_1SXF>5xq>@2Y8R1I5^c!K1rF6Ah+ZjvpQ2`TX;^H||DGo-0dj>5m=s(+2G zl|j#?pFHkjrnh_9!~6ID`r0TeT=CHPp|z=nOW;qlh^zwk3+7l_5qKx(!Bhh!Ufx9i z1YEeCuDo3Z2XRpU57+7svMhShFZHR6D6SPSYJxy){}_E==>^+7kj>DECrHW2x~o*Y zU@t>=+@dB0YP8(MOkkFk2mmi=ygOw^<$6b_5e!bhWcgcvPfq*gL8R|Zu0}N=0_Dm= zgoo42pi7ApDWoFV68)iE1w|x9c8OxBJ@(FPXoZX*4Jyznx;3J~hem6Ux8-rJ@_S&t z(l=Ir%*IYu>`oORk9hYz@DZ8{9G1-%N#Kln5Q*z-boCc1i{yHinSP|(RTpoQjK|7& zZcb_;V*SbraYl}~ zwt!c542R-=KFouUygTVA{%Y?;b>xrH$D-&V#0dTP-H~pSjWKKTmh(g^4?Uz$WL$|0 z!pkfDW5WS1SJuo|o@`F|^T_4uIf-Jko{;yuoEwshiN=#B)Sd znUiF4ujg75Thr*CydKc?n3Y?P4Q)j|g&7Cu>f%eF&&^xpaHW~=k%RYlt`wGuRBP-l z`{DWn4%BZfnOXEFUmI0vYN|@dHFw&dB2aGpu)Qb1uWD?Qd~8K@!|>-6tP&OBsEngV53{jWV8p#y=$(D@MxK+)WhPP7i=CCQ+5DQ$nXxVB=`(~kY#~+;VBy~DBx;ihz zjf!qduFctUh|SazN+xVq^pm~6+j0~#Btl*)6?-i9VkQZGshr%q%$MtrPCe@3Q7xD< zIma4p{uHCzZsL&(EWRAH@`k-Jf6hj)Xh$4>mz~dm?Shp-S%k(ddn`^?rO%gxkm+?|I1@g5dJlvrDQ7)7^!=4x|?*si9Mc z2sFP7Gx^&oTBFVhw@>@owDcfGI0g*OUvzkc#w%PcjaSf!7T?kn%7*nYEX8`xikzA?{7`FF zD(+-eQTjS68ZB3@f=zio@`hnXwd81nS+-$3>*&!nt6i=H(cNnu7P$X(T+Y{VDp!5` z{+NIkepW~WqbvYz?uZ1vWwiL}@i!{i7ej;_GPEYWIveUGq7&ma2btZ}7bC;d(s^Hhv!Z8Kc)ZS!$MlAL>lBc+7mKSvdA@EZ~+QKDq*J^Vurjd_aaK=1TjsMc(`| zez?sJy3>ajV%~Ze<~xJi;y9)JVek4^!1XzVf)YcQ(~deO8!_#v<%C`ZnF$~Y?& z-Rhm_N{XfV2>Kbia|J0vwJ?*Hg2)?VW-Z%73okp}7WZ$#G!`z7U*dva9S>WxH9Qb> z5J1V0zxe(bRih}r)e3w4WDQ2JfC@l@g=XV>^|5ADL z^N@$*N=)NDT+g{#JL$H?VKqX(FT{g!?VqNledr9mly10W2(Ys|f`Ir|s zK~Bc5BHD8Hvh$A4m{*n}Pib}9MGS)@>YBqZ|d0dXv=?U-ZZcS9q48eSg4q{)r{ee01gM1`= z`V89KwY9?LfB`N&5&q4MI&8E!aAa7EP%*OL{?TDC!(FoZdf-<=N;=#IFxl@_LBWYwDIZgJ zTCh(WGc;(%;pV!df&yMBjqoiM>^&np-w75GacXN(b0-?FiNU;-yp3i zyIruQUb3MU)Z7RiBt}fV0hLf!I^=J`|ZKb=yJ5_ERGlsv=>V;8QfV| zf_A|DY4E%EcAv;4OP>Qie+w(EaC8L6S7oLvFQl~T1al?HOmS}Z=j-P{l{-=_6E}D2 zwL2&<2eDz&^LU1f@RYocs!65Tj!PgFJP(>v zN7Q4ROUrf;&lg_Q8vcc7G$Dxkb|i+HxqDsvXGiZr(!&^s2<@s=jtY{=t8EWxw(W~n zs1+qV=%VtHfe~Fq&LZzNz9uNX-+w&nd~1yZ$y>jJrw-Ul*4CAQ4Z50PW|Q3!3wXDPgd#6 zsTX<%F)iJbYaNf9mYW*zNKOw~MQeq?hcylNk-{v_-#f!_biYsMzL0dHW4Q0iu4XmaAcOAip$g%Zs8_R4tCZ;d+;nXs)8Q1vfXmM zpr=K!bmO3tmd@~3-_OLMAZlsq>D~K&Esj4L_ciZ}#IaPN1iLqj-i(ICm&2PqrJLzi z8~IZX!UzMtKEm5;{Y*X=9gSuaYS~k7c-tIBp7u%pg>x=XI=Wz3{=_OehOREJ_Nno) zQ%I!2ARMl>1g?H|M_+AebeNar(B9F*2|0fU2!>8eKnDUEwkBV>h>>l=Ls#bli$f;T zx#%Q8EIpk*CobvI`zAi=kTu34KFF%nhT(E19)+x`Fezddjn9d{b?J}y>as!4IX_o) zr7g9{>kpBXxe#GBpCd_f%%oGwpv}83$}Xb*n?G}&3MNfhwIw*6QJeolQLl|4x!w?y zvoUg?^4ERE!WR)#ft?L72Yo?)w+|+^?`ZuG^=?GNlS#`&PCfL==r8U>EGjV0y&b0C z>L(?Ls-)kEG>B3yi=mG<)u)^NvywJ`n!G)zeObN%Kaujz%l5!r;nL?|ZOs zz_>=Yj{S$f@M(F05aKM%WT9r06Y^T~aUO)4d2xc*uwd(6EZoh-=tf`Jj9I&WV2=%W z<5X!}ltJ+1<u22Q{ARr=mbH49eku)1)YwWX#oy5QCW7FH0{4NizOd5rs&o*so4=SPt?5t$Q zi-k)eZ++a{44RH6Ahzl2klRnxFOUJvGoTGiE7G?jGO_j%(zbyDb`dcz@47VhX7VoDCxSOs)WC z*|8i{s+1WR+Yw$-!fS7Pf629CwPkFmAIfz+dH#!b7~8e0Rq&bCAPtU?xI$aS30SVN zJ0@a6v`;9KWZo*{{lRK>Ik9MD5Hk!z4VY?K81WA*T13#taV-wi{DVKlc!Z5wndu2r zma8Cj^2pJLG!Ov^AekSDJ8344z%B5z43z3fOI_*|R)yf=H9$R@$iF&cAqd_Au`U~D z>YYZ&+99ha0ee1@^&owYuce`my2155@uW)z!JU=s`C5wgEK)~jJs*kOX4EO?WSNfT zEg=-bCzsCgg;0X^7)2%{#1Z~}9X%e?1DBq@eIt@@EJKW(a+nf~s5}Qpr|H_#dx!*XtW7hCc9X18(Zrl^R(9A1Gs+qrAbeSAMk!a*j=!5Pu18Y7MuImkIW-*l z)h%f_Z9u33I^Ch7|0H8xr@QjBci<1eI0@@&I=0yFe&w?K6ekMidF>K)n5)y^q*9uP zYad~ElD*R|plr+TiU@n$+1?!nm=j`cJT?Iabqv(J^F&X4?3Z;Z~`-T(~W3d^9tpsg^Ney};t&&USR z-{>dd>>|kJ-rp08u3k$~I3&+iYU~EuRj!B3qVrzDaH!abqeY9zQ0@9ai(vj{e`Bd* zrZ8co=k0cwPA500D`RtWFuf2F1GF(=xkyXJ-4Vwl+I89X!eiN`3yX*y>16{lGLUW& zg9=Li^%mMGeov2V*krxGApY(|bik(sjS&B^luv8*oO{!4n@*D>H1|Ab-MZn@8}461 z+?PwN2YKo_W#SH$sEURxu>yrWZW@()ueh>SFtyK<;t9%ri|>8SioJ+2747%jtIhoo zak-_&!)`5>IEs8s-^V`gcV(%`P9}f2juc{iJZ!bnz7S|8_=n+Kx+lcNl!)V74c@mm z9E|Q=xAt+IPR{ye3=&0yrGd=m&eXE#6%|4pgHvW9_f)R z91#=bFnf7@(fL)HVeoT7B?sF?vX=R(eZ+@OGL^39gz@B-VSG{HZf$RKGg+Rj+Dl>2MUqp>{@FeX4^v{iNVNk@i5ZO(X5ruT>c0C&>)VN|j!OSMlB?h|DUzGzF?bZB z?a6lSG`g}zdNvWGdlk3842WNN6$S&7o@XK=d8e$j_4<=<&SkJv-dJq9swpcB-!^+H zM}`~Hekk1iVm3MC*`-Hmk-_?}+FOvwi!|$j>7M++RDzIv0fnM!B1DkfEV0imy$HUf zJ@UtMhThLOSS}gf-(`?pd#PfjELy%258 zYa=7UNr{u=*IQ;fb(ha>891~B-B{;(G|p#cWmWLP{o@n1>Y#IX$;n&KJK}dnLy@LM z3P+pATCVVP1>zdD?W+4$joX9!hCe7=To4O96y|xgHhi(T*f}Z}?hh~1aEo}rEFV(l zMSpHzT?xS09nV%;y_%cmM_4-{&8eu2`21YD4qW^{`4)w``W2I;7}Kp6dU458p&+_p z7XY7v=P~DKjS>DevP4>5=}ZJAG|;fEaVQRZ3@?V`Wxki)68*(J-t+wwe9J$#|HA1&vbNaEx%TUt~iz4n4u*|EVL z|HhfhYa4GsrMRMtLe3>{1DViY$QgL3X}reKX|RMS znc!!n&J;gRx4Je+%1I!8FSD=pag!BT!)BZTf-d zgj`O0Z_bmPiIEMW6VBdKmQ>Z;LH}0#QHp4s!)@_x3y2u&)6-L%j#EGXb?$%oIt`L0 zi*=b(7>N*7jU`w1ng<&fDjpv&RFxW((;LW-5;Df=CnTYSg9mGmmW4N0fSwNdp#q*$ zPPeTYlmnP)pqc;0hS`XrRtrcF=DB(8Sw=G7JW<_8##8u3XO*$Yzp(&**0UvRbDiRO zAKHz*=AfbR@R9oW*2+5D-w(ZgbGNu+$OD?}(iPzU)a#O>wQF)OqBz2Zxa81FEFv4? z{zRd7EX!`rmOpq=EY4{3T#|^pK{k{=POVvk61g_~z!JWtI*Hf?s$K6|_EyHOMBUwl z8O?j_^}H{ho;vl&Ka+S;!OG+l0Ozw|0*da$aHV);M}FH*-@9Qq#pHt>+-;pW#G<83 zXTH3KcR@u8deyIZDQ(g0(#_m7<{Ubfo~q+@qS~7WA6({0wX7L5%n6~A(%$)B{MJJB z61xZu=Rfuvq^+Dk&VukoPN)ps3$K#9_)&c9mN1@#>o1yDx}h*})qeQwQErO{o~1~1 z@F$F0*EG4Y`*U-GC*YgBn6 zPr4+p=PV!sF7{_W%uT{+T11vTHNTH5Ko#Y{I_(JW#}TiaUhM-|1Jd3#*nIs=RLpwwbZ~WE zcuqNhy%T!sqFZQ_*=-mT1U7d9z39~*C9ht;wmHbfAozuGwW+=bK-nXMEdm#0l!vEt z-#{c~cGfBT`zx`1O8z0Cr+Q(0g;HR%QtI$XHdoe|v3VqC7Qh&i+wM%4`pZ;SF%~=! z={5L%nbxw&z`9A%ulPlya%NifR6<8Jx7P4dnvH*|YTF%NZ}>q^)U|3_v>x+0>r&k2 z@%&GFLgGr><3Avt+uOW2x9^ti?d6j;4<%OnO6Ie3#r=6oyxRB4FP6}i8#(z^eFvGt z!2|EU^95p$@yk9fM2+D!(%0y(N01R%#=xJsb3>O~lqpnCoDD~@(|li+i8vg6)}iaq z*{3Y-YKMwF=wr68y(ml6Isj}oYon+bQ9!bdw;!%Yi+0!GG>dU3F!jzh~ zanN@aG9Y58^S$n!dh%1UFCR{r%U*d|!)CpdHEzbLGS8QS;A`ZZyLQ2hc;Dg@mozl% zK(9BK7``+7b~JLZG;a?;uM{|52N9oEkZ0XorX3R%6KKCU|7)^t+o(7E>BS%VRxB_u z2vx*+_=>azb`*Qu7B~7?QB$amoWGE8D?Ohp$*-6`m%N`Ij?IH_iz-9kSM(I;a*iBs zQm?N)p@C69^EY+#!n*@eJPnBb2(s|pFSPkQ;IM!na)!g%M+VgwJyIMMG{GoWE1Ei< z0y;MDv{_<#pT71rcsG{FQ>G9+i192MlFf*hm`ro_7bu<5)<-z*b8l0AZXNu|tInh{ zS`KI2nZitP@A&w4<~RLd&VUyuKU$u>#o$imt1hvkuo^nUz?m9!wSlhh*hUA|(&twg zTI#g7m8koUPjGOk6S=QMlr3B@$ncsLU6{3bc6&7@ZnBU*JW z%lA6<@Nr4gqFp%rtR-0_*NUS})|D*Roi3IAWvc9awfWCo zS`(lKwOlz?|NS#>h+43;t!F^Lj~|vW*Di+NjxwOo{`d*t0{wLD^sD3^eG*>+J=NDs z5Pn;kQ3#O9rXg8OM{pCq8sSAVZGpuN`Ul=0sm>}=uZ~?gjf?j%Q9j^rcZ0t1*WBZW zhrj*u?Av)h^h9DW4Pt~Fgdm?yi{KxhcOL3mX)b=}{h^dz-4T1jGZA_xkTG4yd#6{Q zWL~CUq={ObfptyPVw}9lnjTbAWr9oY-+3t{O8yK<1f1bxFDHKaWf(kU$IU!ZKcGX* zjoGA{7@iIaJ^VhMDK$u8DSPzR(%`$x>JwVhcjepCLJa;~4F?#0pdJh)F7(caK5I{W zgVWgRtIb7xX!@z6Ua?JIl%2pK#>~q6e+<0Ap;dT zeBNmO!Gd^&Z{dy8bR$ppur3TVPk9IFL`mYqFLe7q-4C(<0~(+~26V;P5pF^1W~zTI z!8tsqq%GL&=%?STR55?yI4wc!JdI?H51JnmaR>x7L3UUVUCJR4umumD6yVbpHb@k2 z>FOH6IlV0R2E%Kh#RU2p(j~j{y!Y>KSUFqQDIuAjY>*o=e`5BX=yGGM85QHiyFwog zMV%G%pU!Xm@L5`!$dhO*)e7^b5YbpasrP9x&B1Nk#EDvd4AHh6Rl|SZPgR0y*+Qv= zViW~ji2WlnhbE!9gMkahs0|ID8}5G9uS7<8SVISPCpjESfZm`Edobmbt7 z3aU9^6KjdP*~G!Pt|THN^7bFGx0Zw1LNLJKGy+Zwg82^s(?s;{#l+mw+-o^tekswqJAVev`FRPKntL+WCTwp z`&`>8eYK@g@Sv#A;x8D6j_3-czWIqQaVnE9M{Q2{v zkSEXn0^`&x*Nj(ee0!RnBZWiX-|rqMvP8zZPoK!YAu1_pTl+9LFmMGB#){XXIcQ;< zUUIrXGW|*!2wn3x^i>2@L&_U}0A5o513_Ybetu2O!2E8ZB%nxw_a!{sa$<~xo0Egdt4lQ za8=-}`Fil;xE`Q~svQH=DLbYq5sVL?T%Q3j&FvY@zF6%ZC}tAY=se-=IgOpwB{HXT6J;sYif_=#N87lDM3 z_u?dB$RD4t?CJYQH+*w0Ay?im$jNq{BNBpke&vuC0ny9ocwA%eab9^q?$SG2wzypX z_(0W_RKwf1JBEnZ&JG6iY&KQrzh`Z2-SFL~4y`L1wzU9= z;p&ofYrJQ&oJZogty@xK^@9aRx3^3n#=^pg##Ltjv4U>~y&Vk4j|IjnT})(|wKN-Z zCx*%dU4)u0&H!D23lfl?+0AorrwV0` zt~5mxC{%RS%i_|k!40#6Mf?X`tw3yEj{NJ~pQ!XfmN2_6~XngREh z4X|DQ6?wZ3CO*ecb8$)8)z(y1g#boUVxMyA1~APqf0}^d$lvJ9P`4|nWslW~6_EJ2 z2DX=|tsYRkiAqV?kwPl6>?r2{ev*a7I2;b>{@u$$KKKFO4rf!h8gXz%8M?)&>{b%MQEYsl%wa_#f6B$kkK8nj`8=$53?;cJIu! zY=~CUV*7vV&+%K3+zc3RF+RxJ5mR-UpW6;`wDn<%5OBB3BP%+iV|&!5ujz6veu)u zBfiF}@2nX}kxT{1z=;SbQF6BdudBNfXg8o`u6pw*gkBBcOD3LiQ-8Sj3kW39^?yS4 z-Pm2rv(Et2%q}nWvbxJA;6A?1AdG9FE$ZZce7fHH2^8ez|DqsY<&BDr1X@&(n^$^r za)d~@|A@3N%>Oac;@*f$los3VN(4dm+LO-1yzm$Fegga-ucvv#G|nb_OH9j#Gb2$2 zNM0j~y5HSraf+G$9CeQy9~v4eI!27k%kD-3a=V+FXN`YgsEk#3R6nap#II(jGRu9;1-8f{u;nJf#dKJnv&mn@SQ9#l zZ!8OHt88SLKfh%P+GGI!Vv|@4FoBqum;k;aiOaL?DF+`t0!ko|mY*_#bO%U8EY5L{ zbjv3A-E?wtvbIj`bzRY%0A$3Lyw1Lw16fj+`^g7q+n#2>s{xiTK&LppHJzK$9}NV0 zi>3v&aRk6C7WrlYDvGk~hkfU-{g&g##D}dITjuPOd}3x{A^hHyeLC%0em_V(gU}!P zGgZI?=c|DNJTX502TTzLvSz4$WPj3`SA$k-Dla>$N0a8LhCDlsJESjTm>*41ft6Thnl4K`&HacQ+MMWNN}1@?+y0< z7fR#r=pFz>X7x@rN-{EGwSzJ_9 z1Wazcyv!hv3ZL)h{41Ju3W{6zb?zOW7y&$DNt>!=ARPz30GxXcOZGlF@*DONzW02FN(IYI2^MDXnmwR#}z+L#i45f_L)0s|*a2}wy>RiIeVfrF0p>UIz2b>ED3B+9|@!0)Mw3t*sBc4Hnu(m}4=x&?)X z{`z=GP@$F8WLFnP+M@UT|I41}%emJRMH8`~|F1jI{|R>@Ens*1f8B}xzi}t}pLA*g z)#87`Z1w-ykq82L{J(Eh`R^<2wP!vyRrK%JuAyI^z*z!ham73Pb`Nmnz)uAXuF3x$ zH%NraZqBeIOn*uy@7lM_6!b9CEiA{}yj4TT)+VuHki#m!{d<1C5#bFSvE>HjA&jt0 z`lVC>GqTdl1NDKw#mG;u+z-*}tZV@UiuDkKI>@6i=pJhL2(rckU@41rlkBtv9@xR% c6Wjra+wyQn{HNpPyA@YY%TN<@)BeeS15{*IW&i*H literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-information-tab-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-information-tab-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d787b38e6a58225fb8c20672bc36c3a54e9975 GIT binary patch literal 63168 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≻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 Q5GTP?1!^c&D4K=+59#7i(*OVf literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-search-filter-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-search-filter-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..97b0faa33cfcda4d8e8b76c51d2ecde8c41d45b1 GIT binary patch literal 5588 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 J;l#H;{0|A%T!8=p literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-visual-states-chromium-win32.png b/test/screenshots/visual/result-view.spec.ts-snapshots/result-view-visual-states-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..e825293c9effd9641dd2cfdeddd692b28dac500e GIT binary patch literal 18265 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/smoke.spec.ts-snapshots/smoke-baseline-chromium-win32.png b/test/screenshots/visual/smoke.spec.ts-snapshots/smoke-baseline-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..c22b1b2d9aa705b2f6cf507a929cf5b4ccc7199f GIT binary patch literal 25970 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 A&Hw-a literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-beautify-chromium-win32.png b/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-beautify-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed95737aa553565548dccdb92cea38fe4ca1382 GIT binary patch literal 55644 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%0AF((z(%dkUOOXRAZ%ejmy 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-fragment-chromium-win32.png b/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-fragment-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..4b855af888421d2ab07eea7bce76a1e7865d6515 GIT binary patch literal 48507 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-tab-bar-chromium-win32.png b/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-tab-bar-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..64ae453d36dc7c1e8dcda93d81ee769eeba8e88a GIT binary patch literal 3072 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 literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-vertex-chromium-win32.png b/test/screenshots/visual/source-code.spec.ts-snapshots/source-code-vertex-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..c75b449a498f6ca61cb039cbfcbb60c2a2f5e8f4 GIT binary patch literal 55799 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 ZnZZ-n<*TKp>JLy!?&<31vd$@?2>>|-1+@SG literal 0 HcmV?d00001 diff --git a/test/screenshots/visual/visual-state-no-stray-text.spec.ts-snapshots/visual-state-no-stray-text-chromium-win32.png b/test/screenshots/visual/visual-state-no-stray-text.spec.ts-snapshots/visual-state-no-stray-text-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..e825293c9effd9641dd2cfdeddd692b28dac500e GIT binary patch literal 18265 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 literal 0 HcmV?d00001 diff --git a/test/visual/capture-menu.spec.ts b/test/visual/capture-menu.spec.ts new file mode 100644 index 00000000..04e9683e --- /dev/null +++ b/test/visual/capture-menu.spec.ts @@ -0,0 +1,199 @@ +import { test, expect } from "../helpers/spector-fixture"; +import { Page } from "@playwright/test"; + +/** + * Compute a page-level clip that covers both the menu bar and log area. + * The parent wrapper div has zero dimensions (children are position:absolute), + * so we union the bounding boxes of the two visible child components. + */ +async function getMenuClip(page: Page) { + const menuBox = await page.locator(".captureMenuComponent").boundingBox(); + const logBox = await page.locator(".captureMenuLogComponent").boundingBox(); + if (!menuBox || !logBox) { + throw new Error("CaptureMenu elements not found — are they visible?"); + } + const x = Math.min(menuBox.x, logBox.x); + const y = Math.min(menuBox.y, logBox.y); + const right = Math.max(menuBox.x + menuBox.width, logBox.x + logBox.width); + const bottom = Math.max(menuBox.y + menuBox.height, logBox.y + logBox.height); + return { x, y, width: right - x, height: bottom - y }; +} + +test.describe("CaptureMenu visual regression", () => { + + test("default state with auto-selected canvas", async ({ spectorPage }) => { + const { page } = spectorPage; + await spectorPage.injectStabilizationCSS(); + await page.waitForTimeout(200); + + // Verify canvas auto-selected (single canvas → auto-select) + await expect(page.locator(".canvasListComponent [commandName=onCanvasSelection]")) + .toContainText("renderCanvas (800*600)"); + + // Verify log shows actions help text (not "select a canvas") + await expect(page.locator(".captureMenuLogComponent span").first()) + .toContainText("Record with the red button"); + + // Screenshot both menu bar + log via page clip (parent div has zero height) + const clip = await getMenuClip(page); + await expect(page).toHaveScreenshot("capture-menu-default.png", { clip }); + }); + + test("canvas dropdown open", async ({ spectorPage }) => { + const { page } = spectorPage; + await spectorPage.injectStabilizationCSS(); + await page.waitForTimeout(200); + + // Click canvas selector to open the dropdown list + await page.locator(".canvasListComponent [commandName=onCanvasSelection]").click(); + await page.waitForTimeout(200); + + // The