diff --git a/VERSION b/VERSION index 348fc11e..ea4bd0fb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.12 +2.1.13 diff --git a/assets/dist/120.js.map b/assets/dist/120.js.map index 84268687..a0e12876 100644 --- a/assets/dist/120.js.map +++ b/assets/dist/120.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.120.js","mappings":"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","sources":["webpack:///./src/vue/components/page-builder/addons/addon-feature.vue","webpack:///./src/vue/components/page-builder/addons/addon-feature.vue?471f"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-feature.vue?vue&type=template&id=2f5f478c\"\nimport script from \"./addon-feature.vue?vue&type=script&lang=js\"\nexport * from \"./addon-feature.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","target","href","value","name","components","SliderInput","BoxOffset","ColorInput","RwdGroup","SingleImage","ButtonRadio","TitleOptions","props","lunaAddonMixin","setup","ctx","state","options","link","link_element","layout_type","image","icon","border","width","lg","md","xs","color","style","radius","font_size","bg_color","margin_top","margin_bottom","padding","content","content_font_size","content_line_height","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","type","_hoisted_7","_hoisted_8","_createVNode","_component_ButtonRadio","variant","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_SingleImage","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_normalizeClass","_hoisted_20","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_21","size","_component_SliderInput","max","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_component_ColorInput","lazy","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_33","_hoisted_34","_component_BoxOffset","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","align","_hoisted_55","_hoisted_56"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.120.js","mappings":"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","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-feature.vue","webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-feature.vue?471f"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-feature.vue?vue&type=template&id=2f5f478c\"\nimport script from \"./addon-feature.vue?vue&type=script&lang=js\"\nexport * from \"./addon-feature.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","target","href","value","name","components","SliderInput","BoxOffset","ColorInput","RwdGroup","SingleImage","ButtonRadio","TitleOptions","props","lunaAddonMixin","setup","ctx","state","options","link","link_element","layout_type","image","icon","border","width","lg","md","xs","color","style","radius","font_size","bg_color","margin_top","margin_bottom","padding","content","content_font_size","content_line_height","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","type","_hoisted_7","_hoisted_8","_createVNode","_component_ButtonRadio","variant","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_SingleImage","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_normalizeClass","_hoisted_20","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_21","size","_component_SliderInput","max","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_component_ColorInput","lazy","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_33","_hoisted_34","_component_BoxOffset","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","align","_hoisted_55","_hoisted_56"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/158.js.map b/assets/dist/158.js.map index cc177ee9..acda7880 100644 --- a/assets/dist/158.js.map +++ b/assets/dist/158.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.158.js","mappings":"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","sources":["webpack:///./node_modules/sweetalert/dist/sweetalert.min.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=8)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=\"swal-button\";e.CLASS_NAMES={MODAL:\"swal-modal\",OVERLAY:\"swal-overlay\",SHOW_MODAL:\"swal-overlay--show-modal\",MODAL_TITLE:\"swal-title\",MODAL_TEXT:\"swal-text\",ICON:\"swal-icon\",ICON_CUSTOM:\"swal-icon--custom\",CONTENT:\"swal-content\",FOOTER:\"swal-footer\",BUTTON_CONTAINER:\"swal-button-container\",BUTTON:o,CONFIRM_BUTTON:o+\"--confirm\",CANCEL_BUTTON:o+\"--cancel\",DANGER_BUTTON:o+\"--danger\",BUTTON_LOADING:o+\"--loading\",BUTTON_LOADER:o+\"__loader\"},e.default=e.CLASS_NAMES},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getNode=function(t){var e=\".\"+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement(\"div\");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,\"\"),\"SweetAlert: \"+(t=t.trim())},e.isPlainObject=function(t){if(\"[object Object]\"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+\"st\":2===e&&12!==n?t+\"nd\":3===e&&13!==n?t+\"rd\":t+\"th\"}},function(t,e,n){\"use strict\";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,\"__esModule\",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\\n
',e.titleMarkup='\\n
\\n',e.textMarkup='\\n
',e.footerMarkup='\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1);e.CONFIRM_KEY=\"confirm\",e.CANCEL_KEY=\"cancel\";var r={visible:!0,text:null,value:null,className:\"\",closeModal:!0},i=Object.assign({},r,{visible:!1,text:\"Cancel\",value:null}),a=Object.assign({},r,{text:\"OK\",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):\"string\"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement(\"style\");return t.attrs.type=\"text/css\",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement(\"link\");return t.attrs.type=\"text/css\",t.attrs.rel=\"stylesheet\",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?\"\":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute(\"media\",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var a=new Blob([o],{type:\"text/css\"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");e=e||{},e.attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,\"includes\",{value:function(t,e){if(null==this)throw new TypeError('\"this\" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){\"use strict\";function o(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.OVERLAY,i='
\\n
';e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+\"--error\",e=t+\"__line\";return'\\n
\\n \\n \\n
\\n '},e.warningIconMarkup=function(){var t=r+\"--warning\";return'\\n \\n \\n \\n '},e.successIconMarkup=function(){var t=r+\"--success\";return'\\n \\n \\n\\n
\\n
\\n '}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\\n
\\n\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\\n
\\n\\n \\n\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=[\"error\",\"warning\",\"success\",\"info\"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+\"--\"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement(\"img\");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes(\"AppleWebKit\")&&(t.style.display=\"none\",t.offsetHeight,t.style.display=\"\")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split(\"\\n\").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener(\"click\",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener(\"input\",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener(\"keyup\",function(t){if(\"Enter\"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue(\"\")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+\"__\"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}\"input\"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;\"string\"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case\"Escape\":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case\"Tab\":return f(t)}},b=function(t){if(o.default.isOpen)return\"Tab\"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener(\"keydown\",m)},w=function(t){t[0].addEventListener(\"keydown\",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener(\"click\",x),t&&e.addEventListener(\"click\",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener(\"keyup\",p):document.removeEventListener(\"keyup\",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr(\"Cannot set both 'button' and 'buttons' options!\"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+\" argument ('\"+t+\"') is invalid\")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr(\"Expected \"+u(n)+\" argument ('\"+r+\"') to be a plain object\")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr(\"Unexpected \"+u(n)+\" argument (\"+r+\")\")},m=function(t,e,n,r){var i=typeof e,a=\"string\"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e',e.titleMarkup='\\n
\\n',e.textMarkup='\\n
',e.footerMarkup='\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1);e.CONFIRM_KEY=\"confirm\",e.CANCEL_KEY=\"cancel\";var r={visible:!0,text:null,value:null,className:\"\",closeModal:!0},i=Object.assign({},r,{visible:!1,text:\"Cancel\",value:null}),a=Object.assign({},r,{text:\"OK\",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):\"string\"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement(\"style\");return t.attrs.type=\"text/css\",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement(\"link\");return t.attrs.type=\"text/css\",t.attrs.rel=\"stylesheet\",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?\"\":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute(\"media\",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var a=new Blob([o],{type:\"text/css\"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");e=e||{},e.attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,\"includes\",{value:function(t,e){if(null==this)throw new TypeError('\"this\" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){\"use strict\";function o(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.OVERLAY,i='
\\n
';e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+\"--error\",e=t+\"__line\";return'\\n
\\n \\n \\n
\\n '},e.warningIconMarkup=function(){var t=r+\"--warning\";return'\\n \\n \\n \\n '},e.successIconMarkup=function(){var t=r+\"--success\";return'\\n \\n \\n\\n
\\n
\\n '}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\\n
\\n\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\\n
\\n\\n \\n\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=[\"error\",\"warning\",\"success\",\"info\"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+\"--\"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement(\"img\");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes(\"AppleWebKit\")&&(t.style.display=\"none\",t.offsetHeight,t.style.display=\"\")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split(\"\\n\").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener(\"click\",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener(\"input\",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener(\"keyup\",function(t){if(\"Enter\"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue(\"\")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+\"__\"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}\"input\"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;\"string\"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case\"Escape\":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case\"Tab\":return f(t)}},b=function(t){if(o.default.isOpen)return\"Tab\"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener(\"keydown\",m)},w=function(t){t[0].addEventListener(\"keydown\",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener(\"click\",x),t&&e.addEventListener(\"click\",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener(\"keyup\",p):document.removeEventListener(\"keyup\",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr(\"Cannot set both 'button' and 'buttons' options!\"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+\" argument ('\"+t+\"') is invalid\")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr(\"Expected \"+u(n)+\" argument ('\"+r+\"') to be a plain object\")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr(\"Unexpected \"+u(n)+\" argument (\"+r+\")\")},m=function(t,e,n,r){var i=typeof e,a=\"string\"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*\",\"i\"),i=r.replace(n,\"$1\").trim());for(var h=0;h0?\" \".concat(e[5]):\"\",\" {\")),r+=t(e),n&&(r+=\"}\"),e[2]&&(r+=\"}\"),e[4]&&(r+=\"}\"),r})).join(\"\")},e.i=function(t,r,n,i,o){\"string\"===typeof t&&(t=[[null,t,void 0]]);var a={};if(n)for(var s=0;s0?\" \".concat(c[5]):\"\",\" {\").concat(c[1],\"}\")),c[5]=o),r&&(c[2]?(c[1]=\"@media \".concat(c[2],\" {\").concat(c[1],\"}\"),c[2]=r):c[2]=r),i&&(c[4]?(c[1]=\"@supports (\".concat(c[4],\") {\").concat(c[1],\"}\"),c[4]=i):c[4]=\"\".concat(i)),e.push(c))}},e}},117:function(t){\"use strict\";t.exports=function(t){return t[1]}},831:function(t,e){\"use strict\";e.Z=(t,e)=>{const r=t.__vccOpts||t;for(const[n,i]of e)r[n]=i;return r}},466:function(t,e,r){var n=r(905);n.__esModule&&(n=n.default),\"string\"===typeof n&&(n=[[t.id,n,\"\"]]),n.locals&&(t.exports=n.locals);var i=r(959).Z;i(\"50bc1720\",n,!0,{sourceMap:!1,shadowMode:!1})},18:function(t,e,r){var n=r(121);n.__esModule&&(n=n.default),\"string\"===typeof n&&(n=[[t.id,n,\"\"]]),n.locals&&(t.exports=n.locals);var i=r(959).Z;i(\"10aa5f36\",n,!0,{sourceMap:!1,shadowMode:!1})},631:function(t,e,r){var n=r(207);n.__esModule&&(n=n.default),\"string\"===typeof n&&(n=[[t.id,n,\"\"]]),n.locals&&(t.exports=n.locals);var i=r(959).Z;i(\"1772934e\",n,!0,{sourceMap:!1,shadowMode:!1})},959:function(t,e,r){\"use strict\";function n(t,e){for(var r=[],n={},i=0;ir.parts.length&&(n.parts.length=r.parts.length)}else{var a=[];for(i=0;i-1},required:!0},tooltipFormatter:{type:[String,Function]},focus:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},dotStyle:{type:Object},tooltipStyle:{type:Object}},computed:{dotClasses:function(){return[\"vue-slider-dot\",{\"vue-slider-dot-hover\":\"hover\"===this.tooltip||\"active\"===this.tooltip,\"vue-slider-dot-disabled\":this.disabled,\"vue-slider-dot-focus\":this.focus}]},handleClasses:function(){return[\"vue-slider-dot-handle\",{\"vue-slider-dot-handle-disabled\":this.disabled,\"vue-slider-dot-handle-focus\":this.focus}]},tooltipClasses:function(){return[\"vue-slider-dot-tooltip\",[\"vue-slider-dot-tooltip-\".concat(this.tooltipPlacement)],{\"vue-slider-dot-tooltip-show\":this.showTooltip}]},tooltipInnerClasses:function(){return[\"vue-slider-dot-tooltip-inner\",[\"vue-slider-dot-tooltip-inner-\".concat(this.tooltipPlacement)],{\"vue-slider-dot-tooltip-inner-disabled\":this.disabled,\"vue-slider-dot-tooltip-inner-focus\":this.focus}]},showTooltip:function(){switch(this.tooltip){case\"always\":return!0;case\"none\":return!1;case\"focus\":case\"active\":return!!this.focus;default:return!1}},tooltipValue:function(){return this.tooltipFormatter?\"string\"===typeof this.tooltipFormatter?this.tooltipFormatter.replace(/\\{value\\}/,String(this.value)):this.tooltipFormatter(this.value):this.value}},methods:{dragStart:function(){if(this.disabled)return!1;this.$emit(\"DragStart\")}}}),f=n(831);const p=(0,f.Z)(h,[[\"render\",d]]);var m=p;function v(t,e,r,n,i,a){return(0,o.openBlock)(),(0,o.createElementBlock)(\"div\",{class:(0,o.normalizeClass)(t.marksClasses)},[(0,o.renderSlot)(t.$slots,\"step\",{},(function(){return[(0,o.createElementVNode)(\"div\",{class:(0,o.normalizeClass)(t.stepClasses),style:(0,o.normalizeStyle)([t.stepStyle,t.mark.style,t.mark.active?t.stepActiveStyle:null,t.mark.active?t.mark.activeStyle:null])},null,6)]})),t.hideLabel?(0,o.createCommentVNode)(\"\",!0):(0,o.renderSlot)(t.$slots,\"label\",{key:0},(function(){return[(0,o.createElementVNode)(\"div\",{class:(0,o.normalizeClass)(t.labelClasses),style:(0,o.normalizeStyle)([t.labelStyle,t.mark.labelStyle,t.mark.active?t.labelActiveStyle:null,t.mark.active?t.mark.labelActiveStyle:null]),onClick:e[0]||(e[0]=function(){return t.labelClickHandle&&t.labelClickHandle.apply(t,arguments)})},(0,o.toDisplayString)(t.mark.label),7)]}))],2)}n(18);var y=(0,o.defineComponent)({name:\"VueSliderMark\",emits:[\"PressLabel\"],props:{mark:{type:Object,required:!0},hideLabel:{type:Boolean},stepStyle:{type:Object},stepActiveStyle:{type:Object},labelStyle:{type:Object},labelActiveStyle:{type:Object}},computed:{marksClasses:function(){return[\"vue-slider-mark\",{\"vue-slider-mark-active\":this.mark.active}]},stepClasses:function(){return[\"vue-slider-mark-step\",{\"vue-slider-mark-step-active\":this.mark.active}]},labelClasses:function(){return[\"vue-slider-mark-label\",{\"vue-slider-mark-label-active\":this.mark.active}]}},methods:{labelClickHandle:function(t){t.stopPropagation(),this.$emit(\"PressLabel\",this.mark.pos)}}});const b=(0,f.Z)(y,[[\"render\",v]]);var g,k=b,S=function(t){return\"number\"===typeof t?\"\".concat(t,\"px\"):t},x=function(t){var e=document.documentElement,r=document.body,n=t.getBoundingClientRect(),i={y:n.top+(window.pageYOffset||e.scrollTop)-(e.clientTop||r.clientTop||0),x:n.left+(window.pageXOffset||e.scrollLeft)-(e.clientLeft||r.clientLeft||0)};return i},D=function(t,e,r){var n=\"targetTouches\"in t?t.targetTouches[0]:t,i=x(e),o={x:n.pageX-i.x,y:n.pageY-i.y};return{x:r?e.offsetWidth-o.x:o.x,y:r?e.offsetHeight-o.y:o.y}};(function(t){t[t[\"PAGE_UP\"]=33]=\"PAGE_UP\",t[t[\"PAGE_DOWN\"]=34]=\"PAGE_DOWN\",t[t[\"END\"]=35]=\"END\",t[t[\"HOME\"]=36]=\"HOME\",t[t[\"LEFT\"]=37]=\"LEFT\",t[t[\"UP\"]=38]=\"UP\",t[t[\"RIGHT\"]=39]=\"RIGHT\",t[t[\"DOWN\"]=40]=\"DOWN\"})(g||(g={}));var P=function(t,e){if(e.hook){var r=e.hook(t);if(\"function\"===typeof r)return r;if(!r)return null}switch(t.keyCode){case g.UP:return function(t){return\"ttb\"===e.direction?t-1:t+1};case g.RIGHT:return function(t){return\"rtl\"===e.direction?t-1:t+1};case g.DOWN:return function(t){return\"ttb\"===e.direction?t+1:t-1};case g.LEFT:return function(t){return\"rtl\"===e.direction?t+1:t-1};case g.END:return function(){return e.max};case g.HOME:return function(){return e.min};case g.PAGE_UP:return function(t){return t+10};case g.PAGE_DOWN:return function(t){return t-10};default:return null}};function w(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function O(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rthis.total&&(t=this.total),this.data?this.data[t]:new j(t).multiply(this.interval).plus(this.min).toNumber()}},{key:\"setDotPos\",value:function(t,e){t=this.getValidPos(t,e).pos;var r=t-this.dotsPos[e];if(r){var n=new Array(this.dotsPos.length);this.fixed?n=this.getFixedChangePosArr(r,e):this.minRange||this.maxRange?n=this.getLimitRangeChangePosArr(t,r,e):n[e]=r,this.setDotsPos(this.dotsPos.map((function(t,e){return t+(n[e]||0)})))}}},{key:\"getFixedChangePosArr\",value:function(t,e){var r=this;return this.dotsPos.forEach((function(n,i){if(i!==e){var o=r.getValidPos(n+t,i),a=o.pos,s=o.inRange;s||(t=Math.min(Math.abs(a-n),Math.abs(t))*(t<0?-1:1))}})),this.dotsPos.map((function(e){return t}))}},{key:\"getLimitRangeChangePosArr\",value:function(t,e,r){var n=this,i=[{index:r,changePos:e}],o=e;return[this.minRange,this.maxRange].forEach((function(a,s){if(!a)return!1;var l=0===s,u=e>0,c=0;c=l?u?1:-1:u?-1:1;var d=function(t,e){var r=Math.abs(t-e);return l?rn.maxRangeDir},h=r+c,f=n.dotsPos[h],p=t;while(n.isPos(f)&&d(f,p)){var m=n.getValidPos(f+o,h),v=m.pos;i.push({index:h,changePos:v-f}),h+=c,p=v,f=n.dotsPos[h]}})),this.dotsPos.map((function(t,e){var r=i.filter((function(t){return t.index===e}));return r.length?r[0].changePos:0}))}},{key:\"isPos\",value:function(t){return\"number\"===typeof t}},{key:\"getValidPos\",value:function(t,e){var r=this.valuePosRange[e],n=!0;return tr[1]&&(t=r[1],n=!1),{pos:t,inRange:n}}},{key:\"parseValue\",value:function(t){if(this.data)t=this.data.indexOf(t);else if(\"number\"===typeof t||\"string\"===typeof t){if(t=+t,tthis.max)return this.emitError(V.MAX),0;if(\"number\"!==typeof t||t!==t)return this.emitError(V.VALUE),0;t=new j(t).minus(this.min).divide(this.interval).toNumber()}var e=new j(t).multiply(this.gap).toNumber();return e<0?0:e>100?100:e}},{key:\"parsePos\",value:function(t){var e=Math.round(t/this.gap);return this.getValueByIndex(e)}},{key:\"isActiveByPos\",value:function(t){return this.processArray.some((function(e){var r=C(e,2),n=r[0],i=r[1];return t>=n&&t<=i}))}},{key:\"getValues\",value:function(){if(this.data)return this.data;for(var t=[],e=0;e<=this.total;e++)t.push(new j(e).multiply(this.interval).plus(this.min).toNumber());return t}},{key:\"getRangeDir\",value:function(t){return t?new j(t).divide(new j(this.data?this.data.length-1:this.max).minus(this.data?0:this.min).toNumber()).multiply(100).toNumber():100}},{key:\"emitError\",value:function(t){this.onError&&this.onError(t,q[t])}},{key:\"processArray\",get:function(){if(this.process){if(\"function\"===typeof this.process)return this.process(this.dotsPos);if(1===this.dotsPos.length)return[[0,this.dotsPos[0]]];if(this.dotsPos.length>1)return[[Math.min.apply(Math,z(this.dotsPos)),Math.max.apply(Math,z(this.dotsPos))]]}return[]}},{key:\"total\",get:function(){var t=0;return t=this.data?this.data.length-1:new j(this.max).minus(this.min).divide(this.interval).toNumber(),t-Math.floor(t)!==0?(this.emitError(V.INTERVAL),0):t}},{key:\"gap\",get:function(){return 100/this.total}},{key:\"minRangeDir\",get:function(){return this.cacheRangeDir[this.minRange]?this.cacheRangeDir[this.minRange]:this.cacheRangeDir[this.minRange]=this.getRangeDir(this.minRange)}},{key:\"maxRangeDir\",get:function(){return this.cacheRangeDir[this.maxRange]?this.cacheRangeDir[this.maxRange]:this.cacheRangeDir[this.maxRange]=this.getRangeDir(this.maxRange)}},{key:\"getDotRange\",value:function(t,e,r){if(!this.dotOptions)return r;var n=Array.isArray(this.dotOptions)?this.dotOptions[t]:this.dotOptions;return n&&void 0!==n[e]?this.parseValue(n[e]):r}},{key:\"valuePosRange\",get:function(){var t=this,e=this.dotsPos,r=[];return e.forEach((function(n,i){r.push([Math.max(t.minRange?t.minRangeDir*i:0,t.enableCross?0:e[i-1]||0,t.getDotRange(i,\"min\",0)),Math.min(t.minRange?100-t.minRangeDir*(e.length-1-i):100,t.enableCross?100:e[i+1]||100,t.getDotRange(i,\"max\",100))])})),r}},{key:\"dotsIndex\",get:function(){var t=this;return this.dotsValue.map((function(e){return t.getIndexByValue(e)}))}}]),t}();function Y(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function K(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r-1}},width:{type:[Number,String]},height:{type:[Number,String]},dotSize:{type:[Number,Array],default:14},contained:{type:Boolean,default:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},disabled:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},dragOnClick:{type:Boolean,default:!1},duration:{type:Number,default:.5},vData:{type:[Object,Array]},dataValue:{type:String,default:\"value\"},dataLabel:{type:String,default:\"label\"},lazy:{type:Boolean,default:!1},tooltip:{type:String,default:\"active\",validator:function(t){return[\"none\",\"always\",\"focus\",\"hover\",\"active\"].indexOf(t)>-1}},tooltipPlacement:{type:[String,Array],validator:function(t){return(Array.isArray(t)?t:[t]).every((function(t){return[\"top\",\"right\",\"bottom\",\"left\"].indexOf(t)>-1}))}},tooltipFormatter:{type:[String,Array,Function]},useKeyboard:{type:Boolean,default:!0},keydownHook:{type:Function},enableCross:{type:Boolean,default:!0},fixed:{type:Boolean,default:!1},order:{type:Boolean,default:!0},minRange:{type:Number},maxRange:{type:Number},marks:{type:[Boolean,Object,Array,Function],default:!1},process:{type:[Boolean,Function],default:!0},included:{type:Boolean},adsorb:{type:Boolean},hideLabel:{type:Boolean},dotOptions:{type:[Object,Array]},dotAttrs:{type:Object},railStyle:{type:Object},processStyle:{type:Object},dotStyle:{type:Object},tooltipStyle:{type:Object},stepStyle:{type:Object},stepActiveStyle:{type:Object},labelStyle:{type:Object},labelActiveStyle:{type:Object}},computed:{isHorizontal:function(){return\"ltr\"===this.direction||\"rtl\"===this.direction},isReverse:function(){return\"rtl\"===this.direction||\"btt\"===this.direction},tailSize:function(){return S((this.isHorizontal?this.height:this.width)||vt)},containerClasses:function(){return[\"vue-slider\",[\"vue-slider-\".concat(this.direction)],{\"vue-slider-disabled\":this.disabled}]},containerStyles:function(){var t=Array.isArray(this.dotSize)?this.dotSize:[this.dotSize,this.dotSize],e=ut(t,2),r=e[0],n=e[1],i=this.width?S(this.width):this.isHorizontal?\"auto\":S(vt),o=this.height?S(this.height):this.isHorizontal?S(vt):\"auto\";return{padding:this.contained?\"\".concat(n/2,\"px \").concat(r/2,\"px\"):this.isHorizontal?\"\".concat(n/2,\"px 0\"):\"0 \".concat(r/2,\"px\"),width:i,height:o}},processArray:function(){var t=this;return this.control.processArray.map((function(e,r){var n,i=ut(e,3),o=i[0],a=i[1],s=i[2];if(o>a){var l=[a,o];o=l[0],a=l[1]}var u=t.isHorizontal?\"width\":\"height\";return{start:o,end:a,index:r,style:st(st((n={},lt(n,t.isHorizontal?\"height\":\"width\",\"100%\"),lt(n,t.isHorizontal?\"top\":\"left\",0),lt(n,t.mainDirection,\"\".concat(o,\"%\")),lt(n,u,\"\".concat(a-o,\"%\")),lt(n,\"transitionProperty\",\"\".concat(u,\",\").concat(t.mainDirection)),lt(n,\"transitionDuration\",\"\".concat(t.animateTime,\"s\")),n),t.processStyle),s)}}))},dotBaseStyle:function(){var t,e=Array.isArray(this.dotSize)?this.dotSize:[this.dotSize,this.dotSize],r=ut(e,2),n=r[0],i=r[1];return t=this.isHorizontal?lt({transform:\"translate(\".concat(this.isReverse?\"50%\":\"-50%\",\", -50%)\"),WebkitTransform:\"translate(\".concat(this.isReverse?\"50%\":\"-50%\",\", -50%)\"),top:\"50%\"},\"ltr\"===this.direction?\"left\":\"right\",\"0\"):lt({transform:\"translate(-50%, \".concat(this.isReverse?\"50%\":\"-50%\",\")\"),WebkitTransform:\"translate(-50%, \".concat(this.isReverse?\"50%\":\"-50%\",\")\"),left:\"50%\"},\"btt\"===this.direction?\"bottom\":\"top\",\"0\"),st({width:\"\".concat(n,\"px\"),height:\"\".concat(i,\"px\")},t)},mainDirection:function(){switch(this.direction){case\"ltr\":return\"left\";case\"rtl\":return\"right\";case\"btt\":return\"bottom\";case\"ttb\":return\"top\";default:return\"left\"}},tooltipDirections:function(){var t=this.tooltipPlacement||(this.isHorizontal?\"top\":\"left\");return Array.isArray(t)?t:this.dots.map((function(){return t}))},dots:function(){var t=this;return this.control.dotsPos.map((function(e,r){return st({pos:e,index:r,value:t.control.dotsValue[r],focus:t.states.has(mt.Focus)&&t.focusDotIndex===r,disabled:t.disabled,style:t.dotStyle},(Array.isArray(t.dotOptions)?t.dotOptions[r]:t.dotOptions)||{})}))},animateTime:function(){return this.states.has(mt.Drag)?0:this.duration},canSort:function(){return this.order&&!this.minRange&&!this.maxRange&&!this.fixed&&this.enableCross},sliderData:function(){var t=this;return this.isObjectArrayData(this.vData)?this.vData.map((function(e){return e[t.dataValue]})):this.isObjectData(this.vData)?Object.keys(this.vData):this.vData},sliderMarks:function(){var t=this;return this.marks?this.marks:this.isObjectArrayData(this.vData)?function(e){var r={label:e};return t.vData.some((function(n){return n[t.dataValue]===e&&(r.label=n[t.dataLabel],!0)})),r}:this.isObjectData(this.vData)?this.vData:void 0},sliderTooltipFormatter:function(){var t=this;if(this.tooltipFormatter)return this.tooltipFormatter;if(this.isObjectArrayData(this.vData))return function(e){var r=\"\"+e;return t.vData.some((function(n){return n[t.dataValue]===e&&(r=n[t.dataLabel],!0)})),r};if(this.isObjectData(this.vData)){var e=this.vData;return function(t){return e[t]}}},isNotSync:function(){var t=this.control.dotsValue;return Array.isArray(this.modelValue)?this.modelValue.length!==t.length||this.modelValue.some((function(e,r){return e!==t[r]})):this.modelValue!==t[0]},dragRange:function(){var t=this.dots[this.focusDotIndex-1],e=this.dots[this.focusDotIndex+1];return[t?t.pos:-1/0,e?e.pos:1/0]}},watch:{modelValue:function(){this.control&&!this.states.has(mt.Drag)&&this.isNotSync&&this.control.setValue(this.modelValue)}},methods:{isObjectData:function(t){return!!t&&\"[object Object]\"===Object.prototype.toString.call(t)},isObjectArrayData:function(t){return!!t&&Array.isArray(t)&&t.length>0&&\"object\"===ot(t[0])},bindEvent:function(){document.addEventListener(\"touchmove\",this.dragMove,{passive:!1}),document.addEventListener(\"touchend\",this.dragEnd,{passive:!1}),document.addEventListener(\"mousedown\",this.blurHandle),document.addEventListener(\"mousemove\",this.dragMove),document.addEventListener(\"mouseup\",this.dragEnd),document.addEventListener(\"mouseleave\",this.dragEnd),document.addEventListener(\"keydown\",this.keydownHandle)},unbindEvent:function(){document.removeEventListener(\"touchmove\",this.dragMove),document.removeEventListener(\"touchend\",this.dragEnd),document.removeEventListener(\"mousedown\",this.blurHandle),document.removeEventListener(\"mousemove\",this.dragMove),document.removeEventListener(\"mouseup\",this.dragEnd),document.removeEventListener(\"mouseleave\",this.dragEnd),document.removeEventListener(\"keydown\",this.keydownHandle)},setScale:function(){this.scale=new j(Math.floor(this.isHorizontal?this.$el.offsetWidth:this.$el.offsetHeight)).divide(100).toNumber()},initControl:function(){var t=this;this.control=new Z({value:this.modelValue,data:this.sliderData,enableCross:this.enableCross,fixed:this.fixed,max:this.max,min:this.min,interval:this.interval,minRange:this.minRange,maxRange:this.maxRange,order:this.order,marks:this.sliderMarks,included:this.included,process:this.process,adsorb:this.adsorb,dotOptions:this.dotOptions,onError:this.emitError}),[\"data\",\"enableCross\",\"fixed\",\"max\",\"min\",\"interval\",\"minRange\",\"maxRange\",\"order\",\"marks\",\"process\",\"adsorb\",\"included\",\"dotOptions\"].forEach((function(e){t.$watch(e,(function(r){if(\"data\"===e&&Array.isArray(t.control.data)&&Array.isArray(r)&&t.control.data.length===r.length&&r.every((function(e,r){return e===t.control.data[r]})))return!1;switch(e){case\"data\":case\"dataLabel\":case\"dataValue\":t.control.data=t.sliderData;break;case\"mark\":t.control.marks=t.sliderMarks;break;default:t.control[e]=r}[\"data\",\"max\",\"min\",\"interval\"].indexOf(e)>-1&&t.control.syncDotsPos()}))}))},syncValueByPos:function(){var t=this.control.dotsValue;if(this.isDiff(t,Array.isArray(this.modelValue)?this.modelValue:[this.modelValue])){var e=1===t.length?t[0]:et(t);this.$emit(\"change\",e,this.focusDotIndex),this.$emit(\"update:modelValue\",e)}},isDiff:function(t,e){return t.length!==e.length||t.some((function(t,r){return t!==e[r]}))},emitError:function(t,e){this.silent||console.error(\"[VueSlider error]: \".concat(e)),this.$emit(\"error\",t,e)},dragStartOnProcess:function(t){if(this.dragOnClick){this.setScale();var e=this.getPosByEvent(t),r=this.control.getRecentDot(e);if(this.dots[r].disabled)return;this.dragStart(r),this.control.setDotPos(e,this.focusDotIndex),this.lazy||this.syncValueByPos()}},dragStart:function(t){this.focusDotIndex=t,this.setScale(),this.states.add(mt.Drag),this.states.add(mt.Focus),this.$emit(\"drag-start\",this.focusDotIndex)},dragMove:function(t){if(!this.states.has(mt.Drag))return!1;t.preventDefault();var e=this.getPosByEvent(t);this.isCrossDot(e),this.control.setDotPos(e,this.focusDotIndex),this.lazy||this.syncValueByPos();var r=this.control.dotsValue;this.$emit(\"dragging\",1===r.length?r[0]:et(r),this.focusDotIndex)},isCrossDot:function(t){if(this.canSort){var e=this.focusDotIndex,r=t;if(r>this.dragRange[1]?(r=this.dragRange[1],this.focusDotIndex++):r1&&void 0!==arguments[1]?arguments[1]:0;t.disabled||(this.states.add(mt.Focus),this.focusDotIndex=e)},blur:function(){this.states.delete(mt.Focus)},getValue:function(){var t=this.control.dotsValue;return 1===t.length?t[0]:t},getIndex:function(){var t=this.control.dotsIndex;return 1===t.length?t[0]:t},setValue:function(t){this.control.setValue(Array.isArray(t)?et(t):[t]),this.syncValueByPos()},setIndex:function(t){var e=this,r=Array.isArray(t)?t.map((function(t){return e.control.getValueByIndex(t)})):this.control.getValueByIndex(t);this.setValue(r)},setValueByPos:function(t){var e=this,r=this.control.getRecentDot(t);if(this.disabled||this.dots[r].disabled)return!1;this.focusDotIndex=r,this.control.setDotPos(t,r),this.syncValueByPos(),this.useKeyboard&&this.states.add(mt.Focus),setTimeout((function(){e.included&&e.isNotSync?e.control.setValue(e.modelValue):e.control.syncDotsPos()}))},keydownHandle:function(t){var e=this;if(!this.useKeyboard||!this.states.has(mt.Focus))return!1;var r=this.included&&this.marks,n=P(t,{direction:this.direction,max:r?this.control.markList.length-1:this.control.total,min:0,hook:this.keydownHook});if(n){t.preventDefault();var i=-1,o=0;r?(this.control.markList.some((function(t,r){return t.value===e.control.dotsValue[e.focusDotIndex]&&(i=n(r),!0)})),i<0?i=0:i>this.control.markList.length-1&&(i=this.control.markList.length-1),o=this.control.markList[i].pos):(i=n(this.control.getIndexByValue(this.control.dotsValue[this.focusDotIndex])),o=this.control.parseValue(this.control.getValueByIndex(i))),this.isCrossDot(o),this.control.setDotPos(o,this.focusDotIndex),this.syncValueByPos()}},getPosByEvent:function(t){return D(t,this.$el,this.isReverse)[this.isHorizontal?\"x\":\"y\"]/this.scale},renderSlot:function(t,e,r){var n=this.$slots[t];return n?n(e):r}},created:function(){this.initControl()},mounted:function(){this.bindEvent()},beforeUnmount:function(){this.unbindEvent()}});const bt=(0,f.Z)(yt,[[\"render\",l]]);var gt=bt;gt.VueSliderMark=k,gt.VueSliderDot=m;var kt=gt,St=kt}(),i=i[\"default\"],i}()}));\n//# sourceMappingURL=vue-slider-component.umd.min.js.map"],"names":["t","self","module","exports","e","r","n","i","a","Object","getOwnPropertyDescriptor","document","currentScript","get","Error","f","s","exec","stack","l","u","c","location","href","replace","hash","d","getElementsByTagName","documentElement","outerHTML","RegExp","trim","h","length","readyState","src","innerHTML","apply","o","push","id","toString","this","map","concat","join","Z","__vccOpts","__esModule","default","locals","sourceMap","shadowMode","css","media","parts","p","DEBUG","head","navigator","test","userAgent","toLowerCase","m","refs","y","v","createElement","type","appendChild","querySelector","parentNode","removeChild","g","bind","k","b","filter","Boolean","styleSheet","cssText","createTextNode","childNodes","insertBefore","setAttribute","ssrId","sources","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","call","defineProperty","enumerable","prototype","hasOwnProperty","Symbol","toStringTag","value","St","window","match","configurable","writable","key","class","defineComponent","name","emits","props","String","Number","tooltip","required","tooltipPlacement","validator","indexOf","tooltipFormatter","Function","focus","disabled","dotStyle","tooltipStyle","computed","dotClasses","handleClasses","tooltipClasses","showTooltip","tooltipInnerClasses","tooltipValue","methods","dragStart","$emit","openBlock","createElementBlock","ref","normalizeClass","onMousedownPassive","arguments","onTouchstartPassive","renderSlot","$slots","createElementVNode","style","normalizeStyle","toDisplayString","createCommentVNode","mark","hideLabel","stepStyle","stepActiveStyle","labelStyle","labelActiveStyle","marksClasses","active","stepClasses","labelClasses","labelClickHandle","stopPropagation","pos","activeStyle","onClick","label","S","D","targetTouches","body","getBoundingClientRect","top","pageYOffset","scrollTop","clientTop","x","left","pageXOffset","scrollLeft","clientLeft","pageX","pageY","offsetWidth","offsetHeight","O","A","V","j","TypeError","w","R","num","E","getDecimalLen","getExponent","safeRoundUp","decimal","split","Math","pow","max","round","C","Array","isArray","L","iterator","next","done","M","H","B","N","keys","getOwnPropertySymbols","z","U","$","from","F","T","slice","constructor","W","X","q","VALUE","INTERVAL","MIN","MAX","ORDER","_","data","min","interval","order","marks","included","process","adsorb","dotOptions","onError","minRange","maxRange","enableCross","fixed","emitError","setValue","G","setDotsValue","dotsValue","syncDotsPos","sort","dotsPos","getValueByPos","parsePos","markList","forEach","abs","parseValue","getOwnPropertyDescriptors","defineProperties","I","isActiveByPos","getValues","result","minus","divide","toNumber","total","multiply","plus","getValidPos","getFixedChangePosArr","getLimitRangeChangePosArr","setDotsPos","inRange","index","changePos","minRangeDir","maxRangeDir","isPos","valuePosRange","gap","getValueByIndex","processArray","some","floor","cacheRangeDir","getRangeDir","getDotRange","getIndexByValue","K","Q","tt","Y","J","states","has","delete","add","et","ht","it","nt","dt","rt","ot","at","st","lt","ut","pt","ft","ct","mt","None","Drag","Focus","yt","components","VueSliderDot","VueSliderMark","control","scale","focusDotIndex","modelValue","silent","direction","width","height","dotSize","contained","clickable","dragOnClick","duration","vData","dataValue","dataLabel","lazy","every","useKeyboard","keydownHook","dotAttrs","railStyle","processStyle","isHorizontal","isReverse","tailSize","containerClasses","containerStyles","padding","start","end","mainDirection","animateTime","dotBaseStyle","transform","WebkitTransform","tooltipDirections","dots","canSort","sliderData","isObjectArrayData","isObjectData","sliderMarks","sliderTooltipFormatter","isNotSync","dragRange","watch","bindEvent","addEventListener","dragMove","passive","dragEnd","blurHandle","keydownHandle","unbindEvent","removeEventListener","setScale","$el","initControl","$watch","syncValueByPos","isDiff","console","error","dragStartOnProcess","getPosByEvent","getRecentDot","setDotPos","preventDefault","isCrossDot","$refs","setTimeout","container","contains","target","clickHandle","setValueByPos","blur","getValue","getIndex","dotsIndex","setIndex","hook","keyCode","UP","RIGHT","DOWN","LEFT","END","HOME","PAGE_UP","PAGE_DOWN","P","created","mounted","beforeUnmount","gt","resolveComponent","mergeProps","$attrs","Fragment","renderList","normalizeProps","guardReactiveProps","createBlock","onPressLabel","step","withCtx","ref_for","disabledStyle","focusStyle","tooltipDisabledStyle","tooltipFocusStyle","onDragStart","role","tabindex","onFocus","onBlur","dot"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.378.js","mappings":"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","sources":["webpack://src/vue/entries/page-builder.js/./node_modules/vue-slider-component/dist/vue-slider-component.umd.min.js"],"sourcesContent":["(function(t,e){\"object\"===typeof exports&&\"object\"===typeof module?module.exports=e(require(\"vue\")):\"function\"===typeof define&&define.amd?define([\"vue\"],e):\"object\"===typeof exports?exports[\"vue-slider-component\"]=e(require(\"vue\")):t[\"vue-slider-component\"]=e(t[\"Vue\"])})(\"undefined\"!==typeof self?self:this,(function(t){return function(){var e={388:function(t,e){var r,n,i;(function(o,a){n=[],r=a,i=\"function\"===typeof r?r.apply(e,n):r,void 0===i||(t.exports=i)})(\"undefined\"!==typeof self&&self,(function(){function t(){var e=Object.getOwnPropertyDescriptor(document,\"currentScript\");if(!e&&\"currentScript\"in document&&document.currentScript)return document.currentScript;if(e&&e.get!==t&&document.currentScript)return document.currentScript;try{throw new Error}catch(f){var r,n,i,o=/.*at [^(]*\\((.*):(.+):(.+)\\)$/gi,a=/@([^@]*):(\\d+):(\\d+)\\s*$/gi,s=o.exec(f.stack)||a.exec(f.stack),l=s&&s[1]||!1,u=s&&s[2]||!1,c=document.location.href.replace(document.location.hash,\"\"),d=document.getElementsByTagName(\"script\");l===c&&(r=document.documentElement.outerHTML,n=new RegExp(\"(?:[^\\\\n]+?\\\\n){0,\"+(u-2)+\"}[^<]*\n\n\n","import { render } from \"./addon-emptyspace.vue?vue&type=template&id=7d71978c\"\nimport script from \"./addon-emptyspace.vue?vue&type=script&lang=js\"\nexport * from \"./addon-emptyspace.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createElementVNode","class","for","name","components","UnicornSwitcher","SliderInput","RwdGroup","props","lunaAddonMixin","setup","ctx","state","options","height","lg","md","xs","link","link_target","toRefs","_createElementBlock","_createVNode","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_1","size","_component_SliderInput","_ctx","$event","max","_hoisted_2","_hoisted_3","id","type","_hoisted_4","_hoisted_5","_component_UnicornSwitcher","shape","color"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.449.js","mappings":"sMAKQA,EAAAA,EAAAA,oBAEQ,aAFD,gCAEP,G,GAaCC,MAAM,mB,GACTD,EAAAA,EAAAA,oBAA+C,SAAxCE,IAAI,yBAAwB,QAAI,G,SAMpCD,MAAM,mB,GACTD,EAAAA,EAAAA,oBAAoE,SAA7DE,IAAI,gCAA+B,sBAAkB,G,4CAqBlE,SACEC,KAAM,mBACNC,WAAY,CAAEC,gBAAe,IAAEC,YAAW,IAAEC,SAAQA,EAAAA,GACpDC,MAAO,IACFC,EAAAA,EAAeD,OAEpBE,KAAAA,CAAMF,EAAOG,GACX,MAAMC,GAAQH,EAAAA,EAAAA,GAAeD,EAAOG,EAAK,CACvCE,QAAS,CACPC,OAAQ,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,IAENC,KAAM,GACNC,YAAa,MAIjB,MAAO,KACFC,EAAAA,EAAAA,QAAOR,GAEd,GChEF,GAFiC,E,QAAA,GAAgB,EAAQ,CAAC,CAAC,S,8KDJzDS,EAAAA,EAAAA,oBAuCM,aArCJC,EAAAA,EAAAA,aAcWC,EAAA,CAdD,aAAW,mBAAgBC,EAAAA,EAAAA,aAAA,CACxBC,OAAKC,EAAAA,EAAAA,UACd,IAEQ,CAFRC,K,uBAIuB,CAAC,KAAM,KAAM,OAArBC,I,MACRA,E,kBAEP,IAGE,EAHFN,EAAAA,EAAAA,aAGEO,EAAA,C,WAFSC,EAAAjB,QAAQC,OAAOc,G,yBAAfE,EAAAjB,QAAQC,OAAOc,GAAIG,EAC3BC,IAAK,K,qFAMZhC,EAAAA,EAAAA,oBAIM,MAJNiC,EAIM,CAHJC,GAA+C,6CAC/ClC,EAAAA,EAAAA,oBACgD,SADzCmC,GAAG,wBAAwBC,KAAK,M,qCAC5BN,EAAAjB,QAAQK,KAAIa,GAAE9B,MAAM,gB,yBAApB6B,EAAAjB,QAAQK,WAAI,uBAI2B,KAAjBY,EAAAjB,QAAQK,OAAI,kBAA/CG,EAAAA,EAAAA,oBAYM,MAZNgB,EAYM,CAXJC,GAAoE,wBACpEtC,EAAAA,EAAAA,oBASM,aARJsB,EAAAA,EAAAA,aAOEiB,EAAA,CAPepC,KAAK,yB,WACX2B,EAAAjB,QAAQM,Y,qCAARW,EAAAjB,QAAQM,YAAWY,GAC5BI,GAAG,+BACHK,MAAM,SACNC,MAAM,UACN,aAAW,SACX,cAAY,I","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-emptyspace.vue","webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-emptyspace.vue?1434"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-emptyspace.vue?vue&type=template&id=7d71978c\"\nimport script from \"./addon-emptyspace.vue?vue&type=script&lang=js\"\nexport * from \"./addon-emptyspace.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createElementVNode","class","for","name","components","UnicornSwitcher","SliderInput","RwdGroup","props","lunaAddonMixin","setup","ctx","state","options","height","lg","md","xs","link","link_target","toRefs","_createElementBlock","_createVNode","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_1","size","_component_SliderInput","_ctx","$event","max","_hoisted_2","_hoisted_3","id","type","_hoisted_4","_hoisted_5","_component_UnicornSwitcher","shape","color"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/532.js.map b/assets/dist/532.js.map index ea5d752f..3e99dc98 100644 --- a/assets/dist/532.js.map +++ b/assets/dist/532.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.532.js","mappings":";yLAOO,MAAMA,EAAoB,CAC/BC,QAAS,EACTC,KAAM,cACNC,iBAAiB,EACjBC,MAAO,WACPC,aAAa,EACbC,MAAM,EACNC,OAAQ,QACRC,mBAAmB,GASrB,EAAeC","sources":["webpack:///./src/vue/services/page-builder/codemirror.js"],"sourcesContent":["/**\n * Part of earth project.\n *\n * @copyright Copyright (C) 2020 .\n * @license __LICENSE__\n */\n\nexport const CodeMirrorOptions = {\n tabSize: 2,\n mode: 'text/x-scss',\n styleActiveLine: true,\n theme: 'material',\n lineNumbers: true,\n line: true,\n height: '450px',\n autoCloseBrackets: true,\n};\n\nimport CodeMirror from 'codemirror/lib/codemirror.js';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/css/css.js';\nimport 'codemirror/addon/edit/closebrackets.js';\nimport 'codemirror/theme/material.css';\n\nexport default CodeMirror;\n\n/**\n * @param {codemirror|Vue} component\n * @param {number} delay\n */\nexport function refreshCodeMirror(component, delay = 1) {\n setTimeout(() => {\n component.codemirror.refresh();\n }, delay);\n}\n"],"names":["CodeMirrorOptions","tabSize","mode","styleActiveLine","theme","lineNumbers","line","height","autoCloseBrackets","CodeMirror"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.532.js","mappings":";uPAOO,MAAMA,EAAoB,CAC/BC,QAAS,EACTC,KAAM,cACNC,iBAAiB,EACjBC,MAAO,WACPC,aAAa,EACbC,MAAM,EACNC,OAAQ,QACRC,mBAAmB,GASrB,EAAeC","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/services/page-builder/codemirror.js"],"sourcesContent":["/**\n * Part of earth project.\n *\n * @copyright Copyright (C) 2020 .\n * @license __LICENSE__\n */\n\nexport const CodeMirrorOptions = {\n tabSize: 2,\n mode: 'text/x-scss',\n styleActiveLine: true,\n theme: 'material',\n lineNumbers: true,\n line: true,\n height: '450px',\n autoCloseBrackets: true,\n};\n\nimport CodeMirror from 'codemirror/lib/codemirror.js';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/css/css.js';\nimport 'codemirror/addon/edit/closebrackets.js';\nimport 'codemirror/theme/material.css';\n\nexport default CodeMirror;\n\n/**\n * @param {codemirror|Vue} component\n * @param {number} delay\n */\nexport function refreshCodeMirror(component, delay = 1) {\n setTimeout(() => {\n component.codemirror.refresh();\n }, delay);\n}\n"],"names":["CodeMirrorOptions","tabSize","mode","styleActiveLine","theme","lineNumbers","line","height","autoCloseBrackets","CodeMirror"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/560.js.map b/assets/dist/560.js.map index 34fea1ca..ef7e28d9 100644 --- a/assets/dist/560.js.map +++ b/assets/dist/560.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.560.js","mappings":"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","sources":["webpack:///./src/vue/components/page-builder/addons/addon-image.vue","webpack:///./src/vue/components/page-builder/addons/addon-image.vue?a130"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-image.vue?vue&type=template&id=74381700\"\nimport script from \"./addon-image.vue?vue&type=script&lang=js\"\nexport * from \"./addon-image.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","name","components","ButtonRadio","SliderInput","UnicornSwitcher","SingleImage","TitleOptions","props","lunaAddonMixin","setup","ctx","state","options","image","border_radius","alt","link","link_target","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","_createVNode","_component_SingleImage","_hoisted_7","_hoisted_8","type","_hoisted_9","_hoisted_10","_component_UnicornSwitcher","shape","color","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_component_SliderInput","max","_hoisted_16","_hoisted_17","_hoisted_18","_component_ButtonRadio","variant","align"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.560.js","mappings":"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","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-image.vue","webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-image.vue?a130"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-image.vue?vue&type=template&id=74381700\"\nimport script from \"./addon-image.vue?vue&type=script&lang=js\"\nexport * from \"./addon-image.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","name","components","ButtonRadio","SliderInput","UnicornSwitcher","SingleImage","TitleOptions","props","lunaAddonMixin","setup","ctx","state","options","image","border_radius","alt","link","link_target","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","_createVNode","_component_SingleImage","_hoisted_7","_hoisted_8","type","_hoisted_9","_hoisted_10","_component_UnicornSwitcher","shape","color","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_component_SliderInput","max","_hoisted_16","_hoisted_17","_hoisted_18","_component_ButtonRadio","variant","align"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/592.js.map b/assets/dist/592.js.map index 3157d7ad..29afd20a 100644 --- a/assets/dist/592.js.map +++ b/assets/dist/592.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.592.js","mappings":"uEAUG,SAASA,GACV,IAAIC,EAAW,CACbC,MAAO,eACPC,YAAa,YACbC,QAAS,GACTC,QAAS,QAGPC,EAAMN,EAAWM,IAcrB,SAASC,EAAUC,EAAMC,GACvB,MAAY,SAARA,GAAkC,iBAARD,EAAyBA,EACpC,iBAARA,GAAkC,MAAdA,EAAKC,GAAsBD,EAAKC,GACxDR,EAASQ,EAClB,CAhBAT,EAAWU,aAAa,qBAAqB,GAAO,SAASC,EAAIC,EAAKC,GAChEA,GAAOA,GAAOb,EAAWc,OAC3BH,EAAGI,aAAaC,GAChBL,EAAGM,MAAMC,cAAgB,MAEvBN,IACFO,EAAYZ,EAAUK,EAAK,UAC3BD,EAAGM,MAAMC,cAAgBN,EACzBD,EAAGS,UAAUJ,GAEjB,IAQA,IAAIA,EAAS,CAACK,UAoBd,SAAyBV,GACvB,IAAIH,EAAOc,EAAUX,GACrB,IAAKH,GAAQG,EAAGJ,UAAU,gBAAiB,OAAOP,EAAWuB,KAI7D,IAFA,IAAIrB,EAAQK,EAAUC,EAAM,SACxBgB,EAASb,EAAGc,iBACPC,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAKF,EAAOE,GAAGE,QAAS,OAAO5B,EAAWuB,KAC1C,IAAIM,EAASC,EAAYnB,EAAIa,EAAOE,GAAGK,MACvC,IAAKF,GAAU3B,EAAM8B,QAAQH,GAAU,GAAK,EAAG,OAAO7B,EAAWuB,IACnE,CACA,IAASG,EAAIF,EAAOG,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,IAAIO,EAAMT,EAAOE,GAAGK,KACpBpB,EAAGuB,aAAa,GAAI5B,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GAAI9B,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GAAI,UAC5E,CACF,EAnC0CC,MAqC1C,SAAqB1B,GACnB,IAAIH,EAAOc,EAAUX,GACjBN,EAAUG,GAAQD,EAAUC,EAAM,WACtC,IAAKH,GAAWM,EAAGJ,UAAU,gBAAiB,OAAOP,EAAWuB,KAGhE,IADA,IAAIC,EAASb,EAAGc,iBACPC,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAKF,EAAOE,GAAGE,QAAS,OAAO5B,EAAWuB,KAC1C,IAAIM,EAASC,EAAYnB,EAAIa,EAAOE,GAAGK,MACvC,IAAKF,GAAUxB,EAAQ2B,QAAQH,GAAU,GAAK,EAAG,OAAO7B,EAAWuB,IACrE,CACAZ,EAAG2B,WAAU,WACX,IAAIC,EAAU5B,EAAG6B,iBAAmB,KACpC7B,EAAG8B,iBAAiBF,EAAUA,EAAS,MACvCG,EAAQ/B,GAAK,GACba,EAASb,EAAGc,iBACZ,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAIS,EAAOX,EAAOE,GAAGK,KAAKI,KAC1BxB,EAAGgC,WAAWR,EAAM,MAAM,GAC1BxB,EAAGgC,WAAWR,EAAO,EAAG,MAAM,EAChC,CACF,GACF,GA1DA,SAAShB,EAAYyB,GACnB,IAAK,IAAIlB,EAAI,EAAGA,EAAIkB,EAAMjB,OAAQD,IAAK,CACrC,IAAIU,EAAKQ,EAAMC,OAAOnB,GAAIoB,EAAM,IAAMV,EAAK,IACtCpB,EAAO8B,KAAM9B,EAAO8B,GAAOC,EAAQX,GAC1C,CACF,CAGA,SAASW,EAAQX,GACf,OAAO,SAASzB,GAAM,OAoExB,SAAoBA,EAAIyB,GACtB,IAAI5B,EAAOc,EAAUX,GACrB,IAAKH,GAAQG,EAAGJ,UAAU,gBAAiB,OAAOP,EAAWuB,KAE7D,IAAIrB,EAAQK,EAAUC,EAAM,SACxBwC,EAAM9C,EAAM8B,QAAQI,GACxB,IAAY,GAARY,EAAW,OAAOhD,EAAWuB,KAWjC,IATA,IAQI0B,EARA9C,EAAcI,EAAUC,EAAK,eAE7BJ,EAAUG,EAAUC,EAAM,WAE1B0C,EAAYhD,EAAM2C,OAAOG,EAAM,IAAMZ,EACrCZ,EAASb,EAAGc,iBACZ0B,EAAUH,EAAM,GAAK,EAGhBtB,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAyC0B,EAArCC,EAAQ7B,EAAOE,GAAIO,EAAMoB,EAAMtB,KAC/BuB,EAAO3C,EAAG4C,SAAStB,EAAK3B,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,IACnD,GAAIe,IAAYE,EAAMzB,QACpBwB,EAAU,gBACL,IAAKF,GAAcC,GAAYG,GAAQlB,EAOvC,GAAIc,GAAajB,EAAIG,GAAK,GAAKhC,EAAQ4B,QAAQI,IAAO,GAClDzB,EAAG4C,SAASjD,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GAAIH,IAAQG,EAAKA,EAAI,CACjE,GAAIH,EAAIG,GAAK,GAAK,WAAWoB,KAAK7C,EAAG8C,eAAenD,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,KAAM,OAAOpC,EAAWuB,KACnG6B,EAAU,SACZ,MAAO,GAAIF,EAAW,CACpB,IAAIQ,EAAiB,GAAVzB,EAAIG,GAAU,IAAMzB,EAAG4C,SAASjD,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GAAIH,GACtE,GAAKjC,EAAW2D,WAAWL,IAASI,GAAQtB,GAAOpC,EAAW2D,WAAWD,GACpE,OAAO1D,EAAWuB,KADyD6B,EAAU,MAE5F,KAAO,KAAID,KAA4B,IAAhBG,EAAK3B,QAAgB,KAAK6B,KAAKF,IAASnD,EAAY6B,QAAQsB,IAAS,GAG1F,OAAOtD,EAAWuB,KAFlB6B,EAAU,MAGZ,MAjBIA,EADEF,GAAaU,EAAkBjD,EAAIsB,GAC3B,OACH7B,EAAQ4B,QAAQI,IAAO,GAAKzB,EAAG4C,SAAStB,EAAK3B,EAAI2B,EAAIE,KAAMF,EAAIG,GAAK,KAAOA,EAAKA,EAAKA,EAClF,YAEA,OAcd,GAAKa,GACA,GAAIA,GAAQG,EAAS,OAAOpD,EAAWuB,UADjC0B,EAAOG,CAEpB,CAEA,IAAIS,EAAOb,EAAM,EAAI9C,EAAM2C,OAAOG,EAAM,GAAKZ,EACzC0B,EAAQd,EAAM,EAAIZ,EAAKlC,EAAM2C,OAAOG,EAAM,GAC9CrC,EAAG2B,WAAU,WACX,GAAY,QAARW,EACFP,EAAQ/B,EAAI,QACP,GAAY,aAARsC,EACTP,EAAQ/B,EAAI,QACP,GAAY,YAARsC,EAAoB,CAE7B,IADA,IAAIc,EAAOpD,EAAGqD,gBACLtC,EAAI,EAAGA,EAAIqC,EAAKpC,OAAQD,IAC/BqC,EAAKrC,GAAKmC,EAAOE,EAAKrC,GAAKoC,EAG7B,IAFAnD,EAAGsD,kBAAkBF,EAAM,UAC3BA,EAAOpD,EAAGc,iBAAiByC,QAClBxC,EAAI,EAAGA,EAAIqC,EAAKpC,OAAQD,IAC/BqC,EAAKrC,GAAKyC,EAAkBJ,EAAKrC,IACnCf,EAAGyD,cAAcL,EACnB,KAAmB,QAARd,GACTtC,EAAG8B,iBAAiBoB,EAAOC,EAAO,MAClCnD,EAAG0D,gBAAgBR,EAAOC,GAC1BpB,EAAQ/B,GAAK,IACI,WAARsC,IACTtC,EAAG8B,iBAAiBoB,EAAOA,EAAOA,EAAOA,EAAM,UAC/CnB,EAAQ/B,EAAI,GAEhB,GACF,CA3I+B2D,CAAW3D,EAAIyB,EAAK,CACnD,CAEA,SAASd,EAAUX,GACjB,IAAI4D,EAAQ5D,EAAGM,MAAMC,cACrB,OAAKqD,GAASA,EAAMC,SAAiBD,EAC1B5D,EAAG8D,UAAU9D,EAAG+D,aACfxD,eAAiBqD,CAC/B,CA2CA,SAAS7B,EAAQ/B,EAAIgE,GAEnB,IADA,IAAIC,EAAY,GAAIpD,EAASb,EAAGc,iBAAkBoD,EAAU,EACnDnD,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAI2B,EAAQ7B,EAAOE,GACf2B,EAAMtB,MAAQpB,EAAG+D,cAAaG,EAAUnD,GAC5C,IAAIsB,EAAMK,EAAMtB,KAAKK,IAAMuC,EAAM,EAAI,CAACxC,KAAMkB,EAAMtB,KAAKI,KAAMC,GAAIiB,EAAMtB,KAAKK,GAAKuC,GAAO,CAACxC,KAAMkB,EAAMtB,KAAKI,KAAO,GACjHyC,EAAUE,KAAK,CAACC,OAAQ/B,EAAKjB,KAAMiB,GACrC,CACArC,EAAGyD,cAAcQ,EAAWC,EAC9B,CAEA,SAASV,EAAkBa,GACzB,IAAIC,EAAWjF,EAAWkF,OAAOF,EAAID,OAAQC,EAAIjD,MAAQ,EACzD,MAAO,CAACgD,OAAQ,IAAIzE,EAAI0E,EAAID,OAAO5C,KAAM6C,EAAID,OAAO3C,IAAM6C,GAAY,EAAI,IAClElD,KAAM,IAAIzB,EAAI0E,EAAIjD,KAAKI,KAAM6C,EAAIjD,KAAKK,IAAM6C,EAAW,GAAK,IACtE,CA2EA,SAASnD,EAAYnB,EAAIqC,GACvB,IAAImC,EAAMxE,EAAG4C,SAASjD,EAAI0C,EAAIb,KAAMa,EAAIZ,GAAK,GACvB9B,EAAI0C,EAAIb,KAAMa,EAAIZ,GAAK,IAC7C,OAAqB,GAAd+C,EAAIxD,OAAcwD,EAAM,IACjC,CAEA,SAASvB,EAAkBjD,EAAIqC,GAC7B,IAAIoC,EAAQzE,EAAG0E,WAAW/E,EAAI0C,EAAIb,KAAMa,EAAIZ,GAAK,IACjD,MAAO,WAAWoB,KAAK4B,EAAMnC,OAASmC,EAAME,OAAStC,EAAIZ,KAC5C,GAAVY,EAAIZ,KAAY,WAAWoB,KAAK7C,EAAG8C,eAAeT,IACvD,CA1JA7B,EAAYlB,EAASC,MAAQ,IA2J/B,CAnMIqF,CAAI,EAAQ,M,mBCKiDC,EAAOC,QAGhE,WAAe,aAIrB,IAAIC,EAAYC,UAAUD,UACtBE,EAAWD,UAAUC,SAErBC,EAAQ,aAAarC,KAAKkC,GAC1BI,EAAY,UAAUtC,KAAKkC,GAC3BK,EAAU,wCAAwCC,KAAKN,GACvDO,EAAO,cAAcD,KAAKN,GAC1BQ,EAAKJ,GAAaC,GAAWE,EAC7BE,EAAaD,IAAOJ,EAAYM,SAASC,cAAgB,IAAMJ,GAAQF,GAAS,IAChFO,GAAUL,GAAQ,WAAWzC,KAAKkC,GAClCa,EAAWD,GAAU,eAAe9C,KAAKkC,GACzCc,GAAUP,GAAQ,gBAAgBD,KAAKN,GACvCe,EAAiBD,IAAWA,EAAO,GACnCE,EAAS,UAAUlD,KAAKkC,GACxBiB,EAAS,iBAAiBnD,KAAKmC,UAAUiB,QACzCC,EAAqB,+BAA+BrD,KAAKkC,GACzDoB,EAAU,YAAYtD,KAAKkC,GAE3BqB,EAAMJ,IAAW,cAAcnD,KAAKkC,IAAcC,UAAUqB,eAAiB,GAC7EC,EAAU,UAAUzD,KAAKkC,GAEzBwB,EAASH,GAAOE,GAAW,mDAAmDzD,KAAKkC,GACnFyB,EAAMJ,GAAO,MAAMvD,KAAKoC,GACxBwB,EAAW,WAAW5D,KAAKkC,GAC3B2B,EAAU,OAAO7D,KAAKoC,GAEtB0B,EAAiBZ,GAAUhB,EAAU6B,MAAM,uBAC3CD,IAAkBA,EAAiBE,OAAOF,EAAe,KACzDA,GAAkBA,GAAkB,KAAMZ,GAAS,EAAOJ,GAAS,GAEvE,IAAImB,EAAcN,IAAQZ,GAAYG,IAA6B,MAAlBY,GAA0BA,EAAiB,QACxFI,EAAoB7B,GAAUK,GAAMC,GAAc,EAEtD,SAASwB,EAAUC,GAAO,OAAO,IAAIC,OAAO,UAAYD,EAAM,gBAAiB,CAE/E,IAkCIvE,EAlCAyE,EAAU,SAASC,EAAMH,GAC3B,IAAII,EAAUD,EAAKE,UACfV,EAAQI,EAAUC,GAAK5B,KAAKgC,GAChC,GAAIT,EAAO,CACT,IAAIW,EAAQF,EAAQ9D,MAAMqD,EAAMY,MAAQZ,EAAM,GAAG5F,QACjDoG,EAAKE,UAAYD,EAAQ9D,MAAM,EAAGqD,EAAMY,QAAUD,EAAQX,EAAM,GAAKW,EAAQ,GAC/E,CACF,EAEA,SAASE,EAAeC,GACtB,IAAK,IAAIC,EAAQD,EAAEE,WAAW5G,OAAQ2G,EAAQ,IAAKA,EAC/CD,EAAEG,YAAYH,EAAEI,YACpB,OAAOJ,CACT,CAEA,SAASK,EAAqBC,EAAQN,GACpC,OAAOD,EAAeO,GAAQC,YAAYP,EAC5C,CAEA,SAASQ,EAAIC,EAAKC,EAASd,EAAWe,GACpC,IAAIX,EAAIjC,SAAS6C,cAAcH,GAG/B,GAFIb,IAAaI,EAAEJ,UAAYA,GAC3Be,IAASX,EAAEW,MAAME,QAAUF,GACT,iBAAXD,EAAuBV,EAAEO,YAAYxC,SAAS+C,eAAeJ,SACnE,GAAIA,EAAW,IAAK,IAAIrH,EAAI,EAAGA,EAAIqH,EAAQpH,SAAUD,EAAK2G,EAAEO,YAAYG,EAAQrH,IACrF,OAAO2G,CACT,CAEA,SAASe,EAAKN,EAAKC,EAASd,EAAWe,GACrC,IAAIX,EAAIQ,EAAIC,EAAKC,EAASd,EAAWe,GAErC,OADAX,EAAEgB,aAAa,OAAQ,gBAChBhB,CACT,CAmBA,SAASiB,EAASX,EAAQY,GAGxB,GAFsB,GAAlBA,EAAMC,WACND,EAAQA,EAAME,YACdd,EAAOW,SACP,OAAOX,EAAOW,SAASC,GAC3B,GAEE,GADsB,IAAlBA,EAAMC,WAAkBD,EAAQA,EAAMG,MACtCH,GAASZ,EAAU,OAAO,QACvBY,EAAQA,EAAME,WACzB,CAEA,SAASE,EAAUC,GAIjB,IACIC,EADAC,EAAMF,EAASG,eAAiBH,EAEpC,IACEC,EAAgBD,EAASC,aAC3B,CAAE,MAAMxB,GACNwB,EAAgBC,EAAIE,MAAQ,IAC9B,CACA,KAAOH,GAAiBA,EAAcI,YAAcJ,EAAcI,WAAWJ,eACzEA,EAAgBA,EAAcI,WAAWJ,cAC7C,OAAOA,CACT,CAEA,SAASK,EAASnC,EAAMH,GACtB,IAAII,EAAUD,EAAKE,UACdN,EAAUC,GAAKpE,KAAKwE,KAAYD,EAAKE,YAAcD,EAAU,IAAM,IAAMJ,EAChF,CACA,SAASuC,EAAYC,EAAGC,GAEtB,IADA,IAAIC,EAAKF,EAAEG,MAAM,KACR7I,EAAI,EAAGA,EAAI4I,EAAG3I,OAAQD,IACvB4I,EAAG5I,KAAOiG,EAAU2C,EAAG5I,IAAI8B,KAAK6G,KAAMA,GAAK,IAAMC,EAAG5I,IAC5D,OAAO2I,CACT,CApD4BhH,EAAxB+C,SAASoE,YAAuB,SAASzC,EAAMzC,EAAOmF,EAAKC,GAC7D,IAAIC,EAAIvE,SAASoE,cAGjB,OAFAG,EAAEC,OAAOF,GAAW3C,EAAM0C,GAC1BE,EAAEE,SAAS9C,EAAMzC,GACVqF,CACT,EACe,SAAS5C,EAAMzC,EAAOmF,GACnC,IAAIE,EAAIvE,SAAS4D,KAAKc,kBACtB,IAAMH,EAAEI,kBAAkBhD,EAAK0B,WAAa,CAC5C,MAAMpB,GAAK,OAAOsC,CAAE,CAIpB,OAHAA,EAAEK,UAAS,GACXL,EAAEM,QAAQ,YAAaR,GACvBE,EAAEO,UAAU,YAAa5F,GAClBqF,CACT,EAwCA,IAAIQ,EAAc,SAASpD,GAAQA,EAAKqD,QAAU,EAMlD,SAAStB,EAAInJ,GAAM,OAAOA,EAAG0K,QAAQC,QAAQvB,aAAc,CAE3D,SAASwB,EAAK5K,GACZ,OAAOiJ,EAASjJ,EAAG0K,QAAQC,QAC7B,CAEA,SAAS1B,EAAS4B,GAEhB,OAAOA,EAAQC,YAAcD,EAAQC,cAAgBD,EAAQzB,aAC/D,CAEA,SAAS2B,EAAI/K,GAAM,OAAOmJ,EAAInJ,GAAIgL,WAAY,CAE9C,SAASC,EAAKC,GACZ,IAAIC,EAAOC,MAAMC,UAAU9H,MAAM+H,KAAKC,UAAW,GACjD,OAAO,WAAW,OAAOL,EAAEM,MAAM,KAAML,EAAK,CAC9C,CAEA,SAASM,EAAQC,EAAKC,EAAQC,GAE5B,IAAK,IAAIC,KADJF,IAAUA,EAAS,CAAC,GACRD,GACTA,EAAII,eAAeD,KAAwB,IAAdD,GAAwBD,EAAOG,eAAeD,KAC7EF,EAAOE,GAAQH,EAAIG,IACzB,OAAOF,CACT,CAIA,SAASI,EAAYC,EAAQlC,EAAKmC,EAASC,EAAYC,GAC1C,MAAPrC,IAEU,IADZA,EAAMkC,EAAOI,OAAO,kBACHtC,EAAMkC,EAAOhL,QAEhC,IAAK,IAAID,EAAImL,GAAc,EAAGG,EAAIF,GAAc,IAAK,CACnD,IAAIG,EAAUN,EAAO3K,QAAQ,KAAMN,GACnC,GAAIuL,EAAU,GAAKA,GAAWxC,EAC1B,OAAOuC,GAAKvC,EAAM/I,GACtBsL,GAAKC,EAAUvL,EACfsL,GAAKJ,EAAWI,EAAIJ,EACpBlL,EAAIuL,EAAU,CAChB,CACF,CA9CIlG,EACAoE,EAAc,SAASpD,GAAQA,EAAKmF,eAAiB,EAAGnF,EAAKoF,aAAepF,EAAKqF,MAAMzL,MAAQ,EAC1FuE,IACLiF,EAAc,SAASpD,GAAQ,IAAMA,EAAKqD,QAAU,CAAE,MAAMiC,GAAK,CAAE,GA6CvE,IAAIC,EAAU,WACZC,KAAKC,GAAK,KACVD,KAAK1B,EAAI,KACT0B,KAAKE,KAAO,EACZF,KAAKxK,QAAU6I,EAAK2B,KAAKG,UAAWH,KACtC,EAmBA,SAASvL,EAAQ2L,EAAO9E,GACtB,IAAK,IAAInH,EAAI,EAAGA,EAAIiM,EAAMhM,SAAUD,EAChC,GAAIiM,EAAMjM,IAAMmH,EAAO,OAAOnH,EAClC,OAAQ,CACV,CAtBA4L,EAAQtB,UAAU0B,UAAY,SAAUE,GACtCA,EAAKJ,GAAK,EACNI,EAAKH,OAAS,IAAII,KACpBD,EAAK/B,IAELiC,WAAWF,EAAK7K,QAAS6K,EAAKH,MAAQ,IAAII,KAE9C,EACAP,EAAQtB,UAAU+B,IAAM,SAAUC,EAAInC,GACpC0B,KAAK1B,EAAIA,EACT,IAAI4B,GAAQ,IAAII,KAAOG,IAClBT,KAAKC,IAAMC,EAAOF,KAAKE,QAC1BQ,aAAaV,KAAKC,IAClBD,KAAKC,GAAKM,WAAWP,KAAKxK,QAASiL,GACnCT,KAAKE,KAAOA,EAEhB,EASA,IAAIS,EAAc,GAId3M,EAAO,CAAC4M,SAAU,WAAW,MAAO,iBAAiB,GAGrDC,EAAiB,CAACC,QAAQ,GAAQC,EAAY,CAACC,OAAQ,UAAWC,EAAW,CAACD,OAAQ,SAI1F,SAASE,EAAW9B,EAAQ+B,EAAM9B,GAChC,IAAK,IAAI5J,EAAM,EAAG2L,EAAM,IAAK,CAC3B,IAAI1B,EAAUN,EAAO3K,QAAQ,KAAMgB,IACnB,GAAZiK,IAAiBA,EAAUN,EAAOhL,QACtC,IAAIiN,EAAU3B,EAAUjK,EACxB,GAAIiK,GAAWN,EAAOhL,QAAUgN,EAAMC,GAAWF,EAC7C,OAAO1L,EAAM6L,KAAKC,IAAIF,EAASF,EAAOC,GAI1C,GAHAA,GAAO1B,EAAUjK,EAEjBA,EAAMiK,EAAU,GADhB0B,GAAO/B,EAAW+B,EAAM/B,IAEb8B,EAAQ,OAAO1L,CAC5B,CACF,CAEA,IAAI+L,EAAY,CAAC,IACjB,SAASC,EAAShC,GAChB,KAAO+B,EAAUpN,QAAUqL,GACvB+B,EAAUjK,KAAKmK,GAAIF,GAAa,KACpC,OAAOA,EAAU/B,EACnB,CAEA,SAASiC,GAAIC,GAAO,OAAOA,EAAIA,EAAIvN,OAAO,EAAG,CAE7C,SAASwN,GAAIxB,EAAO9B,GAElB,IADA,IAAIuD,EAAM,GACD1N,EAAI,EAAGA,EAAIiM,EAAMhM,OAAQD,IAAO0N,EAAI1N,GAAKmK,EAAE8B,EAAMjM,GAAIA,GAC9D,OAAO0N,CACT,CAQA,SAASC,KAAW,CAEpB,SAASC,GAAUC,EAAMC,GACvB,IAAIC,EAQJ,OAPIC,OAAOC,OACTF,EAAOC,OAAOC,OAAOJ,IAErBF,GAAQrD,UAAYuD,EACpBE,EAAO,IAAIJ,IAETG,GAASpD,EAAQoD,EAAOC,GACrBA,CACT,CAEA,IAAIG,GAA6B,4GACjC,SAASC,GAAgBzN,GACvB,MAAO,KAAKoB,KAAKpB,IAAOA,EAAK,MAC1BA,EAAG0N,eAAiB1N,EAAG2N,eAAiBH,GAA2BpM,KAAKpB,GAC7E,CACA,SAASuB,GAAWvB,EAAI4N,GACtB,OAAKA,KACDA,EAAOC,OAAOjO,QAAQ,QAAU,GAAK6N,GAAgBzN,KAClD4N,EAAOxM,KAAKpB,GAFGyN,GAAgBzN,EAGxC,CAEA,SAAS8N,GAAQ7D,GACf,IAAK,IAAIW,KAAKX,EAAO,GAAIA,EAAII,eAAeO,IAAMX,EAAIW,GAAM,OAAO,EACnE,OAAO,CACT,CAOA,IAAImD,GAAiB,64DACrB,SAASC,GAAgBhO,GAAM,OAAOA,EAAGiO,WAAW,IAAM,KAAOF,GAAe3M,KAAKpB,EAAI,CAGzF,SAASkO,GAAmBnL,EAAKnC,EAAK2B,GACpC,MAAQA,EAAM,EAAI3B,EAAM,EAAIA,EAAMmC,EAAIxD,SAAWyO,GAAgBjL,EAAItC,OAAOG,KAASA,GAAO2B,EAC5F,OAAO3B,CACT,CAKA,SAASuN,GAAUC,EAAMC,EAAMC,GAI7B,IADA,IAAI/L,EAAM8L,EAAOC,GAAM,EAAI,IAClB,CACP,GAAID,GAAQC,EAAM,OAAOD,EACzB,IAAIE,GAAQF,EAAOC,GAAM,EAAGE,EAAMjM,EAAM,EAAIkK,KAAKgC,KAAKF,GAAQ9B,KAAKiC,MAAMH,GACzE,GAAIC,GAAOH,EAAQ,OAAOD,EAAKI,GAAOH,EAAOC,EACzCF,EAAKI,GAAQF,EAAKE,EACfH,EAAOG,EAAMjM,CACtB,CACF,CAiBA,IAAIoM,GAAY,KAChB,SAASC,GAAcC,EAAO7O,EAAI8O,GAChC,IAAIC,EACJJ,GAAY,KACZ,IAAK,IAAIrP,EAAI,EAAGA,EAAIuP,EAAMtP,SAAUD,EAAG,CACrC,IAAIO,EAAMgP,EAAMvP,GAChB,GAAIO,EAAIwO,KAAOrO,GAAMH,EAAIyO,GAAKtO,EAAM,OAAOV,EACvCO,EAAIyO,IAAMtO,IACRH,EAAIwO,MAAQxO,EAAIyO,IAAgB,UAAVQ,EAAsBC,EAAQzP,EACjDqP,GAAYrP,GAEjBO,EAAIwO,MAAQrO,IACVH,EAAIwO,MAAQxO,EAAIyO,IAAgB,UAAVQ,EAAsBC,EAAQzP,EACjDqP,GAAYrP,EAEvB,CACA,OAAgB,MAATyP,EAAgBA,EAAQJ,EACjC,CAyBA,IAAIK,GAAe,WAejB,IAAIC,EAAS,4CACTC,EAAY,SAAUC,EAAW,QAASC,EAAe,SAAUC,EAAc,OAErF,SAASC,EAASC,EAAOlB,EAAMC,GAC7BnD,KAAKoE,MAAQA,EACbpE,KAAKkD,KAAOA,EAAMlD,KAAKmD,GAAKA,CAC9B,CAEA,OAAO,SAASvL,EAAKyM,GACnB,IAnBgBC,EAmBZC,EAAyB,OAAbF,EAAqB,IAAM,IAE3C,GAAkB,GAAdzM,EAAIxD,QAA4B,OAAbiQ,IAAuBP,EAAO7N,KAAK2B,GAAQ,OAAO,EAEzE,IADA,IAAI4M,EAAM5M,EAAIxD,OAAQqQ,EAAQ,GACrBtQ,EAAI,EAAGA,EAAIqQ,IAAOrQ,EACvBsQ,EAAMlN,MAxBM+M,EAwBQ1M,EAAIkL,WAAW3O,KAvB3B,IAJC,2PAIuBmB,OAAOgP,GAClC,MAASA,GAAQA,GAAQ,KAAgB,IACzC,MAASA,GAAQA,GAAQ,KAJlB,6PAI8ChP,OAAOgP,EAAO,MACnE,MAASA,GAAQA,GAAQ,KAAgB,IACzC,MAAUA,GAAQA,GAAQ,KAAiB,IACnC,MAARA,EAAyB,IACpB,KAuBd,IAAK,IAAII,EAAM,EAAGvO,EAAOoO,EAAWG,EAAMF,IAAOE,EAAK,CACpD,IAAIhP,EAAO+O,EAAMC,GACL,KAARhP,EAAe+O,EAAMC,GAAOvO,EACzBA,EAAOT,CAChB,CAOA,IAAK,IAAIiP,EAAM,EAAGjQ,EAAM6P,EAAWI,EAAMH,IAAOG,EAAK,CACnD,IAAIC,EAASH,EAAME,GACL,KAAVC,GAAwB,KAAPlQ,EAAc+P,EAAME,GAAO,IACvCX,EAAS/N,KAAK2O,KAAWlQ,EAAMkQ,EAAsB,KAAVA,IAAiBH,EAAME,GAAO,KACpF,CAKA,IAAK,IAAIE,EAAM,EAAGC,EAASL,EAAM,GAAII,EAAML,EAAM,IAAKK,EAAK,CACzD,IAAIE,EAASN,EAAMI,GACL,KAAVE,GAA2B,KAAVD,GAAiC,KAAhBL,EAAMI,EAAI,GAAaJ,EAAMI,GAAO,IACvD,KAAVE,GAAiBD,GAAUL,EAAMI,EAAI,IAC1B,KAAVC,GAA2B,KAAVA,IAAkBL,EAAMI,GAAOC,GAC1DA,EAASC,CACX,CAMA,IAAK,IAAIC,EAAM,EAAGA,EAAMR,IAAOQ,EAAK,CAClC,IAAIC,EAASR,EAAMO,GACnB,GAAc,KAAVC,EAAiBR,EAAMO,GAAO,SAC7B,GAAc,KAAVC,EAAe,CACtB,IAAI/H,OAAM,EACV,IAAKA,EAAM8H,EAAM,EAAG9H,EAAMsH,GAAqB,KAAdC,EAAMvH,KAAeA,GAEtD,IADA,IAAIgI,EAAWF,GAAuB,KAAhBP,EAAMO,EAAI,IAAe9H,EAAMsH,GAAqB,KAAdC,EAAMvH,GAAe,IAAM,IAC9EiI,EAAIH,EAAKG,EAAIjI,IAAOiI,EAAKV,EAAMU,GAAKD,EAC7CF,EAAM9H,EAAM,CACd,CACF,CAKA,IAAK,IAAIkI,EAAM,EAAGC,EAAQd,EAAWa,EAAMZ,IAAOY,EAAK,CACrD,IAAIE,EAASb,EAAMW,GACN,KAATC,GAA0B,KAAVC,EAAiBb,EAAMW,GAAO,IACzCpB,EAAS/N,KAAKqP,KAAWD,EAAQC,EAC5C,CAQA,IAAK,IAAIC,EAAM,EAAGA,EAAMf,IAAOe,EAC7B,GAAIxB,EAAU9N,KAAKwO,EAAMc,IAAO,CAC9B,IAAIC,OAAQ,EACZ,IAAKA,EAAQD,EAAM,EAAGC,EAAQhB,GAAOT,EAAU9N,KAAKwO,EAAMe,MAAWA,GAIrE,IAHA,IAAIC,EAA6C,MAAnCF,EAAMd,EAAMc,EAAI,GAAKhB,GAE/BmB,EAAYD,IADwC,MAA3CD,EAAQhB,EAAMC,EAAMe,GAASjB,IACPkB,EAAS,IAAM,IAAOlB,EAChDoB,EAAMJ,EAAKI,EAAMH,IAASG,EAAOlB,EAAMkB,GAAOD,EACvDH,EAAMC,EAAQ,CAChB,CASF,IADA,IAAgBI,EAAZlC,EAAQ,GACHmC,EAAM,EAAGA,EAAMrB,GACtB,GAAIP,EAAahO,KAAKwO,EAAMoB,IAAO,CACjC,IAAI9N,EAAQ8N,EACZ,MAAOA,EAAKA,EAAMrB,GAAOP,EAAahO,KAAKwO,EAAMoB,MAASA,GAC1DnC,EAAMnM,KAAK,IAAI4M,EAAS,EAAGpM,EAAO8N,GACpC,KAAO,CACL,IAAIpQ,EAAMoQ,EAAKC,EAAKpC,EAAMtP,OAAQ2R,EAAqB,OAAb1B,EAAqB,EAAI,EACnE,MAAOwB,EAAKA,EAAMrB,GAAqB,KAAdC,EAAMoB,KAAeA,GAC9C,IAAK,IAAIG,EAAMvQ,EAAKuQ,EAAMH,GACxB,GAAI3B,EAAYjO,KAAKwO,EAAMuB,IAAO,CAC5BvQ,EAAMuQ,IAAOtC,EAAMuC,OAAOH,EAAI,EAAG,IAAI3B,EAAS,EAAG1O,EAAKuQ,IAAOF,GAAMC,GACvE,IAAIG,EAASF,EACb,MAAOA,EAAKA,EAAMH,GAAO3B,EAAYjO,KAAKwO,EAAMuB,MAASA,GACzDtC,EAAMuC,OAAOH,EAAI,EAAG,IAAI3B,EAAS,EAAG+B,EAAQF,IAC5CF,GAAMC,EACNtQ,EAAMuQ,CACR,OAAWA,EAETvQ,EAAMoQ,GAAOnC,EAAMuC,OAAOH,EAAI,EAAG,IAAI3B,EAAS,EAAG1O,EAAKoQ,GAC5D,CAaF,MAXiB,OAAbxB,IACoB,GAAlBX,EAAM,GAAGU,QAAewB,EAAIhO,EAAIoC,MAAM,WACxC0J,EAAM,GAAGR,KAAO0C,EAAE,GAAGxR,OACrBsP,EAAMyC,QAAQ,IAAIhC,EAAS,EAAG,EAAGyB,EAAE,GAAGxR,UAEhB,GAApBsN,GAAIgC,GAAOU,QAAewB,EAAIhO,EAAIoC,MAAM,WAC1C0H,GAAIgC,GAAOP,IAAMyC,EAAE,GAAGxR,OACtBsP,EAAMnM,KAAK,IAAI4M,EAAS,EAAGK,EAAMoB,EAAE,GAAGxR,OAAQoQ,MAI9B,OAAbH,EAAqBX,EAAM0C,UAAY1C,CAChD,CACD,CAlJkB,GAuJnB,SAAS2C,GAASzR,EAAMyP,GACtB,IAAIX,EAAQ9O,EAAK8O,MAEjB,OADa,MAATA,IAAiBA,EAAQ9O,EAAK8O,MAAQG,GAAajP,EAAK0R,KAAMjC,IAC3DX,CACT,CAOA,IAAI6C,GAAa,GAEbC,GAAK,SAASC,EAAS/Q,EAAM4I,GAC/B,GAAImI,EAAQC,iBACVD,EAAQC,iBAAiBhR,EAAM4I,GAAG,QAC7B,GAAImI,EAAQE,YACjBF,EAAQE,YAAY,KAAOjR,EAAM4I,OAC5B,CACL,IAAIsD,EAAM6E,EAAQG,YAAcH,EAAQG,UAAY,CAAC,GACrDhF,EAAIlM,IAASkM,EAAIlM,IAAS6Q,IAAYM,OAAOvI,EAC/C,CACF,EAEA,SAASwI,GAAYL,EAAS/Q,GAC5B,OAAO+Q,EAAQG,WAAaH,EAAQG,UAAUlR,IAAS6Q,EACzD,CAEA,SAASQ,GAAIN,EAAS/Q,EAAM4I,GAC1B,GAAImI,EAAQO,oBACVP,EAAQO,oBAAoBtR,EAAM4I,GAAG,QAChC,GAAImI,EAAQQ,YACjBR,EAAQQ,YAAY,KAAOvR,EAAM4I,OAC5B,CACL,IAAIsD,EAAM6E,EAAQG,UAAWjF,EAAMC,GAAOA,EAAIlM,GAC9C,GAAIiM,EAAK,CACP,IAAI/G,EAAQnG,EAAQkN,EAAKrD,GACrB1D,GAAS,IACTgH,EAAIlM,GAAQiM,EAAIhL,MAAM,EAAGiE,GAAOiM,OAAOlF,EAAIhL,MAAMiE,EAAQ,IAC/D,CACF,CACF,CAEA,SAASsM,GAAOT,EAAS/Q,GACvB,IAAIyR,EAAWL,GAAYL,EAAS/Q,GACpC,GAAKyR,EAAS/S,OAEd,IADA,IAAImK,EAAOC,MAAMC,UAAU9H,MAAM+H,KAAKC,UAAW,GACxCxK,EAAI,EAAGA,EAAIgT,EAAS/S,SAAUD,EAAKgT,EAAShT,GAAGyK,MAAM,KAAML,EACtE,CAKA,SAAS6I,GAAehU,EAAI0H,EAAG7D,GAI7B,MAHgB,iBAAL6D,IACPA,EAAI,CAACpF,KAAMoF,EAAGuM,eAAgB,WAAarH,KAAKsH,kBAAmB,CAAM,IAC7EJ,GAAO9T,EAAI6D,GAAY6D,EAAEpF,KAAMtC,EAAI0H,GAC5ByM,GAAmBzM,IAAMA,EAAE0M,gBACpC,CAEA,SAASC,GAAqBrU,GAC5B,IAAIuO,EAAMvO,EAAGwT,WAAaxT,EAAGwT,UAAUc,eACvC,GAAK/F,EAEL,IADA,IAAInB,EAAMpN,EAAGuU,MAAMC,yBAA2BxU,EAAGuU,MAAMC,uBAAyB,IACvEzT,EAAI,EAAGA,EAAIwN,EAAIvN,SAAUD,GAAkC,GAAzBM,EAAQ+L,EAAKmB,EAAIxN,KACxDqM,EAAIjJ,KAAKoK,EAAIxN,GACnB,CAEA,SAAS0T,GAAWpB,EAAS/Q,GAC3B,OAAOoR,GAAYL,EAAS/Q,GAAMtB,OAAS,CAC7C,CAIA,SAAS0T,GAAWC,GAClBA,EAAKtJ,UAAU+H,GAAK,SAAS9Q,EAAM4I,GAAIkI,GAAGxG,KAAMtK,EAAM4I,EAAG,EACzDyJ,EAAKtJ,UAAUsI,IAAM,SAASrR,EAAM4I,GAAIyI,GAAI/G,KAAMtK,EAAM4I,EAAG,CAC7D,CAKA,SAAS0J,GAAiBlN,GACpBA,EAAEuM,eAAkBvM,EAAEuM,iBACnBvM,EAAEmN,aAAc,CACzB,CACA,SAASC,GAAkBpN,GACrBA,EAAEqN,gBAAmBrN,EAAEqN,kBACpBrN,EAAEsN,cAAe,CAC1B,CACA,SAASb,GAAmBzM,GAC1B,OAA6B,MAAtBA,EAAEwM,iBAA2BxM,EAAEwM,iBAAoC,GAAjBxM,EAAEmN,WAC7D,CACA,SAASI,GAAOvN,GAAIkN,GAAiBlN,GAAIoN,GAAkBpN,EAAG,CAE9D,SAASwN,GAASxN,GAAI,OAAOA,EAAEiE,QAAUjE,EAAEyN,UAAU,CACrD,SAASC,GAAS1N,GAChB,IAAIgC,EAAIhC,EAAE2N,MAOV,OANS,MAAL3L,IACa,EAAXhC,EAAE4N,OAAc5L,EAAI,EACJ,EAAXhC,EAAE4N,OAAc5L,EAAI,EACT,EAAXhC,EAAE4N,SAAc5L,EAAI,IAE3BlD,GAAOkB,EAAE6N,SAAgB,GAAL7L,IAAUA,EAAI,GAC/BA,CACT,CAGA,IAQI8L,GAeAC,GAvBAC,GAAc,WAGhB,GAAInQ,GAAMC,EAAa,EAAK,OAAO,EACnC,IAAImQ,EAAMzN,EAAI,OACd,MAAO,cAAeyN,GAAO,aAAcA,CAC7C,CANkB,GASlB,SAASC,GAAiBC,GACxB,GAAqB,MAAjBL,GAAuB,CACzB,IAAI3S,EAAOqF,EAAI,OAAQ,KACvBH,EAAqB8N,EAAS3N,EAAI,OAAQ,CAACrF,EAAM4C,SAAS+C,eAAe,QAClC,GAAnCqN,EAAQ/N,WAAWgO,eACnBN,GAAgB3S,EAAKkT,aAAe,GAAKlT,EAAKiT,aAAe,KAAOvQ,GAAMC,EAAa,GAC7F,CACA,IAAI4B,EAAOoO,GAAgBtN,EAAI,OAAQ,KACrCA,EAAI,OAAQ,IAAU,KAAM,yDAE9B,OADAd,EAAKsB,aAAa,UAAW,IACtBtB,CACT,CAIA,SAAS4O,GAAgBH,GACvB,GAAoB,MAAhBJ,GAAwB,OAAOA,GACnC,IAAIQ,EAAMlO,EAAqB8N,EAASpQ,SAAS+C,eAAe,QAC5D0N,EAAKxT,EAAMuT,EAAK,EAAG,GAAGE,wBACtBC,EAAK1T,EAAMuT,EAAK,EAAG,GAAGE,wBAE1B,OADA1O,EAAeoO,MACVK,GAAMA,EAAGhT,MAAQgT,EAAG/S,SAClBsS,GAAgBW,EAAGjT,MAAQ+S,EAAG/S,MAAQ,EAC/C,CAIA,IA8BMuE,GA9BF2O,GAA+C,GAA9B,QAAQzM,MAAM,MAAM5I,OAAc,SAAUgL,GAE/D,IADA,IAAI3J,EAAM,EAAGiU,EAAS,GAAIC,EAAIvK,EAAOhL,OAC9BqB,GAAOkU,GAAG,CACf,IAAIC,EAAKxK,EAAO3K,QAAQ,KAAMgB,IACnB,GAAPmU,IAAYA,EAAKxK,EAAOhL,QAC5B,IAAIQ,EAAOwK,EAAOzI,MAAMlB,EAA8B,MAAzB2J,EAAO9J,OAAOsU,EAAK,GAAaA,EAAK,EAAIA,GAClEC,EAAKjV,EAAKH,QAAQ,OACX,GAAPoV,GACFH,EAAOnS,KAAK3C,EAAK+B,MAAM,EAAGkT,IAC1BpU,GAAOoU,EAAK,IAEZH,EAAOnS,KAAK3C,GACZa,EAAMmU,EAAK,EAEf,CACA,OAAOF,CACT,EAAI,SAAUtK,GAAU,OAAOA,EAAOpC,MAAM,WAAa,EAErD8M,GAAeC,OAAOC,aAAe,SAAUC,GACjD,IAAM,OAAOA,EAAGtK,gBAAkBsK,EAAGrK,YAAa,CAClD,MAAM9E,GAAK,OAAO,CAAM,CAC1B,EAAI,SAAUmP,GACZ,IAAInU,EACJ,IAAKA,EAAQmU,EAAGzN,cAAc0N,UAAUjN,aAAc,CACtD,MAAMnC,GAAI,CACV,SAAKhF,GAASA,EAAMqU,iBAAmBF,IACe,GAA/CnU,EAAMsU,iBAAiB,aAActU,EAC9C,EAEIuU,GAEE,WADAvP,GAAIQ,EAAI,UAEZR,GAAEgB,aAAa,SAAU,WACC,mBAAZhB,GAAEwP,QAGdC,GAAiB,KAUrB,IAAIC,GAAQ,CAAC,EAAGC,GAAY,CAAC,EAK7B,SAASC,GAAWxX,EAAMyX,GACpBhM,UAAUvK,OAAS,IACnBuW,EAAKC,aAAepM,MAAMC,UAAU9H,MAAM+H,KAAKC,UAAW,IAC9D6L,GAAMtX,GAAQyX,CAChB,CAQA,SAASE,GAAYC,GACnB,GAAmB,iBAARA,GAAoBL,GAAUvL,eAAe4L,GACtDA,EAAOL,GAAUK,QACZ,GAAIA,GAA4B,iBAAbA,EAAK5X,MAAoBuX,GAAUvL,eAAe4L,EAAK5X,MAAO,CACtF,IAAI0Q,EAAQ6G,GAAUK,EAAK5X,MACP,iBAAT0Q,IAAqBA,EAAQ,CAAC1Q,KAAM0Q,KAC/CkH,EAAO/I,GAAU6B,EAAOkH,IACnB5X,KAAO0Q,EAAM1Q,IACpB,KAAO,IAAmB,iBAAR4X,GAAoB,0BAA0B7U,KAAK6U,GACnE,OAAOD,GAAY,mBACd,GAAmB,iBAARC,GAAoB,2BAA2B7U,KAAK6U,GACpE,OAAOD,GAAY,mBACrB,CACA,MAAmB,iBAARC,EAA2B,CAAC5X,KAAM4X,GAC/BA,GAAQ,CAAC5X,KAAM,OAC/B,CAIA,SAAS6X,GAAQC,EAASF,GACxBA,EAAOD,GAAYC,GACnB,IAAIG,EAAWT,GAAMM,EAAK5X,MAC1B,IAAK+X,EAAY,OAAOF,GAAQC,EAAS,cACzC,IAAIE,EAAUD,EAASD,EAASF,GAChC,GAAIK,GAAejM,eAAe4L,EAAK5X,MAAO,CAC5C,IAAIkY,EAAOD,GAAeL,EAAK5X,MAC/B,IAAK,IAAI+L,KAAQmM,EACVA,EAAKlM,eAAeD,KACrBiM,EAAQhM,eAAeD,KAASiM,EAAQ,IAAMjM,GAAQiM,EAAQjM,IAClEiM,EAAQjM,GAAQmM,EAAKnM,GAEzB,CAGA,GAFAiM,EAAQhY,KAAO4X,EAAK5X,KAChB4X,EAAKO,aAAcH,EAAQG,WAAaP,EAAKO,YAC7CP,EAAKQ,UAAa,IAAK,IAAIC,KAAUT,EAAKQ,UAC1CJ,EAAQK,GAAUT,EAAKQ,UAAUC,GAErC,OAAOL,CACT,CAIA,IAAIC,GAAiB,CAAC,EACtB,SAASK,GAAWb,EAAMc,GAExB5M,EAAQ4M,EADGN,GAAejM,eAAeyL,GAAQQ,GAAeR,GAASQ,GAAeR,GAAQ,CAAC,EAEnG,CAEA,SAASe,GAAUf,EAAMjX,GACvB,IAAc,IAAVA,EAAkB,OAAOA,EAC7B,GAAIiX,EAAKe,UAAa,OAAOf,EAAKe,UAAUhY,GAC5C,IAAIiY,EAAS,CAAC,EACd,IAAK,IAAIlM,KAAK/L,EAAO,CACnB,IAAIL,EAAMK,EAAM+L,GACZpM,aAAemL,QAASnL,EAAMA,EAAIwT,OAAO,KAC7C8E,EAAOlM,GAAKpM,CACd,CACA,OAAOsY,CACT,CAIA,SAASC,GAAUjB,EAAMjX,GAEvB,IADA,IAAImY,EACGlB,EAAKiB,YACVC,EAAOlB,EAAKiB,UAAUlY,KACTmY,EAAKlB,MAAQA,GAC1BjX,EAAQmY,EAAKnY,MACbiX,EAAOkB,EAAKlB,KAEd,OAAOkB,GAAQ,CAAClB,KAAMA,EAAMjX,MAAOA,EACrC,CAEA,SAASoY,GAAWnB,EAAMoB,EAAIC,GAC5B,OAAOrB,EAAKmB,YAAanB,EAAKmB,WAAWC,EAAIC,EAC/C,CAOA,IAAIC,GAAe,SAAS7M,EAAQC,EAAS6M,GAC3ClM,KAAKvK,IAAMuK,KAAKjI,MAAQ,EACxBiI,KAAKZ,OAASA,EACdY,KAAKX,QAAUA,GAAW,EAC1BW,KAAKmM,cAAgBnM,KAAKoM,gBAAkB,EAC5CpM,KAAKqM,UAAY,EACjBrM,KAAKkM,WAAaA,CACpB,EA0EA,SAASI,GAAQ/P,EAAKkD,GAEpB,IADAA,GAAKlD,EAAIgQ,OACD,GAAK9M,GAAKlD,EAAIiQ,KAAQ,MAAM,IAAIC,MAAM,qBAAuBhN,EAAIlD,EAAIgQ,OAAS,qBAEtF,IADA,IAAIG,EAAQnQ,GACJmQ,EAAMC,OACZ,IAAK,IAAIxY,EAAI,KAAMA,EAAG,CACpB,IAAI6H,EAAQ0Q,EAAME,SAASzY,GAAI0Y,EAAK7Q,EAAM8Q,YAC1C,GAAIrN,EAAIoN,EAAI,CAAEH,EAAQ1Q,EAAO,KAAM,CACnCyD,GAAKoN,CACP,CAEF,OAAOH,EAAMC,MAAMlN,EACrB,CAIA,SAASsN,GAAWxQ,EAAKxE,EAAOmF,GAC9B,IAAI2E,EAAM,GAAIpC,EAAI1H,EAAMnD,KAQxB,OAPA2H,EAAIyQ,KAAKjV,EAAMnD,KAAMsI,EAAItI,KAAO,GAAG,SAAUA,GAC3C,IAAI0R,EAAO1R,EAAK0R,KACZ7G,GAAKvC,EAAItI,OAAQ0R,EAAOA,EAAK3P,MAAM,EAAGuG,EAAIrI,KAC1C4K,GAAK1H,EAAMnD,OAAQ0R,EAAOA,EAAK3P,MAAMoB,EAAMlD,KAC/CgN,EAAItK,KAAK+O,KACP7G,CACJ,IACOoC,CACT,CAEA,SAASoL,GAAS1Q,EAAK2G,EAAMC,GAC3B,IAAItB,EAAM,GAEV,OADAtF,EAAIyQ,KAAK9J,EAAMC,GAAI,SAAUvO,GAAQiN,EAAItK,KAAK3C,EAAK0R,KAAO,IACnDzE,CACT,CAIA,SAASqL,GAAiBtY,EAAMuY,GAC9B,IAAIC,EAAOD,EAASvY,EAAKuY,OACzB,GAAIC,EAAQ,IAAK,IAAI3N,EAAI7K,EAAM6K,EAAGA,EAAIA,EAAErE,OAAUqE,EAAE0N,QAAUC,CAChE,CAIA,SAASC,GAAOzY,GACd,GAAmB,MAAfA,EAAKwG,OAAkB,OAAO,KAElC,IADA,IAAI1G,EAAME,EAAKwG,OAAQkS,EAAK7Y,EAAQC,EAAIiY,MAAO/X,GACtC8X,EAAQhY,EAAI0G,OAAQsR,EAAOhY,EAAMgY,EAAOA,EAAQA,EAAMtR,OAC7D,IAAK,IAAIjH,EAAI,EACPuY,EAAME,SAASzY,IAAMO,IADRP,EAEjBmZ,GAAMZ,EAAME,SAASzY,GAAG2Y,YAG5B,OAAOQ,EAAK5Y,EAAI6X,KAClB,CAIA,SAASgB,GAAab,EAAOc,GAC3B,IAAI/N,EAAIiN,EAAMH,MACdkB,EAAO,EAAG,CACR,IAAK,IAAI/I,EAAM,EAAGA,EAAMgI,EAAME,SAASxY,SAAUsQ,EAAK,CACpD,IAAI1I,EAAQ0Q,EAAME,SAASlI,GAAM7P,EAAKmH,EAAMmR,OAC5C,GAAIK,EAAI3Y,EAAI,CAAE6X,EAAQ1Q,EAAO,SAASyR,CAAM,CAC5CD,GAAK3Y,EACL4K,GAAKzD,EAAM8Q,WACb,CACA,OAAOrN,CACT,QAAUiN,EAAMC,OAEhB,IADA,IAAIxY,EAAI,EACDA,EAAIuY,EAAMC,MAAMvY,SAAUD,EAAG,CAClC,IAA2BuZ,EAAhBhB,EAAMC,MAAMxY,GAAcgZ,OACrC,GAAIK,EAAIE,EAAM,MACdF,GAAKE,CACP,CACA,OAAOjO,EAAItL,CACb,CAEA,SAASwZ,GAAOpR,EAAKoN,GAAI,OAAOA,GAAKpN,EAAIgQ,OAAS5C,EAAIpN,EAAIgQ,MAAQhQ,EAAIiQ,IAAI,CAE1E,SAASoB,GAAc5C,EAAS7W,GAC9B,OAAO0Z,OAAO7C,EAAQ8C,oBAAoB3Z,EAAI6W,EAAQ+C,iBACxD,CAGA,SAAShb,GAAI6B,EAAMC,EAAI8O,GAGrB,QAFgB,IAAXA,IAAoBA,EAAS,QAE5B3D,gBAAgBjN,IAAQ,OAAO,IAAIA,GAAI6B,EAAMC,EAAI8O,GACvD3D,KAAKpL,KAAOA,EACZoL,KAAKnL,GAAKA,EACVmL,KAAK2D,OAASA,CAChB,CAIA,SAASqK,GAAInR,EAAGC,GAAK,OAAOD,EAAEjI,KAAOkI,EAAElI,MAAQiI,EAAEhI,GAAKiI,EAAEjI,EAAG,CAE3D,SAASoZ,GAAepR,EAAGC,GAAK,OAAOD,EAAE8G,QAAU7G,EAAE6G,QAAuB,GAAbqK,GAAInR,EAAGC,EAAQ,CAE9E,SAASoR,GAAQC,GAAI,OAAOpb,GAAIob,EAAEvZ,KAAMuZ,EAAEtZ,GAAG,CAC7C,SAASuZ,GAAOvR,EAAGC,GAAK,OAAOkR,GAAInR,EAAGC,GAAK,EAAIA,EAAID,CAAE,CACrD,SAASwR,GAAOxR,EAAGC,GAAK,OAAOkR,GAAInR,EAAGC,GAAK,EAAID,EAAIC,CAAE,CAIrD,SAASwR,GAAS/R,EAAKkD,GAAI,OAAO6B,KAAKiN,IAAIhS,EAAIgQ,MAAOjL,KAAKC,IAAI9B,EAAGlD,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,GAAG,CAC5F,SAASgC,GAAQjS,EAAK9G,GACpB,GAAIA,EAAIb,KAAO2H,EAAIgQ,MAAS,OAAOxZ,GAAIwJ,EAAIgQ,MAAO,GAClD,IAAIkC,EAAOlS,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,EAClC,OAAI/W,EAAIb,KAAO6Z,EAAe1b,GAAI0b,EAAMnC,GAAQ/P,EAAKkS,GAAMnI,KAAKlS,QAGlE,SAAmBqB,EAAKiZ,GACtB,IAAI7Z,EAAKY,EAAIZ,GACb,OAAU,MAANA,GAAcA,EAAK6Z,EAAkB3b,GAAI0C,EAAIb,KAAM8Z,GAC9C7Z,EAAK,EAAY9B,GAAI0C,EAAIb,KAAM,GAC1Ba,CAChB,CAPSkZ,CAAUlZ,EAAK6W,GAAQ/P,EAAK9G,EAAIb,MAAM0R,KAAKlS,OACpD,CAOA,SAASwa,GAAarS,EAAK6D,GAEzB,IADA,IAAIyB,EAAM,GACD1N,EAAI,EAAGA,EAAIiM,EAAMhM,OAAQD,IAAO0N,EAAI1N,GAAKqa,GAAQjS,EAAK6D,EAAMjM,IACrE,OAAO0N,CACT,CAlMAoK,GAAaxN,UAAUoQ,IAAM,WAAa,OAAO7O,KAAKvK,KAAOuK,KAAKZ,OAAOhL,MAAM,EAC/E6X,GAAaxN,UAAUqQ,IAAM,WAAa,OAAO9O,KAAKvK,KAAOuK,KAAKqM,SAAS,EAC3EJ,GAAaxN,UAAUsQ,KAAO,WAAa,OAAO/O,KAAKZ,OAAO9J,OAAO0K,KAAKvK,WAAQuZ,CAAS,EAC3F/C,GAAaxN,UAAU1I,KAAO,WAC5B,GAAIiK,KAAKvK,IAAMuK,KAAKZ,OAAOhL,OACvB,OAAO4L,KAAKZ,OAAO9J,OAAO0K,KAAKvK,MACrC,EACAwW,GAAaxN,UAAUwQ,IAAM,SAAUjV,GACrC,IAAInF,EAAKmL,KAAKZ,OAAO9J,OAAO0K,KAAKvK,KAIjC,GAFoB,iBAATuE,EAA0BnF,GAAMmF,EAC/BnF,IAAOmF,EAAM/D,KAAO+D,EAAM/D,KAAKpB,GAAMmF,EAAMnF,IAClC,QAAVmL,KAAKvK,IAAYZ,CAC9B,EACAoX,GAAaxN,UAAUyQ,SAAW,SAAUlV,GAE1C,IADA,IAAIjC,EAAQiI,KAAKvK,IACVuK,KAAKiP,IAAIjV,KAChB,OAAOgG,KAAKvK,IAAMsC,CACpB,EACAkU,GAAaxN,UAAU0Q,SAAW,WAEhC,IADA,IAAIpX,EAAQiI,KAAKvK,IACV,aAAaQ,KAAK+J,KAAKZ,OAAO9J,OAAO0K,KAAKvK,SAAWuK,KAAKvK,IACjE,OAAOuK,KAAKvK,IAAMsC,CACpB,EACAkU,GAAaxN,UAAU2Q,UAAY,WAAapP,KAAKvK,IAAMuK,KAAKZ,OAAOhL,MAAO,EAC9E6X,GAAaxN,UAAU4Q,OAAS,SAAUxa,GACxC,IAAI+O,EAAQ5D,KAAKZ,OAAO3K,QAAQI,EAAImL,KAAKvK,KACzC,GAAImO,GAAS,EAAsB,OAAlB5D,KAAKvK,IAAMmO,GAAc,CAC5C,EACAqI,GAAaxN,UAAU6Q,OAAS,SAAU7P,GAAIO,KAAKvK,KAAOgK,CAAE,EAC5DwM,GAAaxN,UAAU8Q,OAAS,WAK9B,OAJIvP,KAAKmM,cAAgBnM,KAAKjI,QAC5BiI,KAAKoM,gBAAkBjN,EAAYa,KAAKZ,OAAQY,KAAKjI,MAAOiI,KAAKX,QAASW,KAAKmM,cAAenM,KAAKoM,iBACnGpM,KAAKmM,cAAgBnM,KAAKjI,OAErBiI,KAAKoM,iBAAmBpM,KAAKqM,UAAYlN,EAAYa,KAAKZ,OAAQY,KAAKqM,UAAWrM,KAAKX,SAAW,EAC3G,EACA4M,GAAaxN,UAAU+Q,YAAc,WACnC,OAAOrQ,EAAYa,KAAKZ,OAAQ,KAAMY,KAAKX,UACxCW,KAAKqM,UAAYlN,EAAYa,KAAKZ,OAAQY,KAAKqM,UAAWrM,KAAKX,SAAW,EAC/E,EACA4M,GAAaxN,UAAUzE,MAAQ,SAAUyV,EAASC,EAASC,GACzD,GAAsB,iBAAXF,EAOJ,CACL,IAAIzV,EAAQgG,KAAKZ,OAAOzI,MAAMqJ,KAAKvK,KAAKuE,MAAMyV,GAC9C,OAAIzV,GAASA,EAAMY,MAAQ,EAAY,MACnCZ,IAAqB,IAAZ0V,IAAqB1P,KAAKvK,KAAOuE,EAAM,GAAG5F,QAChD4F,EACT,CAXE,IAAI4V,EAAQ,SAAUhY,GAAO,OAAO+X,EAAkB/X,EAAI4K,cAAgB5K,CAAK,EAE/E,GAAIgY,EADS5P,KAAKZ,OAAOyQ,OAAO7P,KAAKvK,IAAKga,EAAQrb,UAC7Bwb,EAAMH,GAEzB,OADgB,IAAZC,IAAqB1P,KAAKvK,KAAOga,EAAQrb,SACtC,CAQb,EACA6X,GAAaxN,UAAUhE,QAAU,WAAY,OAAOuF,KAAKZ,OAAOzI,MAAMqJ,KAAKjI,MAAOiI,KAAKvK,IAAI,EAC3FwW,GAAaxN,UAAUqR,eAAiB,SAAUrQ,EAAGsQ,GACnD/P,KAAKqM,WAAa5M,EAClB,IAAM,OAAOsQ,GAAQ,CACrB,QAAU/P,KAAKqM,WAAa5M,CAAG,CACjC,EACAwM,GAAaxN,UAAUuR,UAAY,SAAUvQ,GAC3C,IAAIwQ,EAASjQ,KAAKkM,WAClB,OAAO+D,GAAUA,EAAOD,UAAUvQ,EACpC,EACAwM,GAAaxN,UAAUyR,UAAY,WACjC,IAAID,EAASjQ,KAAKkM,WAClB,OAAO+D,GAAUA,EAAOC,UAAUlQ,KAAKvK,IACzC,EA+HA,IAAI0a,GAAe,SAASzc,EAAOsc,GACjChQ,KAAKtM,MAAQA,EACbsM,KAAKgQ,UAAYA,CACnB,EAEII,GAAU,SAAS7T,EAAK7I,EAAOkB,EAAMob,GACvChQ,KAAKtM,MAAQA,EACbsM,KAAKzD,IAAMA,EACXyD,KAAKpL,KAAOA,EACZoL,KAAKqQ,aAAeL,GAAa,EACjChQ,KAAKsQ,WAAa,KAClBtQ,KAAKuQ,aAAe,CACtB,EAuCA,SAASC,GAAcpd,EAAIwB,EAAM6b,EAASC,GAGxC,IAAIC,EAAK,CAACvd,EAAGM,MAAMkd,SAAUC,EAAc,CAAC,EAE5CC,GAAQ1d,EAAIwB,EAAK0R,KAAMlT,EAAGmJ,IAAIoO,KAAM8F,GAAS,SAAUvT,EAAKzB,GAAS,OAAOkV,EAAGpZ,KAAK2F,EAAKzB,EAAQ,GACzFoV,EAAaH,GAkCrB,IAjCA,IAAIhd,EAAQ+c,EAAQ/c,MAGhBqd,EAAO,SAAWC,GACpBP,EAAQH,WAAaK,EACrB,IAAIM,EAAU7d,EAAGM,MAAMwd,SAASF,GAAI7c,EAAI,EAAG2R,EAAK,EAChD2K,EAAQ/c,OAAQ,EAChBod,GAAQ1d,EAAIwB,EAAK0R,KAAM2K,EAAQtG,KAAM8F,GAAS,SAAUvT,EAAKzB,GAG3D,IAFA,IAAI1D,EAAQ5D,EAEL2R,EAAK5I,GAAK,CACf,IAAIiU,EAAQR,EAAGxc,GACXgd,EAAQjU,GACRyT,EAAG1K,OAAO9R,EAAG,EAAG+I,EAAKyT,EAAGxc,EAAE,GAAIgd,GAClChd,GAAK,EACL2R,EAAKxE,KAAKC,IAAIrE,EAAKiU,EACrB,CACA,GAAK1V,EACL,GAAIwV,EAAQG,OACVT,EAAG1K,OAAOlO,EAAO5D,EAAI4D,EAAOmF,EAAK,WAAazB,GAC9CtH,EAAI4D,EAAQ,OAEZ,KAAOA,EAAQ5D,EAAG4D,GAAS,EAAG,CAC5B,IAAIrD,EAAMic,EAAG5Y,EAAM,GACnB4Y,EAAG5Y,EAAM,IAAMrD,EAAMA,EAAM,IAAM,IAAM,WAAa+G,CACtD,CAEJ,GAAGoV,GACHJ,EAAQ/c,MAAQA,EAChB+c,EAAQH,WAAa,KACrBG,EAAQF,aAAe,CACzB,EAESS,EAAI,EAAGA,EAAI5d,EAAGM,MAAMwd,SAAS9c,SAAU4c,EAAGD,EAAMC,GAEzD,MAAO,CAACK,OAAQV,EAAIW,QAAST,EAAYU,SAAWV,EAAYW,UAAYX,EAAc,KAC5F,CAEA,SAASY,GAAcre,EAAIwB,EAAM8c,GAC/B,IAAK9c,EAAKyc,QAAUzc,EAAKyc,OAAO,IAAMje,EAAGM,MAAMkd,QAAS,CACtD,IAAIH,EAAUkB,GAAiBve,EAAIia,GAAOzY,IACtCgd,EAAahd,EAAK0R,KAAKlS,OAAShB,EAAG4X,QAAQ6G,oBAAsBnG,GAAUtY,EAAGmJ,IAAIoO,KAAM8F,EAAQ/c,OAChGgW,EAAS8G,GAAcpd,EAAIwB,EAAM6b,GACjCmB,IAAcnB,EAAQ/c,MAAQke,GAClChd,EAAKkd,WAAarB,EAAQsB,MAAMH,GAChChd,EAAKyc,OAAS3H,EAAO2H,OACjB3H,EAAO4H,QAAW1c,EAAKod,aAAetI,EAAO4H,QACxC1c,EAAKod,eAAgBpd,EAAKod,aAAe,MAC9CN,IAAmBte,EAAGmJ,IAAI0V,oBAC1B7e,EAAGmJ,IAAI2V,aAAe5Q,KAAKiN,IAAInb,EAAGmJ,IAAI2V,eAAgB9e,EAAGmJ,IAAI0V,mBACnE,CACA,OAAOrd,EAAKyc,MACd,CAEA,SAASM,GAAiBve,EAAIqM,EAAG0S,GAC/B,IAAI5V,EAAMnJ,EAAGmJ,IAAKuB,EAAU1K,EAAG0K,QAC/B,IAAKvB,EAAIoO,KAAKmB,WAAc,OAAO,IAAIsE,GAAQ7T,GAAK,EAAMkD,GAC1D,IAAI1H,EA6HN,SAAuB3E,EAAIqM,EAAG0S,GAG5B,IAFA,IAAIC,EAAWC,EAAS9V,EAAMnJ,EAAGmJ,IAC7B+V,EAAMH,GAAW,EAAI1S,GAAKrM,EAAGmJ,IAAIoO,KAAKiB,UAAY,IAAO,KACpDpM,EAASC,EAAGD,EAAS8S,IAAO9S,EAAQ,CAC3C,GAAIA,GAAUjD,EAAIgQ,MAAS,OAAOhQ,EAAIgQ,MACtC,IAAI3X,EAAO0X,GAAQ/P,EAAKiD,EAAS,GAAI7E,EAAQ/F,EAAKkd,WAClD,GAAInX,KAAWwX,GAAW3S,GAAU7E,aAAiBwV,GAAexV,EAAMqV,UAAY,IAAMzT,EAAI2V,cAC5F,OAAO1S,EACX,IAAI+S,EAAWpT,EAAYvK,EAAK0R,KAAM,KAAMlT,EAAG4X,QAAQ3L,UACxC,MAAXgT,GAAmBD,EAAYG,KACjCF,EAAU7S,EAAS,EACnB4S,EAAYG,EAEhB,CACA,OAAOF,CACT,CA5IcG,CAAcpf,EAAIqM,EAAG0S,GAC7BM,EAAQ1a,EAAQwE,EAAIgQ,OAASD,GAAQ/P,EAAKxE,EAAQ,GAAG+Z,WACrDrB,EAAUgC,EAAQrC,GAAQsC,UAAUnW,EAAKkW,EAAO1a,GAAS,IAAIqY,GAAQ7T,EAAKuP,GAAWvP,EAAIoO,MAAO5S,GASpG,OAPAwE,EAAIyQ,KAAKjV,EAAO0H,GAAG,SAAU7K,GAC3B+d,GAAYvf,EAAIwB,EAAK0R,KAAMmK,GAC3B,IAAIhb,EAAMgb,EAAQ7b,KAClBA,EAAKkd,WAAarc,GAAOgK,EAAI,GAAKhK,EAAM,GAAK,GAAKA,GAAOqI,EAAQ8U,UAAYnd,EAAMqI,EAAQ+U,OAASpC,EAAQsB,OAAS,KACrHtB,EAAQqC,UACV,IACIX,IAAW5V,EAAI2V,aAAezB,EAAQ7b,MACnC6b,CACT,CAKA,SAASkC,GAAYvf,EAAIkT,EAAMmK,EAASsC,GACtC,IAAIpI,EAAOvX,EAAGmJ,IAAIoO,KACdqI,EAAS,IAAI/G,GAAa3F,EAAMlT,EAAG4X,QAAQ3L,QAASoR,GAGxD,IAFAuC,EAAOjb,MAAQib,EAAOvd,IAAMsd,GAAW,EAC3B,IAARzM,GAAc2M,GAActI,EAAM8F,EAAQ/c,QACtCsf,EAAOnE,OACbqE,GAAUvI,EAAMqI,EAAQvC,EAAQ/c,OAChCsf,EAAOjb,MAAQib,EAAOvd,GAE1B,CAEA,SAASwd,GAActI,EAAMjX,GAC3B,GAAIiX,EAAKwI,UAAa,OAAOxI,EAAKwI,UAAUzf,GAC5C,GAAKiX,EAAKiB,UAAV,CACA,IAAImE,EAAQnE,GAAUjB,EAAMjX,GAC5B,OAAIqc,EAAMpF,KAAKwI,UAAoBpD,EAAMpF,KAAKwI,UAAUpD,EAAMrc,YAA9D,CAF8B,CAGhC,CAEA,SAASwf,GAAUvI,EAAMqI,EAAQtf,EAAOqc,GACtC,IAAK,IAAI5b,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACvB4b,IAASA,EAAM,GAAKnE,GAAUjB,EAAMjX,GAAOiX,MAC/C,IAAIlP,EAAQkP,EAAK9S,MAAMmb,EAAQtf,GAC/B,GAAIsf,EAAOvd,IAAMud,EAAOjb,MAAS,OAAO0D,CAC1C,CACA,MAAM,IAAIgR,MAAM,QAAU9B,EAAKzX,KAAO,6BACxC,CA/IAkd,GAAQ3R,UAAUuR,UAAY,SAAUvQ,GACtC,IAAI7K,EAAOoL,KAAKzD,IAAI+P,QAAQtM,KAAKpL,KAAO6K,GAExC,OADY,MAAR7K,GAAgB6K,EAAIO,KAAKqQ,eAAgBrQ,KAAKqQ,aAAe5Q,GAC1D7K,CACT,EAEAwb,GAAQ3R,UAAUyR,UAAY,SAAUzQ,GACtC,IAAKO,KAAKsQ,WAAc,OAAO,KAC/B,KAAOtQ,KAAKsQ,WAAWtQ,KAAKuQ,eAAiB9Q,GACzCO,KAAKuQ,cAAgB,EACzB,IAAI7a,EAAOsK,KAAKsQ,WAAWtQ,KAAKuQ,aAAe,GAC/C,MAAO,CAAC7a,KAAMA,GAAQA,EAAKwP,QAAQ,kBAAmB,IAC9CsH,KAAMxM,KAAKsQ,WAAWtQ,KAAKuQ,cAAgB9Q,EACrD,EAEA2Q,GAAQ3R,UAAUqU,SAAW,WAC3B9S,KAAKpL,OACDoL,KAAKqQ,aAAe,GAAKrQ,KAAKqQ,cACpC,EAEAD,GAAQsC,UAAY,SAAUnW,EAAKkW,EAAO7d,GACxC,OAAI6d,aAAiBtC,GACV,IAAIC,GAAQ7T,EAAKmP,GAAUnP,EAAIoO,KAAM8H,EAAM/e,OAAQkB,EAAM6d,EAAMzC,WAE/D,IAAII,GAAQ7T,EAAKmP,GAAUnP,EAAIoO,KAAM8H,GAAQ7d,EAC1D,EAEAwb,GAAQ3R,UAAUsT,KAAO,SAAUqB,GACjC,IAAI1f,GAAiB,IAAT0f,EAAiB1H,GAAU1L,KAAKzD,IAAIoO,KAAM3K,KAAKtM,OAASsM,KAAKtM,MACzE,OAAOsM,KAAKqQ,aAAe,EAAI,IAAIF,GAAazc,EAAOsM,KAAKqQ,cAAgB3c,CAC9E,EAmHA,IAAI2f,GAAQ,SAASL,EAAQtd,EAAMhC,GACjCsM,KAAKjI,MAAQib,EAAOjb,MAAOiI,KAAK9C,IAAM8V,EAAOvd,IAC7CuK,KAAKZ,OAAS4T,EAAOvY,UACrBuF,KAAKtK,KAAOA,GAAQ,KACpBsK,KAAKtM,MAAQA,CACf,EAGA,SAAS4f,GAAUlgB,EAAIqC,EAAK0c,EAASoB,GACnC,IAAmC9X,EAGoC+X,EAHnEjX,EAAMnJ,EAAGmJ,IAAKoO,EAAOpO,EAAIoO,KAEzB/V,EAAO0X,GAAQ/P,GADnB9G,EAAM+Y,GAAQjS,EAAK9G,IACSb,MAAO6b,EAAUkB,GAAiBve,EAAIqC,EAAIb,KAAMud,GACxEa,EAAS,IAAI/G,GAAarX,EAAK0R,KAAMlT,EAAG4X,QAAQ3L,QAASoR,GAE7D,IADI8C,IAAWC,EAAS,KAChBD,GAAWP,EAAOvd,IAAMA,EAAIZ,MAAQme,EAAOnE,OACjDmE,EAAOjb,MAAQib,EAAOvd,IACtBgG,EAAQyX,GAAUvI,EAAMqI,EAAQvC,EAAQ/c,OACpC6f,GAAWC,EAAOjc,KAAK,IAAI8b,GAAML,EAAQvX,EAAOiQ,GAAUnP,EAAIoO,KAAM8F,EAAQ/c,SAElF,OAAO6f,EAAUC,EAAS,IAAIH,GAAML,EAAQvX,EAAOgV,EAAQ/c,MAC7D,CAEA,SAAS+f,GAAmB/d,EAAMge,GAChC,GAAIhe,EAAQ,OAAS,CACnB,IAAIie,EAAYje,EAAKsE,MAAM,qCAC3B,IAAK2Z,EAAa,MAClBje,EAAOA,EAAKiB,MAAM,EAAGgd,EAAU/Y,OAASlF,EAAKiB,MAAMgd,EAAU/Y,MAAQ+Y,EAAU,GAAGvf,QAClF,IAAI6K,EAAO0U,EAAU,GAAK,UAAY,YAClB,MAAhBD,EAAOzU,GACPyU,EAAOzU,GAAQ0U,EAAU,GACnB,IAAKrZ,OAAO,YAAcqZ,EAAU,GAAK,aAAc1d,KAAKyd,EAAOzU,MACzEyU,EAAOzU,IAAS,IAAM0U,EAAU,GACtC,CACA,OAAOje,CACT,CAGA,SAASob,GAAQ1d,EAAIkT,EAAMqE,EAAM8F,EAASnS,EAAGuS,EAAaH,GACxD,IAAIkD,EAAejJ,EAAKiJ,aACJ,MAAhBA,IAAwBA,EAAexgB,EAAG4X,QAAQ4I,cACtD,IACkEnY,EAD9DoY,EAAW,EAAGC,EAAW,KACzBd,EAAS,IAAI/G,GAAa3F,EAAMlT,EAAG4X,QAAQ3L,QAASoR,GACpDV,EAAQ3c,EAAG4X,QAAQ+I,cAAgB,CAAC,MAExC,IADY,IAARzN,GAAcmN,GAAmBR,GAActI,EAAM8F,EAAQ/c,OAAQmd,IACjEmC,EAAOnE,OAAO,CASpB,GARImE,EAAOvd,IAAMrC,EAAG4X,QAAQ6G,oBAC1B+B,GAAe,EACXlD,GAAciC,GAAYvf,EAAIkT,EAAMmK,EAASuC,EAAOvd,KACxDud,EAAOvd,IAAM6Q,EAAKlS,OAClBqH,EAAQ,MAERA,EAAQgY,GAAmBP,GAAUvI,EAAMqI,EAAQvC,EAAQ/c,MAAOqc,GAAQc,GAExEd,EAAO,CACT,IAAIiE,EAAQjE,EAAM,GAAG7c,KACjB8gB,IAASvY,EAAQ,MAAQA,EAAQuY,EAAQ,IAAMvY,EAAQuY,GAC7D,CACA,IAAKJ,GAAgBE,GAAYrY,EAAO,CACtC,KAAOoY,EAAWb,EAAOjb,OAEvBuG,EADAuV,EAAWvS,KAAKC,IAAIyR,EAAOjb,MAAO8b,EAAW,KACjCC,GAEdA,EAAWrY,CACb,CACAuX,EAAOjb,MAAQib,EAAOvd,GACxB,CACA,KAAOoe,EAAWb,EAAOvd,KAAK,CAI5B,IAAIA,EAAM6L,KAAKC,IAAIyR,EAAOvd,IAAKoe,EAAW,KAC1CvV,EAAE7I,EAAKqe,GACPD,EAAWpe,CACb,CACF,CA0CA,IAAIwe,IAAmB,EAAOC,IAAoB,EAYlD,SAASC,GAAWC,EAAQlR,EAAMC,GAChCnD,KAAKoU,OAASA,EACdpU,KAAKkD,KAAOA,EAAMlD,KAAKmD,GAAKA,CAC9B,CAGA,SAASkR,GAAiBC,EAAOF,GAC/B,GAAIE,EAAS,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAAG,CAClD,IAAIogB,EAAOD,EAAMngB,GACjB,GAAIogB,EAAKH,QAAUA,EAAU,OAAOG,CACtC,CACF,CAIA,SAASC,GAAiBF,EAAOC,GAE/B,IADA,IAAInX,EACKjJ,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAC5BmgB,EAAMngB,IAAMogB,IAASnX,IAAMA,EAAI,KAAK7F,KAAK+c,EAAMngB,IACvD,OAAOiJ,CACT,CAkDA,SAASqX,GAAuBlY,EAAKmY,GACnC,GAAIA,EAAOC,KAAQ,OAAO,KAC1B,IAAIC,EAAWjH,GAAOpR,EAAKmY,EAAOxR,KAAKtO,OAAS0X,GAAQ/P,EAAKmY,EAAOxR,KAAKtO,MAAMigB,YAC3EC,EAAUnH,GAAOpR,EAAKmY,EAAOvR,GAAGvO,OAAS0X,GAAQ/P,EAAKmY,EAAOvR,GAAGvO,MAAMigB,YAC1E,IAAKD,IAAaE,EAAW,OAAO,KAEpC,IAAIC,EAAUL,EAAOxR,KAAKrO,GAAImgB,EAAQN,EAAOvR,GAAGtO,GAAIogB,EAA0C,GAA/BjH,GAAI0G,EAAOxR,KAAMwR,EAAOvR,IAEnFoJ,EAxCN,SAA2BjZ,EAAKyhB,EAASE,GACvC,IAAIC,EACJ,GAAI5hB,EAAO,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAAIc,SAAUD,EAAG,CAC9C,IAAIogB,EAAOjhB,EAAIa,GAAIigB,EAASG,EAAKH,OAEjC,GADgC,MAAbG,EAAKrR,OAAiBkR,EAAOe,cAAgBZ,EAAKrR,MAAQ6R,EAAUR,EAAKrR,KAAO6R,IAC/ER,EAAKrR,MAAQ6R,GAA0B,YAAfX,EAAO1e,QAAwBuf,IAAaV,EAAKH,OAAOgB,YAAa,CAC/G,IAAIC,EAAuB,MAAXd,EAAKpR,KAAeiR,EAAOkB,eAAiBf,EAAKpR,IAAM4R,EAAUR,EAAKpR,GAAK4R,IACzFG,IAAOA,EAAK,KAAK3d,KAAK,IAAI4c,GAAWC,EAAQG,EAAKrR,KAAMmS,EAAY,KAAOd,EAAKpR,IACpF,CACF,CACA,OAAO+R,CACT,CA6BcK,CAAkBX,EAAUG,EAASE,GAC7CxG,EA7BN,SAA0Bnb,EAAK0hB,EAAOC,GACpC,IAAIC,EACJ,GAAI5hB,EAAO,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAAIc,SAAUD,EAAG,CAC9C,IAAIogB,EAAOjhB,EAAIa,GAAIigB,EAASG,EAAKH,OAEjC,GAD2B,MAAXG,EAAKpR,KAAeiR,EAAOkB,eAAiBf,EAAKpR,IAAM6R,EAAQT,EAAKpR,GAAK6R,IACxET,EAAKrR,MAAQ8R,GAAwB,YAAfZ,EAAO1e,QAAwBuf,GAAYV,EAAKH,OAAOgB,YAAa,CACzG,IAAII,EAA4B,MAAbjB,EAAKrR,OAAiBkR,EAAOe,cAAgBZ,EAAKrR,MAAQ8R,EAAQT,EAAKrR,KAAO8R,IAC/FE,IAAOA,EAAK,KAAK3d,KAAK,IAAI4c,GAAWC,EAAQoB,EAAe,KAAOjB,EAAKrR,KAAO8R,EAChC,MAAXT,EAAKpR,GAAa,KAAOoR,EAAKpR,GAAK6R,GAC3E,CACF,CACA,OAAOE,CACT,CAiBaO,CAAiBX,EAASE,EAAOC,GAGxCS,EAAiC,GAAtBhB,EAAOpO,KAAKlS,OAAauhB,EAASjU,GAAIgT,EAAOpO,MAAMlS,QAAUshB,EAAWX,EAAU,GACjG,GAAIxI,EAEF,IAAK,IAAIpY,EAAI,EAAGA,EAAIoY,EAAMnY,SAAUD,EAAG,CACrC,IAAIogB,EAAOhI,EAAMpY,GACjB,GAAe,MAAXogB,EAAKpR,GAAY,CACnB,IAAIS,EAAQyQ,GAAiB5F,EAAM8F,EAAKH,QACnCxQ,EACI8R,IAAYnB,EAAKpR,GAAiB,MAAZS,EAAMT,GAAa,KAAOS,EAAMT,GAAKwS,GADtDpB,EAAKpR,GAAK4R,CAE1B,CACF,CAEF,GAAItG,EAEF,IAAK,IAAI/J,EAAM,EAAGA,EAAM+J,EAAKra,SAAUsQ,EAAK,CAC1C,IAAIkR,EAASnH,EAAK/J,GACD,MAAbkR,EAAOzS,KAAcyS,EAAOzS,IAAMwS,GACnB,MAAfC,EAAO1S,KACKmR,GAAiB9H,EAAOqJ,EAAOxB,UAE3CwB,EAAO1S,KAAOyS,EACVD,IAAanJ,IAAUA,EAAQ,KAAKhV,KAAKqe,KAG/CA,EAAO1S,MAAQyS,EACXD,IAAanJ,IAAUA,EAAQ,KAAKhV,KAAKqe,GAEjD,CAGErJ,IAASA,EAAQsJ,GAAgBtJ,IACjCkC,GAAQA,GAAQlC,IAASkC,EAAOoH,GAAgBpH,IAEpD,IAAIqH,EAAa,CAACvJ,GAClB,IAAKmJ,EAAU,CAEb,IAAkCK,EAA9BC,EAAMtB,EAAOpO,KAAKlS,OAAS,EAC/B,GAAI4hB,EAAM,GAAKzJ,EACX,IAAK,IAAI5H,EAAM,EAAGA,EAAM4H,EAAMnY,SAAUuQ,EACjB,MAAjB4H,EAAM5H,GAAKxB,KACZ4S,IAAeA,EAAa,KAAKxe,KAAK,IAAI4c,GAAW5H,EAAM5H,GAAKyP,OAAQ,KAAM,OACvF,IAAK,IAAIvP,EAAM,EAAGA,EAAMmR,IAAOnR,EAC3BiR,EAAWve,KAAKwe,GACpBD,EAAWve,KAAKkX,EAClB,CACA,OAAOqH,CACT,CAIA,SAASD,GAAgBvB,GACvB,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAAG,CACrC,IAAIogB,EAAOD,EAAMngB,GACA,MAAbogB,EAAKrR,MAAgBqR,EAAKrR,MAAQqR,EAAKpR,KAAqC,IAA/BoR,EAAKH,OAAO6B,gBACzD3B,EAAMrO,OAAO9R,IAAK,EACxB,CACA,OAAKmgB,EAAMlgB,OACJkgB,EADqB,IAE9B,CAgCA,SAAS4B,GAAkBthB,GACzB,IAAI0f,EAAQ1f,EAAKigB,YACjB,GAAKP,EAAL,CACA,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAChCmgB,EAAMngB,GAAGigB,OAAO+B,WAAWvhB,GAC/BA,EAAKigB,YAAc,IAHE,CAIvB,CACA,SAASuB,GAAkBxhB,EAAM0f,GAC/B,GAAKA,EAAL,CACA,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAChCmgB,EAAMngB,GAAGigB,OAAOiC,WAAWzhB,GAC/BA,EAAKigB,YAAcP,CAHE,CAIvB,CAIA,SAASgC,GAAUlC,GAAU,OAAOA,EAAOe,eAAiB,EAAI,CAAE,CAClE,SAASoB,GAAWnC,GAAU,OAAOA,EAAOkB,eAAiB,EAAI,CAAE,CAKnE,SAASkB,GAAwB3Z,EAAGC,GAClC,IAAI2Z,EAAU5Z,EAAE8P,MAAMvY,OAAS0I,EAAE6P,MAAMvY,OACvC,GAAe,GAAXqiB,EAAgB,OAAOA,EAC3B,IAAIC,EAAO7Z,EAAE8Z,OAAQC,EAAO9Z,EAAE6Z,OAC1BE,EAAU7I,GAAI0I,EAAKxT,KAAM0T,EAAK1T,OAASoT,GAAUzZ,GAAKyZ,GAAUxZ,GACpE,OAAI+Z,GAAmBA,EACX7I,GAAI0I,EAAKvT,GAAIyT,EAAKzT,KAAOoT,GAAW1Z,GAAK0Z,GAAWzZ,IAEzDA,EAAEmD,GAAKpD,EAAEoD,EAClB,CAIA,SAAS6W,GAAoBliB,EAAMmD,GACjC,IAAiD6L,EAA7CmT,EAAM7C,IAAqBtf,EAAKigB,YACpC,GAAIkC,EAAO,IAAK,IAAIC,OAAK,EAAU7iB,EAAI,EAAGA,EAAI4iB,EAAI3iB,SAAUD,GAC1D6iB,EAAKD,EAAI5iB,IACFigB,OAAO6C,WAA0C,OAA5Blf,EAAQif,EAAG9T,KAAO8T,EAAG7T,OAC3CS,GAAS4S,GAAwB5S,EAAOoT,EAAG5C,QAAU,KACvDxQ,EAAQoT,EAAG5C,QAEjB,OAAOxQ,CACT,CACA,SAASsT,GAAqBtiB,GAAQ,OAAOkiB,GAAoBliB,GAAM,EAAM,CAC7E,SAASuiB,GAAmBviB,GAAQ,OAAOkiB,GAAoBliB,GAAM,EAAO,CAE5E,SAASwiB,GAAoBxiB,EAAMC,GACjC,IAAiD+O,EAA7CmT,EAAM7C,IAAqBtf,EAAKigB,YACpC,GAAIkC,EAAO,IAAK,IAAI5iB,EAAI,EAAGA,EAAI4iB,EAAI3iB,SAAUD,EAAG,CAC9C,IAAI6iB,EAAKD,EAAI5iB,GACT6iB,EAAG5C,OAAO6C,YAAyB,MAAXD,EAAG9T,MAAgB8T,EAAG9T,KAAOrO,KAAiB,MAATmiB,EAAG7T,IAAc6T,EAAG7T,GAAKtO,MACpF+O,GAAS4S,GAAwB5S,EAAOoT,EAAG5C,QAAU,KAAMxQ,EAAQoT,EAAG5C,OAC9E,CACA,OAAOxQ,CACT,CAKA,SAASyT,GAA0B9a,EAAK8Q,EAAQnK,EAAMC,EAAIiR,GACxD,IAAIxf,EAAO0X,GAAQ/P,EAAK8Q,GACpB0J,EAAM7C,IAAqBtf,EAAKigB,YACpC,GAAIkC,EAAO,IAAK,IAAI5iB,EAAI,EAAGA,EAAI4iB,EAAI3iB,SAAUD,EAAG,CAC9C,IAAI6iB,EAAKD,EAAI5iB,GACb,GAAK6iB,EAAG5C,OAAO6C,UAAf,CACA,IAAIrT,EAAQoT,EAAG5C,OAAOuC,KAAK,GACvBE,EAAU7I,GAAIpK,EAAMV,KAAMA,IAASoT,GAAUU,EAAG5C,QAAUkC,GAAUlC,GACpEkD,EAAQtJ,GAAIpK,EAAMT,GAAIA,IAAOoT,GAAWS,EAAG5C,QAAUmC,GAAWnC,GACpE,KAAIyC,GAAW,GAAKS,GAAS,GAAKT,GAAW,GAAKS,GAAS,KACvDT,GAAW,IAAMG,EAAG5C,OAAOkB,gBAAkBlB,EAAOe,cAAgBnH,GAAIpK,EAAMT,GAAID,IAAS,EAAI8K,GAAIpK,EAAMT,GAAID,GAAQ,IACrH2T,GAAW,IAAMG,EAAG5C,OAAOkB,gBAAkBlB,EAAOe,cAAgBnH,GAAIpK,EAAMV,KAAMC,IAAO,EAAI6K,GAAIpK,EAAMV,KAAMC,GAAM,IACrH,OAAO,CAP0B,CAQvC,CACF,CAMA,SAASoU,GAAW3iB,GAElB,IADA,IAAI4iB,EACGA,EAASN,GAAqBtiB,IACjCA,EAAO4iB,EAAOb,MAAM,GAAG,GAAM/hB,KACjC,OAAOA,CACT,CAsBA,SAAS6iB,GAAalb,EAAKmb,GACzB,IAAI9iB,EAAO0X,GAAQ/P,EAAKmb,GAAQC,EAAMJ,GAAW3iB,GACjD,OAAIA,GAAQ+iB,EAAcD,EACnBrK,GAAOsK,EAChB,CAIA,SAASC,GAAgBrb,EAAKmb,GAC5B,GAAIA,EAAQnb,EAAIsb,WAAc,OAAOH,EACrC,IAAgCF,EAA5B5iB,EAAO0X,GAAQ/P,EAAKmb,GACxB,IAAKI,GAAavb,EAAK3H,GAAS,OAAO8iB,EACvC,KAAOF,EAASL,GAAmBviB,IAC/BA,EAAO4iB,EAAOb,KAAK,GAAG,GAAM/hB,KAChC,OAAOyY,GAAOzY,GAAQ,CACxB,CAKA,SAASkjB,GAAavb,EAAK3H,GACzB,IAAImiB,EAAM7C,IAAqBtf,EAAKigB,YACpC,GAAIkC,EAAO,IAAK,IAAIC,OAAK,EAAU7iB,EAAI,EAAGA,EAAI4iB,EAAI3iB,SAAUD,EAE1D,IADA6iB,EAAKD,EAAI5iB,IACDigB,OAAO6C,UAAf,CACA,GAAe,MAAXD,EAAG9T,KAAgB,OAAO,EAC9B,IAAI8T,EAAG5C,OAAO2D,YACC,GAAXf,EAAG9T,MAAa8T,EAAG5C,OAAOe,eAAiB6C,GAAkBzb,EAAK3H,EAAMoiB,GACxE,OAAO,CAJ0B,CAMzC,CACA,SAASgB,GAAkBzb,EAAK3H,EAAM2f,GACpC,GAAe,MAAXA,EAAKpR,GAAY,CACnB,IAAIjG,EAAMqX,EAAKH,OAAOuC,KAAK,GAAG,GAC9B,OAAOqB,GAAkBzb,EAAKW,EAAItI,KAAMyf,GAAiBnX,EAAItI,KAAKigB,YAAaN,EAAKH,QACtF,CACA,GAAIG,EAAKH,OAAOkB,gBAAkBf,EAAKpR,IAAMvO,EAAK0R,KAAKlS,OACnD,OAAO,EACX,IAAK,IAAI4iB,OAAK,EAAU7iB,EAAI,EAAGA,EAAIS,EAAKigB,YAAYzgB,SAAUD,EAE5D,IADA6iB,EAAKpiB,EAAKigB,YAAY1gB,IACfigB,OAAO6C,YAAcD,EAAG5C,OAAO2D,YAAcf,EAAG9T,MAAQqR,EAAKpR,KACtD,MAAT6T,EAAG7T,IAAc6T,EAAG7T,IAAMoR,EAAKrR,QAC/B8T,EAAG5C,OAAOe,eAAiBZ,EAAKH,OAAOkB,iBACxC0C,GAAkBzb,EAAK3H,EAAMoiB,GAAO,OAAO,CAEnD,CAGA,SAASiB,GAAaC,GAIpB,IADA,IAAI1K,EAAI,EAAGd,GAFXwL,EAAUX,GAAWW,IAEM9c,OAClBjH,EAAI,EAAGA,EAAIuY,EAAMC,MAAMvY,SAAUD,EAAG,CAC3C,IAAIS,EAAO8X,EAAMC,MAAMxY,GACvB,GAAIS,GAAQsjB,EAAW,MAChB1K,GAAK5Y,EAAKuY,MACnB,CACA,IAAK,IAAIgL,EAAIzL,EAAMtR,OAAQ+c,EAAcA,GAAXzL,EAAQyL,GAAa/c,OACjD,IAAK,IAAIsJ,EAAM,EAAGA,EAAMyT,EAAEvL,SAASxY,SAAUsQ,EAAK,CAChD,IAAIhQ,EAAMyjB,EAAEvL,SAASlI,GACrB,GAAIhQ,GAAOgY,EAAS,MACbc,GAAK9Y,EAAIyY,MAClB,CAEF,OAAOK,CACT,CAKA,SAAS4K,GAAWxjB,GAClB,GAAmB,GAAfA,EAAKuY,OAAe,OAAO,EAE/B,IADA,IAA4BqK,EAAxBhT,EAAM5P,EAAK0R,KAAKlS,OAAgBM,EAAME,EACnC4iB,EAASN,GAAqBxiB,IAAM,CACzC,IAAIkP,EAAQ4T,EAAOb,KAAK,GAAG,GAC3BjiB,EAAMkP,EAAMV,KAAKtO,KACjB4P,GAAOZ,EAAMV,KAAKrO,GAAK+O,EAAMT,GAAGtO,EAClC,CAEA,IADAH,EAAME,EACC4iB,EAASL,GAAmBziB,IAAM,CACvC,IAAI2jB,EAAUb,EAAOb,KAAK,GAAG,GAC7BnS,GAAO9P,EAAI4R,KAAKlS,OAASikB,EAAQnV,KAAKrO,GAEtC2P,IADA9P,EAAM2jB,EAAQlV,GAAGvO,MACN0R,KAAKlS,OAASikB,EAAQlV,GAAGtO,EACtC,CACA,OAAO2P,CACT,CAGA,SAAS8T,GAAYllB,GACnB,IAAImlB,EAAInlB,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IAC7Bgc,EAAEC,QAAUlM,GAAQ/P,EAAKA,EAAIgQ,OAC7BgM,EAAEE,cAAgBL,GAAWG,EAAEC,SAC/BD,EAAEG,gBAAiB,EACnBnc,EAAIyQ,MAAK,SAAUpY,GACjB,IAAI4P,EAAM4T,GAAWxjB,GACjB4P,EAAM+T,EAAEE,gBACVF,EAAEE,cAAgBjU,EAClB+T,EAAEC,QAAU5jB,EAEhB,GACF,CAMA,IAAI+jB,GAAO,SAASrS,EAAMuO,EAAa+D,GACrC5Y,KAAKsG,KAAOA,EACZ8P,GAAkBpW,KAAM6U,GACxB7U,KAAKmN,OAASyL,EAAiBA,EAAe5Y,MAAQ,CACxD,EAoBA,SAAS6Y,GAAYjkB,GACnBA,EAAKwG,OAAS,KACd8a,GAAkBthB,EACpB,CArBA+jB,GAAKla,UAAU4O,OAAS,WAAc,OAAOA,GAAOrN,KAAM,EAC1D8H,GAAW6Q,IAyBX,IAAIG,GAAoB,CAAC,EAAGC,GAA4B,CAAC,EACzD,SAASC,GAAoBvd,EAAOuP,GAClC,IAAKvP,GAAS,QAAQxF,KAAKwF,GAAU,OAAO,KAC5C,IAAIwd,EAAQjO,EAAQ+I,aAAegF,GAA4BD,GAC/D,OAAOG,EAAMxd,KACVwd,EAAMxd,GAASA,EAAMyJ,QAAQ,OAAQ,SAC1C,CAOA,SAASgU,GAAiB9lB,EAAI+lB,GAI5B,IAAI3d,EAAUK,EAAK,OAAQ,KAAM,KAAM9C,EAAS,sBAAwB,MACpEqgB,EAAU,CAACC,IAAKxd,EAAK,MAAO,CAACL,GAAU,mBAAoBA,QAASA,EACzD4F,IAAK,EAAG3L,IAAK,EAAGrC,GAAIA,EACpBkmB,eAAe,EACfC,YAAanmB,EAAGJ,UAAU,iBACzCmmB,EAASlQ,QAAU,CAAC,EAGpB,IAAK,IAAI9U,EAAI,EAAGA,IAAMglB,EAASK,KAAOL,EAASK,KAAKplB,OAAS,GAAID,IAAK,CACpE,IAAIS,EAAOT,EAAIglB,EAASK,KAAKrlB,EAAI,GAAKglB,EAASvkB,KAAM8O,OAAQ,EAC7D0V,EAAQ3jB,IAAM,EACd2jB,EAAQK,SAAWC,GAGftQ,GAAgBhW,EAAG0K,QAAQmL,WAAavF,EAAQ2C,GAASzR,EAAMxB,EAAGmJ,IAAI8H,cACtE+U,EAAQK,SAAWE,GAAkBP,EAAQK,SAAU/V,IAC3D0V,EAAQxX,IAAM,GAEdgY,GAAkBhlB,EAAMwkB,EAAS3H,GAAcre,EAAIwB,EADzBukB,GAAY/lB,EAAG0K,QAAQ+b,kBAAoBxM,GAAOzY,KAExEA,EAAKod,eACHpd,EAAKod,aAAaT,UAClB6H,EAAQ7H,QAAU3U,EAAYhI,EAAKod,aAAaT,QAAS6H,EAAQ7H,SAAW,KAC5E3c,EAAKod,aAAaR,YAClB4H,EAAQ5H,UAAY5U,EAAYhI,EAAKod,aAAaR,UAAW4H,EAAQ5H,WAAa,MAI9D,GAAtB4H,EAAQxX,IAAIxN,QACZglB,EAAQxX,IAAIrK,KAAK,EAAG,EAAG6hB,EAAQ5d,QAAQH,YAAY2N,GAAiB5V,EAAG0K,QAAQmL,WAG1E,GAAL9U,GACFglB,EAASlQ,QAAQrH,IAAMwX,EAAQxX,IAC/BuX,EAASlQ,QAAQgQ,MAAQ,CAAC,KAE/BE,EAASlQ,QAAQ6Q,OAASX,EAASlQ,QAAQ6Q,KAAO,KAAKviB,KAAK6hB,EAAQxX,MAC7DuX,EAASlQ,QAAQ8Q,SAAWZ,EAASlQ,QAAQ8Q,OAAS,KAAKxiB,KAAK,CAAC,GAEvE,CAGA,GAAIwB,EAAQ,CACV,IAAI0V,EAAO2K,EAAQ5d,QAAQwe,WACvB,aAAa/jB,KAAKwY,EAAK/T,YAAe+T,EAAKwL,eAAiBxL,EAAKwL,cAAc,cAC/Eb,EAAQ5d,QAAQd,UAAY,mBAClC,CAMA,OAJAwM,GAAO9T,EAAI,aAAcA,EAAI+lB,EAASvkB,KAAMwkB,EAAQC,KAChDD,EAAQC,IAAI3e,YACZ0e,EAAQ5H,UAAY5U,EAAYwc,EAAQC,IAAI3e,UAAW0e,EAAQ5H,WAAa,KAEzE4H,CACT,CAEA,SAASc,GAA8BrlB,GACrC,IAAIgD,EAAQyD,EAAI,OAAQ,IAAU,kBAGlC,OAFAzD,EAAMsiB,MAAQ,MAAQtlB,EAAGiO,WAAW,GAAGlC,SAAS,IAChD/I,EAAMiE,aAAa,aAAcjE,EAAMsiB,OAChCtiB,CACT,CAIA,SAAS6hB,GAAWN,EAAS9S,EAAM7K,EAAO2e,EAAYC,EAAUC,EAAKC,GACnE,GAAKjU,EAAL,CACA,IAEI9K,EAFAgf,EAAcpB,EAAQG,YAiE5B,SAAqBjT,EAAMmU,GACzB,GAAInU,EAAKlS,OAAS,IAAM,KAAK6B,KAAKqQ,GAAS,OAAOA,EAElD,IADA,IAAIoU,EAAcD,EAAgB/Q,EAAS,GAClCvV,EAAI,EAAGA,EAAImS,EAAKlS,OAAQD,IAAK,CACpC,IAAIU,EAAKyR,EAAKhR,OAAOnB,GACX,KAANU,IAAa6lB,GAAgBvmB,GAAKmS,EAAKlS,OAAS,GAA+B,IAA1BkS,EAAKxD,WAAW3O,EAAI,KACzEU,EAAK,KACT6U,GAAU7U,EACV6lB,EAAoB,KAAN7lB,CAChB,CACA,OAAO6U,CACT,CA5E0C6P,CAAYjT,EAAM8S,EAAQE,eAAiBhT,EAC/EqU,EAAUvB,EAAQhmB,GAAGM,MAAMknB,aAAcC,GAAW,EAExD,GAAKF,EAAQ1kB,KAAKqQ,GAMX,CACL9K,EAAU3C,SAASiiB,yBAEnB,IADA,IAAIrlB,EAAM,IACG,CACXklB,EAAQI,UAAYtlB,EACpB,IAAImQ,EAAI+U,EAAQliB,KAAK6N,GACjBjF,EAAUuE,EAAIA,EAAEhL,MAAQnF,EAAM6Q,EAAKlS,OAASqB,EAChD,GAAI4L,EAAS,CACX,IAAIgI,EAAMxQ,SAAS+C,eAAe4e,EAAY7jB,MAAMlB,EAAKA,EAAM4L,IAC3D1I,GAAMC,EAAa,EAAK4C,EAAQH,YAAYC,EAAI,OAAQ,CAAC+N,KACtD7N,EAAQH,YAAYgO,GAC3B+P,EAAQxX,IAAIrK,KAAK6hB,EAAQ3jB,IAAK2jB,EAAQ3jB,IAAM4L,EAASgI,GACrD+P,EAAQhY,KAAOC,EACf+X,EAAQ3jB,KAAO4L,CACjB,CACA,IAAKuE,EAAK,MACVnQ,GAAO4L,EAAU,EACjB,IAAI2Z,OAAQ,EACZ,GAAY,MAARpV,EAAE,GAAY,CAChB,IAAIvG,EAAU+Z,EAAQhmB,GAAG4X,QAAQ3L,QAAS4b,EAAW5b,EAAU+Z,EAAQhY,IAAM/B,GAC7E2b,EAAQxf,EAAQH,YAAYC,EAAI,OAAQmG,EAASwZ,GAAW,YACtDnf,aAAa,OAAQ,gBAC3Bkf,EAAMlf,aAAa,UAAW,MAC9Bsd,EAAQhY,KAAO6Z,CACjB,KAAmB,MAARrV,EAAE,IAAsB,MAARA,EAAE,KAC3BoV,EAAQxf,EAAQH,YAAYC,EAAI,OAAgB,MAARsK,EAAE,GAAa,IAAW,IAAU,oBACtE9J,aAAa,UAAW8J,EAAE,IAChCwT,EAAQhY,KAAO,KAEf4Z,EAAQ5B,EAAQhmB,GAAG4X,QAAQkQ,uBAAuBtV,EAAE,KAC9C9J,aAAa,UAAW8J,EAAE,IAC5BjN,GAAMC,EAAa,EAAK4C,EAAQH,YAAYC,EAAI,OAAQ,CAAC0f,KACtDxf,EAAQH,YAAY2f,GAC3B5B,EAAQhY,KAAO,GAEjBgY,EAAQxX,IAAIrK,KAAK6hB,EAAQ3jB,IAAK2jB,EAAQ3jB,IAAM,EAAGulB,GAC/C5B,EAAQ3jB,KACV,CACF,MA3CE2jB,EAAQhY,KAAOkF,EAAKlS,OACpBoH,EAAU3C,SAAS+C,eAAe4e,GAClCpB,EAAQxX,IAAIrK,KAAK6hB,EAAQ3jB,IAAK2jB,EAAQ3jB,IAAM6Q,EAAKlS,OAAQoH,GACrD7C,GAAMC,EAAa,IAAKiiB,GAAW,GACvCzB,EAAQ3jB,KAAO6Q,EAAKlS,OAyCtB,GADAglB,EAAQE,cAA2D,IAA3CkB,EAAY1X,WAAWwD,EAAKlS,OAAS,GACzDqH,GAAS2e,GAAcC,GAAYQ,GAAYP,GAAOC,EAAY,CACpE,IAAIY,EAAY1f,GAAS,GACrB2e,IAAce,GAAaf,GAC3BC,IAAYc,GAAad,GAC7B,IAAIxiB,EAAQyD,EAAI,OAAQ,CAACE,GAAU2f,EAAWb,GAC9C,GAAIC,EACF,IAAK,IAAIa,KAAQb,EAAkBA,EAAWrb,eAAekc,IAAiB,SAARA,GAA2B,SAARA,GACrFvjB,EAAMiE,aAAasf,EAAMb,EAAWa,IAE1C,OAAOhC,EAAQ5d,QAAQH,YAAYxD,EACrC,CACAuhB,EAAQ5d,QAAQH,YAAYG,EA7DR,CA8DtB,CAmBA,SAASme,GAAkB5J,EAAOrM,GAChC,OAAO,SAAU0V,EAAS9S,EAAM7K,EAAO2e,EAAYC,EAAUC,EAAKC,GAChE9e,EAAQA,EAAQA,EAAQ,mBAAqB,kBAE7C,IADA,IAAI1D,EAAQqhB,EAAQ3jB,IAAKyH,EAAMnF,EAAQuO,EAAKlS,SACnC,CAGP,IADA,IAAIinB,OAAO,EACFlnB,EAAI,EAAGA,EAAIuP,EAAMtP,WACxBinB,EAAO3X,EAAMvP,IACJgP,GAAKpL,GAASsjB,EAAKnY,MAAQnL,GAFJ5D,KAIlC,GAAIknB,EAAKlY,IAAMjG,EAAO,OAAO6S,EAAMqJ,EAAS9S,EAAM7K,EAAO2e,EAAYC,EAAUC,EAAKC,GACpFxK,EAAMqJ,EAAS9S,EAAK3P,MAAM,EAAG0kB,EAAKlY,GAAKpL,GAAQ0D,EAAO2e,EAAY,KAAME,EAAKC,GAC7EH,EAAa,KACb9T,EAAOA,EAAK3P,MAAM0kB,EAAKlY,GAAKpL,GAC5BA,EAAQsjB,EAAKlY,EACf,CACF,CACF,CAEA,SAASmY,GAAmBlC,EAAS5M,EAAM4H,EAAQmH,GACjD,IAAIC,GAAUD,GAAgBnH,EAAO2D,WACjCyD,GAAUpC,EAAQxX,IAAIrK,KAAK6hB,EAAQ3jB,IAAK2jB,EAAQ3jB,IAAM+W,EAAMgP,IAC3DD,GAAgBnC,EAAQhmB,GAAG0K,QAAQ2d,MAAMC,wBACvCF,IACDA,EAASpC,EAAQ5d,QAAQH,YAAYxC,SAAS6C,cAAc,UAChE8f,EAAO1f,aAAa,YAAasY,EAAOnU,KAEtCub,IACFpC,EAAQhmB,GAAG0K,QAAQ2d,MAAME,cAAcH,GACvCpC,EAAQ5d,QAAQH,YAAYmgB,IAE9BpC,EAAQ3jB,KAAO+W,EACf4M,EAAQE,eAAgB,CAC1B,CAIA,SAASM,GAAkBhlB,EAAMwkB,EAAS/H,GACxC,IAAIiD,EAAQ1f,EAAKigB,YAAa+G,EAAUhnB,EAAK0R,KAAMR,EAAK,EACxD,GAAKwO,EAQL,IAFA,IAAqD7Y,EAAO6e,EACxCuB,EAAWC,EAAcC,EAAgB9E,EAAWsD,EADpE/V,EAAMoX,EAAQxnB,OAAQqB,EAAM,EAAGtB,EAAI,EAAGmS,EAAO,GAC7C0V,EAAa,IACR,CACP,GAAIA,GAAcvmB,EAAK,CACrBomB,EAAYC,EAAeC,EAAiBzB,EAAM,GAClDC,EAAa,KACbtD,EAAY,KAAM+E,EAAaC,IAE/B,IADA,IAAIC,EAAiB,GAAIC,OAAY,EAC5BhX,EAAI,EAAGA,EAAImP,EAAMlgB,SAAU+Q,EAAG,CACrC,IAAI6R,EAAK1C,EAAMnP,GAAIS,EAAIoR,EAAG5C,OAC1B,GAAc,YAAVxO,EAAElQ,MAAsBshB,EAAG9T,MAAQzN,GAAOmQ,EAAEmS,WAC9CmE,EAAe3kB,KAAKqO,QACf,GAAIoR,EAAG9T,MAAQzN,IAAiB,MAATuhB,EAAG7T,IAAc6T,EAAG7T,GAAK1N,GAAOmQ,EAAEqR,WAAaD,EAAG7T,IAAM1N,GAAOuhB,EAAG9T,MAAQzN,GAAM,CAY5G,GAXa,MAATuhB,EAAG7T,IAAc6T,EAAG7T,IAAM1N,GAAOumB,EAAahF,EAAG7T,KACnD6Y,EAAahF,EAAG7T,GAChB2Y,EAAe,IAEblW,EAAElL,YAAamhB,GAAa,IAAMjW,EAAElL,WACpCkL,EAAE0U,MAAOA,GAAOA,EAAMA,EAAM,IAAM,IAAM1U,EAAE0U,KAC1C1U,EAAEwU,YAAcpD,EAAG9T,MAAQzN,IAAOsmB,GAAkB,IAAMnW,EAAEwU,YAC5DxU,EAAEyU,UAAYrD,EAAG7T,IAAM6Y,IAAeG,IAAcA,EAAY,KAAK5kB,KAAKqO,EAAEyU,SAAUrD,EAAG7T,IAGzFyC,EAAEuU,SAAUI,IAAeA,EAAa,CAAC,IAAIJ,MAAQvU,EAAEuU,OACvDvU,EAAE2U,WACJ,IAAK,IAAIa,KAAQxV,EAAE2U,YACdA,IAAeA,EAAa,CAAC,IAAIa,GAAQxV,EAAE2U,WAAWa,GAEzDxV,EAAEqR,aAAeA,GAAaT,GAAwBS,EAAU7C,OAAQxO,GAAK,KAC7EqR,EAAYD,EAClB,MAAWA,EAAG9T,KAAOzN,GAAOumB,EAAahF,EAAG9T,OAC1C8Y,EAAahF,EAAG9T,KAEpB,CACA,GAAIiZ,EAAa,IAAK,IAAIxW,EAAM,EAAGA,EAAMwW,EAAU/nB,OAAQuR,GAAO,EAC1DwW,EAAUxW,EAAM,IAAMqW,IAAcF,GAAgB,IAAMK,EAAUxW,IAE5E,IAAKsR,GAAaA,EAAU/T,MAAQzN,EAAO,IAAK,IAAIuQ,EAAM,EAAGA,EAAMkW,EAAe9nB,SAAU4R,EACxFsV,GAAmBlC,EAAS,EAAG8C,EAAelW,IAClD,GAAIiR,IAAcA,EAAU/T,MAAQ,IAAMzN,EAAK,CAG7C,GAFA6lB,GAAmBlC,GAA0B,MAAhBnC,EAAU9T,GAAaqB,EAAM,EAAIyS,EAAU9T,IAAM1N,EAC3DwhB,EAAU7C,OAA0B,MAAlB6C,EAAU/T,MAC3B,MAAhB+T,EAAU9T,GAAc,OACxB8T,EAAU9T,IAAM1N,IAAOwhB,GAAY,EACzC,CACF,CACA,GAAIxhB,GAAO+O,EAAO,MAGlB,IADA,IAAI4X,EAAO9a,KAAKC,IAAIiD,EAAKwX,KACZ,CACX,GAAI1V,EAAM,CACR,IAAIpJ,EAAMzH,EAAM6Q,EAAKlS,OACrB,IAAK6iB,EAAW,CACd,IAAIoF,EAAYnf,EAAMkf,EAAO9V,EAAK3P,MAAM,EAAGylB,EAAO3mB,GAAO6Q,EACzD8S,EAAQK,SAASL,EAASiD,EAAW5gB,EAAQA,EAAQogB,EAAYA,EAChDE,EAAgBtmB,EAAM4mB,EAAUjoB,QAAU4nB,EAAaF,EAAe,GAAIxB,EAAKC,EAClG,CACA,GAAIrd,GAAOkf,EAAM,CAAC9V,EAAOA,EAAK3P,MAAMylB,EAAO3mB,GAAMA,EAAM2mB,EAAM,KAAK,CAClE3mB,EAAMyH,EACN6e,EAAiB,EACnB,CACAzV,EAAOsV,EAAQjlB,MAAMmP,EAAIA,EAAKuL,EAAOld,MACrCsH,EAAQud,GAAoB3H,EAAOld,KAAMilB,EAAQhmB,GAAG4X,QACtD,CACF,MArEE,IAAK,IAAItG,EAAM,EAAGA,EAAM2M,EAAOjd,OAAQsQ,GAAK,EACxC0U,EAAQK,SAASL,EAASwC,EAAQjlB,MAAMmP,EAAIA,EAAKuL,EAAO3M,IAAOsU,GAAoB3H,EAAO3M,EAAI,GAAI0U,EAAQhmB,GAAG4X,SAqErH,CAMA,SAASsR,GAAS/f,EAAK3H,EAAM8iB,GAE3B1X,KAAKpL,KAAOA,EAEZoL,KAAKwZ,KAjbP,SAA6B5kB,GAE3B,IADA,IAAI4iB,EAAQ7K,EACL6K,EAASL,GAAmBviB,IACjCA,EAAO4iB,EAAOb,KAAK,GAAG,GAAM/hB,MAC1B+X,IAAUA,EAAQ,KAAKpV,KAAK3C,GAEhC,OAAO+X,CACT,CA0ac4P,CAAoB3nB,GAEhCoL,KAAKwM,KAAOxM,KAAKwZ,KAAOnM,GAAO3L,GAAI1B,KAAKwZ,OAAS9B,EAAQ,EAAI,EAC7D1X,KAAKxF,KAAOwF,KAAKsG,KAAO,KACxBtG,KAAKwc,OAAS1E,GAAavb,EAAK3H,EAClC,CAGA,SAAS6nB,GAAerpB,EAAI8P,EAAMC,GAEhC,IADA,IAAgBuZ,EAAZtc,EAAQ,GACH3K,EAAMyN,EAAMzN,EAAM0N,EAAI1N,EAAMinB,EAAS,CAC5C,IAAIC,EAAO,IAAIL,GAASlpB,EAAGmJ,IAAK+P,GAAQlZ,EAAGmJ,IAAK9G,GAAMA,GACtDinB,EAAUjnB,EAAMknB,EAAKnQ,KACrBpM,EAAM7I,KAAKolB,EACb,CACA,OAAOvc,CACT,CAEA,IAAIwc,GAAiB,KAwCrB,IAAIC,GAAyB,KAS7B,SAASC,GAAYrW,EAAS/Q,GAC5B,IAAIiM,EAAMmF,GAAYL,EAAS/Q,GAC/B,GAAKiM,EAAIvN,OAAT,CACA,IAAqD2oB,EAAjDxe,EAAOC,MAAMC,UAAU9H,MAAM+H,KAAKC,UAAW,GAC7Cie,GACFG,EAAOH,GAAeI,iBACbH,GACTE,EAAOF,IAEPE,EAAOF,GAAyB,GAChCtc,WAAW0c,GAAmB,IAMhC,IAJA,IAAIlM,EAAO,SAAW5c,GACpB4oB,EAAKxlB,MAAK,WAAc,OAAOoK,EAAIxN,GAAGyK,MAAM,KAAML,EAAO,GAC3D,EAESpK,EAAI,EAAGA,EAAIwN,EAAIvN,SAAUD,EAChC4c,EAAM5c,EAfkB,CAgB5B,CAEA,SAAS8oB,KACP,IAAIC,EAAUL,GACdA,GAAyB,KACzB,IAAK,IAAI1oB,EAAI,EAAGA,EAAI+oB,EAAQ9oB,SAAUD,EAAK+oB,EAAQ/oB,IACrD,CAKA,SAASgpB,GAAqB/pB,EAAI+lB,EAAUzB,EAAO0F,GACjD,IAAK,IAAIjY,EAAI,EAAGA,EAAIgU,EAASkE,QAAQjpB,OAAQ+Q,IAAK,CAChD,IAAIzP,EAAOyjB,EAASkE,QAAQlY,GAChB,QAARzP,EAAkB4nB,GAAelqB,EAAI+lB,GACxB,UAARzjB,EAAoB6nB,GAAiBnqB,EAAI+lB,EAAUzB,EAAO0F,GAClD,SAAR1nB,EAAmB8nB,GAAkBpqB,EAAI+lB,GACjC,UAARzjB,GAAoB+nB,GAAkBrqB,EAAI+lB,EAAUiE,EAC/D,CACAjE,EAASkE,QAAU,IACrB,CAIA,SAASK,GAAkBvE,GAQzB,OAPIA,EAAS3e,MAAQ2e,EAAS7S,OAC5B6S,EAAS3e,KAAOc,EAAI,MAAO,KAAM,KAAM,sBACnC6d,EAAS7S,KAAKpK,YACdid,EAAS7S,KAAKpK,WAAWyhB,aAAaxE,EAAS3e,KAAM2e,EAAS7S,MAClE6S,EAAS3e,KAAKa,YAAY8d,EAAS7S,MAC/B3N,GAAMC,EAAa,IAAKugB,EAAS3e,KAAKiB,MAAMmiB,OAAS,IAEpDzE,EAAS3e,IAClB,CAiBA,SAASqjB,GAAezqB,EAAI+lB,GAC1B,IAAI2E,EAAM1qB,EAAG0K,QAAQ+b,iBACrB,OAAIiE,GAAOA,EAAIlpB,MAAQukB,EAASvkB,MAC9BxB,EAAG0K,QAAQ+b,iBAAmB,KAC9BV,EAASlQ,QAAU6U,EAAI7U,QAChB6U,EAAIC,OAEN7E,GAAiB9lB,EAAI+lB,EAC9B,CAKA,SAASmE,GAAelqB,EAAI+lB,GAC1B,IAAI9e,EAAM8e,EAAS7S,KAAK5L,UACpBqjB,EAAQF,GAAezqB,EAAI+lB,GAC3BA,EAAS7S,MAAQ6S,EAAS3e,OAAQ2e,EAAS3e,KAAOujB,EAAM1E,KAC5DF,EAAS7S,KAAKpK,WAAWyhB,aAAaI,EAAM1E,IAAKF,EAAS7S,MAC1D6S,EAAS7S,KAAOyX,EAAM1E,IAClB0E,EAAMxM,SAAW4H,EAAS5H,SAAWwM,EAAMvM,WAAa2H,EAAS3H,WACnE2H,EAAS5H,QAAUwM,EAAMxM,QACzB4H,EAAS3H,UAAYuM,EAAMvM,UAC3BgM,GAAkBpqB,EAAI+lB,IACb9e,IACT8e,EAAS7S,KAAK5L,UAAYL,EAE9B,CAEA,SAASmjB,GAAkBpqB,EAAI+lB,IA3C/B,SAA8B/lB,EAAI+lB,GAChC,IAAI9e,EAAM8e,EAAS5H,QAAU4H,EAAS5H,QAAU,KAAO4H,EAASvkB,KAAK2c,SAAW,IAAM4H,EAASvkB,KAAK2c,QAEpG,GADIlX,IAAOA,GAAO,8BACd8e,EAAS6E,WACP3jB,EAAO8e,EAAS6E,WAAWtjB,UAAYL,GACpC8e,EAAS6E,WAAW9hB,WAAWjB,YAAYke,EAAS6E,YAAa7E,EAAS6E,WAAa,WACzF,GAAI3jB,EAAK,CACd,IAAI4jB,EAAOP,GAAkBvE,GAC7BA,EAAS6E,WAAaC,EAAKC,aAAa5iB,EAAI,MAAO,KAAMjB,GAAM4jB,EAAK/iB,YACpE9H,EAAG0K,QAAQ2d,MAAME,cAAcxC,EAAS6E,WAC1C,CACF,EAiCEG,CAAqB/qB,EAAI+lB,GACrBA,EAASvkB,KAAKwpB,UACdV,GAAkBvE,GAAUze,UAAYye,EAASvkB,KAAKwpB,UACjDjF,EAAS3e,MAAQ2e,EAAS7S,OAC/B6S,EAAS3e,KAAKE,UAAY,IAC9B,IAAI8W,EAAY2H,EAAS3H,UAAY2H,EAAS3H,UAAY,KAAO2H,EAASvkB,KAAK4c,WAAa,IAAM2H,EAASvkB,KAAK4c,UAChH2H,EAAS7S,KAAK5L,UAAY8W,GAAa,EACzC,CAEA,SAAS+L,GAAiBnqB,EAAI+lB,EAAUzB,EAAO0F,GAS7C,GARIjE,EAASkF,SACXlF,EAAS3e,KAAKS,YAAYke,EAASkF,QACnClF,EAASkF,OAAS,MAEhBlF,EAASmF,mBACXnF,EAAS3e,KAAKS,YAAYke,EAASmF,kBACnCnF,EAASmF,iBAAmB,MAE1BnF,EAASvkB,KAAK2pB,YAAa,CAC7B,IAAIN,EAAOP,GAAkBvE,GAC7BA,EAASmF,iBAAmBhjB,EAAI,MAAO,KAAM,gCAAkC6d,EAASvkB,KAAK2pB,YAC5D,UAAYnrB,EAAG4X,QAAQwT,YAAcpB,EAAKqB,UAAYrB,EAAKsB,kBAAoB,cAAiBtB,EAAqB,iBAAI,MAC1JhqB,EAAG0K,QAAQ2d,MAAME,cAAcxC,EAASmF,kBACxCL,EAAKC,aAAa/E,EAASmF,iBAAkBnF,EAAS7S,KACxD,CACA,IAAIqY,EAAUxF,EAASvkB,KAAKgqB,cAC5B,GAAIxrB,EAAG4X,QAAQ6T,aAAeF,EAAS,CACrC,IAAIG,EAASpB,GAAkBvE,GAC3B4F,EAAa5F,EAASkF,OAAS/iB,EAAI,MAAO,KAAM,4BAA8B,UAAYlI,EAAG4X,QAAQwT,YAAcpB,EAAKqB,UAAYrB,EAAKsB,kBAAoB,MAWjK,GAVAK,EAAWjjB,aAAa,cAAe,QACvC1I,EAAG0K,QAAQ2d,MAAME,cAAcoD,GAC/BD,EAAOZ,aAAaa,EAAY5F,EAAS7S,MACrC6S,EAASvkB,KAAK2pB,cACdQ,EAAWrkB,WAAa,IAAMye,EAASvkB,KAAK2pB,cAC5CnrB,EAAG4X,QAAQ6T,aAAiBF,GAAYA,EAAQ,4BAChDxF,EAAS6F,WAAaD,EAAW1jB,YACjCC,EAAI,MAAOsS,GAAcxa,EAAG4X,QAAS0M,GACjC,8CACC,SAAY0F,EAAK6B,WAAW,0BAA6B,cAAiB7rB,EAAG0K,QAAyB,kBAAI,QAC/G6gB,EAAW,IAAK,IAAIO,EAAI,EAAGA,EAAI9rB,EAAG0K,QAAQqhB,YAAY/qB,SAAU8qB,EAAG,CACrE,IAAIjf,EAAK7M,EAAG0K,QAAQqhB,YAAYD,GAAGxkB,UAAWkJ,EAAQ+a,EAAQzf,eAAee,IAAO0e,EAAQ1e,GACxF2D,GACAmb,EAAW1jB,YAAYC,EAAI,MAAO,CAACsI,GAAQ,wBACjB,SAAYwZ,EAAK6B,WAAWhf,GAAO,cAAiBmd,EAAKgC,YAAYnf,GAAO,MAC5G,CACF,CACF,CAEA,SAASwd,GAAkBrqB,EAAI+lB,EAAUiE,GACnCjE,EAASkG,YAAalG,EAASkG,UAAY,MAE/C,IADA,IAAIC,EAAWllB,EAAU,yBAChBI,EAAO2e,EAAS3e,KAAKU,WAAYnF,OAAO,EAAUyE,EAAMA,EAAOzE,EACtEA,EAAOyE,EAAK+kB,YACRD,EAASrpB,KAAKuE,EAAKE,YAAcye,EAAS3e,KAAKS,YAAYT,GAEjEglB,GAAkBpsB,EAAI+lB,EAAUiE,EAClC,CAGA,SAASqC,GAAiBrsB,EAAI+lB,EAAUzB,EAAO0F,GAC7C,IAAIW,EAAQF,GAAezqB,EAAI+lB,GAQ/B,OAPAA,EAAS7S,KAAO6S,EAAS3e,KAAOujB,EAAM1E,IAClC0E,EAAMxM,UAAW4H,EAAS5H,QAAUwM,EAAMxM,SAC1CwM,EAAMvM,YAAa2H,EAAS3H,UAAYuM,EAAMvM,WAElDgM,GAAkBpqB,EAAI+lB,GACtBoE,GAAiBnqB,EAAI+lB,EAAUzB,EAAO0F,GACtCoC,GAAkBpsB,EAAI+lB,EAAUiE,GACzBjE,EAAS3e,IAClB,CAIA,SAASglB,GAAkBpsB,EAAI+lB,EAAUiE,GAEvC,GADAsC,GAAqBtsB,EAAI+lB,EAASvkB,KAAMukB,EAAUiE,GAAM,GACpDjE,EAASK,KAAQ,IAAK,IAAIrlB,EAAI,EAAGA,EAAIglB,EAASK,KAAKplB,OAAQD,IAC3DurB,GAAqBtsB,EAAI+lB,EAASK,KAAKrlB,GAAIglB,EAAUiE,GAAM,EACjE,CAEA,SAASsC,GAAqBtsB,EAAIwB,EAAMukB,EAAUiE,EAAMuC,GACtD,GAAK/qB,EAAKgrB,QAEV,IADA,IAAI3B,EAAOP,GAAkBvE,GACpBhlB,EAAI,EAAG0rB,EAAKjrB,EAAKgrB,QAASzrB,EAAI0rB,EAAGzrB,SAAUD,EAAG,CACrD,IAAIqnB,EAASqE,EAAG1rB,GAAIqG,EAAOc,EAAI,MAAO,CAACkgB,EAAOhhB,MAAO,yBAA2BghB,EAAO9gB,UAAY,IAAM8gB,EAAO9gB,UAAY,KACvH8gB,EAAOsE,mBAAqBtlB,EAAKsB,aAAa,mBAAoB,QACvEikB,GAAmBvE,EAAQhhB,EAAM2e,EAAUiE,GAC3ChqB,EAAG0K,QAAQ2d,MAAME,cAAcnhB,GAC3BmlB,GAAcnE,EAAOwE,MACrB/B,EAAKC,aAAa1jB,EAAM2e,EAASkF,QAAUlF,EAAS7S,MAEpD2X,EAAK5iB,YAAYb,GACrBsiB,GAAYtB,EAAQ,SACtB,CACF,CAEA,SAASuE,GAAmBvE,EAAQhhB,EAAM2e,EAAUiE,GAClD,GAAI5B,EAAOyE,UAAW,EACvB9G,EAASkG,YAAclG,EAASkG,UAAY,KAAK9nB,KAAKiD,GACnD,IAAI0lB,EAAQ9C,EAAK+C,aACjB3lB,EAAKiB,MAAMnF,KAAO8mB,EAAKqB,SAAW,KAC7BjD,EAAO4E,cACVF,GAAS9C,EAAKsB,iBACdlkB,EAAKiB,MAAM4kB,YAAcjD,EAAKsB,iBAAmB,MAEnDlkB,EAAKiB,MAAMykB,MAAQA,EAAQ,IAC7B,CACI1E,EAAO4E,cACT5lB,EAAKiB,MAAMmiB,OAAS,EACpBpjB,EAAKiB,MAAM6kB,SAAW,WACjB9E,EAAOyE,YAAazlB,EAAKiB,MAAM8kB,YAAcnD,EAAKsB,iBAAmB,MAE9E,CAEA,SAAS8B,GAAahF,GACpB,GAAqB,MAAjBA,EAAOrO,OAAkB,OAAOqO,EAAOrO,OAC3C,IAAI/Z,EAAKooB,EAAOjf,IAAInJ,GACpB,IAAKA,EAAM,OAAO,EAClB,IAAK2I,EAASlD,SAAS4D,KAAM+e,EAAOhhB,MAAO,CACzC,IAAIimB,EAAc,sBACdjF,EAAO4E,cACPK,GAAe,iBAAmBrtB,EAAG0K,QAAQ4iB,QAAQvX,YAAc,OACnEqS,EAAOyE,YACPQ,GAAe,UAAYrtB,EAAG0K,QAAQC,QAAQ4iB,YAAc,OAChExlB,EAAqB/H,EAAG0K,QAAQmL,QAAS3N,EAAI,MAAO,CAACkgB,EAAOhhB,MAAO,KAAMimB,GAC3E,CACA,OAAOjF,EAAOrO,OAASqO,EAAOhhB,KAAK0B,WAAWgN,YAChD,CAGA,SAAS0X,GAAc9iB,EAAShD,GAC9B,IAAK,IAAI2E,EAAI6I,GAASxN,GAAI2E,GAAK3B,EAAQC,QAAS0B,EAAIA,EAAEvD,WACpD,IAAKuD,GAAoB,GAAdA,EAAExD,UAAuD,QAAtCwD,EAAEohB,aAAa,qBACxCphB,EAAEvD,YAAc4B,EAAQgjB,OAASrhB,GAAK3B,EAAQijB,MAC/C,OAAO,CAEf,CAIA,SAASC,GAAWljB,GAAU,OAAOA,EAAQmjB,UAAUC,SAAS,CAChE,SAASC,GAAYrjB,GAAU,OAAOA,EAAQijB,MAAM7X,aAAepL,EAAQmjB,UAAU/X,YAAY,CACjG,SAASkY,GAAStjB,GAChB,GAAIA,EAAQujB,eAAkB,OAAOvjB,EAAQujB,eAC7C,IAAIvmB,EAAIK,EAAqB2C,EAAQmL,QAAS3N,EAAI,MAAO,IAAK,yBAC1DG,EAAQsO,OAAOuX,iBAAmBvX,OAAOuX,iBAAiBxmB,GAAKA,EAAEymB,aACjEC,EAAO,CAAClrB,KAAMmrB,SAAShmB,EAAM4kB,aAAc9pB,MAAOkrB,SAAShmB,EAAMimB,eAErE,OADKC,MAAMH,EAAKlrB,OAAUqrB,MAAMH,EAAKjrB,SAAUuH,EAAQujB,eAAiBG,GACjEA,CACT,CAEA,SAASI,GAAUxuB,GAAM,OAAOuN,EAAcvN,EAAG0K,QAAQ+jB,cAAe,CACxE,SAASC,GAAa1uB,GACpB,OAAOA,EAAG0K,QAAQikB,SAASpB,YAAciB,GAAUxuB,GAAMA,EAAG0K,QAAQkkB,QACtE,CACA,SAASC,GAAc7uB,GACrB,OAAOA,EAAG0K,QAAQikB,SAASG,aAAeN,GAAUxuB,GAAMA,EAAG0K,QAAQqkB,SACvE,CA2BA,SAASC,GAAgBjJ,EAAUvkB,EAAM8iB,GACvC,GAAIyB,EAASvkB,MAAQA,EACjB,MAAO,CAACgN,IAAKuX,EAASlQ,QAAQrH,IAAKqX,MAAOE,EAASlQ,QAAQgQ,OAC/D,GAAIE,EAASK,KAAM,CACjB,IAAK,IAAIrlB,EAAI,EAAGA,EAAIglB,EAASK,KAAKplB,OAAQD,IACtC,GAAIglB,EAASK,KAAKrlB,IAAMS,EACtB,MAAO,CAACgN,IAAKuX,EAASlQ,QAAQ6Q,KAAK3lB,GAAI8kB,MAAOE,EAASlQ,QAAQ8Q,OAAO5lB,IAC5E,IAAK,IAAIuQ,EAAM,EAAGA,EAAMyU,EAASK,KAAKplB,OAAQsQ,IAC1C,GAAI2I,GAAO8L,EAASK,KAAK9U,IAAQgT,EAC/B,MAAO,CAAC9V,IAAKuX,EAASlQ,QAAQ6Q,KAAKpV,GAAMuU,MAAOE,EAASlQ,QAAQ8Q,OAAOrV,GAAMe,QAAQ,EAC9F,CACF,CAiBA,SAAS4c,GAAYjvB,EAAIwB,EAAMC,EAAIytB,GACjC,OAAOC,GAAoBnvB,EAAIovB,GAAsBpvB,EAAIwB,GAAOC,EAAIytB,EACtE,CAGA,SAASG,GAAgBrvB,EAAIskB,GAC3B,GAAIA,GAAStkB,EAAG0K,QAAQ8U,UAAY8E,EAAQtkB,EAAG0K,QAAQ+U,OACnD,OAAOzf,EAAG0K,QAAQ6e,KAAK+F,GAActvB,EAAIskB,IAC7C,IAAIoG,EAAM1qB,EAAG0K,QAAQ+b,iBACrB,OAAIiE,GAAOpG,GAASoG,EAAIpG,OAASA,EAAQoG,EAAIpG,MAAQoG,EAAItR,KAC9CsR,OADX,CAEF,CAOA,SAAS0E,GAAsBpvB,EAAIwB,GACjC,IAAI8iB,EAAQrK,GAAOzY,GACf+nB,EAAO8F,GAAgBrvB,EAAIskB,GAC3BiF,IAASA,EAAKrW,KAChBqW,EAAO,KACEA,GAAQA,EAAKU,UACtBF,GAAqB/pB,EAAIupB,EAAMjF,EAAOiL,GAAcvvB,IACpDA,EAAGuU,MAAMib,aAAc,GAEpBjG,IACDA,EAzCN,SAAmCvpB,EAAIwB,GAErC,IAAI8iB,EAAQrK,GADZzY,EAAO2iB,GAAW3iB,IAEd+nB,EAAOvpB,EAAG0K,QAAQ+b,iBAAmB,IAAIyC,GAASlpB,EAAGmJ,IAAK3H,EAAM8iB,GACpEiF,EAAKjF,MAAQA,EACb,IAAIqG,EAAQpB,EAAKoB,MAAQ7E,GAAiB9lB,EAAIupB,GAG9C,OAFAA,EAAKrW,KAAOyX,EAAM1E,IAClBle,EAAqB/H,EAAG0K,QAAQ+kB,YAAa9E,EAAM1E,KAC5CsD,CACT,CAgCamG,CAA0B1vB,EAAIwB,IAEzC,IAAIiX,EAAOuW,GAAgBzF,EAAM/nB,EAAM8iB,GACvC,MAAO,CACL9iB,KAAMA,EAAM+nB,KAAMA,EAAMoG,KAAM,KAC9BnhB,IAAKiK,EAAKjK,IAAKqX,MAAOpN,EAAKoN,MAAOxT,OAAQoG,EAAKpG,OAC/Cud,YAAY,EAEhB,CAIA,SAAST,GAAoBnvB,EAAI6vB,EAAUpuB,EAAIytB,EAAMY,GAC/CD,EAASxd,SAAU5Q,GAAM,GAC7B,IAA6B+O,EAAzBrO,EAAMV,GAAMytB,GAAQ,IAaxB,OAZIW,EAAShK,MAAM/Z,eAAe3J,GAChCqO,EAAQqf,EAAShK,MAAM1jB,IAElB0tB,EAASF,OACVE,EAASF,KAAOE,EAAStG,KAAKrW,KAAKiD,yBAClC0Z,EAASD,aAjGlB,SAA2B5vB,EAAI+lB,EAAU4J,GACvC,IAAII,EAAW/vB,EAAG4X,QAAQoY,aACtBC,EAAWF,GAAYrB,GAAa1uB,GACxC,IAAK+lB,EAASlQ,QAAQqa,SAAWH,GAAYhK,EAASlQ,QAAQiX,OAASmD,EAAU,CAC/E,IAAIC,EAAUnK,EAASlQ,QAAQqa,QAAU,GACzC,GAAIH,EAAU,CACZhK,EAASlQ,QAAQiX,MAAQmD,EAEzB,IADA,IAAIE,EAAQpK,EAAS7S,KAAKpL,WAAWsoB,iBAC5BrvB,EAAI,EAAGA,EAAIovB,EAAMnvB,OAAS,EAAGD,IAAK,CACzC,IAAIO,EAAM6uB,EAAMpvB,GAAI4B,EAAOwtB,EAAMpvB,EAAI,GACjCmN,KAAKmiB,IAAI/uB,EAAIgvB,OAAS3tB,EAAK2tB,QAAU,GACrCJ,EAAQ/rB,MAAM7C,EAAIgvB,OAAS3tB,EAAK4tB,KAAO,EAAIZ,EAAKY,IACtD,CACF,CACAL,EAAQ/rB,KAAKwrB,EAAKW,OAASX,EAAKY,IAClC,CACF,CAkFMC,CAAkBxwB,EAAI6vB,EAAStG,KAAMsG,EAASF,MAC9CE,EAASD,YAAa,IAExBpf,EA0DJ,SAA0BxQ,EAAI6vB,EAAUpuB,EAAIytB,GAC1C,IAGIS,EAHAc,EAAQC,GAAuBb,EAASrhB,IAAK/M,EAAIytB,GACjD9nB,EAAOqpB,EAAMrpB,KAAMzC,EAAQ8rB,EAAM9rB,MAAOmF,EAAM2mB,EAAM3mB,IAAKO,EAAWomB,EAAMpmB,SAG9E,GAAqB,GAAjBjD,EAAKyB,SAAe,CACtB,IAAK,IAAIyI,EAAM,EAAGA,EAAM,EAAGA,IAAO,CAChC,KAAO3M,GAAS8K,GAAgBogB,EAASruB,KAAK0R,KAAKhR,OAAOuuB,EAAME,WAAahsB,OAAaA,EAC1F,KAAO8rB,EAAME,WAAa7mB,EAAM2mB,EAAMG,UAAYnhB,GAAgBogB,EAASruB,KAAK0R,KAAKhR,OAAOuuB,EAAME,WAAa7mB,OAAWA,EAK1H,IAHI6lB,EADApqB,GAAMC,EAAa,GAAc,GAATb,GAAcmF,GAAO2mB,EAAMG,SAAWH,EAAME,WAC7DvpB,EAAK0B,WAAWqN,wBAEhB0a,GAAcnuB,EAAM0E,EAAMzC,EAAOmF,GAAKsmB,iBAAkBlB,IAC1DhsB,MAAQysB,EAAKxsB,OAAkB,GAATwB,EAAc,MAC7CmF,EAAMnF,EACNA,GAAgB,EAChB0F,EAAW,OACb,CACI9E,GAAMC,EAAa,KAAMmqB,EAmCjC,SAAmC9Z,EAAS8Z,GAC1C,IAAKhZ,OAAOma,QAAgC,MAAtBA,OAAOC,aACzBD,OAAOC,aAAeD,OAAOE,aAlzDnC,SAA2Bnb,GACzB,GAAsB,MAAlBsB,GAA0B,OAAOA,GACrC,IAAI/P,EAAOW,EAAqB8N,EAAS3N,EAAI,OAAQ,MACjD+oB,EAAS7pB,EAAK+O,wBACd+a,EAAYxuB,EAAM0E,EAAM,EAAG,GAAG+O,wBAClC,OAAOgB,GAAiBjJ,KAAKmiB,IAAIY,EAAO/tB,KAAOguB,EAAUhuB,MAAQ,CACnE,CA4yDkDiuB,CAAkBtb,GAC9D,OAAO8Z,EACX,IAAIyB,EAASN,OAAOC,YAAcD,OAAOE,WACrCK,EAASP,OAAOQ,YAAcR,OAAOS,WACzC,MAAO,CAACruB,KAAMysB,EAAKzsB,KAAOkuB,EAAQjuB,MAAOwsB,EAAKxsB,MAAQiuB,EAC9Cb,IAAKZ,EAAKY,IAAMc,EAAQf,OAAQX,EAAKW,OAASe,EACxD,CA3CwCG,CAA0BxxB,EAAG0K,QAAQmL,QAAS8Z,GACpF,KAAO,CAEL,IAAIQ,EADAxrB,EAAQ,IAAK0F,EAAW6kB,EAAO,SAG/BS,EADA3vB,EAAG4X,QAAQoY,eAAiBG,EAAQ/oB,EAAKgpB,kBAAkBpvB,OAAS,EAC7DmvB,EAAc,SAARjB,EAAkBiB,EAAMnvB,OAAS,EAAI,GAE3CoG,EAAK+O,uBAClB,CACA,GAAI5Q,GAAMC,EAAa,IAAMb,KAAWgrB,IAASA,EAAKzsB,OAASysB,EAAKxsB,OAAQ,CAC1E,IAAIsuB,EAAQrqB,EAAK0B,WAAWsnB,iBAAiB,GAEzCT,EADA8B,EACO,CAACvuB,KAAMuuB,EAAMvuB,KAAMC,MAAOsuB,EAAMvuB,KAAOwuB,GAAU1xB,EAAG0K,SAAU6lB,IAAKkB,EAAMlB,IAAKD,OAAQmB,EAAMnB,QAE5FqB,EACb,CAMA,IAJA,IAAIC,EAAOjC,EAAKY,IAAMV,EAASF,KAAKY,IAAKsB,EAAOlC,EAAKW,OAAST,EAASF,KAAKY,IACxEtgB,GAAO2hB,EAAOC,GAAQ,EACtB3B,EAAUL,EAAStG,KAAK1T,QAAQqa,QAChCnvB,EAAI,EACDA,EAAImvB,EAAQlvB,OAAS,KACpBiP,EAAMigB,EAAQnvB,IADSA,KAE/B,IAAIwvB,EAAMxvB,EAAImvB,EAAQnvB,EAAI,GAAK,EAAG+wB,EAAM5B,EAAQnvB,GAC5CuV,EAAS,CAACpT,MAAmB,SAAZmH,EAAsBslB,EAAKxsB,MAAQwsB,EAAKzsB,MAAQ2sB,EAASF,KAAKzsB,KACrEC,OAAoB,QAAZkH,EAAqBslB,EAAKzsB,KAAOysB,EAAKxsB,OAAS0sB,EAASF,KAAKzsB,KACrEqtB,IAAKA,EAAKD,OAAQwB,GAIhC,OAHKnC,EAAKzsB,MAASysB,EAAKxsB,QAASmT,EAAOyb,OAAQ,GAC3C/xB,EAAG4X,QAAQoa,4BAA6B1b,EAAOsb,KAAOA,EAAMtb,EAAO2b,QAAUJ,GAE3Evb,CACT,CA3GY4b,CAAiBlyB,EAAI6vB,EAAUpuB,EAAIytB,IAChC6C,QAASlC,EAAShK,MAAM1jB,GAAOqO,IAErC,CAACtN,KAAMsN,EAAMtN,KAAMC,MAAOqN,EAAMrN,MAC/BotB,IAAKT,EAAYtf,EAAMohB,KAAOphB,EAAM+f,IACpCD,OAAQR,EAAYtf,EAAMyhB,QAAUzhB,EAAM8f,OACpD,CAEA,IAwbI6B,GAxbAR,GAAW,CAACzuB,KAAM,EAAGC,MAAO,EAAGotB,IAAK,EAAGD,OAAQ,GAEnD,SAASI,GAAuBliB,EAAK/M,EAAIytB,GAIvC,IAHA,IAAI9nB,EAAMzC,EAAOmF,EAAKO,EAAU+nB,EAAQC,EAG/BtxB,EAAI,EAAGA,EAAIyN,EAAIxN,OAAQD,GAAK,EAcnC,GAbAqxB,EAAS5jB,EAAIzN,GACbsxB,EAAO7jB,EAAIzN,EAAI,GACXU,EAAK2wB,GACPztB,EAAQ,EAAGmF,EAAM,EACjBO,EAAW,QACF5I,EAAK4wB,EAEdvoB,EAAc,GADdnF,EAAQlD,EAAK2wB,IAEJrxB,GAAKyN,EAAIxN,OAAS,GAAKS,GAAM4wB,GAAQ7jB,EAAIzN,EAAI,GAAKU,KAE3DkD,GADAmF,EAAMuoB,EAAOD,GACC,EACV3wB,GAAM4wB,IAAQhoB,EAAW,UAElB,MAAT1F,EAAe,CAIjB,GAHAyC,EAAOoH,EAAIzN,EAAI,GACXqxB,GAAUC,GAAQnD,IAAS9nB,EAAK4a,WAAa,OAAS,WACtD3X,EAAW6kB,GACH,QAARA,GAA2B,GAATvqB,EAClB,KAAO5D,GAAKyN,EAAIzN,EAAI,IAAMyN,EAAIzN,EAAI,IAAMyN,EAAIzN,EAAI,GAAGihB,YACnD5a,EAAOoH,EAAe,GAAVzN,GAAK,IACjBsJ,EAAW,OAEf,GAAY,SAAR6kB,GAAmBvqB,GAAS0tB,EAAOD,EACnC,KAAOrxB,EAAIyN,EAAIxN,OAAS,GAAKwN,EAAIzN,EAAI,IAAMyN,EAAIzN,EAAI,KAAOyN,EAAIzN,EAAI,GAAGihB,YACrE5a,EAAOoH,GAAKzN,GAAK,GAAK,GACtBsJ,EAAW,QAEf,KACF,CAEF,MAAO,CAACjD,KAAMA,EAAMzC,MAAOA,EAAOmF,IAAKA,EAAKO,SAAUA,EAAUsmB,WAAYyB,EAAQxB,SAAUyB,EAChG,CAEA,SAASxB,GAAcV,EAAOjB,GAC5B,IAAIS,EAAOgC,GACX,GAAY,QAARzC,EAAkB,IAAK,IAAInuB,EAAI,EAAGA,EAAIovB,EAAMnvB,SACzC2uB,EAAOQ,EAAMpvB,IAAImC,MAAQysB,EAAKxsB,MADmBpC,UAE7C,IAAK,IAAIuQ,EAAM6e,EAAMnvB,OAAS,EAAGsQ,GAAO,IAC5Cqe,EAAOQ,EAAM7e,IAAMpO,MAAQysB,EAAKxsB,MADemO,KAGtD,OAAOqe,CACT,CAiEA,SAAS2C,GAA6BvM,GACpC,GAAIA,EAASlQ,UACXkQ,EAASlQ,QAAQgQ,MAAQ,CAAC,EAC1BE,EAASlQ,QAAQqa,QAAU,KACvBnK,EAASK,MAAQ,IAAK,IAAIrlB,EAAI,EAAGA,EAAIglB,EAASK,KAAKplB,OAAQD,IAC3DglB,EAASlQ,QAAQ8Q,OAAO5lB,GAAK,CAAC,CAEtC,CAEA,SAASwxB,GAA0BvyB,GACjCA,EAAG0K,QAAQ8nB,gBAAkB,KAC7B/qB,EAAezH,EAAG0K,QAAQ+kB,aAC1B,IAAK,IAAI1uB,EAAI,EAAGA,EAAIf,EAAG0K,QAAQ6e,KAAKvoB,OAAQD,IACxCuxB,GAA6BtyB,EAAG0K,QAAQ6e,KAAKxoB,GACnD,CAEA,SAAS0xB,GAAYzyB,GACnBuyB,GAA0BvyB,GAC1BA,EAAG0K,QAAQgoB,gBAAkB1yB,EAAG0K,QAAQioB,iBAAmB3yB,EAAG0K,QAAQujB,eAAiB,KAClFjuB,EAAG4X,QAAQoY,eAAgBhwB,EAAG0K,QAAQ4a,gBAAiB,GAC5DtlB,EAAG0K,QAAQkoB,aAAe,IAC5B,CAEA,SAASC,GAAY1pB,GAInB,OAAItD,GAAUS,IAAoB6C,EAAIE,KAAK8M,wBAAwBjT,KAAOmrB,SAASH,iBAAiB/kB,EAAIE,MAAM8jB,aACvGhkB,EAAI6B,YAAY8nB,cAAgB3pB,EAAI4pB,iBAAmB5pB,EAAIE,MAAM2pB,UAC1E,CACA,SAASC,GAAY9pB,GACnB,OAAItD,GAAUS,IAAoB6C,EAAIE,KAAK8M,wBAAwBoa,IAAMlC,SAASH,iBAAiB/kB,EAAIE,MAAM6pB,YACtG/pB,EAAI6B,YAAYmoB,cAAgBhqB,EAAI4pB,iBAAmB5pB,EAAIE,MAAM+pB,SAC1E,CAEA,SAASC,GAAgBvO,GACvB,IACI0H,EADMrI,GAAWW,GACH0H,QACdzS,EAAS,EACb,GAAIyS,EAAW,IAAK,IAAIzrB,EAAI,EAAGA,EAAIyrB,EAAQxrB,SAAUD,EAASyrB,EAAQzrB,GAAG6rB,QACrE7S,GAAUqT,GAAaZ,EAAQzrB,KACnC,OAAOgZ,CACT,CAMA,SAASuZ,GAAgBtzB,EAAI8kB,EAAS6K,EAAMtS,EAASkW,GACnD,IAAKA,EAAgB,CACnB,IAAIxZ,EAASsZ,GAAgBvO,GAC7B6K,EAAKY,KAAOxW,EAAQ4V,EAAKW,QAAUvW,CACrC,CACA,GAAe,QAAXsD,EAAqB,OAAOsS,EAC3BtS,IAAWA,EAAU,SAC1B,IAAImW,EAAO3O,GAAaC,GAGxB,GAFe,SAAXzH,EAAsBmW,GAAQ5F,GAAW5tB,EAAG0K,SACzC8oB,GAAQxzB,EAAG0K,QAAQ+oB,WACX,QAAXpW,GAAgC,UAAXA,EAAqB,CAC5C,IAAIqW,EAAO1zB,EAAG0K,QAAQmjB,UAAU1X,wBAChCqd,GAAQE,EAAKnD,KAAkB,UAAXlT,EAAsB,EAAI4V,GAAY9pB,EAAInJ,KAC9D,IAAI2zB,EAAOD,EAAKxwB,MAAmB,UAAXma,EAAsB,EAAIwV,GAAY1pB,EAAInJ,KAClE2vB,EAAKzsB,MAAQywB,EAAMhE,EAAKxsB,OAASwwB,CACnC,CAEA,OADAhE,EAAKY,KAAOiD,EAAM7D,EAAKW,QAAUkD,EAC1B7D,CACT,CAIA,SAASiE,GAAgB5zB,EAAI6zB,EAAQxW,GACnC,GAAe,OAAXA,EAAoB,OAAOwW,EAC/B,IAAI3wB,EAAO2wB,EAAO3wB,KAAMqtB,EAAMsD,EAAOtD,IAErC,GAAe,QAAXlT,EACFna,GAAQ2vB,GAAY1pB,EAAInJ,IACxBuwB,GAAO0C,GAAY9pB,EAAInJ,SAClB,GAAe,SAAXqd,IAAuBA,EAAS,CACzC,IAAIyW,EAAW9zB,EAAG0K,QAAQgjB,MAAMvX,wBAChCjT,GAAQ4wB,EAAS5wB,KACjBqtB,GAAOuD,EAASvD,GAClB,CAEA,IAAIwD,EAAe/zB,EAAG0K,QAAQmjB,UAAU1X,wBACxC,MAAO,CAACjT,KAAMA,EAAO6wB,EAAa7wB,KAAMqtB,IAAKA,EAAMwD,EAAaxD,IAClE,CAEA,SAASyD,GAAWh0B,EAAIqC,EAAKgb,EAASyH,EAASoK,GAE7C,OADKpK,IAAWA,EAAU5L,GAAQlZ,EAAGmJ,IAAK9G,EAAIb,OACvC8xB,GAAgBtzB,EAAI8kB,EAASmK,GAAYjvB,EAAI8kB,EAASziB,EAAIZ,GAAIytB,GAAO7R,EAC9E,CAkBA,SAAS4W,GAAaj0B,EAAIqC,EAAKgb,EAASyH,EAASoP,EAAiBpE,GAGhE,SAASqE,EAAI1yB,EAAI0B,GACf,IAAIqP,EAAI2c,GAAoBnvB,EAAIk0B,EAAiBzyB,EAAI0B,EAAQ,QAAU,OAAQ2sB,GAE/E,OADI3sB,EAASqP,EAAEtP,KAAOsP,EAAErP,MAAgBqP,EAAErP,MAAQqP,EAAEtP,KAC7CowB,GAAgBtzB,EAAI8kB,EAAStS,EAAG6K,EACzC,CANAyH,EAAUA,GAAW5L,GAAQlZ,EAAGmJ,IAAK9G,EAAIb,MACpC0yB,IAAmBA,EAAkB9E,GAAsBpvB,EAAI8kB,IAMpE,IAAIxU,EAAQ2C,GAAS6R,EAAS9kB,EAAGmJ,IAAI8H,WAAYxP,EAAKY,EAAIZ,GAAI8O,EAASlO,EAAIkO,OAQ3E,GAPI9O,GAAMqjB,EAAQ5R,KAAKlS,QACrBS,EAAKqjB,EAAQ5R,KAAKlS,OAClBuP,EAAS,UACA9O,GAAM,IACfA,EAAK,EACL8O,EAAS,UAEND,EAAS,OAAO6jB,EAAc,UAAV5jB,EAAqB9O,EAAK,EAAIA,EAAc,UAAV8O,GAE3D,SAAS6jB,EAAQ3yB,EAAI4yB,EAASC,GAE5B,OAAOH,EAAIG,EAAS7yB,EAAK,EAAIA,EADoB,GAAtC6O,EAAM+jB,GAAuBrjB,OACEsjB,EAC5C,CACA,IAAID,EAAUhkB,GAAcC,EAAO7O,EAAI8O,GACnCgkB,EAAQnkB,GACRnQ,EAAMm0B,EAAQ3yB,EAAI4yB,EAAmB,UAAV9jB,GAE/B,OADa,MAATgkB,IAAiBt0B,EAAIs0B,MAAQH,EAAQ3yB,EAAI8yB,EAAiB,UAAVhkB,IAC7CtQ,CACT,CAIA,SAASu0B,GAAex0B,EAAIqC,GAC1B,IAAIa,EAAO,EACXb,EAAM+Y,GAAQpb,EAAGmJ,IAAK9G,GACjBrC,EAAG4X,QAAQoY,eAAgB9sB,EAAOwuB,GAAU1xB,EAAG0K,SAAWrI,EAAIZ,IACnE,IAAIqjB,EAAU5L,GAAQlZ,EAAGmJ,IAAK9G,EAAIb,MAC9B+uB,EAAM1L,GAAaC,GAAW8I,GAAW5tB,EAAG0K,SAChD,MAAO,CAACxH,KAAMA,EAAMC,MAAOD,EAAMqtB,IAAKA,EAAKD,OAAQC,EAAMzL,EAAQ/K,OACnE,CAQA,SAAS0a,GAAYjzB,EAAMC,EAAI8O,EAAQmkB,EAASC,GAC9C,IAAItyB,EAAM1C,GAAI6B,EAAMC,EAAI8O,GAGxB,OAFAlO,EAAIsyB,KAAOA,EACPD,IAAWryB,EAAIqyB,QAAUA,GACtBryB,CACT,CAIA,SAASuyB,GAAW50B,EAAI+a,EAAG8Z,GACzB,IAAI1rB,EAAMnJ,EAAGmJ,IAEb,IADA0rB,GAAK70B,EAAG0K,QAAQ+oB,YACR,EAAK,OAAOgB,GAAYtrB,EAAIgQ,MAAO,EAAG,MAAO,GAAI,GACzD,IAAImL,EAAQnK,GAAahR,EAAK0rB,GAAIxZ,EAAOlS,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,EAChE,GAAIkL,EAAQjJ,EACR,OAAOoZ,GAAYtrB,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,EAAGF,GAAQ/P,EAAKkS,GAAMnI,KAAKlS,OAAQ,KAAM,EAAG,GACtF+Z,EAAI,IAAKA,EAAI,GAGjB,IADA,IAAI+J,EAAU5L,GAAQ/P,EAAKmb,KAClB,CACP,IAAI9T,EAAQskB,GAAgB90B,EAAI8kB,EAASR,EAAOvJ,EAAG8Z,GAC/ChR,EAAYG,GAAoBc,EAAStU,EAAM/O,IAAM+O,EAAMmkB,KAAO,GAAKnkB,EAAMkkB,QAAU,EAAI,EAAI,IACnG,IAAK7Q,EAAa,OAAOrT,EACzB,IAAIukB,EAAWlR,EAAUN,KAAK,GAC9B,GAAIwR,EAASvzB,MAAQ8iB,EAAS,OAAOyQ,EACrCjQ,EAAU5L,GAAQ/P,EAAKmb,EAAQyQ,EAASvzB,KAC1C,CACF,CAEA,SAASwzB,GAAkBh1B,EAAI8kB,EAASoP,EAAiBW,GACvDA,GAAKxB,GAAgBvO,GACrB,IAAIhb,EAAMgb,EAAQ5R,KAAKlS,OACnBi0B,EAAQrlB,IAAU,SAAUnO,GAAM,OAAO0tB,GAAoBnvB,EAAIk0B,EAAiBzyB,EAAK,GAAG6uB,QAAUuE,CAAG,GAAG/qB,EAAK,GAEnH,MAAO,CAACmrB,MAAOA,EAAOnrB,IADtBA,EAAM8F,IAAU,SAAUnO,GAAM,OAAO0tB,GAAoBnvB,EAAIk0B,EAAiBzyB,GAAI8uB,IAAMsE,CAAG,GAAGI,EAAOnrB,GAEzG,CAEA,SAASorB,GAAsBl1B,EAAI8kB,EAASoP,EAAiBvoB,GAG3D,OAFKuoB,IAAmBA,EAAkB9E,GAAsBpvB,EAAI8kB,IAE7DkQ,GAAkBh1B,EAAI8kB,EAASoP,EADtBZ,GAAgBtzB,EAAI8kB,EAASqK,GAAoBnvB,EAAIk0B,EAAiBvoB,GAAS,QAAQ4kB,IAEzG,CAIA,SAAS4E,GAAWC,EAAKra,EAAG8Z,EAAG3xB,GAC7B,QAAOkyB,EAAI9E,QAAUuE,KAAYO,EAAI7E,IAAMsE,IAAY3xB,EAAOkyB,EAAIlyB,KAAOkyB,EAAIjyB,OAAS4X,EACxF,CAEA,SAAS+Z,GAAgB90B,EAAI8kB,EAAS7K,EAAQc,EAAG8Z,GAE/CA,GAAKhQ,GAAaC,GAClB,IAAIoP,EAAkB9E,GAAsBpvB,EAAI8kB,GAG5CsI,EAAeiG,GAAgBvO,GAC/BmQ,EAAQ,EAAGnrB,EAAMgb,EAAQ5R,KAAKlS,OAAQq0B,GAAM,EAE5C/kB,EAAQ2C,GAAS6R,EAAS9kB,EAAGmJ,IAAI8H,WAGrC,GAAIX,EAAO,CACT,IAAI2X,GAAQjoB,EAAG4X,QAAQoY,aAAesF,GAAwBC,IAChDv1B,EAAI8kB,EAAS7K,EAAQia,EAAiB5jB,EAAOyK,EAAG8Z,GAM9DI,GALAI,EAAoB,GAAdpN,EAAKjX,OAKGiX,EAAKnY,KAAOmY,EAAKlY,GAAK,EACpCjG,EAAMurB,EAAMpN,EAAKlY,GAAKkY,EAAKnY,KAAO,CACpC,CAKA,IAYI0lB,EAAOjlB,EAZPklB,EAAW,KAAMC,EAAY,KAC7Bj0B,EAAKmO,IAAU,SAAUnO,GAC3B,IAAI2zB,EAAMjG,GAAoBnvB,EAAIk0B,EAAiBzyB,GAEnD,OADA2zB,EAAI7E,KAAOnD,EAAcgI,EAAI9E,QAAUlD,IAClC+H,GAAWC,EAAKra,EAAG8Z,GAAG,KACvBO,EAAI7E,KAAOsE,GAAKO,EAAIlyB,MAAQ6X,IAC9B0a,EAAWh0B,EACXi0B,EAAYN,IAEP,EACT,GAAGH,EAAOnrB,GAES4qB,GAAU,EAE7B,GAAIgB,EAAW,CAEb,IAAIC,EAAS5a,EAAI2a,EAAUxyB,KAAOwyB,EAAUvyB,MAAQ4X,EAAG6a,EAAUD,GAAUN,EAC3E5zB,EAAKg0B,GAAYG,EAAU,EAAI,GAC/BrlB,EAASqlB,EAAU,QAAU,SAC7BJ,EAAQG,EAASD,EAAUxyB,KAAOwyB,EAAUvyB,KAC9C,KAAO,CAEAkyB,GAAQ5zB,GAAMqI,GAAOrI,GAAMwzB,GAAUxzB,IAI1C8O,EAAe,GAAN9O,EAAU,QAAUA,GAAMqjB,EAAQ5R,KAAKlS,OAAS,SACtDmuB,GAAoBnvB,EAAIk0B,EAAiBzyB,GAAM4zB,EAAM,EAAI,IAAI/E,OAASlD,GAAgByH,GAAMQ,EAC7F,QAAU,SAGZ,IAAIxB,EAASI,GAAaj0B,EAAIL,GAAIsa,EAAQxY,EAAI8O,GAAS,OAAQuU,EAASoP,GACxEsB,EAAQ3B,EAAO3wB,KACfwxB,EAAUG,EAAIhB,EAAOtD,KAAO,EAAIsE,GAAKhB,EAAOvD,OAAS,EAAI,CAC3D,CAGA,OAAOmE,GAAYxa,EADnBxY,EAAKkO,GAAmBmV,EAAQ5R,KAAMzR,EAAI,GACX8O,EAAQmkB,EAAS3Z,EAAIya,EACtD,CAEA,SAASD,GAAev1B,EAAI8kB,EAAS7K,EAAQia,EAAiB5jB,EAAOyK,EAAG8Z,GAKtE,IAAIrtB,EAAQoI,IAAU,SAAU7O,GAC9B,IAAIknB,EAAO3X,EAAMvP,GAAIs0B,EAAoB,GAAdpN,EAAKjX,MAChC,OAAOmkB,GAAWlB,GAAaj0B,EAAIL,GAAIsa,EAAQob,EAAMpN,EAAKlY,GAAKkY,EAAKnY,KAAMulB,EAAM,SAAW,SAC5D,OAAQvQ,EAASoP,GAAkBnZ,EAAG8Z,GAAG,EAC1E,GAAG,EAAGvkB,EAAMtP,OAAS,GACjBinB,EAAO3X,EAAM9I,GAIjB,GAAIA,EAAQ,EAAG,CACb,IAAI6tB,EAAoB,GAAdpN,EAAKjX,MACXrM,EAAQsvB,GAAaj0B,EAAIL,GAAIsa,EAAQob,EAAMpN,EAAKnY,KAAOmY,EAAKlY,GAAIslB,EAAM,QAAU,UAC3D,OAAQvQ,EAASoP,GACtCiB,GAAWxwB,EAAOoW,EAAG8Z,GAAG,IAASlwB,EAAM4rB,IAAMsE,IAC7C5M,EAAO3X,EAAM9I,EAAQ,GAC3B,CACA,OAAOygB,CACT,CAEA,SAASqN,GAAsBt1B,EAAI8kB,EAAS+Q,EAAS3B,EAAiB5jB,EAAOyK,EAAG8Z,GAQ9E,IAAIiB,EAAMd,GAAkBh1B,EAAI8kB,EAASoP,EAAiBW,GACtDI,EAAQa,EAAIb,MACZnrB,EAAMgsB,EAAIhsB,IACV,KAAKjH,KAAKiiB,EAAQ5R,KAAKhR,OAAO4H,EAAM,KAAOA,IAE/C,IADA,IAAIme,EAAO,KAAM8N,EAAc,KACtBh1B,EAAI,EAAGA,EAAIuP,EAAMtP,OAAQD,IAAK,CACrC,IAAIgkB,EAAIzU,EAAMvP,GACd,KAAIgkB,EAAEjV,MAAQhG,GAAOib,EAAEhV,IAAMklB,GAA7B,CACA,IACIe,EAAO7G,GAAoBnvB,EAAIk0B,EADd,GAAXnP,EAAE/T,MAC8C9C,KAAKC,IAAIrE,EAAKib,EAAEhV,IAAM,EAAI7B,KAAKiN,IAAI8Z,EAAOlQ,EAAEjV,OAAO3M,MAGzG8yB,EAAOD,EAAOjb,EAAIA,EAAIib,EAAO,IAAMA,EAAOjb,IACzCkN,GAAQ8N,EAAcE,KACzBhO,EAAOlD,EACPgR,EAAcE,EAR+B,CAUjD,CAKA,OAJKhO,IAAQA,EAAO3X,EAAMA,EAAMtP,OAAS,IAErCinB,EAAKnY,KAAOmlB,IAAShN,EAAO,CAACnY,KAAMmlB,EAAOllB,GAAIkY,EAAKlY,GAAIiB,MAAOiX,EAAKjX,QACnEiX,EAAKlY,GAAKjG,IAAOme,EAAO,CAACnY,KAAMmY,EAAKnY,KAAMC,GAAIjG,EAAKkH,MAAOiX,EAAKjX,QAC5DiX,CACT,CAIA,SAASiO,GAAWxrB,GAClB,GAAgC,MAA5BA,EAAQioB,iBAA4B,OAAOjoB,EAAQioB,iBACvD,GAAmB,MAAfR,GAAqB,CACvBA,GAAcjqB,EAAI,MAAO,KAAM,wBAG/B,IAAK,IAAInH,EAAI,EAAGA,EAAI,KAAMA,EACxBoxB,GAAYlqB,YAAYxC,SAAS+C,eAAe,MAChD2pB,GAAYlqB,YAAYC,EAAI,OAE9BiqB,GAAYlqB,YAAYxC,SAAS+C,eAAe,KAClD,CACAT,EAAqB2C,EAAQmL,QAASsc,IACtC,IAAIpY,EAASoY,GAAYrc,aAAe,GAGxC,OAFIiE,EAAS,IAAKrP,EAAQioB,iBAAmB5Y,GAC7CtS,EAAeiD,EAAQmL,SAChBkE,GAAU,CACnB,CAGA,SAAS2X,GAAUhnB,GACjB,GAA+B,MAA3BA,EAAQgoB,gBAA2B,OAAOhoB,EAAQgoB,gBACtD,IAAItuB,EAAS8D,EAAI,OAAQ,cACrB+d,EAAM/d,EAAI,MAAO,CAAC9D,GAAS,wBAC/B2D,EAAqB2C,EAAQmL,QAASoQ,GACtC,IAAI0J,EAAOvrB,EAAO+R,wBAAyB2W,GAAS6C,EAAKxsB,MAAQwsB,EAAKzsB,MAAQ,GAE9E,OADI4pB,EAAQ,IAAKpiB,EAAQgoB,gBAAkB5F,GACpCA,GAAS,EAClB,CAIA,SAASyC,GAAcvvB,GAGrB,IAFA,IAAImlB,EAAInlB,EAAG0K,QAASxH,EAAO,CAAC,EAAG4pB,EAAQ,CAAC,EACpCjB,EAAa1G,EAAEmI,QAAQ6I,WAClB9pB,EAAI8Y,EAAEmI,QAAQxlB,WAAY/G,EAAI,EAAGsL,EAAGA,EAAIA,EAAE8f,cAAeprB,EAAG,CACnE,IAAI8L,EAAK7M,EAAG0K,QAAQqhB,YAAYhrB,GAAGuG,UACnCpE,EAAK2J,GAAMR,EAAE+pB,WAAa/pB,EAAE8pB,WAAatK,EACzCiB,EAAMjgB,GAAMR,EAAEkhB,WAChB,CACA,MAAO,CAAClC,SAAUgL,GAAqBlR,GAC/BmG,iBAAkBnG,EAAEmI,QAAQvX,YAC5B8V,WAAY3oB,EACZ8oB,YAAac,EACbC,aAAc5H,EAAExa,QAAQ4iB,YAClC,CAKA,SAAS8I,GAAqB3rB,GAC5B,OAAOA,EAAQikB,SAASxY,wBAAwBjT,KAAOwH,EAAQgjB,MAAMvX,wBAAwBjT,IAC/F,CAKA,SAASsiB,GAAexlB,GACtB,IAAIs2B,EAAKJ,GAAWl2B,EAAG0K,SAAUqlB,EAAW/vB,EAAG4X,QAAQoY,aACnDuG,EAAUxG,GAAY7hB,KAAKiN,IAAI,EAAGnb,EAAG0K,QAAQikB,SAASpB,YAAcmE,GAAU1xB,EAAG0K,SAAW,GAChG,OAAO,SAAUlJ,GACf,GAAIkjB,GAAa1kB,EAAGmJ,IAAK3H,GAAS,OAAO,EAEzC,IAAIg1B,EAAgB,EACpB,GAAIh1B,EAAKgrB,QAAW,IAAK,IAAIzrB,EAAI,EAAGA,EAAIS,EAAKgrB,QAAQxrB,OAAQD,IACvDS,EAAKgrB,QAAQzrB,GAAGgZ,SAAUyc,GAAiBh1B,EAAKgrB,QAAQzrB,GAAGgZ,QAGjE,OAAIgW,EACOyG,GAAiBtoB,KAAKgC,KAAK1O,EAAK0R,KAAKlS,OAASu1B,IAAY,GAAKD,EAE/DE,EAAgBF,CAC7B,CACF,CAEA,SAASG,GAAoBz2B,GAC3B,IAAImJ,EAAMnJ,EAAGmJ,IAAKutB,EAAMlR,GAAexlB,GACvCmJ,EAAIyQ,MAAK,SAAUpY,GACjB,IAAIm1B,EAAYD,EAAIl1B,GAChBm1B,GAAan1B,EAAKuY,QAAUD,GAAiBtY,EAAMm1B,EACzD,GACF,CAOA,SAASC,GAAa52B,EAAI0H,EAAGmvB,EAASC,GACpC,IAAIpsB,EAAU1K,EAAG0K,QACjB,IAAKmsB,GAAyD,QAA9C3hB,GAASxN,GAAG+lB,aAAa,kBAA+B,OAAO,KAE/E,IAAI1S,EAAG8Z,EAAGkC,EAAQrsB,EAAQmjB,UAAU1X,wBAEpC,IAAM4E,EAAIrT,EAAEsvB,QAAUD,EAAM7zB,KAAM2xB,EAAIntB,EAAEuvB,QAAUF,EAAMxG,GAAK,CAC7D,MAAO2G,GAAO,OAAO,IAAK,CAC1B,IAAmC11B,EAA/BqyB,EAASe,GAAW50B,EAAI+a,EAAG8Z,GAC/B,GAAIiC,GAAWjD,EAAOc,KAAO,IAAMnzB,EAAO0X,GAAQlZ,EAAGmJ,IAAK0qB,EAAOryB,MAAM0R,MAAMlS,QAAU6yB,EAAOpyB,GAAI,CAChG,IAAI01B,EAAUprB,EAAYvK,EAAMA,EAAKR,OAAQhB,EAAG4X,QAAQ3L,SAAWzK,EAAKR,OACxE6yB,EAASl0B,GAAIk0B,EAAOryB,KAAM0M,KAAKiN,IAAI,EAAGjN,KAAKkpB,OAAOrc,EAAIiT,GAAShuB,EAAG0K,SAASxH,MAAQwuB,GAAU1xB,EAAG0K,UAAYysB,GAC9G,CACA,OAAOtD,CACT,CAIA,SAASvE,GAActvB,EAAIqM,GACzB,GAAIA,GAAKrM,EAAG0K,QAAQ+U,OAAU,OAAO,KAErC,IADApT,GAAKrM,EAAG0K,QAAQ8U,UACR,EAAK,OAAO,KAEpB,IADA,IAAI+J,EAAOvpB,EAAG0K,QAAQ6e,KACbxoB,EAAI,EAAGA,EAAIwoB,EAAKvoB,OAAQD,IAE/B,IADAsL,GAAKkd,EAAKxoB,GAAGqY,MACL,EAAK,OAAOrY,CAExB,CAQA,SAASs2B,GAAUr3B,EAAI8P,EAAMC,EAAIunB,GACnB,MAARxnB,IAAgBA,EAAO9P,EAAGmJ,IAAIgQ,OACxB,MAANpJ,IAAcA,EAAK/P,EAAGmJ,IAAIgQ,MAAQnZ,EAAGmJ,IAAIiQ,MACxCke,IAAWA,EAAU,GAE1B,IAAI5sB,EAAU1K,EAAG0K,QAOjB,GANI4sB,GAAWvnB,EAAKrF,EAAQ+U,SACM,MAA7B/U,EAAQ6sB,mBAA6B7sB,EAAQ6sB,kBAAoBznB,KAClEpF,EAAQ6sB,kBAAoBznB,GAEhC9P,EAAGuU,MAAMijB,aAAc,EAEnB1nB,GAAQpF,EAAQ+U,OACdqB,IAAqBuD,GAAarkB,EAAGmJ,IAAK2G,GAAQpF,EAAQ+U,QAC1DgY,GAAUz3B,QACT,GAAI+P,GAAMrF,EAAQ8U,SACnBsB,IAAqB0D,GAAgBxkB,EAAGmJ,IAAK4G,EAAKunB,GAAW5sB,EAAQ8U,SACvEiY,GAAUz3B,IAEV0K,EAAQ8U,UAAY8X,EACpB5sB,EAAQ+U,QAAU6X,QAEf,GAAIxnB,GAAQpF,EAAQ8U,UAAYzP,GAAMrF,EAAQ+U,OACnDgY,GAAUz3B,QACL,GAAI8P,GAAQpF,EAAQ8U,SAAU,CACnC,IAAIkY,EAAMC,GAAiB33B,EAAI+P,EAAIA,EAAKunB,EAAS,GAC7CI,GACFhtB,EAAQ6e,KAAO7e,EAAQ6e,KAAKhmB,MAAMm0B,EAAIlwB,OACtCkD,EAAQ8U,SAAWkY,EAAIpT,MACvB5Z,EAAQ+U,QAAU6X,GAElBG,GAAUz3B,EAEd,MAAO,GAAI+P,GAAMrF,EAAQ+U,OAAQ,CAC/B,IAAImY,EAAQD,GAAiB33B,EAAI8P,EAAMA,GAAO,GAC1C8nB,GACFltB,EAAQ6e,KAAO7e,EAAQ6e,KAAKhmB,MAAM,EAAGq0B,EAAMpwB,OAC3CkD,EAAQ+U,OAASmY,EAAMtT,OAEvBmT,GAAUz3B,EAEd,KAAO,CACL,IAAI63B,EAASF,GAAiB33B,EAAI8P,EAAMA,GAAO,GAC3CgoB,EAASH,GAAiB33B,EAAI+P,EAAIA,EAAKunB,EAAS,GAChDO,GAAUC,GACZptB,EAAQ6e,KAAO7e,EAAQ6e,KAAKhmB,MAAM,EAAGs0B,EAAOrwB,OACzCiM,OAAO4V,GAAerpB,EAAI63B,EAAOvT,MAAOwT,EAAOxT,QAC/C7Q,OAAO/I,EAAQ6e,KAAKhmB,MAAMu0B,EAAOtwB,QACpCkD,EAAQ+U,QAAU6X,GAElBG,GAAUz3B,EAEd,CAEA,IAAI0qB,EAAMhgB,EAAQ+b,iBACdiE,IACE3a,EAAK2a,EAAIpG,MACToG,EAAIpG,OAASgT,EACRxnB,EAAO4a,EAAIpG,MAAQoG,EAAItR,OAC5B1O,EAAQ+b,iBAAmB,MAEnC,CAIA,SAASsR,GAAc/3B,EAAIwB,EAAMc,GAC/BtC,EAAGuU,MAAMijB,aAAc,EACvB,IAAI9sB,EAAU1K,EAAG0K,QAASggB,EAAM1qB,EAAG0K,QAAQ+b,iBAI3C,GAHIiE,GAAOlpB,GAAQkpB,EAAIpG,OAAS9iB,EAAOkpB,EAAIpG,MAAQoG,EAAItR,OACnD1O,EAAQ+b,iBAAmB,QAE3BjlB,EAAOkJ,EAAQ8U,UAAYhe,GAAQkJ,EAAQ+U,QAA/C,CACA,IAAIsG,EAAWrb,EAAQ6e,KAAK+F,GAActvB,EAAIwB,IAC9C,GAAqB,MAAjBukB,EAAS3e,KAAb,CACA,IAAImH,EAAMwX,EAASkE,UAAYlE,EAASkE,QAAU,KACvB,GAAvB5oB,EAAQkN,EAAKjM,IAAeiM,EAAIpK,KAAK7B,EAFL,CAF4B,CAKlE,CAGA,SAASm1B,GAAUz3B,GACjBA,EAAG0K,QAAQ8U,SAAWxf,EAAG0K,QAAQ+U,OAASzf,EAAGmJ,IAAIgQ,MACjDnZ,EAAG0K,QAAQ6e,KAAO,GAClBvpB,EAAG0K,QAAQ+oB,WAAa,CAC1B,CAEA,SAASkE,GAAiB33B,EAAIg4B,EAAMC,EAAMj0B,GACxC,IAAqCgW,EAAjCxS,EAAQ8nB,GAActvB,EAAIg4B,GAAazO,EAAOvpB,EAAG0K,QAAQ6e,KAC7D,IAAKzI,IAAqBmX,GAAQj4B,EAAGmJ,IAAIgQ,MAAQnZ,EAAGmJ,IAAIiQ,KACpD,MAAO,CAAC5R,MAAOA,EAAO8c,MAAO2T,GAEjC,IADA,IAAI5rB,EAAIrM,EAAG0K,QAAQ8U,SACVze,EAAI,EAAGA,EAAIyG,EAAOzG,IACvBsL,GAAKkd,EAAKxoB,GAAGqY,KACjB,GAAI/M,GAAK2rB,EAAM,CACb,GAAIh0B,EAAM,EAAG,CACX,GAAIwD,GAAS+hB,EAAKvoB,OAAS,EAAK,OAAO,KACvCgZ,EAAQ3N,EAAIkd,EAAK/hB,GAAO4R,KAAQ4e,EAChCxwB,GACF,MACEwS,EAAO3N,EAAI2rB,EAEbA,GAAQhe,EAAMie,GAAQje,CACxB,CACA,KAAOqK,GAAarkB,EAAGmJ,IAAK8uB,IAASA,GAAM,CACzC,GAAIzwB,IAAUxD,EAAM,EAAI,EAAIulB,EAAKvoB,OAAS,GAAM,OAAO,KACvDi3B,GAAQj0B,EAAMulB,EAAK/hB,GAASxD,EAAM,EAAI,EAAI,IAAIoV,KAC9C5R,GAASxD,CACX,CACA,MAAO,CAACwD,MAAOA,EAAO8c,MAAO2T,EAC/B,CAyBA,SAASC,GAAel4B,GAEtB,IADA,IAAIupB,EAAOvpB,EAAG0K,QAAQ6e,KAAM4O,EAAQ,EAC3Bp3B,EAAI,EAAGA,EAAIwoB,EAAKvoB,OAAQD,IAAK,CACpC,IAAIglB,EAAWwD,EAAKxoB,GACfglB,EAASqD,QAAYrD,EAAS3e,OAAQ2e,EAASkE,WAAckO,CACpE,CACA,OAAOA,CACT,CAEA,SAASC,GAAgBp4B,GACvBA,EAAG0K,QAAQ2d,MAAMgQ,cAAcr4B,EAAG0K,QAAQ2d,MAAMiQ,mBAClD,CAEA,SAASA,GAAiBt4B,EAAIkE,QACX,IAAZA,IAAqBA,GAAU,GAEpC,IAAIiF,EAAMnJ,EAAGmJ,IAAKmN,EAAS,CAAC,EACxBiiB,EAAcjiB,EAAOkiB,QAAU/yB,SAASiiB,yBACxC+Q,EAAcniB,EAAOQ,UAAYrR,SAASiiB,yBAE1CgR,EAAe14B,EAAG4X,QAAQ+gB,cAC1BD,IAAgBx0B,GAAU,GAC9B,IAAK,IAAInD,EAAI,EAAGA,EAAIoI,EAAI9E,IAAIxD,OAAOG,OAAQD,IACzC,GAAKmD,GAAWnD,GAAKoI,EAAI9E,IAAIu0B,UAA7B,CACA,IAAIl2B,EAAQyG,EAAI9E,IAAIxD,OAAOE,GAC3B,KAAI2B,EAAMoN,OAAOtO,MAAQxB,EAAG0K,QAAQ+U,QAAU/c,EAAMqN,KAAKvO,KAAOxB,EAAG0K,QAAQ8U,UAA3E,CACA,IAAIqE,EAAYnhB,EAAMzB,QACtB,GAAIy3B,EAAc,CAChB,IAAIt3B,EAAOs3B,EAAa14B,EAAI0C,GACxBtB,GAAQy3B,GAAoB74B,EAAIoB,EAAMm3B,EAC5C,MAAW1U,GAAa7jB,EAAG4X,QAAQkhB,0BACjCD,GAAoB74B,EAAI0C,EAAMtB,KAAMm3B,GAEjC1U,GACDkV,GAAmB/4B,EAAI0C,EAAO+1B,EAT8D,CAF7C,CAarD,OAAOniB,CACT,CAGA,SAASuiB,GAAoB74B,EAAIoB,EAAMkf,GACrC,IAAIje,EAAM4xB,GAAaj0B,EAAIoB,EAAM,MAAO,KAAM,MAAOpB,EAAG4X,QAAQoa,2BAE5DgH,EAAS1Y,EAAOrY,YAAYC,EAAI,MAAO,IAAU,sBAKrD,GAJA8wB,EAAO3wB,MAAMnF,KAAOb,EAAIa,KAAO,KAC/B81B,EAAO3wB,MAAMkoB,IAAMluB,EAAIkuB,IAAM,KAC7ByI,EAAO3wB,MAAM0R,OAAS7L,KAAKiN,IAAI,EAAG9Y,EAAIiuB,OAASjuB,EAAIkuB,KAAOvwB,EAAG4X,QAAQqhB,aAAe,KAEhF,oBAAoBp2B,KAAK7C,EAAGk5B,oBAAoB5xB,WAAY,CAC9D,IAAI6xB,EAAUnF,GAAWh0B,EAAIoB,EAAM,MAAO,KAAM,MAC5C0rB,EAAQqM,EAAQh2B,MAAQg2B,EAAQj2B,KACpC81B,EAAO3wB,MAAMykB,OAASA,EAAQ,EAAIA,EAAQ9sB,EAAGo5B,oBAAsB,IACrE,CAEA,GAAI/2B,EAAIkyB,MAAO,CAEb,IAAI8E,EAAc/Y,EAAOrY,YAAYC,EAAI,MAAO,IAAU,iDAC1DmxB,EAAYhxB,MAAMqC,QAAU,GAC5B2uB,EAAYhxB,MAAMnF,KAAOb,EAAIkyB,MAAMrxB,KAAO,KAC1Cm2B,EAAYhxB,MAAMkoB,IAAMluB,EAAIkyB,MAAMhE,IAAM,KACxC8I,EAAYhxB,MAAM0R,OAA8C,KAApC1X,EAAIkyB,MAAMjE,OAASjuB,EAAIkyB,MAAMhE,KAAa,IACxE,CACF,CAEA,SAAS+I,GAAU7vB,EAAGC,GAAK,OAAOD,EAAE8mB,IAAM7mB,EAAE6mB,KAAO9mB,EAAEvG,KAAOwG,EAAExG,IAAK,CAGnE,SAAS61B,GAAmB/4B,EAAI0C,EAAO4d,GACrC,IAAI5V,EAAU1K,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IAC/BowB,EAAW9zB,SAASiiB,yBACpB8R,EAAUxL,GAAShuB,EAAG0K,SAAU+uB,EAAWD,EAAQt2B,KACnDw2B,EAAYxrB,KAAKiN,IAAIzQ,EAAQivB,WAAYjL,GAAa1uB,GAAM0K,EAAQgjB,MAAM0I,YAAcoD,EAAQr2B,MAChGy2B,EAA0B,OAAjBzwB,EAAI8H,UAEjB,SAAS4oB,EAAI32B,EAAMqtB,EAAKzD,EAAOwD,GACzBC,EAAM,IAAKA,EAAM,GACrBA,EAAMriB,KAAKkpB,MAAM7G,GACjBD,EAASpiB,KAAKkpB,MAAM9G,GACpBiJ,EAAStxB,YAAYC,EAAI,MAAO,KAAM,sBAAwB,6BAA+BhF,EAAO,0CAA4CqtB,EAAM,eAA0B,MAATzD,EAAgB4M,EAAYx2B,EAAO4pB,GAAS,8CAAgDwD,EAASC,GAAO,MACrR,CAEA,SAASuJ,EAAYt4B,EAAMu4B,EAASC,GAClC,IAEIr1B,EAAOmF,EAFPgb,EAAU5L,GAAQ/P,EAAK3H,GACvBy4B,EAAUnV,EAAQ5R,KAAKlS,OAE3B,SAAS6yB,EAAOpyB,EAAIytB,GAClB,OAAO8E,GAAWh0B,EAAIL,GAAI6B,EAAMC,GAAK,MAAOqjB,EAASoK,EACvD,CAEA,SAASgL,EAAM73B,EAAK2B,EAAKm2B,GACvB,IAAIC,EAASlF,GAAsBl1B,EAAI8kB,EAAS,KAAMziB,GAClDwJ,EAAe,OAAP7H,IAA0B,SAARm2B,GAAmB,OAAS,QAE1D,OAAOtG,EADU,SAARsG,EAAkBC,EAAOnF,MAAQmF,EAAOtwB,KAAO,KAAKjH,KAAKiiB,EAAQ5R,KAAKhR,OAAOk4B,EAAOtwB,IAAM,IAAM,EAAI,GAC3F+B,GAAMA,EAC1B,CAEA,IAAIyE,EAAQ2C,GAAS6R,EAAS3b,EAAI8H,WAqClC,OA34FJ,SAA6BX,EAAOR,EAAMC,EAAI7E,GAC5C,IAAKoF,EAAS,OAAOpF,EAAE4E,EAAMC,EAAI,MAAO,GAExC,IADA,IAAIS,GAAQ,EACHzP,EAAI,EAAGA,EAAIuP,EAAMtP,SAAUD,EAAG,CACrC,IAAIknB,EAAO3X,EAAMvP,IACbknB,EAAKnY,KAAOC,GAAMkY,EAAKlY,GAAKD,GAAQA,GAAQC,GAAMkY,EAAKlY,IAAMD,KAC/D5E,EAAEgD,KAAKiN,IAAI8M,EAAKnY,KAAMA,GAAO5B,KAAKC,IAAI8Z,EAAKlY,GAAIA,GAAmB,GAAdkY,EAAKjX,MAAa,MAAQ,MAAOjQ,GACrFyP,GAAQ,EAEZ,CACKA,GAAStF,EAAE4E,EAAMC,EAAI,MAC5B,CA41FIsqB,CAAoB/pB,EAAOypB,GAAW,EAAY,MAATC,EAAgBC,EAAUD,GAAO,SAAUlqB,EAAMC,EAAI/L,EAAKjD,GACjG,IAAIs0B,EAAa,OAAPrxB,EACNs2B,EAAUzG,EAAO/jB,EAAMulB,EAAM,OAAS,SACtCkF,EAAQ1G,EAAO9jB,EAAK,EAAGslB,EAAM,QAAU,QAEvCmF,EAAuB,MAAXT,GAA2B,GAARjqB,EAAW2qB,EAAmB,MAATT,GAAiBjqB,GAAMkqB,EAC3E9gB,EAAa,GAALpY,EAAQsa,GAAQ/K,GAASvP,GAAKuP,EAAMtP,OAAS,EACzD,GAAIu5B,EAAMhK,IAAM+J,EAAQ/J,KAAO,EAAG,CAChC,IACImK,GAAad,EAASa,EAAUD,IAAcnf,EAC9CnY,GAFY02B,EAASY,EAAYC,IAAYthB,EAE3BsgB,GAAYpE,EAAMiF,EAAUC,GAAOr3B,KACrDC,EAAQu3B,EAAYhB,GAAarE,EAAMkF,EAAQD,GAASn3B,MAC5D02B,EAAI32B,EAAMo3B,EAAQ/J,IAAKptB,EAAQD,EAAMo3B,EAAQhK,OAC/C,KAAO,CACL,IAAIqK,EAASC,EAAUC,EAASC,EAC5BzF,GACFsF,EAAUf,GAAUY,GAAarhB,EAAQsgB,EAAWa,EAAQp3B,KAC5D03B,EAAWhB,EAASF,EAAYQ,EAAMpqB,EAAM9L,EAAK,UACjD62B,EAAUjB,EAASH,EAAWS,EAAMnqB,EAAI/L,EAAK,SAC7C82B,EAAWlB,GAAUa,GAAWpf,EAAOqe,EAAYa,EAAMp3B,QAEzDw3B,EAAWf,EAAoBM,EAAMpqB,EAAM9L,EAAK,UAA5By1B,EACpBmB,GAAYhB,GAAUY,GAAarhB,EAAQugB,EAAYY,EAAQn3B,MAC/D03B,GAAWjB,GAAUa,GAAWpf,EAAOoe,EAAWc,EAAMr3B,KACxD43B,EAAYlB,EAAqBM,EAAMnqB,EAAI/L,EAAK,SAA3B01B,GAEvBG,EAAIc,EAASL,EAAQ/J,IAAKqK,EAAWD,EAASL,EAAQhK,QAClDgK,EAAQhK,OAASiK,EAAMhK,KAAOsJ,EAAIJ,EAAUa,EAAQhK,OAAQ,KAAMiK,EAAMhK,KAC5EsJ,EAAIgB,EAASN,EAAMhK,IAAKuK,EAAWD,EAASN,EAAMjK,OACpD,GAEK3rB,GAAS20B,GAAUgB,EAAS31B,GAAS,KAAKA,EAAQ21B,GACnDhB,GAAUiB,EAAO51B,GAAS,IAAKA,EAAQ41B,KACtCzwB,GAAOwvB,GAAUgB,EAASxwB,GAAO,KAAKA,EAAMwwB,GAC7ChB,GAAUiB,EAAOzwB,GAAO,IAAKA,EAAMywB,EACzC,IACO,CAAC51B,MAAOA,EAAOmF,IAAKA,EAC7B,CAEA,IAAIixB,EAAQr4B,EAAMoN,OAAQkrB,EAAMt4B,EAAMqN,KACtC,GAAIgrB,EAAMv5B,MAAQw5B,EAAIx5B,KACpBs4B,EAAYiB,EAAMv5B,KAAMu5B,EAAMt5B,GAAIu5B,EAAIv5B,QACjC,CACL,IAAIw5B,EAAW/hB,GAAQ/P,EAAK4xB,EAAMv5B,MAAO05B,EAAShiB,GAAQ/P,EAAK6xB,EAAIx5B,MAC/D25B,EAAchX,GAAW8W,IAAa9W,GAAW+W,GACjDE,EAAUtB,EAAYiB,EAAMv5B,KAAMu5B,EAAMt5B,GAAI05B,EAAcF,EAAS/nB,KAAKlS,OAAS,EAAI,MAAM8I,IAC3FuxB,EAAavB,EAAYkB,EAAIx5B,KAAM25B,EAAc,EAAI,KAAMH,EAAIv5B,IAAIkD,MACnEw2B,IACEC,EAAQ7K,IAAM8K,EAAW9K,IAAM,GACjCsJ,EAAIuB,EAAQj4B,MAAOi4B,EAAQ7K,IAAK,KAAM6K,EAAQ9K,QAC9CuJ,EAAIJ,EAAU4B,EAAW9K,IAAK8K,EAAWn4B,KAAMm4B,EAAW/K,SAE1DuJ,EAAIuB,EAAQj4B,MAAOi4B,EAAQ7K,IAAK8K,EAAWn4B,KAAOk4B,EAAQj4B,MAAOi4B,EAAQ9K,SAGzE8K,EAAQ9K,OAAS+K,EAAW9K,KAC5BsJ,EAAIJ,EAAU2B,EAAQ9K,OAAQ,KAAM+K,EAAW9K,IACrD,CAEAjQ,EAAOrY,YAAYsxB,EACrB,CAGA,SAAS+B,GAAat7B,GACpB,GAAKA,EAAGM,MAAMi7B,QAAd,CACA,IAAI7wB,EAAU1K,EAAG0K,QACjB8wB,cAAc9wB,EAAQ+wB,SACtB,IAAIroB,GAAK,EACT1I,EAAQgxB,UAAUrzB,MAAMszB,WAAa,GACjC37B,EAAG4X,QAAQgkB,gBAAkB,EAC7BlxB,EAAQ+wB,QAAUI,aAAY,WACzB77B,EAAG87B,YAAcC,GAAO/7B,GAC7B0K,EAAQgxB,UAAUrzB,MAAMszB,YAAcvoB,GAAMA,GAAM,GAAK,QACzD,GAAGpT,EAAG4X,QAAQgkB,iBACP57B,EAAG4X,QAAQgkB,gBAAkB,IAClClxB,EAAQgxB,UAAUrzB,MAAMszB,WAAa,SAXT,CAYlC,CAEA,SAASK,GAAYh8B,GACdA,EAAG87B,aACN97B,EAAG0K,QAAQ2d,MAAM4T,QACZj8B,EAAGM,MAAMi7B,SAAWW,GAAQl8B,GAErC,CAEA,SAASm8B,GAAen8B,GACtBA,EAAGM,MAAM87B,mBAAoB,EAC7BjvB,YAAW,WAAkBnN,EAAGM,MAAM87B,oBACpCp8B,EAAGM,MAAM87B,mBAAoB,EACzBp8B,EAAGM,MAAMi7B,SAAWQ,GAAO/7B,GAC/B,GAAG,IACP,CAEA,SAASk8B,GAAQl8B,EAAI0H,GACf1H,EAAGM,MAAM87B,oBAAsBp8B,EAAGM,MAAM+7B,eAAgBr8B,EAAGM,MAAM87B,mBAAoB,GAE9D,YAAvBp8B,EAAG4X,QAAQ0kB,WACVt8B,EAAGM,MAAMi7B,UACZznB,GAAO9T,EAAI,QAASA,EAAI0H,GACxB1H,EAAGM,MAAMi7B,SAAU,EACnBhyB,EAASvJ,EAAG0K,QAAQC,QAAS,sBAIxB3K,EAAGuU,OAASvU,EAAG0K,QAAQ6xB,mBAAqBv8B,EAAGmJ,IAAI9E,MACtDrE,EAAG0K,QAAQ2d,MAAMmU,QACb72B,GAAUwH,YAAW,WAAc,OAAOnN,EAAG0K,QAAQ2d,MAAMmU,OAAM,EAAO,GAAG,KAEjFx8B,EAAG0K,QAAQ2d,MAAMoU,iBAEnBnB,GAAat7B,GACf,CACA,SAAS+7B,GAAO/7B,EAAI0H,GACd1H,EAAGM,MAAM87B,oBAETp8B,EAAGM,MAAMi7B,UACXznB,GAAO9T,EAAI,OAAQA,EAAI0H,GACvB1H,EAAGM,MAAMi7B,SAAU,EACnBp0B,EAAQnH,EAAG0K,QAAQC,QAAS,uBAE9B6wB,cAAcx7B,EAAG0K,QAAQ+wB,SACzBtuB,YAAW,WAAmBnN,EAAGM,MAAMi7B,UAAWv7B,EAAG0K,QAAQgyB,OAAQ,EAAS,GAAG,KACnF,CAIA,SAASC,GAAwB38B,GAM/B,IALA,IAAI0K,EAAU1K,EAAG0K,QACbkyB,EAAalyB,EAAQmyB,QAAQ/O,UAC7BgP,EAAU5uB,KAAKiN,IAAI,EAAGzQ,EAAQikB,SAASxY,wBAAwBoa,KAC/DwM,EAAYryB,EAAQmyB,QAAQ1mB,wBAAwBoa,IACpDyM,EAAa,EACRj8B,EAAI,EAAGA,EAAI2J,EAAQ6e,KAAKvoB,OAAQD,IAAK,CAC5C,IAAIO,EAAMoJ,EAAQ6e,KAAKxoB,GAAIgvB,EAAW/vB,EAAG4X,QAAQoY,aAC7CjW,OAAS,EAAU+S,EAAQ,EAC/B,IAAIxrB,EAAI8nB,OAAR,CAEA,GADA2T,GAAaz7B,EAAIE,KAAKuY,OAClBxU,GAAMC,EAAa,EAAG,CACxB,IAAIssB,EAAMxwB,EAAI8F,KAAK0mB,UAAYxsB,EAAI8F,KAAK0O,aACxCiE,EAAS+X,EAAM8K,EACfA,EAAa9K,CACf,KAAO,CACL,IAAIsD,EAAM9zB,EAAI8F,KAAK+O,wBACnB4D,EAASqb,EAAI9E,OAAS8E,EAAI7E,KAGrBR,GAAYzuB,EAAI4R,KAAKpL,aACtBglB,EAAQxrB,EAAI4R,KAAKpL,WAAWqO,wBAAwBhT,MAAQiyB,EAAIlyB,KAAO,EAC7E,CACA,IAAI8W,EAAO1Y,EAAIE,KAAKuY,OAASA,EAC7B,IAAIC,EAAO,MAAQA,GAAQ,QACrB+iB,EAAYD,IAAWE,GAAchjB,GACzCF,GAAiBxY,EAAIE,KAAMuY,GAC3BkjB,GAAmB37B,EAAIE,MACnBF,EAAI8kB,MAAQ,IAAK,IAAIrU,EAAI,EAAGA,EAAIzQ,EAAI8kB,KAAKplB,OAAQ+Q,IACjDkrB,GAAmB37B,EAAI8kB,KAAKrU,IAElC,GAAI+a,EAAQ9sB,EAAG0K,QAAQivB,WAAY,CACjC,IAAIuD,EAAUhvB,KAAKgC,KAAK4c,EAAQ4E,GAAU1xB,EAAG0K,UACzCwyB,EAAUl9B,EAAG0K,QAAQ2a,gBACvBrlB,EAAG0K,QAAQ2a,cAAgB6X,EAC3Bl9B,EAAG0K,QAAQ0a,QAAU9jB,EAAIE,KACzBxB,EAAG0K,QAAQ4a,gBAAiB,EAEhC,CA7B2B,CA8B7B,CACIpX,KAAKmiB,IAAI2M,GAAc,IAAKtyB,EAAQikB,SAASyE,WAAa4J,EAChE,CAIA,SAASC,GAAmBz7B,GAC1B,GAAIA,EAAKgrB,QAAW,IAAK,IAAIzrB,EAAI,EAAGA,EAAIS,EAAKgrB,QAAQxrB,SAAUD,EAAG,CAChE,IAAIo8B,EAAI37B,EAAKgrB,QAAQzrB,GAAIiH,EAASm1B,EAAE/1B,KAAK0B,WACrCd,IAAUm1B,EAAEpjB,OAAS/R,EAAO8N,aAClC,CACF,CAKA,SAASsnB,GAAa1yB,EAASvB,EAAKk0B,GAClC,IAAI9M,EAAM8M,GAA4B,MAAhBA,EAAS9M,IAAcriB,KAAKiN,IAAI,EAAGkiB,EAAS9M,KAAO7lB,EAAQikB,SAASyE,UAC1F7C,EAAMriB,KAAKiC,MAAMogB,EAAM3C,GAAWljB,IAClC,IAAI4lB,EAAS+M,GAA+B,MAAnBA,EAAS/M,OAAiB+M,EAAS/M,OAASC,EAAM7lB,EAAQC,QAAQmkB,aAEvFhf,EAAOqK,GAAahR,EAAKonB,GAAMxgB,EAAKoK,GAAahR,EAAKmnB,GAG1D,GAAI+M,GAAYA,EAASC,OAAQ,CAC/B,IAAIC,EAAaF,EAASC,OAAOxtB,KAAKtO,KAAMg8B,EAAWH,EAASC,OAAOvtB,GAAGvO,KACtE+7B,EAAaztB,GACfA,EAAOytB,EACPxtB,EAAKoK,GAAahR,EAAK0b,GAAa3L,GAAQ/P,EAAKo0B,IAAe7yB,EAAQC,QAAQmkB,eACvE5gB,KAAKC,IAAIqvB,EAAUr0B,EAAIsb,aAAe1U,IAC/CD,EAAOqK,GAAahR,EAAK0b,GAAa3L,GAAQ/P,EAAKq0B,IAAa9yB,EAAQC,QAAQmkB,cAChF/e,EAAKytB,EAET,CACA,MAAO,CAAC1tB,KAAMA,EAAMC,GAAI7B,KAAKiN,IAAIpL,EAAID,EAAO,GAC9C,CAoEA,SAAS2tB,GAAmBz9B,EAAI2vB,GAC9B,IAAIjlB,EAAU1K,EAAG0K,QAASgzB,EAAaxH,GAAWl2B,EAAG0K,SACjDilB,EAAKY,IAAM,IAAKZ,EAAKY,IAAM,GAC/B,IAAIoN,EAAY39B,EAAGuU,OAA+B,MAAtBvU,EAAGuU,MAAM6e,UAAoBpzB,EAAGuU,MAAM6e,UAAY1oB,EAAQikB,SAASyE,UAC3FtC,EAASjC,GAAc7uB,GAAKsW,EAAS,CAAC,EACtCqZ,EAAKW,OAASX,EAAKY,IAAMO,IAAUnB,EAAKW,OAASX,EAAKY,IAAMO,GAChE,IAAI8M,EAAY59B,EAAGmJ,IAAI4Q,OAASgU,GAAYrjB,GACxCmzB,EAAQlO,EAAKY,IAAMmN,EAAYI,EAAWnO,EAAKW,OAASsN,EAAYF,EACxE,GAAI/N,EAAKY,IAAMoN,EACbrnB,EAAO8c,UAAYyK,EAAQ,EAAIlO,EAAKY,SAC/B,GAAIZ,EAAKW,OAASqN,EAAY7M,EAAQ,CAC3C,IAAIiN,EAAS7vB,KAAKC,IAAIwhB,EAAKY,KAAMuN,EAAWF,EAAYjO,EAAKW,QAAUQ,GACnEiN,GAAUJ,IAAarnB,EAAO8c,UAAY2K,EAChD,CAEA,IAAIC,EAAch+B,EAAG4X,QAAQwT,YAAc,EAAI1gB,EAAQ4iB,QAAQvX,YAC3DkoB,EAAaj+B,EAAGuU,OAAgC,MAAvBvU,EAAGuU,MAAMye,WAAqBhzB,EAAGuU,MAAMye,WAAatoB,EAAQikB,SAASqE,WAAagL,EAC3GE,EAAUxP,GAAa1uB,GAAM0K,EAAQ4iB,QAAQvX,YAC7CooB,EAAUxO,EAAKxsB,MAAQwsB,EAAKzsB,KAAOg7B,EAQvC,OAPIC,IAAWxO,EAAKxsB,MAAQwsB,EAAKzsB,KAAOg7B,GACpCvO,EAAKzsB,KAAO,GACZoT,EAAO0c,WAAa,EACfrD,EAAKzsB,KAAO+6B,EACjB3nB,EAAO0c,WAAa9kB,KAAKiN,IAAI,EAAGwU,EAAKzsB,KAAO86B,GAAeG,EAAU,EAAI,KACpExO,EAAKxsB,MAAQ+6B,EAAUD,EAAa,IACzC3nB,EAAO0c,WAAarD,EAAKxsB,OAASg7B,EAAU,EAAI,IAAMD,GACnD5nB,CACT,CAIA,SAAS8nB,GAAep+B,EAAIuwB,GACf,MAAPA,IACJ8N,GAAmBr+B,GACnBA,EAAGuU,MAAM6e,WAAmC,MAAtBpzB,EAAGuU,MAAM6e,UAAoBpzB,EAAGmJ,IAAIiqB,UAAYpzB,EAAGuU,MAAM6e,WAAa7C,EAC9F,CAIA,SAAS+N,GAAoBt+B,GAC3Bq+B,GAAmBr+B,GACnB,IAAIsB,EAAMtB,EAAG+D,YACb/D,EAAGuU,MAAMgqB,YAAc,CAACzuB,KAAMxO,EAAKyO,GAAIzO,EAAKk9B,OAAQx+B,EAAG4X,QAAQ6mB,mBACjE,CAEA,SAASC,GAAe1+B,EAAI+a,EAAG8Z,GACpB,MAAL9Z,GAAkB,MAAL8Z,GAAawJ,GAAmBr+B,GACxC,MAAL+a,IAAa/a,EAAGuU,MAAMye,WAAajY,GAC9B,MAAL8Z,IAAa70B,EAAGuU,MAAM6e,UAAYyB,EACxC,CAWA,SAASwJ,GAAmBr+B,GAC1B,IAAI0C,EAAQ1C,EAAGuU,MAAMgqB,YACjB77B,IACF1C,EAAGuU,MAAMgqB,YAAc,KAEvBI,GAAoB3+B,EADTw0B,GAAex0B,EAAI0C,EAAMoN,MAAY0kB,GAAex0B,EAAI0C,EAAMqN,IACvCrN,EAAM87B,QAE5C,CAEA,SAASG,GAAoB3+B,EAAI8P,EAAMC,EAAIyuB,GACzC,IAAII,EAAOnB,GAAmBz9B,EAAI,CAChCkD,KAAMgL,KAAKC,IAAI2B,EAAK5M,KAAM6M,EAAG7M,MAC7BqtB,IAAKriB,KAAKC,IAAI2B,EAAKygB,IAAKxgB,EAAGwgB,KAAOiO,EAClCr7B,MAAO+K,KAAKiN,IAAIrL,EAAK3M,MAAO4M,EAAG5M,OAC/BmtB,OAAQpiB,KAAKiN,IAAIrL,EAAKwgB,OAAQvgB,EAAGugB,QAAUkO,IAE7CE,GAAe1+B,EAAI4+B,EAAK5L,WAAY4L,EAAKxL,UAC3C,CAIA,SAASyL,GAAgB7+B,EAAIC,GACvBiO,KAAKmiB,IAAIrwB,EAAGmJ,IAAIiqB,UAAYnzB,GAAO,IAClCiF,GAAS45B,GAAoB9+B,EAAI,CAACuwB,IAAKtwB,IAC5C8+B,GAAa/+B,EAAIC,GAAK,GAClBiF,GAAS45B,GAAoB9+B,GACjCg/B,GAAYh/B,EAAI,KAClB,CAEA,SAAS++B,GAAa/+B,EAAIC,EAAKg/B,GAC7Bh/B,EAAMiO,KAAKiN,IAAI,EAAGjN,KAAKC,IAAInO,EAAG0K,QAAQikB,SAASuQ,aAAel/B,EAAG0K,QAAQikB,SAASG,aAAc7uB,KAC5FD,EAAG0K,QAAQikB,SAASyE,WAAanzB,GAAQg/B,KAC7Cj/B,EAAGmJ,IAAIiqB,UAAYnzB,EACnBD,EAAG0K,QAAQy0B,WAAWJ,aAAa9+B,GAC/BD,EAAG0K,QAAQikB,SAASyE,WAAanzB,IAAOD,EAAG0K,QAAQikB,SAASyE,UAAYnzB,GAC9E,CAIA,SAASm/B,GAAcp/B,EAAIC,EAAKo/B,EAAYJ,GAC1Ch/B,EAAMiO,KAAKiN,IAAI,EAAGjN,KAAKC,IAAIlO,EAAKD,EAAG0K,QAAQikB,SAAS2Q,YAAct/B,EAAG0K,QAAQikB,SAASpB,eACjF8R,EAAap/B,GAAOD,EAAGmJ,IAAI6pB,WAAa9kB,KAAKmiB,IAAIrwB,EAAGmJ,IAAI6pB,WAAa/yB,GAAO,KAAOg/B,IACxFj/B,EAAGmJ,IAAI6pB,WAAa/yB,EACpBs/B,GAAkBv/B,GACdA,EAAG0K,QAAQikB,SAASqE,YAAc/yB,IAAOD,EAAG0K,QAAQikB,SAASqE,WAAa/yB,GAC9ED,EAAG0K,QAAQy0B,WAAWC,cAAcn/B,GACtC,CAMA,SAASu/B,GAAqBx/B,GAC5B,IAAImlB,EAAInlB,EAAG0K,QAAS+0B,EAAUta,EAAEmI,QAAQvX,YACpC2pB,EAAOxxB,KAAKkpB,MAAMp3B,EAAGmJ,IAAI4Q,OAASgU,GAAY/tB,EAAG0K,UACrD,MAAO,CACLokB,aAAc3J,EAAEwJ,SAASG,aACzB6Q,WAAYxa,EAAExa,QAAQmkB,aACtBwQ,YAAana,EAAEwJ,SAAS2Q,YAAa/R,YAAapI,EAAEwJ,SAASpB,YAC7DqS,UAAWza,EAAExa,QAAQ4iB,YACrBsS,QAAS7/B,EAAG4X,QAAQwT,YAAcqU,EAAU,EAC5CK,UAAWJ,EACXR,aAAcQ,EAAOlR,GAAUxuB,GAAMmlB,EAAE4J,UACvCN,eAAgBtJ,EAAEsJ,eAClBzC,YAAayT,EAEjB,CAEA,IAAIM,GAAmB,SAAStP,EAAO/iB,EAAQ1N,GAC7C4M,KAAK5M,GAAKA,EACV,IAAIggC,EAAOpzB,KAAKozB,KAAO93B,EAAI,MAAO,CAACA,EAAI,MAAO,KAAM,KAAM,mBAAoB,yBAC1E+3B,EAAQrzB,KAAKqzB,MAAQ/3B,EAAI,MAAO,CAACA,EAAI,MAAO,KAAM,KAAM,kCAAmC,yBAC/F83B,EAAKE,SAAWD,EAAMC,UAAY,EAClCzP,EAAMuP,GAAOvP,EAAMwP,GAEnB7sB,GAAG4sB,EAAM,UAAU,WACbA,EAAKlR,cAAgBphB,EAAOsyB,EAAK5M,UAAW,WAClD,IACAhgB,GAAG6sB,EAAO,UAAU,WACdA,EAAM1S,aAAe7f,EAAOuyB,EAAMjN,WAAY,aACpD,IAEApmB,KAAKuzB,kBAAmB,EAEpB56B,GAAMC,EAAa,IAAKoH,KAAKqzB,MAAM53B,MAAM+3B,UAAYxzB,KAAKozB,KAAK33B,MAAMg4B,SAAW,OACtF,EAEAN,GAAiB10B,UAAUi1B,OAAS,SAAUzqB,GAC5C,IAAI0qB,EAAS1qB,EAAQypB,YAAczpB,EAAQ0X,YAAc,EACrDiT,EAAS3qB,EAAQqpB,aAAerpB,EAAQiZ,aAAe,EACvD2R,EAAS5qB,EAAQ4Y,eAErB,GAAI+R,EAAQ,CACV5zB,KAAKozB,KAAK33B,MAAMqC,QAAU,QAC1BkC,KAAKozB,KAAK33B,MAAMioB,OAASiQ,EAASE,EAAS,KAAO,IAClD,IAAIC,EAAc7qB,EAAQ8pB,YAAcY,EAASE,EAAS,GAE1D7zB,KAAKozB,KAAKl4B,WAAWO,MAAM0R,OACzB7L,KAAKiN,IAAI,EAAGtF,EAAQqpB,aAAerpB,EAAQiZ,aAAe4R,GAAe,IAC7E,MACE9zB,KAAKozB,KAAK5M,UAAY,EACtBxmB,KAAKozB,KAAK33B,MAAMqC,QAAU,GAC1BkC,KAAKozB,KAAKl4B,WAAWO,MAAM0R,OAAS,IAGtC,GAAIwmB,EAAQ,CACV3zB,KAAKqzB,MAAM53B,MAAMqC,QAAU,QAC3BkC,KAAKqzB,MAAM53B,MAAMlF,MAAQq9B,EAASC,EAAS,KAAO,IAClD7zB,KAAKqzB,MAAM53B,MAAMnF,KAAO2S,EAAQgqB,QAAU,KAC1C,IAAIc,EAAa9qB,EAAQ+pB,UAAY/pB,EAAQgqB,SAAWW,EAASC,EAAS,GAC1E7zB,KAAKqzB,MAAMn4B,WAAWO,MAAMykB,MAC1B5e,KAAKiN,IAAI,EAAGtF,EAAQypB,YAAczpB,EAAQ0X,YAAcoT,GAAc,IAC1E,MACE/zB,KAAKqzB,MAAM53B,MAAMqC,QAAU,GAC3BkC,KAAKqzB,MAAMn4B,WAAWO,MAAMykB,MAAQ,IAQtC,OALKlgB,KAAKuzB,kBAAoBtqB,EAAQiZ,aAAe,IACrC,GAAV2R,GAAe7zB,KAAKg0B,gBACxBh0B,KAAKuzB,kBAAmB,GAGnB,CAACh9B,MAAOq9B,EAASC,EAAS,EAAGnQ,OAAQiQ,EAASE,EAAS,EAChE,EAEAV,GAAiB10B,UAAU+zB,cAAgB,SAAU/8B,GAC/CuK,KAAKqzB,MAAMjN,YAAc3wB,IAAOuK,KAAKqzB,MAAMjN,WAAa3wB,GACxDuK,KAAKi0B,cAAgBj0B,KAAKk0B,mBAAmBl0B,KAAKqzB,MAAOrzB,KAAKi0B,aAAc,QAClF,EAEAd,GAAiB10B,UAAU0zB,aAAe,SAAU18B,GAC9CuK,KAAKozB,KAAK5M,WAAa/wB,IAAOuK,KAAKozB,KAAK5M,UAAY/wB,GACpDuK,KAAKm0B,aAAen0B,KAAKk0B,mBAAmBl0B,KAAKozB,KAAMpzB,KAAKm0B,YAAa,OAC/E,EAEAhB,GAAiB10B,UAAUu1B,cAAgB,WACzC,IAAIzD,EAAI32B,IAAQN,EAAqB,OAAS,OAC9C0G,KAAKqzB,MAAM53B,MAAM0R,OAASnN,KAAKozB,KAAK33B,MAAMykB,MAAQqQ,EAClDvwB,KAAKqzB,MAAM53B,MAAMszB,WAAa/uB,KAAKozB,KAAK33B,MAAMszB,WAAa,SAC3D/uB,KAAKi0B,aAAe,IAAIl0B,EACxBC,KAAKm0B,YAAc,IAAIp0B,CACzB,EAEAozB,GAAiB10B,UAAUy1B,mBAAqB,SAAUE,EAAKC,EAAO3+B,GACpE0+B,EAAI34B,MAAMszB,WAAa,GAcvBsF,EAAM7zB,IAAI,KAbV,SAAS8zB,IAOP,IAAI9L,EAAM4L,EAAI7qB,yBACI,QAAR7T,EAAiBmD,SAAS07B,iBAAiB/L,EAAIjyB,MAAQ,GAAIiyB,EAAI7E,IAAM6E,EAAI9E,QAAU,GACvF7qB,SAAS07B,kBAAkB/L,EAAIjyB,MAAQiyB,EAAIlyB,MAAQ,EAAGkyB,EAAI9E,OAAS,KAC9D0Q,EAAOA,EAAI34B,MAAMszB,WAAa,SAClCsF,EAAM7zB,IAAI,IAAM8zB,EACzB,GAEF,EAEAnB,GAAiB10B,UAAU+1B,MAAQ,WACjC,IAAIp5B,EAAS4E,KAAKqzB,MAAMn3B,WACxBd,EAAOH,YAAY+E,KAAKqzB,OACxBj4B,EAAOH,YAAY+E,KAAKozB,KAC1B,EAEA,IAAIqB,GAAiB,WAAa,EAOlC,SAASC,GAAiBthC,EAAI6V,GACvBA,IAAWA,EAAU2pB,GAAqBx/B,IAC/C,IAAIuhC,EAAavhC,EAAG0K,QAAQkkB,SAAU4S,EAAcxhC,EAAG0K,QAAQqkB,UAC/D0S,GAAsBzhC,EAAI6V,GAC1B,IAAK,IAAI9U,EAAI,EAAGA,EAAI,GAAKwgC,GAAcvhC,EAAG0K,QAAQkkB,UAAY4S,GAAexhC,EAAG0K,QAAQqkB,UAAWhuB,IAC7FwgC,GAAcvhC,EAAG0K,QAAQkkB,UAAY5uB,EAAG4X,QAAQoY,cAChD2M,GAAwB38B,GAC5ByhC,GAAsBzhC,EAAIw/B,GAAqBx/B,IAC/CuhC,EAAavhC,EAAG0K,QAAQkkB,SAAU4S,EAAcxhC,EAAG0K,QAAQqkB,SAE/D,CAIA,SAAS0S,GAAsBzhC,EAAI6V,GACjC,IAAIsP,EAAInlB,EAAG0K,QACPg3B,EAAQvc,EAAEga,WAAWmB,OAAOzqB,GAEhCsP,EAAEuI,MAAMrlB,MAAMimB,cAAgBnJ,EAAEyJ,SAAW8S,EAAMv+B,OAAS,KAC1DgiB,EAAEuI,MAAMrlB,MAAMs5B,eAAiBxc,EAAE4J,UAAY2S,EAAMpR,QAAU,KAC7DnL,EAAEyc,aAAav5B,MAAMw5B,aAAeH,EAAMpR,OAAS,uBAE/CoR,EAAMv+B,OAASu+B,EAAMpR,QACvBnL,EAAE2c,gBAAgBz5B,MAAMqC,QAAU,QAClCya,EAAE2c,gBAAgBz5B,MAAM0R,OAAS2nB,EAAMpR,OAAS,KAChDnL,EAAE2c,gBAAgBz5B,MAAMykB,MAAQ4U,EAAMv+B,MAAQ,MACvCgiB,EAAE2c,gBAAgBz5B,MAAMqC,QAAU,GACvCg3B,EAAMpR,QAAUtwB,EAAG4X,QAAQmqB,4BAA8B/hC,EAAG4X,QAAQwT,aACtEjG,EAAE6c,aAAa35B,MAAMqC,QAAU,QAC/Bya,EAAE6c,aAAa35B,MAAM0R,OAAS2nB,EAAMpR,OAAS,KAC7CnL,EAAE6c,aAAa35B,MAAMykB,MAAQjX,EAAQmW,YAAc,MAC5C7G,EAAE6c,aAAa35B,MAAMqC,QAAU,EAC1C,CArCA22B,GAAeh2B,UAAUi1B,OAAS,WAAc,MAAO,CAAChQ,OAAQ,EAAGntB,MAAO,EAAG,EAC7Ek+B,GAAeh2B,UAAU+zB,cAAgB,WAAa,EACtDiC,GAAeh2B,UAAU0zB,aAAe,WAAa,EACrDsC,GAAeh2B,UAAU+1B,MAAQ,WAAa,EAoC9C,IAAIa,GAAiB,CAAC,OAAUlC,GAAkB,KAAQsB,IAE1D,SAASa,GAAeliC,GAClBA,EAAG0K,QAAQy0B,aACbn/B,EAAG0K,QAAQy0B,WAAWiC,QAClBphC,EAAG0K,QAAQy0B,WAAW51B,UACtBpC,EAAQnH,EAAG0K,QAAQC,QAAS3K,EAAG0K,QAAQy0B,WAAW51B,WAGxDvJ,EAAG0K,QAAQy0B,WAAa,IAAI8C,GAAejiC,EAAG4X,QAAQuqB,iBAAgB,SAAU/6B,GAC9EpH,EAAG0K,QAAQC,QAAQmgB,aAAa1jB,EAAMpH,EAAG0K,QAAQo3B,iBAEjD1uB,GAAGhM,EAAM,aAAa,WAChBpH,EAAGM,MAAMi7B,SAAWpuB,YAAW,WAAc,OAAOnN,EAAG0K,QAAQ2d,MAAM4T,OAAS,GAAG,EACvF,IACA70B,EAAKsB,aAAa,iBAAkB,OACtC,IAAG,SAAUrG,EAAK+/B,GACJ,cAARA,EAAwBhD,GAAcp/B,EAAIqC,GACvCw8B,GAAgB7+B,EAAIqC,EAC7B,GAAGrC,GACCA,EAAG0K,QAAQy0B,WAAW51B,UACtBA,EAASvJ,EAAG0K,QAAQC,QAAS3K,EAAG0K,QAAQy0B,WAAW51B,SACzD,CAQA,IAAI84B,GAAW,EAEf,SAASC,GAAetiC,GAlvDxB,IAAuBuiC,EAmvDrBviC,EAAGuU,MAAQ,CACTvU,GAAIA,EACJw3B,aAAa,EACbgK,YAAaxhC,EAAGmJ,IAAI4Q,OACpByV,aAAa,EACbgT,YAAa,EACbC,QAAQ,EACRC,WAAY,KACZluB,uBAAwB,KACxBmuB,qBAAsB,EACtBC,kBAAkB,EAClBC,eAAe,EACf7P,WAAY,KAAMI,UAAW,KAC7BmL,YAAa,KACbtC,OAAO,EACPpvB,KAAMw1B,GACNS,WAAY,MAnwDOP,EAqwDPviC,EAAGuU,MApwDbiV,GACFA,GAAeuZ,IAAI5+B,KAAKo+B,GAExBA,EAAGS,UAAYxZ,GAAiB,CAC9BuZ,IAAK,CAACR,GACN3Y,iBAAkB,GAgwDxB,CAGA,SAASqZ,GAAajjC,GACpB,IAAIuiC,EAAKviC,EAAGuU,MACRguB,GAhvDN,SAAyBA,EAAIW,GAC3B,IAAIC,EAAQZ,EAAGS,UACf,GAAKG,EAEL,KApBF,SAA6BA,GAG3B,IAAIC,EAAYD,EAAMvZ,iBAAkB7oB,EAAI,EAC5C,EAAG,CACD,KAAOA,EAAIqiC,EAAUpiC,OAAQD,IACzBqiC,EAAUriC,GAAGuK,KAAK,MACtB,IAAK,IAAIyG,EAAI,EAAGA,EAAIoxB,EAAMJ,IAAI/hC,OAAQ+Q,IAAK,CACzC,IAAIwwB,EAAKY,EAAMJ,IAAIhxB,GACnB,GAAIwwB,EAAG/tB,uBACH,KAAO+tB,EAAGI,qBAAuBJ,EAAG/tB,uBAAuBxT,QACzDuhC,EAAG/tB,uBAAuB+tB,EAAGI,wBAAwBr3B,KAAK,KAAMi3B,EAAGviC,GAC3E,CACF,OAASe,EAAIqiC,EAAUpiC,OACzB,CAMQqiC,CAAoBF,EAAQ,CAClC,QACE3Z,GAAiB,KACjB0Z,EAAMC,EACR,CACF,CAuuDYG,CAAgBf,GAAI,SAAUY,GACtC,IAAK,IAAIpiC,EAAI,EAAGA,EAAIoiC,EAAMJ,IAAI/hC,OAAQD,IAClCoiC,EAAMJ,IAAIhiC,GAAGf,GAAGuU,MAAQ,MAOhC,SAAuB4uB,GAErB,IADA,IAAIJ,EAAMI,EAAMJ,IACPhiC,EAAI,EAAGA,EAAIgiC,EAAI/hC,OAAQD,IAC5BwiC,GAAgBR,EAAIhiC,IACxB,IAAK,IAAIuQ,EAAM,EAAGA,EAAMyxB,EAAI/hC,OAAQsQ,IAChCkyB,GAAgBT,EAAIzxB,IACxB,IAAK,IAAIC,EAAM,EAAGA,EAAMwxB,EAAI/hC,OAAQuQ,IAChCkyB,GAAgBV,EAAIxxB,IACxB,IAAK,IAAIE,EAAM,EAAGA,EAAMsxB,EAAI/hC,OAAQyQ,IAChCiyB,GAAgBX,EAAItxB,IACxB,IAAK,IAAIG,EAAM,EAAGA,EAAMmxB,EAAI/hC,OAAQ4Q,IAChC+xB,GAAoBZ,EAAInxB,GAC9B,CAlBIgyB,CAAcT,EAChB,GACF,CAkBA,SAASI,GAAgBhB,GACvB,IAAIviC,EAAKuiC,EAAGviC,GAAI0K,EAAU1K,EAAG0K,SAmN/B,SAA6B1K,GAC3B,IAAI0K,EAAU1K,EAAG0K,SACZA,EAAQm5B,mBAAqBn5B,EAAQikB,SAAS5Y,cACjDrL,EAAQ+jB,eAAiB/jB,EAAQikB,SAAS5Y,YAAcrL,EAAQikB,SAASpB,YACzE7iB,EAAQk3B,aAAav5B,MAAM0R,OAASyU,GAAUxuB,GAAM,KACpD0K,EAAQgjB,MAAMrlB,MAAMy7B,cAAgBp5B,EAAQ+jB,eAAiB,KAC7D/jB,EAAQgjB,MAAMrlB,MAAM07B,iBAAmBvV,GAAUxuB,GAAM,KACvD0K,EAAQm5B,mBAAoB,EAEhC,EA3NEG,CAAoBhkC,GAChBuiC,EAAGM,eAAiB3d,GAAYllB,GAEpCuiC,EAAG0B,WAAa1B,EAAG/K,aAAe+K,EAAG/S,aAA+B,MAAhB+S,EAAGnP,WACrDmP,EAAGhE,cAAgBgE,EAAGhE,YAAYzuB,KAAKtO,KAAOkJ,EAAQ8U,UACnC+iB,EAAGhE,YAAYxuB,GAAGvO,MAAQkJ,EAAQ+U,SACrD/U,EAAQ4a,gBAAkBtlB,EAAG4X,QAAQoY,aACvCuS,EAAGjC,OAASiC,EAAG0B,YACb,IAAIC,GAAclkC,EAAIuiC,EAAG0B,YAAc,CAAC1T,IAAKgS,EAAGnP,UAAWkK,OAAQiF,EAAGhE,aAAcgE,EAAG/S,YAC3F,CAEA,SAASgU,GAAgBjB,GACvBA,EAAG4B,eAAiB5B,EAAG0B,YAAcG,GAAsB7B,EAAGviC,GAAIuiC,EAAGjC,OACvE,CAEA,SAASmD,GAAgBlB,GACvB,IAAIviC,EAAKuiC,EAAGviC,GAAI0K,EAAU1K,EAAG0K,QACzB63B,EAAG4B,gBAAkBxH,GAAwB38B,GAEjDuiC,EAAG8B,WAAa7E,GAAqBx/B,GAKjC0K,EAAQ4a,iBAAmBtlB,EAAG4X,QAAQoY,eACxCuS,EAAG+B,cAAgBrV,GAAYjvB,EAAI0K,EAAQ0a,QAAS1a,EAAQ0a,QAAQlS,KAAKlS,QAAQkC,KAAO,EACxFlD,EAAG0K,QAAQivB,WAAa4I,EAAG+B,cAC3B/B,EAAG8B,WAAW/E,YACZpxB,KAAKiN,IAAIzQ,EAAQikB,SAASpB,YAAa7iB,EAAQgjB,MAAM0I,WAAamM,EAAG+B,cAAgB9V,GAAUxuB,GAAMA,EAAG0K,QAAQkkB,UAClH2T,EAAGgC,cAAgBr2B,KAAKiN,IAAI,EAAGzQ,EAAQgjB,MAAM0I,WAAamM,EAAG+B,cAAgB5V,GAAa1uB,MAGxFuiC,EAAG4B,gBAAkB5B,EAAGK,oBACxBL,EAAGiC,kBAAoB95B,EAAQ2d,MAAMiQ,mBAC3C,CAEA,SAASoL,GAAgBnB,GACvB,IAAIviC,EAAKuiC,EAAGviC,GAEY,MAApBuiC,EAAG+B,gBACLtkC,EAAG0K,QAAQgjB,MAAMrlB,MAAMg4B,SAAWkC,EAAG+B,cAAgB,KACjD/B,EAAGgC,cAAgBvkC,EAAGmJ,IAAI6pB,YAC1BoM,GAAcp/B,EAAIkO,KAAKC,IAAInO,EAAG0K,QAAQikB,SAASqE,WAAYuP,EAAGgC,gBAAgB,GAClFvkC,EAAG0K,QAAQ4a,gBAAiB,GAG9B,IAAImf,EAAYlC,EAAGtG,OAASsG,EAAGtG,OAASjzB,EAAU4B,EAAK5K,IACnDuiC,EAAGiC,mBACHxkC,EAAG0K,QAAQ2d,MAAMgQ,cAAckK,EAAGiC,kBAAmBC,IACrDlC,EAAG4B,gBAAkB5B,EAAGf,aAAexhC,EAAGmJ,IAAI4Q,SAC9CunB,GAAiBthC,EAAIuiC,EAAG8B,YACxB9B,EAAG4B,gBACHO,GAAkB1kC,EAAIuiC,EAAG8B,YAEzB9B,EAAGK,kBAAoBtH,GAAat7B,GAEpCA,EAAGM,MAAMi7B,SAAWgH,EAAGC,aACvBxiC,EAAG0K,QAAQ2d,MAAMmU,MAAM+F,EAAGE,QAC1BgC,GAAazI,GAAYuG,EAAGviC,GAClC,CAEA,SAAS2jC,GAAoBpB,GAC3B,IAAIviC,EAAKuiC,EAAGviC,GAAI0K,EAAU1K,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IAE3Co5B,EAAG4B,gBAAkBQ,GAAkB3kC,EAAIuiC,EAAGjC,QAGvB,MAAvB51B,EAAQk6B,aAAwC,MAAhBrC,EAAGnP,WAAsC,MAAjBmP,EAAGvP,aAAsBuP,EAAGhE,cACpF7zB,EAAQk6B,YAAcl6B,EAAQm6B,YAAc,MAG5B,MAAhBtC,EAAGnP,WAAqB2L,GAAa/+B,EAAIuiC,EAAGnP,UAAWmP,EAAGtD,aAEzC,MAAjBsD,EAAGvP,YAAsBoM,GAAcp/B,EAAIuiC,EAAGvP,YAAY,GAAM,GAEhEuP,EAAGhE,aAveT,SAA2Bv+B,EAAI2vB,GAC7B,IAAI3b,GAAehU,EAAI,wBAAvB,CAEA,IAAI0K,EAAU1K,EAAG0K,QAAS0qB,EAAM1qB,EAAQgjB,MAAMvX,wBAAyB2uB,EAAW,KAC9E37B,EAAMuB,EAAQC,QAAQvB,cAG1B,GAFIumB,EAAKY,IAAM6E,EAAI7E,IAAM,EAAKuU,GAAW,EAChCnV,EAAKW,OAAS8E,EAAI7E,KAAOpnB,EAAI6B,YAAY+5B,aAAe57B,EAAI4pB,gBAAgBjE,gBAAiBgW,GAAW,GACjG,MAAZA,IAAqB3+B,EAAS,CAChC,IAAI6+B,EAAa98B,EAAI,MAAO,IAAU,KAAO,uDAAyDynB,EAAKY,IAAM7lB,EAAQ+oB,WAAa7F,GAAW5tB,EAAG0K,UAAY,0CAA4CilB,EAAKW,OAASX,EAAKY,IAAM/B,GAAUxuB,GAAM0K,EAAQqkB,WAAa,uCAA0CY,EAAS,KAAI,cAAiBzhB,KAAKiN,IAAI,EAAGwU,EAAKxsB,MAAQwsB,EAAKzsB,MAAS,OACzXlD,EAAG0K,QAAQmjB,UAAU5lB,YAAY+8B,GACjCA,EAAWC,eAAeH,GAC1B9kC,EAAG0K,QAAQmjB,UAAUhmB,YAAYm9B,EACnC,CAXyD,CAY3D,CA6dIE,CAAkBllC,EAxdtB,SAA2BA,EAAIqC,EAAKyH,EAAK00B,GAEvC,IAAI7O,EADU,MAAV6O,IAAkBA,EAAS,GAE1Bx+B,EAAG4X,QAAQoY,cAAgB3tB,GAAOyH,IAIrCA,EAAoB,UAAdzH,EAAIkO,OAAqB5Q,GAAI0C,EAAIb,KAAMa,EAAIZ,GAAK,EAAG,UAAYY,EACrEA,EAAMA,EAAIZ,GAAK9B,GAAI0C,EAAIb,KAAoB,UAAda,EAAIkO,OAAqBlO,EAAIZ,GAAK,EAAIY,EAAIZ,GAAI,SAAWY,GAExF,IAAK,IAAI8iC,EAAQ,EAAGA,EAAQ,EAAGA,IAAS,CACtC,IAAIC,GAAU,EACVvR,EAASI,GAAaj0B,EAAIqC,GAC1BgjC,EAAav7B,GAAOA,GAAOzH,EAAe4xB,GAAaj0B,EAAI8J,GAA1B+pB,EAKjCyR,EAAY7H,GAAmBz9B,EAJnC2vB,EAAO,CAACzsB,KAAMgL,KAAKC,IAAI0lB,EAAO3wB,KAAMmiC,EAAUniC,MACtCqtB,IAAKriB,KAAKC,IAAI0lB,EAAOtD,IAAK8U,EAAU9U,KAAOiO,EAC3Cr7B,MAAO+K,KAAKiN,IAAI0Y,EAAO3wB,KAAMmiC,EAAUniC,MACvCotB,OAAQpiB,KAAKiN,IAAI0Y,EAAOvD,OAAQ+U,EAAU/U,QAAUkO,IAExD+G,EAAWvlC,EAAGmJ,IAAIiqB,UAAWoS,EAAYxlC,EAAGmJ,IAAI6pB,WASpD,GAR2B,MAAvBsS,EAAUlS,YACZyL,GAAgB7+B,EAAIslC,EAAUlS,WAC1BllB,KAAKmiB,IAAIrwB,EAAGmJ,IAAIiqB,UAAYmS,GAAY,IAAKH,GAAU,IAEjC,MAAxBE,EAAUtS,aACZoM,GAAcp/B,EAAIslC,EAAUtS,YACxB9kB,KAAKmiB,IAAIrwB,EAAGmJ,IAAI6pB,WAAawS,GAAa,IAAKJ,GAAU,KAE1DA,EAAW,KAClB,CACA,OAAOzV,CACT,CAube8V,CAAkBzlC,EAAIob,GAAQjS,EAAKo5B,EAAGhE,YAAYzuB,MAChCsL,GAAQjS,EAAKo5B,EAAGhE,YAAYxuB,IAAKwyB,EAAGhE,YAAYC,SAM/E,IAAIpV,EAASmZ,EAAGmD,mBAAoBC,EAAWpD,EAAGqD,qBAClD,GAAIxc,EAAU,IAAK,IAAIroB,EAAI,EAAGA,EAAIqoB,EAAOpoB,SAAUD,EAC1CqoB,EAAOroB,GAAGwY,MAAMvY,QAAU8S,GAAOsV,EAAOroB,GAAI,QACrD,GAAI4kC,EAAY,IAAK,IAAIr0B,EAAM,EAAGA,EAAMq0B,EAAS3kC,SAAUsQ,EACnDq0B,EAASr0B,GAAKiI,MAAMvY,QAAU8S,GAAO6xB,EAASr0B,GAAM,UAExD5G,EAAQC,QAAQmL,eAChB3M,EAAIiqB,UAAYpzB,EAAG0K,QAAQikB,SAASyE,WAGpCmP,EAAGG,YACH5uB,GAAO9T,EAAI,UAAWA,EAAIuiC,EAAGG,YAC7BH,EAAGjC,QACHiC,EAAGjC,OAAOuF,QAChB,CAGA,SAASC,GAAQ9lC,EAAIkL,GACnB,GAAIlL,EAAGuU,MAAS,OAAOrJ,IACvBo3B,GAAetiC,GACf,IAAM,OAAOkL,GAAI,CACjB,QAAU+3B,GAAajjC,EAAK,CAC9B,CAEA,SAAS2B,GAAU3B,EAAIkL,GACrB,OAAO,WACL,GAAIlL,EAAGuU,MAAS,OAAOrJ,EAAEM,MAAMxL,EAAIuL,WACnC+2B,GAAetiC,GACf,IAAM,OAAOkL,EAAEM,MAAMxL,EAAIuL,UAAW,CACpC,QAAU03B,GAAajjC,EAAK,CAC9B,CACF,CAGA,SAAS+lC,GAAS76B,GAChB,OAAO,WACL,GAAI0B,KAAK2H,MAAS,OAAOrJ,EAAEM,MAAMoB,KAAMrB,WACvC+2B,GAAe11B,MACf,IAAM,OAAO1B,EAAEM,MAAMoB,KAAMrB,UAAW,CACtC,QAAU03B,GAAar2B,KAAO,CAChC,CACF,CACA,SAASo5B,GAAY96B,GACnB,OAAO,WACL,IAAIlL,EAAK4M,KAAK5M,GACd,IAAKA,GAAMA,EAAGuU,MAAS,OAAOrJ,EAAEM,MAAMoB,KAAMrB,WAC5C+2B,GAAetiC,GACf,IAAM,OAAOkL,EAAEM,MAAMoB,KAAMrB,UAAW,CACtC,QAAU03B,GAAajjC,EAAK,CAC9B,CACF,CAIA,SAASg/B,GAAYh/B,EAAI8M,GACnB9M,EAAGmJ,IAAI0V,kBAAoB7e,EAAG0K,QAAQ+U,QACtCzf,EAAGM,MAAM2lC,UAAU74B,IAAIN,EAAM7B,EAAKi7B,GAAiBlmC,GACzD,CAEA,SAASkmC,GAAgBlmC,GACvB,IAAImJ,EAAMnJ,EAAGmJ,IACb,KAAIA,EAAI0V,mBAAqB7e,EAAG0K,QAAQ+U,QAAxC,CACA,IAAI3V,GAAO,IAAIoD,KAAOlN,EAAG4X,QAAQuuB,SAC7B9oB,EAAUkB,GAAiBve,EAAImJ,EAAI0V,mBACnCunB,EAAe,GAEnBj9B,EAAIyQ,KAAKyD,EAAQ7b,KAAM0M,KAAKC,IAAIhF,EAAIgQ,MAAQhQ,EAAIiQ,KAAMpZ,EAAG0K,QAAQ+U,OAAS,MAAM,SAAUje,GACxF,GAAI6b,EAAQ7b,MAAQxB,EAAG0K,QAAQ8U,SAAU,CACvC,IAAI6mB,EAAY7kC,EAAKyc,OACjBO,EAAahd,EAAK0R,KAAKlS,OAAShB,EAAG4X,QAAQ6G,mBAAqBnG,GAAUnP,EAAIoO,KAAM8F,EAAQ/c,OAAS,KACrGgmC,EAAclpB,GAAcpd,EAAIwB,EAAM6b,GAAS,GAC/CmB,IAAcnB,EAAQ/c,MAAQke,GAClChd,EAAKyc,OAASqoB,EAAYroB,OAC1B,IAAIsoB,EAAS/kC,EAAKod,aAAc4nB,EAASF,EAAYpoB,QACjDsoB,EAAUhlC,EAAKod,aAAe4nB,EACzBD,IAAU/kC,EAAKod,aAAe,MAGvC,IAFA,IAAI6nB,GAAYJ,GAAaA,EAAUrlC,QAAUQ,EAAKyc,OAAOjd,QAC3DulC,GAAUC,KAAYD,IAAWC,GAAUD,EAAOpoB,SAAWqoB,EAAOroB,SAAWooB,EAAOnoB,WAAaooB,EAAOpoB,WACnGrd,EAAI,GAAI0lC,GAAY1lC,EAAIslC,EAAUrlC,SAAUD,EAAK0lC,EAAWJ,EAAUtlC,IAAMS,EAAKyc,OAAOld,GAC7F0lC,GAAYL,EAAajiC,KAAKkZ,EAAQ7b,MAC1CA,EAAKkd,WAAarB,EAAQsB,OAC1BtB,EAAQqC,UACV,MACMle,EAAK0R,KAAKlS,QAAUhB,EAAG4X,QAAQ6G,oBAC/Bc,GAAYvf,EAAIwB,EAAK0R,KAAMmK,GAC/B7b,EAAKkd,WAAarB,EAAQ7b,KAAO,GAAK,EAAI6b,EAAQsB,OAAS,KAC3DtB,EAAQqC,WAEV,IAAK,IAAIxS,KAAOpD,EAEd,OADAk1B,GAAYh/B,EAAIA,EAAG4X,QAAQ8uB,YACpB,CAEX,IACAv9B,EAAI0V,kBAAoBxB,EAAQ7b,KAChC2H,EAAI2V,aAAe5Q,KAAKiN,IAAIhS,EAAI2V,aAAczB,EAAQ7b,MAClD4kC,EAAaplC,QAAU8kC,GAAQ9lC,GAAI,WACrC,IAAK,IAAIe,EAAI,EAAGA,EAAIqlC,EAAaplC,OAAQD,IACrCg3B,GAAc/3B,EAAIomC,EAAarlC,GAAI,OACzC,GArCyD,CAsC3D,CAIA,IAAImjC,GAAgB,SAASlkC,EAAIq9B,EAAUsJ,GACzC,IAAIj8B,EAAU1K,EAAG0K,QAEjBkC,KAAKywB,SAAWA,EAEhBzwB,KAAKg6B,QAAUxJ,GAAa1yB,EAAS1K,EAAGmJ,IAAKk0B,GAC7CzwB,KAAKi6B,gBAAkBn8B,EAAQC,QAAQoL,YACvCnJ,KAAKk6B,cAAgBp8B,EAAQC,QAAQmkB,aACrCliB,KAAKmgB,aAAeriB,EAAQC,QAAQ4iB,YACpC3gB,KAAKm6B,gBAAkBrY,GAAa1uB,GACpC4M,KAAK+5B,MAAQA,EACb/5B,KAAKod,KAAOuF,GAAcvvB,GAC1B4M,KAAKo6B,OAAS,EAChB,EAyDA,SAAS5C,GAAsBpkC,EAAIsgC,GACjC,IAAI51B,EAAU1K,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IAEnC,GAAIm3B,EAAOuG,eAET,OADApP,GAAUz3B,IACH,EAIT,IAAKsgC,EAAOqG,OACRrG,EAAOsG,QAAQ92B,MAAQpF,EAAQ8U,UAAY8gB,EAAOsG,QAAQ72B,IAAMrF,EAAQ+U,SAC1C,MAA7B/U,EAAQ6sB,mBAA6B7sB,EAAQ6sB,mBAAqB7sB,EAAQ+U,SAC3E/U,EAAQu8B,cAAgBv8B,EAAQ6e,MAA8B,GAAtB2O,GAAel4B,GACvD,OAAO,EAEPknC,GAA2BlnC,KAC7By3B,GAAUz3B,GACVsgC,EAAOtW,KAAOuF,GAAcvvB,IAI9B,IAAI8J,EAAMX,EAAIgQ,MAAQhQ,EAAIiQ,KACtBtJ,EAAO5B,KAAKiN,IAAImlB,EAAOsG,QAAQ92B,KAAO9P,EAAG4X,QAAQuvB,eAAgBh+B,EAAIgQ,OACrEpJ,EAAK7B,KAAKC,IAAIrE,EAAKw2B,EAAOsG,QAAQ72B,GAAK/P,EAAG4X,QAAQuvB,gBAClDz8B,EAAQ8U,SAAW1P,GAAQA,EAAOpF,EAAQ8U,SAAW,KAAM1P,EAAO5B,KAAKiN,IAAIhS,EAAIgQ,MAAOzO,EAAQ8U,WAC9F9U,EAAQ+U,OAAS1P,GAAMrF,EAAQ+U,OAAS1P,EAAK,KAAMA,EAAK7B,KAAKC,IAAIrE,EAAKY,EAAQ+U,SAC9EqB,KACFhR,EAAOuU,GAAarkB,EAAGmJ,IAAK2G,GAC5BC,EAAKyU,GAAgBxkB,EAAGmJ,IAAK4G,IAG/B,IAAIq3B,EAAYt3B,GAAQpF,EAAQ8U,UAAYzP,GAAMrF,EAAQ+U,QACxD/U,EAAQ28B,gBAAkB/G,EAAOwG,eAAiBp8B,EAAQ48B,eAAiBhH,EAAOvT,cAhgCtF,SAAoB/sB,EAAI8P,EAAMC,GAC5B,IAAIrF,EAAU1K,EAAG0K,QACE,GADcA,EAAQ6e,KAChCvoB,QAAe8O,GAAQpF,EAAQ+U,QAAU1P,GAAMrF,EAAQ8U,UAC9D9U,EAAQ6e,KAAOF,GAAerpB,EAAI8P,EAAMC,GACxCrF,EAAQ8U,SAAW1P,IAEfpF,EAAQ8U,SAAW1P,EACnBpF,EAAQ6e,KAAOF,GAAerpB,EAAI8P,EAAMpF,EAAQ8U,UAAU/L,OAAO/I,EAAQ6e,MACpE7e,EAAQ8U,SAAW1P,IACxBpF,EAAQ6e,KAAO7e,EAAQ6e,KAAKhmB,MAAM+rB,GAActvB,EAAI8P,KACxDpF,EAAQ8U,SAAW1P,EACfpF,EAAQ+U,OAAS1P,EACjBrF,EAAQ6e,KAAO7e,EAAQ6e,KAAK9V,OAAO4V,GAAerpB,EAAI0K,EAAQ+U,OAAQ1P,IACjErF,EAAQ+U,OAAS1P,IACtBrF,EAAQ6e,KAAO7e,EAAQ6e,KAAKhmB,MAAM,EAAG+rB,GAActvB,EAAI+P,MAE7DrF,EAAQ+U,OAAS1P,CACnB,EAg/BEw3B,CAAWvnC,EAAI8P,EAAMC,GAErBrF,EAAQ+oB,WAAa5O,GAAa3L,GAAQlZ,EAAGmJ,IAAKuB,EAAQ8U,WAE1Dxf,EAAG0K,QAAQijB,MAAMtlB,MAAMkoB,IAAM7lB,EAAQ+oB,WAAa,KAElD,IAAI+T,EAAWtP,GAAel4B,GAC9B,IAAKonC,GAAyB,GAAZI,IAAkBlH,EAAOqG,OAASj8B,EAAQu8B,cAAgBv8B,EAAQ6e,OAClD,MAA7B7e,EAAQ6sB,mBAA6B7sB,EAAQ6sB,mBAAqB7sB,EAAQ+U,QAC3E,OAAO,EAIX,IAAIgoB,EAjFN,SAA2BznC,GACzB,GAAIA,EAAG87B,WAAc,OAAO,KAC5B,IAAI4L,EAAS1+B,EAAU4B,EAAK5K,IAC5B,IAAK0nC,IAAW/+B,EAAS3I,EAAG0K,QAAQmyB,QAAS6K,GAAW,OAAO,KAC/D,IAAIpxB,EAAS,CAACtN,UAAW0+B,GACzB,GAAI/wB,OAAOC,aAAc,CACvB,IAAIvS,EAAM0G,EAAI/K,GAAI4W,eACdvS,EAAIsjC,YAActjC,EAAIujC,QAAUj/B,EAAS3I,EAAG0K,QAAQmyB,QAASx4B,EAAIsjC,cACnErxB,EAAOqxB,WAAatjC,EAAIsjC,WACxBrxB,EAAOuxB,aAAexjC,EAAIwjC,aAC1BvxB,EAAOwxB,UAAYzjC,EAAIyjC,UACvBxxB,EAAOyxB,YAAc1jC,EAAI0jC,YAE7B,CACA,OAAOzxB,CACT,CAkEoB0xB,CAAkBhoC,GAuBpC,OAtBIwnC,EAAW,IAAK98B,EAAQmyB,QAAQx0B,MAAMqC,QAAU,QA0EtD,SAAsB1K,EAAIioC,EAAmBje,GAC3C,IAAItf,EAAU1K,EAAG0K,QAAS+gB,EAAczrB,EAAG4X,QAAQ6T,YAC/Cyc,EAAYx9B,EAAQmyB,QAASv7B,EAAM4mC,EAAUpgC,WAEjD,SAASqgC,EAAG/gC,GACV,IAAIzE,EAAOyE,EAAK+kB,YAMhB,OAJIxmB,GAAUa,GAAOxG,EAAG0K,QAAQ09B,oBAAsBhhC,EAClDA,EAAKiB,MAAMqC,QAAU,OAErBtD,EAAK0B,WAAWjB,YAAYT,GACzBzE,CACT,CAKA,IAHA,IAAI4mB,EAAO7e,EAAQ6e,KAAMjF,EAAQ5Z,EAAQ8U,SAGhCze,EAAI,EAAGA,EAAIwoB,EAAKvoB,OAAQD,IAAK,CACpC,IAAIglB,EAAWwD,EAAKxoB,GACpB,GAAIglB,EAASqD,aAAe,GAAKrD,EAAS3e,MAAQ2e,EAAS3e,KAAK0B,YAAco/B,EAGvE,CACL,KAAO5mC,GAAOykB,EAAS3e,MAAQ9F,EAAM6mC,EAAG7mC,GACxC,IAAI+mC,EAAe5c,GAAoC,MAArBwc,GAChCA,GAAqB3jB,GAASyB,EAAS6F,WACrC7F,EAASkE,UACP5oB,EAAQ0kB,EAASkE,QAAS,WAAa,IAAKoe,GAAe,GAC/Dte,GAAqB/pB,EAAI+lB,EAAUzB,EAAO0F,IAExCqe,IACF5gC,EAAese,EAAS6F,YACxB7F,EAAS6F,WAAW3jB,YAAYxC,SAAS+C,eAAegS,GAAcxa,EAAG4X,QAAS0M,MAEpFhjB,EAAMykB,EAAS3e,KAAK+kB,WACtB,KAhByF,CACvF,IAAI/kB,EAAOilB,GAAiBrsB,EAAI+lB,EAAUzB,EAAO0F,GACjDke,EAAUpd,aAAa1jB,EAAM9F,EAC/B,CAcAgjB,GAASyB,EAAS3M,IACpB,CACA,KAAO9X,GAAOA,EAAM6mC,EAAG7mC,EACzB,CAhHEgnC,CAAatoC,EAAI0K,EAAQ6sB,kBAAmB+I,EAAOtW,MAC/Cwd,EAAW,IAAK98B,EAAQmyB,QAAQx0B,MAAMqC,QAAU,IACpDA,EAAQu8B,aAAev8B,EAAQ6e,KApEjC,SAA0Bgf,GACxB,GAAKA,GAAaA,EAASv/B,WAAau/B,EAASv/B,WAAaA,EAAUC,EAASs/B,EAASv/B,cAC1Fu/B,EAASv/B,UAAUizB,SACd,qBAAqBp5B,KAAK0lC,EAASv/B,UAAUw/B,WAC9CD,EAASZ,YAAch/B,EAASlD,SAAS4D,KAAMk/B,EAASZ,aAAeh/B,EAASlD,SAAS4D,KAAMk/B,EAAST,YAAY,CACtH,IAAI3+B,EAAMo/B,EAASv/B,UAAUI,cACzB/E,EAAM8E,EAAI6B,YAAY4L,eAAgBlU,EAAQyG,EAAIU,cACtDnH,EAAMuH,OAAOs+B,EAASZ,WAAYY,EAASV,cAC3CnlC,EAAM2H,UAAS,GACfhG,EAAIokC,kBACJpkC,EAAIqkC,SAAShmC,GACb2B,EAAIujC,OAAOW,EAAST,UAAWS,EAASR,YAC1C,CACF,CA0DEY,CAAiBlB,GAIjBhgC,EAAeiD,EAAQgxB,WACvBj0B,EAAeiD,EAAQk+B,cACvBl+B,EAAQ4iB,QAAQjlB,MAAM0R,OAASrP,EAAQgjB,MAAMrlB,MAAM+3B,UAAY,EAE3DgH,IACF18B,EAAQ28B,eAAiB/G,EAAOwG,cAChCp8B,EAAQ48B,cAAgBhH,EAAOvT,aAC/BiS,GAAYh/B,EAAI,MAGlB0K,EAAQ6sB,kBAAoB,MAErB,CACT,CAEA,SAASoN,GAAkB3kC,EAAIsgC,GAG7B,IAFA,IAAIjD,EAAWiD,EAAOjD,SAEblkB,GAAQ,GAAOA,GAAQ,EAAO,CACrC,GAAKA,GAAUnZ,EAAG4X,QAAQoY,cAAgBsQ,EAAOyG,iBAAmBrY,GAAa1uB,GAStEmZ,IACTmnB,EAAOsG,QAAUxJ,GAAap9B,EAAG0K,QAAS1K,EAAGmJ,IAAKk0B,SAHlD,GALIA,GAA4B,MAAhBA,EAAS9M,MACrB8M,EAAW,CAAC9M,IAAKriB,KAAKC,IAAInO,EAAGmJ,IAAI4Q,OAASgU,GAAY/tB,EAAG0K,SAAWmkB,GAAc7uB,GAAKq9B,EAAS9M,OAGpG+P,EAAOsG,QAAUxJ,GAAap9B,EAAG0K,QAAS1K,EAAGmJ,IAAKk0B,GAC9CiD,EAAOsG,QAAQ92B,MAAQ9P,EAAG0K,QAAQ8U,UAAY8gB,EAAOsG,QAAQ72B,IAAM/P,EAAG0K,QAAQ+U,OAC9E,MAIN,IAAK2kB,GAAsBpkC,EAAIsgC,GAAW,MAC1C3D,GAAwB38B,GACxB,IAAIqkC,EAAa7E,GAAqBx/B,GACtCo4B,GAAgBp4B,GAChBshC,GAAiBthC,EAAIqkC,GACrBK,GAAkB1kC,EAAIqkC,GACtB/D,EAAOqG,OAAQ,CACjB,CAEArG,EAAOxsB,OAAO9T,EAAI,SAAUA,GACxBA,EAAG0K,QAAQ8U,UAAYxf,EAAG0K,QAAQm+B,kBAAoB7oC,EAAG0K,QAAQ+U,QAAUzf,EAAG0K,QAAQo+B,iBACxFxI,EAAOxsB,OAAO9T,EAAI,iBAAkBA,EAAIA,EAAG0K,QAAQ8U,SAAUxf,EAAG0K,QAAQ+U,QACxEzf,EAAG0K,QAAQm+B,iBAAmB7oC,EAAG0K,QAAQ8U,SAAUxf,EAAG0K,QAAQo+B,eAAiB9oC,EAAG0K,QAAQ+U,OAE9F,CAEA,SAASqf,GAAoB9+B,EAAIq9B,GAC/B,IAAIiD,EAAS,IAAI4D,GAAclkC,EAAIq9B,GACnC,GAAI+G,GAAsBpkC,EAAIsgC,GAAS,CACrC3D,GAAwB38B,GACxB2kC,GAAkB3kC,EAAIsgC,GACtB,IAAI+D,EAAa7E,GAAqBx/B,GACtCo4B,GAAgBp4B,GAChBshC,GAAiBthC,EAAIqkC,GACrBK,GAAkB1kC,EAAIqkC,GACtB/D,EAAOuF,QACT,CACF,CA+CA,SAASkD,GAAkBr+B,GACzB,IAAIoiB,EAAQpiB,EAAQ4iB,QAAQvX,YAC5BrL,EAAQgjB,MAAMrlB,MAAM8kB,WAAaL,EAAQ,KAEzCpD,GAAYhf,EAAS,gBAAiBA,EACxC,CAEA,SAASg6B,GAAkB1kC,EAAI6V,GAC7B7V,EAAG0K,QAAQgjB,MAAMrlB,MAAM+3B,UAAYvqB,EAAQiqB,UAAY,KACvD9/B,EAAG0K,QAAQk3B,aAAav5B,MAAMkoB,IAAM1a,EAAQiqB,UAAY,KACxD9/B,EAAG0K,QAAQ4iB,QAAQjlB,MAAM0R,OAAUlE,EAAQiqB,UAAY9/B,EAAG0K,QAAQqkB,UAAYP,GAAUxuB,GAAO,IACjG,CAIA,SAASu/B,GAAkBv/B,GACzB,IAAI0K,EAAU1K,EAAG0K,QAAS6e,EAAO7e,EAAQ6e,KACzC,GAAK7e,EAAQs+B,cAAkBt+B,EAAQ4iB,QAAQxlB,YAAe9H,EAAG4X,QAAQwT,YAAzE,CAGA,IAFA,IAAI6d,EAAO5S,GAAqB3rB,GAAWA,EAAQikB,SAASqE,WAAahzB,EAAGmJ,IAAI6pB,WAC5EyM,EAAU/0B,EAAQ4iB,QAAQvX,YAAa7S,EAAO+lC,EAAO,KAChDloC,EAAI,EAAGA,EAAIwoB,EAAKvoB,OAAQD,IAAO,IAAKwoB,EAAKxoB,GAAGqoB,OAAQ,CACvDppB,EAAG4X,QAAQwT,cACT7B,EAAKxoB,GAAGkqB,SACR1B,EAAKxoB,GAAGkqB,OAAO5iB,MAAMnF,KAAOA,GAC5BqmB,EAAKxoB,GAAGmqB,mBACR3B,EAAKxoB,GAAGmqB,iBAAiB7iB,MAAMnF,KAAOA,IAE5C,IAAIgmC,EAAQ3f,EAAKxoB,GAAGkrB,UACpB,GAAIid,EAAS,IAAK,IAAIn3B,EAAI,EAAGA,EAAIm3B,EAAMloC,OAAQ+Q,IAC3Cm3B,EAAMn3B,GAAG1J,MAAMnF,KAAOA,CAC5B,CACIlD,EAAG4X,QAAQwT,cACX1gB,EAAQ4iB,QAAQjlB,MAAMnF,KAAQ+lC,EAAOxJ,EAAW,KAf4C,CAgBlG,CAKA,SAASyH,GAA2BlnC,GAClC,IAAKA,EAAG4X,QAAQ6T,YAAe,OAAO,EACtC,IAAItiB,EAAMnJ,EAAGmJ,IAAKkS,EAAOb,GAAcxa,EAAG4X,QAASzO,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,GAAI1O,EAAU1K,EAAG0K,QAC3F,GAAI2Q,EAAKra,QAAU0J,EAAQkoB,aAAc,CACvC,IAAI/vB,EAAO6H,EAAQmL,QAAQ5N,YAAYC,EAAI,MAAO,CAACA,EAAI,MAAOmT,IACnB,gDACvC8tB,EAAStmC,EAAKiF,WAAWiO,YAAayjB,EAAU32B,EAAKkT,YAAcozB,EAOvE,OANAz+B,EAAQ0+B,WAAW/gC,MAAMykB,MAAQ,GACjCpiB,EAAQ2+B,kBAAoBn7B,KAAKiN,IAAIguB,EAAQz+B,EAAQ0+B,WAAWrzB,YAAcyjB,GAAW,EACzF9uB,EAAQ4+B,aAAe5+B,EAAQ2+B,kBAAoB7P,EACnD9uB,EAAQkoB,aAAeloB,EAAQ2+B,kBAAoBhuB,EAAKra,QAAU,EAClE0J,EAAQ0+B,WAAW/gC,MAAMykB,MAAQpiB,EAAQ4+B,aAAe,KACxDP,GAAkB/oC,EAAG0K,UACd,CACT,CACA,OAAO,CACT,CAEA,SAAS6+B,GAAWjc,EAAS7B,GAE3B,IADA,IAAInV,EAAS,GAAIkzB,GAAiB,EACzBzoC,EAAI,EAAGA,EAAIusB,EAAQtsB,OAAQD,IAAK,CACvC,IAAIjB,EAAOwtB,EAAQvsB,GAAIsH,EAAQ,KAE/B,GADmB,iBAARvI,IAAoBuI,EAAQvI,EAAKuI,MAAOvI,EAAOA,EAAKwH,WACnD,0BAARxH,EAAkC,CACpC,IAAK2rB,EAAe,SACb+d,GAAiB,CAC1B,CACAlzB,EAAOnS,KAAK,CAACmD,UAAWxH,EAAMuI,MAAOA,GACvC,CAEA,OADIojB,IAAgB+d,GAAkBlzB,EAAOnS,KAAK,CAACmD,UAAW,yBAA0Be,MAAO,OACxFiO,CACT,CAIA,SAASmzB,GAAc/+B,GACrB,IAAI4iB,EAAU5iB,EAAQ4iB,QAASoc,EAAQh/B,EAAQqhB,YAC/CtkB,EAAe6lB,GACf5iB,EAAQ0+B,WAAa,KACrB,IAAK,IAAIroC,EAAI,EAAGA,EAAI2oC,EAAM1oC,SAAUD,EAAG,CACrC,IAAI+0B,EAAM4T,EAAM3oC,GACZuG,EAAYwuB,EAAIxuB,UAChBe,EAAQytB,EAAIztB,MACZshC,EAAOrc,EAAQrlB,YAAYC,EAAI,MAAO,KAAM,qBAAuBZ,IACnEe,IAASshC,EAAKthC,MAAME,QAAUF,GACjB,0BAAbf,IACFoD,EAAQ0+B,WAAaO,EACrBA,EAAKthC,MAAMykB,OAASpiB,EAAQ4+B,cAAgB,GAAK,KAErD,CACAhc,EAAQjlB,MAAMqC,QAAUg/B,EAAM1oC,OAAS,GAAK,OAC5C+nC,GAAkBr+B,EACpB,CAEA,SAASk/B,GAAc5pC,GACrBypC,GAAczpC,EAAG0K,SACjB2sB,GAAUr3B,GACVu/B,GAAkBv/B,EACpB,CAMA,SAAS6pC,GAAQpZ,EAAOtnB,EAAKkf,EAAOzQ,GAClC,IAAIuN,EAAIvY,KACRA,KAAKyb,MAAQA,EAGblD,EAAE2c,gBAAkB55B,EAAI,MAAO,KAAM,+BACrCid,EAAE2c,gBAAgBp5B,aAAa,iBAAkB,QAGjDyc,EAAE6c,aAAe95B,EAAI,MAAO,KAAM,4BAClCid,EAAE6c,aAAat5B,aAAa,iBAAkB,QAE9Cyc,EAAE0X,QAAUp0B,EAAK,MAAO,KAAM,mBAE9B0c,EAAEyjB,aAAe1gC,EAAI,MAAO,KAAM,KAAM,kCACxCid,EAAEuW,UAAYxzB,EAAI,MAAO,KAAM,sBAE/Bid,EAAEtP,QAAU3N,EAAI,MAAO,KAAM,sBAE7Bid,EAAEsK,YAAcvnB,EAAI,MAAO,KAAM,sBAEjCid,EAAE0I,UAAYplB,EAAK,MAAO,CAAC0c,EAAEtP,QAASsP,EAAEsK,YAAatK,EAAEyjB,aAAczjB,EAAEuW,UAAWvW,EAAE0X,SAClE,KAAM,qCACxB,IAAItjB,EAAQ9Q,EAAK,MAAO,CAAC0c,EAAE0I,WAAY,oBAEvC1I,EAAEwI,MAAQzlB,EAAI,MAAO,CAACqR,GAAQ,KAAM,sBAEpC4L,EAAEuI,MAAQxlB,EAAI,MAAO,CAACid,EAAEwI,OAAQ,oBAChCxI,EAAEwU,WAAa,KAIfxU,EAAEyc,aAAe15B,EAAI,MAAO,KAAM,KAAM,+BAAiCqF,EAAc,mBAEvF4X,EAAEmI,QAAUplB,EAAI,MAAO,KAAM,sBAC7Bid,EAAEikB,WAAa,KAEfjkB,EAAEwJ,SAAWzmB,EAAI,MAAO,CAACid,EAAEuI,MAAOvI,EAAEyc,aAAczc,EAAEmI,SAAU,qBAC9DnI,EAAEwJ,SAASjmB,aAAa,WAAY,MAEpCyc,EAAExa,QAAUzC,EAAI,MAAO,CAACid,EAAE2c,gBAAiB3c,EAAE6c,aAAc7c,EAAEwJ,UAAW,cAEpE9oB,GAAUC,GAAkB,MAAOqf,EAAExa,QAAQtC,MAAMyhC,SAAW,cAIlE3kB,EAAExa,QAAQjC,aAAa,YAAa,MAGhCnD,GAAMC,EAAa,IAAK2f,EAAEmI,QAAQjlB,MAAMmiB,QAAU,EAAGrF,EAAEwJ,SAAStmB,MAAMimB,aAAe,GACpF3oB,GAAYT,GAASqB,IAAW4e,EAAEwJ,SAASob,WAAY,GAExDtZ,IACEA,EAAMxoB,YAAewoB,EAAMxoB,YAAYkd,EAAExa,SACtC8lB,EAAMtL,EAAExa,UAIjBwa,EAAE3F,SAAW2F,EAAE1F,OAAStW,EAAIgQ,MAC5BgM,EAAE0jB,iBAAmB1jB,EAAE2jB,eAAiB3/B,EAAIgQ,MAE5CgM,EAAEoE,KAAO,GACTpE,EAAE8hB,aAAe,KAGjB9hB,EAAEsB,iBAAmB,KAErBtB,EAAEsO,WAAa,EACftO,EAAEkiB,eAAiBliB,EAAEmiB,cAAgB,EACrCniB,EAAEoS,kBAAoB,KAEtBpS,EAAEsJ,eAAiBtJ,EAAE4J,UAAY5J,EAAEyJ,SAAW,EAC9CzJ,EAAE0e,mBAAoB,EAItB1e,EAAEmkB,aAAenkB,EAAEkkB,kBAAoBlkB,EAAEyN,aAAe,KAIxDzN,EAAE6jB,cAAe,EAEjB7jB,EAAEuN,gBAAkBvN,EAAEwN,iBAAmBxN,EAAE8I,eAAiB,KAI5D9I,EAAEC,QAAU,KACZD,EAAEE,cAAgB,EAClBF,EAAEG,gBAAiB,EAGnBH,EAAE6kB,QAAU7kB,EAAE8kB,QAAU9kB,EAAEyf,YAAczf,EAAE0f,YAAc,KAGxD1f,EAAEuX,OAAQ,EAIVvX,EAAEoX,kBAAoB,KAEtBpX,EAAE+kB,YAAc,KAEhB/kB,EAAE4G,YAAcwd,GAAW3xB,EAAQ0V,QAAS1V,EAAQ6T,aACpDge,GAActkB,GAEdkD,EAAM8hB,KAAKhlB,EACb,CAzaA+e,GAAc74B,UAAUyI,OAAS,SAAUT,EAAS/Q,GAC9CmS,GAAWpB,EAAS/Q,IACpBsK,KAAKo6B,OAAO7iC,KAAKoH,UACvB,EACA24B,GAAc74B,UAAUw6B,OAAS,WAC/B,IAAK,IAAI9kC,EAAI,EAAGA,EAAI6L,KAAKo6B,OAAOhmC,OAAQD,IACpC+S,GAAOtI,MAAM,KAAMoB,KAAKo6B,OAAOjmC,GACrC,EA+aA,IAAIqpC,GAAe,EAAGC,GAAqB,KAU3C,SAASC,GAAgB5iC,GACvB,IAAI6iC,EAAK7iC,EAAE8iC,YAAaC,EAAK/iC,EAAEgjC,YAI/B,OAHU,MAANH,GAAc7iC,EAAEijC,QAAUjjC,EAAE06B,MAAQ16B,EAAEkjC,kBAAmBL,EAAK7iC,EAAEijC,QAC1D,MAANF,GAAc/iC,EAAEijC,QAAUjjC,EAAE06B,MAAQ16B,EAAEmjC,cAAiBJ,EAAK/iC,EAAEijC,OACnD,MAANF,IAAcA,EAAK/iC,EAAEojC,YACvB,CAAC/vB,EAAGwvB,EAAI1V,EAAG4V,EACpB,CACA,SAASM,GAAiBrjC,GACxB,IAAIsjC,EAAQV,GAAgB5iC,GAG5B,OAFAsjC,EAAMjwB,GAAKsvB,GACXW,EAAMnW,GAAKwV,GACJW,CACT,CAEA,SAASC,GAAcjrC,EAAI0H,GAIrB7B,GAA4B,KAAlBC,IACuB,MAA/B9F,EAAG0K,QAAQwgC,iBAA4BlrC,EAAG0K,QAAQgjB,MAAMrlB,MAAM8iC,cAAgB,OAC3E79B,aAAatN,EAAG0K,QAAQwgC,kBAC/BlrC,EAAG0K,QAAQwgC,iBAAmB/9B,YAAW,WACvCnN,EAAG0K,QAAQwgC,iBAAmB,KAC9BlrC,EAAG0K,QAAQgjB,MAAMrlB,MAAM8iC,cAAgB,EACzC,GAAG,MAEL,IAAIH,EAAQV,GAAgB5iC,GAAI6iC,EAAKS,EAAMjwB,EAAG0vB,EAAKO,EAAMnW,EACrDuW,EAAgBf,GACA,IAAhB3iC,EAAE2jC,YACJd,EAAK7iC,EAAE4jC,OACPb,EAAK/iC,EAAE6jC,OACPH,EAAgB,GAGlB,IAAI1gC,EAAU1K,EAAG0K,QAASgD,EAAShD,EAAQikB,SAEvC6c,EAAa99B,EAAO4xB,YAAc5xB,EAAO6f,YACzCke,EAAa/9B,EAAOwxB,aAAexxB,EAAOohB,aAC9C,GAAMyb,GAAMiB,GAAcf,GAAMgB,EAAhC,CAMA,GAAIhB,GAAMjkC,GAAOb,EACf0U,EAAO,IAAK,IAAI/Y,EAAMoG,EAAEiE,OAAQ4d,EAAO7e,EAAQ6e,KAAMjoB,GAAOoM,EAAQpM,EAAMA,EAAIwH,WAC5E,IAAK,IAAI/H,EAAI,EAAGA,EAAIwoB,EAAKvoB,OAAQD,IAC/B,GAAIwoB,EAAKxoB,GAAGqG,MAAQ9F,EAAK,CACvBtB,EAAG0K,QAAQ09B,mBAAqB9mC,EAChC,MAAM+Y,CACR,CAWN,GAAIkwB,IAAOrlC,IAAUa,GAA2B,MAAjBqlC,EAW7B,OAVIX,GAAMgB,GACN5M,GAAgB7+B,EAAIkO,KAAKiN,IAAI,EAAGzN,EAAO0lB,UAAYqX,EAAKW,IAC5DhM,GAAcp/B,EAAIkO,KAAKiN,IAAI,EAAGzN,EAAOslB,WAAauX,EAAKa,MAKlDX,GAAOA,GAAMgB,IACd72B,GAAiBlN,QACrBgD,EAAQk6B,YAAc,MAMxB,GAAI6F,GAAuB,MAAjBW,EAAuB,CAC/B,IAAIM,EAASjB,EAAKW,EACd7a,EAAMvwB,EAAGmJ,IAAIiqB,UAAWtB,EAAMvB,EAAM7lB,EAAQC,QAAQmkB,aACpD4c,EAAS,EAAKnb,EAAMriB,KAAKiN,IAAI,EAAGoV,EAAMmb,EAAS,IAC5C5Z,EAAM5jB,KAAKC,IAAInO,EAAGmJ,IAAI4Q,OAAQ+X,EAAM4Z,EAAS,IACpD5M,GAAoB9+B,EAAI,CAACuwB,IAAKA,EAAKD,OAAQwB,GAC7C,CAEIsY,GAAe,IAAsB,IAAhB1iC,EAAE2jC,YACE,MAAvB3gC,EAAQk6B,aACVl6B,EAAQk6B,YAAcl3B,EAAOslB,WAAYtoB,EAAQm6B,YAAcn3B,EAAO0lB,UACtE1oB,EAAQs/B,QAAUO,EAAI7/B,EAAQu/B,QAAUQ,EACxCt9B,YAAW,WACT,GAA2B,MAAvBzC,EAAQk6B,YAAZ,CACA,IAAI+G,EAASj+B,EAAOslB,WAAatoB,EAAQk6B,YACrCgH,EAASl+B,EAAO0lB,UAAY1oB,EAAQm6B,YACpCgH,EAAUD,GAAUlhC,EAAQu/B,SAAW2B,EAASlhC,EAAQu/B,SACzD0B,GAAUjhC,EAAQs/B,SAAW2B,EAASjhC,EAAQs/B,QACjDt/B,EAAQk6B,YAAcl6B,EAAQm6B,YAAc,KACvCgH,IACLxB,IAAsBA,GAAqBD,GAAeyB,IAAWzB,GAAe,KAClFA,GARwC,CAS5C,GAAG,OAEH1/B,EAAQs/B,SAAWO,EAAI7/B,EAAQu/B,SAAWQ,GA/DQ,CAkExD,CA7GIllC,EAAM8kC,IAAsB,IACvBnlC,EAASmlC,GAAqB,GAC9BxkC,EAAUwkC,IAAsB,GAChCrkC,IAAUqkC,IAAsB,EAAE,GAiH3C,IAAIyB,GAAY,SAASjrC,EAAQ+3B,GAC/BhsB,KAAK/L,OAASA,EACd+L,KAAKgsB,UAAYA,CACnB,EAEAkT,GAAUzgC,UAAUnH,QAAU,WAAc,OAAO0I,KAAK/L,OAAO+L,KAAKgsB,UAAW,EAE/EkT,GAAUzgC,UAAU0gC,OAAS,SAAUxX,GACrC,GAAIA,GAAS3nB,KAAQ,OAAO,EAC5B,GAAI2nB,EAAMqE,WAAahsB,KAAKgsB,WAAarE,EAAM1zB,OAAOG,QAAU4L,KAAK/L,OAAOG,OAAU,OAAO,EAC7F,IAAK,IAAID,EAAI,EAAGA,EAAI6L,KAAK/L,OAAOG,OAAQD,IAAK,CAC3C,IAAIirC,EAAOp/B,KAAK/L,OAAOE,GAAIkrC,EAAQ1X,EAAM1zB,OAAOE,GAChD,IAAK8Z,GAAemxB,EAAK5nC,OAAQ6nC,EAAM7nC,UAAYyW,GAAemxB,EAAK5qC,KAAM6qC,EAAM7qC,MAAS,OAAO,CACrG,CACA,OAAO,CACT,EAEA0qC,GAAUzgC,UAAU6gC,SAAW,WAE7B,IADA,IAAIz9B,EAAM,GACD1N,EAAI,EAAGA,EAAI6L,KAAK/L,OAAOG,OAAQD,IACpC0N,EAAI1N,GAAK,IAAIorC,GAAMrxB,GAAQlO,KAAK/L,OAAOE,GAAGqD,QAAS0W,GAAQlO,KAAK/L,OAAOE,GAAGK,OAC9E,OAAO,IAAI0qC,GAAUr9B,EAAK7B,KAAKgsB,UACjC,EAEAkT,GAAUzgC,UAAU+gC,kBAAoB,WACtC,IAAK,IAAIrrC,EAAI,EAAGA,EAAI6L,KAAK/L,OAAOG,OAAQD,IACpC,IAAK6L,KAAK/L,OAAOE,GAAGE,QAAW,OAAO,EAC1C,OAAO,CACT,EAEA6qC,GAAUzgC,UAAU1C,SAAW,SAAUtG,EAAKyH,GACvCA,IAAOA,EAAMzH,GAClB,IAAK,IAAItB,EAAI,EAAGA,EAAI6L,KAAK/L,OAAOG,OAAQD,IAAK,CAC3C,IAAI2B,EAAQkK,KAAK/L,OAAOE,GACxB,GAAI6Z,GAAI9Q,EAAKpH,EAAMoN,SAAW,GAAK8K,GAAIvY,EAAKK,EAAMqN,OAAS,EACvD,OAAOhP,CACb,CACA,OAAQ,CACV,EAEA,IAAIorC,GAAQ,SAAS/nC,EAAQhD,GAC3BwL,KAAKxI,OAASA,EAAQwI,KAAKxL,KAAOA,CACpC,EASA,SAASirC,GAAmBrsC,EAAIa,EAAQ+3B,GACtC,IAAI0T,EAAWtsC,GAAMA,EAAG4X,QAAQ20B,mBAC5BC,EAAO3rC,EAAO+3B,GAClB/3B,EAAO4rC,MAAK,SAAUhjC,EAAGC,GAAK,OAAOkR,GAAInR,EAAEqG,OAAQpG,EAAEoG,OAAS,IAC9D8oB,EAAYv3B,EAAQR,EAAQ2rC,GAC5B,IAAK,IAAIzrC,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAIO,EAAMT,EAAOE,GAAIgC,EAAOlC,EAAOE,EAAI,GACnCiZ,EAAOY,GAAI7X,EAAKgN,KAAMzO,EAAIwO,QAC9B,GAAIw8B,IAAahrC,EAAIL,QAAU+Y,EAAO,EAAIA,GAAQ,EAAG,CACnD,IAAIlK,EAAOmL,GAAOlY,EAAK+M,OAAQxO,EAAIwO,QAASC,EAAKiL,GAAOjY,EAAKgN,KAAMzO,EAAIyO,MACnE28B,EAAM3pC,EAAK9B,QAAUK,EAAIwO,QAAUxO,EAAIF,KAAO2B,EAAK+M,QAAU/M,EAAK3B,KAClEL,GAAK63B,KAAeA,EACxB/3B,EAAOgS,SAAS9R,EAAG,EAAG,IAAIorC,GAAMO,EAAM38B,EAAKD,EAAM48B,EAAM58B,EAAOC,GAChE,CACF,CACA,OAAO,IAAI+7B,GAAUjrC,EAAQ+3B,EAC/B,CAEA,SAAS+T,GAAgBvoC,EAAQhD,GAC/B,OAAO,IAAI0qC,GAAU,CAAC,IAAIK,GAAM/nC,EAAQhD,GAAQgD,IAAU,EAC5D,CAIA,SAASwoC,GAAUtrB,GACjB,OAAKA,EAAOpO,KACLvT,GAAI2hB,EAAOxR,KAAKtO,KAAO8f,EAAOpO,KAAKlS,OAAS,EACxCsN,GAAIgT,EAAOpO,MAAMlS,QAAgC,GAAtBsgB,EAAOpO,KAAKlS,OAAcsgB,EAAOxR,KAAKrO,GAAK,IAFtD6f,EAAOvR,EAGpC,CAIA,SAAS88B,GAAgBxqC,EAAKif,GAC5B,GAAI1G,GAAIvY,EAAKif,EAAOxR,MAAQ,EAAK,OAAOzN,EACxC,GAAIuY,GAAIvY,EAAKif,EAAOvR,KAAO,EAAK,OAAO68B,GAAUtrB,GAEjD,IAAI9f,EAAOa,EAAIb,KAAO8f,EAAOpO,KAAKlS,QAAUsgB,EAAOvR,GAAGvO,KAAO8f,EAAOxR,KAAKtO,MAAQ,EAAGC,EAAKY,EAAIZ,GAE7F,OADIY,EAAIb,MAAQ8f,EAAOvR,GAAGvO,OAAQC,GAAMmrC,GAAUtrB,GAAQ7f,GAAK6f,EAAOvR,GAAGtO,IAClE9B,GAAI6B,EAAMC,EACnB,CAEA,SAASqrC,GAAsB3jC,EAAKmY,GAElC,IADA,IAAI7S,EAAM,GACD1N,EAAI,EAAGA,EAAIoI,EAAI9E,IAAIxD,OAAOG,OAAQD,IAAK,CAC9C,IAAI2B,EAAQyG,EAAI9E,IAAIxD,OAAOE,GAC3B0N,EAAItK,KAAK,IAAIgoC,GAAMU,GAAgBnqC,EAAM0B,OAAQkd,GAC9BurB,GAAgBnqC,EAAMtB,KAAMkgB,IACjD,CACA,OAAO+qB,GAAmBljC,EAAInJ,GAAIyO,EAAKtF,EAAI9E,IAAIu0B,UACjD,CAEA,SAASmU,GAAU1qC,EAAKnC,EAAK4hB,GAC3B,OAAIzf,EAAIb,MAAQtB,EAAIsB,KACT7B,GAAImiB,EAAGtgB,KAAMa,EAAIZ,GAAKvB,EAAIuB,GAAKqgB,EAAGrgB,IAElC9B,GAAImiB,EAAGtgB,MAAQa,EAAIb,KAAOtB,EAAIsB,MAAOa,EAAIZ,GACtD,CAyBA,SAASurC,GAAShtC,GAChBA,EAAGmJ,IAAIoO,KAAOI,GAAQ3X,EAAG4X,QAAS5X,EAAGmJ,IAAI8jC,YACzCC,GAAeltC,EACjB,CAEA,SAASktC,GAAeltC,GACtBA,EAAGmJ,IAAIyQ,MAAK,SAAUpY,GAChBA,EAAKkd,aAAcld,EAAKkd,WAAa,MACrCld,EAAKyc,SAAUzc,EAAKyc,OAAS,KACnC,IACAje,EAAGmJ,IAAI2V,aAAe9e,EAAGmJ,IAAI0V,kBAAoB7e,EAAGmJ,IAAIgQ,MACxD6lB,GAAYh/B,EAAI,KAChBA,EAAGM,MAAMkd,UACLxd,EAAGuU,OAAS8iB,GAAUr3B,EAC5B,CAOA,SAASmtC,GAAkBhkC,EAAKmY,GAC9B,OAAyB,GAAlBA,EAAOxR,KAAKrO,IAA2B,GAAhB6f,EAAOvR,GAAGtO,IAA+B,IAApB6M,GAAIgT,EAAOpO,SAC1D/J,EAAInJ,IAAMmJ,EAAInJ,GAAG4X,QAAQw1B,sBAC/B,CAGA,SAASC,GAAUlkC,EAAKmY,EAAQG,EAAa+D,GAC3C,SAAS8nB,EAASjhC,GAAI,OAAOoV,EAAcA,EAAYpV,GAAK,IAAI,CAChE,SAASi0B,EAAO9+B,EAAM0R,EAAMgO,IAhgG9B,SAAoB1f,EAAM0R,EAAMuO,EAAa+D,GAC3ChkB,EAAK0R,KAAOA,EACR1R,EAAKkd,aAAcld,EAAKkd,WAAa,MACrCld,EAAKyc,SAAUzc,EAAKyc,OAAS,MACf,MAAdzc,EAAK8O,QAAiB9O,EAAK8O,MAAQ,MACvCwS,GAAkBthB,GAClBwhB,GAAkBxhB,EAAMigB,GACxB,IAAIkV,EAAYnR,EAAiBA,EAAehkB,GAAQ,EACpDm1B,GAAan1B,EAAKuY,QAAUD,GAAiBtY,EAAMm1B,EACzD,EAw/FI4W,CAAW/rC,EAAM0R,EAAMgO,EAAOsE,GAC9BkE,GAAYloB,EAAM,SAAUA,EAAM8f,EACpC,CACA,SAASksB,EAAS7oC,EAAOmF,GAEvB,IADA,IAAIwM,EAAS,GACJvV,EAAI4D,EAAO5D,EAAI+I,IAAO/I,EAC3BuV,EAAOnS,KAAK,IAAIohB,GAAKrS,EAAKnS,GAAIusC,EAASvsC,GAAIykB,IAC/C,OAAOlP,CACT,CAEA,IAAIxG,EAAOwR,EAAOxR,KAAMC,EAAKuR,EAAOvR,GAAImD,EAAOoO,EAAOpO,KAClDu6B,EAAYv0B,GAAQ/P,EAAK2G,EAAKtO,MAAOijB,EAAWvL,GAAQ/P,EAAK4G,EAAGvO,MAChEksC,EAAWp/B,GAAI4E,GAAOy6B,EAAYL,EAASp6B,EAAKlS,OAAS,GAAI4sC,EAAS79B,EAAGvO,KAAOsO,EAAKtO,KAGzF,GAAI8f,EAAOC,KACTpY,EAAI0kC,OAAO,EAAGL,EAAS,EAAGt6B,EAAKlS,SAC/BmI,EAAI2kC,OAAO56B,EAAKlS,OAAQmI,EAAIiQ,KAAOlG,EAAKlS,aACnC,GAAImsC,GAAkBhkC,EAAKmY,GAAS,CAGzC,IAAIysB,EAAQP,EAAS,EAAGt6B,EAAKlS,OAAS,GACtCs/B,EAAO7b,EAAUA,EAASvR,KAAMy6B,GAC5BC,GAAUzkC,EAAI2kC,OAAOh+B,EAAKtO,KAAMosC,GAChCG,EAAM/sC,QAAUmI,EAAI0kC,OAAO/9B,EAAKtO,KAAMusC,EAC5C,MAAO,GAAIN,GAAahpB,EACtB,GAAmB,GAAfvR,EAAKlS,OACPs/B,EAAOmN,EAAWA,EAAUv6B,KAAK3P,MAAM,EAAGuM,EAAKrO,IAAMisC,EAAWD,EAAUv6B,KAAK3P,MAAMwM,EAAGtO,IAAKksC,OACxF,CACL,IAAIK,EAAUR,EAAS,EAAGt6B,EAAKlS,OAAS,GACxCgtC,EAAQ7pC,KAAK,IAAIohB,GAAKmoB,EAAWD,EAAUv6B,KAAK3P,MAAMwM,EAAGtO,IAAKksC,EAAWnoB,IACzE8a,EAAOmN,EAAWA,EAAUv6B,KAAK3P,MAAM,EAAGuM,EAAKrO,IAAMyR,EAAK,GAAIo6B,EAAS,IACvEnkC,EAAI0kC,OAAO/9B,EAAKtO,KAAO,EAAGwsC,EAC5B,MACK,GAAmB,GAAf96B,EAAKlS,OACds/B,EAAOmN,EAAWA,EAAUv6B,KAAK3P,MAAM,EAAGuM,EAAKrO,IAAMyR,EAAK,GAAKuR,EAASvR,KAAK3P,MAAMwM,EAAGtO,IAAK6rC,EAAS,IACpGnkC,EAAI2kC,OAAOh+B,EAAKtO,KAAO,EAAGosC,OACrB,CACLtN,EAAOmN,EAAWA,EAAUv6B,KAAK3P,MAAM,EAAGuM,EAAKrO,IAAMyR,EAAK,GAAIo6B,EAAS,IACvEhN,EAAO7b,EAAUipB,EAAWjpB,EAASvR,KAAK3P,MAAMwM,EAAGtO,IAAKksC,GACxD,IAAIM,EAAUT,EAAS,EAAGt6B,EAAKlS,OAAS,GACpC4sC,EAAS,GAAKzkC,EAAI2kC,OAAOh+B,EAAKtO,KAAO,EAAGosC,EAAS,GACrDzkC,EAAI0kC,OAAO/9B,EAAKtO,KAAO,EAAGysC,EAC5B,CAEAvkB,GAAYvgB,EAAK,SAAUA,EAAKmY,EAClC,CAGA,SAAS4sB,GAAW/kC,EAAK+B,EAAGijC,IAC1B,SAASC,EAAUjlC,EAAKklC,EAAMC,GAC5B,GAAInlC,EAAIolC,OAAU,IAAK,IAAIxtC,EAAI,EAAGA,EAAIoI,EAAIolC,OAAOvtC,SAAUD,EAAG,CAC5D,IAAIytC,EAAMrlC,EAAIolC,OAAOxtC,GACrB,GAAIytC,EAAIrlC,KAAOklC,EAAf,CACA,IAAII,EAASH,GAAcE,EAAIF,WAC3BH,IAAmBM,IACvBvjC,EAAEsjC,EAAIrlC,IAAKslC,GACXL,EAAUI,EAAIrlC,IAAKA,EAAKslC,GAJQ,CAKlC,CACF,CACAL,CAAUjlC,EAAK,MAAM,EACvB,CAGA,SAASulC,GAAU1uC,EAAImJ,GACrB,GAAIA,EAAInJ,GAAM,MAAM,IAAIqZ,MAAM,oCAC9BrZ,EAAGmJ,IAAMA,EACTA,EAAInJ,GAAKA,EACTy2B,GAAoBz2B,GACpBgtC,GAAShtC,GACT2uC,GAAkB3uC,GAClBA,EAAG4X,QAAQ3G,UAAY9H,EAAI8H,UACtBjR,EAAG4X,QAAQoY,cAAgB9K,GAAYllB,GAC5CA,EAAG4X,QAAQL,KAAOpO,EAAI8jC,WACtB5V,GAAUr3B,EACZ,CAEA,SAAS2uC,GAAkB3uC,IACN,OAApBA,EAAGmJ,IAAI8H,UAAqB1H,EAAWpC,GAASnH,EAAG0K,QAAQmyB,QAAS,iBACrE,CASA,SAAS+R,GAAQ7rC,GAIf6J,KAAKiiC,KAAO,GAAIjiC,KAAKkiC,OAAS,GAC9BliC,KAAKmiC,UAAYhsC,EAAOA,EAAKgsC,UAAYlmB,IAGzCjc,KAAKoiC,YAAcpiC,KAAKqiC,YAAc,EACtCriC,KAAKsiC,OAAStiC,KAAKuiC,UAAY,KAC/BviC,KAAKwiC,WAAaxiC,KAAKyiC,cAAgB,KAEvCziC,KAAK0iC,WAAa1iC,KAAK2iC,cAAgBxsC,EAAOA,EAAKwsC,cAAgB,CACrE,CAIA,SAASC,GAAwBrmC,EAAKmY,GACpC,IAAImuB,EAAa,CAAC3/B,KAAMgL,GAAQwG,EAAOxR,MAAOC,GAAI68B,GAAUtrB,GAASpO,KAAMyG,GAAWxQ,EAAKmY,EAAOxR,KAAMwR,EAAOvR,KAG/G,OAFA2/B,GAAiBvmC,EAAKsmC,EAAYnuB,EAAOxR,KAAKtO,KAAM8f,EAAOvR,GAAGvO,KAAO,GACrE0sC,GAAW/kC,GAAK,SAAUA,GAAO,OAAOumC,GAAiBvmC,EAAKsmC,EAAYnuB,EAAOxR,KAAKtO,KAAM8f,EAAOvR,GAAGvO,KAAO,EAAI,IAAG,GAC7GiuC,CACT,CAIA,SAASE,GAAqB3iC,GAC5B,KAAOA,EAAMhM,QACAsN,GAAItB,GACNnM,QAAUmM,EAAM4iC,KAG7B,CAmBA,SAASC,GAAmB1mC,EAAKmY,EAAQwuB,EAAUC,GACjD,IAAIC,EAAO7mC,EAAI8mC,QACfD,EAAKlB,OAAO9tC,OAAS,EACrB,IAAsBM,EAClB+Z,EADAvO,GAAQ,IAAII,KAGhB,IAAK8iC,EAAKd,QAAUa,GACfC,EAAKZ,YAAc9tB,EAAO1T,QAAU0T,EAAO1T,SACd,KAA3B0T,EAAO1T,OAAO1L,OAAO,IAAa8tC,EAAKhB,YAAcliC,GAAQ3D,EAAInJ,GAAKmJ,EAAInJ,GAAG4X,QAAQs4B,kBAAoB,MAC/E,KAA3B5uB,EAAO1T,OAAO1L,OAAO,OACtBZ,EAzBP,SAAyB0uC,EAAMrJ,GAC7B,OAAIA,GACFgJ,GAAqBK,EAAKnB,MACnBvgC,GAAI0hC,EAAKnB,OACPmB,EAAKnB,KAAK7tC,SAAWsN,GAAI0hC,EAAKnB,MAAMhuC,OACtCyN,GAAI0hC,EAAKnB,MACPmB,EAAKnB,KAAK7tC,OAAS,IAAMgvC,EAAKnB,KAAKmB,EAAKnB,KAAK7tC,OAAS,GAAGH,QAClEmvC,EAAKnB,KAAKe,MACHthC,GAAI0hC,EAAKnB,YAFX,CAIT,CAeasB,CAAgBH,EAAMA,EAAKd,QAAUa,IAE9C10B,EAAO/M,GAAIhN,EAAI2oB,SACoB,GAA/BrP,GAAI0G,EAAOxR,KAAMwR,EAAOvR,KAAyC,GAA7B6K,GAAI0G,EAAOxR,KAAMuL,EAAKtL,IAG5DsL,EAAKtL,GAAK68B,GAAUtrB,GAGpBhgB,EAAI2oB,QAAQ9lB,KAAKqrC,GAAwBrmC,EAAKmY,QAE3C,CAEL,IAAIjP,EAAS/D,GAAI0hC,EAAKnB,MAMtB,IALKx8B,GAAWA,EAAOxR,QACnBuvC,GAAuBjnC,EAAI9E,IAAK2rC,EAAKnB,MACzCvtC,EAAM,CAAC2oB,QAAS,CAACulB,GAAwBrmC,EAAKmY,IACvCguB,WAAYU,EAAKV,YACxBU,EAAKnB,KAAK1qC,KAAK7C,GACR0uC,EAAKnB,KAAK7tC,OAASgvC,EAAKjB,WAC7BiB,EAAKnB,KAAKnS,QACLsT,EAAKnB,KAAK,GAAGhuC,QAAUmvC,EAAKnB,KAAKnS,OAE1C,CACAsT,EAAKnB,KAAK1qC,KAAK2rC,GACfE,EAAKV,aAAeU,EAAKT,cACzBS,EAAKhB,YAAcgB,EAAKf,YAAcniC,EACtCkjC,EAAKd,OAASc,EAAKb,UAAYY,EAC/BC,EAAKZ,WAAaY,EAAKX,cAAgB/tB,EAAO1T,OAEzCyN,GAAQvH,GAAO3K,EAAK,eAC3B,CAeA,SAASknC,GAAsBlnC,EAAK9E,EAAK0rC,EAAMn4B,GAC7C,IAAIo4B,EAAO7mC,EAAI8mC,QAASriC,EAASgK,GAAWA,EAAQhK,OAMhDmiC,GAAQC,EAAKb,WACZvhC,GAAUoiC,EAAKX,eAAiBzhC,IAC/BoiC,EAAKhB,aAAegB,EAAKf,aAAee,EAAKZ,YAAcxhC,GAtBnE,SAAmCzE,EAAKyE,EAAQ7K,EAAMsB,GACpD,IAAI5C,EAAKmM,EAAO1L,OAAO,GACvB,MAAa,KAANT,GACC,KAANA,GACAsB,EAAKlC,OAAOG,QAAUqD,EAAIxD,OAAOG,QACjC+B,EAAKqpC,qBAAuB/nC,EAAI+nC,qBAChC,IAAIl/B,KAAO/D,EAAI8mC,QAAQhB,cAAgB9lC,EAAInJ,GAAKmJ,EAAInJ,GAAG4X,QAAQs4B,kBAAoB,IACvF,CAgBQI,CAA0BnnC,EAAKyE,EAAQU,GAAI0hC,EAAKnB,MAAOxqC,IACzD2rC,EAAKnB,KAAKmB,EAAKnB,KAAK7tC,OAAS,GAAKqD,EAElC+rC,GAAuB/rC,EAAK2rC,EAAKnB,MAErCmB,EAAKf,aAAe,IAAI/hC,KACxB8iC,EAAKX,cAAgBzhC,EACrBoiC,EAAKb,UAAYY,EACbn4B,IAAiC,IAAtBA,EAAQ24B,WACnBZ,GAAqBK,EAAKlB,OAChC,CAEA,SAASsB,GAAuB/rC,EAAKmsC,GACnC,IAAIjgB,EAAMjiB,GAAIkiC,GACRjgB,GAAOA,EAAI1vB,QAAU0vB,EAAIwb,OAAO1nC,IAClCmsC,EAAKrsC,KAAKE,EAChB,CAGA,SAASqrC,GAAiBvmC,EAAKmY,EAAQxR,EAAMC,GAC3C,IAAI0gC,EAAWnvB,EAAO,SAAWnY,EAAI0D,IAAKR,EAAI,EAC9ClD,EAAIyQ,KAAK1L,KAAKiN,IAAIhS,EAAIgQ,MAAOrJ,GAAO5B,KAAKC,IAAIhF,EAAIgQ,MAAQhQ,EAAIiQ,KAAMrJ,IAAK,SAAUvO,GAC5EA,EAAKigB,eACJgvB,IAAaA,EAAWnvB,EAAO,SAAWnY,EAAI0D,IAAM,CAAC,IAAIR,GAAK7K,EAAKigB,eACtEpV,CACJ,GACF,CAIA,SAASqkC,GAAmBxvB,GAC1B,IAAKA,EAAS,OAAO,KAErB,IADA,IAAIzS,EACK1N,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAC9BmgB,EAAMngB,GAAGigB,OAAO2vB,kBAA0BliC,IAAOA,EAAMyS,EAAM3d,MAAM,EAAGxC,IACjE0N,GAAOA,EAAItK,KAAK+c,EAAMngB,IAEjC,OAAQ0N,EAAcA,EAAIzN,OAASyN,EAAM,KAA3ByS,CAChB,CAgBA,SAAS0vB,GAAcznC,EAAKmY,GAC1B,IAAIphB,EAdN,SAAqBiJ,EAAKmY,GACxB,IAAI9Q,EAAQ8Q,EAAO,SAAWnY,EAAI0D,IAClC,IAAK2D,EAAS,OAAO,KAErB,IADA,IAAIsR,EAAK,GACA/gB,EAAI,EAAGA,EAAIugB,EAAOpO,KAAKlS,SAAUD,EACtC+gB,EAAG3d,KAAKusC,GAAmBlgC,EAAMzP,KACrC,OAAO+gB,CACT,CAOY+uB,CAAY1nC,EAAKmY,GACvBwvB,EAAYzvB,GAAuBlY,EAAKmY,GAC5C,IAAKphB,EAAO,OAAO4wC,EACnB,IAAKA,EAAa,OAAO5wC,EAEzB,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAAIc,SAAUD,EAAG,CACnC,IAAIgwC,EAAS7wC,EAAIa,GAAIiwC,EAAaF,EAAU/vC,GAC5C,GAAIgwC,GAAUC,EACZ9vB,EAAO,IAAK,IAAInP,EAAI,EAAGA,EAAIi/B,EAAWhwC,SAAU+Q,EAAG,CAEjD,IADA,IAAIoP,EAAO6vB,EAAWj/B,GACb+Z,EAAI,EAAGA,EAAIilB,EAAO/vC,SAAU8qB,EACjC,GAAIilB,EAAOjlB,GAAG9K,QAAUG,EAAKH,OAAU,SAASE,EACpD6vB,EAAO5sC,KAAKgd,EACd,MACS6vB,IACT9wC,EAAIa,GAAKiwC,EAEb,CACA,OAAO9wC,CACT,CAIA,SAAS+wC,GAAiBjK,EAAQkK,EAAUC,GAE1C,IADA,IAAInxB,EAAO,GACFjf,EAAI,EAAGA,EAAIimC,EAAOhmC,SAAUD,EAAG,CACtC,IAAIqwC,EAAQpK,EAAOjmC,GACnB,GAAIqwC,EAAMvwC,OACRmf,EAAK7b,KAAKgtC,EAAiBrF,GAAUzgC,UAAU6gC,SAAS5gC,KAAK8lC,GAASA,OADxE,CAIA,IAAInnB,EAAUmnB,EAAMnnB,QAASonB,EAAa,GAC1CrxB,EAAK7b,KAAK,CAAC8lB,QAASonB,IACpB,IAAK,IAAIt/B,EAAI,EAAGA,EAAIkY,EAAQjpB,SAAU+Q,EAAG,CACvC,IAAIuP,EAAS2I,EAAQlY,GAAIS,OAAI,EAE7B,GADA6+B,EAAWltC,KAAK,CAAC2L,KAAMwR,EAAOxR,KAAMC,GAAIuR,EAAOvR,GAAImD,KAAMoO,EAAOpO,OAC5Dg+B,EAAY,IAAK,IAAIrlC,KAAQyV,GAAc9O,EAAI3G,EAAKjF,MAAM,mBACxDvF,EAAQ6vC,EAAUrqC,OAAO2L,EAAE,MAAQ,IACrClE,GAAI+iC,GAAYxlC,GAAQyV,EAAOzV,UACxByV,EAAOzV,GAGpB,CAZA,CAaF,CACA,OAAOmU,CACT,CAUA,SAASsxB,GAAY5uC,EAAOtB,EAAMmzB,EAAOqT,GACvC,GAAIA,EAAQ,CACV,IAAIxjC,EAAS1B,EAAM0B,OACnB,GAAImwB,EAAO,CACT,IAAIgd,EAAY32B,GAAIxZ,EAAMgD,GAAU,EAChCmtC,GAAc32B,GAAI2Z,EAAOnwB,GAAU,GACrCA,EAAShD,EACTA,EAAOmzB,GACEgd,GAAc32B,GAAIxZ,EAAMmzB,GAAS,IAC1CnzB,EAAOmzB,EAEX,CACA,OAAO,IAAI4X,GAAM/nC,EAAQhD,EAC3B,CACE,OAAO,IAAI+qC,GAAM5X,GAASnzB,EAAMA,EAEpC,CAGA,SAASowC,GAAgBroC,EAAK/H,EAAMmzB,EAAO3c,EAASgwB,GACpC,MAAVA,IAAkBA,EAASz+B,EAAInJ,KAAOmJ,EAAInJ,GAAG0K,QAAQgyB,OAASvzB,EAAIy+B,SACtE6J,GAAatoC,EAAK,IAAI2iC,GAAU,CAACwF,GAAYnoC,EAAI9E,IAAIH,UAAW9C,EAAMmzB,EAAOqT,IAAU,GAAIhwB,EAC7F,CAIA,SAAS85B,GAAiBvoC,EAAKwoC,EAAO/5B,GAGpC,IAFA,IAAInJ,EAAM,GACNm5B,EAASz+B,EAAInJ,KAAOmJ,EAAInJ,GAAG0K,QAAQgyB,OAASvzB,EAAIy+B,QAC3C7mC,EAAI,EAAGA,EAAIoI,EAAI9E,IAAIxD,OAAOG,OAAQD,IACvC0N,EAAI1N,GAAKuwC,GAAYnoC,EAAI9E,IAAIxD,OAAOE,GAAI4wC,EAAM5wC,GAAI,KAAM6mC,GAE5D6J,GAAatoC,EADAkjC,GAAmBljC,EAAInJ,GAAIyO,EAAKtF,EAAI9E,IAAIu0B,WAC3BhhB,EAC5B,CAGA,SAASg6B,GAAoBzoC,EAAKpI,EAAG2B,EAAOkV,GAC1C,IAAI/W,EAASsI,EAAI9E,IAAIxD,OAAO0C,MAAM,GAClC1C,EAAOE,GAAK2B,EACZ+uC,GAAatoC,EAAKkjC,GAAmBljC,EAAInJ,GAAIa,EAAQsI,EAAI9E,IAAIu0B,WAAYhhB,EAC3E,CAGA,SAASi6B,GAAmB1oC,EAAK/E,EAAQhD,EAAMwW,GAC7C65B,GAAatoC,EAAKwjC,GAAgBvoC,EAAQhD,GAAOwW,EACnD,CAqBA,SAASk6B,GAA2B3oC,EAAK9E,EAAKuT,GAC5C,IAAIi3B,EAAO1lC,EAAI8mC,QAAQpB,KAAMxzB,EAAO/M,GAAIugC,GACpCxzB,GAAQA,EAAKxa,QACfguC,EAAKA,EAAK7tC,OAAS,GAAKqD,EACxB0tC,GAAmB5oC,EAAK9E,EAAKuT,IAE7B65B,GAAatoC,EAAK9E,EAAKuT,EAE3B,CAGA,SAAS65B,GAAatoC,EAAK9E,EAAKuT,GAC9Bm6B,GAAmB5oC,EAAK9E,EAAKuT,GAC7By4B,GAAsBlnC,EAAKA,EAAI9E,IAAK8E,EAAInJ,GAAKmJ,EAAInJ,GAAGuU,MAAM1H,GAAKmlC,IAAKp6B,EACtE,CAEA,SAASm6B,GAAmB5oC,EAAK9E,EAAKuT,IAChCnD,GAAWtL,EAAK,0BAA4BA,EAAInJ,IAAMyU,GAAWtL,EAAInJ,GAAI,4BACzEqE,EAnCN,SAA+B8E,EAAK9E,EAAKuT,GACvC,IAAIlM,EAAM,CACR7K,OAAQwD,EAAIxD,OACZy/B,OAAQ,SAASz/B,GACf+L,KAAK/L,OAAS,GACd,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAC/B6L,KAAK/L,OAAOE,GAAK,IAAIorC,GAAM/wB,GAAQjS,EAAKtI,EAAOE,GAAGqD,QACzBgX,GAAQjS,EAAKtI,EAAOE,GAAGK,MACtD,EACAwM,OAAQgK,GAAWA,EAAQhK,QAI7B,OAFAkG,GAAO3K,EAAK,wBAAyBA,EAAKuC,GACtCvC,EAAInJ,IAAM8T,GAAO3K,EAAInJ,GAAI,wBAAyBmJ,EAAInJ,GAAI0L,GAC1DA,EAAI7K,QAAUwD,EAAIxD,OAAiBwrC,GAAmBljC,EAAInJ,GAAI0L,EAAI7K,OAAQ6K,EAAI7K,OAAOG,OAAS,GACpFqD,CAChB,CAoBY4tC,CAAsB9oC,EAAK9E,EAAKuT,IAE1C,IAAIsX,EAAOtX,GAAWA,EAAQsX,OAC3BtU,GAAIvW,EAAIH,UAAU9C,KAAM+H,EAAI9E,IAAIH,UAAU9C,MAAQ,GAAK,EAAI,GAC9D8wC,GAAkB/oC,EAAKgpC,GAAsBhpC,EAAK9E,EAAK6qB,GAAM,IAEvDtX,IAA8B,IAAnBA,EAAQlK,SAAqBvE,EAAInJ,IAAsC,YAAhCmJ,EAAInJ,GAAGJ,UAAU,aACrE0+B,GAAoBn1B,EAAInJ,GAC9B,CAEA,SAASkyC,GAAkB/oC,EAAK9E,GAC1BA,EAAI0nC,OAAO5iC,EAAI9E,OAEnB8E,EAAI9E,IAAMA,EAEN8E,EAAInJ,KACNmJ,EAAInJ,GAAGuU,MAAMiuB,YAAc,EAC3Br5B,EAAInJ,GAAGuU,MAAMquB,kBAAmB,EAChCvuB,GAAqBlL,EAAInJ,KAE3B0pB,GAAYvgB,EAAK,iBAAkBA,GACrC,CAIA,SAASipC,GAAiBjpC,GACxB+oC,GAAkB/oC,EAAKgpC,GAAsBhpC,EAAKA,EAAI9E,IAAK,MAAM,GACnE,CAIA,SAAS8tC,GAAsBhpC,EAAK9E,EAAK6qB,EAAMmjB,GAE7C,IADA,IAAI5jC,EACK1N,EAAI,EAAGA,EAAIsD,EAAIxD,OAAOG,OAAQD,IAAK,CAC1C,IAAI2B,EAAQ2B,EAAIxD,OAAOE,GACnBb,EAAMmE,EAAIxD,OAAOG,QAAUmI,EAAI9E,IAAIxD,OAAOG,QAAUmI,EAAI9E,IAAIxD,OAAOE,GACnEuxC,EAAYC,GAAWppC,EAAKzG,EAAM0B,OAAQlE,GAAOA,EAAIkE,OAAQ8qB,EAAMmjB,GACnEG,EAAU9vC,EAAMtB,MAAQsB,EAAM0B,OAASkuC,EAAYC,GAAWppC,EAAKzG,EAAMtB,KAAMlB,GAAOA,EAAIkB,KAAM8tB,EAAMmjB,IACtG5jC,GAAO6jC,GAAa5vC,EAAM0B,QAAUouC,GAAW9vC,EAAMtB,QAClDqN,IAAOA,EAAMpK,EAAIxD,OAAO0C,MAAM,EAAGxC,IACtC0N,EAAI1N,GAAK,IAAIorC,GAAMmG,EAAWE,GAElC,CACA,OAAO/jC,EAAM49B,GAAmBljC,EAAInJ,GAAIyO,EAAKpK,EAAIu0B,WAAav0B,CAChE,CAEA,SAASouC,GAAgBtpC,EAAK9G,EAAKqwC,EAAQ1uC,EAAKquC,GAC9C,IAAI7wC,EAAO0X,GAAQ/P,EAAK9G,EAAIb,MAC5B,GAAIA,EAAKigB,YAAe,IAAK,IAAI1gB,EAAI,EAAGA,EAAIS,EAAKigB,YAAYzgB,SAAUD,EAAG,CACxE,IAAI6iB,EAAKpiB,EAAKigB,YAAY1gB,GAAIyR,EAAIoR,EAAG5C,OAKjC2xB,EAAqB,eAAgBngC,GAAMA,EAAEogC,WAAapgC,EAAEuP,cAC5D8wB,EAAsB,gBAAiBrgC,GAAMA,EAAEsgC,YAActgC,EAAE0P,eAEnE,IAAgB,MAAX0B,EAAG9T,OAAiB6iC,EAAoB/uB,EAAG9T,MAAQzN,EAAIZ,GAAKmiB,EAAG9T,KAAOzN,EAAIZ,OACjE,MAATmiB,EAAG7T,KAAe8iC,EAAqBjvB,EAAG7T,IAAM1N,EAAIZ,GAAKmiB,EAAG7T,GAAK1N,EAAIZ,KAAM,CAC9E,GAAI4wC,IACFv+B,GAAOtB,EAAG,qBACNA,EAAEm+B,mBAAmB,CACvB,GAAKnvC,EAAKigB,YACL,GAAG1gB,EAAG,QAAQ,CADM,KAE3B,CAEF,IAAKyR,EAAEugC,OAAU,SAEjB,GAAIL,EAAQ,CACV,IAAIM,EAAOxgC,EAAE+Q,KAAKvf,EAAM,EAAI,GAAK,GAAIgW,OAAO,EAG5C,IAFIhW,EAAM,EAAI6uC,EAAqBF,KAC/BK,EAAOC,GAAQ9pC,EAAK6pC,GAAOhvC,EAAKgvC,GAAQA,EAAKxxC,MAAQa,EAAIb,KAAOA,EAAO,OACvEwxC,GAAQA,EAAKxxC,MAAQa,EAAIb,OAASwY,EAAOY,GAAIo4B,EAAMN,MAAa1uC,EAAM,EAAIgW,EAAO,EAAIA,EAAO,GAC5F,OAAOy4B,GAAgBtpC,EAAK6pC,EAAM3wC,EAAK2B,EAAKquC,EAClD,CAEA,IAAIa,EAAM1gC,EAAE+Q,KAAKvf,EAAM,GAAK,EAAI,GAGhC,OAFIA,EAAM,EAAI2uC,EAAoBE,KAC9BK,EAAMD,GAAQ9pC,EAAK+pC,EAAKlvC,EAAKkvC,EAAI1xC,MAAQa,EAAIb,KAAOA,EAAO,OACxD0xC,EAAMT,GAAgBtpC,EAAK+pC,EAAK7wC,EAAK2B,EAAKquC,GAAY,IAC/D,CACF,CACA,OAAOhwC,CACT,CAGA,SAASkwC,GAAWppC,EAAK9G,EAAKqwC,EAAQxjB,EAAMmjB,GAC1C,IAAIruC,EAAMkrB,GAAQ,EAKlB,OAJYujB,GAAgBtpC,EAAK9G,EAAKqwC,EAAQ1uC,EAAKquC,KAC7CA,GAAYI,GAAgBtpC,EAAK9G,EAAKqwC,EAAQ1uC,GAAK,IACrDyuC,GAAgBtpC,EAAK9G,EAAKqwC,GAAS1uC,EAAKquC,KACtCA,GAAYI,GAAgBtpC,EAAK9G,EAAKqwC,GAAS1uC,GAAK,KAExDmF,EAAIgqC,UAAW,EACRxzC,GAAIwJ,EAAIgQ,MAAO,GAG1B,CAEA,SAAS85B,GAAQ9pC,EAAK9G,EAAK2B,EAAKxC,GAC9B,OAAIwC,EAAM,GAAe,GAAV3B,EAAIZ,GACbY,EAAIb,KAAO2H,EAAIgQ,MAAgBiC,GAAQjS,EAAKxJ,GAAI0C,EAAIb,KAAO,IACjD,KACLwC,EAAM,GAAK3B,EAAIZ,KAAOD,GAAQ0X,GAAQ/P,EAAK9G,EAAIb,OAAO0R,KAAKlS,OAChEqB,EAAIb,KAAO2H,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,EAAYzZ,GAAI0C,EAAIb,KAAO,EAAG,GACtD,KAEP,IAAI7B,GAAI0C,EAAIb,KAAMa,EAAIZ,GAAKuC,EAEtC,CAEA,SAASovC,GAAUpzC,GACjBA,EAAGyxC,aAAa9xC,GAAIK,EAAGytC,YAAa,GAAI9tC,GAAIK,EAAGykB,YAAahX,EAC9D,CAKA,SAAS4lC,GAAalqC,EAAKmY,EAAQgf,GACjC,IAAI50B,EAAM,CACR4nC,UAAU,EACVxjC,KAAMwR,EAAOxR,KACbC,GAAIuR,EAAOvR,GACXmD,KAAMoO,EAAOpO,KACbtF,OAAQ0T,EAAO1T,OACf2lC,OAAQ,WAAc,OAAO7nC,EAAI4nC,UAAW,CAAM,GAWpD,OATIhT,IAAU50B,EAAI40B,OAAS,SAAUxwB,EAAMC,EAAImD,EAAMtF,GAC/CkC,IAAQpE,EAAIoE,KAAOsL,GAAQjS,EAAK2G,IAChCC,IAAMrE,EAAIqE,GAAKqL,GAAQjS,EAAK4G,IAC5BmD,IAAQxH,EAAIwH,KAAOA,QACR0I,IAAXhO,IAAwBlC,EAAIkC,OAASA,EAC3C,GACAkG,GAAO3K,EAAK,eAAgBA,EAAKuC,GAC7BvC,EAAInJ,IAAM8T,GAAO3K,EAAInJ,GAAI,eAAgBmJ,EAAInJ,GAAI0L,GAEjDA,EAAI4nC,UACFnqC,EAAInJ,KAAMmJ,EAAInJ,GAAGuU,MAAMiuB,YAAc,GAClC,MAEF,CAAC1yB,KAAMpE,EAAIoE,KAAMC,GAAIrE,EAAIqE,GAAImD,KAAMxH,EAAIwH,KAAMtF,OAAQlC,EAAIkC,OAClE,CAIA,SAAS4lC,GAAWrqC,EAAKmY,EAAQmyB,GAC/B,GAAItqC,EAAInJ,GAAI,CACV,IAAKmJ,EAAInJ,GAAGuU,MAAS,OAAO5S,GAAUwH,EAAInJ,GAAIwzC,GAAlB7xC,CAA8BwH,EAAKmY,EAAQmyB,GACvE,GAAItqC,EAAInJ,GAAGM,MAAMozC,cAAiB,MACpC,CAEA,KAAIj/B,GAAWtL,EAAK,iBAAmBA,EAAInJ,IAAMyU,GAAWtL,EAAInJ,GAAI,mBAClEshB,EAAS+xB,GAAalqC,EAAKmY,GAAQ,IADrC,CAOA,IAAI1X,EAAQiX,KAAqB4yB,GA9yHnC,SAA8BtqC,EAAK2G,EAAMC,GACvC,IAAIwb,EAAU,KAQd,GAPApiB,EAAIyQ,KAAK9J,EAAKtO,KAAMuO,EAAGvO,KAAO,GAAG,SAAUA,GACzC,GAAIA,EAAKigB,YAAe,IAAK,IAAI1gB,EAAI,EAAGA,EAAIS,EAAKigB,YAAYzgB,SAAUD,EAAG,CACxE,IAAI4yC,EAAOnyC,EAAKigB,YAAY1gB,GAAGigB,QAC3B2yB,EAAKrX,UAAc/Q,IAAsC,GAA3BlqB,EAAQkqB,EAASooB,KAC9CpoB,IAAYA,EAAU,KAAKpnB,KAAKwvC,EACvC,CACF,KACKpoB,EAAW,OAAO,KAEvB,IADA,IAAIqoB,EAAQ,CAAC,CAAC9jC,KAAMA,EAAMC,GAAIA,IACrBhP,EAAI,EAAGA,EAAIwqB,EAAQvqB,SAAUD,EAEpC,IADA,IAAI8yC,EAAKtoB,EAAQxqB,GAAIyR,EAAIqhC,EAAGtwB,KAAK,GACxBxR,EAAI,EAAGA,EAAI6hC,EAAM5yC,SAAU+Q,EAAG,CACrC,IAAIgT,EAAI6uB,EAAM7hC,GACd,KAAI6I,GAAImK,EAAEhV,GAAIyC,EAAE1C,MAAQ,GAAK8K,GAAImK,EAAEjV,KAAM0C,EAAEzC,IAAM,GAAjD,CACA,IAAI+jC,EAAW,CAAC/hC,EAAG,GAAIgiC,EAAQn5B,GAAImK,EAAEjV,KAAM0C,EAAE1C,MAAOkkC,EAAMp5B,GAAImK,EAAEhV,GAAIyC,EAAEzC,KAClEgkC,EAAQ,IAAMF,EAAG9xB,gBAAkBgyB,IACnCD,EAAS3vC,KAAK,CAAC2L,KAAMiV,EAAEjV,KAAMC,GAAIyC,EAAE1C,QACnCkkC,EAAM,IAAMH,EAAG3xB,iBAAmB8xB,IAClCF,EAAS3vC,KAAK,CAAC2L,KAAM0C,EAAEzC,GAAIA,GAAIgV,EAAEhV,KACrC6jC,EAAM/gC,OAAOrH,MAAMooC,EAAOE,GAC1B/hC,GAAK+hC,EAAS9yC,OAAS,CAPwC,CAQjE,CAEF,OAAO4yC,CACT,CAoxHqDK,CAAqB9qC,EAAKmY,EAAOxR,KAAMwR,EAAOvR,IACjG,GAAInG,EACF,IAAK,IAAI7I,EAAI6I,EAAM5I,OAAS,EAAGD,GAAK,IAAKA,EACrCmzC,GAAgB/qC,EAAK,CAAC2G,KAAMlG,EAAM7I,GAAG+O,KAAMC,GAAInG,EAAM7I,GAAGgP,GAAImD,KAAMnS,EAAI,CAAC,IAAMugB,EAAOpO,KAAMtF,OAAQ0T,EAAO1T,cAE7GsmC,GAAgB/qC,EAAKmY,EATvB,CAWF,CAEA,SAAS4yB,GAAgB/qC,EAAKmY,GAC5B,GAA0B,GAAtBA,EAAOpO,KAAKlS,QAAiC,IAAlBsgB,EAAOpO,KAAK,IAA2C,GAA/B0H,GAAI0G,EAAOxR,KAAMwR,EAAOvR,IAA/E,CACA,IAAI+/B,EAAWhD,GAAsB3jC,EAAKmY,GAC1CuuB,GAAmB1mC,EAAKmY,EAAQwuB,EAAU3mC,EAAInJ,GAAKmJ,EAAInJ,GAAGuU,MAAM1H,GAAKmlC,KAErEmC,GAAoBhrC,EAAKmY,EAAQwuB,EAAUzuB,GAAuBlY,EAAKmY,IACvE,IAAI8yB,EAAU,GAEdlG,GAAW/kC,GAAK,SAAUA,EAAKmlC,GACxBA,IAAgD,GAAlCjtC,EAAQ+yC,EAASjrC,EAAI8mC,WACtCoE,GAAWlrC,EAAI8mC,QAAS3uB,GACxB8yB,EAAQjwC,KAAKgF,EAAI8mC,UAEnBkE,GAAoBhrC,EAAKmY,EAAQ,KAAMD,GAAuBlY,EAAKmY,GACrE,GAbkG,CAcpG,CAGA,SAASgzB,GAAsBnrC,EAAK7G,EAAMiyC,GACxC,IAAIC,EAAWrrC,EAAInJ,IAAMmJ,EAAInJ,GAAGM,MAAMozC,cACtC,IAAIc,GAAaD,EAAjB,CAQA,IANA,IAAwBnD,EAApBpB,EAAO7mC,EAAI8mC,QAAgBH,EAAW3mC,EAAI9E,IAC1CiL,EAAiB,QAARhN,EAAiB0tC,EAAKnB,KAAOmB,EAAKlB,OAAQ0B,EAAe,QAARluC,EAAiB0tC,EAAKlB,OAASkB,EAAKnB,KAI9F9tC,EAAI,EACDA,EAAIuO,EAAOtO,SAChBowC,EAAQ9hC,EAAOvO,GACXwzC,GAAqBnD,EAAMvwC,QAAWuwC,EAAMrF,OAAO5iC,EAAI9E,KAAQ+sC,EAAMvwC,QAFjDE,KAK1B,GAAIA,GAAKuO,EAAOtO,OAAhB,CAGA,IAFAgvC,EAAKZ,WAAaY,EAAKX,cAAgB,OAE9B,CAEP,KADA+B,EAAQ9hC,EAAOsgC,OACL/uC,OAOH,IAAI2zC,EAET,YADAllC,EAAOnL,KAAKitC,GAEL,KAAM,CARb,GADAhB,GAAuBgB,EAAOZ,GAC1B+D,IAAuBnD,EAAMrF,OAAO5iC,EAAI9E,KAE1C,YADAotC,GAAatoC,EAAKioC,EAAO,CAACb,WAAW,IAGvCT,EAAWsB,CAKf,CAIA,IAAIqD,EAAc,GAClBrE,GAAuBN,EAAUU,GACjCA,EAAKrsC,KAAK,CAAC8lB,QAASwqB,EAAanF,WAAYU,EAAKV,aAClDU,EAAKV,WAAa8B,EAAM9B,cAAgBU,EAAKT,cA6B7C,IA3BA,IAAImF,EAASjgC,GAAWtL,EAAK,iBAAmBA,EAAInJ,IAAMyU,GAAWtL,EAAInJ,GAAI,gBAEzE2d,EAAO,SAAW5c,GACpB,IAAIugB,EAAS8vB,EAAMnnB,QAAQlpB,GAE3B,GADAugB,EAAO1T,OAAStL,EACZoyC,IAAWrB,GAAalqC,EAAKmY,GAAQ,GAEvC,OADAhS,EAAOtO,OAAS,EACT,CAAC,EAGVyzC,EAAYtwC,KAAKqrC,GAAwBrmC,EAAKmY,IAE9C,IAAI/Z,EAAQxG,EAAI+rC,GAAsB3jC,EAAKmY,GAAUhT,GAAIgB,GACzD6kC,GAAoBhrC,EAAKmY,EAAQ/Z,EAAOqpC,GAAcznC,EAAKmY,KACtDvgB,GAAKoI,EAAInJ,IAAMmJ,EAAInJ,GAAGilC,eAAe,CAACn1B,KAAMwR,EAAOxR,KAAMC,GAAI68B,GAAUtrB,KAC5E,IAAI8yB,EAAU,GAGdlG,GAAW/kC,GAAK,SAAUA,EAAKmlC,GACxBA,IAAgD,GAAlCjtC,EAAQ+yC,EAASjrC,EAAI8mC,WACtCoE,GAAWlrC,EAAI8mC,QAAS3uB,GACxB8yB,EAAQjwC,KAAKgF,EAAI8mC,UAEnBkE,GAAoBhrC,EAAKmY,EAAQ,KAAMsvB,GAAcznC,EAAKmY,GAC5D,GACF,EAEShQ,EAAM8/B,EAAMnnB,QAAQjpB,OAAS,EAAGsQ,GAAO,IAAKA,EAAK,CACxD,IAAIqjC,EAAWh3B,EAAMrM,GAErB,GAAKqjC,EAAW,OAAOA,EAASC,CAClC,CAxDiC,CAba,CAsEhD,CAIA,SAASC,GAAS1rC,EAAK2rC,GACrB,GAAgB,GAAZA,IACJ3rC,EAAIgQ,OAAS27B,EACb3rC,EAAI9E,IAAM,IAAIynC,GAAUt9B,GAAIrF,EAAI9E,IAAIxD,QAAQ,SAAU6B,GAAS,OAAO,IAAIypC,GACxExsC,GAAI+C,EAAM0B,OAAO5C,KAAOszC,EAAUpyC,EAAM0B,OAAO3C,IAC/C9B,GAAI+C,EAAMtB,KAAKI,KAAOszC,EAAUpyC,EAAMtB,KAAKK,IAC1C,IAAI0H,EAAI9E,IAAIu0B,WACXzvB,EAAInJ,IAAI,CACVq3B,GAAUluB,EAAInJ,GAAImJ,EAAIgQ,MAAOhQ,EAAIgQ,MAAQ27B,EAAUA,GACnD,IAAK,IAAI3vB,EAAIhc,EAAInJ,GAAG0K,QAAS6L,EAAI4O,EAAE3F,SAAUjJ,EAAI4O,EAAE1F,OAAQlJ,IACvDwhB,GAAc5uB,EAAInJ,GAAIuW,EAAG,SAC/B,CACF,CAIA,SAAS49B,GAAoBhrC,EAAKmY,EAAQwuB,EAAU5uB,GAClD,GAAI/X,EAAInJ,KAAOmJ,EAAInJ,GAAGuU,MAClB,OAAO5S,GAAUwH,EAAInJ,GAAIm0C,GAAlBxyC,CAAuCwH,EAAKmY,EAAQwuB,EAAU5uB,GAEzE,GAAII,EAAOvR,GAAGvO,KAAO2H,EAAIgQ,MACvB07B,GAAS1rC,EAAKmY,EAAOpO,KAAKlS,OAAS,GAAKsgB,EAAOvR,GAAGvO,KAAO8f,EAAOxR,KAAKtO,YAGvE,KAAI8f,EAAOxR,KAAKtO,KAAO2H,EAAIsb,YAA3B,CAGA,GAAInD,EAAOxR,KAAKtO,KAAO2H,EAAIgQ,MAAO,CAChC,IAAIujB,EAAQpb,EAAOpO,KAAKlS,OAAS,GAAKmI,EAAIgQ,MAAQmI,EAAOxR,KAAKtO,MAC9DqzC,GAAS1rC,EAAKuzB,GACdpb,EAAS,CAACxR,KAAMnQ,GAAIwJ,EAAIgQ,MAAO,GAAIpJ,GAAIpQ,GAAI2hB,EAAOvR,GAAGvO,KAAOk7B,EAAOpb,EAAOvR,GAAGtO,IACnEyR,KAAM,CAAC5E,GAAIgT,EAAOpO,OAAQtF,OAAQ0T,EAAO1T,OACrD,CACA,IAAIyN,EAAOlS,EAAIsb,WACXnD,EAAOvR,GAAGvO,KAAO6Z,IACnBiG,EAAS,CAACxR,KAAMwR,EAAOxR,KAAMC,GAAIpQ,GAAI0b,EAAMnC,GAAQ/P,EAAKkS,GAAMnI,KAAKlS,QACzDkS,KAAM,CAACoO,EAAOpO,KAAK,IAAKtF,OAAQ0T,EAAO1T,SAGnD0T,EAAOyzB,QAAUp7B,GAAWxQ,EAAKmY,EAAOxR,KAAMwR,EAAOvR,IAEhD+/B,IAAYA,EAAWhD,GAAsB3jC,EAAKmY,IACnDnY,EAAInJ,GAUV,SAAqCA,EAAIshB,EAAQJ,GAC/C,IAAI/X,EAAMnJ,EAAGmJ,IAAKuB,EAAU1K,EAAG0K,QAASoF,EAAOwR,EAAOxR,KAAMC,EAAKuR,EAAOvR,GAEpEilC,GAAqB,EAAOC,EAAkBnlC,EAAKtO,KAClDxB,EAAG4X,QAAQoY,eACdilB,EAAkBh7B,GAAOkK,GAAWjL,GAAQ/P,EAAK2G,EAAKtO,QACtD2H,EAAIyQ,KAAKq7B,EAAiBllC,EAAGvO,KAAO,GAAG,SAAUA,GAC/C,GAAIA,GAAQkJ,EAAQ0a,QAElB,OADA4vB,GAAqB,GACd,CAEX,KAGE7rC,EAAI9E,IAAIsE,SAAS2Y,EAAOxR,KAAMwR,EAAOvR,KAAO,GAC5CsE,GAAqBrU,GAEzBqtC,GAAUlkC,EAAKmY,EAAQJ,EAAOsE,GAAexlB,IAExCA,EAAG4X,QAAQoY,eACd7mB,EAAIyQ,KAAKq7B,EAAiBnlC,EAAKtO,KAAO8f,EAAOpO,KAAKlS,QAAQ,SAAUQ,GAClE,IAAI4P,EAAM4T,GAAWxjB,GACjB4P,EAAM1G,EAAQ2a,gBAChB3a,EAAQ0a,QAAU5jB,EAClBkJ,EAAQ2a,cAAgBjU,EACxB1G,EAAQ4a,gBAAiB,EACzB0vB,GAAqB,EAEzB,IACIA,IAAsBh1C,EAAGuU,MAAMsuB,eAAgB,IAnpIvD,SAAyB15B,EAAKkD,GAE5B,GADAlD,EAAI2V,aAAe5Q,KAAKC,IAAIhF,EAAI2V,aAAczS,KAC1ClD,EAAI0V,kBAAoBxS,EAAI,IAAhC,CAEA,IADA,IAAI1H,EAAQwE,EAAIgQ,MACP3X,EAAO6K,EAAI,EAAG7K,EAAOmD,EAAOnD,IAAQ,CAC3C,IAAI6d,EAAQnG,GAAQ/P,EAAK3H,GAAMkd,WAI/B,GAAIW,MAAYA,aAAiBtC,KAAiBvb,EAAO6d,EAAMzC,UAAYvQ,GAAI,CAC7E1H,EAAQnD,EAAO,EACf,KACF,CACF,CACA2H,EAAI0V,kBAAoB3Q,KAAKC,IAAIhF,EAAI0V,kBAAmBla,EAZX,CAa/C,CAuoIEuwC,CAAgB/rC,EAAK2G,EAAKtO,MAC1Bw9B,GAAYh/B,EAAI,KAEhB,IAAIs3B,EAAUhW,EAAOpO,KAAKlS,QAAU+O,EAAGvO,KAAOsO,EAAKtO,MAAQ,EAEvD8f,EAAOC,KACP8V,GAAUr3B,GACL8P,EAAKtO,MAAQuO,EAAGvO,MAA8B,GAAtB8f,EAAOpO,KAAKlS,QAAgBmsC,GAAkBntC,EAAGmJ,IAAKmY,GAGnF+V,GAAUr3B,EAAI8P,EAAKtO,KAAMuO,EAAGvO,KAAO,EAAG81B,GAFtCS,GAAc/3B,EAAI8P,EAAKtO,KAAM,QAIjC,IAAI2zC,EAAiB1gC,GAAWzU,EAAI,WAAYo1C,EAAgB3gC,GAAWzU,EAAI,UAC/E,GAAIo1C,GAAiBD,EAAgB,CACnC,IAAIzpC,EAAM,CACRoE,KAAMA,EAAMC,GAAIA,EAChBmD,KAAMoO,EAAOpO,KACb6hC,QAASzzB,EAAOyzB,QAChBnnC,OAAQ0T,EAAO1T,QAEbwnC,GAAiB1rB,GAAY1pB,EAAI,SAAUA,EAAI0L,GAC/CypC,IAAmBn1C,EAAGuU,MAAMmuB,aAAe1iC,EAAGuU,MAAMmuB,WAAa,KAAKv+B,KAAKuH,EACjF,CACA1L,EAAG0K,QAAQ6xB,kBAAoB,IACjC,CAlEgB8Y,CAA4BlsC,EAAInJ,GAAIshB,EAAQJ,GACnDmsB,GAAUlkC,EAAKmY,EAAQJ,GAC9B6wB,GAAmB5oC,EAAK2mC,EAAUriC,GAE9BtE,EAAIgqC,UAAYZ,GAAWppC,EAAKxJ,GAAIwJ,EAAIskC,YAAa,MACrDtkC,EAAIgqC,UAAW,EAvB6B,CAwBlD,CA8DA,SAAS5xC,GAAa4H,EAAK+H,EAAMpB,EAAMC,EAAInC,GACzC,IAAI0nC,EAECvlC,IAAMA,EAAKD,GACZ8K,GAAI7K,EAAID,GAAQ,IAA2BA,GAArBwlC,EAAS,CAACvlC,EAAID,IAAqB,GAAIC,EAAKulC,EAAO,IAC1D,iBAARpkC,IAAoBA,EAAO/H,EAAIosC,WAAWrkC,IACrDsiC,GAAWrqC,EAAK,CAAC2G,KAAMA,EAAMC,GAAIA,EAAImD,KAAMhC,EAAMtD,OAAQA,GAC3D,CAIA,SAAS4nC,GAAoBnzC,EAAKyN,EAAMC,EAAIiK,GACtCjK,EAAK1N,EAAIb,KACXa,EAAIb,MAAQwY,EACHlK,EAAOzN,EAAIb,OACpBa,EAAIb,KAAOsO,EACXzN,EAAIZ,GAAK,EAEb,CASA,SAASg0C,GAAgBzoC,EAAO8C,EAAMC,EAAIiK,GACxC,IAAK,IAAIjZ,EAAI,EAAGA,EAAIiM,EAAMhM,SAAUD,EAAG,CACrC,IAAI20C,EAAM1oC,EAAMjM,GAAI40C,GAAK,EACzB,GAAID,EAAI70C,OAAR,CACO60C,EAAIE,UAAUF,EAAM1oC,EAAMjM,GAAK20C,EAAIxJ,YAAgB0J,QAAS,GACjE,IAAK,IAAI7jC,EAAI,EAAGA,EAAI2jC,EAAI70C,OAAOG,OAAQ+Q,IACrCyjC,GAAoBE,EAAI70C,OAAOkR,GAAG3N,OAAQ0L,EAAMC,EAAIiK,GACpDw7B,GAAoBE,EAAI70C,OAAOkR,GAAG3Q,KAAM0O,EAAMC,EAAIiK,EAGtD,KAPA,CAQA,IAAK,IAAIzH,EAAM,EAAGA,EAAMmjC,EAAIzrB,QAAQjpB,SAAUuR,EAAK,CACjD,IAAIjR,EAAMo0C,EAAIzrB,QAAQ1X,GACtB,GAAIxC,EAAKzO,EAAIwO,KAAKtO,KAChBF,EAAIwO,KAAOnQ,GAAI2B,EAAIwO,KAAKtO,KAAOwY,EAAM1Y,EAAIwO,KAAKrO,IAC9CH,EAAIyO,GAAKpQ,GAAI2B,EAAIyO,GAAGvO,KAAOwY,EAAM1Y,EAAIyO,GAAGtO,SACnC,GAAIqO,GAAQxO,EAAIyO,GAAGvO,KAAM,CAC9Bm0C,GAAK,EACL,KACF,CACF,CACKA,IACH3oC,EAAM6F,OAAO,EAAG9R,EAAI,GACpBA,EAAI,EAbN,CAeF,CACF,CAEA,SAASszC,GAAWrE,EAAM1uB,GACxB,IAAIxR,EAAOwR,EAAOxR,KAAKtO,KAAMuO,EAAKuR,EAAOvR,GAAGvO,KAAMwY,EAAOsH,EAAOpO,KAAKlS,QAAU+O,EAAKD,GAAQ,EAC5F2lC,GAAgBzF,EAAKnB,KAAM/+B,EAAMC,EAAIiK,GACrCy7B,GAAgBzF,EAAKlB,OAAQh/B,EAAMC,EAAIiK,EACzC,CAKA,SAAS67B,GAAW1sC,EAAK2sC,EAAQC,EAAYxT,GAC3C,IAAIroB,EAAK47B,EAAQt0C,EAAOs0C,EAGxB,MAFqB,iBAAVA,EAAsBt0C,EAAO0X,GAAQ/P,EAAK+R,GAAS/R,EAAK2sC,IAC5D57B,EAAKD,GAAO67B,GACT,MAAN57B,EAAqB,MACrBqoB,EAAG/gC,EAAM0Y,IAAO/Q,EAAInJ,IAAM+3B,GAAc5uB,EAAInJ,GAAIka,EAAI67B,GACjDv0C,EACT,CAeA,SAASw0C,GAAUz8B,GACjB3M,KAAK2M,MAAQA,EACb3M,KAAK5E,OAAS,KAEd,IADA,IAAI+R,EAAS,EACJhZ,EAAI,EAAGA,EAAIwY,EAAMvY,SAAUD,EAClCwY,EAAMxY,GAAGiH,OAAS4E,KAClBmN,GAAUR,EAAMxY,GAAGgZ,OAErBnN,KAAKmN,OAASA,CAChB,CAoCA,SAASk8B,GAAYz8B,GACnB5M,KAAK4M,SAAWA,EAEhB,IADA,IAAIJ,EAAO,EAAGW,EAAS,EACdhZ,EAAI,EAAGA,EAAIyY,EAASxY,SAAUD,EAAG,CACxC,IAAIU,EAAK+X,EAASzY,GAClBqY,GAAQ3X,EAAGiY,YAAaK,GAAUtY,EAAGsY,OACrCtY,EAAGuG,OAAS4E,IACd,CACAA,KAAKwM,KAAOA,EACZxM,KAAKmN,OAASA,EACdnN,KAAK5E,OAAS,IAChB,CAtgCAmkC,GAAM9gC,UAAUyE,KAAO,WAAc,OAAOmL,GAAOrO,KAAKxI,OAAQwI,KAAKxL,KAAM,EAC3E+qC,GAAM9gC,UAAU0E,GAAK,WAAc,OAAOiL,GAAOpO,KAAKxI,OAAQwI,KAAKxL,KAAM,EACzE+qC,GAAM9gC,UAAUpK,MAAQ,WAAc,OAAO2L,KAAKxL,KAAKI,MAAQoL,KAAKxI,OAAO5C,MAAQoL,KAAKxL,KAAKK,IAAMmL,KAAKxI,OAAO3C,EAAG,EAu9BlHu0C,GAAU3qC,UAAY,CACpBqO,UAAW,WAAa,OAAO9M,KAAK2M,MAAMvY,MAAO,EAGjDk1C,YAAa,SAASxjC,EAAIrG,GACxB,IAAK,IAAItL,EAAI2R,EAAIhL,EAAIgL,EAAKrG,EAAGtL,EAAI2G,IAAK3G,EAAG,CACvC,IAAIS,EAAOoL,KAAK2M,MAAMxY,GACtB6L,KAAKmN,QAAUvY,EAAKuY,OACpB0L,GAAYjkB,GACZkoB,GAAYloB,EAAM,SACpB,CACAoL,KAAK2M,MAAM1G,OAAOH,EAAIrG,EACxB,EAGAhC,SAAU,SAASkP,GACjBA,EAAMpV,KAAKqH,MAAM+N,EAAO3M,KAAK2M,MAC/B,EAIA48B,YAAa,SAASzjC,EAAI6G,EAAOQ,GAC/BnN,KAAKmN,QAAUA,EACfnN,KAAK2M,MAAQ3M,KAAK2M,MAAMhW,MAAM,EAAGmP,GAAIe,OAAO8F,GAAO9F,OAAO7G,KAAK2M,MAAMhW,MAAMmP,IAC3E,IAAK,IAAI3R,EAAI,EAAGA,EAAIwY,EAAMvY,SAAUD,EAAKwY,EAAMxY,GAAGiH,OAAS4E,IAC7D,EAGAwpC,MAAO,SAAS1jC,EAAIrG,EAAGk2B,GACrB,IAAK,IAAI76B,EAAIgL,EAAKrG,EAAGqG,EAAKhL,IAAKgL,EAC3B,GAAI6vB,EAAG31B,KAAK2M,MAAM7G,IAAQ,OAAO,CACvC,GAgBFujC,GAAY5qC,UAAY,CACtBqO,UAAW,WAAa,OAAO9M,KAAKwM,IAAK,EAEzC88B,YAAa,SAASxjC,EAAIrG,GACxBO,KAAKwM,MAAQ/M,EACb,IAAK,IAAItL,EAAI,EAAGA,EAAI6L,KAAK4M,SAASxY,SAAUD,EAAG,CAC7C,IAAI6H,EAAQgE,KAAK4M,SAASzY,GAAI0Y,EAAK7Q,EAAM8Q,YACzC,GAAIhH,EAAK+G,EAAI,CACX,IAAI0uB,EAAKj6B,KAAKC,IAAI9B,EAAGoN,EAAK/G,GAAKqqB,EAAYn0B,EAAMmR,OAIjD,GAHAnR,EAAMstC,YAAYxjC,EAAIy1B,GACtBv7B,KAAKmN,QAAUgjB,EAAYn0B,EAAMmR,OAC7BN,GAAM0uB,IAAMv7B,KAAK4M,SAAS3G,OAAO9R,IAAK,GAAI6H,EAAMZ,OAAS,MAC5C,IAAZqE,GAAK87B,GAAY,MACtBz1B,EAAK,CACP,MAASA,GAAM+G,CACjB,CAGA,GAAI7M,KAAKwM,KAAO/M,EAAI,KACfO,KAAK4M,SAASxY,OAAS,KAAO4L,KAAK4M,SAAS,aAAcw8B,KAAa,CAC1E,IAAIz8B,EAAQ,GACZ3M,KAAKvC,SAASkP,GACd3M,KAAK4M,SAAW,CAAC,IAAIw8B,GAAUz8B,IAC/B3M,KAAK4M,SAAS,GAAGxR,OAAS4E,IAC5B,CACF,EAEAvC,SAAU,SAASkP,GACjB,IAAK,IAAIxY,EAAI,EAAGA,EAAI6L,KAAK4M,SAASxY,SAAUD,EAAK6L,KAAK4M,SAASzY,GAAGsJ,SAASkP,EAC7E,EAEA48B,YAAa,SAASzjC,EAAI6G,EAAOQ,GAC/BnN,KAAKwM,MAAQG,EAAMvY,OACnB4L,KAAKmN,QAAUA,EACf,IAAK,IAAIhZ,EAAI,EAAGA,EAAI6L,KAAK4M,SAASxY,SAAUD,EAAG,CAC7C,IAAI6H,EAAQgE,KAAK4M,SAASzY,GAAI0Y,EAAK7Q,EAAM8Q,YACzC,GAAIhH,GAAM+G,EAAI,CAEZ,GADA7Q,EAAMutC,YAAYzjC,EAAI6G,EAAOQ,GACzBnR,EAAM2Q,OAAS3Q,EAAM2Q,MAAMvY,OAAS,GAAI,CAI1C,IADA,IAAIq1C,EAAYztC,EAAM2Q,MAAMvY,OAAS,GAAK,GACjCqB,EAAMg0C,EAAWh0C,EAAMuG,EAAM2Q,MAAMvY,QAAS,CACnD,IAAIs1C,EAAO,IAAIN,GAAUptC,EAAM2Q,MAAMhW,MAAMlB,EAAKA,GAAO,KACvDuG,EAAMmR,QAAUu8B,EAAKv8B,OACrBnN,KAAK4M,SAAS3G,SAAS9R,EAAG,EAAGu1C,GAC7BA,EAAKtuC,OAAS4E,IAChB,CACAhE,EAAM2Q,MAAQ3Q,EAAM2Q,MAAMhW,MAAM,EAAG8yC,GACnCzpC,KAAK2pC,YACP,CACA,KACF,CACA7jC,GAAM+G,CACR,CACF,EAGA88B,WAAY,WACV,KAAI3pC,KAAK4M,SAASxY,QAAU,IAA5B,CACA,IAAIw1C,EAAK5pC,KACT,EAAG,CACD,IACI6pC,EAAU,IAAIR,GADJO,EAAGh9B,SAAS3G,OAAO2jC,EAAGh9B,SAASxY,OAAS,EAAG,IAEzD,GAAKw1C,EAAGxuC,OAKF,CACJwuC,EAAGp9B,MAAQq9B,EAAQr9B,KACnBo9B,EAAGz8B,QAAU08B,EAAQ18B,OACrB,IAAI28B,EAAUr1C,EAAQm1C,EAAGxuC,OAAOwR,SAAUg9B,GAC1CA,EAAGxuC,OAAOwR,SAAS3G,OAAO6jC,EAAU,EAAG,EAAGD,EAC5C,KAVgB,CACd,IAAIz2B,EAAO,IAAIi2B,GAAYO,EAAGh9B,UAC9BwG,EAAKhY,OAASwuC,EACdA,EAAGh9B,SAAW,CAACwG,EAAMy2B,GACrBD,EAAKx2B,CACR,CAMCy2B,EAAQzuC,OAASwuC,EAAGxuC,MACtB,OAASwuC,EAAGh9B,SAASxY,OAAS,IAC9Bw1C,EAAGxuC,OAAOuuC,YAlB+B,CAmB3C,EAEAH,MAAO,SAAS1jC,EAAIrG,EAAGk2B,GACrB,IAAK,IAAIxhC,EAAI,EAAGA,EAAI6L,KAAK4M,SAASxY,SAAUD,EAAG,CAC7C,IAAI6H,EAAQgE,KAAK4M,SAASzY,GAAI0Y,EAAK7Q,EAAM8Q,YACzC,GAAIhH,EAAK+G,EAAI,CACX,IAAIk9B,EAAOzoC,KAAKC,IAAI9B,EAAGoN,EAAK/G,GAC5B,GAAI9J,EAAMwtC,MAAM1jC,EAAIikC,EAAMpU,GAAO,OAAO,EACxC,GAAmB,IAAdl2B,GAAKsqC,GAAc,MACxBjkC,EAAK,CACP,MAASA,GAAM+G,CACjB,CACF,GAKF,IAAIm9B,GAAa,SAASztC,EAAK/B,EAAMwQ,GACnC,GAAIA,EAAW,IAAK,IAAIi/B,KAAOj/B,EAAeA,EAAQ9L,eAAe+qC,KACjEjqC,KAAKiqC,GAAOj/B,EAAQi/B,IACxBjqC,KAAKzD,IAAMA,EACXyD,KAAKxF,KAAOA,CACd,EAoCA,SAAS0vC,GAA6B92C,EAAIwB,EAAMwY,GAC1C6K,GAAarjB,IAAUxB,EAAGuU,OAASvU,EAAGuU,MAAM6e,WAAcpzB,EAAGmJ,IAAIiqB,YACjEgL,GAAep+B,EAAIga,EACzB,CArCA48B,GAAWvrC,UAAU+1B,MAAQ,WAC3B,IAAIphC,EAAK4M,KAAKzD,IAAInJ,GAAIysB,EAAK7f,KAAKpL,KAAKgrB,QAAShrB,EAAOoL,KAAKpL,KAAM0Y,EAAKD,GAAOzY,GAC5E,GAAU,MAAN0Y,GAAeuS,EAAnB,CACA,IAAK,IAAI1rB,EAAI,EAAGA,EAAI0rB,EAAGzrB,SAAUD,EAAS0rB,EAAG1rB,IAAM6L,MAAQ6f,EAAG5Z,OAAO9R,IAAK,GACrE0rB,EAAGzrB,SAAUQ,EAAKgrB,QAAU,MACjC,IAAIzS,EAASqT,GAAaxgB,MAC1BkN,GAAiBtY,EAAM0M,KAAKiN,IAAI,EAAG3Z,EAAKuY,OAASA,IAC7C/Z,IACF8lC,GAAQ9lC,GAAI,WACV82C,GAA6B92C,EAAIwB,GAAOuY,GACxCge,GAAc/3B,EAAIka,EAAI,SACxB,IACAwP,GAAY1pB,EAAI,oBAAqBA,EAAI4M,KAAMsN,GAVjB,CAYlC,EAEA08B,GAAWvrC,UAAU+5B,QAAU,WAC3B,IAAI2R,EAASnqC,KAEXoqC,EAAOpqC,KAAKmN,OAAQ/Z,EAAK4M,KAAKzD,IAAInJ,GAAIwB,EAAOoL,KAAKpL,KACtDoL,KAAKmN,OAAS,KACd,IAAIC,EAAOoT,GAAaxgB,MAAQoqC,EAC3Bh9B,IACA0K,GAAa9X,KAAKzD,IAAK3H,IAASsY,GAAiBtY,EAAMA,EAAKuY,OAASC,GACtEha,GACF8lC,GAAQ9lC,GAAI,WACVA,EAAGuU,MAAMib,aAAc,EACvBsnB,GAA6B92C,EAAIwB,EAAMwY,GACvC0P,GAAY1pB,EAAI,oBAAqBA,EAAI+2C,EAAQ98B,GAAOzY,GAC1D,IAEJ,EACAkT,GAAWkiC,IA2CX,IAAIK,GAAe,EAEfC,GAAa,SAAS/tC,EAAK7G,GAC7BsK,KAAK2M,MAAQ,GACb3M,KAAKtK,KAAOA,EACZsK,KAAKzD,IAAMA,EACXyD,KAAKC,KAAOoqC,EACd,EAiHA,SAASE,GAAShuC,EAAK2G,EAAMC,EAAI6H,EAAStV,GAIxC,GAAIsV,GAAWA,EAAQ62B,OAAU,OA2FnC,SAAwBtlC,EAAK2G,EAAMC,EAAI6H,EAAStV,IAC9CsV,EAAUnM,EAAQmM,IACV62B,QAAS,EACjB,IAAIljB,EAAU,CAAC4rB,GAAShuC,EAAK2G,EAAMC,EAAI6H,EAAStV,IAAQ4B,EAAUqnB,EAAQ,GACtEnD,EAASxQ,EAAQ+M,WAQrB,OAPAupB,GAAW/kC,GAAK,SAAUA,GACpBif,IAAUxQ,EAAQ+M,WAAayD,EAAOgvB,WAAU,IACpD7rB,EAAQpnB,KAAKgzC,GAAShuC,EAAKiS,GAAQjS,EAAK2G,GAAOsL,GAAQjS,EAAK4G,GAAK6H,EAAStV,IAC1E,IAAK,IAAIvB,EAAI,EAAGA,EAAIoI,EAAIolC,OAAOvtC,SAAUD,EACrC,GAAIoI,EAAIolC,OAAOxtC,GAAGs2C,SAAY,OAClCnzC,EAAUoK,GAAIid,EAChB,IACO,IAAI+rB,GAAiB/rB,EAASrnB,EACvC,CAxG0CqzC,CAAepuC,EAAK2G,EAAMC,EAAI6H,EAAStV,GAE/E,GAAI6G,EAAInJ,KAAOmJ,EAAInJ,GAAGuU,MAAS,OAAO5S,GAAUwH,EAAInJ,GAAIm3C,GAAlBx1C,CAA4BwH,EAAK2G,EAAMC,EAAI6H,EAAStV,GAE1F,IAAI0e,EAAS,IAAIk2B,GAAW/tC,EAAK7G,GAAO0X,EAAOY,GAAI9K,EAAMC,GAGzD,GAFI6H,GAAWnM,EAAQmM,EAASoJ,GAAQ,GAEpChH,EAAO,GAAa,GAARA,IAAuC,IAA1BgH,EAAO6B,eAChC,OAAO7B,EAQX,GAPIA,EAAOw2B,eAETx2B,EAAO6C,WAAY,EACnB7C,EAAO2D,WAAalc,EAAK,OAAQ,CAACuY,EAAOw2B,cAAe,qBACnD5/B,EAAQ8U,mBAAqB1L,EAAO2D,WAAWjc,aAAa,mBAAoB,QACjFkP,EAAQoK,aAAchB,EAAO2D,WAAW3C,YAAa,IAEvDhB,EAAO6C,UAAW,CACpB,GAAII,GAA0B9a,EAAK2G,EAAKtO,KAAMsO,EAAMC,EAAIiR,IACpDlR,EAAKtO,MAAQuO,EAAGvO,MAAQyiB,GAA0B9a,EAAK4G,EAAGvO,KAAMsO,EAAMC,EAAIiR,GAC1E,MAAM,IAAI3H,MAAM,oEAvmJtByH,IAAoB,CAymJpB,CAEIE,EAAOy2B,cACP5H,GAAmB1mC,EAAK,CAAC2G,KAAMA,EAAMC,GAAIA,EAAInC,OAAQ,YAAazE,EAAI9E,IAAK2tC,KAE/E,IAAsCnP,EAAlC6U,EAAU5nC,EAAKtO,KAAMxB,EAAKmJ,EAAInJ,GA0BlC,GAzBAmJ,EAAIyQ,KAAK89B,EAAS3nC,EAAGvO,KAAO,GAAG,SAAUA,GACnCxB,GAAMghB,EAAO6C,YAAc7jB,EAAG4X,QAAQoY,cAAgB7L,GAAW3iB,IAASxB,EAAG0K,QAAQ0a,UACrFyd,GAAgB,GAChB7hB,EAAO6C,WAAa6zB,GAAW5nC,EAAKtO,MAAQsY,GAAiBtY,EAAM,GAtlJ3E,SAAuBA,EAAM2f,EAAMohB,GACjC,IAAIoV,EAAWpV,GAAM5rB,OAAOihC,UAAYrV,EAAG9gB,cAAgB8gB,EAAG9gB,YAAc,IAAIm2B,UAC5ED,GAAYn2C,EAAKigB,aAAek2B,EAASE,IAAIr2C,EAAKigB,aACpDjgB,EAAKigB,YAAYtd,KAAKgd,IAEtB3f,EAAKigB,YAAcjgB,EAAKigB,YAAcjgB,EAAKigB,YAAYhO,OAAO,CAAC0N,IAAS,CAACA,GACrEw2B,GAAYA,EAAS9d,IAAIr4B,EAAKigB,cAEpCN,EAAKH,OAAOiC,WAAWzhB,EACzB,CA8kJIs2C,CAAct2C,EAAM,IAAIuf,GAAWC,EACA02B,GAAW5nC,EAAKtO,KAAOsO,EAAKrO,GAAK,KACjCi2C,GAAW3nC,EAAGvO,KAAOuO,EAAGtO,GAAK,MAAO0H,EAAInJ,IAAMmJ,EAAInJ,GAAGuU,SACtFmjC,CACJ,IAEI12B,EAAO6C,WAAa1a,EAAIyQ,KAAK9J,EAAKtO,KAAMuO,EAAGvO,KAAO,GAAG,SAAUA,GAC7DkjB,GAAavb,EAAK3H,IAASsY,GAAiBtY,EAAM,EACxD,IAEIwf,EAAO+2B,cAAgB3kC,GAAG4N,EAAQ,qBAAqB,WAAc,OAAOA,EAAOogB,OAAS,IAE5FpgB,EAAOsb,WAnoJXzb,IAAmB,GAqoJb1X,EAAI8mC,QAAQpB,KAAK7tC,QAAUmI,EAAI8mC,QAAQnB,OAAO9tC,SAC9CmI,EAAI6uC,gBAENh3B,EAAO6C,YACT7C,EAAOnU,KAAOoqC,GACdj2B,EAAO+xB,QAAS,GAEd/yC,EAAI,CAGN,GADI6iC,IAAiB7iC,EAAGuU,MAAMsuB,eAAgB,GAC1C7hB,EAAO6C,UACPwT,GAAUr3B,EAAI8P,EAAKtO,KAAMuO,EAAGvO,KAAO,QAClC,GAAIwf,EAAO1Z,WAAa0Z,EAAOgG,YAAchG,EAAOiG,UAAYjG,EAAOkG,KACnElG,EAAOmG,YAAcnG,EAAO+F,MACjC,IAAK,IAAIhmB,EAAI+O,EAAKtO,KAAMT,GAAKgP,EAAGvO,KAAMT,IAAOg3B,GAAc/3B,EAAIe,EAAG,QAClEigB,EAAO+xB,QAAUX,GAAiBpyC,EAAGmJ,KACzCugB,GAAY1pB,EAAI,cAAeA,EAAIghB,EACrC,CACA,OAAOA,CACT,CAlLAk2B,GAAW7rC,UAAU+1B,MAAQ,WAC3B,IAAIx0B,KAAK+jC,kBAAT,CACA,IAAI3wC,EAAK4M,KAAKzD,IAAInJ,GAAIi4C,EAASj4C,IAAOA,EAAGuU,MAEzC,GADI0jC,GAAU3V,GAAetiC,GACzByU,GAAW7H,KAAM,SAAU,CAC7B,IAAI4D,EAAQ5D,KAAK2W,OACb/S,GAASkZ,GAAY9c,KAAM,QAAS4D,EAAMV,KAAMU,EAAMT,GAC5D,CAEA,IADA,IAAI5B,EAAM,KAAMgN,EAAM,KACbpa,EAAI,EAAGA,EAAI6L,KAAK2M,MAAMvY,SAAUD,EAAG,CAC1C,IAAIS,EAAOoL,KAAK2M,MAAMxY,GAClBogB,EAAOF,GAAiBzf,EAAKigB,YAAa7U,MAC1C5M,IAAO4M,KAAKiX,UAAakU,GAAc/3B,EAAIia,GAAOzY,GAAO,QACpDxB,IACQ,MAAXmhB,EAAKpR,KAAcoL,EAAMlB,GAAOzY,IACnB,MAAb2f,EAAKrR,OAAgB3B,EAAM8L,GAAOzY,KAExCA,EAAKigB,YAAcL,GAAiB5f,EAAKigB,YAAaN,GACrC,MAAbA,EAAKrR,MAAgBlD,KAAKiX,YAAca,GAAa9X,KAAKzD,IAAK3H,IAASxB,GACxE8Z,GAAiBtY,EAAM00B,GAAWl2B,EAAG0K,SAC3C,CACA,GAAI1K,GAAM4M,KAAKiX,YAAc7jB,EAAG4X,QAAQoY,aAAgB,IAAK,IAAI1e,EAAM,EAAGA,EAAM1E,KAAK2M,MAAMvY,SAAUsQ,EAAK,CACxG,IAAI4mC,EAAS/zB,GAAWvX,KAAK2M,MAAMjI,IAAOF,EAAM4T,GAAWkzB,GACvD9mC,EAAMpR,EAAG0K,QAAQ2a,gBACnBrlB,EAAG0K,QAAQ0a,QAAU8yB,EACrBl4C,EAAG0K,QAAQ2a,cAAgBjU,EAC3BpR,EAAG0K,QAAQ4a,gBAAiB,EAEhC,CAEW,MAAPnX,GAAenO,GAAM4M,KAAKiX,WAAawT,GAAUr3B,EAAImO,EAAKgN,EAAM,GACpEvO,KAAK2M,MAAMvY,OAAS,EACpB4L,KAAK+jC,mBAAoB,EACrB/jC,KAAKmmC,QAAUnmC,KAAKzD,IAAIgqC,WAC1BvmC,KAAKzD,IAAIgqC,UAAW,EAChBnzC,GAAMoyC,GAAiBpyC,EAAGmJ,MAE5BnJ,GAAM0pB,GAAY1pB,EAAI,gBAAiBA,EAAI4M,KAAMuB,EAAKgN,GACtD88B,GAAUhV,GAAajjC,GACvB4M,KAAK5E,QAAU4E,KAAK5E,OAAOo5B,OAtCM,CAuCvC,EAOA8V,GAAW7rC,UAAUkY,KAAO,SAAU4W,EAAMrV,GAE1C,IAAIhV,EAAMC,EADE,MAARoqB,GAA6B,YAAbvtB,KAAKtK,OAAsB63B,EAAO,GAEtD,IAAK,IAAIp5B,EAAI,EAAGA,EAAI6L,KAAK2M,MAAMvY,SAAUD,EAAG,CAC1C,IAAIS,EAAOoL,KAAK2M,MAAMxY,GAClBogB,EAAOF,GAAiBzf,EAAKigB,YAAa7U,MAC9C,GAAiB,MAAbuU,EAAKrR,OACPA,EAAOnQ,GAAImlB,EAAUtjB,EAAOyY,GAAOzY,GAAO2f,EAAKrR,OAClC,GAATqqB,GAAc,OAAOrqB,EAE3B,GAAe,MAAXqR,EAAKpR,KACPA,EAAKpQ,GAAImlB,EAAUtjB,EAAOyY,GAAOzY,GAAO2f,EAAKpR,IACjC,GAARoqB,GAAa,OAAOpqB,CAE5B,CACA,OAAOD,GAAQ,CAACA,KAAMA,EAAMC,GAAIA,EAClC,EAIAmnC,GAAW7rC,UAAU+5B,QAAU,WAC3B,IAAI2R,EAASnqC,KAEXvK,EAAMuK,KAAK2W,MAAM,GAAG,GAAO6E,EAASxb,KAAM5M,EAAK4M,KAAKzD,IAAInJ,GACvDqC,GAAQrC,GACb8lC,GAAQ9lC,GAAI,WACV,IAAIwB,EAAOa,EAAIb,KAAM8iB,EAAQrK,GAAO5X,EAAIb,MACpC+nB,EAAO8F,GAAgBrvB,EAAIskB,GAM/B,GALIiF,IACF+I,GAA6B/I,GAC7BvpB,EAAGuU,MAAMquB,iBAAmB5iC,EAAGuU,MAAMib,aAAc,GAErDxvB,EAAGuU,MAAMsuB,eAAgB,GACpBne,GAAa0D,EAAOjf,IAAK3H,IAA0B,MAAjB4mB,EAAOrO,OAAgB,CAC5D,IAAIgjB,EAAY3U,EAAOrO,OACvBqO,EAAOrO,OAAS,KAChB,IAAIo+B,EAAU/qB,GAAahF,GAAU2U,EACjCob,GACAr+B,GAAiBtY,EAAMA,EAAKuY,OAASo+B,EAC3C,CACAzuB,GAAY1pB,EAAI,gBAAiBA,EAAI+2C,EACvC,GACF,EAEAG,GAAW7rC,UAAU4X,WAAa,SAAUzhB,GAC1C,IAAKoL,KAAK2M,MAAMvY,QAAU4L,KAAKzD,IAAInJ,GAAI,CACrC,IAAIuiC,EAAK31B,KAAKzD,IAAInJ,GAAGuU,MAChBguB,EAAGmD,qBAA+D,GAAzCrkC,EAAQkhC,EAAGmD,mBAAoB94B,QACxD21B,EAAGqD,uBAAyBrD,EAAGqD,qBAAuB,KAAKzhC,KAAKyI,KACvE,CACAA,KAAK2M,MAAMpV,KAAK3C,EAClB,EAEA01C,GAAW7rC,UAAU0X,WAAa,SAAUvhB,GAE1C,GADAoL,KAAK2M,MAAM1G,OAAOxR,EAAQuL,KAAK2M,MAAO/X,GAAO,IACxCoL,KAAK2M,MAAMvY,QAAU4L,KAAKzD,IAAInJ,GAAI,CACrC,IAAIuiC,EAAK31B,KAAKzD,IAAInJ,GAAGuU,OACnBguB,EAAGmD,qBAAuBnD,EAAGmD,mBAAqB,KAAKvhC,KAAKyI,KAChE,CACF,EACA8H,GAAWwiC,IA8EX,IAAII,GAAmB,SAAS/rB,EAASrnB,GACvC0I,KAAK2e,QAAUA,EACf3e,KAAK1I,QAAUA,EACf,IAAK,IAAInD,EAAI,EAAGA,EAAIwqB,EAAQvqB,SAAUD,EAClCwqB,EAAQxqB,GAAGiH,OAAS4E,IAC1B,EA8BA,SAASwrC,GAAkBjvC,GACzB,OAAOA,EAAIkvC,UAAU14C,GAAIwJ,EAAIgQ,MAAO,GAAIhQ,EAAIiS,QAAQzb,GAAIwJ,EAAIsb,cAAc,SAAUjS,GAAK,OAAOA,EAAExK,MAAQ,GAC5G,CAcA,SAASswC,GAAoB/sB,GAa3B,IAZA,IAAI5N,EAAO,SAAW5c,GACpB,IAAIigB,EAASuK,EAAQxqB,GAAIwtC,EAAS,CAACvtB,EAAO9c,QAAQiF,KAClD+kC,GAAWltB,EAAO9c,QAAQiF,KAAK,SAAUgc,GAAK,OAAOopB,EAAOpqC,KAAKghB,EAAI,IACrE,IAAK,IAAIpT,EAAI,EAAGA,EAAIiP,EAAOuK,QAAQvqB,OAAQ+Q,IAAK,CAC9C,IAAIwmC,EAAYv3B,EAAOuK,QAAQxZ,IACQ,GAAnC1Q,EAAQktC,EAAQgK,EAAUpvC,OAC5BovC,EAAUvwC,OAAS,KACnBgZ,EAAOuK,QAAQ1Y,OAAOd,IAAK,GAE/B,CACF,EAEShR,EAAI,EAAGA,EAAIwqB,EAAQvqB,OAAQD,IAAK4c,EAAM5c,EACjD,CA1DAu2C,GAAiBjsC,UAAU+1B,MAAQ,WACjC,IAAIx0B,KAAK+jC,kBAAT,CACA/jC,KAAK+jC,mBAAoB,EACzB,IAAK,IAAI5vC,EAAI,EAAGA,EAAI6L,KAAK2e,QAAQvqB,SAAUD,EACvC6L,KAAK2e,QAAQxqB,GAAGqgC,QACpB1X,GAAY9c,KAAM,QAJmB,CAKvC,EAEA0qC,GAAiBjsC,UAAUkY,KAAO,SAAU4W,EAAMrV,GAChD,OAAOlY,KAAK1I,QAAQqf,KAAK4W,EAAMrV,EACjC,EACApQ,GAAW4iC,IAiDX,IAAIkB,GAAY,EACZC,GAAM,SAASvlC,EAAMqE,EAAMk2B,EAAWiL,EAASznC,GACjD,KAAMrE,gBAAgB6rC,IAAQ,OAAO,IAAIA,GAAIvlC,EAAMqE,EAAMk2B,EAAWiL,EAASznC,GAC5D,MAAbw8B,IAAqBA,EAAY,GAErCwI,GAAY3qC,KAAKsB,KAAM,CAAC,IAAIopC,GAAU,CAAC,IAAIzwB,GAAK,GAAI,UACpD3Y,KAAKuM,MAAQs0B,EACb7gC,KAAKwmB,UAAYxmB,KAAKomB,WAAa,EACnCpmB,KAAKumC,UAAW,EAChBvmC,KAAK+rC,gBAAkB,EACvB/rC,KAAKkS,aAAelS,KAAKiS,kBAAoB4uB,EAC7C,IAAI9oC,EAAQhF,GAAI8tC,EAAW,GAC3B7gC,KAAKvI,IAAMsoC,GAAgBhoC,GAC3BiI,KAAKqjC,QAAU,IAAIrB,GAAQ,MAC3BhiC,KAAKC,KAAO2rC,GACZ5rC,KAAKqgC,WAAa11B,EAClB3K,KAAK8rC,QAAUA,EACf9rC,KAAKqE,UAA0B,OAAbA,EAAsB,MAAQ,MAChDrE,KAAKg7B,QAAS,EAEK,iBAAR10B,IAAoBA,EAAOtG,KAAK2oC,WAAWriC,IACtDm6B,GAAUzgC,KAAM,CAACkD,KAAMnL,EAAOoL,GAAIpL,EAAOuO,KAAMA,IAC/Cu+B,GAAa7kC,KAAM+/B,GAAgBhoC,GAAQ8I,EAC7C,EAEAgrC,GAAIptC,UAAYsD,GAAUsnC,GAAY5qC,UAAW,CAC/CutC,YAAaH,GAKb7+B,KAAM,SAAS9J,EAAMC,EAAIwyB,GACnBA,EAAM31B,KAAKwpC,MAAMtmC,EAAOlD,KAAKuM,MAAOpJ,EAAKD,EAAMyyB,GAC5C31B,KAAKwpC,MAAMxpC,KAAKuM,MAAOvM,KAAKuM,MAAQvM,KAAKwM,KAAMtJ,EACxD,EAGA+9B,OAAQ,SAASn7B,EAAI6G,GAEnB,IADA,IAAIQ,EAAS,EACJhZ,EAAI,EAAGA,EAAIwY,EAAMvY,SAAUD,EAAKgZ,GAAUR,EAAMxY,GAAGgZ,OAC5DnN,KAAKupC,YAAYzjC,EAAK9F,KAAKuM,MAAOI,EAAOQ,EAC3C,EACA+zB,OAAQ,SAASp7B,EAAIrG,GAAKO,KAAKspC,YAAYxjC,EAAK9F,KAAKuM,MAAO9M,EAAI,EAKhEwsC,SAAU,SAASH,GACjB,IAAIn/B,EAAQM,GAASjN,KAAMA,KAAKuM,MAAOvM,KAAKuM,MAAQvM,KAAKwM,MACzD,OAAgB,IAAZs/B,EAA4Bn/B,EACzBA,EAAMu/B,KAAKJ,GAAW9rC,KAAK/K,gBACpC,EACAk3C,SAAU/S,IAAY,SAAS90B,GAC7B,IAAIqf,EAAM5wB,GAAIiN,KAAKuM,MAAO,GAAIkC,EAAOzO,KAAKuM,MAAQvM,KAAKwM,KAAO,EAC9Do6B,GAAW5mC,KAAM,CAACkD,KAAMygB,EAAKxgB,GAAIpQ,GAAI0b,EAAMnC,GAAQtM,KAAMyO,GAAMnI,KAAKlS,QAClDkS,KAAMtG,KAAK2oC,WAAWrkC,GAAOtD,OAAQ,WAAY2T,MAAM,IAAO,GAC5E3U,KAAK5M,IAAM0+B,GAAe9xB,KAAK5M,GAAI,EAAG,GAC1CyxC,GAAa7kC,KAAM+/B,GAAgBpc,GAAM9iB,EAC3C,IACAlM,aAAc,SAAS2P,EAAMpB,EAAMC,EAAInC,GAGrCrM,GAAaqL,KAAMsE,EAFnBpB,EAAOsL,GAAQxO,KAAMkD,GACrBC,EAAKA,EAAKqL,GAAQxO,KAAMmD,GAAMD,EACKlC,EACrC,EACAhL,SAAU,SAASkN,EAAMC,EAAI2oC,GAC3B,IAAIn/B,EAAQI,GAAW/M,KAAMwO,GAAQxO,KAAMkD,GAAOsL,GAAQxO,KAAMmD,IAChE,OAAgB,IAAZ2oC,EAA4Bn/B,EAChB,KAAZm/B,EAAyBn/B,EAAMu/B,KAAK,IACjCv/B,EAAMu/B,KAAKJ,GAAW9rC,KAAK/K,gBACpC,EAEAqX,QAAS,SAAS1X,GAAO,IAAI+U,EAAI3J,KAAKosC,cAAcx3C,GAAO,OAAO+U,GAAKA,EAAErD,IAAI,EAE7E8lC,cAAe,SAASx3C,GAAO,GAAI+Y,GAAO3N,KAAMpL,GAAS,OAAO0X,GAAQtM,KAAMpL,EAAO,EACrFy3C,cAAe,SAASz3C,GAAO,OAAOyY,GAAOzY,EAAK,EAElD03C,yBAA0B,SAAS13C,GAEjC,MADmB,iBAARA,IAAoBA,EAAO0X,GAAQtM,KAAMpL,IAC7C2iB,GAAW3iB,EACpB,EAEA23C,UAAW,WAAY,OAAOvsC,KAAKwM,IAAI,EACvCq0B,UAAW,WAAY,OAAO7gC,KAAKuM,KAAK,EACxCsL,SAAU,WAAY,OAAO7X,KAAKuM,MAAQvM,KAAKwM,KAAO,CAAC,EAEvDgC,QAAS,SAAS/Y,GAAM,OAAO+Y,GAAQxO,KAAMvK,EAAI,EAEjD0B,UAAW,SAASY,GAClB,IAAIjC,EAAQkK,KAAKvI,IAAIH,UAKrB,OAJa,MAATS,GAA0B,QAATA,EAAyBjC,EAAMtB,KAClC,UAATuD,EAA2BjC,EAAM0B,OACxB,OAATO,GAA2B,MAATA,IAA2B,IAAVA,EAAyBjC,EAAMqN,KAC9DrN,EAAMoN,MAErB,EACAhP,eAAgB,WAAa,OAAO8L,KAAKvI,IAAIxD,MAAO,EACpDurC,kBAAmB,WAAY,OAAOx/B,KAAKvI,IAAI+nC,mBAAmB,EAElEgN,UAAWpT,IAAY,SAASxkC,EAAMC,EAAImW,GACxCi6B,GAAmBjlC,KAAMwO,GAAQxO,KAAqB,iBAARpL,EAAmB7B,GAAI6B,EAAMC,GAAM,GAAKD,GAAO,KAAMoW,EACrG,IACA65B,aAAczL,IAAY,SAAS5hC,EAAQhD,EAAMwW,GAC/Ci6B,GAAmBjlC,KAAMwO,GAAQxO,KAAMxI,GAASgX,GAAQxO,KAAMxL,GAAQgD,GAASwT,EACjF,IACA45B,gBAAiBxL,IAAY,SAAS5kC,EAAMmzB,EAAO3c,GACjD45B,GAAgB5kC,KAAMwO,GAAQxO,KAAMxL,GAAOmzB,GAASnZ,GAAQxO,KAAM2nB,GAAQ3c,EAC5E,IACA85B,iBAAkB1L,IAAY,SAAS2L,EAAO/5B,GAC5C85B,GAAiB9kC,KAAM4O,GAAa5O,KAAM+kC,GAAQ/5B,EACpD,IACAyhC,mBAAoBrT,IAAY,SAAS96B,EAAG0M,GAE1C85B,GAAiB9kC,KAAM4O,GAAa5O,KADxB4B,GAAI5B,KAAKvI,IAAIxD,OAAQqK,IACiB0M,EACpD,IACAnU,cAAeuiC,IAAY,SAASnlC,EAAQqD,EAAS0T,GACnD,GAAK/W,EAAOG,OAAZ,CAEA,IADA,IAAIyN,EAAM,GACD1N,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAC/B0N,EAAI1N,GAAK,IAAIorC,GAAM/wB,GAAQxO,KAAM/L,EAAOE,GAAGqD,QAC1BgX,GAAQxO,KAAM/L,EAAOE,GAAGK,MAAQP,EAAOE,GAAGqD,SAChD,MAAXF,IAAmBA,EAAUgK,KAAKC,IAAItN,EAAOG,OAAS,EAAG4L,KAAKvI,IAAIu0B,YACtE6Y,GAAa7kC,KAAMy/B,GAAmBz/B,KAAK5M,GAAIyO,EAAKvK,GAAU0T,EANjC,CAO/B,IACA0hC,aAActT,IAAY,SAAS5hC,EAAQhD,EAAMwW,GAC/C,IAAI/W,EAAS+L,KAAKvI,IAAIxD,OAAO0C,MAAM,GACnC1C,EAAOsD,KAAK,IAAIgoC,GAAM/wB,GAAQxO,KAAMxI,GAASgX,GAAQxO,KAAMxL,GAAQgD,KACnEqtC,GAAa7kC,KAAMy/B,GAAmBz/B,KAAK5M,GAAIa,EAAQA,EAAOG,OAAS,GAAI4W,EAC7E,IAEAhB,aAAc,SAAS8hC,GAErB,IADA,IAA8Bn/B,EAA1B1Y,EAAS+L,KAAKvI,IAAIxD,OACbE,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAIsD,EAAMsV,GAAW/M,KAAM/L,EAAOE,GAAG+O,OAAQjP,EAAOE,GAAGgP,MACvDwJ,EAAQA,EAAQA,EAAM9F,OAAOpP,GAAOA,CACtC,CACA,OAAgB,IAAZq0C,EAA4Bn/B,EAClBA,EAAMu/B,KAAKJ,GAAW9rC,KAAK/K,gBAC3C,EACAwB,cAAe,SAASq1C,GAEtB,IADA,IAAI9E,EAAQ,GAAI/yC,EAAS+L,KAAKvI,IAAIxD,OACzBE,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAIsD,EAAMsV,GAAW/M,KAAM/L,EAAOE,GAAG+O,OAAQjP,EAAOE,GAAGgP,OACvC,IAAZ2oC,IAAqBr0C,EAAMA,EAAIy0C,KAAKJ,GAAW9rC,KAAK/K,kBACxD+xC,EAAM7yC,GAAKsD,CACb,CACA,OAAOuvC,CACT,EACA9xC,iBAAkB,SAASoP,EAAM7G,EAAUuD,GAEzC,IADA,IAAI2rC,EAAM,GACDx4C,EAAI,EAAGA,EAAI6L,KAAKvI,IAAIxD,OAAOG,OAAQD,IACxCw4C,EAAIx4C,GAAKmQ,EACbtE,KAAKtJ,kBAAkBi2C,EAAKlvC,EAAUuD,GAAU,SAClD,EACAtK,kBAAmB0iC,IAAY,SAAS90B,EAAM7G,EAAUuD,GAEtD,IADA,IAAIqc,EAAU,GAAI5lB,EAAMuI,KAAKvI,IACpBtD,EAAI,EAAGA,EAAIsD,EAAIxD,OAAOG,OAAQD,IAAK,CAC1C,IAAI2B,EAAQ2B,EAAIxD,OAAOE,GACvBkpB,EAAQlpB,GAAK,CAAC+O,KAAMpN,EAAMoN,OAAQC,GAAIrN,EAAMqN,KAAMmD,KAAMtG,KAAK2oC,WAAWrkC,EAAKnQ,IAAK6M,OAAQA,EAC5F,CAEA,IADA,IAAI4rC,EAASnvC,GAAwB,OAAZA,GA3hD7B,SAA4BlB,EAAK8gB,EAASwvB,GAGxC,IAFA,IAAIhrC,EAAM,GACNirC,EAAU/5C,GAAIwJ,EAAIgQ,MAAO,GAAIwgC,EAAUD,EAClC34C,EAAI,EAAGA,EAAIkpB,EAAQjpB,OAAQD,IAAK,CACvC,IAAIugB,EAAS2I,EAAQlpB,GACjB+O,EAAOi9B,GAAUzrB,EAAOxR,KAAM4pC,EAASC,GACvC5pC,EAAKg9B,GAAUH,GAAUtrB,GAASo4B,EAASC,GAG/C,GAFAD,EAAUp4B,EAAOvR,GACjB4pC,EAAU5pC,EACE,UAAR0pC,EAAkB,CACpB,IAAI/2C,EAAQyG,EAAI9E,IAAIxD,OAAOE,GAAI2rC,EAAM9xB,GAAIlY,EAAMtB,KAAMsB,EAAM0B,QAAU,EACrEqK,EAAI1N,GAAK,IAAIorC,GAAMO,EAAM38B,EAAKD,EAAM48B,EAAM58B,EAAOC,EACnD,MACEtB,EAAI1N,GAAK,IAAIorC,GAAMr8B,EAAMA,EAE7B,CACA,OAAO,IAAIg8B,GAAUr9B,EAAKtF,EAAI9E,IAAIu0B,UACpC,CA0gDkDghB,CAAmBhtC,KAAMqd,EAAS5f,GACvEiH,EAAM2Y,EAAQjpB,OAAS,EAAGsQ,GAAO,EAAGA,IACzCkiC,GAAW5mC,KAAMqd,EAAQ3Y,IACzBkoC,EAAU1H,GAA2BllC,KAAM4sC,GACtC5sC,KAAK5M,IAAMs+B,GAAoB1xB,KAAK5M,GAC/C,IACA65C,KAAM7T,IAAY,WAAYsO,GAAsB1nC,KAAM,OAAQ,IAClEktC,KAAM9T,IAAY,WAAYsO,GAAsB1nC,KAAM,OAAQ,IAClEmtC,cAAe/T,IAAY,WAAYsO,GAAsB1nC,KAAM,QAAQ,EAAM,IACjFotC,cAAehU,IAAY,WAAYsO,GAAsB1nC,KAAM,QAAQ,EAAM,IAEjFqtC,aAAc,SAASh6C,GAAM2M,KAAKg7B,OAAS3nC,CAAI,EAC/Ci6C,aAAc,WAAY,OAAOttC,KAAKg7B,MAAM,EAE5CuS,YAAa,WAEX,IADA,IAAInK,EAAOpjC,KAAKqjC,QAASpB,EAAO,EAAGC,EAAS,EACnC/tC,EAAI,EAAGA,EAAIivC,EAAKnB,KAAK7tC,OAAQD,IAAYivC,EAAKnB,KAAK9tC,GAAGF,UAAYguC,EAC3E,IAAK,IAAIv9B,EAAM,EAAGA,EAAM0+B,EAAKlB,OAAO9tC,OAAQsQ,IAAc0+B,EAAKlB,OAAOx9B,GAAKzQ,UAAYiuC,EACvF,MAAO,CAAC+K,KAAMhL,EAAMiL,KAAMhL,EAC5B,EACAkJ,aAAc,WACZ,IAAIjB,EAASnqC,KAEbA,KAAKqjC,QAAU,IAAIrB,GAAQhiC,KAAKqjC,SAChC/B,GAAWthC,MAAM,SAAUzD,GAAO,OAAOA,EAAI8mC,QAAU8G,EAAO9G,OAAS,IAAG,EAC5E,EAEAmK,UAAW,WACTxtC,KAAK+rC,gBAAkB/rC,KAAKytC,kBAAiB,EAC/C,EACAA,iBAAkB,SAASC,GAGzB,OAFIA,IACA1tC,KAAKqjC,QAAQf,OAAStiC,KAAKqjC,QAAQd,UAAYviC,KAAKqjC,QAAQb,WAAa,MACtExiC,KAAKqjC,QAAQX,UACtB,EACAiL,QAAS,SAAUC,GACjB,OAAO5tC,KAAKqjC,QAAQX,aAAekL,GAAO5tC,KAAK+rC,gBACjD,EAEA8B,WAAY,WACV,MAAO,CAAC5L,KAAMoC,GAAiBrkC,KAAKqjC,QAAQpB,MACpCC,OAAQmC,GAAiBrkC,KAAKqjC,QAAQnB,QAChD,EACA4L,WAAY,SAASC,GACnB,IAAI3K,EAAOpjC,KAAKqjC,QAAU,IAAIrB,GAAQhiC,KAAKqjC,SAC3CD,EAAKnB,KAAOoC,GAAiB0J,EAAS9L,KAAKtrC,MAAM,GAAI,MAAM,GAC3DysC,EAAKlB,OAASmC,GAAiB0J,EAAS7L,OAAOvrC,MAAM,GAAI,MAAM,EACjE,EAEAq3C,gBAAiB5U,IAAY,SAASxkC,EAAMq5C,EAAUpuC,GACpD,OAAOopC,GAAWjpC,KAAMpL,EAAM,UAAU,SAAUA,GAChD,IAAI+pB,EAAU/pB,EAAKgqB,gBAAkBhqB,EAAKgqB,cAAgB,CAAC,GAG3D,OAFAD,EAAQsvB,GAAYpuC,GACfA,GAAS8C,GAAQgc,KAAY/pB,EAAKgqB,cAAgB,OAChD,CACT,GACF,IAEAsvB,YAAa9U,IAAY,SAAS6U,GAChC,IAAI9D,EAASnqC,KAEbA,KAAKgN,MAAK,SAAUpY,GACdA,EAAKgqB,eAAiBhqB,EAAKgqB,cAAcqvB,IAC3ChF,GAAWkB,EAAQv1C,EAAM,UAAU,WAGjC,OAFAA,EAAKgqB,cAAcqvB,GAAY,KAC3BtrC,GAAQ/N,EAAKgqB,iBAAkBhqB,EAAKgqB,cAAgB,OACjD,CACT,GAEJ,GACF,IAEAuvB,SAAU,SAASv5C,GACjB,IAAI6K,EACJ,GAAmB,iBAAR7K,EAAkB,CAC3B,IAAK+Y,GAAO3N,KAAMpL,GAAS,OAAO,KAGlC,GAFA6K,EAAI7K,IACJA,EAAO0X,GAAQtM,KAAMpL,IACR,OAAO,IACtB,MAEE,GAAS,OADT6K,EAAI4N,GAAOzY,IACM,OAAO,KAE1B,MAAO,CAACA,KAAM6K,EAAGypC,OAAQt0C,EAAM0R,KAAM1R,EAAK0R,KAAMsY,cAAehqB,EAAKgqB,cAC5DpN,UAAW5c,EAAK4c,UAAWD,QAAS3c,EAAK2c,QAAS6M,UAAWxpB,EAAKwpB,UAClEwB,QAAShrB,EAAKgrB,QACxB,EAEAwuB,aAAchV,IAAY,SAAS8P,EAAQmF,EAAOh0C,GAChD,OAAO4uC,GAAWjpC,KAAMkpC,EAAiB,UAATmF,EAAoB,SAAW,SAAS,SAAUz5C,GAChF,IAAIqK,EAAgB,QAATovC,EAAkB,YACT,cAATA,EAAwB,UACf,UAATA,EAAoB,cAAgB,YAC/C,GAAKz5C,EAAKqK,GACL,IAAI7E,EAAUC,GAAKpE,KAAKrB,EAAKqK,IAAU,OAAO,EAC5CrK,EAAKqK,IAAS,IAAM5E,CAAK,MAFbzF,EAAKqK,GAAQ5E,EAGhC,OAAO,CACT,GACF,IACAi0C,gBAAiBlV,IAAY,SAAS8P,EAAQmF,EAAOh0C,GACnD,OAAO4uC,GAAWjpC,KAAMkpC,EAAiB,UAATmF,EAAoB,SAAW,SAAS,SAAUz5C,GAChF,IAAIqK,EAAgB,QAATovC,EAAkB,YACT,cAATA,EAAwB,UACf,UAATA,EAAoB,cAAgB,YAC3C35C,EAAME,EAAKqK,GACf,IAAKvK,EAAO,OAAO,EACd,GAAW,MAAP2F,EAAezF,EAAKqK,GAAQ,SAChC,CACH,IAAI2E,EAAQlP,EAAIsF,MAAMI,EAAUC,IAChC,IAAKuJ,EAAS,OAAO,EACrB,IAAI1G,EAAM0G,EAAMhJ,MAAQgJ,EAAM,GAAGxP,OACjCQ,EAAKqK,GAAQvK,EAAIiC,MAAM,EAAGiN,EAAMhJ,QAAWgJ,EAAMhJ,OAASsC,GAAOxI,EAAIN,OAAc,IAAL,IAAYM,EAAIiC,MAAMuG,IAAQ,IAC9G,CACA,OAAO,CACT,GACF,IAEAqxC,cAAenV,IAAY,SAAS8P,EAAQ1uC,EAAMwQ,GAChD,OA/jBJ,SAAuBzO,EAAK2sC,EAAQ1uC,EAAMwQ,GACxC,IAAIwQ,EAAS,IAAIwuB,GAAWztC,EAAK/B,EAAMwQ,GACnC5X,EAAKmJ,EAAInJ,GAgBb,OAfIA,GAAMooB,EAAOyE,YAAa7sB,EAAG0K,QAAQs+B,cAAe,GACxD6M,GAAW1sC,EAAK2sC,EAAQ,UAAU,SAAUt0C,GAC1C,IAAIgrB,EAAUhrB,EAAKgrB,UAAYhrB,EAAKgrB,QAAU,IAI9C,GAHuB,MAAnBpE,EAAOgzB,SAAoB5uB,EAAQroB,KAAKikB,GACrCoE,EAAQ3Z,OAAO3E,KAAKC,IAAIqe,EAAQxrB,OAAQkN,KAAKiN,IAAI,EAAGiN,EAAOgzB,WAAY,EAAGhzB,GACjFA,EAAO5mB,KAAOA,EACVxB,IAAO0kB,GAAavb,EAAK3H,GAAO,CAClC,IAAI65C,EAAex2B,GAAarjB,GAAQ2H,EAAIiqB,UAC5CtZ,GAAiBtY,EAAMA,EAAKuY,OAASqT,GAAahF,IAC9CizB,GAAgBjd,GAAep+B,EAAIooB,EAAOrO,QAC9C/Z,EAAGuU,MAAMib,aAAc,CACzB,CACA,OAAO,CACT,IACIxvB,GAAM0pB,GAAY1pB,EAAI,kBAAmBA,EAAIooB,EAAyB,iBAAV0tB,EAAqBA,EAAS77B,GAAO67B,IAC9F1tB,CACT,CA4iBW+yB,CAAcvuC,KAAMkpC,EAAQ1uC,EAAMwQ,EAC3C,IACA0jC,iBAAkB,SAASlzB,GAAUA,EAAOgZ,OAAS,EAErD+V,SAAU,SAASrnC,EAAMC,EAAI6H,GAC3B,OAAOu/B,GAASvqC,KAAMwO,GAAQxO,KAAMkD,GAAOsL,GAAQxO,KAAMmD,GAAK6H,EAASA,GAAWA,EAAQtV,MAAQ,QACpG,EACAi5C,YAAa,SAASl5C,EAAKuV,GACzB,IAAI4jC,EAAW,CAAChE,aAAc5/B,IAAgC,MAApBA,EAAQ/O,SAAmB+O,EAAQwQ,OAASxQ,GACtEoK,WAAYpK,GAAWA,EAAQoK,WAC/Ba,gBAAgB,EAAO4rB,OAAQ72B,GAAWA,EAAQ62B,OAClD/hB,kBAAmB9U,GAAWA,EAAQ8U,mBAEtD,OAAOyqB,GAASvqC,KADhBvK,EAAM+Y,GAAQxO,KAAMvK,GACOA,EAAKm5C,EAAU,WAC5C,EACAC,YAAa,SAASp5C,GAEpB,IAAIkpB,EAAU,GAAIrK,EAAQhI,GAAQtM,MADlCvK,EAAM+Y,GAAQxO,KAAMvK,IACwBb,MAAMigB,YAClD,GAAIP,EAAS,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,SAAUD,EAAG,CAClD,IAAIogB,EAAOD,EAAMngB,IACC,MAAbogB,EAAKrR,MAAgBqR,EAAKrR,MAAQzN,EAAIZ,MAC3B,MAAX0f,EAAKpR,IAAcoR,EAAKpR,IAAM1N,EAAIZ,KACnC8pB,EAAQpnB,KAAKgd,EAAKH,OAAOhZ,QAAUmZ,EAAKH,OAC9C,CACA,OAAOuK,CACT,EACA8sB,UAAW,SAASvoC,EAAMC,EAAI2kC,GAC5B5kC,EAAOsL,GAAQxO,KAAMkD,GAAOC,EAAKqL,GAAQxO,KAAMmD,GAC/C,IAAIS,EAAQ,GAAIyJ,EAASnK,EAAKtO,KAa9B,OAZAoL,KAAKgN,KAAK9J,EAAKtO,KAAMuO,EAAGvO,KAAO,GAAG,SAAUA,GAC1C,IAAI0f,EAAQ1f,EAAKigB,YACjB,GAAIP,EAAS,IAAK,IAAIngB,EAAI,EAAGA,EAAImgB,EAAMlgB,OAAQD,IAAK,CAClD,IAAIogB,EAAOD,EAAMngB,GACA,MAAXogB,EAAKpR,IAAckK,GAAUnK,EAAKtO,MAAQsO,EAAKrO,IAAM0f,EAAKpR,IAC7C,MAAboR,EAAKrR,MAAgBmK,GAAUnK,EAAKtO,MACvB,MAAb2f,EAAKrR,MAAgBmK,GAAUlK,EAAGvO,MAAQ2f,EAAKrR,MAAQC,EAAGtO,IAC1DizC,IAAUA,EAAOvzB,EAAKH,SACxBxQ,EAAMrM,KAAKgd,EAAKH,OAAOhZ,QAAUmZ,EAAKH,OAC5C,GACE/G,CACJ,IACOzJ,CACT,EACAkrC,YAAa,WACX,IAAInwB,EAAU,GAMd,OALA3e,KAAKgN,MAAK,SAAUpY,GAClB,IAAImiB,EAAMniB,EAAKigB,YACf,GAAIkC,EAAO,IAAK,IAAI5iB,EAAI,EAAGA,EAAI4iB,EAAI3iB,SAAUD,EACtB,MAAf4iB,EAAI5iB,GAAG+O,MAAgByb,EAAQpnB,KAAKwf,EAAI5iB,GAAGigB,OACrD,IACOuK,CACT,EAEAowB,aAAc,SAAShoC,GACrB,IAAIlS,EAAIwY,EAASrN,KAAKuM,MAAOyiC,EAAUhvC,KAAK/K,gBAAgBb,OAO5D,OANA4L,KAAKgN,MAAK,SAAUpY,GAClB,IAAIiY,EAAKjY,EAAK0R,KAAKlS,OAAS46C,EAC5B,GAAIniC,EAAK9F,EAAiB,OAAVlS,EAAKkS,GAAY,EACjCA,GAAO8F,IACLQ,CACJ,IACOmB,GAAQxO,KAAMjN,GAAIsa,EAAQxY,GACnC,EACAo6C,aAAc,SAAUhoB,GAEtB,IAAIrsB,GADJqsB,EAASzY,GAAQxO,KAAMinB,IACJpyB,GACnB,GAAIoyB,EAAOryB,KAAOoL,KAAKuM,OAAS0a,EAAOpyB,GAAK,EAAK,OAAO,EACxD,IAAIm6C,EAAUhvC,KAAK/K,gBAAgBb,OAInC,OAHA4L,KAAKgN,KAAKhN,KAAKuM,MAAO0a,EAAOryB,MAAM,SAAUA,GAC3CgG,GAAShG,EAAK0R,KAAKlS,OAAS46C,CAC9B,IACOp0C,CACT,EAEAwY,KAAM,SAAS87B,GACb,IAAI3yC,EAAM,IAAIsvC,GAAI5+B,GAASjN,KAAMA,KAAKuM,MAAOvM,KAAKuM,MAAQvM,KAAKwM,MAC7CxM,KAAKqgC,WAAYrgC,KAAKuM,MAAOvM,KAAK8rC,QAAS9rC,KAAKqE,WAQlE,OAPA9H,EAAIiqB,UAAYxmB,KAAKwmB,UAAWjqB,EAAI6pB,WAAapmB,KAAKomB,WACtD7pB,EAAI9E,IAAMuI,KAAKvI,IACf8E,EAAIy+B,QAAS,EACTkU,IACF3yC,EAAI8mC,QAAQlB,UAAYniC,KAAKqjC,QAAQlB,UACrC5lC,EAAIuxC,WAAW9tC,KAAK6tC,eAEftxC,CACT,EAEA4yC,UAAW,SAASnkC,GACbA,IAAWA,EAAU,CAAC,GAC3B,IAAI9H,EAAOlD,KAAKuM,MAAOpJ,EAAKnD,KAAKuM,MAAQvM,KAAKwM,KAC1B,MAAhBxB,EAAQ9H,MAAgB8H,EAAQ9H,KAAOA,IAAQA,EAAO8H,EAAQ9H,MAChD,MAAd8H,EAAQ7H,IAAc6H,EAAQ7H,GAAKA,IAAMA,EAAK6H,EAAQ7H,IAC1D,IAAIiQ,EAAO,IAAIy4B,GAAI5+B,GAASjN,KAAMkD,EAAMC,GAAK6H,EAAQL,MAAQ3K,KAAKqgC,WAAYn9B,EAAMlD,KAAK8rC,QAAS9rC,KAAKqE,WAKvG,OAJI2G,EAAQ02B,aAActuB,EAAKiwB,QAAUrjC,KAAKqjC,UAC1CrjC,KAAK2hC,SAAW3hC,KAAK2hC,OAAS,KAAKpqC,KAAK,CAACgF,IAAK6W,EAAMsuB,WAAY12B,EAAQ02B,aAC5EtuB,EAAKuuB,OAAS,CAAC,CAACplC,IAAKyD,KAAMyqC,UAAU,EAAM/I,WAAY12B,EAAQ02B,aAhZnE,SAA2BnlC,EAAKoiB,GAC9B,IAAK,IAAIxqB,EAAI,EAAGA,EAAIwqB,EAAQvqB,OAAQD,IAAK,CACvC,IAAIigB,EAASuK,EAAQxqB,GAAIsB,EAAM2e,EAAOuC,OAClCy4B,EAAQ7yC,EAAIiS,QAAQ/Y,EAAIyN,MAAOmsC,EAAM9yC,EAAIiS,QAAQ/Y,EAAI0N,IACzD,GAAI6K,GAAIohC,EAAOC,GAAM,CACnB,IAAIC,EAAU/E,GAAShuC,EAAK6yC,EAAOC,EAAKj7B,EAAO9c,QAAS8c,EAAO9c,QAAQ5B,MACvE0e,EAAOuK,QAAQpnB,KAAK+3C,GACpBA,EAAQl0C,OAASgZ,CACnB,CACF,CACF,CAuYIm7B,CAAkBn8B,EAAMo4B,GAAkBxrC,OACnCoT,CACT,EACAo8B,UAAW,SAAS7nB,GAElB,GADIA,aAAiBl1B,KAAck1B,EAAQA,EAAMprB,KAC7CyD,KAAK2hC,OAAU,IAAK,IAAIxtC,EAAI,EAAGA,EAAI6L,KAAK2hC,OAAOvtC,SAAUD,EAE3D,GADW6L,KAAK2hC,OAAOxtC,GACdoI,KAAOorB,EAAhB,CACA3nB,KAAK2hC,OAAO17B,OAAO9R,EAAG,GACtBwzB,EAAM6nB,UAAUxvC,MAChB0rC,GAAoBF,GAAkBxrC,OACtC,KAJkC,CAOpC,GAAI2nB,EAAM0b,SAAWrjC,KAAKqjC,QAAS,CACjC,IAAIoM,EAAW,CAAC9nB,EAAM1nB,IACtBqhC,GAAW3Z,GAAO,SAAUprB,GAAO,OAAOkzC,EAASl4C,KAAKgF,EAAI0D,GAAK,IAAG,GACpE0nB,EAAM0b,QAAU,IAAIrB,GAAQ,MAC5Bra,EAAM0b,QAAQpB,KAAOoC,GAAiBrkC,KAAKqjC,QAAQpB,KAAMwN,GACzD9nB,EAAM0b,QAAQnB,OAASmC,GAAiBrkC,KAAKqjC,QAAQnB,OAAQuN,EAC/D,CACF,EACAC,eAAgB,SAASpxC,GAAIgjC,GAAWthC,KAAM1B,EAAG,EAEjDyM,QAAS,WAAY,OAAO/K,KAAK2K,IAAI,EACrCglC,UAAW,WAAY,OAAO3vC,KAAK5M,EAAE,EAErCu1C,WAAY,SAAS/wC,GACnB,OAAIoI,KAAK8rC,QAAkBl0C,EAAIoF,MAAMgD,KAAK8rC,SACnCriC,GAAe7R,EACxB,EACA3C,cAAe,WAAa,OAAO+K,KAAK8rC,SAAW,IAAK,EAExD8D,aAAcxW,IAAY,SAAUhiC,GA9oDtC,IAA0BhE,EA+oDX,OAAPgE,IAAgBA,EAAM,OACtBA,GAAO4I,KAAKqE,YAChBrE,KAAKqE,UAAYjN,EACjB4I,KAAKgN,MAAK,SAAUpY,GAAQ,OAAOA,EAAK8O,MAAQ,IAAM,IAClD1D,KAAK5M,IAlpDX8lC,GADwB9lC,EAmpDU4M,KAAK5M,IAlpD3B,WACV2uC,GAAkB3uC,GAClBq3B,GAAUr3B,EACZ,IAgpDA,MAIFy4C,GAAIptC,UAAUoxC,SAAWhE,GAAIptC,UAAUuO,KAIvC,IAAI8iC,GAAW,EAEf,SAASC,GAAOj1C,GACd,IAAI1H,EAAK4M,KAET,GADAgwC,GAAgB58C,IACZgU,GAAehU,EAAI0H,KAAM8lB,GAAcxtB,EAAG0K,QAAShD,GAAvD,CAEAkN,GAAiBlN,GACbnC,IAAMm3C,IAAY,IAAIxvC,MAC1B,IAAI7K,EAAMu0B,GAAa52B,EAAI0H,GAAG,GAAOm1C,EAAQn1C,EAAEo1C,aAAaD,MAC5D,GAAKx6C,IAAOrC,EAAG+8C,aAGf,GAAIF,GAASA,EAAM77C,QAAU2V,OAAOqmC,YAAcrmC,OAAOsmC,KAkCvD,IAjCA,IAAI5wC,EAAIwwC,EAAM77C,OAAQkS,EAAO9H,MAAMiB,GAAI6wC,EAAO,EAC1CC,EAAsC,aAClCD,GAAQ7wC,GACZ1K,GAAU3B,GAAI,WAEZ,IAAIshB,EAAS,CAACxR,KADdzN,EAAM+Y,GAAQpb,EAAGmJ,IAAK9G,GACG0N,GAAI1N,EACf6Q,KAAMlT,EAAGmJ,IAAIosC,WACTriC,EAAKwhC,QAAO,SAAU0I,GAAK,OAAY,MAALA,CAAW,IAAGtE,KAAK94C,EAAGmJ,IAAItH,kBAChE+L,OAAQ,SACtB4lC,GAAWxzC,EAAGmJ,IAAKmY,GACnBwwB,GAA2B9xC,EAAGmJ,IAAKwjC,GAAgBvxB,GAAQpb,EAAGmJ,IAAK9G,GAAM+Y,GAAQpb,EAAGmJ,IAAKyjC,GAAUtrB,KACrG,GARA3f,EAUJ,EACI07C,EAAmB,SAAUC,EAAMv8C,GACrC,GAAIf,EAAG4X,QAAQ2lC,qBAC2C,GAAtDl8C,EAAQrB,EAAG4X,QAAQ2lC,mBAAoBD,EAAKh7C,MAC9C66C,QAFF,CAKA,IAAIK,EAAS,IAAIR,WACjBQ,EAAOC,QAAU,WAAc,OAAON,GAAuC,EAC7EK,EAAOE,OAAS,WACd,IAAIt1C,EAAUo1C,EAAOlnC,OACjB,0BAA0BzT,KAAKuF,KAInC8K,EAAKnS,GAAKqH,GAHR+0C,GAKJ,EACAK,EAAOG,WAAWL,EAZlB,CAaF,EACSv8C,EAAI,EAAGA,EAAI87C,EAAM77C,OAAQD,IAAOs8C,EAAiBR,EAAM97C,GAAIA,OAC/D,CAEL,GAAIf,EAAGM,MAAM+7B,cAAgBr8B,EAAGmJ,IAAI9E,IAAIsE,SAAStG,IAAQ,EAIvD,OAHArC,EAAGM,MAAM+7B,aAAa30B,QAEtByF,YAAW,WAAc,OAAOnN,EAAG0K,QAAQ2d,MAAM4T,OAAS,GAAG,IAG/D,IACE,IAAI2hB,EAASl2C,EAAEo1C,aAAae,QAAQ,QACpC,GAAID,EAAQ,CACV,IAAIE,EAIJ,GAHI99C,EAAGM,MAAM+7B,eAAiBr8B,EAAGM,MAAM+7B,aAAarc,OAChD89B,EAAW99C,EAAGc,kBAClBixC,GAAmB/xC,EAAGmJ,IAAKwjC,GAAgBtqC,EAAKA,IAC5Cy7C,EAAY,IAAK,IAAIxsC,EAAM,EAAGA,EAAMwsC,EAAS98C,SAAUsQ,EACvD/P,GAAavB,EAAGmJ,IAAK,GAAI20C,EAASxsC,GAAKlN,OAAQ05C,EAASxsC,GAAKlQ,KAAM,QACvEpB,EAAG8B,iBAAiB87C,EAAQ,SAAU,SACtC59C,EAAG0K,QAAQ2d,MAAM4T,OACnB,CACF,CACA,MAAM/E,GAAK,CACb,CAhEW,CAiEb,CAqCA,SAAS0lB,GAAgB58C,GACnBA,EAAG0K,QAAQqzC,aACb/9C,EAAG0K,QAAQmjB,UAAUhmB,YAAY7H,EAAG0K,QAAQqzC,YAC5C/9C,EAAG0K,QAAQqzC,WAAa,KAE5B,CAMA,SAASC,GAAkB9yC,GACzB,GAAKzF,SAASw4C,uBAAd,CAEA,IADA,IAAIC,EAAUz4C,SAASw4C,uBAAuB,cAAeE,EAAU,GAC9Dp9C,EAAI,EAAGA,EAAIm9C,EAAQl9C,OAAQD,IAAK,CACvC,IAAIf,EAAKk+C,EAAQn9C,GAAG1B,WAChBW,GAAMm+C,EAAQh6C,KAAKnE,EACzB,CACIm+C,EAAQn9C,QAAUm9C,EAAQ,GAAGx8C,WAAU,WACzC,IAAK,IAAIZ,EAAI,EAAGA,EAAIo9C,EAAQn9C,OAAQD,IAAOmK,EAAEizC,EAAQp9C,GACvD,GAR+C,CASjD,CAEA,IAAIq9C,IAAoB,EACxB,SAASC,KAKT,IAEMC,EANAF,KAOJhrC,GAAGuD,OAAQ,UAAU,WACA,MAAf2nC,IAAuBA,EAAcnxC,YAAW,WAClDmxC,EAAc,KACdN,GAAkBO,GACpB,GAAG,KACL,IAEAnrC,GAAGuD,OAAQ,QAAQ,WAAc,OAAOqnC,GAAkBjiB,GAAS,IAZnEqiB,IAAoB,EACtB,CAcA,SAASG,GAASv+C,GAChB,IAAImlB,EAAInlB,EAAG0K,QAEXya,EAAEuN,gBAAkBvN,EAAEwN,iBAAmBxN,EAAE8I,eAAiB,KAC5D9I,EAAE0e,mBAAoB,EACtB7jC,EAAGw+C,SACL,CAcA,IAZA,IAAIC,GAAW,CACb,EAAG,QAAS,EAAG,YAAa,EAAG,MAAO,GAAI,QAAS,GAAI,QAAS,GAAI,OAAQ,GAAI,MAChF,GAAI,QAAS,GAAI,WAAY,GAAI,MAAO,GAAI,QAAS,GAAI,SAAU,GAAI,WAAY,GAAI,MACvF,GAAI,OAAQ,GAAI,OAAQ,GAAI,KAAM,GAAI,QAAS,GAAI,OAAQ,GAAI,YAAa,GAAI,SAChF,GAAI,SAAU,GAAI,IAAK,GAAI,IAAK,GAAI,MAAO,GAAI,MAAO,GAAI,MAC1D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,aACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/F,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,KAAM,MAAO,OAAQ,MAAO,OAAQ,MAAO,QAAS,MAAO,SAClG,MAAO,OAAQ,MAAO,MAAO,MAAO,SAAU,MAAO,WAAY,MAAO,UAIjE19C,GAAI,EAAGA,GAAI,GAAIA,KAAO09C,GAAS19C,GAAI,IAAM09C,GAAS19C,GAAI,IAAM0Z,OAAO1Z,IAE5E,IAAK,IAAIuQ,GAAM,GAAIA,IAAO,GAAIA,KAASmtC,GAASntC,IAAOmJ,OAAOikC,aAAaptC,IAE3E,IAAK,IAAIC,GAAM,EAAGA,IAAO,GAAIA,KAASktC,GAASltC,GAAM,KAAOktC,GAASltC,GAAM,OAAS,IAAMA,GAE1F,IAAIlR,GAAS,CAAC,EA4Cd,SAASs+C,GAAiB7+C,GACxB,IAEI8+C,EAAKC,EAAMniB,EAAOoiB,EAFlBlL,EAAQ9zC,EAAK8J,MAAM,UACvB9J,EAAO8zC,EAAMA,EAAM5yC,OAAS,GAE5B,IAAK,IAAID,EAAI,EAAGA,EAAI6yC,EAAM5yC,OAAS,EAAGD,IAAK,CACzC,IAAI6D,EAAMgvC,EAAM7yC,GAChB,GAAI,kBAAkB8B,KAAK+B,GAAQk6C,GAAM,OACpC,GAAI,YAAYj8C,KAAK+B,GAAQg6C,GAAM,OACnC,GAAI,sBAAsB/7C,KAAK+B,GAAQi6C,GAAO,MAC9C,KAAI,cAAch8C,KAAK+B,GACrB,MAAM,IAAIyU,MAAM,+BAAiCzU,GADpB83B,GAAQ,CACiB,CAC/D,CAKA,OAJIkiB,IAAO9+C,EAAO,OAASA,GACvB++C,IAAQ/+C,EAAO,QAAUA,GACzBg/C,IAAOh/C,EAAO,OAASA,GACvB48B,IAAS58B,EAAO,SAAWA,GACxBA,CACT,CAOA,SAASi/C,GAAgBC,GACvB,IAAIh/B,EAAO,CAAC,EACZ,IAAK,IAAIi/B,KAAWD,EAAU,GAAIA,EAAOlzC,eAAemzC,GAAU,CAChE,IAAIxyC,EAAQuyC,EAAOC,GACnB,GAAI,mCAAmCp8C,KAAKo8C,GAAY,SACxD,GAAa,OAATxyC,EAAgB,QAASuyC,EAAOC,GAAU,QAAS,CAGvD,IADA,IAAIC,EAAO1wC,GAAIywC,EAAQr1C,MAAM,KAAM+0C,IAC1B59C,EAAI,EAAGA,EAAIm+C,EAAKl+C,OAAQD,IAAK,CACpC,IAAId,OAAM,EAAUH,OAAO,EACvBiB,GAAKm+C,EAAKl+C,OAAS,GACrBlB,EAAOo/C,EAAKpG,KAAK,KACjB74C,EAAMwM,IAEN3M,EAAOo/C,EAAK37C,MAAM,EAAGxC,EAAI,GAAG+3C,KAAK,KACjC74C,EAAM,OAER,IAAI8C,EAAOid,EAAKlgB,GAChB,GAAKiD,GACA,GAAIA,GAAQ9C,EAAO,MAAM,IAAIoZ,MAAM,6BAA+BvZ,QAD1DkgB,EAAKlgB,GAAQG,CAE5B,QACO++C,EAAOC,EAChB,CACA,IAAK,IAAIpzC,KAAQmU,EAAQg/B,EAAOnzC,GAAQmU,EAAKnU,GAC7C,OAAOmzC,CACT,CAEA,SAASG,GAAUh9C,EAAKqM,EAAKsnC,EAAQz4B,GAEnC,IAAI7M,GADJhC,EAAM4wC,GAAU5wC,IACAlD,KAAOkD,EAAIlD,KAAKnJ,EAAKkb,GAAW7O,EAAIrM,GACpD,IAAc,IAAVqO,EAAmB,MAAO,UAC9B,GAAc,QAAVA,EAAmB,MAAO,QAC9B,GAAa,MAATA,GAAiBslC,EAAOtlC,GAAU,MAAO,UAE7C,GAAIhC,EAAI6wC,YAAa,CACnB,GAAuD,kBAAnDtwC,OAAO1D,UAAUmC,SAASlC,KAAKkD,EAAI6wC,aACnC,OAAOF,GAAUh9C,EAAKqM,EAAI6wC,YAAavJ,EAAQz4B,GACnD,IAAK,IAAItc,EAAI,EAAGA,EAAIyN,EAAI6wC,YAAYr+C,OAAQD,IAAK,CAC/C,IAAIuV,EAAS6oC,GAAUh9C,EAAKqM,EAAI6wC,YAAYt+C,GAAI+0C,EAAQz4B,GACxD,GAAI/G,EAAU,OAAOA,CACvB,CACF,CACF,CAIA,SAASgpC,GAAc7yC,GACrB,IAAI3M,EAAuB,iBAAT2M,EAAoBA,EAAQgyC,GAAShyC,EAAM8yC,SAC7D,MAAe,QAARz/C,GAA0B,OAARA,GAAyB,SAARA,GAA2B,OAARA,CAC/D,CAEA,SAAS0/C,GAAiB1/C,EAAMsxC,EAAOqO,GACrC,IAAI7wC,EAAO9O,EAKX,OAJIsxC,EAAMsO,QAAkB,OAAR9wC,IAAiB9O,EAAO,OAASA,IAChDgH,EAAcsqC,EAAMuO,QAAUvO,EAAM77B,UAAoB,QAAR3G,IAAkB9O,EAAO,QAAUA,IACnFgH,EAAcsqC,EAAM77B,QAAU67B,EAAMuO,UAAoB,OAAR/wC,IAAiB9O,EAAO,OAASA,IACjF2/C,GAAWrO,EAAMwO,UAAoB,SAARhxC,IAAmB9O,EAAO,SAAWA,GAChEA,CACT,CAGA,SAAS+/C,GAAQzO,EAAOqO,GACtB,GAAI15C,GAA2B,IAAjBqrC,EAAMmO,SAAiBnO,EAAY,KAAK,OAAO,EAC7D,IAAItxC,EAAO2+C,GAASrN,EAAMmO,SAC1B,OAAY,MAARz/C,IAAgBsxC,EAAM0O,cAGL,GAAjB1O,EAAMmO,SAAgBnO,EAAMlgC,OAAQpR,EAAOsxC,EAAMlgC,MAC9CsuC,GAAiB1/C,EAAMsxC,EAAOqO,GACvC,CAEA,SAASL,GAAUn/C,GACjB,MAAqB,iBAAPA,EAAkBI,GAAOJ,GAAOA,CAChD,CAIA,SAAS8/C,GAAoB//C,EAAIggD,GAI/B,IAHA,IAAIn/C,EAASb,EAAGmJ,IAAI9E,IAAIxD,OAAQo/C,EAAO,GAG9Bl/C,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CAEtC,IADA,IAAIm/C,EAASF,EAAQn/C,EAAOE,IACrBk/C,EAAKj/C,QAAU4Z,GAAIslC,EAAOpwC,KAAMxB,GAAI2xC,GAAMlwC,KAAO,GAAG,CACzD,IAAIowC,EAAWF,EAAKrQ,MACpB,GAAIh1B,GAAIulC,EAASrwC,KAAMowC,EAAOpwC,MAAQ,EAAG,CACvCowC,EAAOpwC,KAAOqwC,EAASrwC,KACvB,KACF,CACF,CACAmwC,EAAK97C,KAAK+7C,EACZ,CAEApa,GAAQ9lC,GAAI,WACV,IAAK,IAAIe,EAAIk/C,EAAKj/C,OAAS,EAAGD,GAAK,EAAGA,IAClCQ,GAAavB,EAAGmJ,IAAK,GAAI82C,EAAKl/C,GAAG+O,KAAMmwC,EAAKl/C,GAAGgP,GAAI,WACvDuuB,GAAoBt+B,EACtB,GACF,CAEA,SAASogD,GAAkB5+C,EAAMC,EAAIuC,GACnC,IAAI2H,EAASgE,GAAmBnO,EAAK0R,KAAMzR,EAAKuC,EAAKA,GACrD,OAAO2H,EAAS,GAAKA,EAASnK,EAAK0R,KAAKlS,OAAS,KAAO2K,CAC1D,CAEA,SAAS00C,GAAc7+C,EAAMmD,EAAOX,GAClC,IAAIvC,EAAK2+C,GAAkB5+C,EAAMmD,EAAMlD,GAAIuC,GAC3C,OAAa,MAANvC,EAAa,KAAO,IAAI9B,GAAIgF,EAAMnD,KAAMC,EAAIuC,EAAM,EAAI,QAAU,SACzE,CAEA,SAASs8C,GAAUC,EAAUvgD,EAAI8kB,EAAS7K,EAAQjW,GAChD,GAAIu8C,EAAU,CACY,OAApBvgD,EAAGmJ,IAAI8H,YAAsBjN,GAAOA,GACxC,IAAIsM,EAAQ2C,GAAS6R,EAAS9kB,EAAGmJ,IAAI8H,WACrC,GAAIX,EAAO,CACT,IAGI7O,EAHAwmB,EAAOjkB,EAAM,EAAIsK,GAAIgC,GAASA,EAAM,GAEpCC,EADsBvM,EAAM,IAAqB,GAAdikB,EAAKjX,OACV,QAAU,SAQ5C,GAAIiX,EAAKjX,MAAQ,GAAyB,OAApBhR,EAAGmJ,IAAI8H,UAAoB,CAC/C,IAAIuvC,EAAOpxB,GAAsBpvB,EAAI8kB,GACrCrjB,EAAKuC,EAAM,EAAI8gB,EAAQ5R,KAAKlS,OAAS,EAAI,EACzC,IAAIy/C,EAAYtxB,GAAoBnvB,EAAIwgD,EAAM/+C,GAAI8uB,IAClD9uB,EAAKmO,IAAU,SAAUnO,GAAM,OAAO0tB,GAAoBnvB,EAAIwgD,EAAM/+C,GAAI8uB,KAAOkwB,CAAW,GAAIz8C,EAAM,IAAqB,GAAdikB,EAAKjX,OAAciX,EAAKnY,KAAOmY,EAAKlY,GAAK,EAAGtO,GACzI,UAAV8O,IAAsB9O,EAAK2+C,GAAkBt7B,EAASrjB,EAAI,GAChE,MAASA,EAAKuC,EAAM,EAAIikB,EAAKlY,GAAKkY,EAAKnY,KACvC,OAAO,IAAInQ,GAAIsa,EAAQxY,EAAI8O,EAC7B,CACF,CACA,OAAO,IAAI5Q,GAAIsa,EAAQjW,EAAM,EAAI8gB,EAAQ5R,KAAKlS,OAAS,EAAGgD,EAAM,EAAI,SAAW,QACjF,CA1MA3D,GAAOqgD,MAAQ,CACb,KAAQ,aAAc,MAAS,cAAe,GAAM,WAAY,KAAQ,aACxE,IAAO,YAAa,KAAQ,mBAAoB,OAAU,WAAY,SAAY,aAClF,OAAU,eAAgB,UAAa,gBAAiB,kBAAmB,gBAC3E,IAAO,aAAc,YAAa,aAClC,MAAS,mBAAoB,OAAU,kBACvC,IAAO,mBAKTrgD,GAAOsgD,UAAY,CACjB,SAAU,YAAa,SAAU,aAAc,SAAU,OAAQ,eAAgB,OAAQ,SAAU,OACnG,YAAa,aAAc,WAAY,WAAY,UAAW,WAAY,YAAa,aACvF,YAAa,cAAe,aAAc,eAAgB,WAAY,cAAe,YAAa,YAClG,iBAAkB,iBAAkB,cAAe,gBAAiB,SAAU,OAAQ,SAAU,OAChG,SAAU,WAAY,eAAgB,WAAY,eAAgB,UAAW,eAAgB,aAC7F,SAAU,aAAc,SAAU,aAClC,SAAU,gBAAiB,eAAgB,gBAAiB,QAAS,gBACrE,YAAe,SAGjBtgD,GAAOugD,OAAS,CACd,SAAU,cAAe,SAAU,aAAc,SAAU,WAAY,SAAU,aACjF,SAAU,cAAe,SAAU,YAAa,SAAU,aAAc,eAAgB,WACxF,SAAU,eAAgB,SAAU,gBAAiB,gBAAiB,gBAAiB,SAAU,WACjG,SAAU,iBAAkB,SAAU,YAExCvgD,GAAOwgD,WAAa,CAClB,QAAS,YAAa,QAAS,aAAc,QAAS,OAAQ,cAAe,OAAQ,QAAS,OAC9F,WAAY,aAAc,SAAU,aAAc,UAAW,WAAY,WAAY,WAAY,WAAY,cAC7G,YAAa,eAAgB,WAAY,aAAc,YAAa,cAAe,gBAAiB,iBACpG,qBAAsB,gBAAiB,aAAc,gBAAiB,QAAS,OAAQ,QAAS,OAChG,QAAS,WAAY,cAAe,WAAY,YAAa,UAAW,kBAAmB,aAC3F,QAAS,aAAc,QAAS,aAAc,gBAAiB,qBAAsB,aAAc,sBACnG,QAAS,gBAAiB,cAAe,gBAAiB,UAAW,aAAc,YAAa,WAChG,YAAe,CAAC,QAAS,WAE3BxgD,GAAgB,QAAImG,EAAMnG,GAAOwgD,WAAaxgD,GAAOsgD,UA6OrD,IAAIG,GAAW,CACb1N,UAAWA,GACX2N,gBAAiB,SAAU/gD,GAAM,OAAOA,EAAGyxC,aAAazxC,EAAG+D,UAAU,UAAW/D,EAAG+D,UAAU,QAAS0J,EAAiB,EACvHuzC,SAAU,SAAUhhD,GAAM,OAAO+/C,GAAoB//C,GAAI,SAAU0C,GACjE,GAAIA,EAAMzB,QAAS,CACjB,IAAImQ,EAAM8H,GAAQlZ,EAAGmJ,IAAKzG,EAAMtB,KAAKI,MAAM0R,KAAKlS,OAChD,OAAI0B,EAAMtB,KAAKK,IAAM2P,GAAO1O,EAAMtB,KAAKI,KAAOxB,EAAGykB,WACtC,CAAC3U,KAAMpN,EAAMtB,KAAM2O,GAAIpQ,GAAI+C,EAAMtB,KAAKI,KAAO,EAAG,IAEhD,CAACsO,KAAMpN,EAAMtB,KAAM2O,GAAIpQ,GAAI+C,EAAMtB,KAAKI,KAAM4P,GACzD,CACE,MAAO,CAACtB,KAAMpN,EAAMoN,OAAQC,GAAIrN,EAAMqN,KAE1C,GAAI,EACJkxC,WAAY,SAAUjhD,GAAM,OAAO+/C,GAAoB//C,GAAI,SAAU0C,GAAS,MAAO,CACnFoN,KAAMnQ,GAAI+C,EAAMoN,OAAOtO,KAAM,GAC7BuO,GAAIqL,GAAQpb,EAAGmJ,IAAKxJ,GAAI+C,EAAMqN,KAAKvO,KAAO,EAAG,IAC3C,GAAI,EACR0/C,YAAa,SAAUlhD,GAAM,OAAO+/C,GAAoB//C,GAAI,SAAU0C,GAAS,MAAO,CACpFoN,KAAMnQ,GAAI+C,EAAMoN,OAAOtO,KAAM,GAAIuO,GAAIrN,EAAMoN,OACzC,GAAI,EACRqxC,mBAAoB,SAAUnhD,GAAM,OAAO+/C,GAAoB//C,GAAI,SAAU0C,GAC3E,IAAI6tB,EAAMvwB,EAAGg0B,WAAWtxB,EAAMtB,KAAM,OAAOmvB,IAAM,EAEjD,MAAO,CAACzgB,KADM9P,EAAG40B,WAAW,CAAC1xB,KAAM,EAAGqtB,IAAKA,GAAM,OAC1BxgB,GAAIrN,EAAMoN,OACnC,GAAI,EACJsxC,oBAAqB,SAAUphD,GAAM,OAAO+/C,GAAoB//C,GAAI,SAAU0C,GAC5E,IAAI6tB,EAAMvwB,EAAGg0B,WAAWtxB,EAAMtB,KAAM,OAAOmvB,IAAM,EAC7C8wB,EAAWrhD,EAAG40B,WAAW,CAAC1xB,KAAMlD,EAAG0K,QAAQmyB,QAAQ9mB,YAAc,IAAKwa,IAAKA,GAAM,OACrF,MAAO,CAACzgB,KAAMpN,EAAMoN,OAAQC,GAAIsxC,EAClC,GAAI,EACJxH,KAAM,SAAU75C,GAAM,OAAOA,EAAG65C,MAAQ,EACxCC,KAAM,SAAU95C,GAAM,OAAOA,EAAG85C,MAAQ,EACxCC,cAAe,SAAU/5C,GAAM,OAAOA,EAAG+5C,eAAiB,EAC1DC,cAAe,SAAUh6C,GAAM,OAAOA,EAAGg6C,eAAiB,EAC1DsH,WAAY,SAAUthD,GAAM,OAAOA,EAAGwxC,gBAAgB7xC,GAAIK,EAAGytC,YAAa,GAAK,EAC/E8T,SAAU,SAAUvhD,GAAM,OAAOA,EAAGwxC,gBAAgB7xC,GAAIK,EAAGykB,YAAc,EACzE+8B,YAAa,SAAUxhD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GAAS,OAAOuW,GAAUjZ,EAAI0C,EAAMtB,KAAKI,KAAO,GAClH,CAACoM,OAAQ,QAASshB,KAAM,GACvB,EACHuyB,iBAAkB,SAAUzhD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GAAS,OAAOg/C,GAAe1hD,EAAI0C,EAAMtB,KAAO,GACvH,CAACwM,OAAQ,QAASshB,KAAM,GACvB,EACHyyB,UAAW,SAAU3hD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GAAS,OAwG7E,SAAiB1C,EAAIskB,GACnB,IAAI9iB,EAAO0X,GAAQlZ,EAAGmJ,IAAKmb,GACvB4zB,EAn9KN,SAAuB12C,GAErB,IADA,IAAI4iB,EACGA,EAASL,GAAmBviB,IAC/BA,EAAO4iB,EAAOb,KAAK,GAAG,GAAM/hB,KAChC,OAAOA,CACT,CA88KeogD,CAAcpgD,GAE3B,OADI02C,GAAU12C,IAAQ8iB,EAAQrK,GAAOi+B,IAC9BoI,IAAU,EAAMtgD,EAAIwB,EAAM8iB,GAAQ,EAC3C,CA7GoFu9B,CAAQ7hD,EAAI0C,EAAMtB,KAAKI,KAAO,GAC9G,CAACoM,OAAQ,QAASshB,MAAO,GACxB,EACH4yB,YAAa,SAAU9hD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GAClE,IAAI6tB,EAAMvwB,EAAGi0B,aAAavxB,EAAMtB,KAAM,OAAOmvB,IAAM,EACnD,OAAOvwB,EAAG40B,WAAW,CAAC1xB,KAAMlD,EAAG0K,QAAQmyB,QAAQ9mB,YAAc,IAAKwa,IAAKA,GAAM,MAC/E,GAAG1iB,EAAW,EACdk0C,WAAY,SAAU/hD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GACjE,IAAI6tB,EAAMvwB,EAAGi0B,aAAavxB,EAAMtB,KAAM,OAAOmvB,IAAM,EACnD,OAAOvwB,EAAG40B,WAAW,CAAC1xB,KAAM,EAAGqtB,IAAKA,GAAM,MAC5C,GAAG1iB,EAAW,EACdm0C,gBAAiB,SAAUhiD,GAAM,OAAOA,EAAGq5C,oBAAmB,SAAU32C,GACtE,IAAI6tB,EAAMvwB,EAAGi0B,aAAavxB,EAAMtB,KAAM,OAAOmvB,IAAM,EAC/CluB,EAAMrC,EAAG40B,WAAW,CAAC1xB,KAAM,EAAGqtB,IAAKA,GAAM,OAC7C,OAAIluB,EAAIZ,GAAKzB,EAAGkZ,QAAQ7W,EAAIb,MAAM4K,OAAO,MAAgBs1C,GAAe1hD,EAAI0C,EAAMtB,MAC3EiB,CACT,GAAGwL,EAAW,EACdo0C,SAAU,SAAUjiD,GAAM,OAAOA,EAAGkiD,OAAO,EAAG,OAAS,EACvDC,WAAY,SAAUniD,GAAM,OAAOA,EAAGkiD,MAAM,EAAG,OAAS,EACxDE,SAAU,SAAUpiD,GAAM,OAAOA,EAAGkiD,OAAO,EAAG,OAAS,EACvDG,WAAY,SAAUriD,GAAM,OAAOA,EAAGkiD,MAAM,EAAG,OAAS,EACxDI,WAAY,SAAUtiD,GAAM,OAAOA,EAAGuiD,OAAO,EAAG,OAAS,EACzDC,YAAa,SAAUxiD,GAAM,OAAOA,EAAGuiD,MAAM,EAAG,OAAS,EACzDE,aAAc,SAAUziD,GAAM,OAAOA,EAAGuiD,OAAO,EAAG,SAAW,EAC7DG,cAAe,SAAU1iD,GAAM,OAAOA,EAAGuiD,MAAM,EAAG,SAAW,EAC7DI,WAAY,SAAU3iD,GAAM,OAAOA,EAAGuiD,OAAO,EAAG,OAAS,EACzDK,aAAc,SAAU5iD,GAAM,OAAOA,EAAGuiD,MAAM,EAAG,QAAU,EAC3DM,YAAa,SAAU7iD,GAAM,OAAOA,EAAGuiD,OAAO,EAAG,QAAU,EAC3DO,YAAa,SAAU9iD,GAAM,OAAOA,EAAGuiD,MAAM,EAAG,OAAS,EACzDQ,cAAe,SAAU/iD,GAAM,OAAOA,EAAGgjD,SAAS,EAAG,YAAc,EACnEC,aAAc,SAAUjjD,GAAM,OAAOA,EAAGgjD,QAAQ,EAAG,OAAS,EAC5DE,cAAe,SAAUljD,GAAM,OAAOA,EAAGgjD,SAAS,EAAG,OAAS,EAC9DG,aAAc,SAAUnjD,GAAM,OAAOA,EAAGgjD,QAAQ,EAAG,OAAS,EAC5DI,eAAgB,SAAUpjD,GAAM,OAAOA,EAAGgjD,SAAS,EAAG,QAAU,EAChEK,cAAe,SAAUrjD,GAAM,OAAOA,EAAGgjD,QAAQ,EAAG,QAAU,EAC9DM,WAAY,SAAUtjD,GAAM,OAAOA,EAAGujD,gBAAgB,QAAU,EAChEC,WAAY,SAAUxjD,GAAM,OAAOA,EAAGujD,gBAAgB,MAAQ,EAC9DE,WAAY,SAAUzjD,GAAM,OAAOA,EAAGujD,gBAAgB,WAAa,EACnEG,UAAW,SAAU1jD,GAAM,OAAOA,EAAG8B,iBAAiB,KAAO,EAC7D6hD,cAAe,SAAU3jD,GAEvB,IADA,IAAI4jD,EAAS,GAAI/iD,EAASb,EAAGc,iBAAkBmL,EAAUjM,EAAG4X,QAAQ3L,QAC3DlL,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAIsB,EAAMxB,EAAOE,GAAG+O,OAChB9B,EAAMjC,EAAY/L,EAAGkZ,QAAQ7W,EAAIb,MAAOa,EAAIZ,GAAIwK,GACpD23C,EAAOz/C,KAAKkK,EAASpC,EAAU+B,EAAM/B,GACvC,CACAjM,EAAGsD,kBAAkBsgD,EACvB,EACAC,WAAY,SAAU7jD,GAChBA,EAAGosC,oBAAuBpsC,EAAGujD,gBAAgB,OAC1CvjD,EAAG8jD,YAAY,YACxB,EAQAC,eAAgB,SAAU/jD,GAAM,OAAO8lC,GAAQ9lC,GAAI,WAEjD,IADA,IAAIa,EAASb,EAAGc,iBAAkB04C,EAAS,GAClCz4C,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IACjC,GAAKF,EAAOE,GAAGE,QAAf,CACA,IAAIK,EAAMT,EAAOE,GAAGK,KAAMI,EAAO0X,GAAQlZ,EAAGmJ,IAAK7H,EAAIE,MAAM0R,KAC3D,GAAI1R,EAEF,GADIF,EAAIG,IAAMD,EAAKR,SAAUM,EAAM,IAAI3B,GAAI2B,EAAIE,KAAMF,EAAIG,GAAK,IAC1DH,EAAIG,GAAK,EACXH,EAAM,IAAI3B,GAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GACjCzB,EAAGuB,aAAaC,EAAKU,OAAOZ,EAAIG,GAAK,GAAKD,EAAKU,OAAOZ,EAAIG,GAAK,GAC/C9B,GAAI2B,EAAIE,KAAMF,EAAIG,GAAK,GAAIH,EAAK,mBAC3C,GAAIA,EAAIE,KAAOxB,EAAGmJ,IAAIgQ,MAAO,CAClC,IAAIpW,EAAOmW,GAAQlZ,EAAGmJ,IAAK7H,EAAIE,KAAO,GAAG0R,KACrCnQ,IACFzB,EAAM,IAAI3B,GAAI2B,EAAIE,KAAM,GACxBxB,EAAGuB,aAAaC,EAAKU,OAAO,GAAKlC,EAAGmJ,IAAItH,gBACxBkB,EAAKb,OAAOa,EAAK/B,OAAS,GAC1BrB,GAAI2B,EAAIE,KAAO,EAAGuB,EAAK/B,OAAS,GAAIM,EAAK,cAE7D,CAEFk4C,EAAOr1C,KAAK,IAAIgoC,GAAM7qC,EAAKA,GAlBQ,CAoBrCtB,EAAGyD,cAAc+1C,EACnB,GAAI,EACJwK,iBAAkB,SAAUhkD,GAAM,OAAO8lC,GAAQ9lC,GAAI,WAEnD,IADA,IAAIoD,EAAOpD,EAAGc,iBACLC,EAAIqC,EAAKpC,OAAS,EAAGD,GAAK,EAAGA,IAClCf,EAAGuB,aAAavB,EAAGmJ,IAAItH,gBAAiBuB,EAAKrC,GAAGqD,OAAQhB,EAAKrC,GAAGK,KAAM,UAC1EgC,EAAOpD,EAAGc,iBACV,IAAK,IAAIwQ,EAAM,EAAGA,EAAMlO,EAAKpC,OAAQsQ,IACjCtR,EAAGgC,WAAWoB,EAAKkO,GAAKxB,OAAOtO,KAAM,MAAM,GAC/C88B,GAAoBt+B,EACtB,GAAI,EACJikD,SAAU,SAAUjkD,GAAM,OAAOA,EAAG8B,iBAAiB,KAAM,QAAU,EACrEoiD,gBAAiB,SAAUlkD,GAAM,OAAOA,EAAGkkD,iBAAmB,GAIhE,SAASjrC,GAAUjZ,EAAIskB,GACrB,IAAI9iB,EAAO0X,GAAQlZ,EAAGmJ,IAAKmb,GACvB4zB,EAAS/zB,GAAW3iB,GAExB,OADI02C,GAAU12C,IAAQ8iB,EAAQrK,GAAOi+B,IAC9BoI,IAAU,EAAMtgD,EAAIk4C,EAAQ5zB,EAAO,EAC5C,CAOA,SAASo9B,GAAe1hD,EAAIqC,GAC1B,IAAIsC,EAAQsU,GAAUjZ,EAAIqC,EAAIb,MAC1BA,EAAO0X,GAAQlZ,EAAGmJ,IAAKxE,EAAMnD,MAC7B8O,EAAQ2C,GAASzR,EAAMxB,EAAGmJ,IAAI8H,WAClC,IAAKX,GAA2B,GAAlBA,EAAM,GAAGU,MAAY,CACjC,IAAImzC,EAAaj2C,KAAKiN,IAAIxW,EAAMlD,GAAID,EAAK0R,KAAK9G,OAAO,OACjDg4C,EAAO/hD,EAAIb,MAAQmD,EAAMnD,MAAQa,EAAIZ,IAAM0iD,GAAc9hD,EAAIZ,GACjE,OAAO9B,GAAIgF,EAAMnD,KAAM4iD,EAAO,EAAID,EAAYx/C,EAAM4L,OACtD,CACA,OAAO5L,CACT,CAGA,SAAS0/C,GAAgBrkD,EAAIskD,EAAOC,GAClC,GAAoB,iBAATD,KACTA,EAAQxD,GAASwD,IACH,OAAO,EAIvBtkD,EAAG0K,QAAQ2d,MAAMm8B,eACjB,IAAIC,EAAYzkD,EAAG0K,QAAQgyB,MAAOmS,GAAO,EACzC,IACM7uC,EAAG+8C,eAAgB/8C,EAAGM,MAAMozC,eAAgB,GAC5C6Q,IAAavkD,EAAG0K,QAAQgyB,OAAQ,GACpCmS,EAAOyV,EAAMtkD,IAAOY,CACtB,CAAE,QACAZ,EAAG0K,QAAQgyB,MAAQ+nB,EACnBzkD,EAAGM,MAAMozC,eAAgB,CAC3B,CACA,OAAO7E,CACT,CAcA,IAAI6V,GAAU,IAAI/3C,EAElB,SAASg4C,GAAY3kD,EAAIF,EAAM4H,EAAGouC,GAChC,IAAI8O,EAAM5kD,EAAGM,MAAMukD,OACnB,GAAID,EAAK,CACP,GAAItF,GAAcx/C,GAAS,MAAO,UAUlC,GATI,MAAM+C,KAAK/C,GACXE,EAAGM,MAAMukD,OAAS,KAElBH,GAAQt3C,IAAI,IAAI,WACZpN,EAAGM,MAAMukD,QAAUD,IACrB5kD,EAAGM,MAAMukD,OAAS,KAClB7kD,EAAG0K,QAAQ2d,MAAMmU,QAErB,IACEsoB,GAAiB9kD,EAAI4kD,EAAM,IAAM9kD,EAAM4H,EAAGouC,GAAW,OAAO,CAClE,CACA,OAAOgP,GAAiB9kD,EAAIF,EAAM4H,EAAGouC,EACvC,CAEA,SAASgP,GAAiB9kD,EAAIF,EAAM4H,EAAGouC,GACrC,IAAIx/B,EAjCN,SAA4BtW,EAAIF,EAAMg2C,GACpC,IAAK,IAAI/0C,EAAI,EAAGA,EAAIf,EAAGM,MAAMykD,QAAQ/jD,OAAQD,IAAK,CAChD,IAAIuV,EAAS6oC,GAAUr/C,EAAME,EAAGM,MAAMykD,QAAQhkD,GAAI+0C,EAAQ91C,GAC1D,GAAIsW,EAAU,OAAOA,CACvB,CACA,OAAQtW,EAAG4X,QAAQotC,WAAa7F,GAAUr/C,EAAME,EAAG4X,QAAQotC,UAAWlP,EAAQ91C,IACzEm/C,GAAUr/C,EAAME,EAAG4X,QAAQvX,OAAQy1C,EAAQ91C,EAClD,CA0BeilD,CAAmBjlD,EAAIF,EAAMg2C,GAY1C,MAVc,SAAVx/B,IACAtW,EAAGM,MAAMukD,OAAS/kD,GACR,WAAVwW,GACAoT,GAAY1pB,EAAI,aAAcA,EAAIF,EAAM4H,GAE9B,WAAV4O,GAAiC,SAAVA,IACzB1B,GAAiBlN,GACjB4zB,GAAat7B,MAGNsW,CACX,CAGA,SAAS4uC,GAAiBllD,EAAI0H,GAC5B,IAAI5H,EAAO+/C,GAAQn4C,GAAG,GACtB,QAAK5H,IAED4H,EAAEk4C,WAAa5/C,EAAGM,MAAMukD,OAInBF,GAAY3kD,EAAI,SAAWF,EAAM4H,GAAG,SAAUgC,GAAK,OAAO26C,GAAgBrkD,EAAI0J,GAAG,EAAO,KACxFi7C,GAAY3kD,EAAIF,EAAM4H,GAAG,SAAUgC,GACjC,GAAgB,iBAALA,EAAgB,WAAW7G,KAAK6G,GAAKA,EAAEy7C,OAC9C,OAAOd,GAAgBrkD,EAAI0J,EACjC,IAEAi7C,GAAY3kD,EAAIF,EAAM4H,GAAG,SAAUgC,GAAK,OAAO26C,GAAgBrkD,EAAI0J,EAAI,IAElF,CAOA,IAAI07C,GAAiB,KACrB,SAASC,GAAU39C,GACjB,IAAI1H,EAAK4M,KACT,KAAIlF,EAAEiE,QAAUjE,EAAEiE,QAAU3L,EAAG0K,QAAQ2d,MAAMi9B,aAC7CtlD,EAAGuU,MAAM0nB,MAAQjzB,EAAU4B,EAAK5K,IAC5BgU,GAAehU,EAAI0H,KAAvB,CAEInC,GAAMC,EAAa,IAAmB,IAAbkC,EAAE63C,UAAiB73C,EAAEmN,aAAc,GAChE,IAAI3D,EAAOxJ,EAAE63C,QACbv/C,EAAG0K,QAAQgyB,MAAgB,IAARxrB,GAAcxJ,EAAEk4C,SACnC,IAAI2F,EAAUL,GAAiBllD,EAAI0H,GAC/B3B,IACFq/C,GAAiBG,EAAUr0C,EAAO,KAE7Bq0C,GAAmB,IAARr0C,GAAe+F,MAAiBzQ,EAAMkB,EAAEi4C,QAAUj4C,EAAE6N,UAChEvV,EAAG8B,iBAAiB,GAAI,KAAM,QAEhCoD,IAAUsB,IAAQ++C,GAAmB,IAARr0C,GAAcxJ,EAAEk4C,WAAal4C,EAAE6N,SAAW9P,SAASq+C,aAChFr+C,SAASq+C,YAAY,OAGb,IAAR5yC,GAAe,2BAA2BrO,KAAK7C,EAAG0K,QAAQmyB,QAAQv1B,YAIxE,SAAuBtH,GACrB,IAAI68B,EAAU78B,EAAG0K,QAAQmyB,QAGzB,SAAS2oB,EAAG99C,GACO,IAAbA,EAAE63C,SAAkB73C,EAAEg4C,SACxBv4C,EAAQ01B,EAAS,wBACjBlpB,GAAIlO,SAAU,QAAS+/C,GACvB7xC,GAAIlO,SAAU,YAAa+/C,GAE/B,CARAj8C,EAASszB,EAAS,wBASlBzpB,GAAG3N,SAAU,QAAS+/C,GACtBpyC,GAAG3N,SAAU,YAAa+/C,EAC5B,CAhBMC,CAAczlD,EAjBkB,CAkBtC,CAiBA,SAAS0lD,GAAQh+C,GACE,IAAbA,EAAE63C,UAAiB3yC,KAAKzD,IAAI9E,IAAIq4B,OAAQ,GAC5C1oB,GAAepH,KAAMlF,EACvB,CAEA,SAASi+C,GAAWj+C,GAClB,IAAI1H,EAAK4M,KACT,KAAIlF,EAAEiE,QAAUjE,EAAEiE,QAAU3L,EAAG0K,QAAQ2d,MAAMi9B,YACzC93B,GAAcxtB,EAAG0K,QAAShD,IAAMsM,GAAehU,EAAI0H,IAAMA,EAAE6N,UAAY7N,EAAEg4C,QAAUl5C,GAAOkB,EAAEi4C,SAAhG,CACA,IAAIJ,EAAU73C,EAAE63C,QAASqG,EAAWl+C,EAAEk+C,SACtC,GAAI7/C,GAAUw5C,GAAW6F,GAA6D,OAA5CA,GAAiB,UAAMxwC,GAAiBlN,GAClF,IAAK3B,GAAY2B,EAAE2N,SAAS3N,EAAE2N,MAAQ,MAAQ6vC,GAAiBllD,EAAI0H,GAAnE,CACA,IAAIjG,EAAKgZ,OAAOikC,aAAyB,MAAZkH,EAAmBrG,EAAUqG,GAEhD,MAANnkD,IA1DN,SAA2BzB,EAAI0H,EAAGjG,GAChC,OAAOkjD,GAAY3kD,EAAI,IAAMyB,EAAK,IAAKiG,GAAG,SAAUgC,GAAK,OAAO26C,GAAgBrkD,EAAI0J,GAAG,EAAO,GAChG,CAyDMm8C,CAAkB7lD,EAAI0H,EAAGjG,IAC7BzB,EAAG0K,QAAQ2d,MAAMs9B,WAAWj+C,GALoD,CAHkC,CASpH,CAEA,IAaIo+C,GAAWC,GAXXC,GAAY,SAASl5C,EAAMzK,EAAKiT,GAClC1I,KAAKE,KAAOA,EACZF,KAAKvK,IAAMA,EACXuK,KAAK0I,OAASA,CAChB,EA6BA,SAAS2wC,GAAYv+C,GACnB,IAAI1H,EAAK4M,KAAMlC,EAAU1K,EAAG0K,QAC5B,KAAIsJ,GAAehU,EAAI0H,IAAMgD,EAAQw/B,aAAex/B,EAAQ2d,MAAM69B,iBAIlE,GAHAx7C,EAAQ2d,MAAMm8B,eACd95C,EAAQgyB,MAAQh1B,EAAEk4C,SAEdpyB,GAAc9iB,EAAShD,GACpB/B,IAGH+E,EAAQikB,SAASob,WAAY,EAC7B58B,YAAW,WAAc,OAAOzC,EAAQikB,SAASob,WAAY,CAAM,GAAG,WAI1E,IAAIoc,GAAcnmD,EAAI0H,GAAtB,CACA,IAAIrF,EAAMu0B,GAAa52B,EAAI0H,GAAI4N,EAASF,GAAS1N,GAAI0+C,EAAS/jD,EArChE,SAAqBA,EAAKiT,GACxB,IAAI+wC,GAAO,IAAIn5C,KACf,OAAI64C,IAAmBA,GAAgBO,QAAQD,EAAKhkD,EAAKiT,IACvDwwC,GAAYC,GAAkB,KACvB,UACED,IAAaA,GAAUQ,QAAQD,EAAKhkD,EAAKiT,IAClDywC,GAAkB,IAAIC,GAAUK,EAAKhkD,EAAKiT,GAC1CwwC,GAAY,KACL,WAEPA,GAAY,IAAIE,GAAUK,EAAKhkD,EAAKiT,GACpCywC,GAAkB,KACX,SAEX,CAuBsEQ,CAAYlkD,EAAKiT,GAAU,SAC/FvK,EAAI/K,GAAIi8B,QAGM,GAAV3mB,GAAetV,EAAGM,MAAMkmD,eACxBxmD,EAAGM,MAAMkmD,cAAc9+C,GAEvBrF,GAcN,SAA4BrC,EAAIsV,EAAQjT,EAAK+jD,EAAQhV,GACnD,IAAItxC,EAAO,QAKX,MAJc,UAAVsmD,EAAsBtmD,EAAO,SAAWA,EACzB,UAAVsmD,IAAsBtmD,EAAO,SAAWA,GAG1C6kD,GAAY3kD,EAAKw/C,GAFxB1/C,GAAkB,GAAVwV,EAAc,OAAmB,GAAVA,EAAc,SAAW,SAAWxV,EAEpBsxC,GAAQA,GAAO,SAAUkT,GAEtE,GADoB,iBAATA,IAAqBA,EAAQxD,GAASwD,KAC5CA,EAAS,OAAO,EACrB,IAAIzV,GAAO,EACX,IACM7uC,EAAG+8C,eAAgB/8C,EAAGM,MAAMozC,eAAgB,GAChD7E,EAAOyV,EAAMtkD,EAAIqC,IAAQzB,CAC3B,CAAE,QACAZ,EAAGM,MAAMozC,eAAgB,CAC3B,CACA,OAAO7E,CACT,GACF,CAhCa4X,CAAmBzmD,EAAIsV,EAAQjT,EAAK+jD,EAAQ1+C,KAEzC,GAAV4N,EACEjT,EA4CR,SAAwBrC,EAAIqC,EAAK+jD,EAAQhV,GACnC7rC,EAAM4H,WAAWlC,EAAK+wB,GAAah8B,GAAK,GACrCA,EAAGuU,MAAM0nB,MAAQjzB,EAAU4B,EAAK5K,IAEvC,IAEsB0mD,EAFlBC,EAjBN,SAAwB3mD,EAAIomD,EAAQhV,GAClC,IAAIwV,EAAS5mD,EAAGJ,UAAU,kBACtB6M,EAAQm6C,EAASA,EAAO5mD,EAAIomD,EAAQhV,GAAS,CAAC,EAClD,GAAkB,MAAd3kC,EAAMo6C,KAAc,CACtB,IAAIl3B,EAAOlpB,EAAW2qC,EAAMwO,UAAYxO,EAAMuO,QAAUvO,EAAMsO,OAC9DjzC,EAAMo6C,KAAOl3B,EAAO,YAAwB,UAAVy2B,EAAqB,OAAmB,UAAVA,EAAqB,OAAS,MAChG,CAIA,OAHoB,MAAhB35C,EAAMm7B,QAAkB5nC,EAAGmJ,IAAIy+B,UAAUn7B,EAAMm7B,OAAS5nC,EAAGmJ,IAAIy+B,QAAUwJ,EAAMwO,UAC/D,MAAhBnzC,EAAMq6C,SAAkBr6C,EAAMq6C,OAAStgD,EAAM4qC,EAAMuO,QAAUvO,EAAM77B,SAC/C,MAApB9I,EAAMs6C,aAAsBt6C,EAAMs6C,aAAevgD,EAAM4qC,EAAMsO,OAAStO,EAAM77B,UACzE9I,CACT,CAMiBu6C,CAAehnD,EAAIomD,EAAQhV,GAEtC/sC,EAAMrE,EAAGmJ,IAAI9E,IACbrE,EAAG4X,QAAQqvC,UAAYvxC,KAAgB1V,EAAG+8C,cAChC,UAAVqJ,IAAuBM,EAAYriD,EAAIsE,SAAStG,KAAS,IACxDuY,IAAK8rC,EAAYriD,EAAIxD,OAAO6lD,IAAY52C,OAAQzN,GAAO,GAAKA,EAAIsyB,KAAO,KACvE/Z,GAAI8rC,EAAU32C,KAAM1N,GAAO,GAAKA,EAAIsyB,KAAO,GAQlD,SAA6B30B,EAAIoxC,EAAO/uC,EAAKskD,GAC3C,IAAIj8C,EAAU1K,EAAG0K,QAASw8C,GAAQ,EAC9BC,EAAUxlD,GAAU3B,GAAI,SAAU0H,GAChC/B,IAAU+E,EAAQikB,SAASob,WAAY,GAC3C/pC,EAAGM,MAAM+7B,cAAe,EACpBr8B,EAAGM,MAAM87B,oBACPp8B,EAAG87B,WAAc97B,EAAGM,MAAM87B,mBAAoB,EAC3CD,GAAen8B,IAExB2T,GAAIjJ,EAAQC,QAAQvB,cAAe,UAAW+9C,GAC9CxzC,GAAIjJ,EAAQC,QAAQvB,cAAe,YAAag+C,GAChDzzC,GAAIjJ,EAAQikB,SAAU,YAAa04B,GACnC1zC,GAAIjJ,EAAQikB,SAAU,OAAQw4B,GACzBD,IACHtyC,GAAiBlN,GACZi/C,EAASG,QACVtV,GAAgBxxC,EAAGmJ,IAAK9G,EAAK,KAAM,KAAMskD,EAAS/e,QAEjDjiC,IAAWK,GAAWT,GAAoB,GAAdC,EAC7B2H,YAAW,WAAazC,EAAQC,QAAQvB,cAAcC,KAAK4yB,MAAM,CAACqrB,eAAe,IAAQ58C,EAAQ2d,MAAM4T,OAAQ,GAAG,IAElHvxB,EAAQ2d,MAAM4T,QAEtB,IACImrB,EAAY,SAASG,GACvBL,EAAQA,GAASh5C,KAAKmiB,IAAI+gB,EAAMpa,QAAUuwB,EAAGvwB,SAAW9oB,KAAKmiB,IAAI+gB,EAAMna,QAAUswB,EAAGtwB,UAAY,EAClG,EACIowB,EAAY,WAAc,OAAOH,GAAQ,CAAM,EAE/CvhD,IAAU+E,EAAQikB,SAASob,WAAY,GAC3C/pC,EAAGM,MAAM+7B,aAAe8qB,EACxBA,EAAQnnC,MAAQ2mC,EAASI,WACzB3zC,GAAG1I,EAAQC,QAAQvB,cAAe,UAAW+9C,GAC7C/zC,GAAG1I,EAAQC,QAAQvB,cAAe,YAAag+C,GAC/Ch0C,GAAG1I,EAAQikB,SAAU,YAAa04B,GAClCj0C,GAAG1I,EAAQikB,SAAU,OAAQw4B,GAE7BnnD,EAAGM,MAAM87B,mBAAoB,EAC7BjvB,YAAW,WAAc,OAAOzC,EAAQ2d,MAAM4T,OAAS,GAAG,IAEtDvxB,EAAQikB,SAASs4B,UAAYv8C,EAAQikB,SAASs4B,UACpD,CAhDMO,CAAoBxnD,EAAIoxC,EAAO/uC,EAAKskD,GA2D1C,SAA0B3mD,EAAIoxC,EAAOzsC,EAAOgiD,GACtCphD,GAAM42B,GAAen8B,GACzB,IAAI0K,EAAU1K,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IACnCyL,GAAiBw8B,GAEjB,IAAIqW,EAAUC,EAAUC,EAAWx+C,EAAI9E,IAAKxD,EAAS8mD,EAAS9mD,OAY9D,GAXI8lD,EAASG,SAAWH,EAAS/e,QAC/B8f,EAAWv+C,EAAI9E,IAAIsE,SAAShE,GAExB8iD,EADAC,GAAY,EACD7mD,EAAO6mD,GAEP,IAAIvb,GAAMxnC,EAAOA,KAEhC8iD,EAAWt+C,EAAI9E,IAAIH,UACnBwjD,EAAWv+C,EAAI9E,IAAIu0B,WAGA,aAAjB+tB,EAASE,KACNF,EAASG,SAAUW,EAAW,IAAItb,GAAMxnC,EAAOA,IACpDA,EAAQiyB,GAAa52B,EAAIoxC,GAAO,GAAM,GACtCsW,GAAY,MACP,CACL,IAAIhlD,EAAQklD,GAAa5nD,EAAI2E,EAAOgiD,EAASE,MAEzCY,EADAd,EAAS/e,OACE0J,GAAYmW,EAAU/kD,EAAM0B,OAAQ1B,EAAMtB,KAAMulD,EAAS/e,QAEzDllC,CACjB,CAEKikD,EAASG,QAIU,GAAbY,GACTA,EAAW7mD,EAAOG,OAClBywC,GAAatoC,EAAKkjC,GAAmBrsC,EAAIa,EAAO4S,OAAO,CAACg0C,IAAYC,GACvD,CAACh6C,QAAQ,EAAOE,OAAQ,YAC5B/M,EAAOG,OAAS,GAAKH,EAAO6mD,GAAUzmD,SAA4B,QAAjB0lD,EAASE,OAAmBF,EAAS/e,QAC/F6J,GAAatoC,EAAKkjC,GAAmBrsC,EAAIa,EAAO0C,MAAM,EAAGmkD,GAAUj0C,OAAO5S,EAAO0C,MAAMmkD,EAAW,IAAK,GAC1F,CAACh6C,QAAQ,EAAOE,OAAQ,WACrC+5C,EAAWx+C,EAAI9E,KAEfutC,GAAoBzoC,EAAKu+C,EAAUD,EAAU95C,IAZ7C+5C,EAAW,EACXjW,GAAatoC,EAAK,IAAI2iC,GAAU,CAAC2b,GAAW,GAAI95C,GAChDg6C,EAAWx+C,EAAI9E,KAajB,IAAIwjD,EAAUljD,EACd,SAASmjD,EAASzlD,GAChB,GAAyB,GAArBuY,GAAIitC,EAASxlD,GAGjB,GAFAwlD,EAAUxlD,EAEW,aAAjBskD,EAASE,KAAqB,CAKhC,IAJA,IAAIhmD,EAAS,GAAIoL,EAAUjM,EAAG4X,QAAQ3L,QAClC87C,EAAWh8C,EAAYmN,GAAQ/P,EAAKxE,EAAMnD,MAAM0R,KAAMvO,EAAMlD,GAAIwK,GAChE+7C,EAASj8C,EAAYmN,GAAQ/P,EAAK9G,EAAIb,MAAM0R,KAAM7Q,EAAIZ,GAAIwK,GAC1D/I,EAAOgL,KAAKC,IAAI45C,EAAUC,GAAS7kD,EAAQ+K,KAAKiN,IAAI4sC,EAAUC,GACzDxmD,EAAO0M,KAAKC,IAAIxJ,EAAMnD,KAAMa,EAAIb,MAAOsI,EAAMoE,KAAKC,IAAInO,EAAGykB,WAAYvW,KAAKiN,IAAIxW,EAAMnD,KAAMa,EAAIb,OAClGA,GAAQsI,EAAKtI,IAAQ,CACxB,IAAI0R,EAAOgG,GAAQ/P,EAAK3H,GAAM0R,KAAM+0C,EAAUn6C,EAAWoF,EAAMhQ,EAAM+I,GACjE/I,GAAQC,EACRtC,EAAOsD,KAAK,IAAIgoC,GAAMxsC,GAAI6B,EAAMymD,GAAUtoD,GAAI6B,EAAMymD,KAC/C/0C,EAAKlS,OAASinD,GACnBpnD,EAAOsD,KAAK,IAAIgoC,GAAMxsC,GAAI6B,EAAMymD,GAAUtoD,GAAI6B,EAAMsM,EAAWoF,EAAM/P,EAAO8I,KAClF,CACKpL,EAAOG,QAAUH,EAAOsD,KAAK,IAAIgoC,GAAMxnC,EAAOA,IACnD8sC,GAAatoC,EAAKkjC,GAAmBrsC,EAAI2nD,EAAS9mD,OAAO0C,MAAM,EAAGmkD,GAAUj0C,OAAO5S,GAAS6mD,GAC/E,CAAC95C,OAAQ,SAAUF,QAAQ,IACxC1N,EAAGilC,eAAe5iC,EACpB,KAAO,CACL,IAE8BjB,EAF1B8mD,EAAWT,EACX/kD,EAAQklD,GAAa5nD,EAAIqC,EAAKskD,EAASE,MACvCziD,EAAS8jD,EAAS9jD,OAClBwW,GAAIlY,EAAM0B,OAAQA,GAAU,GAC9BhD,EAAOsB,EAAMtB,KACbgD,EAAS6W,GAAOitC,EAASp4C,OAAQpN,EAAM0B,UAEvChD,EAAOsB,EAAM0B,OACbA,EAAS4W,GAAOktC,EAASn4C,KAAMrN,EAAMtB,OAEvC,IAAI+mD,EAAWR,EAAS9mD,OAAO0C,MAAM,GACrC4kD,EAAST,GA2Df,SAAsB1nD,EAAI0C,GACxB,IAAI0B,EAAS1B,EAAM0B,OACfhD,EAAOsB,EAAMtB,KACbgnD,EAAalvC,GAAQlZ,EAAGmJ,IAAK/E,EAAO5C,MACxC,GAAyB,GAArBoZ,GAAIxW,EAAQhD,IAAcgD,EAAOmM,QAAUnP,EAAKmP,OAAU,OAAO7N,EACrE,IAAI4N,EAAQ2C,GAASm1C,GACrB,IAAK93C,EAAS,OAAO5N,EACrB,IAAI8E,EAAQ6I,GAAcC,EAAOlM,EAAO3C,GAAI2C,EAAOmM,QAAS0X,EAAO3X,EAAM9I,GACzE,GAAIygB,EAAKnY,MAAQ1L,EAAO3C,IAAMwmB,EAAKlY,IAAM3L,EAAO3C,GAAM,OAAOiB,EAC7D,IAKI+2B,EALA4uB,EAAW7gD,GAAUygB,EAAKnY,MAAQ1L,EAAO3C,KAAsB,GAAdwmB,EAAKjX,OAAc,EAAI,GAC5E,GAAgB,GAAZq3C,GAAiBA,GAAY/3C,EAAMtP,OAAU,OAAO0B,EAKxD,GAAItB,EAAKI,MAAQ4C,EAAO5C,KACtBi4B,GAAYr4B,EAAKI,KAAO4C,EAAO5C,OAA6B,OAApBxB,EAAGmJ,IAAI8H,UAAqB,GAAK,GAAK,MACzE,CACL,IAAIq3C,EAAYj4C,GAAcC,EAAOlP,EAAKK,GAAIL,EAAKmP,QAC/CvM,EAAMskD,EAAY9gD,IAAUpG,EAAKK,GAAK2C,EAAO3C,KAAqB,GAAdwmB,EAAKjX,OAAc,EAAI,GAE3EyoB,EADA6uB,GAAaD,EAAW,GAAKC,GAAaD,EAC/BrkD,EAAM,EAENA,EAAM,CACvB,CAEA,IAAIukD,EAAUj4C,EAAM+3C,GAAY5uB,GAAY,EAAI,IAC5C3pB,EAAO2pB,IAA8B,GAAjB8uB,EAAQv3C,OAC5BvP,EAAKqO,EAAOy4C,EAAQz4C,KAAOy4C,EAAQx4C,GAAIQ,EAAST,EAAO,QAAU,SACrE,OAAO1L,EAAO3C,IAAMA,GAAM2C,EAAOmM,QAAUA,EAAS7N,EAAQ,IAAIypC,GAAM,IAAIxsC,GAAIyE,EAAO5C,KAAMC,EAAI8O,GAASnP,EAC1G,CAzF2BonD,CAAaxoD,EAAI,IAAImsC,GAAM/wB,GAAQjS,EAAK/E,GAAShD,IACtEqwC,GAAatoC,EAAKkjC,GAAmBrsC,EAAImoD,EAAUT,GAAW/5C,EAChE,CACF,CAEA,IAAI86C,EAAa/9C,EAAQC,QAAQwL,wBAK7BuyC,EAAU,EAEd,SAAS9gB,EAAOlgC,GACd,IAAIihD,IAAaD,EACbpnD,EAAMs1B,GAAa52B,EAAI0H,GAAG,EAAuB,aAAjBi/C,EAASE,MAC7C,GAAKvlD,EACL,GAAyB,GAArBsZ,GAAItZ,EAAKumD,GAAe,CAC1B7nD,EAAGuU,MAAM0nB,MAAQjzB,EAAU4B,EAAK5K,IAChC8nD,EAASxmD,GACT,IAAIslC,EAAUxJ,GAAa1yB,EAASvB,IAChC7H,EAAIE,MAAQolC,EAAQ72B,IAAMzO,EAAIE,KAAOolC,EAAQ92B,OAC7C3C,WAAWxL,GAAU3B,GAAI,WAAiB0oD,GAAWC,GAAY/gB,EAAOlgC,EAAK,IAAI,IACvF,KAAO,CACL,IAAIgtB,EAAUhtB,EAAEuvB,QAAUwxB,EAAWl4B,KAAO,GAAK7oB,EAAEuvB,QAAUwxB,EAAWn4B,OAAS,GAAK,EAClFoE,GAAWvnB,WAAWxL,GAAU3B,GAAI,WAClC0oD,GAAWC,IACfj+C,EAAQikB,SAASyE,WAAasB,EAC9BkT,EAAOlgC,GACT,IAAI,GACN,CACF,CAEA,SAASmnC,EAAKnnC,GACZ1H,EAAGM,MAAMkmD,eAAgB,EACzBkC,EAAU7/B,IAINnhB,IACFkN,GAAiBlN,GACjBgD,EAAQ2d,MAAM4T,SAEhBtoB,GAAIjJ,EAAQC,QAAQvB,cAAe,YAAaw/C,GAChDj1C,GAAIjJ,EAAQC,QAAQvB,cAAe,UAAWo8C,GAC9Cr8C,EAAI8mC,QAAQZ,cAAgB,IAC9B,CAEA,IAAIuZ,EAAOjnD,GAAU3B,GAAI,SAAU0H,GACf,IAAdA,EAAEmhD,SAAkBzzC,GAAS1N,GAC1BkgC,EAAOlgC,GADyBmnC,EAAKnnC,EAE9C,IACI89C,EAAK7jD,GAAU3B,EAAI6uC,GACvB7uC,EAAGM,MAAMkmD,cAAgBhB,EACzBpyC,GAAG1I,EAAQC,QAAQvB,cAAe,YAAaw/C,GAC/Cx1C,GAAG1I,EAAQC,QAAQvB,cAAe,UAAWo8C,EAC/C,CA/LMsD,CAAiB9oD,EAAIoxC,EAAO/uC,EAAKskD,EACvC,CA1DeoC,CAAe/oD,EAAIqC,EAAK+jD,EAAQ1+C,GAClCwN,GAASxN,IAAMgD,EAAQikB,UAAY/Z,GAAiBlN,GAC1C,GAAV4N,GACLjT,GAAOmvC,GAAgBxxC,EAAGmJ,IAAK9G,GACnC8K,YAAW,WAAc,OAAOzC,EAAQ2d,MAAM4T,OAAS,GAAG,KACvC,GAAV3mB,IACLvO,EAAqB/G,EAAG0K,QAAQ2d,MAAM2gC,cAActhD,GACjDy0B,GAAen8B,IAlBW,CAoBrC,CAgGA,SAAS4nD,GAAa5nD,EAAIqC,EAAKwkD,GAC7B,GAAY,QAARA,EAAkB,OAAO,IAAI1a,GAAM9pC,EAAKA,GAC5C,GAAY,QAARwkD,EAAkB,OAAO7mD,EAAGipD,WAAW5mD,GAC3C,GAAY,QAARwkD,EAAkB,OAAO,IAAI1a,GAAMxsC,GAAI0C,EAAIb,KAAM,GAAI4Z,GAAQpb,EAAGmJ,IAAKxJ,GAAI0C,EAAIb,KAAO,EAAG,KAC3F,IAAI8U,EAASuwC,EAAK7mD,EAAIqC,GACtB,OAAO,IAAI8pC,GAAM71B,EAAOxG,KAAMwG,EAAOvG,GACvC,CAgLA,SAASm5C,GAAYlpD,EAAI0H,EAAGpF,EAAM6mD,GAChC,IAAIC,EAAIC,EACR,GAAI3hD,EAAE4hD,QACJF,EAAK1hD,EAAE4hD,QAAQ,GAAGtyB,QAClBqyB,EAAK3hD,EAAE4hD,QAAQ,GAAGryB,aAElB,IAAMmyB,EAAK1hD,EAAEsvB,QAASqyB,EAAK3hD,EAAEuvB,OAAS,CACtC,MAAMC,GAAO,OAAO,CAAM,CAE5B,GAAIkyB,GAAMl7C,KAAKiC,MAAMnQ,EAAG0K,QAAQ4iB,QAAQnX,wBAAwBhT,OAAU,OAAO,EAC7EgmD,GAAWv0C,GAAiBlN,GAEhC,IAAIgD,EAAU1K,EAAG0K,QACb6+C,EAAU7+C,EAAQmyB,QAAQ1mB,wBAE9B,GAAIkzC,EAAKE,EAAQj5B,SAAW7b,GAAWzU,EAAIsC,GAAS,OAAO6R,GAAmBzM,GAC9E2hD,GAAME,EAAQh5B,IAAM7lB,EAAQ+oB,WAE5B,IAAK,IAAI1yB,EAAI,EAAGA,EAAIf,EAAG0K,QAAQqhB,YAAY/qB,SAAUD,EAAG,CACtD,IAAIyoD,EAAI9+C,EAAQ4iB,QAAQ1lB,WAAW7G,GACnC,GAAIyoD,GAAKA,EAAErzC,wBAAwBhT,OAASimD,EAI1C,OADAt1C,GAAO9T,EAAIsC,EAAMtC,EAFNma,GAAana,EAAGmJ,IAAKkgD,GACnBrpD,EAAG0K,QAAQqhB,YAAYhrB,GACFuG,UAAWI,GACtCyM,GAAmBzM,EAE9B,CACF,CAEA,SAASy+C,GAAcnmD,EAAI0H,GACzB,OAAOwhD,GAAYlpD,EAAI0H,EAAG,eAAe,EAC3C,CAOA,SAASshD,GAAchpD,EAAI0H,GACrB8lB,GAAcxtB,EAAG0K,QAAShD,IAKhC,SAA6B1H,EAAI0H,GAC/B,QAAK+M,GAAWzU,EAAI,sBACbkpD,GAAYlpD,EAAI0H,EAAG,qBAAqB,EACjD,CARsC+hD,CAAoBzpD,EAAI0H,IACxDsM,GAAehU,EAAI0H,EAAG,gBACrBX,GAAqB/G,EAAG0K,QAAQ2d,MAAM2gC,cAActhD,EAC3D,CAOA,SAASgiD,GAAa1pD,GACpBA,EAAG0K,QAAQC,QAAQrD,UAAYtH,EAAG0K,QAAQC,QAAQrD,UAAUwK,QAAQ,eAAgB,IAClF9R,EAAG4X,QAAQ+xC,MAAM73C,QAAQ,aAAc,UACzC2gB,GAAYzyB,EACd,CAzYAgmD,GAAU36C,UAAUi7C,QAAU,SAAUx5C,EAAMzK,EAAKiT,GACjD,OAAO1I,KAAKE,KATU,IASiBA,GACf,GAAtB8N,GAAIvY,EAAKuK,KAAKvK,MAAaiT,GAAU1I,KAAK0I,MAC9C,EAwYA,IAAInV,GAAO,CAACqN,SAAU,WAAW,MAAO,iBAAiB,GAErDlO,GAAW,CAAC,EACZsqD,GAAiB,CAAC,EAkJtB,SAASC,GAAgB7pD,EAAIyM,EAAOvM,GAElC,IAAKuM,KADOvM,GAAOA,GAAOC,IACJ,CACpB,IAAI2pD,EAAQ9pD,EAAG0K,QAAQq/C,cACnBC,EAASv9C,EAAQ2G,GAAKO,GAC1Bq2C,EAAOhqD,EAAG0K,QAAQikB,SAAU,YAAam7B,EAAMnlD,OAC/CqlD,EAAOhqD,EAAG0K,QAAQikB,SAAU,YAAam7B,EAAMG,OAC/CD,EAAOhqD,EAAG0K,QAAQikB,SAAU,WAAYm7B,EAAMI,MAC9CF,EAAOhqD,EAAG0K,QAAQikB,SAAU,YAAam7B,EAAMK,OAC/CH,EAAOhqD,EAAG0K,QAAQikB,SAAU,OAAQm7B,EAAMM,KAC5C,CACF,CAEA,SAASC,GAAgBrqD,GACnBA,EAAG4X,QAAQoY,cACbzmB,EAASvJ,EAAG0K,QAAQC,QAAS,mBAC7B3K,EAAG0K,QAAQgjB,MAAMrlB,MAAMg4B,SAAW,GAClCrgC,EAAG0K,QAAQivB,WAAa,OAExBxyB,EAAQnH,EAAG0K,QAAQC,QAAS,mBAC5Bua,GAAYllB,IAEdy2B,GAAoBz2B,GACpBq3B,GAAUr3B,GACVyyB,GAAYzyB,GACZmN,YAAW,WAAc,OAAOm0B,GAAiBthC,EAAK,GAAG,IAC3D,CAKA,SAASX,GAAWoxB,EAAO7Y,GACzB,IAAIm/B,EAASnqC,KAEb,KAAMA,gBAAgBvN,IAAe,OAAO,IAAIA,GAAWoxB,EAAO7Y,GAElEhL,KAAKgL,QAAUA,EAAUA,EAAUnM,EAAQmM,GAAW,CAAC,EAEvDnM,EAAQnM,GAAUsY,GAAS,GAE3B,IAAIzO,EAAMyO,EAAQnL,MACA,iBAAPtD,EAAmBA,EAAM,IAAIsvC,GAAItvC,EAAKyO,EAAQL,KAAM,KAAMK,EAAQ/V,cAAe+V,EAAQ3G,WAC3F2G,EAAQL,OAAQpO,EAAI8jC,WAAar1B,EAAQL,MAClD3K,KAAKzD,IAAMA,EAEX,IAAIkf,EAAQ,IAAIhpB,GAAWirD,YAAY1yC,EAAQ2yC,YAAY39C,MACvDlC,EAAUkC,KAAKlC,QAAU,IAAIm/B,GAAQpZ,EAAOtnB,EAAKkf,EAAOzQ,GA2C5D,IAAK,IAAIi/B,KA1CTnsC,EAAQC,QAAQtL,WAAauN,KAC7B88C,GAAa98C,MACTgL,EAAQoY,eACRpjB,KAAKlC,QAAQC,QAAQrD,WAAa,oBACtC46B,GAAet1B,MAEfA,KAAKtM,MAAQ,CACXykD,QAAS,GACTjnC,SAAU,GACVN,QAAS,EACT5R,WAAW,EACXwwB,mBAAmB,EACnBb,SAAS,EACTmY,eAAe,EACf8W,eAAgB,EAAGC,aAAc,EACjCjE,eAAe,EACfnqB,cAAc,EACd4J,UAAW,IAAIt5B,EACfk4C,OAAQ,KACRr9B,aAAc,MAGZ5P,EAAQ8yC,YAAcnkD,GAAUmE,EAAQ2d,MAAM4T,QAI9C12B,GAAMC,EAAa,IAAM2H,YAAW,WAAc,OAAO4pC,EAAOrsC,QAAQ2d,MAAMmU,OAAM,EAAO,GAAG,IAmCpG,SAA+Bx8B,GAC7B,IAAImlB,EAAInlB,EAAG0K,QACX0I,GAAG+R,EAAEwJ,SAAU,YAAahtB,GAAU3B,EAAIimD,KAGtC7yC,GAAG+R,EAAEwJ,SAAU,WADfppB,GAAMC,EAAa,GACQ7D,GAAU3B,GAAI,SAAU0H,GACnD,IAAIsM,GAAehU,EAAI0H,GAAvB,CACA,IAAIrF,EAAMu0B,GAAa52B,EAAI0H,GAC3B,GAAKrF,IAAO8jD,GAAcnmD,EAAI0H,KAAM8lB,GAAcxtB,EAAG0K,QAAShD,GAA9D,CACAkN,GAAiBlN,GACjB,IAAIijD,EAAO3qD,EAAGipD,WAAW5mD,GACzBmvC,GAAgBxxC,EAAGmJ,IAAKwhD,EAAKvmD,OAAQumD,EAAKvpD,KAHiC,CAFvC,CAMtC,IAE6B,SAAUsG,GAAK,OAAOsM,GAAehU,EAAI0H,IAAMkN,GAAiBlN,EAAI,GAInG0L,GAAG+R,EAAEwJ,SAAU,eAAe,SAAUjnB,GAAK,OAAOshD,GAAchpD,EAAI0H,EAAI,IAC1E0L,GAAG+R,EAAEkD,MAAMi9B,WAAY,eAAe,SAAU59C,GACzCyd,EAAEwJ,SAAShmB,SAASjB,EAAEiE,SAAWq9C,GAAchpD,EAAI0H,EAC1D,IAGA,IAAIkjD,EAAeC,EAAY,CAAC/gD,IAAK,GACrC,SAASghD,IACH3lC,EAAE+kB,cACJ0gB,EAAgBz9C,YAAW,WAAc,OAAOgY,EAAE+kB,YAAc,IAAM,GAAG,MACzE2gB,EAAY1lC,EAAE+kB,aACJpgC,KAAO,IAAIoD,KAEzB,CACA,SAAS69C,EAAsBrjD,GAC7B,GAAwB,GAApBA,EAAE4hD,QAAQtoD,OAAe,OAAO,EACpC,IAAIgqD,EAAQtjD,EAAE4hD,QAAQ,GACtB,OAAO0B,EAAMC,SAAW,GAAKD,EAAME,SAAW,CAChD,CACA,SAASC,EAAQH,EAAOz2B,GACtB,GAAkB,MAAdA,EAAMrxB,KAAgB,OAAO,EACjC,IAAIqnC,EAAKhW,EAAMrxB,KAAO8nD,EAAM9nD,KAAMunC,EAAKlW,EAAMhE,IAAMy6B,EAAMz6B,IACzD,OAAOga,EAAKA,EAAKE,EAAKA,EAAK,GAC7B,CACAr3B,GAAG+R,EAAEwJ,SAAU,cAAc,SAAUjnB,GACrC,IAAKsM,GAAehU,EAAI0H,KAAOqjD,EAAsBrjD,KAAOy+C,GAAcnmD,EAAI0H,GAAI,CAChFyd,EAAEkD,MAAMm8B,eACRl3C,aAAas9C,GACb,IAAIvE,GAAO,IAAIn5C,KACfiY,EAAE+kB,YAAc,CAACvlC,MAAO0hD,EAAKa,OAAO,EACnBnkD,KAAMsjD,EAAMwE,EAAU/gD,KAAO,IAAM+gD,EAAY,MACxC,GAApBnjD,EAAE4hD,QAAQtoD,SACZmkB,EAAE+kB,YAAYhnC,KAAOwE,EAAE4hD,QAAQ,GAAG8B,MAClCjmC,EAAE+kB,YAAY3Z,IAAM7oB,EAAE4hD,QAAQ,GAAG+B,MAErC,CACF,IACAj4C,GAAG+R,EAAEwJ,SAAU,aAAa,WACtBxJ,EAAE+kB,cAAe/kB,EAAE+kB,YAAYgd,OAAQ,EAC7C,IACA9zC,GAAG+R,EAAEwJ,SAAU,YAAY,SAAUjnB,GACnC,IAAIsjD,EAAQ7lC,EAAE+kB,YACd,GAAI8gB,IAAUx9B,GAAcrI,EAAGzd,IAAoB,MAAdsjD,EAAM9nD,OACtC8nD,EAAM9D,OAAS,IAAIh6C,KAAO89C,EAAMrmD,MAAQ,IAAK,CAChD,IAAgDjC,EAA5CL,EAAMrC,EAAG40B,WAAWzP,EAAE+kB,YAAa,QAEnCxnC,GADCsoD,EAAMjoD,MAAQooD,EAAQH,EAAOA,EAAMjoD,MAC5B,IAAIopC,GAAM9pC,EAAKA,IACjB2oD,EAAMjoD,KAAKA,MAAQooD,EAAQH,EAAOA,EAAMjoD,KAAKA,MAC3C/C,EAAGipD,WAAW5mD,GAEd,IAAI8pC,GAAMxsC,GAAI0C,EAAIb,KAAM,GAAI4Z,GAAQpb,EAAGmJ,IAAKxJ,GAAI0C,EAAIb,KAAO,EAAG,KAC1ExB,EAAGyxC,aAAa/uC,EAAM0B,OAAQ1B,EAAMtB,MACpCpB,EAAGi8B,QACHrnB,GAAiBlN,EACnB,CACAojD,GACF,IACA13C,GAAG+R,EAAEwJ,SAAU,cAAem8B,GAI9B13C,GAAG+R,EAAEwJ,SAAU,UAAU,WACnBxJ,EAAEwJ,SAASG,eACb+P,GAAgB7+B,EAAImlB,EAAEwJ,SAASyE,WAC/BgM,GAAcp/B,EAAImlB,EAAEwJ,SAASqE,YAAY,GACzClf,GAAO9T,EAAI,SAAUA,GAEzB,IAGAoT,GAAG+R,EAAEwJ,SAAU,cAAc,SAAUjnB,GAAK,OAAOujC,GAAcjrC,EAAI0H,EAAI,IACzE0L,GAAG+R,EAAEwJ,SAAU,kBAAkB,SAAUjnB,GAAK,OAAOujC,GAAcjrC,EAAI0H,EAAI,IAG7E0L,GAAG+R,EAAExa,QAAS,UAAU,WAAc,OAAOwa,EAAExa,QAAQyoB,UAAYjO,EAAExa,QAAQqoB,WAAa,CAAG,IAE7F7N,EAAE4kC,cAAgB,CAChBE,MAAO,SAAUviD,GAASsM,GAAehU,EAAI0H,IAAMuN,GAAOvN,EAAK,EAC/DwiD,KAAM,SAAUxiD,GAASsM,GAAehU,EAAI0H,KAt5ChD,SAAoB1H,EAAI0H,GACtB,IAAIrF,EAAMu0B,GAAa52B,EAAI0H,GAC3B,GAAKrF,EAAL,CACA,IAAIipD,EAAO7lD,SAASiiB,yBACpBmR,GAAoB74B,EAAIqC,EAAKipD,GACxBtrD,EAAG0K,QAAQqzC,aACd/9C,EAAG0K,QAAQqzC,WAAa71C,EAAI,MAAO,KAAM,6CACzClI,EAAG0K,QAAQmjB,UAAU/C,aAAa9qB,EAAG0K,QAAQqzC,WAAY/9C,EAAG0K,QAAQgxB,YAEtE3zB,EAAqB/H,EAAG0K,QAAQqzC,WAAYuN,EAPzB,CAQrB,CA44CsDC,CAAWvrD,EAAI0H,GAAIuN,GAAOvN,GAAK,EACjF/C,MAAO,SAAU+C,GAAK,OA96C1B,SAAqB1H,EAAI0H,GACvB,GAAInC,KAAQvF,EAAGM,MAAM+7B,eAAiB,IAAInvB,KAAOwvC,GAAW,KAAQznC,GAAOvN,QAC3E,IAAIsM,GAAehU,EAAI0H,KAAM8lB,GAAcxtB,EAAG0K,QAAShD,KAEvDA,EAAEo1C,aAAa0O,QAAQ,OAAQxrD,EAAG4W,gBAClClP,EAAEo1C,aAAa2O,cAAgB,WAI3B/jD,EAAEo1C,aAAa4O,eAAiB1lD,GAAQ,CAC1C,IAAI2lD,EAAMzjD,EAAI,MAAO,KAAM,KAAM,qCACjCyjD,EAAIC,IAAM,6EACN7lD,IACF4lD,EAAI7+B,MAAQ6+B,EAAI5xC,OAAS,EACzB/Z,EAAG0K,QAAQC,QAAQ1C,YAAY0jD,GAE/BA,EAAIE,KAAOF,EAAI79B,WAEjBpmB,EAAEo1C,aAAa4O,aAAaC,EAAK,EAAG,GAChC5lD,GAAU4lD,EAAI7iD,WAAWjB,YAAY8jD,EAC3C,CACF,CAy5CiCG,CAAY9rD,EAAI0H,EAAI,EACjD0iD,KAAMzoD,GAAU3B,EAAI28C,IACpBwN,MAAO,SAAUziD,GAASsM,GAAehU,EAAI0H,IAAMk1C,GAAgB58C,EAAM,GAG3E,IAAI+rD,EAAM5mC,EAAEkD,MAAMi9B,WAClBlyC,GAAG24C,EAAK,SAAS,SAAUrkD,GAAK,OAAOg+C,GAAQp6C,KAAKtL,EAAI0H,EAAI,IAC5D0L,GAAG24C,EAAK,UAAWpqD,GAAU3B,EAAIqlD,KACjCjyC,GAAG24C,EAAK,WAAYpqD,GAAU3B,EAAI2lD,KAClCvyC,GAAG24C,EAAK,SAAS,SAAUrkD,GAAK,OAAOw0B,GAAQl8B,EAAI0H,EAAI,IACvD0L,GAAG24C,EAAK,QAAQ,SAAUrkD,GAAK,OAAOq0B,GAAO/7B,EAAI0H,EAAI,GACvD,CA7IEskD,CAAsBp/C,MACtByxC,KAEA/b,GAAe11B,MACfA,KAAK2H,MAAMib,aAAc,EACzBkf,GAAU9hC,KAAMzD,GAEXyO,EAAQ8yC,YAAcnkD,GAAWqG,KAAKkvB,WACvC3uB,YAAW,WACP4pC,EAAOjb,aAAeib,EAAOz2C,MAAMi7B,SAAWW,GAAQ6a,EAC5D,GAAG,IAEDhb,GAAOnvB,MAEKg9C,GAAsBA,GAAe99C,eAAe+qC,IAChE+S,GAAe/S,GAAKjqC,KAAMgL,EAAQi/B,GAAM12C,IAC5C+mC,GAA2Bt6B,MACvBgL,EAAQq0C,YAAcr0C,EAAQq0C,WAAWr/C,MAC7C,IAAK,IAAI7L,EAAI,EAAGA,EAAImrD,GAAUlrD,SAAUD,EAAKmrD,GAAUnrD,GAAG6L,MAC1Dq2B,GAAar2B,MAGTjH,GAAUiS,EAAQoY,cACiC,sBAAnD9B,iBAAiBxjB,EAAQmyB,SAASsvB,gBAClCzhD,EAAQmyB,QAAQx0B,MAAM8jD,cAAgB,OAC5C,CAGA9sD,GAAWC,SAAWA,GAEtBD,GAAWuqD,eAAiBA,GAiH5B,IAAIsC,GAAY,GAQhB,SAASlqD,GAAWhC,EAAIqM,EAAG+/C,EAAKC,GAC9B,IAAkB/rD,EAAd6I,EAAMnJ,EAAGmJ,IACF,MAAPijD,IAAeA,EAAM,OACd,SAAPA,IAGGjjD,EAAIoO,KAAK+0C,OACPhsD,EAAQie,GAAiBve,EAAIqM,GAAG/L,MADf8rD,EAAM,QAIhC,IAAIngD,EAAUjM,EAAG4X,QAAQ3L,QACrBzK,EAAO0X,GAAQ/P,EAAKkD,GAAIkgD,EAAWxgD,EAAYvK,EAAK0R,KAAM,KAAMjH,GAChEzK,EAAKkd,aAAcld,EAAKkd,WAAa,MACzC,IAAiDtC,EAA7CowC,EAAiBhrD,EAAK0R,KAAKtM,MAAM,QAAQ,GAC7C,GAAKylD,GAAe,KAAKxpD,KAAKrB,EAAK0R,OAG5B,GAAW,SAAPk5C,KACThwC,EAAcjT,EAAIoO,KAAK+0C,OAAOhsD,EAAOkB,EAAK0R,KAAK3P,MAAMipD,EAAexrD,QAASQ,EAAK0R,QAC/DtS,GAAQwb,EAAc,KAAK,CAC5C,IAAKiwC,EAAc,OACnBD,EAAM,MACR,OAPAhwC,EAAc,EACdgwC,EAAM,MAQG,QAAPA,EACmBhwC,EAAjB/P,EAAIlD,EAAIgQ,MAAuBpN,EAAYmN,GAAQ/P,EAAKkD,EAAE,GAAG6G,KAAM,KAAMjH,GACxD,EACL,OAAPmgD,EACThwC,EAAcmwC,EAAWvsD,EAAG4X,QAAQ60C,WACpB,YAAPL,EACThwC,EAAcmwC,EAAWvsD,EAAG4X,QAAQ60C,WACb,iBAAPL,IAChBhwC,EAAcmwC,EAAWH,GAE3BhwC,EAAclO,KAAKiN,IAAI,EAAGiB,GAE1B,IAAIswC,EAAe,GAAIrqD,EAAM,EAC7B,GAAIrC,EAAG4X,QAAQ+0C,eACX,IAAK,IAAI5rD,EAAImN,KAAKiC,MAAMiM,EAAcnQ,GAAUlL,IAAKA,EAAIsB,GAAO4J,EAASygD,GAAgB,KAG7F,GAFIrqD,EAAM+Z,IAAeswC,GAAgBr+C,EAAS+N,EAAc/Z,IAE5DqqD,GAAgBF,EAGlB,OAFAjrD,GAAa4H,EAAKujD,EAAc/sD,GAAI0M,EAAG,GAAI1M,GAAI0M,EAAGmgD,EAAexrD,QAAS,UAC1EQ,EAAKkd,WAAa,MACX,EAIP,IAAK,IAAIpN,EAAM,EAAGA,EAAMnI,EAAI9E,IAAIxD,OAAOG,OAAQsQ,IAAO,CACpD,IAAI5O,EAAQyG,EAAI9E,IAAIxD,OAAOyQ,GAC3B,GAAI5O,EAAMtB,KAAKI,MAAQ6K,GAAK3J,EAAMtB,KAAKK,GAAK+qD,EAAexrD,OAAQ,CACjE,IAAI4rD,EAAQjtD,GAAI0M,EAAGmgD,EAAexrD,QAClC4wC,GAAoBzoC,EAAKmI,EAAK,IAAI66B,GAAMygB,EAAOA,IAC/C,KACF,CACF,CAEJ,CAhEAvtD,GAAWwtD,eAAiB,SAAU3hD,GAAK,OAAOghD,GAAU/nD,KAAK+G,EAAI,EAqErE,IAAI4hD,GAAa,KAEjB,SAASC,GAAcC,GACrBF,GAAaE,CACf,CAEA,SAASC,GAAejtD,EAAIktD,EAAUC,EAAS9oD,EAAKuJ,GAClD,IAAIzE,EAAMnJ,EAAGmJ,IACbnJ,EAAG0K,QAAQgyB,OAAQ,EACdr4B,IAAOA,EAAM8E,EAAI9E,KAEtB,IAAI+oD,GAAU,IAAIlgD,KAAO,IACrBmgD,EAAkB,SAAVz/C,GAAqB5N,EAAGM,MAAMkqD,cAAgB4C,EACtDE,EAAYj3C,GAAe62C,GAAWK,EAAa,KAEvD,GAAIF,GAAShpD,EAAIxD,OAAOG,OAAS,EAC/B,GAAI8rD,IAAcA,GAAW55C,KAAK4lC,KAAK,OAASoU,GAC9C,GAAI7oD,EAAIxD,OAAOG,OAAS8rD,GAAW55C,KAAKlS,QAAU,EAAG,CACnDusD,EAAa,GACb,IAAK,IAAIxsD,EAAI,EAAGA,EAAI+rD,GAAW55C,KAAKlS,OAAQD,IACxCwsD,EAAWppD,KAAKgF,EAAIosC,WAAWuX,GAAW55C,KAAKnS,IACrD,OACSusD,EAAUtsD,QAAUqD,EAAIxD,OAAOG,QAAUhB,EAAG4X,QAAQ41C,yBAC7DD,EAAa/+C,GAAI8+C,GAAW,SAAU/2C,GAAK,MAAO,CAACA,EAAI,KAM3D,IAFA,IAAIisB,EAAcxiC,EAAGuU,MAAMiuB,YAElBlxB,EAAMjN,EAAIxD,OAAOG,OAAS,EAAGsQ,GAAO,EAAGA,IAAO,CACrD,IAAI5O,EAAQ2B,EAAIxD,OAAOyQ,GACnBxB,EAAOpN,EAAMoN,OAAQC,EAAKrN,EAAMqN,KAChCrN,EAAMzB,UACJksD,GAAWA,EAAU,EACrBr9C,EAAOnQ,GAAImQ,EAAKtO,KAAMsO,EAAKrO,GAAK0rD,GAC3BntD,EAAGM,MAAMsL,YAAcyhD,EAC5Bt9C,EAAKpQ,GAAIoQ,EAAGvO,KAAM0M,KAAKC,IAAI+K,GAAQ/P,EAAK4G,EAAGvO,MAAM0R,KAAKlS,OAAQ+O,EAAGtO,GAAK6M,GAAIg/C,GAAWtsD,SAChFqsD,GAASP,IAAcA,GAAWW,UAAYX,GAAW55C,KAAK4lC,KAAK,OAASwU,EAAUxU,KAAK,QAChGhpC,EAAOC,EAAKpQ,GAAImQ,EAAKtO,KAAM,KAEjC,IAAIksD,EAAc,CAAC59C,KAAMA,EAAMC,GAAIA,EAAImD,KAAMq6C,EAAaA,EAAWj8C,EAAMi8C,EAAWvsD,QAAUssD,EAC7E1/C,OAAQA,IAAWy/C,EAAQ,QAAUrtD,EAAGM,MAAMmqD,YAAc2C,EAAS,MAAQ,WAChG5Z,GAAWxzC,EAAGmJ,IAAKukD,GACnBhkC,GAAY1pB,EAAI,YAAaA,EAAI0tD,EACnC,CACIR,IAAaG,GACb3pD,GAAgB1D,EAAIktD,GAExB5uB,GAAoBt+B,GAChBA,EAAGuU,MAAMiuB,YAAc,IAAKxiC,EAAGuU,MAAMiuB,YAAcA,GACvDxiC,EAAGuU,MAAMkuB,QAAS,EAClBziC,EAAGM,MAAMkqD,cAAgBxqD,EAAGM,MAAMmqD,aAAe,CACnD,CAEA,SAASkD,GAAYjmD,EAAG1H,GACtB,IAAI4tD,EAASlmD,EAAEmmD,eAAiBnmD,EAAEmmD,cAAchQ,QAAQ,QACxD,GAAI+P,EAIF,OAHAlmD,EAAEuM,iBACGjU,EAAG+8C,cAAiB/8C,EAAG4X,QAAQk2C,eAAgB9tD,EAAG87B,YACnDgK,GAAQ9lC,GAAI,WAAc,OAAOitD,GAAejtD,EAAI4tD,EAAQ,EAAG,KAAM,QAAU,KAC5E,CAEX,CAEA,SAASlqD,GAAgB1D,EAAIktD,GAE3B,GAAKltD,EAAG4X,QAAQm2C,eAAkB/tD,EAAG4X,QAAQo2C,YAG7C,IAFA,IAAI3pD,EAAMrE,EAAGmJ,IAAI9E,IAERtD,EAAIsD,EAAIxD,OAAOG,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC/C,IAAI2B,EAAQ2B,EAAIxD,OAAOE,GACvB,KAAI2B,EAAMtB,KAAKK,GAAK,KAAQV,GAAKsD,EAAIxD,OAAOE,EAAI,GAAGK,KAAKI,MAAQkB,EAAMtB,KAAKI,MAA3E,CACA,IAAI+V,EAAOvX,EAAG8D,UAAUpB,EAAMtB,MAC1B+d,GAAW,EACf,GAAI5H,EAAKw2C,eACP,IAAK,IAAIh8C,EAAI,EAAGA,EAAIwF,EAAKw2C,cAAc/sD,OAAQ+Q,IAC3C,GAAIm7C,EAAS7rD,QAAQkW,EAAKw2C,cAAc7rD,OAAO6P,KAAO,EAAG,CACzDoN,EAAWnd,GAAWhC,EAAI0C,EAAMtB,KAAKI,KAAM,SAC3C,KACF,OACO+V,EAAK02C,eACV12C,EAAK02C,cAAcprD,KAAKqW,GAAQlZ,EAAGmJ,IAAKzG,EAAMtB,KAAKI,MAAM0R,KAAK3P,MAAM,EAAGb,EAAMtB,KAAKK,OAClF0d,EAAWnd,GAAWhC,EAAI0C,EAAMtB,KAAKI,KAAM,UAE7C2d,GAAYuK,GAAY1pB,EAAI,gBAAiBA,EAAI0C,EAAMtB,KAAKI,KAb6B,CAc/F,CACF,CAEA,SAAS0sD,GAAeluD,GAEtB,IADA,IAAIkT,EAAO,GAAIrS,EAAS,GACfE,EAAI,EAAGA,EAAIf,EAAGmJ,IAAI9E,IAAIxD,OAAOG,OAAQD,IAAK,CACjD,IAAIS,EAAOxB,EAAGmJ,IAAI9E,IAAIxD,OAAOE,GAAGK,KAAKI,KACjC2sD,EAAY,CAAC/pD,OAAQzE,GAAI6B,EAAM,GAAIJ,KAAMzB,GAAI6B,EAAO,EAAG,IAC3DX,EAAOsD,KAAKgqD,GACZj7C,EAAK/O,KAAKnE,EAAG4C,SAASurD,EAAU/pD,OAAQ+pD,EAAU/sD,MACpD,CACA,MAAO,CAAC8R,KAAMA,EAAMrS,OAAQA,EAC9B,CAEA,SAASutD,GAAoBC,EAAOC,EAAYC,EAAaC,GAC3DH,EAAM3lD,aAAa,cAAe6lD,EAAc,KAAO,OACvDF,EAAM3lD,aAAa,iBAAkB8lD,EAAiB,KAAO,OAC7DH,EAAM3lD,aAAa,eAAgB4lD,EACrC,CAEA,SAASG,KACP,IAAI53C,EAAK3O,EAAI,WAAY,KAAM,KAAM,yGACjCyN,EAAMzN,EAAI,MAAO,CAAC2O,GAAK,KAAM,kEASjC,OAJIlR,EAAUkR,EAAGxO,MAAMykB,MAAQ,SACxBjW,EAAGnO,aAAa,OAAQ,OAE3BtC,IAAOyQ,EAAGxO,MAAMqmD,OAAS,mBACtB/4C,CACT,CAkcA,SAASg5C,GAASxlD,EAAK9G,EAAK2B,EAAK6iD,EAAMtG,GACrC,IAAI7N,EAASrwC,EACTusD,EAAU5qD,EACV8gB,EAAU5L,GAAQ/P,EAAK9G,EAAIb,MAC3BqtD,EAAUtO,GAA6B,OAAjBp3C,EAAI8H,WAAsBjN,EAAMA,EAO1D,SAAS8qD,EAASC,GAChB,IAAIpsD,EANA4T,EAOJ,GAAY,aAARswC,EAAqB,CACvB,IAAIplD,EAAKqjB,EAAQ5R,KAAKxD,WAAWrN,EAAIZ,IAAMuC,EAAM,EAAI,GAAK,IAC1D,GAAIuqB,MAAM9sB,GACRkB,EAAO,SACF,CACL,IAAIqsD,EAAShrD,EAAM,EAAIvC,GAAM,OAAUA,EAAK,MAASA,GAAM,OAAUA,EAAK,MAC1EkB,EAAO,IAAIhD,GAAI0C,EAAIb,KAAM0M,KAAKiN,IAAI,EAAGjN,KAAKC,IAAI2W,EAAQ5R,KAAKlS,OAAQqB,EAAIZ,GAAKuC,GAAOgrD,EAAS,EAAI,MAAOhrD,EACzG,CACF,MACErB,EADS49C,EAxxDf,SAAsBvgD,EAAIwB,EAAMmD,EAAOX,GACrC,IAAIirD,EAAOh8C,GAASzR,EAAMxB,EAAGmJ,IAAI8H,WACjC,IAAKg+C,EAAQ,OAAO5O,GAAc7+C,EAAMmD,EAAOX,GAC3CW,EAAMlD,IAAMD,EAAK0R,KAAKlS,QACxB2D,EAAMlD,GAAKD,EAAK0R,KAAKlS,OACrB2D,EAAM4L,OAAS,UACN5L,EAAMlD,IAAM,IACrBkD,EAAMlD,GAAK,EACXkD,EAAM4L,OAAS,SAEjB,IAAI8jB,EAAUhkB,GAAc4+C,EAAMtqD,EAAMlD,GAAIkD,EAAM4L,QAAS0X,EAAOgnC,EAAK56B,GACvE,GAAwB,OAApBr0B,EAAGmJ,IAAI8H,WAAsBgX,EAAKjX,MAAQ,GAAK,IAAMhN,EAAM,EAAIikB,EAAKlY,GAAKpL,EAAMlD,GAAKwmB,EAAKnY,KAAOnL,EAAMlD,IAGxG,OAAO4+C,GAAc7+C,EAAMmD,EAAOX,GAGpC,IACIw8C,EADA0O,EAAK,SAAU7sD,EAAK2B,GAAO,OAAOo8C,GAAkB5+C,EAAMa,aAAe1C,GAAM0C,EAAIZ,GAAKY,EAAK2B,EAAM,EAEnGmrD,EAAuB,SAAU1tD,GACnC,OAAKzB,EAAG4X,QAAQoY,cAChBwwB,EAAOA,GAAQpxB,GAAsBpvB,EAAIwB,GAClC0zB,GAAsBl1B,EAAIwB,EAAMg/C,EAAM/+C,IAFN,CAACwzB,MAAO,EAAGnrB,IAAKtI,EAAK0R,KAAKlS,OAGnE,EACIg0B,EAAoBm6B,EAAqC,UAAhBxqD,EAAM4L,OAAqB2+C,EAAGvqD,GAAQ,GAAKA,EAAMlD,IAE9F,GAAwB,OAApBzB,EAAGmJ,IAAI8H,WAAoC,GAAdgX,EAAKjX,MAAY,CAChD,IAAIo+C,EAAoC,GAAdnnC,EAAKjX,OAAgBhN,EAAM,EACjDvC,EAAKytD,EAAGvqD,EAAOyqD,EAAqB,GAAK,GAC7C,GAAU,MAAN3tD,IAAgB2tD,EAAwE3tD,GAAMwmB,EAAKlY,IAAMtO,GAAMuzB,EAAkBlrB,IAA5FrI,GAAMwmB,EAAKnY,MAAQrO,GAAMuzB,EAAkBC,OAAuD,CAEzI,IAAI1kB,EAAS6+C,EAAqB,SAAW,QAC7C,OAAO,IAAIzvD,GAAIgF,EAAMnD,KAAMC,EAAI8O,EACjC,CACF,CAKA,IAAI8+C,EAAqB,SAAUh7B,EAASrwB,EAAKgxB,GAK/C,IAJA,IAAIs6B,EAAS,SAAU7tD,EAAI2tD,GAAsB,OAAOA,EACpD,IAAIzvD,GAAIgF,EAAMnD,KAAM0tD,EAAGztD,EAAI,GAAI,UAC/B,IAAI9B,GAAIgF,EAAMnD,KAAMC,EAAI,QAAU,EAE/B4yB,GAAW,GAAKA,EAAU46B,EAAKjuD,OAAQqzB,GAAWrwB,EAAK,CAC5D,IAAIikB,EAAOgnC,EAAK56B,GACZ+6B,EAAsBprD,EAAM,IAAqB,GAAdikB,EAAKjX,OACxCvP,EAAK2tD,EAAqBp6B,EAAkBC,MAAQi6B,EAAGl6B,EAAkBlrB,KAAM,GACnF,GAAIme,EAAKnY,MAAQrO,GAAMA,EAAKwmB,EAAKlY,GAAM,OAAOu/C,EAAO7tD,EAAI2tD,GAEzD,GADA3tD,EAAK2tD,EAAqBnnC,EAAKnY,KAAOo/C,EAAGjnC,EAAKlY,IAAK,GAC/CilB,EAAkBC,OAASxzB,GAAMA,EAAKuzB,EAAkBlrB,IAAO,OAAOwlD,EAAO7tD,EAAI2tD,EACvF,CACF,EAGIG,EAAMF,EAAmBh7B,EAAUrwB,EAAKA,EAAKgxB,GACjD,GAAIu6B,EAAO,OAAOA,EAGlB,IAAIC,EAASxrD,EAAM,EAAIgxB,EAAkBlrB,IAAMolD,EAAGl6B,EAAkBC,OAAQ,GAC5E,OAAc,MAAVu6B,GAAoBxrD,EAAM,GAAKwrD,GAAUhuD,EAAK0R,KAAKlS,UACrDuuD,EAAMF,EAAmBrrD,EAAM,EAAI,EAAIirD,EAAKjuD,OAAS,EAAGgD,EAAKmrD,EAAqBK,KAK7E,KAJaD,CAKtB,CAstDaE,CAAatmD,EAAInJ,GAAI8kB,EAASziB,EAAK2B,GAEnCq8C,GAAcv7B,EAASziB,EAAK2B,GAErC,GAAY,MAARrB,EAAc,CAChB,GAAKosD,KArBHx4C,EAAIlU,EAAIb,KAAOqtD,GACX1lD,EAAIgQ,OAAS5C,GAAKpN,EAAIgQ,MAAQhQ,EAAIiQ,OAC1C/W,EAAM,IAAI1C,GAAI4W,EAAGlU,EAAIZ,GAAIY,EAAIkO,UACtBuU,EAAU5L,GAAQ/P,EAAKoN,MAqBxB,OAAO,EAFPlU,EAAMi+C,GAAUC,EAAUp3C,EAAInJ,GAAI8kB,EAASziB,EAAIb,KAAMqtD,EAG3D,MACExsD,EAAMM,EAER,OAAO,CACT,CAEA,GAAY,QAARkkD,GAA0B,aAARA,EACpBiI,SACK,GAAY,UAARjI,EACTiI,GAAS,QACJ,GAAY,QAARjI,GAA0B,SAARA,EAG3B,IAFA,IAAI6I,EAAU,KAAMvsB,EAAgB,SAAR0jB,EACxBx3C,EAASlG,EAAInJ,IAAMmJ,EAAInJ,GAAG2vD,UAAUttD,EAAK,aACpC8W,GAAQ,IACXnV,EAAM,IAAM8qD,GAAU31C,GADJA,GAAQ,EAAO,CAErC,IAAI7X,EAAMwjB,EAAQ5R,KAAKhR,OAAOG,EAAIZ,KAAO,KACrCa,EAAOU,GAAW1B,EAAK+N,GAAU,IACjC8zB,GAAgB,MAAP7hC,EAAc,KACtB6hC,GAAS,KAAKtgC,KAAKvB,GAAO,KAC3B,IAEJ,IADI6hC,GAAUhqB,GAAU7W,IAAQA,EAAO,KACnCotD,GAAWA,GAAWptD,EAAM,CAC1B0B,EAAM,IAAIA,EAAM,EAAG8qD,IAAYzsD,EAAIkO,OAAS,SAChD,KACF,CAGA,GADIjO,IAAQotD,EAAUptD,GAClB0B,EAAM,IAAM8qD,GAAU31C,GAAU,KACtC,CAEF,IAAI7C,EAASi8B,GAAWppC,EAAK9G,EAAKqwC,EAAQkc,GAAS,GAEnD,OADI/zC,GAAe63B,EAAQp8B,KAAWA,EAAOs5C,SAAU,GAChDt5C,CACT,CAKA,SAASu5C,GAAS7vD,EAAIqC,EAAK2B,EAAK6iD,GAC9B,IAAgChyB,EAS5BlpB,EATAxC,EAAMnJ,EAAGmJ,IAAK4R,EAAI1Y,EAAIa,KAC1B,GAAY,QAAR2jD,EAAgB,CAClB,IAAIiJ,EAAW5hD,KAAKC,IAAInO,EAAG0K,QAAQC,QAAQmkB,aAAc/jB,EAAI/K,GAAI+kC,aAAe57B,EAAInJ,GAAI+yB,gBAAgBjE,cACpGihC,EAAa7hD,KAAKiN,IAAI20C,EAAW,GAAK55B,GAAWl2B,EAAG0K,SAAU,GAClEmqB,GAAK7wB,EAAM,EAAI3B,EAAIiuB,OAASjuB,EAAIkuB,KAAOvsB,EAAM+rD,CAE/C,KAAmB,QAARlJ,IACThyB,EAAI7wB,EAAM,EAAI3B,EAAIiuB,OAAS,EAAIjuB,EAAIkuB,IAAM,GAG3C,MACE5kB,EAASipB,GAAW50B,EAAI+a,EAAG8Z,IACfH,SAFL,CAGP,GAAI1wB,EAAM,EAAI6wB,GAAK,EAAIA,GAAK1rB,EAAI4Q,OAAQ,CAAEpO,EAAOikD,SAAU,EAAM,KAAM,CACvE/6B,GAAW,EAAN7wB,CACP,CACA,OAAO2H,CACT,CAIA,IAAIqkD,GAAuB,SAAShwD,GAClC4M,KAAK5M,GAAKA,EACV4M,KAAKqjD,eAAiBrjD,KAAKsjD,iBAAmBtjD,KAAKujD,cAAgBvjD,KAAKwjD,gBAAkB,KAC1FxjD,KAAKyjD,QAAU,IAAI1jD,EACnBC,KAAK0jD,UAAY,KACjB1jD,KAAK2jD,aAAc,EACnB3jD,KAAK4jD,eAAiB,IACxB,EA2XA,SAASC,GAASzwD,EAAIqC,GACpB,IAAIknB,EAAO8F,GAAgBrvB,EAAIqC,EAAIb,MACnC,IAAK+nB,GAAQA,EAAKH,OAAU,OAAO,KACnC,IAAI5nB,EAAO0X,GAAQlZ,EAAGmJ,IAAK9G,EAAIb,MAC3BiX,EAAOuW,GAAgBzF,EAAM/nB,EAAMa,EAAIb,MAEvC8O,EAAQ2C,GAASzR,EAAMxB,EAAGmJ,IAAI8H,WAAYkpB,EAAO,OACjD7pB,IAEF6pB,EADc9pB,GAAcC,EAAOjO,EAAIZ,IACtB,EAAI,QAAU,QAEjC,IAAI6U,EAASoa,GAAuBjY,EAAKjK,IAAKnM,EAAIZ,GAAI04B,GAEtD,OADA7jB,EAAOiM,OAA4B,SAAnBjM,EAAOjM,SAAsBiM,EAAOxM,IAAMwM,EAAO3R,MAC1D2R,CACT,CAQA,SAASo6C,GAAOruD,EAAKsuD,GAAoC,OAAzBA,IAAOtuD,EAAIsuD,KAAM,GAAetuD,CAAI,CAuDpE,SAASuuD,GAAS5wD,EAAIoH,EAAMmb,GAC1B,IAAIsuC,EACJ,GAAIzpD,GAAQpH,EAAG0K,QAAQmyB,QAAS,CAE9B,KADAg0B,EAAW7wD,EAAG0K,QAAQmyB,QAAQj1B,WAAW2a,IACxB,OAAOmuC,GAAO1wD,EAAGob,QAAQzb,GAAIK,EAAG0K,QAAQ+U,OAAS,KAAK,GACvErY,EAAO,KAAMmb,EAAS,CACxB,MACE,IAAKsuC,EAAWzpD,GAAOypD,EAAWA,EAAS/nD,WAAY,CACrD,IAAK+nD,GAAYA,GAAY7wD,EAAG0K,QAAQmyB,QAAW,OAAO,KAC1D,GAAIg0B,EAAS/nD,YAAc+nD,EAAS/nD,YAAc9I,EAAG0K,QAAQmyB,QAAW,KAC1E,CAEF,IAAK,IAAI97B,EAAI,EAAGA,EAAIf,EAAG0K,QAAQ6e,KAAKvoB,OAAQD,IAAK,CAC/C,IAAIglB,EAAW/lB,EAAG0K,QAAQ6e,KAAKxoB,GAC/B,GAAIglB,EAAS3e,MAAQypD,EACjB,OAAOC,GAAqB/qC,EAAU3e,EAAMmb,EAClD,CACF,CAEA,SAASuuC,GAAqB/qC,EAAU3e,EAAMmb,GAC5C,IAAI5X,EAAUob,EAAS7S,KAAKpL,WAAY6oD,GAAM,EAC9C,IAAKvpD,IAASuB,EAASgC,EAASvD,GAAS,OAAOspD,GAAO/wD,GAAIsa,GAAO8L,EAASvkB,MAAO,IAAI,GACtF,GAAI4F,GAAQuD,IACVgmD,GAAM,EACNvpD,EAAOuD,EAAQ/C,WAAW2a,GAC1BA,EAAS,GACJnb,GAAM,CACT,IAAI5F,EAAOukB,EAASK,KAAO9X,GAAIyX,EAASK,MAAQL,EAASvkB,KACzD,OAAOkvD,GAAO/wD,GAAIsa,GAAOzY,GAAOA,EAAK0R,KAAKlS,QAAS2vD,EACrD,CAGF,IAAII,EAA4B,GAAjB3pD,EAAKyB,SAAgBzB,EAAO,KAAM4pD,EAAU5pD,EAK3D,IAJK2pD,GAAsC,GAA1B3pD,EAAKQ,WAAW5G,QAA2C,GAA5BoG,EAAKU,WAAWe,WAC9DkoD,EAAW3pD,EAAKU,WACZya,IAAUA,EAASwuC,EAASE,UAAUjwD,SAErCgwD,EAAQloD,YAAc6B,GAAWqmD,EAAUA,EAAQloD,WAC1D,IAAI+M,EAAUkQ,EAASlQ,QAAS6Q,EAAO7Q,EAAQ6Q,KAE/C,SAASnD,EAAKwtC,EAAUC,EAASzuC,GAC/B,IAAK,IAAIxhB,GAAK,EAAGA,GAAK2lB,EAAOA,EAAK1lB,OAAS,GAAID,IAE7C,IADA,IAAIyN,EAAMzN,EAAI,EAAI8U,EAAQrH,IAAMkY,EAAK3lB,GAC5BgR,EAAI,EAAGA,EAAIvD,EAAIxN,OAAQ+Q,GAAK,EAAG,CACtC,IAAIm/C,EAAU1iD,EAAIuD,EAAI,GACtB,GAAIm/C,GAAWH,GAAYG,GAAWF,EAAS,CAC7C,IAAIxvD,EAAOyY,GAAOlZ,EAAI,EAAIglB,EAASvkB,KAAOukB,EAASK,KAAKrlB,IACpDU,EAAK+M,EAAIuD,GAAKwQ,EAElB,OADIA,EAAS,GAAK2uC,GAAWH,KAAYtvD,EAAK+M,EAAIuD,GAAKwQ,EAAS,EAAI,KAC7D5iB,GAAI6B,EAAMC,EACnB,CACF,CAEJ,CACA,IAAI+O,EAAQ+S,EAAKwtC,EAAUC,EAASzuC,GACpC,GAAI/R,EAAS,OAAOkgD,GAAOlgD,EAAOmgD,GAGlC,IAAK,IAAIppD,EAAQypD,EAAQ7kC,YAAa8J,EAAO86B,EAAWA,EAASE,UAAUjwD,OAASuhB,EAAS,EAAGhb,EAAOA,EAAQA,EAAM4kB,YAAa,CAEhI,GADA3b,EAAQ+S,EAAKhc,EAAOA,EAAMO,WAAY,GAElC,OAAO4oD,GAAO/wD,GAAI6Q,EAAMhP,KAAMgP,EAAM/O,GAAKw0B,GAAO06B,GAEhD16B,GAAQ1uB,EAAM4pD,YAAYnwD,MAChC,CACA,IAAK,IAAIqR,EAAS2+C,EAAQI,gBAAiBC,EAAS9uC,EAAQlQ,EAAQA,EAASA,EAAO++C,gBAAiB,CAEnG,GADA5gD,EAAQ+S,EAAKlR,EAAQA,EAAOvK,YAAa,GAErC,OAAO4oD,GAAO/wD,GAAI6Q,EAAMhP,KAAMgP,EAAM/O,GAAK4vD,GAASV,GAElDU,GAAUh/C,EAAO8+C,YAAYnwD,MACnC,CACF,CA9gBAgvD,GAAqB3kD,UAAU8+B,KAAO,SAAUz/B,GAC5C,IAAIqsC,EAASnqC,KAEXyb,EAAQzb,KAAM5M,EAAKqoB,EAAMroB,GACzB2V,EAAM0S,EAAM1S,IAAMjL,EAAQmyB,QAI9B,SAASy0B,EAAe5pD,GACtB,IAAK,IAAI01C,EAAI11C,EAAEiE,OAAQyxC,EAAGA,EAAIA,EAAEt0C,WAAY,CAC1C,GAAIs0C,GAAKznC,EAAO,OAAO,EACvB,GAAI,iCAAiC9S,KAAKu6C,EAAE91C,WAAc,KAC5D,CACA,OAAO,CACT,CA2BA,SAASiqD,EAAU7pD,GACjB,GAAK4pD,EAAe5pD,KAAMsM,GAAehU,EAAI0H,GAA7C,CACA,GAAI1H,EAAGosC,oBACL2gB,GAAc,CAACU,UAAU,EAAOv6C,KAAMlT,EAAGqD,kBAC3B,OAAVqE,EAAEpF,MAAiBtC,EAAG8B,iBAAiB,GAAI,KAAM,WAChD,KAAK9B,EAAG4X,QAAQ45C,gBACrB,OAEA,IAAI3wD,EAASqtD,GAAeluD,GAC5B+sD,GAAc,CAACU,UAAU,EAAMv6C,KAAMrS,EAAOqS,OAC9B,OAAVxL,EAAEpF,MACJtC,EAAG2B,WAAU,WACX3B,EAAGyD,cAAc5C,EAAOA,OAAQ,EAAG4M,GACnCzN,EAAG8B,iBAAiB,GAAI,KAAM,MAChC,GAEJ,CACA,GAAI4F,EAAEmmD,cAAe,CACnBnmD,EAAEmmD,cAAc4D,YAChB,IAAIrpD,EAAU0kD,GAAW55C,KAAK4lC,KAAK,MAGnC,GADApxC,EAAEmmD,cAAcrC,QAAQ,OAAQpjD,GAC5BV,EAAEmmD,cAAchQ,QAAQ,SAAWz1C,EAErC,YADAV,EAAEuM,gBAGN,CAEA,IAAIy9C,EAASjD,KAAkB53C,EAAK66C,EAAO5pD,WAC3CsmD,GAAoBv3C,GACpB7W,EAAG0K,QAAQmjB,UAAU/C,aAAa4mC,EAAQ1xD,EAAG0K,QAAQmjB,UAAU/lB,YAC/D+O,EAAGpK,MAAQqgD,GAAW55C,KAAK4lC,KAAK,MAChC,IAAI6Y,EAAW3oD,EAAUC,EAAS0M,IAClCnL,EAAYqM,GACZ1J,YAAW,WACTnN,EAAG0K,QAAQmjB,UAAUhmB,YAAY6pD,GACjCC,EAAS11B,QACL01B,GAAYh8C,GAAO0S,EAAMupC,sBAC/B,GAAG,GArCuD,CAsC5D,CA3EAj8C,EAAIk8C,iBAAkB,EACtBzD,GAAoBz4C,EAAK3V,EAAG4X,QAAQ02C,WAAYtuD,EAAG4X,QAAQ22C,YAAavuD,EAAG4X,QAAQ42C,gBAUnFp7C,GAAGuC,EAAK,SAAS,SAAUjO,IACpB4pD,EAAe5pD,IAAMsM,GAAehU,EAAI0H,IAAMimD,GAAYjmD,EAAG1H,IAE9DwF,GAAc,IAAM2H,WAAWxL,GAAU3B,GAAI,WAAc,OAAO+2C,EAAO+a,eAAiB,IAAI,GACpG,IAEA1+C,GAAGuC,EAAK,oBAAoB,SAAUjO,GACpCqvC,EAAOuZ,UAAY,CAACliC,KAAM1mB,EAAE0mB,KAAMygB,MAAM,EAC1C,IACAz7B,GAAGuC,EAAK,qBAAqB,SAAUjO,GAChCqvC,EAAOuZ,YAAavZ,EAAOuZ,UAAY,CAACliC,KAAM1mB,EAAE0mB,KAAMygB,MAAM,GACnE,IACAz7B,GAAGuC,EAAK,kBAAkB,SAAUjO,GAC9BqvC,EAAOuZ,YACL5oD,EAAE0mB,MAAQ2oB,EAAOuZ,UAAUliC,MAAQ2oB,EAAOgb,kBAC9Chb,EAAOuZ,UAAUzhB,MAAO,EAE5B,IAEAz7B,GAAGuC,EAAK,cAAc,WAAc,OAAO0S,EAAM2pC,qBAAuB,IAExE5+C,GAAGuC,EAAK,SAAS,WACVohC,EAAOuZ,WAAavZ,EAAOgb,iBAClC,IA0CA3+C,GAAGuC,EAAK,OAAQ47C,GAChBn+C,GAAGuC,EAAK,MAAO47C,EACjB,EAEAvB,GAAqB3kD,UAAU4mD,yBAA2B,SAAUC,GAE/DA,EACDtlD,KAAK+I,IAAIjN,aAAa,aAAcwpD,GAEpCtlD,KAAK+I,IAAIw8C,gBAAgB,aAE7B,EAEAnC,GAAqB3kD,UAAUitB,iBAAmB,WAChD,IAAIhiB,EAASgiB,GAAiB1rB,KAAK5M,IAAI,GAEvC,OADAsW,EAAO2lB,MAAQjzB,EAAUC,EAAS2D,KAAK+I,OAAS/I,KAAK+I,IAC9CW,CACT,EAEA05C,GAAqB3kD,UAAUgtB,cAAgB,SAAU5f,EAAMgsB,GACxDhsB,GAAS7L,KAAK5M,GAAG0K,QAAQ6e,KAAKvoB,UAC/ByX,EAAKwjB,OAASwI,IAAa73B,KAAKglD,uBACpChlD,KAAKwlD,uBAAuB35C,GAC9B,EAEAu3C,GAAqB3kD,UAAUuL,aAAe,WAC5C,OAAOhK,KAAK5M,GAAG0K,QAAQC,QAAQvB,cAAcwN,cAC/C,EAEAo5C,GAAqB3kD,UAAUumD,qBAAuB,WACpD,IAAIvtD,EAAMuI,KAAKgK,eAAgB5W,EAAK4M,KAAK5M,GAAIwsC,EAAOxsC,EAAGmJ,IAAI9E,IAAIH,UAC3D4L,EAAO08B,EAAK18B,OAAQC,EAAKy8B,EAAKz8B,KAElC,GAAI/P,EAAG0K,QAAQ+U,QAAUzf,EAAG0K,QAAQ8U,UAAY1P,EAAKtO,MAAQxB,EAAG0K,QAAQ+U,QAAU1P,EAAGvO,KAAOxB,EAAG0K,QAAQ8U,SACrGnb,EAAIokC,sBADN,CAKA,IAAI4pB,EAAYzB,GAAS5wD,EAAIqE,EAAIsjC,WAAYtjC,EAAIwjC,cAC7CyqB,EAAW1B,GAAS5wD,EAAIqE,EAAIyjC,UAAWzjC,EAAI0jC,aAC/C,IAAIsqB,GAAcA,EAAU1B,MAAO2B,GAAaA,EAAS3B,KACX,GAA1C/1C,GAAIK,GAAOo3C,EAAWC,GAAWxiD,IACO,GAAxC8K,GAAII,GAAOq3C,EAAWC,GAAWviD,GAFrC,CAKA,IAAIwZ,EAAOvpB,EAAG0K,QAAQ6e,KAClB5kB,EAASmL,EAAKtO,MAAQxB,EAAG0K,QAAQ8U,UAAYixC,GAASzwD,EAAI8P,IAC1D,CAAC1I,KAAMmiB,EAAK,GAAG1T,QAAQrH,IAAI,GAAI+T,OAAQ,GACvCzY,EAAMiG,EAAGvO,KAAOxB,EAAG0K,QAAQ+U,QAAUgxC,GAASzwD,EAAI+P,GACtD,IAAKjG,EAAK,CACR,IAAI+L,EAAU0T,EAAKA,EAAKvoB,OAAS,GAAG6U,QAChCrH,EAAMqH,EAAQ6Q,KAAO7Q,EAAQ6Q,KAAK7Q,EAAQ6Q,KAAK1lB,OAAS,GAAK6U,EAAQrH,IACzE1E,EAAM,CAAC1C,KAAMoH,EAAIA,EAAIxN,OAAS,GAAIuhB,OAAQ/T,EAAIA,EAAIxN,OAAS,GAAKwN,EAAIA,EAAIxN,OAAS,GACnF,CAEA,GAAK2D,GAAUmF,EAAf,CAKA,IAA+CyoD,EAA3CryD,EAAMmE,EAAImuD,YAAcnuD,EAAIouD,WAAW,GAC3C,IAAMF,EAAM7vD,EAAMiC,EAAMyC,KAAMzC,EAAM4d,OAAQzY,EAAIyY,OAAQzY,EAAI1C,KAAO,CACnE,MAAMM,GAAI,CACN6qD,KACGrtD,GAASlF,EAAGM,MAAMi7B,SACrBl3B,EAAIgG,SAAS1F,EAAMyC,KAAMzC,EAAM4d,QAC1BgwC,EAAI1uC,YACPxf,EAAIokC,kBACJpkC,EAAIqkC,SAAS6pB,MAGfluD,EAAIokC,kBACJpkC,EAAIqkC,SAAS6pB,IAEXryD,GAAyB,MAAlBmE,EAAIsjC,WAAsBtjC,EAAIqkC,SAASxoC,GACzCgF,GAAS0H,KAAK8lD,oBAEzB9lD,KAAK+lD,mBAnBL,MAFEtuD,EAAIokC,iBAbK,CAPX,CA0CF,EAEAunB,GAAqB3kD,UAAUqnD,iBAAmB,WAC9C,IAAI3b,EAASnqC,KAEfU,aAAaV,KAAK2jD,aAClB3jD,KAAK2jD,YAAcpjD,YAAW,WAC5B4pC,EAAOwZ,aAAc,EACjBxZ,EAAOnU,oBACPmU,EAAO/2C,GAAG2B,WAAU,WAAc,OAAOo1C,EAAO/2C,GAAGuU,MAAMquB,kBAAmB,CAAM,GACxF,GAAG,GACL,EAEAotB,GAAqB3kD,UAAU+mD,uBAAyB,SAAU35C,GAChE1Q,EAAqB6E,KAAK5M,GAAG0K,QAAQgxB,UAAWjjB,EAAK+f,SACrDzwB,EAAqB6E,KAAK5M,GAAG0K,QAAQk+B,aAAcnwB,EAAK3B,UAC1D,EAEAk5C,GAAqB3kD,UAAUsnD,kBAAoB,WACjD,IAAItuD,EAAMuI,KAAKgK,eACfhK,KAAKqjD,eAAiB5rD,EAAIsjC,WAAY/6B,KAAKsjD,iBAAmB7rD,EAAIwjC,aAClEj7B,KAAKujD,cAAgB9rD,EAAIyjC,UAAWl7B,KAAKwjD,gBAAkB/rD,EAAI0jC,WACjE,EAEAioB,GAAqB3kD,UAAUunD,kBAAoB,WACjD,IAAIvuD,EAAMuI,KAAKgK,eACf,IAAKvS,EAAImuD,WAAc,OAAO,EAC9B,IAAIprD,EAAO/C,EAAIouD,WAAW,GAAGI,wBAC7B,OAAOlqD,EAASiE,KAAK+I,IAAKvO,EAC5B,EAEA4oD,GAAqB3kD,UAAU4wB,MAAQ,WACL,YAA5BrvB,KAAK5M,GAAG4X,QAAQ0kB,WACb1vB,KAAKgmD,qBAAuB5pD,EAAUC,EAAS2D,KAAK+I,OAAS/I,KAAK+I,KACnE/I,KAAKyrB,cAAczrB,KAAK0rB,oBAAoB,GAChD1rB,KAAK+I,IAAIsmB,QAEb,EACA+zB,GAAqB3kD,UAAUynD,KAAO,WAAclmD,KAAK+I,IAAIm9C,MAAQ,EACrE9C,GAAqB3kD,UAAUi6C,SAAW,WAAc,OAAO14C,KAAK+I,GAAI,EAExEq6C,GAAqB3kD,UAAU66C,cAAgB,WAAc,OAAO,CAAK,EAEzE8J,GAAqB3kD,UAAUoxB,cAAgB,WAC3C,IAAIsa,EAASnqC,KAEXyb,EAAQzb,KACRA,KAAKgmD,oBACLzlD,YAAW,WAAc,OAAO4pC,EAAOgc,eAAiB,GAAG,IAE3DjtB,GAAQl5B,KAAK5M,IAAI,WAAc,OAAOqoB,EAAMroB,GAAGuU,MAAMquB,kBAAmB,CAAM,IAQlFh2B,KAAKyjD,QAAQjjD,IAAIR,KAAK5M,GAAG4X,QAAQo7C,cANjC,SAASC,IACH5qC,EAAMroB,GAAGM,MAAMi7B,UACjBlT,EAAM0qC,gBACN1qC,EAAMgoC,QAAQjjD,IAAIib,EAAMroB,GAAG4X,QAAQo7C,aAAcC,GAErD,GAEF,EAEAjD,GAAqB3kD,UAAUu3B,iBAAmB,WAChD,IAAIv+B,EAAMuI,KAAKgK,eACf,OAAOvS,EAAIsjC,YAAc/6B,KAAKqjD,gBAAkB5rD,EAAIwjC,cAAgBj7B,KAAKsjD,kBACvE7rD,EAAIyjC,WAAal7B,KAAKujD,eAAiB9rD,EAAI0jC,aAAen7B,KAAKwjD,eACnE,EAEAJ,GAAqB3kD,UAAU0nD,cAAgB,WAC7C,GAA2B,MAAvBnmD,KAAK4jD,iBAA0B5jD,KAAK2jD,aAAgB3jD,KAAKg2B,mBAA7D,CACA,IAAIv+B,EAAMuI,KAAKgK,eAAgB5W,EAAK4M,KAAK5M,GAOzC,GAAIsG,GAAWT,GAAU+G,KAAK5M,GAAG0K,QAAQqhB,YAAY/qB,QA8JvD,SAAoBoG,GAClB,IAAK,IAAI8rD,EAAO9rD,EAAM8rD,EAAMA,EAAOA,EAAKpqD,WACpC,GAAI,4BAA4BjG,KAAKqwD,EAAK5rD,WAAc,OAAO,EACnE,OAAO,CACT,CAlKiE6rD,CAAW9uD,EAAIsjC,YAI5E,OAHA/6B,KAAK5M,GAAGozD,iBAAiB,CAAC9wD,KAAM,UAAWi9C,QAAS,EAAGtrC,eAAgB/F,KAAKmiB,MAC5EzjB,KAAKkmD,YACLlmD,KAAKqvB,QAGP,IAAIrvB,KAAK0jD,UAAT,CACA1jD,KAAK+lD,oBACL,IAAIvuD,EAASwsD,GAAS5wD,EAAIqE,EAAIsjC,WAAYtjC,EAAIwjC,cAC1CzmC,EAAOwvD,GAAS5wD,EAAIqE,EAAIyjC,UAAWzjC,EAAI0jC,aACvC3jC,GAAUhD,GAAQ0kC,GAAQ9lC,GAAI,WAChCyxC,GAAazxC,EAAGmJ,IAAKwjC,GAAgBvoC,EAAQhD,GAAOqM,IAChDrJ,EAAOusD,KAAOvvD,EAAKuvD,OAAO3wD,EAAGuU,MAAMquB,kBAAmB,EAC5D,GAP6B,CAd6D,CAsB5F,EAEAotB,GAAqB3kD,UAAUgoD,YAAc,WAChB,MAAvBzmD,KAAK4jD,iBACPljD,aAAaV,KAAK4jD,gBAClB5jD,KAAK4jD,eAAiB,MAGxB,IAQI8C,EAAWr4B,EAAUs4B,EARrBvzD,EAAK4M,KAAK5M,GAAI0K,EAAU1K,EAAG0K,QAASrG,EAAMrE,EAAGmJ,IAAI9E,IAAIH,UACrD4L,EAAOzL,EAAIyL,OAAQC,EAAK1L,EAAI0L,KAKhC,GAJe,GAAXD,EAAKrO,IAAWqO,EAAKtO,KAAOxB,EAAGytC,cAC/B39B,EAAOnQ,GAAImQ,EAAKtO,KAAO,EAAG0X,GAAQlZ,EAAGmJ,IAAK2G,EAAKtO,KAAO,GAAGR,SACzD+O,EAAGtO,IAAMyX,GAAQlZ,EAAGmJ,IAAK4G,EAAGvO,MAAM0R,KAAKlS,QAAU+O,EAAGvO,KAAOxB,EAAGykB,aAC9D1U,EAAKpQ,GAAIoQ,EAAGvO,KAAO,EAAG,IACtBsO,EAAKtO,KAAOkJ,EAAQ8U,UAAYzP,EAAGvO,KAAOkJ,EAAQ+U,OAAS,EAAK,OAAO,EAGvE3P,EAAKtO,MAAQkJ,EAAQ8U,UAA0D,IAA7C8zC,EAAYhkC,GAActvB,EAAI8P,EAAKtO,QACvEy5B,EAAWhhB,GAAOvP,EAAQ6e,KAAK,GAAG/nB,MAClC+xD,EAAW7oD,EAAQ6e,KAAK,GAAGniB,OAE3B6zB,EAAWhhB,GAAOvP,EAAQ6e,KAAK+pC,GAAW9xD,MAC1C+xD,EAAW7oD,EAAQ6e,KAAK+pC,EAAY,GAAGlsD,KAAK+kB,aAE9C,IACI+O,EAAQs4B,EADRC,EAAUnkC,GAActvB,EAAI+P,EAAGvO,MAUnC,GARIiyD,GAAW/oD,EAAQ6e,KAAKvoB,OAAS,GACnCk6B,EAASxwB,EAAQ+U,OAAS,EAC1B+zC,EAAS9oD,EAAQmyB,QAAQjW,YAEzBsU,EAASjhB,GAAOvP,EAAQ6e,KAAKkqC,EAAU,GAAGjyD,MAAQ,EAClDgyD,EAAS9oD,EAAQ6e,KAAKkqC,EAAU,GAAGrsD,KAAKgqD,kBAGrCmC,EAAY,OAAO,EAGxB,IAFA,IAAIG,EAAU1zD,EAAGmJ,IAAIosC,WAqHvB,SAAwBv1C,EAAI8P,EAAMC,EAAIkrB,EAAUC,GAC9C,IAAIhoB,EAAO,GAAIygD,GAAU,EAAOjb,EAAU14C,EAAGmJ,IAAItH,gBAAiB+xD,GAAiB,EAEnF,SAASC,IACHF,IACFzgD,GAAQwlC,EACJkb,IAAkB1gD,GAAQwlC,GAC9Bib,EAAUC,GAAiB,EAE/B,CACA,SAASE,EAAQtvD,GACXA,IACFqvD,IACA3gD,GAAQ1O,EAEZ,CACA,SAASuvD,EAAK3sD,GACZ,GAAqB,GAAjBA,EAAKyB,SAAe,CACtB,IAAImrD,EAAS5sD,EAAKqmB,aAAa,WAC/B,GAAIumC,EAEF,YADAF,EAAQE,GAGV,IAA+CtxD,EAA3CuxD,EAAW7sD,EAAKqmB,aAAa,aACjC,GAAIwmC,EAAU,CACZ,IAAIzjD,EAAQxQ,EAAGq4C,UAAU14C,GAAIs7B,EAAU,GAAIt7B,GAAIu7B,EAAS,EAAG,IAvBxCruB,GAuB6DonD,EAvBhD,SAAUjzC,GAAU,OAAOA,EAAOnU,IAAMA,CAAI,IA0B5E,YAFI2D,EAAMxP,SAAW0B,EAAQ8N,EAAM,GAAG+S,KAAK,KACvCuwC,EAAQn6C,GAAW3Z,EAAGmJ,IAAKzG,EAAMoN,KAAMpN,EAAMqN,IAAI+oC,KAAKJ,IAE5D,CACA,GAA4C,SAAxCtxC,EAAKqmB,aAAa,mBAAiC,OACvD,IAAIymC,EAAU,6BAA6BrxD,KAAKuE,EAAKohC,UACrD,IAAK,QAAQ3lC,KAAKuE,EAAKohC,WAAwC,GAA3BphC,EAAK+pD,YAAYnwD,OAAe,OAEhEkzD,GAAWL,IACf,IAAK,IAAI9yD,EAAI,EAAGA,EAAIqG,EAAKQ,WAAW5G,OAAQD,IACxCgzD,EAAK3sD,EAAKQ,WAAW7G,IAErB,aAAa8B,KAAKuE,EAAKohC,YAAaorB,GAAiB,GACrDM,IAAWP,GAAU,EAC3B,MAA4B,GAAjBvsD,EAAKyB,UACdirD,EAAQ1sD,EAAK6pD,UAAUn/C,QAAQ,UAAW,IAAIA,QAAQ,UAAW,MAvCrE,IAAyBjF,CAyCzB,CACA,KACEknD,EAAKjkD,GACDA,GAAQC,GACZD,EAAOA,EAAKqc,YACZynC,GAAiB,EAEnB,OAAO1gD,CACT,CAxKkCihD,CAAen0D,EAAIuzD,EAAUC,EAAQv4B,EAAUC,IAC3Ek5B,EAAUz6C,GAAW3Z,EAAGmJ,IAAKxJ,GAAIs7B,EAAU,GAAIt7B,GAAIu7B,EAAQhiB,GAAQlZ,EAAGmJ,IAAK+xB,GAAQhoB,KAAKlS,SACrF0yD,EAAQ1yD,OAAS,GAAKozD,EAAQpzD,OAAS,GAC5C,GAAIsN,GAAIolD,IAAYplD,GAAI8lD,GAAYV,EAAQ9jB,MAAOwkB,EAAQxkB,MAAO1U,QAC7D,IAAIw4B,EAAQ,IAAMU,EAAQ,GACxB,MAD8BV,EAAQh3B,QAAS03B,EAAQ13B,QAASzB,GAC1D,CAKf,IAFA,IAAIo5B,EAAW,EAAGC,EAAS,EACvBv2B,EAAS21B,EAAQ,GAAIa,EAASH,EAAQ,GAAII,EAActmD,KAAKC,IAAI4vB,EAAO/8B,OAAQuzD,EAAOvzD,QACpFqzD,EAAWG,GAAez2B,EAAOruB,WAAW2kD,IAAaE,EAAO7kD,WAAW2kD,MAC5EA,EAIN,IAHA,IAAII,EAASnmD,GAAIolD,GAAUgB,EAASpmD,GAAI8lD,GACpCO,EAAYzmD,KAAKC,IAAIsmD,EAAOzzD,QAA4B,GAAlB0yD,EAAQ1yD,OAAcqzD,EAAW,GAClDK,EAAO1zD,QAA4B,GAAlBozD,EAAQpzD,OAAcqzD,EAAW,IACpEC,EAASK,GACTF,EAAO/kD,WAAW+kD,EAAOzzD,OAASszD,EAAS,IAAMI,EAAOhlD,WAAWglD,EAAO1zD,OAASszD,EAAS,MAC7FA,EAEN,GAAsB,GAAlBZ,EAAQ1yD,QAAiC,GAAlBozD,EAAQpzD,QAAei6B,GAAYnrB,EAAKtO,KACjE,KAAO6yD,GAAYA,EAAWvkD,EAAKrO,IAC5BgzD,EAAO/kD,WAAW+kD,EAAOzzD,OAASszD,EAAS,IAAMI,EAAOhlD,WAAWglD,EAAO1zD,OAASszD,EAAS,IACjGD,IACAC,IAIJZ,EAAQA,EAAQ1yD,OAAS,GAAKyzD,EAAOlxD,MAAM,EAAGkxD,EAAOzzD,OAASszD,GAAQxiD,QAAQ,WAAY,IAC1F4hD,EAAQ,GAAKA,EAAQ,GAAGnwD,MAAM8wD,GAAUviD,QAAQ,WAAY,IAE5D,IAAI8iD,EAASj1D,GAAIs7B,EAAUo5B,GACvBQ,EAAOl1D,GAAIu7B,EAAQk5B,EAAQpzD,OAASsN,GAAI8lD,GAASpzD,OAASszD,EAAS,GACvE,OAAIZ,EAAQ1yD,OAAS,GAAK0yD,EAAQ,IAAM94C,GAAIg6C,EAAQC,IAClDtzD,GAAavB,EAAGmJ,IAAKuqD,EAASkB,EAAQC,EAAM,WACrC,QAFT,CAIF,EAEA7E,GAAqB3kD,UAAUm5C,aAAe,WAC5C53C,KAAKolD,qBACP,EACAhC,GAAqB3kD,UAAUmxB,MAAQ,WACrC5vB,KAAKolD,qBACP,EACAhC,GAAqB3kD,UAAU2mD,oBAAsB,WAC9CplD,KAAK0jD,YACVhjD,aAAaV,KAAK4jD,gBAClB5jD,KAAK0jD,UAAY,KACjB1jD,KAAKklD,gBACLllD,KAAK+I,IAAIm9C,OACTlmD,KAAK+I,IAAIsmB,QACX,EACA+zB,GAAqB3kD,UAAU0mD,gBAAkB,WAC7C,IAAIhb,EAASnqC,KAEY,MAAvBA,KAAK4jD,iBACT5jD,KAAK4jD,eAAiBrjD,YAAW,WAE/B,GADA4pC,EAAOyZ,eAAiB,KACpBzZ,EAAOuZ,UAAW,CACpB,IAAIvZ,EAAOuZ,UAAUzhB,KACd,OADsBkI,EAAOuZ,UAAY,IAElD,CACAvZ,EAAO+a,eACT,GAAG,IACL,EAEA9B,GAAqB3kD,UAAUymD,cAAgB,WAC3C,IAAI/a,EAASnqC,MAEXA,KAAK5M,GAAG+8C,cAAiBnwC,KAAKymD,eAC9BvtB,GAAQl5B,KAAK5M,IAAI,WAAc,OAAOq3B,GAAU0f,EAAO/2C,GAAK,GAClE,EAEAgwD,GAAqB3kD,UAAUkd,cAAgB,SAAUnhB,GACvDA,EAAKyqD,gBAAkB,OACzB,EAEA7B,GAAqB3kD,UAAUs6C,WAAa,SAAUj+C,GAClC,GAAdA,EAAEk+C,UAAiBh5C,KAAK0jD,YAC5B5oD,EAAEuM,iBACGrH,KAAK5M,GAAG+8C,cACTp7C,GAAUiL,KAAK5M,GAAIitD,GAAnBtrD,CAAmCiL,KAAK5M,GAAIya,OAAOikC,aAA2B,MAAdh3C,EAAEk+C,SAAmBl+C,EAAE63C,QAAU73C,EAAEk+C,UAAW,GACpH,EAEAoK,GAAqB3kD,UAAUypD,gBAAkB,SAAU70D,GACzD2M,KAAK+I,IAAIk8C,gBAAkBp3C,OAAc,YAAPxa,EACpC,EAEA+vD,GAAqB3kD,UAAU29C,cAAgB,WAAa,EAC5DgH,GAAqB3kD,UAAU0pD,cAAgB,WAAa,EAE5D/E,GAAqB3kD,UAAUid,uBAAwB,EA2JvD,IAAI0sC,GAAgB,SAASh1D,GAC3B4M,KAAK5M,GAAKA,EAEV4M,KAAKqoD,UAAY,GAKjBroD,KAAKsoD,aAAc,EAEnBtoD,KAAKyjD,QAAU,IAAI1jD,EAEnBC,KAAK8J,cAAe,EACpB9J,KAAK0jD,UAAY,KACjB1jD,KAAKuoD,WAAY,CACnB,EAEAH,GAAc3pD,UAAU8+B,KAAO,SAAUz/B,GACrC,IAAIqsC,EAASnqC,KAEXyb,EAAQzb,KAAM5M,EAAK4M,KAAK5M,GAC5B4M,KAAKwoD,YAAY1qD,GACjB,IAAImM,EAAKjK,KAAKyoD,SAmBd,SAASC,EAAe5tD,GACtB,IAAIsM,GAAehU,EAAI0H,GAAvB,CACA,GAAI1H,EAAGosC,oBACL2gB,GAAc,CAACU,UAAU,EAAOv6C,KAAMlT,EAAGqD,sBACpC,KAAKrD,EAAG4X,QAAQ45C,gBACrB,OAEA,IAAI3wD,EAASqtD,GAAeluD,GAC5B+sD,GAAc,CAACU,UAAU,EAAMv6C,KAAMrS,EAAOqS,OAC9B,OAAVxL,EAAEpF,KACJtC,EAAGyD,cAAc5C,EAAOA,OAAQ,KAAM4M,IAEtC4a,EAAM4sC,UAAY,GAClBp+C,EAAGpK,MAAQ5L,EAAOqS,KAAK4lC,KAAK,MAC5BtuC,EAAYqM,GAEhB,CACc,OAAVnP,EAAEpF,OAAiBtC,EAAGM,MAAMmqD,aAAe,IAAIv9C,KAhBf,CAiBtC,CAnCAxC,EAAQC,QAAQmgB,aAAale,KAAKjC,QAASD,EAAQC,QAAQ7C,YAGvD1B,IAAOyQ,EAAGxO,MAAMykB,MAAQ,OAE5B1Z,GAAGyD,EAAI,SAAS,WACVtR,GAAMC,GAAc,GAAKuxC,EAAOrgC,eAAgBqgC,EAAOrgC,aAAe,MAC1E2R,EAAM4qC,MACR,IAEA7/C,GAAGyD,EAAI,SAAS,SAAUnP,GACpBsM,GAAehU,EAAI0H,IAAMimD,GAAYjmD,EAAG1H,KAE5CA,EAAGM,MAAMkqD,eAAiB,IAAIt9C,KAC9Bmb,EAAMktC,WACR,IAqBAniD,GAAGyD,EAAI,MAAOy+C,GACdliD,GAAGyD,EAAI,OAAQy+C,GAEfliD,GAAG1I,EAAQikB,SAAU,SAAS,SAAUjnB,GACtC,IAAI8lB,GAAc9iB,EAAShD,KAAMsM,GAAehU,EAAI0H,GAApD,CACA,IAAKmP,EAAG2+C,cAGN,OAFAx1D,EAAGM,MAAMkqD,eAAiB,IAAIt9C,UAC9Bmb,EAAM4T,QAKR,IAAImV,EAAQ,IAAIqkB,MAAM,SACtBrkB,EAAMyc,cAAgBnmD,EAAEmmD,cACxBh3C,EAAG2+C,cAAcpkB,EAVgD,CAWnE,IAGAh+B,GAAG1I,EAAQmjB,UAAW,eAAe,SAAUnmB,GACxC8lB,GAAc9iB,EAAShD,IAAMkN,GAAiBlN,EACrD,IAEA0L,GAAGyD,EAAI,oBAAoB,WACzB,IAAIlS,EAAQ3E,EAAG+D,UAAU,QACrBskB,EAAMioC,WAAajoC,EAAMioC,UAAU5tD,MAAM0+B,QAC7C/Y,EAAMioC,UAAY,CAChB3rD,MAAOA,EACPjC,MAAO1C,EAAGm3C,SAASxyC,EAAO3E,EAAG+D,UAAU,MAAO,CAACuD,UAAW,yBAE9D,IACA8L,GAAGyD,EAAI,kBAAkB,WACnBwR,EAAMioC,YACRjoC,EAAM4qC,OACN5qC,EAAMioC,UAAU5tD,MAAM0+B,QACtB/Y,EAAMioC,UAAY,KAEtB,GACF,EAEA0E,GAAc3pD,UAAU+pD,YAAc,SAAUM,GAE9C9oD,KAAKjC,QAAU8jD,KAGf7hD,KAAKyoD,SAAWzoD,KAAKjC,QAAQ7C,WAC7B,IAAI6tD,EAAO/oD,KAAK5M,GAAG4X,QACnBw2C,GAAoBxhD,KAAKyoD,SAAUM,EAAKrH,WAAYqH,EAAKpH,YAAaoH,EAAKnH,eAC7E,EAEAwG,GAAc3pD,UAAU4mD,yBAA2B,SAAUC,GAExDA,EACDtlD,KAAKyoD,SAAS3sD,aAAa,aAAcwpD,GAEzCtlD,KAAKyoD,SAASlD,gBAAgB,aAElC,EAEA6C,GAAc3pD,UAAUitB,iBAAmB,WAEzC,IAAIt4B,EAAK4M,KAAK5M,GAAI0K,EAAU1K,EAAG0K,QAASvB,EAAMnJ,EAAGmJ,IAC7CmN,EAASgiB,GAAiBt4B,GAG9B,GAAIA,EAAG4X,QAAQg+C,oBAAqB,CAClC,IAAIC,EAAU5hC,GAAaj0B,EAAImJ,EAAI9E,IAAIH,UAAU9C,KAAM,OACnD00D,EAAUprD,EAAQC,QAAQwL,wBAAyB4/C,EAAUrrD,EAAQmyB,QAAQ1mB,wBACjFG,EAAO0/C,MAAQ9nD,KAAKiN,IAAI,EAAGjN,KAAKC,IAAIzD,EAAQC,QAAQmkB,aAAe,GAC/B+mC,EAAQtlC,IAAMwlC,EAAQxlC,IAAMulC,EAAQvlC,MACxEja,EAAO2/C,OAAS/nD,KAAKiN,IAAI,EAAGjN,KAAKC,IAAIzD,EAAQC,QAAQ4iB,YAAc,GAC9BsoC,EAAQ3yD,KAAO6yD,EAAQ7yD,KAAO4yD,EAAQ5yD,MAC7E,CAEA,OAAOoT,CACT,EAEA0+C,GAAc3pD,UAAUgtB,cAAgB,SAAU69B,GAChD,IAAkBxrD,EAATkC,KAAK5M,GAAiB0K,QAC/B3C,EAAqB2C,EAAQgxB,UAAWw6B,EAAM19B,SAC9CzwB,EAAqB2C,EAAQk+B,aAAcstB,EAAMp/C,WAC9B,MAAfo/C,EAAMF,QACRppD,KAAKjC,QAAQtC,MAAMkoB,IAAM2lC,EAAMF,MAAQ,KACvCppD,KAAKjC,QAAQtC,MAAMnF,KAAOgzD,EAAMD,OAAS,KAE7C,EAIAjB,GAAc3pD,UAAUmxB,MAAQ,SAAUiG,GACxC,KAAI71B,KAAKupD,oBAAsBvpD,KAAK0jD,WAAa7tB,GAAjD,CACA,IAAIziC,EAAK4M,KAAK5M,GAEd,GADA4M,KAAKuoD,WAAY,EACbn1D,EAAGosC,oBAAqB,CAC1Bx/B,KAAKqoD,UAAY,GACjB,IAAI7sD,EAAUpI,EAAG4W,eACjBhK,KAAKyoD,SAAS5oD,MAAQrE,EAClBpI,EAAGM,MAAMi7B,SAAW/wB,EAAYoC,KAAKyoD,UACrC9vD,GAAMC,GAAc,IAAKoH,KAAK8J,aAAetO,EACnD,MAAYq6B,IACV71B,KAAKqoD,UAAYroD,KAAKyoD,SAAS5oD,MAAQ,GACnClH,GAAMC,GAAc,IAAKoH,KAAK8J,aAAe,OAEnD9J,KAAKuoD,WAAY,CAbiD,CAcpE,EAEAH,GAAc3pD,UAAUi6C,SAAW,WAAc,OAAO14C,KAAKyoD,QAAS,EAEtEL,GAAc3pD,UAAU66C,cAAgB,WAAc,OAAO,CAAM,EAEnE8O,GAAc3pD,UAAU4wB,MAAQ,WAC9B,GAAgC,YAA5BrvB,KAAK5M,GAAG4X,QAAQ0kB,YAA4B/1B,GAAUyC,EAAUC,EAAS2D,KAAKyoD,YAAczoD,KAAKyoD,UACnG,IAAMzoD,KAAKyoD,SAASp5B,OAAS,CAC7B,MAAOv0B,GAAI,CAEf,EAEAstD,GAAc3pD,UAAUynD,KAAO,WAAclmD,KAAKyoD,SAASvC,MAAQ,EAEnEkC,GAAc3pD,UAAU0pD,cAAgB,WACtCnoD,KAAKjC,QAAQtC,MAAMkoB,IAAM3jB,KAAKjC,QAAQtC,MAAMnF,KAAO,CACrD,EAEA8xD,GAAc3pD,UAAUoxB,cAAgB,WAAc7vB,KAAKwpD,UAAY,EAIvEpB,GAAc3pD,UAAU+qD,SAAW,WAC/B,IAAIrf,EAASnqC,KAEXA,KAAKsoD,aACTtoD,KAAKyjD,QAAQjjD,IAAIR,KAAK5M,GAAG4X,QAAQo7C,cAAc,WAC7Cjc,EAAOkc,OACHlc,EAAO/2C,GAAGM,MAAMi7B,SAAWwb,EAAOqf,UACxC,GACF,EAKApB,GAAc3pD,UAAUkqD,SAAW,WACjC,IAAIc,GAAS,EAAOhuC,EAAQzb,KAC5Byb,EAAM6sC,aAAc,EAMpB7sC,EAAMgoC,QAAQjjD,IAAI,IALlB,SAAS2X,IACOsD,EAAM4qC,QACHoD,GACXhuC,EAAM6sC,aAAc,EAAO7sC,EAAM+tC,aADbC,GAAS,EAAMhuC,EAAMgoC,QAAQjjD,IAAI,GAAI2X,GAEjE,GAEF,EAQAiwC,GAAc3pD,UAAU4nD,KAAO,WAC3B,IAAIlc,EAASnqC,KAEX5M,EAAK4M,KAAK5M,GAAIqoB,EAAQzb,KAAKyoD,SAAUJ,EAAYroD,KAAKqoD,UAK1D,GAAIroD,KAAKupD,oBAAsBvpD,KAAKuoD,YAAcn1D,EAAGM,MAAMi7B,SACtD7kB,GAAa2R,KAAW4sC,IAAcroD,KAAK0jD,WAC5CtwD,EAAG+8C,cAAgB/8C,EAAG4X,QAAQk2C,cAAgB9tD,EAAGM,MAAMukD,OACvD,OAAO,EAEX,IAAI3xC,EAAOmV,EAAM5b,MAEjB,GAAIyG,GAAQ+hD,IAAcj1D,EAAGosC,oBAAuB,OAAO,EAI3D,GAAI7mC,GAAMC,GAAc,GAAKoH,KAAK8J,eAAiBxD,GAC/C1M,GAAO,kBAAkB3D,KAAKqQ,GAEhC,OADAlT,EAAG0K,QAAQ2d,MAAMmU,SACV,EAGT,GAAIx8B,EAAGmJ,IAAI9E,KAAOrE,EAAG0K,QAAQ6xB,kBAAmB,CAC9C,IAAIpjB,EAAQjG,EAAKxD,WAAW,GAE5B,GADa,MAATyJ,GAAoB87C,IAAaA,EAAY,KACpC,MAAT97C,EAAiC,OAAdvM,KAAK4vB,QAAgB5vB,KAAK5M,GAAG8jD,YAAY,OAClE,CAGA,IADA,IAAIwS,EAAO,EAAG//C,EAAIrI,KAAKC,IAAI8mD,EAAUj0D,OAAQkS,EAAKlS,QAC3Cs1D,EAAO//C,GAAK0+C,EAAUvlD,WAAW4mD,IAASpjD,EAAKxD,WAAW4mD,MAAWA,EAgB5E,OAdAxwB,GAAQ9lC,GAAI,WACVitD,GAAejtD,EAAIkT,EAAK3P,MAAM+yD,GAAOrB,EAAUj0D,OAASs1D,EACzC,KAAMvf,EAAOuZ,UAAY,WAAa,MAGjDp9C,EAAKlS,OAAS,KAAQkS,EAAK7R,QAAQ,OAAS,EAAKgnB,EAAM5b,MAAQsqC,EAAOke,UAAY,GAC/Ele,EAAOke,UAAY/hD,EAEtB6jC,EAAOuZ,YACTvZ,EAAOuZ,UAAU5tD,MAAM0+B,QACvB2V,EAAOuZ,UAAU5tD,MAAQ1C,EAAGm3C,SAASJ,EAAOuZ,UAAU3rD,MAAO3E,EAAG+D,UAAU,MACvC,CAACuD,UAAW,yBAEnD,KACO,CACT,EAEA0tD,GAAc3pD,UAAUm5C,aAAe,WACjC53C,KAAKsoD,aAAetoD,KAAKqmD,SAAUrmD,KAAKsoD,aAAc,EAC5D,EAEAF,GAAc3pD,UAAUs6C,WAAa,WAC/BpgD,GAAMC,GAAc,IAAKoH,KAAK8J,aAAe,MACjD9J,KAAK2oD,UACP,EAEAP,GAAc3pD,UAAU29C,cAAgB,SAAUthD,GAChD,IAAI2gB,EAAQzb,KAAM5M,EAAKqoB,EAAMroB,GAAI0K,EAAU1K,EAAG0K,QAASmM,EAAKwR,EAAMgtC,SAC9DhtC,EAAM8tC,oBAAsB9tC,EAAM8tC,qBACtC,IAAI9zD,EAAMu0B,GAAa52B,EAAI0H,GAAI49B,EAAY56B,EAAQikB,SAASyE,UAC5D,GAAK/wB,IAAO0D,EAAZ,CAIY/F,EAAG4X,QAAQ2+C,8BACmB,GAA7Bv2D,EAAGmJ,IAAI9E,IAAIsE,SAAStG,IAC7BV,GAAU3B,EAAIyxC,GAAd9vC,CAA4B3B,EAAGmJ,IAAKwjC,GAAgBtqC,GAAMoL,GAE9D,IAII+oD,EAJAC,EAAS5/C,EAAGxO,MAAME,QAASmuD,EAAgBruC,EAAM1d,QAAQtC,MAAME,QAC/DouD,EAAatuC,EAAM1d,QAAQisD,aAAazgD,wBAwD5C,GAvDAkS,EAAM1d,QAAQtC,MAAME,QAAU,mBAC9BsO,EAAGxO,MAAME,QAAU,+DAAiEb,EAAEuvB,QAAU0/B,EAAWpmC,IAAM,GAAK,cAAgB7oB,EAAEsvB,QAAU2/B,EAAWzzD,KAAO,GAAK,0CAA4CqC,EAAK,2BAA6B,eAAiB,oHAEpQI,IAAU6wD,EAAa3/C,EAAGzN,cAAc4B,YAAY6rD,SACxDnsD,EAAQ2d,MAAM4T,QACVt2B,GAAUkR,EAAGzN,cAAc4B,YAAY8rD,SAAS,KAAMN,GAC1D9rD,EAAQ2d,MAAMmU,QAETx8B,EAAGosC,sBAAuBv1B,EAAGpK,MAAQ4b,EAAM4sC,UAAY,KAC5D5sC,EAAM8tC,mBAAqBY,EAC3BrsD,EAAQ6xB,kBAAoBv8B,EAAGmJ,IAAI9E,IACnCiJ,aAAa5C,EAAQssD,oBA2CjBzxD,GAAMC,GAAc,GAAKyxD,IACzBlwD,EAAmB,CACrBkO,GAAOvN,GACP,IAAIwvD,EAAU,WACZvjD,GAAIgD,OAAQ,UAAWugD,GACvB/pD,WAAW4pD,EAAQ,GACrB,EACA3jD,GAAGuD,OAAQ,UAAWugD,EACxB,MACE/pD,WAAW4pD,EAAQ,GAzEQ,CA0B7B,SAASE,IACP,GAAyB,MAArBpgD,EAAGtK,eAAwB,CAC7B,IAAIuxC,EAAW99C,EAAGosC,oBACd+qB,EAAS,KAAYrZ,EAAWjnC,EAAGpK,MAAQ,IAC/CoK,EAAGpK,MAAQ,IACXoK,EAAGpK,MAAQ0qD,EACX9uC,EAAM4sC,UAAYnX,EAAW,GAAK,IAClCjnC,EAAGtK,eAAiB,EAAGsK,EAAGrK,aAAe2qD,EAAOn2D,OAGhD0J,EAAQ6xB,kBAAoBv8B,EAAGmJ,IAAI9E,GACrC,CACF,CACA,SAAS0yD,IACP,GAAI1uC,EAAM8tC,oBAAsBY,IAChC1uC,EAAM8tC,oBAAqB,EAC3B9tC,EAAM1d,QAAQtC,MAAME,QAAUmuD,EAC9B7/C,EAAGxO,MAAME,QAAUkuD,EACflxD,GAAMC,EAAa,GAAKkF,EAAQy0B,WAAWJ,aAAar0B,EAAQikB,SAASyE,UAAYkS,GAGhE,MAArBzuB,EAAGtK,gBAAwB,GACxBhH,GAAOA,GAAMC,EAAa,IAAMyxD,IACrC,IAAIl2D,EAAI,EAAGkyD,EAAO,WACZvoD,EAAQ6xB,mBAAqBv8B,EAAGmJ,IAAI9E,KAA4B,GAArBwS,EAAGtK,gBAC9CsK,EAAGrK,aAAe,GAAwB,KAAnB6b,EAAM4sC,UAC/BtzD,GAAU3B,EAAIozC,GAAdzxC,CAAyB3B,GAChBe,IAAM,GACf2J,EAAQssD,mBAAqB7pD,WAAW8lD,EAAM,MAE9CvoD,EAAQ6xB,kBAAoB,KAC5B7xB,EAAQ2d,MAAMmU,QAElB,EACA9xB,EAAQssD,mBAAqB7pD,WAAW8lD,EAAM,IAChD,CACF,CAaF,EAEA+B,GAAc3pD,UAAUypD,gBAAkB,SAAU70D,GAC7CA,GAAO2M,KAAK4vB,QACjB5vB,KAAKyoD,SAAS+B,SAAkB,YAAPn3D,EACzB2M,KAAKyoD,SAAS/4B,WAAar8B,CAC7B,EAEA+0D,GAAc3pD,UAAUkd,cAAgB,WAAa,EAErDysC,GAAc3pD,UAAUid,uBAAwB,EA18DhD,SAAuBjpB,GACrB,IAAIuqD,EAAiBvqD,EAAWuqD,eAEhC,SAAShD,EAAO9mD,EAAM8D,EAAOkyC,EAAQuhB,GACnCh4D,EAAWC,SAASQ,GAAQ8D,EACxBkyC,IAAU8T,EAAe9pD,GAC3Bu3D,EAAY,SAAUr3D,EAAIC,EAAKC,GAAUA,GAAOC,IAAQ21C,EAAO91C,EAAIC,EAAKC,EAAO,EAAI41C,EACvF,CAEAz2C,EAAWU,aAAe6mD,EAG1BvnD,EAAWc,KAAOA,GAIlBymD,EAAO,QAAS,IAAI,SAAU5mD,EAAIC,GAAO,OAAOD,EAAG+4C,SAAS94C,EAAM,IAAG,GACrE2mD,EAAO,OAAQ,MAAM,SAAU5mD,EAAIC,GACjCD,EAAGmJ,IAAI8jC,WAAahtC,EACpB+sC,GAAShtC,EACX,IAAG,GAEH4mD,EAAO,aAAc,EAAG5Z,IAAU,GAClC4Z,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,UAAW,GAAG,SAAU5mD,GAC7BktC,GAAeltC,GACfyyB,GAAYzyB,GACZq3B,GAAUr3B,EACZ,IAAG,GAEH4mD,EAAO,gBAAiB,MAAM,SAAU5mD,EAAIC,GAE1C,GADAD,EAAGmJ,IAAIuvC,QAAUz4C,EACZA,EAAL,CACA,IAAIq3D,EAAY,GAAIr9C,EAASja,EAAGmJ,IAAIgQ,MACpCnZ,EAAGmJ,IAAIyQ,MAAK,SAAUpY,GACpB,IAAK,IAAIa,EAAM,IAAK,CAClB,IAAImO,EAAQhP,EAAK0R,KAAK7R,QAAQpB,EAAKoC,GACnC,IAAc,GAAVmO,EAAe,MACnBnO,EAAMmO,EAAQvQ,EAAIe,OAClBs2D,EAAUnzD,KAAKxE,GAAIsa,EAAQzJ,GAC7B,CACAyJ,GACF,IACA,IAAK,IAAIlZ,EAAIu2D,EAAUt2D,OAAS,EAAGD,GAAK,EAAGA,IACvCQ,GAAavB,EAAGmJ,IAAKlJ,EAAKq3D,EAAUv2D,GAAIpB,GAAI23D,EAAUv2D,GAAGS,KAAM81D,EAAUv2D,GAAGU,GAAKxB,EAAIe,QAZtE,CAarB,IACA4lD,EAAO,eAAgB,4HAA4H,SAAU5mD,EAAIC,EAAKC,GACpKF,EAAGM,MAAMknB,aAAe,IAAItgB,OAAOjH,EAAIqP,QAAUrP,EAAI4C,KAAK,MAAQ,GAAK,OAAQ,KAC3E3C,GAAOC,IAAQH,EAAGu3D,SACxB,IACA3Q,EAAO,yBAA0B9/B,IAA+B,SAAU9mB,GAAM,OAAOA,EAAGu3D,SAAW,IAAG,GACxG3Q,EAAO,iBAAiB,GACxBA,EAAO,aAAcrgD,EAAS,kBAAoB,YAAY,WAC5D,MAAM,IAAI8S,MAAM,0DAClB,IAAG,GACHutC,EAAO,cAAc,GAAO,SAAU5mD,EAAIC,GAAO,OAAOD,EAAGw3D,gBAAgBlJ,WAAaruD,CAAK,IAAG,GAChG2mD,EAAO,eAAe,GAAO,SAAU5mD,EAAIC,GAAO,OAAOD,EAAGw3D,gBAAgBjJ,YAActuD,CAAK,IAAG,GAClG2mD,EAAO,kBAAkB,GAAO,SAAU5mD,EAAIC,GAAO,OAAOD,EAAGw3D,gBAAgBhJ,eAAiBvuD,CAAK,IAAG,GACxG2mD,EAAO,mBAAoBlgD,GAC3BkgD,EAAO,yBAAyB,GAEhCA,EAAO,QAAS,WAAW,SAAU5mD,GACnC0pD,GAAa1pD,GACb4pC,GAAc5pC,EAChB,IAAG,GACH4mD,EAAO,SAAU,WAAW,SAAU5mD,EAAIC,EAAKC,GAC7C,IAAIyC,EAAOy8C,GAAUn/C,GACjB8C,EAAO7C,GAAOC,IAAQi/C,GAAUl/C,GAChC6C,GAAQA,EAAK00D,QAAU10D,EAAK00D,OAAOz3D,EAAI2C,GACvCA,EAAK+0D,QAAU/0D,EAAK+0D,OAAO13D,EAAI+C,GAAQ,KAC7C,IACA6jD,EAAO,YAAa,MACpBA,EAAO,iBAAkB,MAEzBA,EAAO,gBAAgB,EAAOyD,IAAiB,GAC/CzD,EAAO,UAAW,IAAI,SAAU5mD,EAAIC,GAClCD,EAAG0K,QAAQqhB,YAAcwd,GAAWtpC,EAAKD,EAAG4X,QAAQ6T,aACpDme,GAAc5pC,EAChB,IAAG,GACH4mD,EAAO,eAAe,GAAM,SAAU5mD,EAAIC,GACxCD,EAAG0K,QAAQ4iB,QAAQjlB,MAAMnF,KAAOjD,EAAMo2B,GAAqBr2B,EAAG0K,SAAW,KAAO,IAChF1K,EAAGu3D,SACL,IAAG,GACH3Q,EAAO,8BAA8B,GAAO,SAAU5mD,GAAM,OAAOshC,GAAiBthC,EAAK,IAAG,GAC5F4mD,EAAO,iBAAkB,UAAU,SAAU5mD,GAC3CkiC,GAAeliC,GACfshC,GAAiBthC,GACjBA,EAAG0K,QAAQy0B,WAAWJ,aAAa/+B,EAAGmJ,IAAIiqB,WAC1CpzB,EAAG0K,QAAQy0B,WAAWC,cAAcp/B,EAAGmJ,IAAI6pB,WAC7C,IAAG,GACH4zB,EAAO,eAAe,GAAO,SAAU5mD,EAAIC,GACzCD,EAAG0K,QAAQqhB,YAAcwd,GAAWvpC,EAAG4X,QAAQ0V,QAASrtB,GACxD2pC,GAAc5pC,EAChB,IAAG,GACH4mD,EAAO,kBAAmB,EAAGhd,IAAe,GAC5Cgd,EAAO,uBAAuB,SAAU+Q,GAAW,OAAOA,CAAS,GAAG/tB,IAAe,GACrFgd,EAAO,2BAA2B,EAAOxuB,IAAiB,GAE1DwuB,EAAO,+BAA+B,GACtCA,EAAO,mBAAmB,GAC1BA,EAAO,0BAA0B,GACjCA,EAAO,sBAAsB,GAE7BA,EAAO,YAAY,GAAO,SAAU5mD,EAAIC,GAC3B,YAAPA,IACF87B,GAAO/7B,GACPA,EAAG0K,QAAQ2d,MAAMyqC,QAEnB9yD,EAAG0K,QAAQ2d,MAAMysC,gBAAgB70D,EACnC,IAEA2mD,EAAO,oBAAqB,MAAM,SAAU5mD,EAAIC,GAC9CA,EAAe,KAARA,EAAc,KAAOA,EAC5BD,EAAG0K,QAAQ2d,MAAM4pC,yBAAyBhyD,EAC5C,IAEA2mD,EAAO,gBAAgB,GAAO,SAAU5mD,EAAIC,GAAWA,GAAOD,EAAG0K,QAAQ2d,MAAMmU,OAAU,IAAG,GAC5FoqB,EAAO,YAAY,EAAMiD,IACzBjD,EAAO,qBAAsB,MAE7BA,EAAO,kBAAmB,KAC1BA,EAAO,qBAAsB,GAC7BA,EAAO,eAAgB,EAAGxuB,IAAiB,GAC3CwuB,EAAO,6BAA6B,EAAMxuB,IAAiB,GAC3DwuB,EAAO,WAAY,KACnBA,EAAO,YAAa,KACpBA,EAAO,gBAAgB,EAAM1Z,IAAgB,GAC7C0Z,EAAO,gBAAgB,EAAO1Z,IAAgB,GAC9C0Z,EAAO,eAAgB,KACvBA,EAAO,YAAa,KAAK,SAAU5mD,EAAIC,GAAO,OAAOD,EAAGmJ,IAAI8mC,QAAQlB,UAAY9uC,CAAK,IACrF2mD,EAAO,oBAAqB,MAC5BA,EAAO,iBAAkB,IAAI,SAAU5mD,GAAM,OAAOA,EAAGu3D,SAAW,IAAG,GACrE3Q,EAAO,qBAAsB,IAAO1Z,IAAgB,GACpD0Z,EAAO,uBAAuB,GAAM,SAAU5mD,EAAIC,GAC3CA,GAAOD,EAAG0K,QAAQ2d,MAAM0sC,eAC/B,IAEAnO,EAAO,WAAY,MAAM,SAAU5mD,EAAIC,GAAO,OAAOD,EAAG0K,QAAQ2d,MAAMi9B,WAAWplB,SAAWjgC,GAAO,EAAI,IACvG2mD,EAAO,YAAa,MACpBA,EAAO,YAAa,OAAO,SAAU5mD,EAAIC,GAAO,OAAOD,EAAGmJ,IAAIqzC,aAAav8C,EAAM,IAAG,GACpF2mD,EAAO,UAAW,KACpB,CAq6DAgR,CAAcv4D,IApgDd,SAA0BA,GACxB,IAAIuqD,EAAiBvqD,EAAWuqD,eAE5BiO,EAAUx4D,EAAWw4D,QAAU,CAAC,EAEpCx4D,EAAWgM,UAAY,CACrButC,YAAav5C,EACb48B,MAAO,WAAWlxB,EAAI6B,MAAMqvB,QAASrvB,KAAKlC,QAAQ2d,MAAM4T,OAAQ,EAEhE67B,UAAW,SAASlR,EAAQn6C,GAC1B,IAAImL,EAAUhL,KAAKgL,QAAS1X,EAAM0X,EAAQgvC,GACtChvC,EAAQgvC,IAAWn6C,GAAmB,QAAVm6C,IAChChvC,EAAQgvC,GAAUn6C,EACdm9C,EAAe99C,eAAe86C,IAC9BjlD,GAAUiL,KAAMg9C,EAAehD,GAA/BjlD,CAAwCiL,KAAMH,EAAOvM,GACzD4T,GAAOlH,KAAM,eAAgBA,KAAMg6C,GACrC,EAEAhnD,UAAW,SAASgnD,GAAS,OAAOh6C,KAAKgL,QAAQgvC,EAAO,EACxDmR,OAAQ,WAAY,OAAOnrD,KAAKzD,GAAG,EAEnC1I,UAAW,SAAS+N,EAAK8hB,GACvB1jB,KAAKtM,MAAMykD,QAAQz0B,EAAS,OAAS,WAAW8uB,GAAU5wC,GAC5D,EACApO,aAAc,SAASoO,GAErB,IADA,IAAIkY,EAAO9Z,KAAKtM,MAAMykD,QACbhkD,EAAI,EAAGA,EAAI2lB,EAAK1lB,SAAUD,EAC/B,GAAI2lB,EAAK3lB,IAAMyN,GAAOkY,EAAK3lB,GAAGjB,MAAQ0O,EAEtC,OADAkY,EAAK7T,OAAO9R,EAAG,IACR,CAEb,EAEAi3D,WAAYjyB,IAAS,SAASruB,EAAME,GAClC,IAAIL,EAAOG,EAAKjT,MAAQiT,EAAOrY,EAAWsY,QAAQ/K,KAAKgL,QAASF,GAChE,GAAIH,EAAKmB,WAAc,MAAM,IAAIW,MAAM,kCAx4P7C,SAAsBrM,EAAOP,EAAOwrD,GAElC,IADA,IAAI51D,EAAM,EAAG61D,EAAWD,EAAMxrD,GACvBpK,EAAM2K,EAAMhM,QAAUi3D,EAAMjrD,EAAM3K,KAAS61D,GAAY71D,IAC9D2K,EAAM6F,OAAOxQ,EAAK,EAAGoK,EACvB,EAq4PM0rD,CAAavrD,KAAKtM,MAAMwd,SACX,CAACvG,KAAMA,EAAM6gD,SAAU1gD,EAAMsG,OAAQpG,GAAWA,EAAQoG,OACvDk6C,SAAWtgD,GAAWA,EAAQsgD,UAAa,IAC5C,SAAUr6C,GAAW,OAAOA,EAAQq6C,QAAU,IAC3DtrD,KAAKtM,MAAMkd,UACX6Z,GAAUzqB,KACZ,IACAyrD,cAAetyB,IAAS,SAASruB,GAE/B,IADA,IAAIoG,EAAWlR,KAAKtM,MAAMwd,SACjB/c,EAAI,EAAGA,EAAI+c,EAAS9c,SAAUD,EAAG,CACxC,IAAIO,EAAMwc,EAAS/c,GAAGq3D,SACtB,GAAI92D,GAAOoW,GAAuB,iBAARA,GAAoBpW,EAAIxB,MAAQ4X,EAIxD,OAHAoG,EAASjL,OAAO9R,EAAG,GACnB6L,KAAKtM,MAAMkd,eACX6Z,GAAUzqB,KAGd,CACF,IAEA5K,WAAY+jC,IAAS,SAAS15B,EAAGrI,EAAKqoD,GAClB,iBAAProD,GAAiC,iBAAPA,IAChBA,EAAR,MAAPA,EAAqB4I,KAAKgL,QAAQo2C,YAAc,QAAU,OACjDhqD,EAAM,MAAQ,YAEzBuW,GAAO3N,KAAKzD,IAAKkD,IAAMrK,GAAW4K,KAAMP,EAAGrI,EAAKqoD,EACtD,IACA9I,gBAAiBxd,IAAS,SAASqmB,GAEjC,IADA,IAAIvrD,EAAS+L,KAAKzD,IAAI9E,IAAIxD,OAAQiJ,GAAO,EAChC/I,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,IAAK,CACtC,IAAI2B,EAAQ7B,EAAOE,GACnB,GAAK2B,EAAMzB,QASAyB,EAAMtB,KAAKI,KAAOsI,IAC3B9H,GAAW4K,KAAMlK,EAAMtB,KAAKI,KAAM4qD,GAAK,GACvCtiD,EAAMpH,EAAMtB,KAAKI,KACbT,GAAK6L,KAAKzD,IAAI9E,IAAIu0B,WAAa0F,GAAoB1xB,WAZrC,CAClB,IAAIkD,EAAOpN,EAAMoN,OAAQC,EAAKrN,EAAMqN,KAChCpL,EAAQuJ,KAAKiN,IAAIrR,EAAKgG,EAAKtO,MAC/BsI,EAAMoE,KAAKC,IAAIvB,KAAK6X,WAAY1U,EAAGvO,MAAQuO,EAAGtO,GAAK,EAAI,IAAM,EAC7D,IAAK,IAAIsQ,EAAIpN,EAAOoN,EAAIjI,IAAOiI,EAC3B/P,GAAW4K,KAAMmF,EAAGq6C,GACxB,IAAInoD,EAAY2I,KAAKzD,IAAI9E,IAAIxD,OACd,GAAXiP,EAAKrO,IAAWZ,EAAOG,QAAUiD,EAAUjD,QAAUiD,EAAUlD,GAAG+O,OAAOrO,GAAK,GAC9EmwC,GAAoBhlC,KAAKzD,IAAKpI,EAAG,IAAIorC,GAAMr8B,EAAM7L,EAAUlD,GAAGgP,MAAOtC,EAC3E,CAKF,CACF,IAIA/I,WAAY,SAASrC,EAAK0c,GACxB,OAAOmB,GAAUtT,KAAMvK,EAAK0c,EAC9B,EAEAu5C,cAAe,SAAS92D,EAAMud,GAC5B,OAAOmB,GAAUtT,KAAMjN,GAAI6B,GAAOud,GAAS,EAC7C,EAEAjc,eAAgB,SAAST,GACvBA,EAAM+Y,GAAQxO,KAAKzD,IAAK9G,GACxB,IAEIC,EAFA2b,EAASI,GAAczR,KAAMsM,GAAQtM,KAAKzD,IAAK9G,EAAIb,OACnD6Q,EAAS,EAAG9K,GAAS0W,EAAOjd,OAAS,GAAK,EAAGS,EAAKY,EAAIZ,GAE1D,GAAU,GAANA,EAAWa,EAAO2b,EAAO,QACtB,OAAS,CACd,IAAIhO,EAAOoC,EAAS9K,GAAU,EAC9B,IAAK0I,EAAMgO,EAAa,EAANhO,EAAU,GAAK,IAAMxO,EAAM8F,EAAQ0I,MAChD,MAAIgO,EAAa,EAANhO,EAAU,GAAKxO,GAC1B,CAAEa,EAAO2b,EAAa,EAANhO,EAAU,GAAI,KAAM,CADJoC,EAASpC,EAAM,CACX,CAC3C,CACA,IAAIynB,EAAMp1B,EAAOA,EAAKjB,QAAQ,aAAe,EAC7C,OAAOq2B,EAAM,EAAIp1B,EAAc,GAAPo1B,EAAW,KAAOp1B,EAAKiB,MAAM,EAAGm0B,EAAM,EAChE,EAEA5zB,UAAW,SAASzB,GAClB,IAAIkV,EAAO3K,KAAKzD,IAAIoO,KACpB,OAAKA,EAAKiB,UACHnZ,EAAWmZ,UAAUjB,EAAM3K,KAAKlI,WAAWrC,GAAK/B,OAAOiX,KADhCA,CAEhC,EAEAo4C,UAAW,SAASttD,EAAKC,GACvB,OAAOsK,KAAK2rD,WAAWl2D,EAAKC,GAAM,EACpC,EAEAi2D,WAAY,SAASl2D,EAAKC,GACxB,IAAIkO,EAAQ,GACZ,IAAKqnD,EAAQ/rD,eAAexJ,GAAS,OAAOkO,EAC5C,IAAIgoD,EAAOX,EAAQv1D,GAAOiV,EAAO3K,KAAK9I,UAAUzB,GAChD,GAAyB,iBAAdkV,EAAKjV,GACVk2D,EAAKjhD,EAAKjV,KAAUkO,EAAMrM,KAAKq0D,EAAKjhD,EAAKjV,UACxC,GAAIiV,EAAKjV,GACd,IAAK,IAAIvB,EAAI,EAAGA,EAAIwW,EAAKjV,GAAMtB,OAAQD,IAAK,CAC1C,IAAId,EAAMu4D,EAAKjhD,EAAKjV,GAAMvB,IACtBd,GAAOuQ,EAAMrM,KAAKlE,EACxB,MACSsX,EAAKU,YAAcugD,EAAKjhD,EAAKU,YACtCzH,EAAMrM,KAAKq0D,EAAKjhD,EAAKU,aACZugD,EAAKjhD,EAAKzX,OACnB0Q,EAAMrM,KAAKq0D,EAAKjhD,EAAKzX,OAEvB,IAAK,IAAIwR,EAAM,EAAGA,EAAMknD,EAAKC,QAAQz3D,OAAQsQ,IAAO,CAClD,IAAIhQ,EAAMk3D,EAAKC,QAAQnnD,GACnBhQ,EAAIuO,KAAK0H,EAAM3K,QAAqC,GAA5BvL,EAAQmP,EAAOlP,EAAIrB,MAC3CuQ,EAAMrM,KAAK7C,EAAIrB,IACrB,CACA,OAAOuQ,CACT,EAEAkoD,cAAe,SAASl3D,EAAMud,GAC5B,IAAI5V,EAAMyD,KAAKzD,IAEf,OAAOoV,GAAiB3R,MADxBpL,EAAO0Z,GAAS/R,EAAa,MAAR3H,EAAe2H,EAAIgQ,MAAQhQ,EAAIiQ,KAAO,EAAG5X,IACzB,EAAGud,GAASze,KACnD,EAEA2zB,aAAc,SAAStvB,EAAO4S,GAC5B,IAAS7U,EAAQkK,KAAKzD,IAAI9E,IAAIH,UAI9B,OAAO+vB,GAAarnB,KAHP,MAATjI,EAAuBjC,EAAMtB,KACR,iBAATuD,EAA2ByW,GAAQxO,KAAKzD,IAAKxE,GAChDA,EAAQjC,EAAMoN,OAASpN,EAAMqN,KACXwH,GAAQ,OACzC,EAEAyc,WAAY,SAAS3xB,EAAKkV,GACxB,OAAOyc,GAAWpnB,KAAMwO,GAAQxO,KAAKzD,IAAK9G,GAAMkV,GAAQ,OAC1D,EAEAqd,WAAY,SAASf,EAAQtc,GAE3B,OAAOqd,GAAWhoB,MADlBinB,EAASD,GAAgBhnB,KAAMinB,EAAQtc,GAAQ,SAChBrU,KAAM2wB,EAAOtD,IAC9C,EAEApW,aAAc,SAASJ,EAAQxC,GAE7B,OADAwC,EAAS6Z,GAAgBhnB,KAAM,CAAC2jB,IAAKxW,EAAQ7W,KAAM,GAAIqU,GAAQ,QAAQgZ,IAChEpW,GAAavN,KAAKzD,IAAK4Q,EAASnN,KAAKlC,QAAQ+oB,WACtD,EACA5O,aAAc,SAASrjB,EAAM+V,EAAMgc,GACjC,IAAiBzO,EAAbhb,GAAM,EACV,GAAmB,iBAARtI,EAAkB,CAC3B,IAAI6Z,EAAOzO,KAAKzD,IAAIgQ,MAAQvM,KAAKzD,IAAIiQ,KAAO,EACxC5X,EAAOoL,KAAKzD,IAAIgQ,MAAS3X,EAAOoL,KAAKzD,IAAIgQ,MACpC3X,EAAO6Z,IAAQ7Z,EAAO6Z,EAAMvR,GAAM,GAC3Cgb,EAAU5L,GAAQtM,KAAKzD,IAAK3H,EAC9B,MACEsjB,EAAUtjB,EAEZ,OAAO8xB,GAAgB1mB,KAAMkY,EAAS,CAACyL,IAAK,EAAGrtB,KAAM,GAAIqU,GAAQ,OAAQgc,GAAkBzpB,GAAKymB,KAC7FzmB,EAAM8C,KAAKzD,IAAI4Q,OAAS8K,GAAaC,GAAW,EACrD,EAEA6zC,kBAAmB,WAAa,OAAOziC,GAAWtpB,KAAKlC,QAAS,EAChE0uB,iBAAkB,WAAa,OAAO1H,GAAU9kB,KAAKlC,QAAS,EAE9DkuD,YAAa,WAAa,MAAO,CAAC9oD,KAAMlD,KAAKlC,QAAQ8U,SAAUzP,GAAInD,KAAKlC,QAAQ+U,OAAO,EAEvFo5C,UAAW,SAASx2D,EAAK+E,EAAMsG,EAAQsyB,EAAMC,GAC3C,IAv3JkBjgC,EAAI2vB,EACtB2V,EAs3JI56B,EAAUkC,KAAKlC,QAEf6lB,GADJluB,EAAM4xB,GAAarnB,KAAMwO,GAAQxO,KAAKzD,IAAK9G,KAC7BiuB,OAAQptB,EAAOb,EAAIa,KAKjC,GAJAkE,EAAKiB,MAAM6kB,SAAW,WACtB9lB,EAAKsB,aAAa,mBAAoB,QACtCkE,KAAKlC,QAAQ2d,MAAME,cAAcnhB,GACjCsD,EAAQgjB,MAAMzlB,YAAYb,GACd,QAAR44B,EACFzP,EAAMluB,EAAIkuB,SACL,GAAY,SAARyP,GAA2B,QAARA,EAAgB,CAC5C,IAAI84B,EAAS5qD,KAAKiN,IAAIzQ,EAAQC,QAAQmkB,aAAcliB,KAAKzD,IAAI4Q,QAC7Dg/C,EAAS7qD,KAAKiN,IAAIzQ,EAAQgjB,MAAMH,YAAa7iB,EAAQmjB,UAAUN,cAElD,SAARyS,GAAmB39B,EAAIiuB,OAASlpB,EAAK0O,aAAegjD,IAAWz2D,EAAIkuB,IAAMnpB,EAAK0O,aAC/Eya,EAAMluB,EAAIkuB,IAAMnpB,EAAK0O,aAChBzT,EAAIiuB,OAASlpB,EAAK0O,cAAgBgjD,IACvCvoC,EAAMluB,EAAIiuB,QACVptB,EAAOkE,EAAK2O,YAAcgjD,IAC1B71D,EAAO61D,EAAS3xD,EAAK2O,YAC3B,CACA3O,EAAKiB,MAAMkoB,IAAMA,EAAM,KACvBnpB,EAAKiB,MAAMnF,KAAOkE,EAAKiB,MAAMlF,MAAQ,GACxB,SAAT88B,GACF/8B,EAAOwH,EAAQgjB,MAAMH,YAAcnmB,EAAK2O,YACxC3O,EAAKiB,MAAMlF,MAAQ,QAEN,QAAT88B,EAAmB/8B,EAAO,EACZ,UAAT+8B,IAAqB/8B,GAAQwH,EAAQgjB,MAAMH,YAAcnmB,EAAK2O,aAAe,GACtF3O,EAAKiB,MAAMnF,KAAOA,EAAO,MAEvBwK,IAr5Jc1N,EAs5JC4M,KAt5JG+iB,EAs5JG,CAACzsB,KAAMA,EAAMqtB,IAAKA,EAAKptB,MAAOD,EAAOkE,EAAK2O,YAAaua,OAAQC,EAAMnpB,EAAK0O,cAp5J5E,OADvBwvB,EAAY7H,GAAmBz9B,EAAI2vB,IACzByD,WAAqByL,GAAgB7+B,EAAIslC,EAAUlS,WACrC,MAAxBkS,EAAUtS,YAAsBoM,GAAcp/B,EAAIslC,EAAUtS,YAo5J9D,EAEAogC,iBAAkBrtB,GAASsf,IAC3B2T,kBAAmBjzB,GAAS4f,IAC5BsT,eAAgBvT,GAChBwT,mBAAoBnzB,GAASkgB,IAE7BnC,YAAa,SAAShF,GACpB,GAAIgC,GAASh1C,eAAegzC,GACxB,OAAOgC,GAAShC,GAAKxzC,KAAK,KAAMsB,KACtC,EAEAlJ,gBAAiBqiC,IAAS,SAAS7yB,GAAQxP,GAAgBkJ,KAAMsG,EAAO,IAExEy7C,SAAU,SAAS7+C,EAAMqpD,EAAQtS,EAAMtG,GACrC,IAAIv8C,EAAM,EACNm1D,EAAS,IAAKn1D,GAAO,EAAGm1D,GAAUA,GAEtC,IADA,IAAI73D,EAAM8Z,GAAQxO,KAAKzD,IAAK2G,GACnB/O,EAAI,EAAGA,EAAIo4D,KAClB73D,EAAMqtD,GAAS/hD,KAAKzD,IAAK7H,EAAK0C,EAAK6iD,EAAMtG,IACjCqP,UAFoB7uD,GAI9B,OAAOO,CACT,EAEAihD,MAAOxc,IAAS,SAAS/hC,EAAK6iD,GAC5B,IAAI9P,EAASnqC,KAEbA,KAAKysC,oBAAmB,SAAU32C,GAChC,OAAIq0C,EAAOrsC,QAAQgyB,OAASqa,EAAO5tC,IAAIy+B,QAAUllC,EAAMzB,QAC5C0tD,GAAS5X,EAAO5tC,IAAKzG,EAAMtB,KAAM4C,EAAK6iD,EAAM9P,EAAOn/B,QAAQwhD,iBAE3Dp1D,EAAM,EAAItB,EAAMoN,OAASpN,EAAMqN,IAC5C,GAAGlC,EACL,IAEAm1C,QAASjd,IAAS,SAAS/hC,EAAK6iD,GAC9B,IAAIxiD,EAAMuI,KAAKzD,IAAI9E,IAAK8E,EAAMyD,KAAKzD,IAC/B9E,EAAI+nC,oBACJjjC,EAAIrH,iBAAiB,GAAI,KAAM,WAE/Bi+C,GAAoBnzC,MAAM,SAAUlK,GACpC,IAAI6xB,EAAQo6B,GAASxlD,EAAKzG,EAAMtB,KAAM4C,EAAK6iD,GAAM,GACjD,OAAO7iD,EAAM,EAAI,CAAC8L,KAAMykB,EAAOxkB,GAAIrN,EAAMtB,MAAQ,CAAC0O,KAAMpN,EAAMtB,KAAM2O,GAAIwkB,EAC1E,GACJ,IAEAs7B,SAAU,SAAS//C,EAAMqpD,EAAQtS,EAAMwS,GACrC,IAAIr1D,EAAM,EAAG+W,EAAIs+C,EACbF,EAAS,IAAKn1D,GAAO,EAAGm1D,GAAUA,GAEtC,IADA,IAAI73D,EAAM8Z,GAAQxO,KAAKzD,IAAK2G,GACnB/O,EAAI,EAAGA,EAAIo4D,IAAUp4D,EAAG,CAC/B,IAAI8yB,EAASI,GAAarnB,KAAMtL,EAAK,OAIrC,GAHS,MAALyZ,EAAaA,EAAI8Y,EAAO3wB,KACrB2wB,EAAO3wB,KAAO6X,GACrBzZ,EAAMuuD,GAASjjD,KAAMinB,EAAQ7vB,EAAK6iD,IAC1B+I,QAAW,KACrB,CACA,OAAOtuD,CACT,EAEA4gD,MAAOnc,IAAS,SAAS/hC,EAAK6iD,GAC5B,IAAI9P,EAASnqC,KAETzD,EAAMyD,KAAKzD,IAAKmwD,EAAQ,GACxBjvD,GAAYuC,KAAKlC,QAAQgyB,QAAUvzB,EAAIy+B,QAAUz+B,EAAI9E,IAAI+nC,oBAY7D,GAXAjjC,EAAIkwC,oBAAmB,SAAU32C,GAC/B,GAAI2H,EACA,OAAOrG,EAAM,EAAItB,EAAMoN,OAASpN,EAAMqN,KAC1C,IAAI8lD,EAAU5hC,GAAa8iB,EAAQr0C,EAAMtB,KAAM,OACvB,MAApBsB,EAAM22D,aAAsBxD,EAAQ3yD,KAAOR,EAAM22D,YACrDC,EAAMn1D,KAAK0xD,EAAQ3yD,MACnB,IAAIb,EAAMwtD,GAAS9Y,EAAQ8e,EAAS7xD,EAAK6iD,GAGzC,MAFY,QAARA,GAAkBnkD,GAASyG,EAAI9E,IAAIH,WACnCk6B,GAAe2Y,EAAQ/iB,GAAW+iB,EAAQ10C,EAAK,OAAOkuB,IAAMslC,EAAQtlC,KACjEluB,CACT,GAAGwL,GACCyrD,EAAMt4D,OAAU,IAAK,IAAID,EAAI,EAAGA,EAAIoI,EAAI9E,IAAIxD,OAAOG,OAAQD,IAC3DoI,EAAI9E,IAAIxD,OAAOE,GAAGs4D,WAAaC,EAAMv4D,EAC3C,IAGAkoD,WAAY,SAAS5mD,GACnB,IAAoBb,EAAO0X,GAAjBtM,KAAKzD,IAAyB9G,EAAIb,MAAM0R,KAC9CvO,EAAQtC,EAAIZ,GAAIqI,EAAMzH,EAAIZ,GAC9B,GAAID,EAAM,CACR,IAAI6N,EAASzC,KAAK+iD,UAAUttD,EAAK,aACd,UAAdA,EAAIkO,QAAsBzG,GAAOtI,EAAKR,SAAW2D,IAA6BmF,IAAlBnF,EAMjE,IALA,IAAI40D,EAAY/3D,EAAKU,OAAOyC,GACxB60D,EAAQx2D,GAAWu2D,EAAWlqD,GAC9B,SAAU5N,GAAM,OAAOuB,GAAWvB,EAAI4N,EAAS,EAC/C,KAAKxM,KAAK02D,GAAa,SAAU93D,GAAM,MAAO,KAAKoB,KAAKpB,EAAK,EAC7D,SAAUA,GAAM,OAAS,KAAKoB,KAAKpB,KAAQuB,GAAWvB,EAAM,EACzDkD,EAAQ,GAAK60D,EAAMh4D,EAAKU,OAAOyC,EAAQ,OAASA,EACvD,KAAOmF,EAAMtI,EAAKR,QAAUw4D,EAAMh4D,EAAKU,OAAO4H,OAAWA,CAC3D,CACA,OAAO,IAAIqiC,GAAMxsC,GAAI0C,EAAIb,KAAMmD,GAAQhF,GAAI0C,EAAIb,KAAMsI,GACvD,EAEAo6C,gBAAiB,SAASz3C,GACX,MAATA,GAAiBA,GAASG,KAAKtM,MAAMsL,aACrCgB,KAAKtM,MAAMsL,WAAagB,KAAKtM,MAAMsL,WACnCrC,EAASqD,KAAKlC,QAAQgxB,UAAW,wBAEjCv0B,EAAQyF,KAAKlC,QAAQgxB,UAAW,wBAEpC5nB,GAAOlH,KAAM,kBAAmBA,KAAMA,KAAKtM,MAAMsL,WACnD,EACAkwB,SAAU,WAAa,OAAOlvB,KAAKlC,QAAQ2d,MAAMi9B,YAAct8C,EAAU4B,EAAKgC,MAAO,EACrFmwC,WAAY,WAAa,SAAUnwC,KAAKgL,QAAQ0kB,WAAY1vB,KAAKzD,IAAIgqC,SAAU,EAE/E2jB,SAAU/wB,IAAS,SAAUhrB,EAAG8Z,GAAK6J,GAAe9xB,KAAMmO,EAAG8Z,EAAI,IACjE4kC,cAAe,WACb,IAAI9qC,EAAW/hB,KAAKlC,QAAQikB,SAC5B,MAAO,CAACzrB,KAAMyrB,EAASqE,WAAYzC,IAAK5B,EAASyE,UACzCrZ,OAAQ4U,EAASuQ,aAAe1Q,GAAU5hB,MAAQA,KAAKlC,QAAQqkB,UAC/DjC,MAAO6B,EAAS2Q,YAAc9Q,GAAU5hB,MAAQA,KAAKlC,QAAQkkB,SAC7DE,aAAcD,GAAcjiB,MAAO2gB,YAAamB,GAAa9hB,MACvE,EAEAq4B,eAAgBc,IAAS,SAASrjC,EAAO87B,GAC1B,MAAT97B,GACFA,EAAQ,CAACoN,KAAMlD,KAAKzD,IAAI9E,IAAIH,UAAU9C,KAAM2O,GAAI,MAClC,MAAVyuB,IAAkBA,EAAS5xB,KAAKgL,QAAQ6mB,qBACnB,iBAAT/7B,EAChBA,EAAQ,CAACoN,KAAMnQ,GAAI+C,EAAO,GAAIqN,GAAI,MACX,MAAdrN,EAAMoN,OACfpN,EAAQ,CAACoN,KAAMpN,EAAOqN,GAAI,OAEvBrN,EAAMqN,KAAMrN,EAAMqN,GAAKrN,EAAMoN,MAClCpN,EAAM87B,OAASA,GAAU,EAEF,MAAnB97B,EAAMoN,KAAKtO,KA99JrB,SAAuBxB,EAAI0C,GACzB27B,GAAmBr+B,GACnBA,EAAGuU,MAAMgqB,YAAc77B,CACzB,CA49JQg3D,CAAc9sD,KAAMlK,GAEpBi8B,GAAoB/xB,KAAMlK,EAAMoN,KAAMpN,EAAMqN,GAAIrN,EAAM87B,OAE1D,IAEAggB,QAASzY,IAAS,SAASjZ,EAAO/S,GAChC,IAAIg9B,EAASnqC,KAET+sD,EAAY,SAAU15D,GAAO,MAAqB,iBAAPA,GAAmB,QAAQ4C,KAAK4X,OAAOxa,IAAQA,EAAM,KAAOA,CAAK,EACnG,MAAT6sB,IAAiBlgB,KAAKlC,QAAQC,QAAQtC,MAAMykB,MAAQ6sC,EAAU7sC,IACpD,MAAV/S,IAAkBnN,KAAKlC,QAAQC,QAAQtC,MAAM0R,OAAS4/C,EAAU5/C,IAChEnN,KAAKgL,QAAQoY,cAAgBuC,GAA0B3lB,MAC3D,IAAIqN,EAASrN,KAAKlC,QAAQ8U,SAC1B5S,KAAKzD,IAAIyQ,KAAKK,EAAQrN,KAAKlC,QAAQ+U,QAAQ,SAAUje,GACnD,GAAIA,EAAKgrB,QAAW,IAAK,IAAIzrB,EAAI,EAAGA,EAAIS,EAAKgrB,QAAQxrB,OAAQD,IACzD,GAAIS,EAAKgrB,QAAQzrB,GAAG8rB,UAAW,CAAEkL,GAAcgf,EAAQ98B,EAAQ,UAAW,KAAM,GAClFA,CACJ,IACArN,KAAK2H,MAAMib,aAAc,EACzB1b,GAAOlH,KAAM,UAAWA,KAC1B,IAEAjL,UAAW,SAASuJ,GAAG,OAAO46B,GAAQl5B,KAAM1B,EAAE,EAC9Co3B,eAAgB,WAAW,OAAOA,GAAe11B,KAAK,EACtDq2B,aAAc,WAAW,OAAOA,GAAar2B,KAAK,EAElD2qD,QAASxxB,IAAS,WAChB,IAAIhJ,EAAYnwB,KAAKlC,QAAQioB,iBAC7B0E,GAAUzqB,MACVA,KAAK2H,MAAMib,aAAc,EACzBiD,GAAY7lB,MACZ8xB,GAAe9xB,KAAMA,KAAKzD,IAAI6pB,WAAYpmB,KAAKzD,IAAIiqB,WACnD2V,GAAkBn8B,KAAKlC,UACN,MAAbqyB,GAAqB7uB,KAAKmiB,IAAI0M,EAAY7G,GAAWtpB,KAAKlC,UAAY,IAAMkC,KAAKgL,QAAQoY,eACzFyG,GAAoB7pB,MACxBkH,GAAOlH,KAAM,UAAWA,KAC1B,IAEAgtD,QAAS7zB,IAAS,SAAS58B,GACzB,IAAIjJ,EAAM0M,KAAKzD,IAUf,OATAjJ,EAAIF,GAAK,KAEL4M,KAAKtM,MAAMkmD,eAAiB55C,KAAKtM,MAAMkmD,gBAC3C9X,GAAU9hC,KAAMzD,GAChBspB,GAAY7lB,MACZA,KAAKlC,QAAQ2d,MAAMmU,QACnBkC,GAAe9xB,KAAMzD,EAAI6pB,WAAY7pB,EAAIiqB,WACzCxmB,KAAK2H,MAAM0qB,aAAc,EACzBvV,GAAY9c,KAAM,UAAWA,KAAM1M,GAC5BA,CACT,IAEA25D,OAAQ,SAASC,GACf,IAAIC,EAAUntD,KAAKgL,QAAQmiD,QAC3B,OAAOA,GAAWhrD,OAAO1D,UAAUS,eAAeR,KAAKyuD,EAASD,GAAcC,EAAQD,GAAcA,CACtG,EAEAtC,cAAe,WAAW,OAAO5qD,KAAKlC,QAAQ2d,MAAMi9B,UAAU,EAC9DpsB,kBAAmB,WAAW,OAAOtsB,KAAKlC,QAAQC,OAAO,EACzDqvD,mBAAoB,WAAW,OAAOptD,KAAKlC,QAAQikB,QAAQ,EAC3DsrC,iBAAkB,WAAW,OAAOrtD,KAAKlC,QAAQ4iB,OAAO,GAE1D5Y,GAAWrV,GAEXA,EAAW66D,eAAiB,SAAS53D,EAAMxC,EAAM2M,GAC1CorD,EAAQ/rD,eAAexJ,KAASu1D,EAAQv1D,GAAQjD,EAAWiD,GAAQ,CAACm2D,QAAS,KAClFZ,EAAQv1D,GAAMxC,GAAQ2M,CACxB,EACApN,EAAW86D,qBAAuB,SAAS73D,EAAMxC,EAAMs6D,EAAW3tD,GAChEpN,EAAW66D,eAAe53D,EAAMxC,EAAM2M,GACtCorD,EAAQv1D,GAAMm2D,QAAQt0D,KAAK,CAAC0L,KAAMuqD,EAAWn6D,IAAKwM,GACpD,CACF,CAylCA4tD,CAAiBh7D,IAGjB,IAAIi7D,GAAe,gDAAgD1wD,MAAM,KACzE,IAAK,IAAIiC,MAAQ4sC,GAAIptC,UAAiBotC,GAAIptC,UAAUS,eAAeD,KAASxK,EAAQi5D,GAAczuD,IAAQ,IACtGxM,GAAWgM,UAAUQ,IAAQ,SAAU0uD,GACvC,OAAO,WAAY,OAAOA,EAAO/uD,MAAMoB,KAAKzD,IAAKoC,UAAU,CAC5D,CAF8B,CAE5BktC,GAAIptC,UAAUQ,MAkCnB,OAhCA6I,GAAW+jC,IACXp5C,GAAWirD,YAAc,CAAC,SAAY0K,GAAe,gBAAmBhF,IAKxE3wD,GAAWiY,WAAa,SAASxX,GAC1BT,GAAWC,SAASiY,MAAgB,QAARzX,IAAkBT,GAAWC,SAASiY,KAAOzX,GAC9EwX,GAAW9L,MAAMoB,KAAMrB,UACzB,EAEAlM,GAAWm7D,WAp6RX,SAAoBC,EAAM/iD,GACxBL,GAAUojD,GAAQ/iD,CACpB,EAq6RArY,GAAWiY,WAAW,QAAQ,WAAc,MAAO,CAAE7S,MAAO,SAAUmb,GAAU,OAAOA,EAAO5D,WAAa,EAAK,IAChH3c,GAAWm7D,WAAW,aAAc,QAIpCn7D,GAAWq7D,gBAAkB,SAAU56D,EAAM66D,GAC3Ct7D,GAAWgM,UAAUvL,GAAQ66D,CAC/B,EACAt7D,GAAWu7D,mBAAqB,SAAU96D,EAAM66D,GAC9CliB,GAAIptC,UAAUvL,GAAQ66D,CACxB,EAEAt7D,GAAWw7D,aA5IX,SAAsBxF,EAAUz9C,GAS9B,IARAA,EAAUA,EAAUnM,EAAQmM,GAAW,CAAC,GAChCnL,MAAQ4oD,EAAS5oD,OACpBmL,EAAQkjD,UAAYzF,EAASn1B,WAC9BtoB,EAAQkjD,SAAWzF,EAASn1B,WAC3BtoB,EAAQmjD,aAAe1F,EAAS0F,cACjCnjD,EAAQmjD,YAAc1F,EAAS0F,aAGV,MAArBnjD,EAAQ8yC,UAAmB,CAC7B,IAAI5uB,EAAW9yB,EAAUC,EAASosD,IAClCz9C,EAAQ8yC,UAAY5uB,GAAYu5B,GACQ,MAAtCA,EAAS5nC,aAAa,cAAwBqO,GAAYr2B,SAAS4D,IACvE,CAEA,SAASsV,IAAQ02C,EAAS5oD,MAAQzM,EAAG64C,UAAW,CAEhD,IAAImiB,EACJ,GAAI3F,EAAS4F,OACX7nD,GAAGiiD,EAAS4F,KAAM,SAAUt8C,IAEvB/G,EAAQsjD,wBAAwB,CACnC,IAAID,EAAO5F,EAAS4F,KACpBD,EAAaC,EAAKE,OAClB,IACE,IAAIC,EAAgBH,EAAKE,OAAS,WAChCx8C,IACAs8C,EAAKE,OAASH,EACdC,EAAKE,SACLF,EAAKE,OAASC,CAChB,CACF,CAAE,MAAM1zD,GAAI,CACd,CAGFkQ,EAAQq0C,WAAa,SAAUjsD,GAC7BA,EAAG2e,KAAOA,EACV3e,EAAGq7D,YAAc,WAAc,OAAOhG,CAAU,EAChDr1D,EAAGs7D,WAAa,WACdt7D,EAAGs7D,WAAa/sC,MAChB5P,IACA02C,EAASvsD,WAAWjB,YAAY7H,EAAGk5B,qBACnCm8B,EAAShtD,MAAMqC,QAAU,GACrB2qD,EAAS4F,OACXtnD,GAAI0hD,EAAS4F,KAAM,SAAUt8C,GACxB/G,EAAQsjD,wBAAyD,mBAAxB7F,EAAS4F,KAAKE,SACxD9F,EAAS4F,KAAKE,OAASH,GAE/B,CACF,EAEA3F,EAAShtD,MAAMqC,QAAU,OACzB,IAAI1K,EAAKX,IAAW,SAAU+H,GAAQ,OAAOiuD,EAASvsD,WAAWgiB,aAAa1jB,EAAMiuD,EAASlpC,YAAc,GACzGvU,GACF,OAAO5X,CACT,EAEA,SAAwBX,GACtBA,EAAWsU,IAAMA,GACjBtU,EAAW+T,GAAKA,GAChB/T,EAAW0rC,iBAAmBA,GAC9B1rC,EAAWo5C,IAAMA,GACjBp5C,EAAWk2C,WAAal/B,GACxBhX,EAAW0M,YAAcA,EACzB1M,EAAWyO,WAAaA,EACxBzO,EAAW2D,WAAakM,GACxB7P,EAAWuB,KAAOA,EAClBvB,EAAWyU,OAASA,GACpBzU,EAAWkmB,KAAOA,GAClBlmB,EAAWutC,UAAYA,GACvBvtC,EAAW4iC,eAAiBA,GAC5B5iC,EAAWM,IAAMA,GACjBN,EAAWkF,OAASqW,GACpBvb,EAAW+X,MAAQA,GACnB/X,EAAWgY,UAAYA,GACvBhY,EAAWoY,YAAcA,GACzBpY,EAAWsY,QAAUA,GACrBtY,EAAW0Y,eAAiBA,GAC5B1Y,EAAW+Y,WAAaA,GACxB/Y,EAAWiZ,UAAYA,GACvBjZ,EAAWqZ,WAAaA,GACxBrZ,EAAWmZ,UAAYA,GACvBnZ,EAAWyhD,SAAWA,GACtBzhD,EAAWgB,OAASA,GACpBhB,EAAWwgD,QAAUA,GACrBxgD,EAAWigD,cAAgBA,GAC3BjgD,EAAW8/C,UAAYA,GACvB9/C,EAAW0/C,gBAAkBA,GAC7B1/C,EAAWwZ,aAAeA,GAC1BxZ,EAAWi4C,iBAAmBA,GAC9Bj4C,EAAW63C,WAAaA,GACxB73C,EAAWu3C,WAAaA,GACxBv3C,EAAWuV,iBAAmBA,GAC9BvV,EAAWyV,kBAAoBA,GAC/BzV,EAAW4V,OAASA,GACpB5V,EAAWkK,SAAWA,EACtBlK,EAAWsJ,SAAWA,EACtBtJ,EAAW8H,QAAUA,EACrB9H,EAAWo/C,SAAWA,EACxB,CA2CA8c,CAAel8D,IAEfA,GAAWm8D,QAAU,UAEdn8D,EAER,CAjpTiFo8D,E,kBCA/E,SAASp8D,GACZ,aAuZE,SAASq8D,EAAO1uD,GAEd,IADA,IAAIkyC,EAAO,CAAC,EACHn+C,EAAI,EAAGA,EAAIiM,EAAMhM,SAAUD,EAClCm+C,EAAKlyC,EAAMjM,GAAGqO,gBAAiB,EAEjC,OAAO8vC,CACT,CA3ZF7/C,EAAWiY,WAAW,OAAO,SAASqkD,EAAQC,GAC5C,IAAIC,EAASD,EAAaC,OACrBD,EAAaE,mBAAkBF,EAAev8D,EAAWoY,YAAY,aAE1E,IAiBInV,EAAMuB,EAjBN4oD,EAAakP,EAAOlP,WACpBsP,EAAaH,EAAaG,WAC1BC,EAAgBJ,EAAaI,eAAiB,CAAC,EAC/CC,EAAaL,EAAaK,YAAc,CAAC,EACzCC,EAAgBN,EAAaM,eAAiB,CAAC,EAC/CC,EAAqBP,EAAaO,oBAAsB,CAAC,EACzDL,EAAmBF,EAAaE,kBAAoB,CAAC,EACrDM,EAA8BR,EAAaQ,6BAA+B,CAAC,EAC3EC,EAAiBT,EAAaS,gBAAkB,CAAC,EACjDC,EAAqBV,EAAaU,oBAAsB,CAAC,EACzDC,EAAgBX,EAAaW,eAAiB,CAAC,EAC/CC,EAAgBZ,EAAaY,eAAiB,CAAC,EAC/CC,EAAcb,EAAaa,YAC3BC,EAAcd,EAAac,YAC3BC,GAA2D,IAArCf,EAAae,oBACnCC,GAAuF,IAAhDjB,EAAOiB,qCAGlD,SAASC,EAAIx0D,EAAOy0D,GAAiB,OAAXx6D,EAAOw6D,EAAWz0D,CAAO,CAInD,SAAS00D,EAAUn9C,EAAQtf,GACzB,IAAImB,EAAKme,EAAOjd,OAChB,GAAIo5D,EAAWt6D,GAAK,CAClB,IAAI6U,EAASylD,EAAWt6D,GAAIme,EAAQtf,GACpC,IAAe,IAAXgW,EAAkB,OAAOA,CAC/B,CACA,MAAU,KAAN7U,GACFme,EAAO9D,SAAS,YACT+gD,EAAI,MAAOj9C,EAAOvY,YACV,KAAN5F,IAAoB,KAANA,GAAmB,KAANA,IAAcme,EAAO/D,IAAI,KACtDghD,EAAI,KAAM,WACF,KAANp7D,GAAoB,KAANA,GACvBnB,EAAM08D,SAAWC,EAAYx7D,GACtBnB,EAAM08D,SAASp9C,EAAQtf,IACf,KAANmB,GACTme,EAAO9D,SAAS,YACT+gD,EAAI,OAAQ,SACJ,KAANp7D,GACTme,EAAOhZ,MAAM,WACNi2D,EAAI,UAAW,cACb,KAAKh6D,KAAKpB,IAAa,KAANA,GAAame,EAAO/D,IAAI,OAClD+D,EAAO9D,SAAS,UACT+gD,EAAI,SAAU,SACL,MAAPp7D,EAYA,WAAWoB,KAAKpB,GAClBo7D,EAAI,KAAM,aACF,KAANp7D,GAAame,EAAOhZ,MAAM,yBAC5Bi2D,EAAI,YAAa,aACf,iBAAiBh6D,KAAKpB,GACxBo7D,EAAI,KAAMp7D,GACRme,EAAOhZ,MAAM,mBAClB,mCAAmC/D,KAAK+c,EAAOvY,aACjD/G,EAAM08D,SAAWE,GAEZL,EAAI,kBAAmB,aACrB,WAAWh6D,KAAKpB,IACzBme,EAAO9D,SAAS,YACT+gD,EAAI,WAAY,SAEhBA,EAAI,KAAM,MA1Bb,QAAQh6D,KAAK+c,EAAOjE,SACtBiE,EAAO9D,SAAS,UACT+gD,EAAI,SAAU,SACZj9C,EAAOhZ,MAAM,gBACtBgZ,EAAO9D,SAAS,YACZ8D,EAAOhZ,MAAM,SAAS,GACjBi2D,EAAI,aAAc,uBACpBA,EAAI,aAAc,aAChBj9C,EAAOhZ,MAAM,SACfi2D,EAAI,OAAQ,aADd,CAoBX,CAEA,SAASI,EAAYE,GACnB,OAAO,SAASv9C,EAAQtf,GAEtB,IADA,IAAqBmB,EAAjB27D,GAAU,EACiB,OAAvB37D,EAAKme,EAAOjd,SAAiB,CACnC,GAAIlB,GAAM07D,IAAUC,EAAS,CACd,KAATD,GAAcv9C,EAAO1D,OAAO,GAChC,KACF,CACAkhD,GAAWA,GAAiB,MAAN37D,CACxB,CAEA,OADIA,GAAM07D,IAAUC,GAAoB,KAATD,KAAc78D,EAAM08D,SAAW,MACvDH,EAAI,SAAU,SACvB,CACF,CAEA,SAASK,EAAmBt9C,EAAQtf,GAMlC,OALAsf,EAAOjd,OACFid,EAAOhZ,MAAM,eAAe,GAG/BtG,EAAM08D,SAAW,KAFjB18D,EAAM08D,SAAWC,EAAY,KAGxBJ,EAAI,KAAM,IACnB,CAIA,SAAS7/C,EAAQ1a,EAAMgqD,EAAQvpD,GAC7B6J,KAAKtK,KAAOA,EACZsK,KAAK0/C,OAASA,EACd1/C,KAAK7J,KAAOA,CACd,CAEA,SAASs6D,EAAY/8D,EAAOsf,EAAQtd,EAAMgqD,GAExC,OADAhsD,EAAM+c,QAAU,IAAIL,EAAQ1a,EAAMsd,EAAOxD,gBAA4B,IAAXkwC,EAAmB,EAAIG,GAAansD,EAAM+c,SAC7F/a,CACT,CAEA,SAASg7D,EAAWh9D,GAGlB,OAFIA,EAAM+c,QAAQta,OAChBzC,EAAM+c,QAAU/c,EAAM+c,QAAQta,MACzBzC,EAAM+c,QAAQ/a,IACvB,CAEA,SAASi7D,EAAKj7D,EAAMsd,EAAQtf,GAC1B,OAAOk9D,EAAOl9D,EAAM+c,QAAQ/a,MAAMA,EAAMsd,EAAQtf,EAClD,CACA,SAASm9D,EAAWn7D,EAAMsd,EAAQtf,EAAO+L,GACvC,IAAK,IAAItL,EAAIsL,GAAK,EAAGtL,EAAI,EAAGA,IAC1BT,EAAM+c,QAAU/c,EAAM+c,QAAQta,KAChC,OAAOw6D,EAAKj7D,EAAMsd,EAAQtf,EAC5B,CAIA,SAASo9D,EAAY99C,GACnB,IAAI+qC,EAAO/qC,EAAOvY,UAAU+H,cAE1BvL,EADE24D,EAAc1wD,eAAe6+C,GACpB,OACJ4R,EAAczwD,eAAe6+C,GACzB,UAEA,UACf,CAEA,IAAI6S,EAAS,CAEbA,IAAa,SAASl7D,EAAMsd,EAAQtf,GAClC,GAAY,KAARgC,EACF,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,SAC7B,GAAY,KAARtd,GAAehC,EAAM+c,QAAQta,KACtC,OAAOu6D,EAAWh9D,GACb,GAAIq8D,GAAuB,cAAc95D,KAAKP,GACnD,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,oBAC7B,GAAI,uBAAuB/c,KAAKP,GACrC,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,iBAC7B,GAAI,+CAA+C/c,KAAKP,GAC7D,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,WAC7B,GAAI,+BAA+B/c,KAAKP,GAE7C,OADAhC,EAAMq9D,SAAWr7D,EACV,4BACF,GAAI,sCAAsCO,KAAKP,GACpD,MAAO,YACF,GAAIA,GAA0B,KAAlBA,EAAKJ,OAAO,GAC7B,OAAOm7D,EAAY/8D,EAAOsf,EAAQ,MAC7B,GAAY,QAARtd,EACTuB,EAAW,eACN,GAAY,QAARvB,EACTuB,EAAW,UACN,IAAY,uBAARvB,EACT,MAAO,YACF,GAAY,iBAARA,EACT,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,iBAC7B,GAAY,KAARtd,EACT,MAAO,SACF,GAAIm6D,GAAuB,KAARn6D,EACxB,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,SACpC,CACA,OAAOtf,EAAM+c,QAAQ/a,IACvB,EAEAk7D,MAAe,SAASl7D,EAAMsd,EAAQtf,GACpC,GAAY,QAARgC,EAAgB,CAClB,IAAIqoD,EAAO/qC,EAAOvY,UAAU+H,cAC5B,OAAI0sD,EAAiBhwD,eAAe6+C,IAClC9mD,EAAW,WACJ,aACEu4D,EAA4BtwD,eAAe6+C,IACpD9mD,EAAW+4D,EAAuC,WAAa,WACxD,aACEH,GACT54D,EAAW+b,EAAOhZ,MAAM,iBAAiB,GAAS,WAAa,MACxD,UAEP/C,GAAY,SACL,YAEX,CAAO,MAAY,QAARvB,EACF,QACGm6D,GAAwB,QAARn6D,GAA0B,aAARA,EAIrCk7D,EAAOjtC,IAAIjuB,EAAMsd,EAAQtf,IAHhCuD,EAAW,QACJ,QAIX,EAEA25D,UAAmB,SAASl7D,EAAMsd,EAAQtf,GACxC,MAAY,KAARgC,EAAoB+6D,EAAY/8D,EAAOsf,EAAQ,QAC5C29C,EAAKj7D,EAAMsd,EAAQtf,EAC5B,EAEAk9D,KAAc,SAASl7D,EAAMsd,EAAQtf,GACnC,GAAY,KAARgC,EAAa,OAAOg7D,EAAWh9D,GACnC,GAAY,KAARgC,GAAem6D,EAAa,OAAOY,EAAY/8D,EAAOsf,EAAQ,aAClE,GAAY,KAARtd,GAAuB,KAARA,EAAa,OAAOm7D,EAAWn7D,EAAMsd,EAAQtf,GAChE,GAAY,KAARgC,EAAa,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,UAEnD,GAAY,QAARtd,GAAmB,sDAAsDO,KAAK+c,EAAOvY,YAElF,GAAY,QAAR/E,EACTo7D,EAAY99C,QACP,GAAY,iBAARtd,EACT,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,sBAJlC/b,GAAY,SAMd,MAAO,MACT,EAEA25D,UAAmB,SAASl7D,EAAMs7D,EAASt9D,GACzC,MAAY,KAARgC,EAAoBg7D,EAAWh9D,GACvB,QAARgC,GAAkBuB,EAAW,WAAmB,aAC7CvD,EAAM+c,QAAQ/a,IACvB,EAEAk7D,OAAgB,SAASl7D,EAAMsd,EAAQtf,GACrC,MAAY,KAARgC,GAAuB,KAARA,EAAoBm7D,EAAWn7D,EAAMsd,EAAQtf,GACpD,KAARgC,EAAoBg7D,EAAWh9D,GACvB,KAARgC,EAAoB+6D,EAAY/8D,EAAOsf,EAAQ,UACvC,iBAARtd,EAAgC+6D,EAAY/8D,EAAOsf,EAAQ,kBACnD,QAARtd,GAAgBo7D,EAAY99C,GACzB,SACT,EAEA49C,OAAgB,SAASl7D,EAAMsd,EAAQtf,GACrC,MAAY,QAARgC,EAAuB,SAEf,QAARA,GACFuB,EAAW,aACJvD,EAAM+c,QAAQ/a,MAEhBi7D,EAAKj7D,EAAMsd,EAAQtf,EAC5B,EAEAk9D,cAAuB,SAASl7D,EAAMsd,EAAQtf,GAC5C,MAAY,QAARgC,GAAkB05D,EAAclwD,eAAe8T,EAAOvY,YACxDxD,EAAW,MACJvD,EAAM+c,QAAQ/a,MAEdk7D,EAAOK,QAAQv7D,EAAMsd,EAAQtf,EAExC,EAEAk9D,QAAiB,SAASl7D,EAAMsd,EAAQtf,GACtC,GAAY,KAARgC,EAAa,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,kBACnD,GAAY,KAARtd,GAAuB,KAARA,EAAa,OAAOm7D,EAAWn7D,EAAMsd,EAAQtf,GAChE,GAAY,KAARgC,EAAa,OAAOg7D,EAAWh9D,IAAU+8D,EAAY/8D,EAAOsf,EAAQ68C,EAAc,QAAU,OAEhG,GAAY,iBAARn6D,EAAyB,OAAO+6D,EAAY/8D,EAAOsf,EAAQ,iBAE/D,GAAY,QAARtd,EAAgB,CAClB,IAAIqoD,EAAO/qC,EAAOvY,UAAU+H,cAE1BvL,EADU,QAAR8mD,GAA0B,OAARA,GAAyB,OAARA,GAAyB,MAARA,EAC3C,UACJsR,EAAWnwD,eAAe6+C,GACtB,YACJuR,EAAcpwD,eAAe6+C,GACzB,WACJwR,EAAmBrwD,eAAe6+C,GAC9B,UACJmR,EAAiBhwD,eAAe6+C,GAC5B,WACJyR,EAA4BtwD,eAAe6+C,GACvCiS,EAAuC,WAAa,WACxDJ,EAAc1wD,eAAe6+C,GACzB,OACJ4R,EAAczwD,eAAe6+C,GACzB,UAEA,OACf,CACA,OAAOrqD,EAAM+c,QAAQ/a,IACvB,EAEAk7D,iBAA0B,SAASl7D,EAAMsd,EAAQtf,GAC/C,MAAY,KAARgC,EACKm7D,EAAWn7D,EAAMsd,EAAQtf,GACtB,KAARgC,EACKg7D,EAAWh9D,IAAU+8D,EAAY/8D,EAAOsf,EAAQ68C,EAAc,QAAU,OAAO,IAC5E,QAARn6D,IACFuB,EAAW,SACNvD,EAAM+c,QAAQ/a,KACvB,EAEAk7D,eAAwB,SAASl7D,EAAMsd,EAAQtf,GAC7C,MAAY,KAARgC,EAAoBg7D,EAAWh9D,GACvB,KAARgC,GAAuB,KAARA,EAAoBm7D,EAAWn7D,EAAMsd,EAAQtf,EAAO,GAChEk9D,EAAOK,QAAQv7D,EAAMsd,EAAQtf,EACtC,EAEAk9D,0BAAmC,SAASl7D,EAAMsd,EAAQtf,GACxD,MAAY,KAARgC,EACK+6D,EAAY/8D,EAAOsf,EAAQ,sBACxB,QAARtd,GAAoC,kBAAlBhC,EAAMq9D,UAC1B95D,EAAW,WACJ,6BAEF05D,EAAKj7D,EAAMsd,EAAQtf,EAC5B,EAEAk9D,mBAA4B,SAASl7D,EAAMsd,EAAQtf,GACjD,MAAY,KAARgC,GACFhC,EAAMq9D,SAAW,KACVL,EAAWh9D,IAER,QAARgC,GAGAuB,EAFqB,cAAlBvD,EAAMq9D,WAA6BtB,EAAevwD,eAAe8T,EAAOvY,UAAU+H,gBAChE,kBAAlB9O,EAAMq9D,WAAiCrB,EAAmBxwD,eAAe8T,EAAOvY,UAAU+H,eAClF,QAEA,WACN,aAEF,oBACT,EAEAouD,UAAmB,SAASl7D,EAAMsd,EAAQtf,GACxC,MAAY,QAARgC,GAAkBuB,EAAW,WAAmB,aACxC,KAARvB,EAAoB+6D,EAAY/8D,EAAOsf,EAAQ,OAC5C29C,EAAKj7D,EAAMsd,EAAQtf,EAC5B,EAEAk9D,GAAY,SAASl7D,EAAMsd,EAAQtf,GACjC,MAAY,KAARgC,EAAoBg7D,EAAWh9D,GACvB,KAARgC,GAAuB,KAARA,EAAoBm7D,EAAWn7D,EAAMsd,EAAQtf,IACpD,QAARgC,EAAgBuB,EAAW,MACd,QAARvB,IAAgBuB,EAAW,WAC7B,KACT,EAEA25D,cAAuB,SAASl7D,EAAMsd,EAAQtf,GAC5C,MAAY,KAARgC,EAAoBg7D,EAAWh9D,GACvB,KAARgC,GAAuB,KAARA,EAAoBm7D,EAAWn7D,EAAMsd,EAAQtf,IACpD,QAARgC,EAAgBuB,EAAW,WACd,YAARvB,GAA8B,KAARA,GAAuB,KAARA,IAAauB,EAAW,SAC/D,gBACT,GAEA,MAAO,CACL6U,WAAY,SAAS9J,GACnB,MAAO,CAACouD,SAAU,KACV18D,MAAOu7D,EAAS,QAAU,MAC1B8B,SAAU,KACVtgD,QAAS,IAAIL,EAAQ6+C,EAAS,QAAU,MAAOjtD,GAAQ,EAAG,MACpE,EAEAnK,MAAO,SAASmb,EAAQtf,GACtB,IAAKA,EAAM08D,UAAYp9C,EAAO7D,WAAY,OAAO,KACjD,IAAI1T,GAAS/H,EAAM08D,UAAYD,GAAWn9C,EAAQtf,GAQlD,OAPI+H,GAAyB,iBAATA,IAClB/F,EAAO+F,EAAM,GACbA,EAAQA,EAAM,IAEhBxE,EAAWwE,EACC,WAAR/F,IACFhC,EAAMA,MAAQk9D,EAAOl9D,EAAMA,OAAOgC,EAAMsd,EAAQtf,IAC3CuD,CACT,EAEAyoD,OAAQ,SAAShsD,EAAOw9D,GACtB,IAAIC,EAAKz9D,EAAM+c,QAAS5b,EAAKq8D,GAAaA,EAAU57D,OAAO,GACvDoqD,EAASyR,EAAGzR,OAchB,MAbe,QAAXyR,EAAGz7D,MAAyB,KAANb,GAAmB,KAANA,IAAYs8D,EAAKA,EAAGh7D,MACvDg7D,EAAGh7D,OACK,KAANtB,GAAyB,SAAXs8D,EAAGz7D,MAA8B,OAAXy7D,EAAGz7D,MACd,iBAAXy7D,EAAGz7D,MAAsC,sBAAXy7D,EAAGz7D,MAIlC,KAANb,GAAyB,UAAXs8D,EAAGz7D,MAA+B,kBAAXy7D,EAAGz7D,QACzC,KAANb,GAAyB,MAAXs8D,EAAGz7D,MAA2B,WAAXy7D,EAAGz7D,QAEtCgqD,EAASp+C,KAAKiN,IAAI,EAAG4iD,EAAGzR,OAASG,IAJjCH,GADAyR,EAAKA,EAAGh7D,MACIupD,QAOTA,CACT,EAEAyB,cAAe,IACfiQ,kBAAmB,KACnBC,gBAAiB,KACjBC,qBAAsB,MACtBxB,YAAaA,EACbyB,KAAM,QAEV,IAUE,IAAIC,EAAiB,CACnB,SAAU,SAAU,MAAO,cAC1BpC,EAAgBN,EAAO0C,GAEtBC,EAAc,CAChB,MAAO,QAAS,UAAW,WAAY,QAAS,aAAc,SAC9D,MAAO,KAAM,YACZpC,EAAaP,EAAO2C,GAEnBC,EAAiB,CACnB,QAAS,YAAa,YAAa,SAAU,aAAc,aAC3D,eAAgB,mBAAoB,mBAAoB,gBACxD,oBAAqB,oBAAqB,eAC1C,mBAAoB,mBAAoB,sBACxC,0BAA2B,0BAA2B,QAAS,YAC/D,YAAa,cAAe,kBAAmB,kBAC/C,aAAc,iBAAkB,iBAAkB,aAClD,iBAAkB,iBAAkB,OAAQ,OAAQ,cACpD,qBAAsB,yBAA0B,yBAChD,UAAW,cAAe,QAAS,YAAa,uBAChD,gBAAiB,uBAChBpC,EAAgBR,EAAO4C,GAEtBC,EAAsB,CACxB,YAAa,WAAY,OAAQ,SAAU,OAAQ,YAAa,QAChE,YAAa,cACb,OAAQ,QACR,WAAY,QACXpC,EAAqBT,EAAO6C,GAE3BC,EAAoB,CACtB,gBAAiB,cAAe,aAAc,mBAC9C,qBAAsB,MAAO,eAAgB,YAAa,kBAC1D,sBAAuB,qBAAsB,sBAC7C,4BAA6B,iBAAkB,uBAC/C,4BAA6B,aAAc,UAAW,kBACtD,sBAAuB,aAAc,wBACrC,wBAAyB,kBAAmB,mBAC5C,mBAAoB,oBAAqB,sBACzC,wBAAyB,wBAAyB,oBAClD,kBAAmB,iBAAkB,UAAW,QAAS,aACzD,iBAAkB,iBAAkB,iBAAkB,kBACtD,SAAU,gBAAiB,sBAAuB,4BAClD,6BAA8B,sBAAuB,sBACrD,kBAAmB,eAAgB,eAAgB,sBACnD,sBAAuB,qBAAsB,sBAC7C,qBAAsB,cAAe,oBAAqB,oBAC1D,oBAAqB,gBAAiB,eAAgB,qBACtD,qBAAsB,qBAAsB,iBAAkB,eAC9D,aAAc,mBAAoB,yBAClC,0BAA2B,mBAAoB,mBAC/C,eAAgB,SAAU,uBAAwB,aAAc,aAChE,cAAe,eAAgB,eAAgB,eAAgB,cAC/D,QAAS,OAAQ,QAAS,gBAAiB,eAAgB,cAC3D,aAAc,cAAe,oBAAqB,oBAClD,oBAAqB,cAAe,eAAgB,UAAW,UAC/D,UAAW,oBAAqB,gBAAiB,OAAQ,MAAO,YAChE,aAAc,SAAU,YAAa,UAAW,oBAChD,4BAA6B,2BAC7B,6BAA8B,4BAA6B,oBAC3D,qBAAsB,YAAa,cAAe,MAAO,cAAe,eACxE,OAAQ,aAAc,iBAAkB,YAAa,YACrD,cAAe,YAAa,QAAS,eAAgB,YAAa,YAClE,OAAQ,cAAe,wBAAyB,eAChD,yBAA0B,sBAAuB,YACjD,mBAAoB,eAAgB,aAAc,iBAClD,eAAgB,0BAA2B,oBAC3C,0BAA2B,yBAA0B,uBACrD,wBAAyB,0BAA2B,cAAe,MACnE,OAAQ,YAAa,oBAAqB,iBAAkB,iBAC5D,cAAe,kBAAmB,kBAAmB,oBACrD,WAAY,WAAY,eAAgB,eAAgB,iBACxD,gBAAiB,sBAAuB,wBACxC,qBAAsB,sBAAuB,SAAU,UAAW,OAClE,oBAAqB,kBAAmB,mBAAoB,mBAC5D,QAAS,cAAe,kBAAmB,oBAAqB,eAChE,mBAAoB,qBAAsB,YAAa,kBACvD,gBAAiB,eAAgB,OAAQ,iBAAkB,aAC3D,cAAe,mBAAoB,gBAAiB,qBACpD,sBAAuB,yBAA0B,aACjD,mBAAoB,sBAAuB,kBAAmB,SAC9D,gBAAiB,cAAe,eAAgB,aAAc,QAC9D,oBAAqB,eAAgB,qBAAsB,gBAC3D,gBAAiB,YAAa,iBAAkB,aAAc,YAC9D,cAAe,gBAAiB,cAAe,YAAY,YAC3D,iBAAkB,aAAc,kBAChC,YAAa,iBAAkB,aAAc,kBAAmB,YAChE,iBAAkB,UAAW,WAAY,YAAa,WAAY,YAClE,SAAU,aAAc,kBAAmB,SAAU,gBACrD,kBAAmB,cAAe,kBAAmB,gBACrD,UAAW,QAAS,UAAW,UAAW,gBAAiB,iBAC3D,gBAAiB,gBAAiB,WAAY,iBAC9C,gBAAiB,aAAc,aAAc,UAAW,iBACxD,eAAgB,gBAAiB,cAAe,OAAQ,mBACxD,oBAAqB,oBAAqB,cAAe,QACzD,cAAe,eAAgB,cAAe,qBAAsB,QACpE,cAAe,gBAAiB,cAAe,aAAc,cAC7D,WAAY,qBAAsB,mBAAoB,SACtD,qBAAsB,sBAAuB,sBAC7C,kBAAmB,mBAAoB,SAAU,OAAQ,aACzD,cAAe,WAAY,QAAS,SAAU,WAAY,iBAC1D,UAAW,aAAc,gBAAiB,gBAAiB,YAC3D,QAAS,kBAAmB,gBAAiB,sBAC7C,0BAA2B,4BAA6B,uBACxD,uBAAwB,2BACxB,6BAA8B,qBAAsB,sBACpD,oBAAqB,iBAAkB,uBACvC,2BAA4B,6BAC5B,wBAAyB,wBAAyB,4BAClD,8BAA+B,sBAAuB,uBACtD,qBAAsB,oBAAqB,mBAC3C,wBAAyB,eAAgB,eAAgB,gBACzD,OAAQ,QAAS,WAAY,eAAgB,gBAC7C,oBAAqB,cAAe,SAAU,aAAc,WAC5D,eAAgB,SAAU,cAAe,aAAc,kBACvD,aAAc,kBAAmB,uBAAwB,kBACzD,wBAAyB,uBAAwB,uBACjD,2BAA4B,wBAAyB,gBACrD,sBAAuB,yBAA0B,sBACjD,cAAe,cAAe,eAAgB,mBAC9C,eAAgB,gBAAiB,iBAAkB,cACnD,mBAAoB,sBAAuB,iBAC3C,0BAA2B,YAAa,MAAO,eAAgB,YAAa,mBAC5E,kBAAmB,aAAc,mBAAoB,sBACrD,sBAAuB,6BAA8B,YACrD,eAAgB,cAAe,iBAAkB,aAAc,gBAC/D,iBAAkB,eAAgB,cAAe,cAAe,aAChE,eAAgB,eAAgB,SAAU,cAAe,SAAU,QACnE,cAAe,aAAc,eAAgB,YAAa,eAAgB,UAE1E,YAAa,YAAa,OAAQ,oBAAqB,SAAU,cACjE,gBAAiB,iBAAkB,aAAc,eAAgB,iBACjE,sBAAuB,8BACvB,kBAAmB,OAAQ,eAAgB,YAAa,kBACxD,SAAU,aAAc,aAAc,eAAgB,cAAe,kBAAmB,SACxF,mBAAoB,oBAAqB,iBAAkB,kBAC3D,oBAAqB,iBAAkB,eAAgB,iBACvD,iBAAkB,oBAAqB,+BACvC,6BAA8B,cAAe,gBAC5C1C,EAAmBJ,EAAO8C,GAEzBC,EAA+B,CACjC,eAAgB,eAAgB,eAAgB,qBAAsB,mBACtE,yBAA0B,yBAA0B,yBACpD,qBAAsB,2BAA4B,2BAClD,2BAA4B,qBAAsB,qBAClD,gBAAiB,sBAAuB,oBACxC,0BAA2B,0BAC3B,0BAA2B,sBAAuB,4BAClD,4BAA6B,4BAC7B,sBAAuB,sBAAuB,qBAAsB,eACpE,mBAAoB,qBAAsB,gBAAiB,oBAC3D,sBAAuB,kBAAmB,sBAAuB,gBAAiB,oBAClF,sBAAuB,iBAAkB,qBACzC,uBAAwB,mBAAoB,2BAC5C,wBAAyB,uBAAwB,8BACjD,uBAAwB,4BAA6B,yBACrD,wBAAyB,4BAA6B,yBACtD,6BAA8B,iCAAkC,eAAgB,QAC/ErC,EAA8BV,EAAO+C,GAKrCpC,EAAiBX,EAHE,CACpB,eAAgB,cAAe,MAAO,gBAAiB,eACtD,wBAAyB,eAAgB,cAAe,eAMxDY,EAAqBZ,EAHE,CACxB,mBAAoB,WAAY,WAAY,MAAO,SAAU,QAC7D,WAAY,SAAU,UAAW,WAG/BgD,EAAiB,CACnB,YAAa,eAAgB,OAAQ,aAAc,QAAS,QAC5D,SAAU,QAAS,iBAAkB,OAAQ,aAAc,QAC3D,YAAa,YAAa,aAAc,YAAa,QAAS,iBAC9D,WAAY,UAAW,OAAQ,WAAY,WAAY,gBACvD,WAAY,YAAa,WAAY,YAAa,cAAe,iBACjE,aAAc,aAAc,UAAW,aAAc,eACrD,gBAAiB,gBAAiB,gBAAiB,gBAAiB,aACpE,WAAY,cAAe,UAAW,UAAW,aAAc,YAC/D,cAAe,cAAe,UAAW,YAAa,aACtD,OAAQ,YAAa,OAAQ,OAAQ,QAAS,cAAe,WAC7D,UAAW,YAAa,SAAU,QAAS,QAAS,WACpD,gBAAiB,YAAa,eAAgB,YAAa,aAC3D,YAAa,uBAAwB,YAAa,aAAc,YAAa,YAC7E,cAAe,gBAAiB,eAAgB,iBAAkB,iBAClE,iBAAkB,cAAe,OAAQ,YAAa,QAAS,UAC/D,SAAU,mBAAoB,aAAc,eAAgB,eAC5D,iBAAkB,kBAAmB,oBAAqB,kBAC1D,kBAAmB,eAAgB,YAAa,YAAa,WAC7D,cAAe,OAAQ,UAAW,QAAS,YAAa,SAAU,YAClE,SAAU,gBAAiB,YAAa,gBAAiB,gBACzD,aAAc,YAAa,OAAQ,OAAQ,OAAQ,aACnD,SAAU,gBAAiB,MAAO,YAAa,YAAa,cAC5D,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,UACpE,YAAa,YAAa,YAAa,OAAQ,cAAe,YAAa,MAC3E,OAAQ,UAAW,SAAU,YAAa,SAAU,QAAS,QAC7D,aAAc,SAAU,eACvBnC,EAAgBb,EAAOgD,GAEtBC,EAAiB,CACnB,QAAS,WAAY,eAAgB,WAAY,gBAAiB,OAClE,oBAAqB,QAAS,QAAS,MAAO,aAAc,aAAc,YAC1E,SAAU,UAAW,kBAAmB,cAAe,eACvD,eAAgB,WAAY,YAAa,OAAQ,OAAQ,YAAa,QAAS,eAAgB,aAC/F,eAAgB,WAAY,aAAc,YAAa,WAAY,QAAS,gBAAiB,SAC7F,UAAW,QAAS,QAAS,aAAc,OAAQ,OAAQ,SAAU,SAAU,aAC/E,OAAQ,SAAU,QAAS,YAAa,aAAc,aAAc,UAAW,SAC/E,aAAc,kBAAmB,eAAgB,aAAc,OAAQ,YACvE,aAAc,sBAAuB,UAAW,cAAe,QAC/D,OAAQ,SAAU,WAAY,SAAU,cAAe,qBACvD,oBAAqB,kBAAmB,QAAS,OAAQ,cACzD,aAAc,WAAY,QAAS,aAAc,cAAe,SAAU,iBAC1E,UAAW,YAAa,iBAAkB,UAAW,UAAW,WAChE,cAAe,eAAgB,aAAc,WAAY,OAAQ,UAAW,WAAY,QAAS,OACjG,QAAS,YAAa,eAAgB,eAAgB,UAAW,SAAU,SAAU,SAAU,UAC/F,uBAAwB,UAAW,iBAAkB,QAAS,mBAC9D,iBAAkB,kBAAmB,mBAAoB,aAAc,aACvE,OAAQ,UAAW,oBAAqB,kBAAmB,WAC3D,WAAY,eACZ,SAAU,SAAU,OAAQ,cAAe,WAAY,OAAQ,UAAW,cAAe,WACzF,UAAW,UAAW,WAAY,QAAS,MAAO,WAAY,mBAC9D,yBAA0B,uBAAwB,yBAClD,yBAA0B,0BAC1B,0BAA2B,0BAC3B,wBAAyB,0BACzB,2BAA4B,0BAC5B,0BAA2B,0BAA2B,wBACtD,mBAAoB,YAAa,YAAa,WAAY,UAAW,kBACrE,iBAAkB,UAAW,OAAQ,OAAQ,WAAY,QAAS,OAAQ,OAAQ,WAAY,aAAc,YAC5G,WAAY,OAAQ,qBAAsB,WAAY,YAAa,WAAY,OAAQ,SACvF,WAAY,WAAY,OAAQ,SAAU,mBAAoB,aAAc,SAC5E,OAAQ,SAAU,OAAQ,SAAU,YAAa,gBACjD,WAAY,iBAAkB,aAAc,MAAO,OAAQ,MAAO,aAAc,OAAQ,SACxF,iBAAkB,kBAAmB,sBAAuB,WAC5D,iBAAkB,WAAY,UAAW,UAAW,SAAU,cAC9D,eAAgB,cAAe,cAAe,eAAgB,QAAS,SAAU,YAAa,SAC9F,SAAU,kBAAmB,oBAAqB,UAAW,UAC7D,WAAY,iBAAkB,WAAY,QAC1C,uBAAwB,sBAAuB,wBAC/C,YAAa,MAAO,QAAS,SAAU,OAAQ,QAAS,UAAW,UACnE,eAAgB,SAAU,kBAAmB,QAAS,YAAa,UAAW,WAC9E,QAAS,UAAW,OAAQ,QAAS,cAAe,iBACpD,cAAe,oBAAqB,cAAe,kBACnD,cAAe,YAAa,MAAO,aAAc,YAAa,eAAgB,QAAS,SAAU,WACjG,oBAAqB,eAAgB,oBACrC,sBAAuB,2BAA4B,SACnD,OAAQ,WAAY,kBACpB,WAAY,cAAe,SAAU,gBACrC,MAAO,YAAa,YAAa,OAAQ,WAAY,uBAAwB,WAAY,UAAW,WACpG,WAAY,YAAa,cAAe,iBAAkB,UAC1D,gBAAiB,YAAa,OAAQ,SAAU,cAAe,SAC/D,YAAa,UAAW,UAAW,YAAa,cAAe,UAAW,QAAS,UAAW,aAC9F,qBAAsB,gBAAiB,QAAS,QAAS,SACzD,UAAW,gBAAiB,UAAW,WAAY,UAAW,cAC9D,UAAW,OAAQ,SAAU,UAAW,cAAe,aAAc,cAAe,eACpF,UAAW,UAAW,WAAY,MAAO,WAAY,WAAY,cACjE,WAAY,cAAe,kBAAmB,QAAS,YACvD,aAAc,4BAA6B,YAAa,SACxD,WAAY,SAAU,4BAA6B,4BACnD,2BAA4B,WAAY,WAAY,QAAS,UAC7D,MAAO,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,UAClE,UAAW,QAAS,MAAO,aAAc,cAAe,MAAO,SAAU,UACzE,WAAY,aAAc,WAAY,aAAc,QAAS,UAAW,SAAU,SAAU,SAAU,SACtG,SAAU,YAAa,kBAAmB,YAAa,cACvD,4BAA6B,yBAC7B,6BAA8B,iCAAkC,aAAc,WAC9E,iBAAkB,gBAAiB,WAAY,QAAS,QAAS,OAAQ,SACzE,sBAAuB,wBAAyB,SAChD,OAAQ,QAAS,QAAS,mBAAoB,QAAS,oBACvD,kBAAmB,yBAA0B,uBAAwB,OACrE,QAAS,aAAc,gBAAiB,UAAW,aAAc,QAAS,SAC1E,cAAe,YAAa,aAAc,cAAe,QAAS,eAAgB,gBAAiB,eAAgB,YAAa,SAChI,gBAAiB,QAAS,SAAU,aAAc,UAAW,SAAU,aAAc,MACrF,uBAAwB,YAAa,QAAS,YAAa,WAAY,UAAW,YAAa,QAC/F,gBAAiB,aAAc,eAAgB,qBAC/C,qBAAsB,qBAAsB,YAAa,kBACzD,QACA,SAAU,OAAQ,cAAe,WAAY,WAAY,YAAa,OACtE,QAAS,OAAQ,mBAAoB,aAAc,kBACnD,oBAAqB,eAAgB,UAAW,QAAS,cACzD,sBAAuB,cAAe,sBAAuB,KAAM,MACnE,sBAAuB,wBAAyB,YAChD,YAAa,cAAe,aAAc,aAAc,aACxD,cAAe,kBAAmB,iBAAkB,YAAa,qBAAsB,QAAS,KAChG,cAAe,iBAAkB,cAAe,oBAChD,cAAe,kBAAmB,cAAe,YAAa,OAAQ,MACtE,MAAO,WAAY,gBAAiB,WAAY,UAAW,cAAe,iBAC1E,gBAAiB,SAAU,WAAY,OAAQ,OAAQ,QACvD,SAAU,cAAe,aAAc,QAAS,OAAQ,eAAgB,UAAW,UAAW,MAC9F,WAAY,YACXnC,EAAgBd,EAAOiD,GAEtBC,EAAWR,EAAe3qD,OAAO4qD,GAAa5qD,OAAO6qD,GAAgB7qD,OAAO8qD,GAC7E9qD,OAAO+qD,GAAmB/qD,OAAOgrD,GAA8BhrD,OAAOirD,GACtEjrD,OAAOkrD,GAGV,SAASE,EAAcj/C,EAAQtf,GAE7B,IADA,IAAsBmB,EAAlBq9D,GAAW,EACgB,OAAvBr9D,EAAKme,EAAOjd,SAAiB,CACnC,GAAIm8D,GAAkB,KAANr9D,EAAW,CACzBnB,EAAM08D,SAAW,KACjB,KACF,CACA8B,EAAkB,KAANr9D,CACd,CACA,MAAO,CAAC,UAAW,UACrB,CAZApC,EAAW66D,eAAe,YAAa,MAAO0E,GAc9Cv/D,EAAWm7D,WAAW,WAAY,CAChCwB,cAAeA,EACfC,WAAYA,EACZC,cAAeA,EACfC,mBAAoBA,EACpBL,iBAAkBA,EAClBM,4BAA6BA,EAC7BC,eAAgBA,EAChBC,mBAAoBA,EACpBC,cAAeA,EACfC,cAAeA,EACfT,WAAY,CACV,IAAK,SAASn8C,EAAQtf,GACpB,QAAKsf,EAAO/D,IAAI,OAChBvb,EAAM08D,SAAW6B,EACVA,EAAcj/C,EAAQtf,GAC/B,GAEFR,KAAM,QAGRT,EAAWm7D,WAAW,cAAe,CACnCyB,WAAYA,EACZC,cAAeA,EACfC,mBAAoBA,EACpBL,iBAAkBA,EAClBM,4BAA6BA,EAC7BG,cAAeA,EACfC,cAAeA,EACfH,eAAgBA,EAChBI,aAAa,EACbC,YAAa,KACbX,WAAY,CACV,IAAK,SAASn8C,EAAQtf,GACpB,OAAIsf,EAAO/D,IAAI,MACb+D,EAAO5D,YACA,CAAC,UAAW,YACV4D,EAAO/D,IAAI,MACpBvb,EAAM08D,SAAW6B,EACVA,EAAcj/C,EAAQtf,IAEtB,CAAC,WAAY,WAExB,EACA,IAAK,SAASsf,GACZ,QAAIA,EAAOhZ,MAAM,UAAU,IAClB,CAAC,KAAM,KAElB,EACA,EAAK,SAASgZ,GAEZ,OADAA,EAAOhZ,MAAM,WACTgZ,EAAOhZ,MAAM,SAAS,GACjB,CAAC,aAAc,uBACjB,CAAC,aAAc,WACxB,EACA,IAAK,SAASgZ,GACZ,QAAKA,EAAO/D,IAAI,MACT,CAAC,KAAM,gBAChB,GAEF/b,KAAM,MACNmY,WAAY,SAGd5Y,EAAWm7D,WAAW,cAAe,CACnCyB,WAAYA,EACZC,cAAeA,EACfC,mBAAoBA,EACpBL,iBAAkBA,EAClBM,4BAA6BA,EAC7BG,cAAeA,EACfC,cAAeA,EACfH,eAAgBA,EAChBI,aAAa,EACbC,YAAa,KACbX,WAAY,CACV,IAAK,SAASn8C,EAAQtf,GACpB,OAAIsf,EAAO/D,IAAI,MACb+D,EAAO5D,YACA,CAAC,UAAW,YACV4D,EAAO/D,IAAI,MACpBvb,EAAM08D,SAAW6B,EACVA,EAAcj/C,EAAQtf,IAEtB,CAAC,WAAY,WAExB,EACA,IAAK,SAASsf,GACZ,OAAIA,EAAO/D,IAAI,KAAa,CAAC,KAAM,kBAC/B+D,EAAOhZ,MAAM,yGAAyG,KAC1HgZ,EAAO9D,SAAS,YACZ8D,EAAOhZ,MAAM,SAAS,GACjB,CAAC,aAAc,uBACjB,CAAC,aAAc,YACxB,EACA,IAAK,WACH,MAAO,CAAC,OAAQ,OAClB,GAEF9G,KAAM,MACNmY,WAAY,SAGd5Y,EAAWm7D,WAAW,aAAc,CAClCwB,cAAeA,EACfC,WAAYA,EACZC,cAAeA,EACfJ,iBAAkBA,EAClBM,4BAA6BA,EAC7BC,eAAgBA,EAChBC,mBAAoBA,EACpBC,cAAeA,EACfC,cAAeA,EACfG,qBAAqB,EACrBZ,WAAY,CACV,IAAK,SAASn8C,EAAQtf,GACpB,QAAKsf,EAAO/D,IAAI,OAChBvb,EAAM08D,SAAW6B,EACVA,EAAcj/C,EAAQtf,GAC/B,GAEFR,KAAM,MACNmY,WAAY,OAGhB,CAx1BIrT,CAAI,EAAQ,M,6FCFZm6D,E,MAA0B,GAA4B,KAE1DA,EAAwB56D,KAAK,CAACU,EAAOgI,GAAI,22RAwVtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,oqHAAoqH,eAAiB,CAAC,42RAA42R,WAAa,MAE7pZ,S,6FC5VIkyD,E,MAA0B,GAA4B,KAE1DA,EAAwB56D,KAAK,CAACU,EAAOgI,GAAI,qnFA6ItC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,ixBAAixB,eAAiB,CAAC,snFAAsnF,WAAa,MAEphH,S,iBCjJA,IAAIzE,EAAU,EAAQ,MACnBA,EAAQ42D,aAAY52D,EAAUA,EAAQ62D,SACnB,iBAAZ72D,IAAsBA,EAAU,CAAC,CAACvD,EAAOgI,GAAIzE,EAAS,MAC7DA,EAAQ82D,SAAQr6D,EAAOC,QAAUsD,EAAQ82D,SAG/BrlC,EADH,UACO,WAAYzxB,GAAS,EAAM,CAAC,E,iBCN7C,IAAIA,EAAU,EAAQ,MACnBA,EAAQ42D,aAAY52D,EAAUA,EAAQ62D,SACnB,iBAAZ72D,IAAsBA,EAAU,CAAC,CAACvD,EAAOgI,GAAIzE,EAAS,MAC7DA,EAAQ82D,SAAQr6D,EAAOC,QAAUsD,EAAQ82D,SAG/BrlC,EADH,UACO,WAAYzxB,GAAS,EAAM,CAAC,E","sources":["webpack:///./node_modules/codemirror/addon/edit/closebrackets.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/codemirror/mode/css/css.js","webpack:///./node_modules/codemirror/lib/codemirror.css","webpack:///./node_modules/codemirror/theme/material.css","webpack:///./node_modules/codemirror/lib/codemirror.css?6a7c","webpack:///./node_modules/codemirror/theme/material.css?896d"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.16\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n direction: ltr;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n.cm-fat-cursor .CodeMirror-line::selection,\n.cm-fat-cursor .CodeMirror-line > span::selection, \n.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\n.cm-fat-cursor .CodeMirror-line::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\n.cm-fat-cursor { caret-color: transparent; }\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: 0;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 50px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -50px; margin-right: -50px;\n padding-bottom: 50px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n z-index: 0;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 50px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n outline: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -50px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre.CodeMirror-line,\n.CodeMirror-wrap pre.CodeMirror-line-like {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n padding: 0.1px; /* Force widget margins to stay inside of the container */\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background-color: #ffa;\n background-color: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/codemirror/lib/codemirror.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/* BASICS */\\n\\n.CodeMirror {\\n /* Set height, width, borders, and global font properties here */\\n font-family: monospace;\\n height: 300px;\\n color: black;\\n direction: ltr;\\n}\\n\\n/* PADDING */\\n\\n.CodeMirror-lines {\\n padding: 4px 0; /* Vertical padding around content */\\n}\\n.CodeMirror pre.CodeMirror-line,\\n.CodeMirror pre.CodeMirror-line-like {\\n padding: 0 4px; /* Horizontal padding of content */\\n}\\n\\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\\n background-color: white; /* The little square between H and V scrollbars */\\n}\\n\\n/* GUTTER */\\n\\n.CodeMirror-gutters {\\n border-right: 1px solid #ddd;\\n background-color: #f7f7f7;\\n white-space: nowrap;\\n}\\n.CodeMirror-linenumbers {}\\n.CodeMirror-linenumber {\\n padding: 0 3px 0 5px;\\n min-width: 20px;\\n text-align: right;\\n color: #999;\\n white-space: nowrap;\\n}\\n\\n.CodeMirror-guttermarker { color: black; }\\n.CodeMirror-guttermarker-subtle { color: #999; }\\n\\n/* CURSOR */\\n\\n.CodeMirror-cursor {\\n border-left: 1px solid black;\\n border-right: none;\\n width: 0;\\n}\\n/* Shown when moving in bi-directional text */\\n.CodeMirror div.CodeMirror-secondarycursor {\\n border-left: 1px solid silver;\\n}\\n.cm-fat-cursor .CodeMirror-cursor {\\n width: auto;\\n border: 0 !important;\\n background: #7e7;\\n}\\n.cm-fat-cursor div.CodeMirror-cursors {\\n z-index: 1;\\n}\\n.cm-fat-cursor .CodeMirror-line::selection,\\n.cm-fat-cursor .CodeMirror-line > span::selection, \\n.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\\n.cm-fat-cursor .CodeMirror-line::-moz-selection,\\n.cm-fat-cursor .CodeMirror-line > span::-moz-selection,\\n.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\\n.cm-fat-cursor { caret-color: transparent; }\\n@-moz-keyframes blink {\\n 0% {}\\n 50% { background-color: transparent; }\\n 100% {}\\n}\\n@-webkit-keyframes blink {\\n 0% {}\\n 50% { background-color: transparent; }\\n 100% {}\\n}\\n@keyframes blink {\\n 0% {}\\n 50% { background-color: transparent; }\\n 100% {}\\n}\\n\\n/* Can style cursor different in overwrite (non-insert) mode */\\n.CodeMirror-overwrite .CodeMirror-cursor {}\\n\\n.cm-tab { display: inline-block; text-decoration: inherit; }\\n\\n.CodeMirror-rulers {\\n position: absolute;\\n left: 0; right: 0; top: -50px; bottom: 0;\\n overflow: hidden;\\n}\\n.CodeMirror-ruler {\\n border-left: 1px solid #ccc;\\n top: 0; bottom: 0;\\n position: absolute;\\n}\\n\\n/* DEFAULT THEME */\\n\\n.cm-s-default .cm-header {color: blue;}\\n.cm-s-default .cm-quote {color: #090;}\\n.cm-negative {color: #d44;}\\n.cm-positive {color: #292;}\\n.cm-header, .cm-strong {font-weight: bold;}\\n.cm-em {font-style: italic;}\\n.cm-link {text-decoration: underline;}\\n.cm-strikethrough {text-decoration: line-through;}\\n\\n.cm-s-default .cm-keyword {color: #708;}\\n.cm-s-default .cm-atom {color: #219;}\\n.cm-s-default .cm-number {color: #164;}\\n.cm-s-default .cm-def {color: #00f;}\\n.cm-s-default .cm-variable,\\n.cm-s-default .cm-punctuation,\\n.cm-s-default .cm-property,\\n.cm-s-default .cm-operator {}\\n.cm-s-default .cm-variable-2 {color: #05a;}\\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\\n.cm-s-default .cm-comment {color: #a50;}\\n.cm-s-default .cm-string {color: #a11;}\\n.cm-s-default .cm-string-2 {color: #f50;}\\n.cm-s-default .cm-meta {color: #555;}\\n.cm-s-default .cm-qualifier {color: #555;}\\n.cm-s-default .cm-builtin {color: #30a;}\\n.cm-s-default .cm-bracket {color: #997;}\\n.cm-s-default .cm-tag {color: #170;}\\n.cm-s-default .cm-attribute {color: #00c;}\\n.cm-s-default .cm-hr {color: #999;}\\n.cm-s-default .cm-link {color: #00c;}\\n\\n.cm-s-default .cm-error {color: #f00;}\\n.cm-invalidchar {color: #f00;}\\n\\n.CodeMirror-composing { border-bottom: 2px solid; }\\n\\n/* Default styles for common addons */\\n\\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}\\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}\\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\\n.CodeMirror-activeline-background {background: #e8f2ff;}\\n\\n/* STOP */\\n\\n/* The rest of this file contains styles related to the mechanics of\\n the editor. You probably shouldn't touch them. */\\n\\n.CodeMirror {\\n position: relative;\\n overflow: hidden;\\n background: white;\\n}\\n\\n.CodeMirror-scroll {\\n overflow: scroll !important; /* Things will break if this is overridden */\\n /* 50px is the magic margin used to hide the element's real scrollbars */\\n /* See overflow: hidden in .CodeMirror */\\n margin-bottom: -50px; margin-right: -50px;\\n padding-bottom: 50px;\\n height: 100%;\\n outline: none; /* Prevent dragging from highlighting the element */\\n position: relative;\\n z-index: 0;\\n}\\n.CodeMirror-sizer {\\n position: relative;\\n border-right: 50px solid transparent;\\n}\\n\\n/* The fake, visible scrollbars. Used to force redraw during scrolling\\n before actual scrolling happens, thus preventing shaking and\\n flickering artifacts. */\\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\\n position: absolute;\\n z-index: 6;\\n display: none;\\n outline: none;\\n}\\n.CodeMirror-vscrollbar {\\n right: 0; top: 0;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n}\\n.CodeMirror-hscrollbar {\\n bottom: 0; left: 0;\\n overflow-y: hidden;\\n overflow-x: scroll;\\n}\\n.CodeMirror-scrollbar-filler {\\n right: 0; bottom: 0;\\n}\\n.CodeMirror-gutter-filler {\\n left: 0; bottom: 0;\\n}\\n\\n.CodeMirror-gutters {\\n position: absolute; left: 0; top: 0;\\n min-height: 100%;\\n z-index: 3;\\n}\\n.CodeMirror-gutter {\\n white-space: normal;\\n height: 100%;\\n display: inline-block;\\n vertical-align: top;\\n margin-bottom: -50px;\\n}\\n.CodeMirror-gutter-wrapper {\\n position: absolute;\\n z-index: 4;\\n background: none !important;\\n border: none !important;\\n}\\n.CodeMirror-gutter-background {\\n position: absolute;\\n top: 0; bottom: 0;\\n z-index: 4;\\n}\\n.CodeMirror-gutter-elt {\\n position: absolute;\\n cursor: default;\\n z-index: 4;\\n}\\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\\n\\n.CodeMirror-lines {\\n cursor: text;\\n min-height: 1px; /* prevents collapsing before first draw */\\n}\\n.CodeMirror pre.CodeMirror-line,\\n.CodeMirror pre.CodeMirror-line-like {\\n /* Reset some styles that the rest of the page might have set */\\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\\n border-width: 0;\\n background: transparent;\\n font-family: inherit;\\n font-size: inherit;\\n margin: 0;\\n white-space: pre;\\n word-wrap: normal;\\n line-height: inherit;\\n color: inherit;\\n z-index: 2;\\n position: relative;\\n overflow: visible;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-font-variant-ligatures: contextual;\\n font-variant-ligatures: contextual;\\n}\\n.CodeMirror-wrap pre.CodeMirror-line,\\n.CodeMirror-wrap pre.CodeMirror-line-like {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: normal;\\n}\\n\\n.CodeMirror-linebackground {\\n position: absolute;\\n left: 0; right: 0; top: 0; bottom: 0;\\n z-index: 0;\\n}\\n\\n.CodeMirror-linewidget {\\n position: relative;\\n z-index: 2;\\n padding: 0.1px; /* Force widget margins to stay inside of the container */\\n}\\n\\n.CodeMirror-widget {}\\n\\n.CodeMirror-rtl pre { direction: rtl; }\\n\\n.CodeMirror-code {\\n outline: none;\\n}\\n\\n/* Force content-box sizing for the elements where we expect it */\\n.CodeMirror-scroll,\\n.CodeMirror-sizer,\\n.CodeMirror-gutter,\\n.CodeMirror-gutters,\\n.CodeMirror-linenumber {\\n -moz-box-sizing: content-box;\\n box-sizing: content-box;\\n}\\n\\n.CodeMirror-measure {\\n position: absolute;\\n width: 100%;\\n height: 0;\\n overflow: hidden;\\n visibility: hidden;\\n}\\n\\n.CodeMirror-cursor {\\n position: absolute;\\n pointer-events: none;\\n}\\n.CodeMirror-measure pre { position: static; }\\n\\ndiv.CodeMirror-cursors {\\n visibility: hidden;\\n position: relative;\\n z-index: 3;\\n}\\ndiv.CodeMirror-dragcursors {\\n visibility: visible;\\n}\\n\\n.CodeMirror-focused div.CodeMirror-cursors {\\n visibility: visible;\\n}\\n\\n.CodeMirror-selected { background: #d9d9d9; }\\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\\n.CodeMirror-crosshair { cursor: crosshair; }\\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\\n\\n.cm-searching {\\n background-color: #ffa;\\n background-color: rgba(255, 255, 0, .4);\\n}\\n\\n/* Used to force a border model for a node */\\n.cm-force-border { padding-right: .1px; }\\n\\n@media print {\\n /* Hide the cursor when printing */\\n .CodeMirror div.CodeMirror-cursors {\\n visibility: hidden;\\n }\\n}\\n\\n/* See issue #2901 */\\n.cm-tab-wrap-hack:after { content: ''; }\\n\\n/* Help users use markselection to safely style text background */\\nspan.CodeMirror-selectedtext { background: none; }\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*\n Name: material\n Author: Mattia Astorino (http://github.com/equinusocio)\n Website: https://material-theme.site/\n*/\n\n.cm-s-material.CodeMirror {\n background-color: #263238;\n color: #EEFFFF;\n}\n\n.cm-s-material .CodeMirror-gutters {\n background: #263238;\n color: #546E7A;\n border: none;\n}\n\n.cm-s-material .CodeMirror-guttermarker,\n.cm-s-material .CodeMirror-guttermarker-subtle,\n.cm-s-material .CodeMirror-linenumber {\n color: #546E7A;\n}\n\n.cm-s-material .CodeMirror-cursor {\n border-left: 1px solid #FFCC00;\n}\n.cm-s-material.cm-fat-cursor .CodeMirror-cursor {\n background-color: #5d6d5c80 !important;\n}\n.cm-s-material .cm-animate-fat-cursor {\n background-color: #5d6d5c80 !important;\n}\n\n.cm-s-material div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material.CodeMirror-focused div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::selection,\n.cm-s-material .CodeMirror-line>span::selection,\n.cm-s-material .CodeMirror-line>span>span::selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::-moz-selection,\n.cm-s-material .CodeMirror-line>span::-moz-selection,\n.cm-s-material .CodeMirror-line>span>span::-moz-selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-activeline-background {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.cm-s-material .cm-keyword {\n color: #C792EA;\n}\n\n.cm-s-material .cm-operator {\n color: #89DDFF;\n}\n\n.cm-s-material .cm-variable-2 {\n color: #EEFFFF;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #f07178;\n}\n\n.cm-s-material .cm-builtin {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-atom {\n color: #F78C6C;\n}\n\n.cm-s-material .cm-number {\n color: #FF5370;\n}\n\n.cm-s-material .cm-def {\n color: #82AAFF;\n}\n\n.cm-s-material .cm-string {\n color: #C3E88D;\n}\n\n.cm-s-material .cm-string-2 {\n color: #f07178;\n}\n\n.cm-s-material .cm-comment {\n color: #546E7A;\n}\n\n.cm-s-material .cm-variable {\n color: #f07178;\n}\n\n.cm-s-material .cm-tag {\n color: #FF5370;\n}\n\n.cm-s-material .cm-meta {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-attribute {\n color: #C792EA;\n}\n\n.cm-s-material .cm-property {\n color: #C792EA;\n}\n\n.cm-s-material .cm-qualifier {\n color: #DECB6B;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #DECB6B;\n}\n\n\n.cm-s-material .cm-error {\n color: rgba(255, 255, 255, 1.0);\n background-color: #FF5370;\n}\n\n.cm-s-material .CodeMirror-matchingbracket {\n text-decoration: underline;\n color: white !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/codemirror/theme/material.css\"],\"names\":[],\"mappings\":\"AAAA;;;;CAIC;;AAED;EACE,yBAAyB;EACzB,cAAc;AAChB;;AAEA;EACE,mBAAmB;EACnB,cAAc;EACd,YAAY;AACd;;AAEA;;;EAGE,cAAc;AAChB;;AAEA;EACE,8BAA8B;AAChC;AACA;EACE,sCAAsC;AACxC;AACA;EACE,sCAAsC;AACxC;;AAEA;EACE,oCAAoC;AACtC;;AAEA;EACE,oCAAoC;AACtC;;AAEA;;;EAGE,oCAAoC;AACtC;;AAEA;;;EAGE,oCAAoC;AACtC;;AAEA;EACE,8BAA8B;AAChC;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;;EAEE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;;EAEE,cAAc;AAChB;;;AAGA;EACE,+BAA+B;EAC/B,yBAAyB;AAC3B;;AAEA;EACE,0BAA0B;EAC1B,uBAAuB;AACzB\",\"sourcesContent\":[\"/*\\n Name: material\\n Author: Mattia Astorino (http://github.com/equinusocio)\\n Website: https://material-theme.site/\\n*/\\n\\n.cm-s-material.CodeMirror {\\n background-color: #263238;\\n color: #EEFFFF;\\n}\\n\\n.cm-s-material .CodeMirror-gutters {\\n background: #263238;\\n color: #546E7A;\\n border: none;\\n}\\n\\n.cm-s-material .CodeMirror-guttermarker,\\n.cm-s-material .CodeMirror-guttermarker-subtle,\\n.cm-s-material .CodeMirror-linenumber {\\n color: #546E7A;\\n}\\n\\n.cm-s-material .CodeMirror-cursor {\\n border-left: 1px solid #FFCC00;\\n}\\n.cm-s-material.cm-fat-cursor .CodeMirror-cursor {\\n background-color: #5d6d5c80 !important;\\n}\\n.cm-s-material .cm-animate-fat-cursor {\\n background-color: #5d6d5c80 !important;\\n}\\n\\n.cm-s-material div.CodeMirror-selected {\\n background: rgba(128, 203, 196, 0.2);\\n}\\n\\n.cm-s-material.CodeMirror-focused div.CodeMirror-selected {\\n background: rgba(128, 203, 196, 0.2);\\n}\\n\\n.cm-s-material .CodeMirror-line::selection,\\n.cm-s-material .CodeMirror-line>span::selection,\\n.cm-s-material .CodeMirror-line>span>span::selection {\\n background: rgba(128, 203, 196, 0.2);\\n}\\n\\n.cm-s-material .CodeMirror-line::-moz-selection,\\n.cm-s-material .CodeMirror-line>span::-moz-selection,\\n.cm-s-material .CodeMirror-line>span>span::-moz-selection {\\n background: rgba(128, 203, 196, 0.2);\\n}\\n\\n.cm-s-material .CodeMirror-activeline-background {\\n background: rgba(0, 0, 0, 0.5);\\n}\\n\\n.cm-s-material .cm-keyword {\\n color: #C792EA;\\n}\\n\\n.cm-s-material .cm-operator {\\n color: #89DDFF;\\n}\\n\\n.cm-s-material .cm-variable-2 {\\n color: #EEFFFF;\\n}\\n\\n.cm-s-material .cm-variable-3,\\n.cm-s-material .cm-type {\\n color: #f07178;\\n}\\n\\n.cm-s-material .cm-builtin {\\n color: #FFCB6B;\\n}\\n\\n.cm-s-material .cm-atom {\\n color: #F78C6C;\\n}\\n\\n.cm-s-material .cm-number {\\n color: #FF5370;\\n}\\n\\n.cm-s-material .cm-def {\\n color: #82AAFF;\\n}\\n\\n.cm-s-material .cm-string {\\n color: #C3E88D;\\n}\\n\\n.cm-s-material .cm-string-2 {\\n color: #f07178;\\n}\\n\\n.cm-s-material .cm-comment {\\n color: #546E7A;\\n}\\n\\n.cm-s-material .cm-variable {\\n color: #f07178;\\n}\\n\\n.cm-s-material .cm-tag {\\n color: #FF5370;\\n}\\n\\n.cm-s-material .cm-meta {\\n color: #FFCB6B;\\n}\\n\\n.cm-s-material .cm-attribute {\\n color: #C792EA;\\n}\\n\\n.cm-s-material .cm-property {\\n color: #C792EA;\\n}\\n\\n.cm-s-material .cm-qualifier {\\n color: #DECB6B;\\n}\\n\\n.cm-s-material .cm-variable-3,\\n.cm-s-material .cm-type {\\n color: #DECB6B;\\n}\\n\\n\\n.cm-s-material .cm-error {\\n color: rgba(255, 255, 255, 1.0);\\n background-color: #FF5370;\\n}\\n\\n.cm-s-material .CodeMirror-matchingbracket {\\n text-decoration: underline;\\n color: white !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./addon-text.vue?vue&type=template&id=37fc9079\"\nimport script from \"./addon-text.vue?vue&type=script&lang=js\"\nexport * from \"./addon-text.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","name","components","TitleOptions","ButtonRadio","SliderInput","RwdGroup","props","lunaAddonMixin","setup","ctx","state","options","content","content_font_size","lg","md","xs","content_line_height","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_createVNode","_component_ButtonRadio","color","variant","align","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_10","size","_component_SliderInput","max","_hoisted_11"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.650.js","mappings":"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","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-text.vue","webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-text.vue?7de4"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-text.vue?vue&type=template&id=37fc9079\"\nimport script from \"./addon-text.vue?vue&type=script&lang=js\"\nexport * from \"./addon-text.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","name","components","TitleOptions","ButtonRadio","SliderInput","RwdGroup","props","lunaAddonMixin","setup","ctx","state","options","content","content_font_size","lg","md","xs","content_line_height","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","_ctx","title","text","$event","_hoisted_3","_createBlock","_component_TitleOptions","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_createVNode","_component_ButtonRadio","color","variant","align","_component_RwdGroup","_createSlots","label","_withCtx","_hoisted_10","size","_component_SliderInput","max","_hoisted_11"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/93.js.map b/assets/dist/93.js.map index ffab3df2..9beb83a8 100644 --- a/assets/dist/93.js.map +++ b/assets/dist/93.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.93.js","mappings":"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","sources":["webpack:///./src/vue/components/page-builder/addons/addon-button.vue","webpack:///./src/vue/components/page-builder/addons/addon-button.vue?bb7d"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-button.vue?vue&type=template&id=04d399ab\"\nimport script from \"./addon-button.vue?vue&type=script&lang=js\"\nexport * from \"./addon-button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","value","href","target","name","components","SliderInput","ButtonRadio","UnicornSwitcher","props","lunaAddonMixin","setup","ctx","state","uid","u","options","text","link","link_target","style","border_radius","size","block","icon","icon_position","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","type","_ctx","$event","_hoisted_3","_hoisted_4","_createVNode","_component_ButtonRadio","color","variant","align","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_component_UnicornSwitcher","shape","_hoisted_9","_hoisted_10","list","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_component_SliderInput","max","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_normalizeClass","_hoisted_45","_hoisted_46","_hoisted_47"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"page/chunk-vendor.93.js","mappings":"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","sources":["webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-button.vue","webpack://src/vue/entries/page-builder.js/./src/vue/components/page-builder/addons/addon-button.vue?bb7d"],"sourcesContent":["\n\n\n\n\n","import { render } from \"./addon-button.vue?vue&type=template&id=04d399ab\"\nimport script from \"./addon-button.vue?vue&type=script&lang=js\"\nexport * from \"./addon-button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","for","value","href","target","name","components","SliderInput","ButtonRadio","UnicornSwitcher","props","lunaAddonMixin","setup","ctx","state","uid","u","options","text","link","link_target","style","border_radius","size","block","icon","icon_position","toRefs","_createElementBlock","_hoisted_1","_hoisted_2","id","type","_ctx","$event","_hoisted_3","_hoisted_4","_createVNode","_component_ButtonRadio","color","variant","align","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_component_UnicornSwitcher","shape","_hoisted_9","_hoisted_10","list","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_component_SliderInput","max","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_normalizeClass","_hoisted_45","_hoisted_46","_hoisted_47"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/dist/946.js.map b/assets/dist/946.js.map index 016963be..a646831a 100644 --- a/assets/dist/946.js.map +++ b/assets/dist/946.js.map @@ -1 +1 @@ -{"version":3,"file":"page/chunk-vendor.946.js","mappings":"kJAGIA,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,6iFA4HtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uEAAuE,kEAAkE,2EAA2E,MAAQ,GAAG,SAAW,8mCAA8mC,WAAa,MAEn4C,S,iBChIA,IAAIC,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQE,SACnB,iBAAZF,IAAsBA,EAAU,CAAC,CAACF,EAAOC,GAAIC,EAAS,MAC7DA,EAAQG,SAAQL,EAAOM,QAAUJ,EAAQG,SAG/BE,EADH,UACO,WAAYL,GAAS,EAAM,CAAC,E","sources":["webpack:///./node_modules/vue-slider-component/theme/default.css","webpack:///./node_modules/vue-slider-component/theme/default.css?dd1c"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* component style */\n.vue-slider-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* rail style */\n.vue-slider-rail {\n background-color: #ccc;\n border-radius: 15px;\n}\n\n/* process style */\n.vue-slider-process {\n background-color: #3498db;\n border-radius: 15px;\n}\n\n/* mark style */\n.vue-slider-mark {\n z-index: 4;\n}\n.vue-slider-mark:first-child .vue-slider-mark-step, .vue-slider-mark:last-child .vue-slider-mark-step {\n display: none;\n}\n.vue-slider-mark-step {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.16);\n}\n.vue-slider-mark-label {\n font-size: 14px;\n white-space: nowrap;\n}\n/* dot style */\n.vue-slider-dot-handle {\n cursor: pointer;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #fff;\n box-sizing: border-box;\n box-shadow: 0.5px 0.5px 2px 1px rgba(0, 0, 0, 0.32);\n}\n.vue-slider-dot-handle-focus {\n box-shadow: 0px 0px 1px 2px rgba(52, 152, 219, 0.36);\n}\n\n.vue-slider-dot-handle-disabled {\n cursor: not-allowed;\n background-color: #ccc;\n}\n\n.vue-slider-dot-tooltip-inner {\n font-size: 14px;\n white-space: nowrap;\n padding: 2px 5px;\n min-width: 20px;\n text-align: center;\n color: #fff;\n border-radius: 5px;\n border-color: #3498db;\n background-color: #3498db;\n box-sizing: content-box;\n}\n.vue-slider-dot-tooltip-inner::after {\n content: \"\";\n position: absolute;\n}\n.vue-slider-dot-tooltip-inner-top::after {\n top: 100%;\n left: 50%;\n transform: translate(-50%, 0);\n height: 0;\n width: 0;\n border-color: transparent;\n border-style: solid;\n border-width: 5px;\n border-top-color: inherit;\n}\n.vue-slider-dot-tooltip-inner-bottom::after {\n bottom: 100%;\n left: 50%;\n transform: translate(-50%, 0);\n height: 0;\n width: 0;\n border-color: transparent;\n border-style: solid;\n border-width: 5px;\n border-bottom-color: inherit;\n}\n.vue-slider-dot-tooltip-inner-left::after {\n left: 100%;\n top: 50%;\n transform: translate(0, -50%);\n height: 0;\n width: 0;\n border-color: transparent;\n border-style: solid;\n border-width: 5px;\n border-left-color: inherit;\n}\n.vue-slider-dot-tooltip-inner-right::after {\n right: 100%;\n top: 50%;\n transform: translate(0, -50%);\n height: 0;\n width: 0;\n border-color: transparent;\n border-style: solid;\n border-width: 5px;\n border-right-color: inherit;\n}\n\n.vue-slider-dot-tooltip-wrapper {\n opacity: 0;\n transition: all 0.3s;\n}\n.vue-slider-dot-tooltip-wrapper-show {\n opacity: 1;\n}\n\n/*# sourceMappingURL=default.css.map */\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/vue-slider-component/lib/theme/default.scss\",\"webpack://./node_modules/vue-slider-component/theme/default.css\",\"webpack://./node_modules/vue-slider-component/lib/styles/_triangle.scss\"],\"names\":[],\"mappings\":\"AA2BA,oBAAA;AACA;EACE,YA1BgB;EA2BhB,mBAAA;AC1BF;;AD6BA,eAAA;AACA;EACE,sBA9BQ;EA+BR,mBA9BiB;ACInB;;AD6BA,kBAAA;AACA;EACE,yBAvCW;EAwCX,mBApCiB;ACUnB;;AD6BA,eAAA;AACA;EACE,UAAA;AC1BF;AD8BI;EACE,aAAA;AC5BN;ADgCW;EACP,WAAA;EACA,YAAA;EACA,kBArCe;EAsCf,qCArCU;ACOd;ADoCW;EACP,eA1CY;EA2CZ,mBAAA;AClCJ;ADyCA,cAAA;AAEW;EACP,eAAA;EACA,WAAA;EACA,YAAA;EACA,kBArEc;EAsEd,sBAxES;EAyET,sBAAA;EACA,mDA5EQ;ACoCZ;AD0Ca;EACP,oDA9EW;ACsCjB;;AD0Ca;EACP,mBAAA;EACA,sBAhFc;ACyCpB;;AD4Ca;EACP,eA7EY;EA8EZ,mBAAA;EACA,gBAlFW;EAmFX,eAlFY;EAmFZ,kBAAA;EACA,WAvFS;EAwFT,kBAvFgB;EAwFhB,qBAtGO;EAuGP,yBAvGO;EAwGP,uBAAA;ACzCN;AC7CE;EACE,WAAA;EACA,kBAAA;AD+CJ;AC3CI;EACE,SAAA;EACA,SAAA;EACA,6BAAA;EA5BJ,SAAA;EACA,QAAA;EAEE,yBAAA;EACA,mBAAA;EACA,iBAAA;EAME,yBF+F8B;AC3BpC;AC7CI;EACE,YAAA;EACA,SAAA;EACA,6BAAA;EArCJ,SAAA;EACA,QAAA;EAEE,yBAAA;EACA,mBAAA;EACA,iBAAA;EAEE,4BFmG8B;AChBpC;AC/CI;EACE,UAAA;EACA,QAAA;EACA,6BAAA;EA9CJ,SAAA;EACA,QAAA;EAEE,yBAAA;EACA,mBAAA;EACA,iBAAA;EAIE,0BFiG8B;ACLpC;ACjDI;EACE,WAAA;EACA,QAAA;EACA,6BAAA;EAvDJ,SAAA;EACA,QAAA;EAEE,yBAAA;EACA,mBAAA;EACA,iBAAA;EAQE,2BF6F8B;ACMpC;;ADFW;EACP,UAAA;EACA,oBAAA;ACKJ;ADJa;EACP,UAAA;ACMN;;AAEA,sCAAsC\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a \n","import { render } from \"./UnicornSwitcher.vue?vue&type=template&id=9a85c5e8\"\nimport script from \"./UnicornSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./UnicornSwitcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./BoxOffset.vue?vue&type=template&id=1e89935f\"\nimport script from \"./BoxOffset.vue?vue&type=script&lang=js\"\nexport * from \"./BoxOffset.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./ButtonRadio.vue?vue&type=template&id=4ace2794\"\nimport script from \"./ButtonRadio.vue?vue&type=script&lang=js\"\nexport * from \"./ButtonRadio.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./ColorInput.vue?vue&type=template&id=15ce10b7\"\nimport script from \"./ColorInput.vue?vue&type=script&lang=js\"\nexport * from \"./ColorInput.vue?vue&type=script&lang=js\"\n\nimport \"./ColorInput.vue?vue&type=style&index=0&id=15ce10b7&lang=css\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./RwdGroup.vue?vue&type=template&id=03baa07e\"\nimport script from \"./RwdGroup.vue?vue&type=script&lang=js\"\nexport * from \"./RwdGroup.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./SingleImage.vue?vue&type=template&id=7eef6952\"\nimport script from \"./SingleImage.vue?vue&type=script&lang=js\"\nexport * from \"./SingleImage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./SliderInput.vue?vue&type=template&id=2e650534\"\nimport script from \"./SliderInput.vue?vue&type=script&lang=js\"\nexport * from \"./SliderInput.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./TitleOptions.vue?vue&type=template&id=6b3dad3e\"\nimport script from \"./TitleOptions.vue?vue&type=script&lang=js\"\nexport * from \"./TitleOptions.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// style-loader: Adds some css to the DOM by adding a \n\n\n","\n\n\n\n\n","import { render } from \"./BsModal.vue?vue&type=template&id=17a30b42\"\nimport script from \"./BsModal.vue?vue&type=script&lang=js\"\nexport * from \"./BsModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","\n\n\n\n\n","import { render } from \"./CssEditor.vue?vue&type=template&id=21640638\"\nimport script from \"./CssEditor.vue?vue&type=script&lang=js\"\nexport * from \"./CssEditor.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n}\n\nexport default startsWith;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nexport default baseClamp;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","/**\n * Part of earth project.\n *\n * @copyright Copyright (C) 2021 __ORGANIZATION__.\n * @license __LICENSE__\n */\n\nimport { startsWith, each } from 'lodash-es';\n\nexport function bindSaveButton() {\n const $btn = document.querySelector('[data-task=save]');\n\n let className = '';\n $btn?.addEventListener('click', () => {\n const $icon = $btn.querySelector('[data-spinner]');\n\n $btn.disabled = true;\n className = $icon.getAttribute('class');\n $icon.setAttribute('class', 'spinner-border spinner-border-sm');\n\n savePage()\n .then((res) => {\n console.log('Save Success!');\n return res;\n })\n .finally(() => {\n $btn.disabled = false;\n $icon.setAttribute('class', className);\n });\n });\n}\n\nlet previousContent = '';\n\nexport function savePage() {\n const contentInput = document.querySelector('#input-item-content');\n\n if (previousContent !== '' && previousContent === contentInput.value) {\n console.warn('[Page] Content not change, there was an error or you didn\\'t edit anything.');\n }\n\n return u.$http.post(\n '@page_ajax/savePage',\n new FormData(document.querySelector('#admin-form'))\n )\n .then((res) => {\n console.log('儲存完成');\n\n if (res.data.data.redirect) {\n location.href = res.data.data.redirect;\n }\n\n return res;\n })\n .finally(() => {\n previousContent = contentInput.value;\n })\n .catch((e) => {\n console.error(e);\n swal(e.message, '', 'warning');\n });\n}\n\nexport function addTextToClipboard(text) {\n if (typeof text !== 'string') {\n text = JSON.stringify(text, null, 4);\n }\n\n const el = document.createElement('textarea');\n el.value = text;\n\n document.body.appendChild(el);\n\n el.select();\n\n document.execCommand('copy');\n\n document.body.removeChild(el);\n}\n\n/**\n * @returns {Promise}\n */\nexport function readClipboard() {\n return navigator.clipboard.readText()\n .catch(err => {\n console.error('Failed to read clipboard contents: ', err);\n });\n}\n\nexport function duplicateAny(data, child = false) {\n data = JSON.parse(JSON.stringify(data));\n\n if (Array.isArray(data)) {\n return data.map((datum) => duplicateAny(datum));\n }\n\n if (data.id.startsWith('row-')) {\n return duplicateRow(data);\n }\n\n if (data.id.startsWith('col-')) {\n return duplicateColumn(data);\n }\n\n if (data.id.startsWith('addon-')) {\n return duplicateAddon(data, child);\n }\n\n throw new Error('Unable to duplicate this type.');\n}\n\nexport function duplicateRow(row) {\n row = JSON.parse(JSON.stringify(row));\n\n row.id = 'row-' + u.uid();\n\n row.columns = row.columns.map((column) => duplicateColumn(column));\n\n return row;\n}\n\nexport function duplicateColumn(column) {\n column = JSON.parse(JSON.stringify(column));\n\n column.id = 'col-' + u.uid();\n\n column.addons = column.addons.map((addon) => duplicateAddon(addon))\n .filter((addon) => addon != null);\n\n return column;\n}\n\nexport function duplicateAddon(item, child = false) {\n let newItem = JSON.parse(JSON.stringify(item));\n\n if (item.type === 'row' || startsWith(item.id, 'row-')) {\n // Row\n if (child) {\n console.log('Cannot add row to child column.');\n return null;\n }\n\n newItem.type = 'row';\n\n newItem = duplicateRow(newItem);\n } else {\n // Addon\n newItem.id = 'addon-' + u.uid();\n }\n\n return newItem;\n}\n\nexport function toFormData(data) {\n const form = new FormData();\n\n each(data, (v, k) => {\n form.append(k, v);\n });\n\n return form;\n}\n\nexport function emptyRow() {\n return {\n id: 'row-' + u.uid(),\n disabled: false,\n options: {\n label: '',\n title: {\n text: '',\n element: 'h3',\n font_size: {\n lg: '',\n md: '',\n xs: ''\n },\n font_weight: '',\n color: '',\n margin_top: {\n lg: '',\n md: '',\n xs: ''\n },\n margin_bottom: {\n lg: '',\n md: '',\n xs: ''\n }\n },\n subtitle: {\n text: '',\n font_size: {\n lg: '',\n md: '',\n xs: ''\n }\n },\n html_id: '',\n html_class: '',\n html_css: '',\n title_align: 'center',\n valign: 'top',\n justify_content: 'start',\n fluid_row: false,\n no_gutter: false,\n padding: {\n lg: '',\n md: '',\n xs: ''\n },\n margin: {\n lg: '',\n md: '',\n xs: ''\n },\n display: {\n xs: 'd-block',\n md: 'd-md-block',\n lg: 'd-lg-block'\n },\n text_color: '',\n background: {\n type: 'none',\n color: '',\n image: {\n url: '',\n overlay: '',\n repeat: '',\n position: 'center center',\n attachment: 'inherit',\n size: 'cover'\n },\n gradient: {\n type: 'liner',\n angle: '',\n start_color: '',\n start_pos: '',\n end_color: '',\n end_pos: ''\n },\n video: {\n url: '',\n overlay: ''\n },\n parallax: false\n },\n animation: {\n name: '',\n duration: 300,\n delay: 0\n }\n },\n columns: [],\n };\n}\n\nexport function emptyColumn(child = false) {\n return {\n id: 'col-' + u.uid(),\n disabled: false,\n addons: [],\n options: {\n html_class: '',\n html_css: '',\n align: '',\n valign: 'top',\n padding: {\n xs: '',\n md: '',\n lg: '',\n },\n margin: {\n xs: '',\n md: '',\n lg: '',\n },\n text_color: '',\n width: {\n xs: '',\n md: '',\n lg: child ? 'col-lg-6' : 'col-lg-3',\n },\n display: {\n xs: 'd-block',\n md: 'd-md-block',\n lg: 'd-lg-block'\n },\n box_shadow: {\n enabled: 0,\n color: 'rgba(0, 0, 0, 1)',\n hoffset: 0,\n voffset: 0,\n blur: 0,\n spread: 0\n },\n border: {\n enabled: 0,\n width: {\n lg: 1,\n md: 1,\n xs: 1,\n },\n color: '',\n style: '',\n radius: {\n lg: 0,\n md: 0,\n xs: 0,\n }\n },\n background: {\n type: 'none',\n color: '',\n overlay: '',\n image: {\n url: '',\n repeat: '',\n position: 'center center',\n attachment: 'inherit',\n size: 'cover'\n },\n gradient: {\n type: 'liner',\n angle: '',\n start_color: '',\n start_pos: '',\n end_color: '',\n end_pos: ''\n },\n video: ''\n },\n animation: {\n name: '',\n duration: 300,\n delay: 0\n }\n }\n };\n}\n\nexport function addonBasicOptions() {\n return {\n html_class: '',\n html_css: '',\n label: '',\n title: {\n text: '',\n element: 'h3',\n font_size: {\n lg: '',\n md: '',\n xs: ''\n },\n font_weight: '',\n color: '',\n margin_top: {\n lg: '',\n md: '',\n xs: ''\n },\n margin_bottom: {\n lg: '',\n md: '',\n xs: ''\n }\n },\n align: '',\n // valign: 'top',\n padding: {\n xs: '',\n md: '',\n lg: '',\n },\n margin: {\n xs: '',\n md: '',\n lg: '',\n },\n text_color: '',\n display: {\n xs: 'd-block',\n md: 'd-md-block',\n lg: 'd-lg-block'\n },\n box_shadow: {\n enabled: 0,\n color: 'rgba(0, 0, 0, 1)',\n hoffset: 0,\n voffset: 0,\n blur: 0,\n spread: 0\n },\n border: {\n enabled: 0,\n width: {\n lg: 1,\n md: 1,\n xs: 1,\n },\n color: '',\n style: '',\n radius: {\n lg: 0,\n md: 0,\n xs: 0,\n }\n },\n background: {\n type: 'none',\n color: '',\n overlay: '',\n image: {\n url: '',\n repeat: '',\n position: 'center center',\n attachment: 'inherit',\n size: 'cover'\n },\n gradient: {\n type: 'liner',\n angle: '',\n start_color: '',\n start_pos: '',\n end_color: '',\n end_pos: ''\n },\n video: {\n url: ''\n }\n },\n animation: {\n name: '',\n duration: 300,\n delay: 0\n }\n };\n}\n","\n\n\n\n\n","import { render } from \"./Animations.vue?vue&type=template&id=3e5571c6\"\nimport script from \"./Animations.vue?vue&type=script&lang=js\"\nexport * from \"./Animations.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./Gradient.vue?vue&type=template&id=397c98dd\"\nimport script from \"./Gradient.vue?vue&type=script&lang=js\"\nexport * from \"./Gradient.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./AddonEdit.vue?vue&type=template&id=26e87fc6\"\nimport script from \"./AddonEdit.vue?vue&type=script&lang=js\"\nexport * from \"./AddonEdit.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import { render } from \"./ColumnEdit.vue?vue&type=template&id=cdb2ddec\"\nimport script from \"./ColumnEdit.vue?vue&type=script&lang=js\"\nexport * from \"./ColumnEdit.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import script from \"./Row.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Row.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./RowEdit.vue?vue&type=template&id=768d9065\"\nimport script from \"./RowEdit.vue?vue&type=script&lang=js\"\nexport * from \"./RowEdit.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./Store.vue?vue&type=template&id=0180151e\"\nimport script from \"./Store.vue?vue&type=script&lang=js\"\nexport * from \"./Store.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./RowEdit.vue?vue&type=template&id=768d9065\"\nimport script from \"./RowEdit.vue?vue&type=script&lang=js\"\nexport * from \"./RowEdit.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./Store.vue?vue&type=template&id=0180151e\"\nimport script from \"./Store.vue?vue&type=script&lang=js\"\nexport * from \"./Store.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/private/var/www/earth/vendor/lyrasoft/luna/assets/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","