{"version":3,"file":"js/app.bb64e91e.js","mappings":"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AS7R,GAEVsV,QAAQC,KAAK,4EACb/c,KAAK6V,cAAgBrO,CAExB,GAIL4X,MAAO,CAEHvf,IAAK,WAGD,OADAid,QAAQC,KAAK,uEACL/c,KAAK+V,SAEhB,EAEDsD,IAAK,SAAS7R,GAEVsV,QAAQC,KAAK,sEACb/c,KAAK+V,WAAavO,CAErB,GAIL6X,OAAQ,CAEJxf,IAAK,WAGD,OADAid,QAAQC,KAAK,yEACL/c,KAAKmW,UAEhB,EAEDkD,IAAK,SAAS7R,GAEVsV,QAAQC,KAAK,wEACb/c,KAAKmW,YAAc3O,CAEtB,GAIL8X,aAAc,CAEVzf,IAAK,WAGD,OADAid,QAAQC,KAAK,kFACL/c,KAAKyV,aAEhB,EAED4D,IAAK,SAAS7R,GAEVsV,QAAQC,KAAK,iFACb/c,KAAKyV,eAAiBjO,CAEzB,GAIL+X,qBAAsB,CAElB1f,IAAK,WAGD,OADAid,QAAQC,KAAK,sFACN/c,KAAK0V,aAEf,EAED2D,IAAK,SAAS7R,GAEVsV,QAAQC,KAAK,sFACb/c,KAAK0V,cAAgBlO,CAExB,KAMT,U,sBC19BA,MAAMgY,GAAa,GACbC,GAA4B,GAE5BC,GAAoB,CACtB,yBACA,uBACA,sBACA,2BACA,yBACA,0BACA,8BACA,6BACA,iBACA,6BACA,SACA,qBACA,oBACA,uBACA,oBACA,gBACA,+CACA,QACA,6CACA,iBACA,yDACA,0CACA,iDACA,SACA,cACA,qBACA,sGACA,YACA,gCACA,aACA,sDACA,SACA,iBACA,8CACA,sEACA,SACA,+CACA,SACA,IACA,IACFtP,KAAK,MAEDuP,GAAe,CACjB,yBACA,uBACA,0BACA,4BACA,iCACA,2BACA,gCACA,0BACA,+BACA,2BACA,4BACA,oBACA,uBACA,4BACA,gBACA,qBACA,SACA,wCACA,IACA,wCACA,4CACA,oEACA,gEACA,wDACA,wCACA,IACA,qCACA,IACA,gHACA,sCACA,iDACA,qCACA,uDACA,qCACA,iDACA,qCACA,uDACA,qCACA,uCACA,sFACA,iDACA,qCACA,6CACA,gDACA,iCACA,kCACA,yBACA,0BACA,oCACA,IACA,cACA,IACA,2CACA,oDACA,cACA,sFACA,yFACA,2GACA,2GACA,kDACA,wCACA,WACA,wCACA,SACA,cACA,cACA,8CACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,yCACA,QACA,oDACA,SACA,mDACA,QACA,sDACA,SACA,IACA,IACFvP,KAAK,MAEDwP,GAAe,CACjB,0BACA,oBACA,uBACA,wCACA,IACA,wCACA,4CACA,oEACA,gEACA,wDACA,wCACA,IACA,qCACA,IACA,gHACA,sCACA,iDACA,qCACA,uDACA,qCACA,iDACA,qCACA,uDACA,qCACA,uCACA,sFACA,iDACA,qCACA,6CACA,gDACA,iCACA,kCACA,yBACA,0BACA,oCACA,IACA,cACA,IACA,oCACA,cACA,cACA,mDACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,yCACA,QACA,+DACA,SACA,mDACA,QACA,2DACA,SACA,yDACA,IACA,IACFxP,KAAK,MAEDyP,GAAiB,CACnB,sBACA,uBACA,2BACA,yBACA,0BACA,8BACA,qBACA,oBACA,uBACA,oBACA,wCACA,IACA,IACFzP,KAAK,MAED0P,GAAqB,CACvB,yBACA,uBACA,sBACA,2BACA,+BACA,yBACA,0BACA,8BACA,6BACA,2BACA,iBACA,6BACA,SACA,qBACA,oBACA,oBACA,kDACA,8BACA,sCACA,oCACA,4CACA,iBACA,6CACA,qDACA,uDACA,kBACA,yDACA,aACA,wEACA,QACA,qBACA,6DACA,+CACA,aACA,kBACA,yBACA,sDACA,yGACA,gBACA,oCACA,iBACA,yDACA,YACA,sDACA,yBACA,+BACA,iBACA,aACA,+DACA,SACA,sDACA,IACA,IACF1P,KAAK,MAED2P,GAAmB,CACrB,yBACA,iCACA,gCACA,qBACA,2BACA,oBACA,cACA,IACA,gBACA,gFACA,IACA,IACF3P,KA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","sources":["webpack://world-web-ui/./src/App.vue?e16c","webpack://world-web-ui/./src/helpers/security.ts","webpack://world-web-ui/./src/helpers/data.ts","webpack://world-web-ui/./src/stores/index.ts","webpack://world-web-ui/./src/components/Sidebar.vue?a845","webpack://world-web-ui/./src/components/TMPLabel.vue?66d9","webpack://world-web-ui/./src/components/TMPLabel.vue?942d","webpack://world-web-ui/./src/components/TMPLabel.vue","webpack://world-web-ui/./src/components/Sidebar.vue?dcb7","webpack://world-web-ui/./src/components/Sidebar.vue","webpack://world-web-ui/./src/App.vue?847a","webpack://world-web-ui/./src/App.vue","webpack://world-web-ui/./src/plugins/i18n.ts","webpack://world-web-ui/./src/pages/Index.vue","webpack://world-web-ui/./src/components/WorldMap.vue","webpack://world-web-ui/./src/assets/js/DistrictColors.js","webpack://world-web-ui/./src/assets/js/Base64.js","webpack://world-web-ui/./src/assets/js/PlotMap.js","webpack://world-web-ui/./src/assets/js/GIFMANAGER.js","webpack://world-web-ui/./src/assets/js/GenChunk.js","webpack://world-web-ui/./src/assets/js/OrbitControls.js","webpack://world-web-ui/./src/assets/js/ecomap.ts","webpack://world-web-ui/./src/assets/js/MapControls.js","webpack://world-web-ui/./src/components/WorldMap.vue?1f26","webpack://world-web-ui/./src/components/ServerInfo.vue?da16","webpack://world-web-ui/./src/helpers/time.ts","webpack://world-web-ui/./src/components/ServerInfo.vue?f141","webpack://world-web-ui/./src/components/ServerInfo.vue","webpack://world-web-ui/./src/pages/Index.vue?70a3","webpack://world-web-ui/./src/pages/Comparison.vue","webpack://world-web-ui/./src/pages/Comparison.vue?4956","webpack://world-web-ui/./src/pages/Election.vue?1a54","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue?fb80","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue?d373","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue","webpack://world-web-ui/./src/components/modals/ElectionProcessModal.vue","webpack://world-web-ui/./src/components/modals/ElectionProcessModal.vue?3cba","webpack://world-web-ui/./src/pages/Election.vue?3d6a","webpack://world-web-ui/./src/pages/Election.vue","webpack://world-web-ui/./src/pages/Elections.vue?7527","webpack://world-web-ui/./src/pages/Elections.vue?4615","webpack://world-web-ui/./src/pages/Elections.vue","webpack://world-web-ui/./src/pages/Officials.vue?03f7","webpack://world-web-ui/./src/pages/Officials.vue?6780","webpack://world-web-ui/./src/pages/Officials.vue","webpack://world-web-ui/./src/pages/Profiling.vue","webpack://world-web-ui/./src/pages/Profiling.vue?b959","webpack://world-web-ui/./src/pages/Plugin.vue?1ee1","webpack://world-web-ui/./src/pages/Plugin.vue?ed98","webpack://world-web-ui/./src/pages/Plugin.vue","webpack://world-web-ui/./src/components/ThreeJSScene.vue","webpack://world-web-ui/./src/pages/Debug.vue","webpack://world-web-ui/./src/router/index.ts","webpack://world-web-ui/./src/plugins/WebGLPlugin.ts","webpack://world-web-ui/./src/main.ts","webpack://world-web-ui/./src/locales/ lazy ^\\.\\/.*\\.json$ namespace object","webpack://world-web-ui/webpack/bootstrap","webpack://world-web-ui/webpack/runtime/amd options","webpack://world-web-ui/webpack/runtime/chunk loaded","webpack://world-web-ui/webpack/runtime/compat get default export","webpack://world-web-ui/webpack/runtime/create fake namespace object","webpack://world-web-ui/webpack/runtime/define property getters","webpack://world-web-ui/webpack/runtime/ensure chunk","webpack://world-web-ui/webpack/runtime/get javascript chunk filename","webpack://world-web-ui/webpack/runtime/get mini-css chunk filename","webpack://world-web-ui/webpack/runtime/global","webpack://world-web-ui/webpack/runtime/harmony module decorator","webpack://world-web-ui/webpack/runtime/hasOwnProperty shorthand","webpack://world-web-ui/webpack/runtime/load script","webpack://world-web-ui/webpack/runtime/make namespace object","webpack://world-web-ui/webpack/runtime/publicPath","webpack://world-web-ui/webpack/runtime/jsonp chunk loading","webpack://world-web-ui/webpack/startup"],"sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"wrapper\" }\nconst _hoisted_2 = { id: \"page-wrapper\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_progress_bar = _resolveComponent(\"vue-progress-bar\")!\n const _component_Sidebar = _resolveComponent(\"Sidebar\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_vue_progress_bar),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_Sidebar),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_router_view)\n ])\n ])\n ], 64))\n}","/**\r\n * Recursive method for clearing vars of any types from XSS attacks\r\n */\r\nexport function clearFromXSS(data: any): any {\r\n // Removing all \r\n","\r\n\r\n\r\n\r\n","\nimport * as THREE from 'three';\n\n\n// Now it's constructor and can't be called with old \"THREE.Texture.call(this\", therefore should be extended\nclass DistrictColors extends THREE.Texture {\n constructor(type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n var width = 256;\n var height = 1;\n\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\n this.ctxt = canvas.getContext('2d');\n this.ctxt.webkitImageSmoothingEnabled = false;\n\n this.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n this.zoneColor = \"#FFFFFF\";\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n this.ctxt.miterLimit = 0;\n this.ctxt.lineJoin = \"bevel\";\n this.erasing = false;\n\n\n this.generateMipmaps = false;\n this.Reset();\n this.lastData = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n }\n\n SetPixel(vec, color) {\n var id = this.ctxt.createImageData(1, 1);\n id.data[0] = color.r;\n id.data[1] = color.g;\n id.data[2] = color.b;\n id.data[3] = color.a;\n this.ctxt.putImageData(id, vec.x, vec.y);\n this.needsUpdate = true;\n }\n\n SetDistrictColorFromStyle(id, style) {\n this.ctxt.fillStyle = style;\n this.ctxt.fillRect(id, 0, 1, 1);\n this.needsUpdate = true;\n }\n\n Reset() {\n this.ctxt.fillStyle = \"#FF0000\";\n this.ctxt.fillRect(0, 0, this.image.width, this.image.height);\n this.ctxt.fillStyle = this.zoneColor;\n this.needsUpdate = true;\n }\n}\n\nexport default DistrictColors;\n","\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction placeHoldersCount(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction toByteArray(b64) {\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n placeHolders = placeHoldersCount(b64);\n\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\n\nexport default { toByteArray, fromByteArray };\n","\nimport * as THREE from 'three';\nimport Base64 from './Base64';\n\n\n// Now it's constructor and can't be called with old \"THREE.Texture.call(this\", therefore should be extended\nclass PlotMap extends THREE.Texture {\n constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n //if ( type === undefined && format === THREE.DepthFormat ) type = THREE.UnsignedShortType;\n //if ( type === undefined && format === THREE.DepthStencilFormat ) type = THREE.UnsignedInt248Type;\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\n this.ctxt = canvas.getContext('2d');\n this.ctxt.webkitImageSmoothingEnabled = false;\n\n this.zoneColor = \"#000000\";\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n this.ctxt.miterLimit = 0;\n this.ctxt.lineJoin = \"bevel\";\n this.erasing = false;\n\n this.plotSize = 1;\n\n this.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n this.generateMipmaps = false;\n this.Reset();\n this.lastData = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n }\n\n SetColor(color) {\n this.zoneColor = color;\n this.ctxt.fillStyle = color;\n this.ctxt.strokeStyle = color;\n }\n\n SetPixel(vec, size = 1) {\n this.ctxt.fillRect(vec.x - size, vec.y - size, 1 + size * 2, 1 + size * 2);\n this.ctxt.beginPath();\n this.ctxt.moveTo(vec.x + 0.5, vec.y + 0.5);\n this.needsUpdate = true;\n }\n\n // canvas lineto uses anti-aliasing that sets incorrect district IDs... using Bresenham line drawing instead\n DrawLine(start, end, size = 1) {\n if (start.distanceTo(end) > this.image.width / 2) {\n // TODO: figure out the right direction and do some wrapping or draw 2 line segments\n this.SetPixel(end, size);\n } else {\n var vec = start.clone();\n var dx = Math.abs(end.x - vec.x);\n var dy = Math.abs(end.y - vec.y);\n var sx = (vec.x < end.x) ? 1 : -1;\n var sy = (vec.y < end.y) ? 1 : -1;\n var err = dx - dy;\n const tr = true;\n\n while (tr) {\n this.SetPixel(vec, size);\n\n if ((vec.x == end.x) && (vec.y == end.y)) break;\n var e2 = 2 * err;\n if (e2 > -dy) { err -= dy; vec.x += sx; }\n if (e2 < dx) { err += dx; vec.y += sy; }\n }\n }\n }\n\n SetRect(a, b) {\n this.mask[a.x + a.y * this.width / 5] = 255;\n var min = new THREE.Vector2((a.x < b.x) ? a.x : b.x, (a.y < b.y) ? a.y : b.y);\n var size = new THREE.Vector2(Math.abs(a.x - b.x), Math.abs(a.y - b.y));\n\n this.ctxt.fillRect(5 * min.x + 2.5, 5 * min.y + 2.5, size.x * 5, size.y * 5);\n this.needsUpdate = true;\n }\n\n SetEraseMode(x) {\n this.erasing = x;\n if (this.erasing) {\n this.ctxt.fillStyle = \"#000000\";\n this.ctxt.strokeStyle = \"#000000\";\n } else {\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n }\n }\n\n Reset() {\n this.ctxt.fillStyle = \"#000000\";\n this.ctxt.fillRect(0, 0, this.image.width, this.image.height);\n this.ctxt.fillStyle = this.zoneColor;\n this.needsUpdate = true;\n }\n\n AntiAntiAlias() {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n for (var y = 0; y < data.data.length; y++) {\n data.data[y] = data.data[y] > 128 ? 255 : 0;\n }\n this.ctxt.putImageData(data, 0, 0);\n this.ctxt.needsUpdate = true;\n }\n\n GetArray() {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n var mask = new Uint8Array(data.data.length / 4);\n //Packing to array w/ 1-byte per pixel\n for (var i = 0; i < mask.length; i++) {\n mask[i] = data.data[i * 4];\n }\n var tmp = Base64.fromByteArray(mask);\n return tmp;\n }\n\n LoadArray(b64MaskString) {\n // unpack to 1bpp array\n var mask = Base64.toByteArray(b64MaskString);\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n\n for (var i = 0; i < mask.length; i++) {\n data.data[(i * 4)] = mask[i];\n data.data[(i * 4) + 1] = mask[i];\n data.data[(i * 4) + 1] = mask[i];\n }\n this.ctxt.putImageData(data, 0, 0);\n this.needsUpdate = true;\n }\n\n ApplyDistrictColors(colorsArray) {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n for (var i = 0; i < data.data.length; i += 4) {\n var districtOffset = data.data[i] * 4;\n for (var j = 0; j < 4; j++)\n data.data[i + j] = colorsArray[districtOffset + j];\n }\n this.ctxt.putImageData(data, 0, 0);\n this.ctxt.needsUpdate = true;\n }\n\n LoadDistrictMap(districtData) {\n this.metadata = districtData.DistrictMetadata;\n var colorsArray = new Uint8Array(256 * 4);\n colorsArray[0] = 255; // 0 is white / \"no district\"\n colorsArray[1] = 255;\n colorsArray[2] = 255;\n colorsArray[3] = 255;\n for (var i = 0; i < districtData.DistrictMetadata.length; i++) {\n var id = districtData.DistrictMetadata[i].ID;\n colorsArray[id * 4] = districtData.DistrictMetadata[i].R;\n colorsArray[id * 4 + 1] = districtData.DistrictMetadata[i].G;\n colorsArray[id * 4 + 2] = districtData.DistrictMetadata[i].B;\n colorsArray[id * 4 + 3] = 255;\n }\n if (districtData.DistrictMap != undefined)\n this.LoadArray(districtData.DistrictMap);\n this.ApplyDistrictColors(colorsArray);\n }\n}\n\nexport default PlotMap;\n","\nvar GIFMANAGER = (function () {\n var my = {};\n my.gifStorage = {};\n my.gifTimes = {};\n\n my.giftextures = function (name, onFinish) {\n if (!my.gifStorage[name]) {\n //parseName = name;\n my.gifStorage[name] = [];\n my.gifTimes[name] = [];\n } else if (onFinish) {\n onFinish(name);\n }\n return my.gifStorage[name];\n };\n\n my.OnGifLoaded = null;\n\n return my;\n}());\n\n\nexport default GIFMANAGER;\n","\nimport * as THREE from 'three';\n\nfunction GenChunk(xSize, zSize, worldX, worldZ) {\n var geometry = new THREE.InstancedBufferGeometry();\n\n var v = new THREE.BufferAttribute(new Float32Array((xSize + 1) * (zSize + 1) * 4 * 4), 4);\n var t = new THREE.BufferAttribute(new Uint16Array(xSize * zSize * 18), 1);\n\n function p(x, z) {\n return 4 * ((xSize + 1) * z + x);\n }\n\n // z\n // ^ p p+1\n // |\n // | 3 2 7 6\n // |\n // | 0 1 4 5\n // +------------> x\n\n var i = 0;\n var ti = 0;\n var iUp = 0;\n for (var z = 0; z <= zSize; z++) {\n for (var x = 0; x <= xSize; x++) {\n //index = p(x, z);\n v.setXYZW(i, x * 100, 50, z * 100, 50);\n v.setXYZW(i + 1, x * 100 + 100, -50, z * 100, 50);\n v.setXYZW(i + 2, x * 100 + 100, -50, z * 100 + 100, -50);\n v.setXYZW(i + 3, x * 100, 50, z * 100 + 100, -50);\n\n if (x < xSize && z < zSize) {\n t.setXYZ(ti, i + 0, i + 2, i + 1);\n t.setXYZ(ti + 3, i + 0, i + 3, i + 2);\n\n //if (x < xSize) {\n t.setXYZ(ti + 6, i + 1, i + 2, i + 7);\n t.setXYZ(ti + 9, i + 1, i + 7, i + 4);\n //}\n\n //if (z + 1 < zSize) {\n iUp = p(x, z + 1);\n t.setXYZ(ti + 12, i + 2, i + 3, iUp);\n t.setXYZ(ti + 15, i + 2, iUp, iUp + 1);\n //}\n ti += 18;\n }\n i += 4;\n }\n }\n\n geometry.setIndex(t);\n geometry.setAttribute('position', v);\n\n let d = Math.round(worldX / xSize);\n let instances = d * d;\n let o = new THREE.InstancedBufferAttribute(new Float32Array(instances * 3), 3, true);\n i = 0;\n\n for (z = 0; z < d; z++) {\n for (x = 0; x < d; x++) {\n o.setXYZ(i++, (x * xSize * 100) - (worldX * 50), 0.001, (z * zSize * 100) - (worldZ * 50));\n }\n }\n\n geometry.setAttribute(\"translate\", o);\n // threejs isn't setting this for some reason and nothing renders w/o it\n geometry.instanceCount = instances;\n geometry.boundingSphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), worldX * 1000);\n\n return geometry;\n}\n\nexport default GenChunk;\n","/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\nimport * as THREE from 'three';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one finger move\n// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n// Pan - right mouse, or arrow keys / touch: three finter swipe\n\nvar OrbitControls = function(object, domElement) {\n\n this.object = object;\n\n this.domElement = (domElement !== undefined) ? domElement : document;\n\n // Set to false to disable this control\n this.enabled = true;\n\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new THREE.Vector3();\n\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0;\n this.maxDistance = Infinity;\n\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0;\n this.maxZoom = Infinity;\n\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0; // radians\n this.maxPolarAngle = Math.PI; // radians\n\n // How far you can orbit horizontally, upper and lower limits.\n // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n this.minAzimuthAngle = -Infinity; // radians\n this.maxAzimuthAngle = Infinity; // radians\n\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false;\n this.dampingFactor = 0.25;\n\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true;\n this.zoomSpeed = 1.0;\n\n // Set to false to disable rotating\n this.enableRotate = true;\n this.rotateSpeed = 1.0;\n\n // Set to false to disable panning\n this.enablePan = true;\n this.keyPanSpeed = 7.0; // pixels moved per arrow key push\n\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = false;\n this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n // Set to false to disable use of the keys\n this.enableKeys = true;\n\n // The four arrow keys\n this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n // Mouse buttons\n this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };\n\n // for reset\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom;\n\n //\n // public methods\n //\n\n this.getPolarAngle = function() {\n\n return spherical.phi;\n\n };\n\n this.getAzimuthalAngle = function() {\n\n return spherical.theta;\n\n };\n\n this.reset = function() {\n\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(changeEvent);\n\n scope.update();\n\n state = STATE.NONE;\n\n };\n\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = function() {\n\n var offset = new THREE.Vector3();\n\n // so camera.up is the orbit axis\n var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));\n var quatInverse = quat.clone().invert();\n\n var lastPosition = new THREE.Vector3();\n var lastQuaternion = new THREE.Quaternion();\n\n return function update() {\n\n var position = scope.object.position;\n\n offset.copy(position).sub(scope.target);\n\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat);\n\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset);\n\n if (scope.autoRotate && state === STATE.NONE) {\n\n rotateLeft(getAutoRotationAngle());\n\n }\n\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n\n // restrict theta to be between desired limits\n spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta));\n\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n\n spherical.makeSafe();\n\n\n spherical.radius *= scale;\n\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\n\n // move target to panned location\n scope.target.add(panOffset);\n\n offset.setFromSpherical(spherical);\n\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse);\n\n position.copy(scope.target).add(offset);\n\n scope.object.lookAt(scope.target);\n\n if (scope.enableDamping === true) {\n\n sphericalDelta.theta *= (1 - scope.dampingFactor);\n sphericalDelta.phi *= (1 - scope.dampingFactor);\n\n } else {\n\n sphericalDelta.set(0, 0, 0);\n\n }\n\n scale = 1;\n panOffset.set(0, 0, 0);\n\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n if (zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n\n scope.dispatchEvent(changeEvent);\n\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n\n return true;\n\n }\n\n return false;\n\n };\n\n }();\n\n this.dispose = function() {\n\n scope.domElement.removeEventListener('contextmenu', onContextMenu, false);\n scope.domElement.removeEventListener('mousedown', onMouseDown, false);\n scope.domElement.removeEventListener('wheel', onMouseWheel, false);\n\n scope.domElement.removeEventListener('touchstart', onTouchStart, false);\n scope.domElement.removeEventListener('touchend', onTouchEnd, false);\n scope.domElement.removeEventListener('touchmove', onTouchMove, false);\n\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n window.removeEventListener('keydown', onKeyDown, false);\n\n //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n };\n\n //\n // internals\n //\n\n var scope = this;\n\n var changeEvent = { type: 'change' };\n var startEvent = { type: 'start' };\n var endEvent = { type: 'end' };\n\n var STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 };\n\n var state = STATE.NONE;\n\n var EPS = 0.000001;\n\n // current position in spherical coordinates\n var spherical = new THREE.Spherical();\n var sphericalDelta = new THREE.Spherical();\n\n var scale = 1;\n var panOffset = new THREE.Vector3();\n var zoomChanged = false;\n\n var rotateStart = new THREE.Vector2();\n var rotateEnd = new THREE.Vector2();\n var rotateDelta = new THREE.Vector2();\n\n var panStart = new THREE.Vector2();\n var panEnd = new THREE.Vector2();\n var panDelta = new THREE.Vector2();\n\n var dollyStart = new THREE.Vector2();\n var dollyEnd = new THREE.Vector2();\n var dollyDelta = new THREE.Vector2();\n\n function getAutoRotationAngle() {\n\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n }\n\n function getZoomScale() {\n\n return Math.pow(0.95, scope.zoomSpeed);\n\n }\n\n function rotateLeft(angle) {\n\n sphericalDelta.theta -= angle;\n\n }\n\n function rotateUp(angle) {\n\n sphericalDelta.phi -= angle;\n\n }\n\n var panLeft = function() {\n\n var v = new THREE.Vector3();\n\n return function panLeft(distance, objectMatrix) {\n\n v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n v.multiplyScalar(-distance);\n\n panOffset.add(v);\n\n };\n\n }();\n\n var panUp = function() {\n\n var v = new THREE.Vector3();\n\n return function panUp(distance, objectMatrix) {\n\n v.setFromMatrixColumn(objectMatrix, 1); // get Y column of objectMatrix\n v.multiplyScalar(distance);\n\n panOffset.add(v);\n\n };\n\n }();\n\n // deltaX and deltaY are in pixels; right and down are positive\n var pan = function() {\n\n var offset = new THREE.Vector3();\n\n return function pan(deltaX, deltaY) {\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n // perspective\n var position = scope.object.position;\n offset.copy(position).sub(scope.target);\n var targetDistance = offset.length();\n\n // half of the fov is center to top of screen\n targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);\n\n // we actually don't use screenWidth, since perspective camera is fixed to screen height\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n // orthographic\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n\n } else {\n\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n scope.enablePan = false;\n\n }\n\n };\n\n }();\n\n function dollyIn(dollyScale) {\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n scale /= dollyScale;\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n\n } else {\n\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n\n }\n\n }\n\n function dollyOut(dollyScale) {\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n scale *= dollyScale;\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n\n } else {\n\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n\n }\n\n }\n\n //\n // event callbacks - update the object state\n //\n\n function handleMouseDownRotate(event) {\n\n //console.log( 'handleMouseDownRotate' );\n\n rotateStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseDownDolly(event) {\n\n //console.log( 'handleMouseDownDolly' );\n\n dollyStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseDownPan(event) {\n\n //console.log( 'handleMouseDownPan' );\n\n panStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseMoveRotate(event) {\n\n //console.log( 'handleMouseMoveRotate' );\n\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart);\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);\n\n rotateStart.copy(rotateEnd);\n\n scope.update();\n\n }\n\n function handleMouseMoveDolly(event) {\n\n //console.log( 'handleMouseMoveDolly' );\n\n dollyEnd.set(event.clientX, event.clientY);\n\n dollyDelta.subVectors(dollyEnd, dollyStart);\n\n if (dollyDelta.y > 0) {\n\n dollyIn(getZoomScale());\n\n } else if (dollyDelta.y < 0) {\n\n dollyOut(getZoomScale());\n\n }\n\n dollyStart.copy(dollyEnd);\n\n scope.update();\n\n }\n\n function handleMouseMovePan(event) {\n\n //console.log( 'handleMouseMovePan' );\n\n panEnd.set(event.clientX, event.clientY);\n\n panDelta.subVectors(panEnd, panStart);\n\n pan(panDelta.x, panDelta.y);\n\n panStart.copy(panEnd);\n\n scope.update();\n\n }\n\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyOut(getZoomScale());\n } else if (event.deltaY > 0) {\n dollyIn(getZoomScale());\n }\n\n scope.update();\n }\n\n function handleKeyDown(event) {\n\n //console.log( 'handleKeyDown' );\n\n switch (event.keyCode) {\n\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n scope.update();\n break;\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n scope.update();\n break;\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n scope.update();\n break;\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n scope.update();\n break;\n\n }\n\n }\n\n function handleTouchStartRotate(event) {\n\n //console.log( 'handleTouchStartRotate' );\n\n rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);\n\n }\n\n function handleTouchStartDolly(event) {\n\n //console.log( 'handleTouchStartDolly' );\n\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n\n var distance = Math.sqrt(dx * dx + dy * dy);\n\n dollyStart.set(0, distance);\n\n }\n\n function handleTouchStartPan(event) {\n\n //console.log( 'handleTouchStartPan' );\n\n panStart.set(event.touches[0].pageX, event.touches[0].pageY);\n\n }\n\n function handleTouchMoveRotate(event) {\n\n //console.log( 'handleTouchMoveRotate' );\n\n rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n rotateDelta.subVectors(rotateEnd, rotateStart);\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);\n\n rotateStart.copy(rotateEnd);\n\n scope.update();\n\n }\n\n function handleTouchMoveDolly(event) {\n\n //console.log( 'handleTouchMoveDolly' );\n\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n\n var distance = Math.sqrt(dx * dx + dy * dy);\n\n dollyEnd.set(0, distance);\n\n dollyDelta.subVectors(dollyEnd, dollyStart);\n\n if (dollyDelta.y > 0) {\n\n dollyOut(getZoomScale());\n\n } else if (dollyDelta.y < 0) {\n\n dollyIn(getZoomScale());\n\n }\n\n dollyStart.copy(dollyEnd);\n\n scope.update();\n\n }\n\n function handleTouchMovePan(event) {\n\n //console.log( 'handleTouchMovePan' );\n\n panEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n\n panDelta.subVectors(panEnd, panStart);\n\n pan(panDelta.x, panDelta.y);\n\n panStart.copy(panEnd);\n\n scope.update();\n\n }\n\n //\n // event handlers - FSM: listen for events and reset state\n //\n\n function onMouseDown(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n\n if (event.button === scope.mouseButtons.ORBIT) {\n\n if (scope.enableRotate === false) return;\n\n handleMouseDownRotate(event);\n\n state = STATE.ROTATE;\n\n } else if (event.button === scope.mouseButtons.ZOOM) {\n\n if (scope.enableZoom === false) return;\n\n handleMouseDownDolly(event);\n\n state = STATE.DOLLY;\n\n } else if (event.button === scope.mouseButtons.PAN) {\n\n if (scope.enablePan === false) return;\n\n handleMouseDownPan(event);\n\n state = STATE.PAN;\n\n }\n\n if (state !== STATE.NONE) {\n\n document.addEventListener('mousemove', onMouseMove, false);\n document.addEventListener('mouseup', onMouseUp, false);\n\n scope.dispatchEvent(startEvent);\n\n }\n\n }\n\n function onMouseMove(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n\n if (state === STATE.ROTATE) {\n\n if (scope.enableRotate === false) return;\n\n handleMouseMoveRotate(event);\n\n } else if (state === STATE.DOLLY) {\n\n if (scope.enableZoom === false) return;\n\n handleMouseMoveDolly(event);\n\n } else if (state === STATE.PAN) {\n\n if (scope.enablePan === false) return;\n\n handleMouseMovePan(event);\n // if( typeof(causeeffect) !== 'undefined' && typeof(causeeffect.updateMapsInfo) !== 'undefined' ) {\n // \tif( causeeffect.updateMapsInfo_timeout != undefined ) clearTimeout(causeeffect.updateMapsInfo_timeout);\n // \tcauseeffect.updateMapsInfo_timeout = setTimeout(function(){causeeffect.updateMapsInfo()},1500);\n // }\n }\n }\n\n function onMouseUp() {\n\n if (scope.enabled === false) return;\n\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n scope.dispatchEvent(endEvent);\n\n state = STATE.NONE;\n\n }\n\n function onMouseWheel(event) {\n\n if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n handleMouseWheel(event);\n\n // if( typeof(causeeffect) !== 'undefined' && typeof(causeeffect.updateMapsInfo) !== 'undefined' ) {\n // \tif( causeeffect.updateMapsInfo_timeout != undefined ) clearTimeout(causeeffect.updateMapsInfo_timeout);\n // \tcauseeffect.updateMapsInfo_timeout = setTimeout(function(){causeeffect.updateMapsInfo()},1500);\n // }\n\n scope.dispatchEvent(startEvent); // not sure why these are here...\n scope.dispatchEvent(endEvent);\n\n }\n\n function onKeyDown(event) {\n\n if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return;\n\n handleKeyDown(event);\n\n }\n\n function onTouchStart(event) {\n\n if (scope.enabled === false) return;\n\n switch (event.touches.length) {\n\n case 1: // one-fingered touch: rotate\n\n if (scope.enableRotate === false) return;\n\n handleTouchStartRotate(event);\n\n state = STATE.TOUCH_ROTATE;\n\n break;\n\n case 2: // two-fingered touch: dolly\n\n if (scope.enableZoom === false) return;\n\n handleTouchStartDolly(event);\n\n state = STATE.TOUCH_DOLLY;\n\n break;\n\n case 3: // three-fingered touch: pan\n\n if (scope.enablePan === false) return;\n\n handleTouchStartPan(event);\n\n state = STATE.TOUCH_PAN;\n\n break;\n\n default:\n\n state = STATE.NONE;\n\n }\n\n if (state !== STATE.NONE) {\n\n scope.dispatchEvent(startEvent);\n\n }\n\n }\n\n function onTouchMove(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n switch (event.touches.length) {\n\n case 1: // one-fingered touch: rotate\n\n if (scope.enableRotate === false) return;\n if (state !== STATE.TOUCH_ROTATE) return; // is this needed?...\n\n handleTouchMoveRotate(event);\n\n break;\n\n case 2: // two-fingered touch: dolly\n\n if (scope.enableZoom === false) return;\n if (state !== STATE.TOUCH_DOLLY) return; // is this needed?...\n\n handleTouchMoveDolly(event);\n\n break;\n\n case 3: // three-fingered touch: pan\n\n if (scope.enablePan === false) return;\n if (state !== STATE.TOUCH_PAN) return; // is this needed?...\n\n handleTouchMovePan(event);\n\n break;\n\n default:\n\n state = STATE.NONE;\n\n }\n\n }\n\n function onTouchEnd() {\n if (scope.enabled === false) return;\n\n scope.dispatchEvent(endEvent);\n state = STATE.NONE;\n }\n\n function onContextMenu(event) {\n\n event.preventDefault();\n\n }\n\n //\n\n scope.domElement.addEventListener('contextmenu', onContextMenu, false);\n\n scope.domElement.addEventListener('mousedown', onMouseDown, false);\n scope.domElement.addEventListener('wheel', onMouseWheel, false);\n\n scope.domElement.addEventListener('touchstart', onTouchStart, false);\n scope.domElement.addEventListener('touchend', onTouchEnd, false);\n scope.domElement.addEventListener('touchmove', onTouchMove, false);\n\n window.addEventListener('keydown', onKeyDown, false);\n\n // force an update at start\n\n this.update();\n\n};\n\nOrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);\nOrbitControls.prototype.constructor = OrbitControls;\n\nObject.defineProperties(OrbitControls.prototype, {\n\n center: {\n\n get: function() {\n\n console.warn('OrbitControls: .center has been renamed to .target');\n return this.target;\n\n }\n\n },\n\n // backward compatibility\n\n noZoom: {\n\n get: function() {\n\n console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\n return !this.enableZoom;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\n this.enableZoom = !value;\n\n }\n\n },\n\n noRotate: {\n\n get: function() {\n\n console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\n return !this.enableRotate;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\n this.enableRotate = !value;\n\n }\n\n },\n\n noPan: {\n\n get: function() {\n\n console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\n return !this.enablePan;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\n this.enablePan = !value;\n\n }\n\n },\n\n noKeys: {\n\n get: function() {\n\n console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\n return !this.enableKeys;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\n this.enableKeys = !value;\n\n }\n\n },\n\n staticMoving: {\n\n get: function() {\n\n console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\n return !this.enableDamping;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\n this.enableDamping = !value;\n\n }\n\n },\n\n dynamicDampingFactor: {\n\n get: function() {\n\n console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\n return this.dampingFactor;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\n this.dampingFactor = value;\n\n }\n\n }\n\n});\n\nexport default OrbitControls;","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport * as THREE from 'three';\r\nimport DistrictColors from './DistrictColors';\r\nimport PlotMap from './PlotMap';\r\nimport axios from 'axios';\r\nimport GIFMANAGER from './GIFMANAGER'\r\nimport GenChunk from './GenChunk'\r\nimport OrbitControls from './OrbitControls'\r\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'\r\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\r\n\r\nconst waterAlpha = 0.6;\r\nconst waterAlphaInDistrictsMode = 0.3;\r\n\r\nconst rawFragmentShader = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"uniform float time;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform sampler2D terrain;\",\r\n \"#ifdef DRAWING\",\r\n \"uniform sampler2D drawmap;\",\r\n \"#endif\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"void main(void) {\",\r\n \"#ifdef LOOKUP\",\r\n \" gl_FragColor = vec4(vUv, 0.0, vColor.r);\",\r\n \"#else\",\r\n \" vec3 mColor = texture2D(map, vUv).rgb;\",\r\n \"#ifdef HEATMAP\",\r\n \" float a = mColor.r > 0.2 ? 1.0 : (mColor.r + 0.8);\",\r\n \" vec2 uv = vec2(mColor.r, mColor.g);\",\r\n \" mColor = vColor - texture2D(heat, uv).rgb;\",\r\n \"#endif\",\r\n \"#ifdef FMAP\",\r\n \" #ifdef HEATMAP\",\r\n \" mColor = (mColor * a) + ((1.0 - a) * (vColor - (vec3(1, 1, 1) - texture2D(terrain, vUv).rgb)));\",\r\n \" #else\",\r\n \" mColor = vColor * mColor;\",\r\n \" #endif\",\r\n \" mColor = mColor * texture2D(features, vUv).rgb;\",\r\n \"#endif\",\r\n \"#ifdef DRAWING\",\r\n \" vec4 drawing = texture2D(drawmap, vUv);\",\r\n \" mColor = (drawing.r > 0.0) ? (vec3(1, 1, 1) - mColor) : mColor;\",\r\n \"#endif\",\r\n \" gl_FragColor = vec4(mColor * tint, 0.1);\",\r\n \"#endif\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst curvedVertex = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"#define VERTEX_TEXTURES\",\r\n \"uniform mat4 modelMatrix;\",\r\n \"uniform mat4 projectionMatrix;\",\r\n \"uniform mat4 viewMatrix;\",\r\n \"uniform mat4 modelViewMatrix;\",\r\n \"uniform vec4 worldSize;\",\r\n \"uniform vec3 cameraPosition;\",\r\n \"attribute vec4 position;\",\r\n \"attribute vec3 translate;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"uniform sampler2D height;\",\r\n \"#ifdef LOOKUP\",\r\n \"uniform vec3 tint;\",\r\n \"#endif\",\r\n \"vec3 slerp(vec3 p0, vec3 p1, float t)\",\r\n \"{\",\r\n \" float cosHalfTheta = dot(p0, p1);\",\r\n \" float halfTheta = acos(cosHalfTheta);\",\r\n \" float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\",\r\n \" float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\",\r\n \" float ratioB = sin(t * halfTheta) / sinHalfTheta;\",\r\n \" return p0 * ratioA + p1 * ratioB;\",\r\n \"}\",\r\n \"vec4 curveVertexFixed(vec4 vertex)\",\r\n \"{\",\r\n \" float radius = worldSize.x / 3.14159; vec3 center = vec3(cameraPosition.x, -radius, cameraPosition.z);\",\r\n \" vec4 vv = modelMatrix * vertex;\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" vec3 toVertex = vv.xyz - center;\",\r\n \" vec3 v1 = vec3(0, toVertex.y, 0); vec3 xz = vec3(toVertex.x, 0, toVertex.z);\",\r\n \" vec3 v2 = normalize(xz) * abs(toVertex.y);\",\r\n \" float d = length(toVertex.xz);\",\r\n \" float c = 2.0 * 3.14159 * abs(radius);\",\r\n \" float t = clamp(d / (c / 4.0), 0.0, 2.0);\",\r\n \" vec3 s = slerp(v1, v2, t);\",\r\n \" vec3 expected = center + s;\",\r\n \" vv.xyz = expected;\",\r\n \" vv = viewMatrix*vv;\",\r\n \" return projectionMatrix * vv;\",\r\n \"}\",\r\n \"void main()\",\r\n \"{\",\r\n \" vec3 pos = position.xyz + translate;\",\r\n \" vUv = (pos.xz + worldSize.xy) / worldSize.zw;\",\r\n \"#ifdef GRID\",\r\n \" pos.y = texture2D(height, fract(vUv + position.yw / worldSize.zw)).r * 25500.0;\",\r\n \" float y2 = texture2D(height, fract(vUv - position.yw / worldSize.zw)).r * 25500.0;\",\r\n \" float y3 = texture2D(height, fract(vUv - vec2(position.y, -position.w) / worldSize.zw)).r * 25500.0;\",\r\n \" float y4 = texture2D(height, fract(vUv - vec2(-position.y, position.w) / worldSize.zw)).r * 25500.0;\",\r\n \" if (y2 > pos.y || y3 > pos.y || y4 > pos.y)\",\r\n \" vColor = vec3(0.7, 0.7, 0.7);\",\r\n \" else\",\r\n \" vColor = vec3(1.0, 1.0, 1.0);\",\r\n \"#endif\",\r\n \"#ifdef FLAT\",\r\n \"#ifdef WRAP\",\r\n \" vec4 vv = modelMatrix * vec4(pos, 1.0);\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x > worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z > worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" vec4 mvPosition = viewMatrix * vv;\",\r\n \"#else\",\r\n \" vec4 mvPosition = viewMatrix* vec4(pos, 1.0);\",\r\n \"#endif\",\r\n \" gl_Position = projectionMatrix * mvPosition;\",\r\n \"#else\",\r\n \" gl_Position = curveVertexFixed(vec4(pos, 1.0));\",\r\n \"#endif\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst vertexShader = [\r\n \"uniform vec4 worldSize;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"vec3 slerp(vec3 p0, vec3 p1, float t)\",\r\n \"{\",\r\n \" float cosHalfTheta = dot(p0, p1);\",\r\n \" float halfTheta = acos(cosHalfTheta);\",\r\n \" float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\",\r\n \" float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\",\r\n \" float ratioB = sin(t * halfTheta) / sinHalfTheta;\",\r\n \" return p0 * ratioA + p1 * ratioB;\",\r\n \"}\",\r\n \"vec4 curveVertexFixed(vec4 vertex)\",\r\n \"{\",\r\n \" float radius = worldSize.x / 3.14159; vec3 center = vec3(cameraPosition.x, -radius, cameraPosition.z);\",\r\n \" vec4 vv = modelMatrix * vertex;\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" vec3 toVertex = vv.xyz - center;\",\r\n \" vec3 v1 = vec3(0, toVertex.y, 0); vec3 xz = vec3(toVertex.x, 0, toVertex.z);\",\r\n \" vec3 v2 = normalize(xz) * abs(toVertex.y);\",\r\n \" float d = length(toVertex.xz);\",\r\n \" float c = 2.0 * 3.14159 * abs(radius);\",\r\n \" float t = clamp(d / (c / 4.0), 0.0, 2.0);\",\r\n \" vec3 s = slerp(v1, v2, t);\",\r\n \" vec3 expected = center + s;\",\r\n \" vv.xyz = expected;\",\r\n \" vv = viewMatrix*vv;\",\r\n \" return projectionMatrix * vv;\",\r\n \"}\",\r\n \"void main()\",\r\n \"{\",\r\n \" vColor = vec3(0.0, 0.0, 0.0);\",\r\n \"#ifdef FLAT\",\r\n \"#ifdef WRAP\",\r\n \" vec4 vv = modelMatrix * vec4(position, 1.0);\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x > worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z > worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" vec4 mvPosition = viewMatrix * vv;\",\r\n \"#else\",\r\n \" vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\",\r\n \"#endif\",\r\n \" gl_Position = projectionMatrix * mvPosition;\",\r\n \"#else\",\r\n \" gl_Position = curveVertexFixed(vec4(position, 1.0));\",\r\n \"#endif\",\r\n \" vUv = (position.xz + worldSize.xy) / worldSize.zw;\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst fragmentShader = [\r\n \"uniform float time;\",\r\n \"uniform float alpha;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"void main(void) {\",\r\n \" gl_FragColor = vec4(tint, alpha);\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst worldLayerFragment = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"uniform float time;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D renderTex;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform sampler2D terrain;\",\r\n \"uniform vec3 waterColor;\",\r\n \"#ifdef DRAWING\",\r\n \"uniform sampler2D drawmap;\",\r\n \"#endif\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"void main(void) {\",\r\n \" vec4 inputData = texture2D(renderTex, vUv);\",\r\n \" vec2 uv = inputData.xy;\",\r\n \" float underWater = inputData.z;\",\r\n \" vec3 vColor = inputData.www ;\",\r\n \" vec3 mColor = texture2D(map, uv).rgb;\",\r\n \"#ifdef DRAWING\",\r\n \" vec4 drawing = texture2D(drawmap, uv);\",\r\n \" drawing = texture2D(heat, vec2(drawing.r, 0));\",\r\n \" mColor = vColor - (vec3(1, 1, 1) - drawing.rgb);\",\r\n \" #ifdef FMAP\",\r\n \" mColor = mColor * texture2D(features, uv).rgb;\",\r\n \" #endif\",\r\n \" vec3 c = mix(mColor * tint, vec3(0.0, 0.0, 0.1), underWater * 1);\",\r\n \"#else\",\r\n \" #ifdef HEATMAP\",\r\n \" float a = mColor.r > 0.2 ? 1.0 : (mColor.r + 0.8);\",\r\n \" vec2 uv2 = vec2(mColor.r, mColor.g);\",\r\n \" #endif\",\r\n \" #ifdef FMAP\",\r\n \" #ifdef HEATMAP\",\r\n \" mColor = vColor - texture2D(heat, uv2).rgb;\",\r\n \" mColor = (mColor * a) + ((1.0 - a) * (vColor - (vec3(1, 1, 1) - texture2D(terrain, uv).rgb)));\",\r\n \" #else\",\r\n \" mColor = vColor * mColor;\",\r\n \" #endif\",\r\n \" mColor = mColor * texture2D(features, uv).rgb;\",\r\n \" #else\",\r\n \" mColor = vColor * texture2D(heat, uv2).rgb;\",\r\n \" #ifdef HEATMAP\",\r\n \" underWater *= 1;\",\r\n \" #endif\",\r\n \" #endif\",\r\n \" vec3 c = mix(mColor * tint, waterColor, underWater);\",\r\n \"#endif\",\r\n \" gl_FragColor = vec4(c, step(0.5, inputData.w));\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst worldLayerVertex = [\r\n \"precision highp float;\",\r\n \"uniform mat4 projectionMatrix;\",\r\n \"uniform mat4 modelViewMatrix;\",\r\n \"attribute vec2 uv;\",\r\n \"attribute vec3 position;\",\r\n \"varying vec2 vUv;\",\r\n \"void main()\",\r\n \"{\",\r\n \" vUv = uv;\",\r\n \" gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\n\r\nclass EcoMap {\r\n initialized = false;\r\n zoning = false;\r\n zoomSetsDrawSize = false;\r\n drawSize = 1;\r\n get drawZone() {\r\n return this.zoning;\r\n };\r\n set drawZone(x) {\r\n this.setZoning(x);\r\n };\r\n get eraseMode() {\r\n return this.drawMap ? this.drawMap.erasing : false;\r\n };\r\n set eraseMode(x) {\r\n if (this.drawMap) { this.drawMap.SetEraseMode(x); }\r\n };\r\n editView?: Element | any;\r\n\r\n scenes: Array = [];\r\n views: JQuery = $();\r\n canvas?: HTMLCanvasElement;\r\n renderer?: THREE.WebGLRenderer;\r\n heatMap = new THREE.TextureLoader().load('/images/heatmapinvert.png');\r\n featureMap?: THREE.Texture;\r\n drawMap?: PlotMap;\r\n districtMap: Array = [];\r\n proposedDistrictMap?: PlotMap;\r\n districtColorLookup = new DistrictColors();\r\n\r\n waterMat?: THREE.ShaderMaterial;\r\n clock: THREE.Clock = new THREE.Clock(true);\r\n terrainMap?: THREE.Texture;\r\n worldWidth = 200;\r\n worldDepth = 200;\r\n worldHalfWidth = this.worldWidth / 2;\r\n worldHalfDepth = this.worldDepth / 2;\r\n heightMap?: THREE.Texture;\r\n heightHistoryLoaded = false;\r\n terrainHistoryLoaded = false;\r\n\r\n geometry?: THREE.InstancedBufferGeometry;\r\n geometry2?: THREE.PlaneGeometry;\r\n data: Float32Array = new Float32Array();\r\n\r\n readonly flatShaderDefines = { GRID: true, FLAT: true, WRAP: true, FMAP: true };\r\n readonly curveShaderDefines = { GRID: true, FMAP: true };\r\n readonly waterFlatShaderDefines = { FLAT: true, WRAP: true };\r\n readonly waterCurveShaderDefines = {};\r\n sharedRenderTarget;\r\n sharedFirstView;\r\n\r\n mouseX: number = 0;\r\n mouseY: number = 0;\r\n pos: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n mouseHitWorld = false;\r\n plots;\r\n plotLookup = {};\r\n plotNameLookup: Array = [];\r\n\r\n debugKeyX = false;\r\n debugKeyZ = false;\r\n mouseState = 0;\r\n dragStart: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n dragPos: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n\r\n public lastMouseScene?: THREE.Scene;\r\n\r\n public layerNames = [[\"Camas\", \"Camas\"], [\"Elk\", \"Elk\"]];\r\n public waterLevel = -1;\r\n public serverTime = 10000.0;\r\n\r\n public editViewNum = 0; //think this should usually be the last?\r\n\r\n public layerGroups: Array = [];\r\n\r\n public districtSuffix: string = \"\";\r\n\r\n zoneString?: string;\r\n\r\n serverUrl?: string;\r\n\r\n\r\n async init() {\r\n this.serverUrl = (window as any).serverUrl;\r\n\r\n this.terrainMap = new THREE.TextureLoader().load(`${this.serverUrl}/Layers/TerrainLatest.gif`);\r\n this.terrainMap.generateMipmaps = false;\r\n this.terrainMap.magFilter = THREE.NearestFilter;\r\n this.terrainMap.minFilter = THREE.NearestFilter;\r\n this.terrainMap.flipY = false;\r\n\r\n this.heatMap.generateMipmaps = false;\r\n this.heatMap.magFilter = THREE.LinearFilter;\r\n this.heatMap.minFilter = THREE.LinearFilter;\r\n\r\n await this.setupLayers();\r\n new THREE.TextureLoader().load(`${this.serverUrl}/Layers/HeightMapLatest.gif`, texture => {\r\n this.views = $('.view-map:visible');\r\n this.heightMap = texture;\r\n this.heightMap.generateMipmaps = false;\r\n this.heightMap.flipY = false;\r\n this.heightMap.minFilter = THREE.NearestFilter;\r\n\r\n if (this.views.length && this.waterLevel >= 0) this.finishInit(texture);\r\n });\r\n\r\n document.addEventListener('mousemove', (arg) => this.onDocumentMouseMove(arg), false);\r\n window.addEventListener('keydown', (arg) => this.onKeyDown(arg), false);\r\n };\r\n\r\n protected finishInit(hmap) {\r\n this.canvas = document.getElementById('c');\r\n\r\n this.renderer = new THREE.WebGLRenderer({ canvas: this.canvas, antialias: true, alpha: true });\r\n this.renderer.setClearColor(0xffffff, 0);\r\n this.renderer.setPixelRatio(window.devicePixelRatio);\r\n\r\n this.worldWidth = hmap.image.width;\r\n this.worldDepth = hmap.image.height;\r\n this.worldHalfWidth = this.worldWidth / 2;\r\n this.worldHalfDepth = this.worldDepth / 2;\r\n this.data = this.generateHeight(hmap);\r\n\r\n this.setupPlots();\r\n this.drawMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n\r\n if (this.zoneString) {\r\n //TODO: enable map viewing\r\n this.drawMap.LoadArray(this.zoneString);\r\n }\r\n\r\n this.geometry = GenChunk(40, 40, this.worldWidth, this.worldDepth);\r\n this.geometry2 = new THREE.PlaneGeometry(this.worldWidth * 100, this.worldDepth * 100, 100, 100);\r\n this.geometry2.rotateX(-Math.PI / 2);\r\n\r\n this.initialized = true;\r\n\r\n for (let n = 0; n < this.views.length; n++) {\r\n this.addView(this.views[n]);\r\n }\r\n\r\n this.animate();\r\n }\r\n\r\n\r\n addView(view: Element | any) {\r\n view.forceUpdate = false;\r\n\r\n if (!view.settings) view.settings = {};\r\n if (undefined === view.settings.layerSelected) view.settings.layerSelected = \"Terrain\";\r\n if (undefined === view.settings.frameNum) view.settings.frameNum = -1;\r\n if (undefined === view.settings.heightFrameNum) view.settings.heightFrameNum = -1;\r\n if (undefined === view.settings.terrainFrameNum) view.settings.terrainFrameNum = -1;\r\n if (undefined === view.settings.timeStart) view.settings.timeStart = 0.0;\r\n if (undefined === view.settings.timeEnd) view.settings.timeEnd = this.serverTime;\r\n if (undefined === view.settings.playSpeed) view.settings.playSpeed = 0.5;\r\n if (undefined === view.settings.currentTime) view.settings.currentTime = this.serverTime;\r\n if (undefined === view.settings.flat) view.settings.flat = false;\r\n if (undefined === view.settings.pause) view.settings.pause = true;\r\n if (view.OnTimeUpdated) view.OnTimeUpdated(view.settings.currentTime);\r\n\r\n if (!this.initialized) this.finishInit(this.heightMap);\r\n\r\n const rect = view.getBoundingClientRect();\r\n\r\n if (view.settings.shareCamera) {\r\n if (this.sharedRenderTarget === undefined) {\r\n var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, type: THREE.FloatType };\r\n this.sharedRenderTarget = new THREE.WebGLRenderTarget(rect.width, rect.height, pars);\r\n this.sharedFirstView = view;\r\n }\r\n view.depthRenderTarget = this.sharedRenderTarget;\r\n } else {\r\n pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, type: THREE.FloatType };\r\n view.depthRenderTarget = new THREE.WebGLRenderTarget(rect.width, rect.height, pars);\r\n }\r\n\r\n const scene = new THREE.Scene();\r\n //scene.fog = new THREE.FogExp2( 0xffffff, 0.00005 );\r\n\r\n const uniforms2 = {\r\n tint: { value: new THREE.Color(1.0, 1.0, 1.0) },\r\n waterColor: { value: new THREE.Color(0.0, 0.3, 0.7) },\r\n time: { value: 1.0 },\r\n worldSize: { value: new THREE.Vector4(this.worldHalfWidth * 100, this.worldHalfDepth * 100, this.worldWidth * 100, this.worldDepth * 100) },\r\n heat: { value: this.heatMap },\r\n features: { value: this.featureMap },\r\n drawmap: { value: this.drawMap },\r\n terrain: { value: this.terrainMap },\r\n map: { value: null },\r\n height: { value: this.heightMap },\r\n renderTex: { value: view.depthRenderTarget.texture },\r\n };\r\n\r\n view.positionLookupShader = new THREE.RawShaderMaterial({\r\n defines: view.settings.flat ? { GRID: true, FLAT: true, WRAP: true, LOOKUP: true } : { GRID: true, LOOKUP: true },\r\n uniforms: uniforms2,\r\n vertexShader: curvedVertex,\r\n fragmentShader: rawFragmentShader\r\n });\r\n\r\n const layerShader = new THREE.RawShaderMaterial({\r\n defines: view.settings.flat ? this.flatShaderDefines : this.curveShaderDefines,\r\n uniforms: uniforms2,\r\n vertexShader: worldLayerVertex,\r\n fragmentShader: worldLayerFragment\r\n });\r\n\r\n layerShader.transparent = true;\r\n //layerShader.opacity = 0.5;\r\n layerShader.blending = THREE.NormalBlending;\r\n\r\n view.mainMat = layerShader;\r\n if (this.zoneString)\r\n view.mainMat.defines.DRAWING = true;\r\n\r\n if (view.settings.gradient !== undefined) {\r\n delete view.mainMat.defines.FMAP;\r\n let gradient = new THREE.TextureLoader().load(view.settings.gradient, function (texture) {\r\n gradient = texture;\r\n gradient.generateMipmaps = false;\r\n gradient.magFilter = THREE.LinearFilter;\r\n gradient.minFilter = THREE.LinearFilter;\r\n view.mainMat.uniforms.heat.value = gradient;\r\n view.mainMat.needsUpdate = true;\r\n });\r\n }\r\n\r\n if (view.settings.noWater !== undefined && view.settings.noWater) {\r\n view.mainMat.uniforms.waterColor.value = new THREE.Color(0.0, 0.0, 0.1);\r\n }\r\n\r\n this.setLayer(view.settings.layerSelected, view);\r\n\r\n const renderLayer = new ShaderPass(layerShader);\r\n renderLayer.renderToScreen = true;\r\n\r\n const mesh = new THREE.Mesh(this.geometry, view.positionLookupShader); //material);\r\n\r\n const waterUniforms = {\r\n tint: { value: new THREE.Color(0.0, 0.0, 1.0) },\r\n time: { value: 1.0 },\r\n worldSize: { value: new THREE.Vector4(this.worldHalfWidth * 100, this.worldHalfDepth * 100, this.worldWidth * 100, this.worldDepth * 100) },\r\n heat: { value: null },\r\n features: { value: null },\r\n terrain: { value: null },\r\n map: { value: null },\r\n alpha: { value: waterAlpha }\r\n };\r\n\r\n this.waterMat = new THREE.ShaderMaterial({\r\n defines: view.settings.flat ? this.waterFlatShaderDefines : this.waterCurveShaderDefines,\r\n uniforms: waterUniforms,\r\n vertexShader: vertexShader,\r\n fragmentShader: fragmentShader,\r\n vertexColors: true,\r\n blending: THREE.AdditiveBlending,\r\n transparent: true,\r\n });\r\n\r\n view.waterMat = this.waterMat;\r\n\r\n view.toggle3D = function () {\r\n view.settings.flat = !view.settings.flat;\r\n [view.mainMat, view.waterMat, view.positionLookupShader].forEach(mat => {\r\n if (view.settings.flat) {\r\n mat.defines.FLAT = true;\r\n mat.defines.WRAP = true;\r\n } else {\r\n delete mat.defines.FLAT;\r\n delete mat.defines.WRAP;\r\n }\r\n\r\n mat.needsUpdate = true;\r\n });\r\n };\r\n\r\n const plane = new THREE.Mesh(this.geometry2, this.waterMat);\r\n plane.translateY((this.waterLevel * 100.0)); //.1 from getY scaling, 100 from block size, 10 to put it on top\r\n\r\n //var box = new THREE.BoxBufferGeometry(500, 9000, 500, 10, 1, 10);\r\n //var boxMesh = new THREE.Mesh(box, waterMat);\r\n //scene.add(boxMesh);\r\n //scene.userData.selectBox = boxMesh;\r\n\r\n scene.add(plane);\r\n\r\n mesh.layers.set(2); // terrain layer\r\n scene.add(mesh);\r\n\r\n const ambientLight = new THREE.AmbientLight(0xcccccc);\r\n scene.add(ambientLight);\r\n\r\n const directionalLight = new THREE.DirectionalLight(0xffffff, 2);\r\n directionalLight.position.set(1, 1, 0.5).normalize();\r\n scene.add(directionalLight);\r\n\r\n scene.userData.view = view;\r\n let camera;\r\n\r\n if (view.camera)\r\n scene.userData.camera = view.camera;\r\n else {\r\n camera = new THREE.PerspectiveCamera(45, rect.width / rect.height, 1000, 400000);\r\n camera.position.y = this.getY(this.worldHalfWidth, this.worldHalfDepth) * 100 + 10000;\r\n scene.userData.camera = camera;\r\n view.camera = camera;\r\n }\r\n\r\n camera = scene.userData.camera;\r\n camera.layers.enable(2);\r\n // camera.zoom = .8; // zoom was too close for this new ver.\r\n\r\n //var renderPass = new THREE.RenderPass( scene, camera );\r\n\r\n //var copyPass = new ShaderPass(THREE.CopyShader);\r\n //copyPass.renderToScreen = true;\r\n\r\n view.composer = new EffectComposer(this.renderer!);\r\n //view.composer.addPass(renderPass);\r\n //view.composer.addPass(copyPass);\r\n view.composer.addPass(renderLayer);\r\n\r\n const controls = new OrbitControls(camera, view);\r\n controls.enableRotate = false;\r\n controls.mouseButtons = { ORBIT: THREE.MOUSE.RIGHT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.LEFT };\r\n controls.maxDistance = this.waterLevel * 100 + this.worldWidth * 95;\r\n controls.minDistance = this.waterLevel * 110;\r\n view.camera.position.y = (controls.maxDistance + controls.minDistance) / 2;\r\n\r\n if (view.settings.camPos) {\r\n camera.position.copy(view.settings.camPos);\r\n controls.target.copy(view.settings.camPos); // prevent orbiting around zero\r\n controls.target.y = 0;\r\n }\r\n\r\n scene.userData.controls = controls;\r\n view.settings.camPos = camera.position;\r\n\r\n scene.userData.lastCamPosition = new THREE.Vector3(0, 0, 0);\r\n scene.userData.lastRenderPosition = new THREE.Vector3(0, -100000, 0);\r\n scene.userData.frameNum = 0;\r\n\r\n this.scenes.push(scene);\r\n\r\n if (this.editView == null) this.editView = view;\r\n }\r\n\r\n removeView(view) {\r\n if (this.scenes.length == 1 && this.scenes[0].userData.view == view)\r\n this.scenes = [];\r\n else {\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n if (this.scenes[i].userData.view == view || this.scenes[i].userData.view.id == view) {\r\n this.scenes[i].userData.controls.dispose();\r\n this.scenes[i].userData.camera = null;\r\n delete this.scenes[i];\r\n this.scenes.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeDeadViews() {\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n if (!$.contains(document.body, this.scenes[i].userData.view)) {\r\n this.scenes[i].userData.controls.dispose();\r\n this.scenes[i].userData.camera = null;\r\n delete this.scenes[i];\r\n this.scenes.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n }\r\n\r\n private generateHeight(hmap): Float32Array {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = hmap.image.width;\r\n canvas.height = hmap.image.height;\r\n var context = canvas.getContext('2d');\r\n\r\n var size = hmap.image.width * hmap.image.height;\r\n var data = new Float32Array(size);\r\n\r\n if (!context) return data;\r\n context.drawImage(hmap.image, 0, 0);\r\n var imgd = context.getImageData(0, 0, hmap.image.width, hmap.image.height);\r\n var pix = imgd.data;\r\n\r\n var j = 0;\r\n for (var i = 0, n = pix.length; i < n; i += 4) {\r\n data[j++] = pix[i];\r\n }\r\n\r\n return data;\r\n }\r\n\r\n private getY(x, z): number {\r\n x = (x + this.worldWidth) % this.worldWidth;\r\n z = (z + this.worldWidth) % this.worldWidth;\r\n return (this.data[x + z * this.worldWidth] * 0.1) | 0;\r\n }\r\n\r\n // 4 tiles in game = 1 tile here\r\n private getWorldPos(position): THREE.Vector2 {\r\n return new THREE.Vector2(\r\n Math.round((this.worldHalfWidth + position.x / 100)),\r\n Math.round((this.worldHalfWidth - position.z / 100))\r\n );\r\n }\r\n\r\n private updateSize() {\r\n if (this.canvas) {\r\n const width = this.canvas.clientWidth;\r\n const height = this.canvas.clientHeight;\r\n\r\n if (this.canvas.width !== width || this.canvas.height != height) {\r\n this.renderer!.setSize(width, height, false);\r\n }\r\n }\r\n }\r\n\r\n private animate() {\r\n this.render();\r\n requestAnimationFrame(() => this.animate());\r\n }\r\n\r\n private onDocumentMouseMove(event: MouseEvent) {\r\n this.mouseX = event.clientX;\r\n this.mouseY = event.clientY;\r\n //if(scenes.length < 1) return;\r\n //var rect = scenes[0].userData.view.getBoundingClientRect();\r\n //scenes[0].userData.view.OnInfoUpdated((mouseX - rect.left) + \" , \" + (mouseY - rect.top));\r\n }\r\n\r\n private GetFrameNum(name, frameNum, view): Number {\r\n if (GIFMANAGER.gifTimes[name] != undefined && GIFMANAGER.gifTimes[name].length > 0) {\r\n const currentTime = view.settings.currentTime;\r\n const myTimes = GIFMANAGER.gifTimes[name];\r\n const maxFrame = myTimes.length;\r\n\r\n if (frameNum < 0) frameNum = maxFrame - 1;\r\n\r\n while (frameNum < maxFrame - 1 && currentTime > myTimes[frameNum]) frameNum++;\r\n while (frameNum > 0 && currentTime < myTimes[frameNum]) frameNum--;\r\n } else if (GIFMANAGER.gifTimes[name] != undefined) {\r\n return 0;\r\n }\r\n\r\n return frameNum;\r\n }\r\n\r\n\r\n\r\n render() {\r\n this.updateSize();\r\n\r\n if (!this.renderer) return;\r\n\r\n this.renderer.setClearColor(0xffffff, 0);\r\n this.renderer.setScissorTest(false);\r\n this.renderer.clear();\r\n\r\n // sometimes the render gets called for one more frame after the map is destroyed, better to cancel\r\n if (this.canvas == null) return;\r\n\r\n const myRect = this.canvas.getBoundingClientRect();\r\n\r\n let deltaTime = this.clock.getDelta();\r\n if (deltaTime > 5) deltaTime = 1.0; // probably debugging\r\n\r\n this.scenes.forEach((scene) => {\r\n\r\n if (!this.renderer) return;\r\n\r\n\r\n var view = scene.userData.view;\r\n var s = view.settings;\r\n\r\n if (s.shareCamera && this.sharedFirstView != view) {\r\n s.currentTime = this.sharedFirstView.settings.currentTime;\r\n s.pause = this.sharedFirstView.settings.pause;\r\n s.playSpeed = this.sharedFirstView.settings.playSpeed;\r\n }\r\n\r\n // wait until unpaused to load history data\r\n if (!s.pause && GIFMANAGER.gifStorage[\"HeightMap\"] === undefined) {\r\n GIFMANAGER.giftextures(\"HeightMap\", () => {\r\n this.heightHistoryLoaded = true;\r\n GIFMANAGER.giftextures(\"Terrain\", () => {\r\n this.terrainHistoryLoaded = true;\r\n });\r\n });\r\n }\r\n\r\n var rect = view.getBoundingClientRect();\r\n var cam = scene.userData.camera;\r\n\r\n // check if it's offscreen. If so skip it\r\n if (rect.bottom < 0 || rect.top > this.renderer.domElement.clientHeight ||\r\n rect.right < 0 || rect.left > this.renderer.domElement.clientWidth) {\r\n return; // it's off screen\r\n }\r\n\r\n //textures are still not loaded\r\n // if (view.loading) return;\r\n\r\n // set the viewport\r\n var width = rect.right - rect.left + 20;\r\n var height = rect.bottom - rect.top + 70;\r\n var left = rect.left - myRect.left;\r\n var top = -rect.top;\r\n\r\n // Now we should set canvas size first\r\n var miniMapEl = document.getElementById('main-map');\r\n if (!miniMapEl) return;\r\n const clientWidth = miniMapEl.clientWidth;\r\n const clientHeight = miniMapEl.clientHeight;\r\n this.renderer.setSize(clientWidth, clientHeight);\r\n this.renderer.setViewport(left - 10, top + 20, width, height);\r\n this.renderer.setScissor(left, top, width, height);\r\n\r\n if (view.lastWidth != width || view.lastHeight != height) {\r\n cam.aspect = width / height;\r\n cam.updateProjectionMatrix();\r\n view.forceUpdate = true;\r\n }\r\n\r\n view.lastWidth = width;\r\n view.lastHeight = height;\r\n\r\n if (isNaN(s.currentTime)) s.currentTime = 0.0;\r\n\r\n var materialChanged = false, heightChanged = false;\r\n var lastTime = s.currentTime, prevFrameNum = s.frameNum, prevHeightFrameNum = s.heightFrameNum, prevTerrainFrameNum = s.terrainFrameNum;\r\n\r\n if (!s.pause && s.playSpeed != 0.0) {\r\n s.currentTime += ((view.loading ? 0.2 : s.playSpeed) * 86400) * deltaTime;\r\n }\r\n\r\n if (s.currentTime > s.timeEnd) {\r\n s.currentTime = s.timeStart;\r\n } else if (s.currentTime < s.timeStart) {\r\n s.currentTime = s.timeEnd;\r\n }\r\n\r\n if (lastTime != s.currentTime || view.forceUpdate) {\r\n if (view.timeText)\r\n view.timeText.innerText = s.currentTime / 3600.0;\r\n if (view.OnTimeUpdated)\r\n view.OnTimeUpdated(s.currentTime);\r\n\r\n s.frameNum = this.GetFrameNum(s.layerSelected, s.frameNum, view);\r\n if (this.heightHistoryLoaded)\r\n s.heightFrameNum = this.GetFrameNum(\"HeightMap\", s.heightFrameNum, view);\r\n if (this.terrainHistoryLoaded)\r\n s.terrainFrameNum = this.GetFrameNum(\"Terrain\", s.terrainFrameNum, view);\r\n\r\n if (s.currentTime != this.serverTime && GIFMANAGER.gifStorage[s.layerSelected] == undefined) {\r\n this.setLayer(s.layerSelected, view);\r\n }\r\n\r\n //Terrain have special handling\r\n if (s.layerSelected != \"Terrain\" && GIFMANAGER.gifStorage[s.layerSelected] && prevFrameNum != s.frameNum) {\r\n view.mainMat.uniforms.map.value = GIFMANAGER.giftextures(s.layerSelected)[s.frameNum];\r\n materialChanged = true;\r\n }\r\n\r\n if (this.heightHistoryLoaded && prevHeightFrameNum != s.heightFrameNum) {\r\n view.mainMat.uniforms.height.value = GIFMANAGER.giftextures(\"HeightMap\")[s.heightFrameNum];\r\n materialChanged = true;\r\n heightChanged = true;\r\n }\r\n\r\n if (s.layerSelected != \"Terrain\" && this.terrainHistoryLoaded && prevTerrainFrameNum != s.terrainFrameNum) {\r\n view.mainMat.uniforms.terrain.value = GIFMANAGER.giftextures(\"Terrain\")[s.terrainFrameNum];\r\n materialChanged = true;\r\n }\r\n\r\n if (materialChanged)\r\n view.mainMat.needsUpdate = true;\r\n }\r\n\r\n var mouseViewX = this.mouseX - rect.left;\r\n var mouseViewY = rect.height - (this.mouseY - rect.top);\r\n\r\n this.pos = this.getWorldPos(s.camPos);\r\n\r\n if ((mouseViewX > 0 && mouseViewY > 0 && mouseViewX < rect.width && mouseViewY < rect.height) || view.firstRender === undefined || heightChanged || view.forceUpdate) {\r\n view.forceUpdate = false;\r\n\r\n //TODO: switch to UInt8 and pack/unpack 16-bit ints\r\n var read = new Float32Array(4);\r\n this.renderer.readRenderTargetPixels(view.depthRenderTarget, mouseViewX, mouseViewY, 1, 1, read);\r\n this.mouseHitWorld = read[3] >= 0.7; // AO is 0.7-1.0\r\n\r\n if (this.mouseHitWorld) {\r\n this.pos.x = Math.floor(read[0] * this.worldWidth);\r\n this.pos.y = this.worldDepth - Math.floor(read[1] * this.worldDepth);\r\n }\r\n\r\n if (cam.position.distanceTo(scene.userData.lastRenderPosition) > 0.5) { //should remain valid until camera moves\r\n //scene.overrideMaterial = view.positionLookupShader;\r\n //cam.layers.disable(0); // disable default stuff, only show terrain\r\n this.renderer.setClearColor(0x000000, 0);\r\n this.renderer.clear(view.depthRenderTarget);\r\n this.renderer.setRenderTarget(view.depthRenderTarget);\r\n this.renderer.render(scene, cam);\r\n this.renderer.setRenderTarget(null);\r\n this.renderer.clear();\r\n\r\n if (!this.debugKeyX) {\r\n scene.overrideMaterial = null;\r\n //cam.layers.enable(0);\r\n }\r\n\r\n scene.userData.lastRenderPosition.copy(cam.position);\r\n\r\n if (view.settings.shareCamera) {\r\n this.scenes.forEach(function (s) {\r\n if (s.userData.view.settings.shareCamera) {\r\n s.userData.lastRenderPosition.copy(cam.position);\r\n s.userData.camera.position.copy(cam.position);\r\n }\r\n });\r\n }\r\n }\r\n this.lastMouseScene = scene;\r\n view.firstRender = false;\r\n }\r\n\r\n if (view.OnPositionUpdated) {\r\n if (this.pos != view.worldPos) {\r\n view.OnPositionUpdated(this.pos);\r\n view.worldPos = this.pos;\r\n if (view.OnInfoUpdated) {\r\n var lookup = this.getPlotNum(this.pos.x, this.pos.y);\r\n var plotName = \"\\n\";\r\n if (this.plotLookup[lookup] !== undefined)\r\n plotName = this.plotNameLookup[this.plotLookup[lookup]];\r\n if (view.plotName != plotName) {\r\n view.OnInfoUpdated(plotName);\r\n view.plotName = plotName;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //if (debugKeyZ) {\r\n //cam.layers.disable(0);\r\n //} else {\r\n //cam.layers.enable(0);\r\n //}\r\n\r\n this.renderer.setClearColor(0x3c3c3c, 1); // Map Background Color\r\n this.renderer.setScissorTest(true);\r\n\r\n //if (debugKeyX) {\r\n //renderer.render(scene, cam);\r\n //} else {\r\n view.composer.passes[0].uniforms.renderTex.value = view.depthRenderTarget.texture;\r\n view.composer.setSize(width, height);\r\n view.composer.render(0.1);\r\n //}\r\n\r\n //if(++frameNum == GIFMANAGER.giftextures.length) frameNum = 0;\r\n scene.userData.lastCamPosition.copy(cam.position);\r\n scene.userData.controls.update();\r\n\r\n\r\n // shader magically wraps 1 tile around map, need to keep camera within bounds\r\n if (cam.position.x > this.worldHalfWidth * 100)\r\n cam.position.x -= this.worldWidth * 100;\r\n else if (cam.position.x < -this.worldHalfWidth * 100)\r\n cam.position.x += this.worldWidth * 100;\r\n if (cam.position.z > this.worldHalfDepth * 100)\r\n cam.position.z -= this.worldDepth * 100;\r\n else if (cam.position.z < -this.worldHalfDepth * 100)\r\n cam.position.z += this.worldDepth * 100;\r\n\r\n // ssaoPass.uniforms[ 'cameraNear' ].value = cam.near;\r\n // ssaoPass.uniforms[ 'cameraFar' ].value = cam.far;\r\n scene.userData.controls.target.copy(cam.position); // fix target to prevent insanity\r\n scene.userData.controls.target.y = 0;\r\n\r\n\r\n if (view.cameraText) {\r\n view.cameraText.innerText = JSON.stringify(s);\r\n }\r\n if (scene.userData.view.mapdata) {\r\n view.mapdata.value = JSON.stringify(s);\r\n }\r\n });\r\n }\r\n\r\n\r\n private async setupLayers() {\r\n const { data } = await axios.get('/map/map.json');\r\n if (!data) return console.log('No layers to display');\r\n\r\n this.layerNames = data.LayerNames;\r\n this.layerGroups = [];\r\n this.layerNames.forEach(x => {\r\n var category = this.layerGroups.find(y => y.category == x[2]);\r\n\r\n if (category == null) {\r\n category = { category: x[2], layers: [] };\r\n this.layerGroups.push(category);\r\n }\r\n\r\n category.layers.push(x);\r\n });\r\n\r\n this.layerGroups.sort((x, y) => x.category > y.category ? 1 : x.category == y.category ? 0 : -1);\r\n this.fillLayerSelects();\r\n\r\n this.waterLevel = data.WaterLevel;\r\n this.serverTime = data.WorldTime;\r\n this.districtSuffix = data.DistrictSuffix;\r\n this.plots = data.Plots;\r\n\r\n if (this.heightMap !== undefined) this.finishInit(this.heightMap);\r\n }\r\n\r\n\r\n\r\n setZoning(enabled) {\r\n //TODO: setup/disable drawing\r\n this.zoning = enabled;\r\n if (this.zoning) {\r\n this.editView.addEventListener('mousedown', this.onMouseDown, false);\r\n this.editView.mainMat.defines.DRAWING = true;\r\n this.editView.mainMat.uniforms.heat.value = this.districtColorLookup;\r\n this.editView.mainMat.needsUpdate = true;\r\n //document.getElementById('map-zonemap').appendChild(drawmap.image);\r\n } else {\r\n this.drawMap!.Reset();\r\n delete this.editView.mainMat.defines.DRAWING;\r\n this.editView.mainMat.needsUpdate = true;\r\n this.editView.mainMat.uniforms.heat.value = this.heatMap;\r\n this.editView.removeEventListener('mousedown', this.onMouseDown, false);\r\n //document.getElementById('map-zonemap').removeChild(drawmap.image);\r\n }\r\n };\r\n\r\n\r\n private onMouseDown(event) {\r\n if (event.button === THREE.MOUSE.RIGHT && this.mouseHitWorld) {\r\n this.mouseState = 1;\r\n this.dragStart = new THREE.Vector2(Math.floor(this.pos.x / 5), Math.floor(this.pos.y / 5));\r\n if (this.zoomSetsDrawSize)\r\n this.drawSize = Math.floor(10 * this.editView.camera.position.y / (this.worldWidth * 90));\r\n this.drawMap!.SetPixel(this.dragStart, this.drawSize);\r\n document.addEventListener('mousemove', this.onMouseMove, false);\r\n document.addEventListener('mouseup', this.onMouseUp, false);\r\n }\r\n }\r\n\r\n private onMouseMove() {\r\n if (this.mouseState === 1 && this.mouseHitWorld) {\r\n this.dragPos = new THREE.Vector2(Math.floor(this.pos.x / 5), Math.floor(this.pos.y / 5));\r\n if (this.dragStart != this.dragPos) {\r\n this.drawMap!.DrawLine(this.dragStart, this.dragPos, this.drawSize);\r\n this.dragStart = this.dragPos;\r\n }\r\n }\r\n }\r\n\r\n private onMouseUp() {\r\n if (this.mouseState !== 0) {\r\n this.mouseState = 0;\r\n document.removeEventListener('mousemove', this.onMouseMove, false);\r\n document.removeEventListener('mouseup', this.onMouseUp, false);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private onKeyDown(event) {\r\n if (event.keyCode == 88) { // x\r\n this.debugKeyX = !this.debugKeyX;\r\n }\r\n if (event.keyCode == 90) { // x\r\n this.debugKeyZ = !this.debugKeyZ;\r\n }\r\n }\r\n\r\n GetZone() {\r\n if (this.drawZone)\r\n return this.drawMap!.GetArray();\r\n else\r\n return \"\";\r\n }\r\n\r\n SetZone(b64string) {\r\n if (this.initialized)\r\n this.drawMap!.LoadArray(b64string);\r\n else\r\n this.zoneString = b64string;\r\n }\r\n\r\n LoadProposedDistricts(districtData) {\r\n if (this.proposedDistrictMap === undefined)\r\n this.proposedDistrictMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n if (this.proposedDistrictMap.metadata !== undefined)\r\n return;\r\n this.proposedDistrictMap.LoadDistrictMap(districtData);\r\n var select = $('.map-layer-select');\r\n var option = $('').attr(\"value\", \"ProposedDistricts\").text(\"ProposedDistricts\");\r\n $(select).prepend(option);\r\n }\r\n\r\n paintDistrict(id) {\r\n this.drawMap!.SetColor(\"rgb(\" + id + \",\" + id + \",\" + id + \")\");\r\n };\r\n\r\n setDistrictColor(id, color) {\r\n this.districtColorLookup.SetDistrictColorFromStyle(id, color);\r\n };\r\n\r\n private setupPlots() {\r\n var tcanvas = document.createElement('canvas');\r\n tcanvas.width = this.worldWidth;\r\n tcanvas.height = this.worldDepth;\r\n var tctx = tcanvas.getContext('2d');\r\n if (tctx == null) return;\r\n //tctx.drawImage( tmpCanvas, 0, 0, tmpCanvas.width, tmpCanvas.height );\r\n tctx.fillStyle = \"#FFFFFF\";\r\n tctx.fillRect(0, 0, tcanvas.width, tcanvas.height);\r\n tctx.fillStyle = \"#BBBBBB\";\r\n tctx.strokeStyle = \"#555555\";\r\n tctx.lineWidth = 2;\r\n // tctx.shadowColor = \"#333333\";\r\n // tctx.shadowBlur = 1;\r\n\r\n var i = 0;\r\n for (var prop in this.plots) {\r\n this.plotNameLookup[i] = prop;\r\n for (var p in this.plots[prop]) {\r\n var v = this.plots[prop][p];\r\n tctx.fillRect(v.x, v.y, 5, 5);\r\n //tctx.strokeRect(v.x,v.y,5,5);\r\n this.plotLookup[this.getPlotNum(v.x, v.y)] = i;\r\n }\r\n i++;\r\n }\r\n\r\n this.featureMap = new THREE.Texture(tcanvas);\r\n this.featureMap.minFilter = THREE.NearestFilter;\r\n this.featureMap.magFilter = THREE.NearestFilter;\r\n //texture.wrapS = THREE.RepeatWrapping;\r\n //texture.wrapT = THREE.RepeatWrapping;\r\n this.featureMap.needsUpdate = true;\r\n this.featureMap.flipY = true;\r\n }\r\n\r\n private getPlotNum(x, y) {\r\n return Math.floor(x / 5) + ((Math.floor(y / 5) * this.worldWidth) / 5);\r\n }\r\n\r\n\r\n\r\n async setLayer(layerName, viewRef = undefined) {\r\n const view = viewRef ? viewRef : this.scenes[this.scenes.length - 1].userData.view;\r\n view.settings.layerSelected = layerName;\r\n view.forceUpdate = true;\r\n\r\n //If nothing is selected let's show terrain\r\n layerName = layerName == \"\" ? \"Terrain\" : layerName;\r\n var layerInfo = this.layerNames.find(x => x[0] == layerName);\r\n var layerCategory = layerInfo ? layerInfo[2] : \"\";\r\n\r\n //It's difficult to see district's coloring under water with default settings, so let's make water more transporent\r\n if (view.waterMat) {\r\n view.waterMat.uniforms.alpha.value = layerCategory == this.districtSuffix ? waterAlphaInDistrictsMode : waterAlpha;\r\n }\r\n\r\n if (view.mainMat) {\r\n if (layerName == \"Terrain\") {\r\n view.mainMat.uniforms.map.value = this.terrainMap;\r\n delete view.mainMat.defines.HEATMAP;\r\n } else if (layerCategory == this.districtSuffix) {\r\n const districtMapName = layerName.toString().substring(layerName);\r\n\r\n if (this.districtMap[districtMapName] === undefined) {\r\n this.districtMap[districtMapName] = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n\r\n const { data: districtData } = await axios.get(`/laws/districtmap/${districtMapName}`);\r\n this.districtMap[districtMapName].LoadDistrictMap(districtData);\r\n }\r\n\r\n view.mainMat.uniforms.map.value = this.districtMap[districtMapName];\r\n //delete view.mainMat.defines.HEATMAP;\r\n } else if (layerName == \"ProposedDistricts\") {\r\n if (this.proposedDistrictMap === undefined) {\r\n this.proposedDistrictMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n }\r\n\r\n view.mainMat.uniforms.map.value = this.proposedDistrictMap;\r\n delete view.mainMat.defines.HEATMAP;\r\n } else {\r\n view.mainMat.defines.HEATMAP = true;\r\n\r\n if (GIFMANAGER.gifStorage[layerName] === undefined) {\r\n view.settings.frameNum = -1;\r\n view.loading = true;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"Loading Layer...\");\r\n\r\n if (view.settings.currentTime == this.serverTime && view.settings.pause) {\r\n new THREE.TextureLoader().load(`${this.serverUrl}/Layers/${layerName}Latest.gif`, texture => {\r\n texture.generateMipmaps = false;\r\n texture.flipY = false;\r\n texture.magFilter = THREE.LinearFilter;\r\n texture.minFilter = THREE.LinearFilter;\r\n texture.wrapS = THREE.RepeatWrapping;\r\n texture.wrapT = THREE.RepeatWrapping;\r\n view.mainMat.uniforms.map.value = texture;\r\n view.loading = false;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"\");\r\n });\r\n } else {\r\n view.settings.currentTime = 0;\r\n GIFMANAGER.giftextures(layerName, function (name) {\r\n //scenes[this.editViewNum].userData.view.settings.layerSelected = name;\r\n if (name == view.settings.layerSelected) {\r\n view.loading = false;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"\");\r\n }\r\n }); //start fetching the texture\r\n }\r\n }\r\n }\r\n view.mainMat.needsUpdate = true;\r\n }\r\n };\r\n\r\n fillLayerSelects(sell = false) {\r\n const sel = sell ? $(sell + ' .map-layer-select') : $('.map-layer-select');\r\n\r\n $.each(sel, (key, select) => {\r\n $.each(this.layerGroups, (key, value) => {\r\n const group = $('').attr(\"label\", value.category);\r\n\r\n $.each(value.layers, function (key, value) {\r\n const option = $('').attr(\"value\", value[0]).text(value[1]);\r\n\r\n if ($(select).attr('data-val') == value) {\r\n option.attr(\"selected\", \"true\");\r\n }\r\n\r\n $(group).append(option);\r\n });\r\n\r\n $(select).append(group);\r\n });\r\n });\r\n };\r\n\r\n private screenToWorldPos(view, viewX, viewY) {\r\n var read = new Float32Array(4);\r\n this.renderer!.readRenderTargetPixels(view.depthRenderTarget, viewX, viewY, 1, 1, read);\r\n var hitWorld = read[3] >= 0.7; // AO is 0.7-1.0\r\n if (hitWorld)\r\n return new THREE.Vector2(Math.floor(read[0] * this.worldWidth), this.worldDepth - Math.floor(read[1] * this.worldDepth));\r\n return null;\r\n }\r\n\r\n getWorldArea(view, borderSize) {\r\n var result = {\r\n min: this.screenToWorldPos(view, borderSize, borderSize),\r\n max: this.screenToWorldPos(view, view.lastWidth - borderSize, view.lastHeight - borderSize)\r\n };\r\n if (result.min == null || result.max == null) {\r\n result.min = new THREE.Vector2(0, 0);\r\n result.max = new THREE.Vector2(this.worldWidth - 1, this.worldDepth - 1);\r\n }\r\n return result;\r\n };\r\n\r\n}\r\n\r\nvar ecoMap = new EcoMap();\r\n\r\nexport default ecoMap;\r\n","import $ from 'jquery';\nimport 'jquery-ui-dist/jquery-ui';\nimport MiniMap from './ecomap';\nimport Base64 from './Base64';\n\nexport const MapControls = function() {\n\tlet mainMap = '';\n\tlet positionText = '';\n\n\tfunction initSlider(selector) {\n\t\tconst values = [0, 1000];\n\n\t\t$(selector).slider({\n\t\t\trange: true,\n\t\t\tmin: values[0],\n\t\t\tmax: values[1],\n\t\t\tvalues: values,\n\t\t\tslide: function (event, ui) {\n\t\t\t\t// start range\n\t\t\t\tmainMap.settings.timeStart = (ui.values[0] / values[1]) * MiniMap.serverTime;\n\t\t\t\tupdateText();\n\n\t\t\t\t// end reang\n\t\t\t\tmainMap.settings.timeEnd = (ui.values[1] / values[1]) * MiniMap.serverTime;\n\t\t\t\tupdateText()\n\t\t\t}\n\t\t});\n\t}\n\n\tconst secondsToString = function (seconds, br) {\n\t\tvar date = new Date(null);\n\t\tdate.setSeconds(seconds);\n\n\t\ttry {\n\t\t\tdate = date.toISOString().substr(11, 5);\n\t\t} catch (e) {\n\t\t\tdate = '';\n\t\t}\n\n\t\t//+1 so day can't be 0\n\t\tif (br == 'br') {\n\t\t\treturn Math.ceil((1 + seconds) / 86400) + \"
\" + date;\n\t\t} else {\n\t\t\treturn Math.ceil((1 + seconds) / 86400) + \", \" + date;\n\t\t}\n\t};\n\n\tvar updateText = function () {\n\t\t$(\".range-controls-time-span-1\").html(secondsToString(mainMap.settings.timeStart, 'br'));\n\t\t$(\".range-controls-time-span-2\").html(secondsToString(mainMap.settings.timeEnd, 'br'));\n\t\t$(\".speed-button\").html(mainMap.settings.playSpeed);\n\t};\n\n\tthis.bindEvents = function () {\n\t\tmainMap = document.getElementById(\"main-map\");\n\t\tpositionText = document.getElementById(\"map-position-text\");\n\t\tconst infoText = document.getElementById(\"map-info-text\");\n\t\tif (!mainMap) return;\n\n\t\t// $(window).load(function () {\n\t\t// \t//\t$('.ui-slider-handle:first').css({'margin-left': '0'})\n\t\t// \t//\t$('.ui-slider-handle:last').css({'margin-left': '-34px'})\n\t\t// });\n\n\t\tinitSlider(\"#slider-range\");\n\n\t\t$(\"#speed-button\").click(function () {\n\t\t\tif ($('#button1').css('display') == 'none' && $('#map-play-speed').css('display') == 'block') {\n\t\t\t\t$(\"#district-control-draw , #district-control-erase , #map-draw-size\").show();\n\t\t\t} else {\n\t\t\t\t$(\"#district-control-draw , #district-control-erase , #map-draw-size\").hide();\n\t\t\t}\n\n\t\t\t$('#map-play-speed').fadeToggle();\n\t\t});\n\n\t\t$(\"#map-play-speed\").on('input', function () {\n\t\t\tmainMap.settings.playSpeed = (this.value / this.max).toFixed(2);\n\t\t\tupdateText();\n\t\t});\n\n\t\t$(\"#button1\").click(function () {\n\t\t\t$('#map-play-speed').hide();\n\t\t\t$('#map-draw-size').fadeToggle();\n\t\t});\n\n\t\t$(\"#map-draw-size\").on('input', function () {\n\t\t\tMiniMap.drawSize = this.value;\n\t\t\tupdateText();\n\t\t});\n\t\t\n\t\t$(\"#map-toggle-2d\").click(function () {\n\t\t\tif ($(this).data('type') == 2) {\n\t\t\t\t$(this).val('3D');\n\t\t\t\t$(this).data('type', 3);\n\t\t\t} else if ($(this).data('type') == 3) {\n\t\t\t\t$(this).val('2D');\n\t\t\t\t$(this).data('type', 2);\n\t\t\t}\n\n\t\t\tmainMap.toggle3D();\n\t\t});\n\n\t\t$(\"#map-toggle-play\").click(function () {\n\t\t\tlet newState = !mainMap.settings.pause;\n\t\t\t$(this).html(newState ? '' : '');\n\t\t\tmainMap.settings.pause = newState;\n\t\t});\n\n\t\tmainMap.OnTimeUpdated = function (seconds) {\n\t\t\tupdateText();\n\t\t\t$(\"#map-progress-bar\").val(MiniMap.serverTime > 0 ? seconds / MiniMap.serverTime : 0);\n\t\t\t$('.progress-day').html(secondsToString(mainMap.settings.currentTime));\n\t\t};\n\n\t\tif (infoText) {\n\t\t\tmainMap.OnInfoUpdated = function (text) {\n\t\t\t\tinfoText.innerText = text;\n\t\t\t}\n\t\t}\n\n\t\tmainMap.OnPositionUpdated = function (pos) {\n\t\t\tpositionText.innerText = pos.x + \", \" + pos.y;\n\t\t};\n\n\t\t$('.add-map-button').click(function (e) {\n\t\t\t$('.fancy-add-map').click();\n\t\t\t$(this).hide();\n\t\t\t$('.remove-map-button').show();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\t$(document).on('click', '.fancy-add-map', function () {\n\t\t\t$(\"#map-control-wrapper\").show();\n\t\t\t$(\"#main-map\").slideDown();\n\n\t\t\tlet elem = $(\".map-layer-select\");\n\t\t\telem = elem.offset();\n\n\t\t\t$('html, body').animate({scrollTop: elem.top - 200});\n\n\t\t\tlet view = document.getElementById(\"main-map\");\n\n\t\t\tif (view.settings === undefined) {\n\t\t\t\tview.mapdata = document.getElementById(\"map-data\");\n\t\t\t\tMiniMap.addView(view);\n\t\t\t\tMiniMap.fillLayerSelects();\n\t\t\t}\n\n\t\t\t$(this).hide();\n\n\t\t\t//composer.fadeIn();\n\t\t\t// $('.remove-map').css({'display': 'inline-block', 'margin-right': '17px'}).fadeIn();\n\t\t});\n\n\t\t$(document).on('click', '.fancy-add-district', function () {\n\t\t\t$(\"#map-control-wrapper\").show();\n\t\t\t$(\"#main-map\").show();\n\t\t\t$(\"#district-control-draw\").show();\n\t\t\t$(\"#district-control-erase\").show();\n\t\t\t$(\".map-layer-main\").hide();\n\t\t\t$(\".progress-day\").hide();\n\t\t\t$(\".map-tooltip\").css('top', '10px');\n\t\t\t$(\"#map-draw-size\").css('left', '239px');\n\t\t\t$(\".progress-day\").hide();\n\t\t\t$(\"#speed-button\").hide();\n\t\t\t$(\".range-controls-wrapper\").hide();\n\t\t\t$(\".play-button-wrapper\").hide();\n\n\t\t\tvar mapinfo = localStorage.getItem(\"mapinfo\");\n\t\t\tvar mapdrav = localStorage.getItem(\"mapdrav\");\n\t\t\t//var view = document.getElementById(\"main-map\");\n\n\t\t\tif (mapinfo == null) {\n\t\t\t\tmapinfo = \"{}\";\n\t\t\t}\n\t\t\tif (mapdrav == null) {\n\t\t\t\tmapdrav = \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\";\n\t\t\t}\n\n\t\t\tconst view = document.getElementById(\"main-map\");\n\n\t\t\tif (view.settings === undefined) {\n\t\t\t\tview.mapdata = document.getElementById(\"map-data\");\n\t\t\t\tMiniMap.addView(view);\n\t\t\t\tMiniMap.fillLayerSelects();\n\t\t\t\tMiniMap.SetZone(mapdrav)\n\t\t\t}\n\n\t\t\t$(this).attr(\"class\", \"eco-button fancy-remove-district\").attr(\"value\", \"Remove Districts\");\n\t\t\t$(\".district-controls-wrapper\").show();\n\t\t\t$(\".fancy-add-map\").hide();\n\n\t\t\t//composer.fadeIn();\n\t\t\t// $('.remove-map').css({'display': 'inline-block', 'margin-right': '17px'}).fadeIn();\n\n\t\t\tMiniMap.drawZone = true;\n\t\t\t$('.map-tooltip').css('display', 'block');\n\t\t\t$(\"#district-control-erase\").show();\n\t\t\t$(\"#district-control-draw\").hide();\n\t\t\tdocument.getElementById('button1').style.display = 'none';\n\t\t\tdocument.getElementById('button2').style.display = '';\n\t\t\t$('#map-play-speed').hide();\n\t\t\t$('#map-draw-size').fadeToggle();\n\n\t\t\t// DISTRICTS NOTES -- when the server provides existing district info we should do something similar to this\n\t\t\t// for each existing district (also when adding new districts)\n\t\t\t// also run MINIMAP.SetZone(zoneString);\n\t\t\tvar districts = $('.district-item');\n\n\t\t\tfor (var i = 0; i < districts.length; i++) {\n\t\t\t\tvar district = districts[i];\n\t\t\t\tvar id = districts[i].getAttribute(\"data-id\");\n\t\t\t\tvar color = $(district).css(\"background-color\");\n\t\t\t\tMiniMap.setDistrictColor(id, color);\n\t\t\t}\n\t\t});\n\n\t\t$(document).on('click', '.fancy-remove-district', function () {\n\t\t\t$(\".district-item\").remove();\n\t\t\t$(this).attr(\"class\", \"eco-button fancy-add-district\").attr(\"value\", \"Add District\");\n\t\t\t$(\".district-controls-wrapper\").hide();\n\n\t\t\t$(\".map-layer-main\").show();\n\t\t\t$(\".map-controls-wrapper\").show();\n\t\t\t$(\"#district-control-draw\").hide();\n\t\t\t$(\"#district-control-erase\").hide();\n\t\t\t$(\".map-layer-main\").show();\n\t\t\t$(\".progress-day\").show();\n\t\t\t$(\".map-tooltip\").css('top', '60px');\n\t\t\t$(\"#map-draw-size\").css('left', '-98px');\n\t\t\t$(\".progress-day\").show();\n\t\t\t$(\"#speed-button\").show();\n\t\t\t$(\".range-controls-wrapper\").show();\n\t\t\t$(\".play-button-wrapper\").show();\n\n\t\t\tMiniMap.drawZone = false;\n\t\t\t$('.map-tooltip').css('display', 'none');\n\t\t\t//$(\"#district-control-erase\").hide();\n\t\t\t//$(\"#district-control-draw\").show();\n\t\t\tdocument.getElementById('button2').style.display = 'none';\n\t\t\tdocument.getElementById('button1').style.display = '';\n\t\t\t$('#map-draw-size').hide();\n\t\t});\n\n\t\t$('.remove-map-button').click(function (e) {\n\t\t\t$('.remove-map').click();\n\t\t\t$(this).hide();\n\t\t\t$('.add-map-button').show();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\t/* Removing map */\n\t\t$(document).on('click', '.remove-map', function () {\n\t\t\t$(this).hide();\n\n\t\t\t$('.fancy-add-map').html('Add Map').attr('data-action', 'add');\n\n\t\t\t//$('#graph-data').val('');\n\n\t\t\t$(\"#map-control-wrapper\").slideUp();\n\t\t\t$(\"#main-map\").slideUp();\n\n\t\t\t// $('.fancy-add-map').show();\n\t\t})\n\t}\n};\n\n$(document).ready(function () {\n\tvar mapcontrol = new MapControls();\n\tmapcontrol.bindEvents();\n});\n\n$(document).ready(function () {\n\n\t$(\"#button1\").click(function () {\n\t\t$(\"#district-control-erase\").show();\n\t\t$(\"#district-control-draw\").hide();\n\t});\n\n\t$(\"#button2\").click(function () {\n\t\t$(\"#map-draw-size\").hide();\n\t\t$(\"#district-control-erase\").hide();\n\t\t$(\"#district-control-draw\").hide();\n\t});\n\n\t$('#district-control-erase').click(function () {\n\t\t$(this).hide();\n\t\t$(\"#district-control-draw\").show();\n\n\t\tMiniMap.eraseMode = true;\n\t});\n\n\t$('#district-control-draw').click(function () {\n\t\t$(this).hide();\n\t\t$('#district-control-erase').show();\n\t\tMiniMap.eraseMode = false;\n\t});\n});\n\n// function SwitchButtons(buttonId) {\n// \tvar hideBtn, showBtn, menuToggle;\n// \tif (buttonId == 'button1') {\n// \t\tmenuToggle = 'menu2';\n// \t\tshowBtn = 'button2';\n// \t\thideBtn = 'button1';\n// \t\tMINIMAP.drawZone = true;\n// \t\t$('.map-tooltip').css('display', 'block');\n// \t\t$('.fancy-add-district').attr(\"class\", \"eco-button fancy-remove-district\").attr(\"value\", \"Remove Districts\");\n// \t\t$(\".district-controls-wrapper\").show();\n// \t} else {\n// \t\tmenuToggle = 'menu3';\n// \t\tshowBtn = 'button1';\n// \t\thideBtn = 'button2';\n// \t\tMINIMAP.drawZone = false;\n// \t\t$('.map-tooltip').css('display', 'none');\n// \t\t$(\".fancy-remove-district\").attr(\"class\", \"eco-button fancy-add-district\").attr(\"value\", \"Add District\");\n// \t\t$(\".district-controls-wrapper\").hide();\n// \t}\n// \t//I don't have your menus, so this is commented out. just uncomment for your usage\n// \t// document.getElementById(menuToggle).toggle(); //step 1: toggle menu\n// \tdocument.getElementById(hideBtn).style.display = 'none'; //step 2 :additional feature hide button\n// \tdocument.getElementById(showBtn).style.display = ''; //step 3:additional feature show button\n// }\n\n$(document).ready(function () {\n\t// if (window.currentPage == \"addlaw\") {\n\t// \tvar cp = ColorPicker(document.getElementById('flexi-color-slide'), document.getElementById('flexi-color-picker'),\n\t// \t\tfunction (hex, hsv, rgb, mousePicker, mouseSlide) {\n\t// \t\t\t$(\".district-item.active\").css({\"background-color\": hex});\n\t// \t\t\tvar districtId = $(\".district-item.active\")[0].getAttribute(\"data-id\");\n\t// \t\t\tMINIMAP.setDistrictColor(districtId, hex);\n\t// \t\t\t// might as well make this one the active painting district\n\t// \t\t\tMINIMAP.paintDistrict(districtId);\n\t//\n\t// \t\t\tvar mapinfo = {}\n\t// \t\t\t$('.district-item').each(function () {\n\t// \t\t\t\tvar item = {}\n\t// \t\t\t\tvar id = $(this).attr('data-id')\n\t// \t\t\t\tvar bg = $(this).css('background-color')\n\t// \t\t\t\tvar val = $(this).find('.district-name-input').val()\n\t// \t\t\t\titem['bg'] = bg;\n\t// \t\t\t\titem['val'] = val;\n\t// \t\t\t\titem['id'] = id;\n\t// \t\t\t\tmapinfo[id] = item;\n\t// \t\t\t})\n\t// \t\t\tlocalStorage.setItem('mapdrav', MINIMAP.GetZone());\n\t// \t\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t//\n\t// \t\t});\n\t// \twindow.mapColorPicker = cp;\n\t// }\n\n\t$(document).on(\"click\", \".district-item\", function (event) {\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {};\n\t\t\tvar id = $(this).attr('data-id');\n\t\t\tvar bg = $(this).css('background-color');\n\t\t\tvar val = $(this).find('.district-name-input').val();\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\n\t\tif (window.currentPage == \"addlaw\") {\n\t\t\tevent.stopPropagation();\n\t\t\tif ($(this).hasClass(\"active\")) {\n\t\t\t\t$(this).removeClass(\"active\");\n\t\t\t\t$(\".flexi-color-picker-wrapper\").hide();\n\t\t\t} else {\n\t\t\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t\t\t$(this).addClass(\"active\");\n\t\t\t\t$(\".flexi-color-picker-wrapper\").css({\"top\": $(this).position().top + 10}).show();\n\n\t\t\t\tvar color = $(this).css(\"background-color\").split(\")\")[0].split(\"(\")[1].split(\", \");\n\t\t\t\tvar rgb = {\n\t\t\t\t\tr: color[0],\n\t\t\t\t\tg: color[1],\n\t\t\t\t\tb: color[2]\n\t\t\t\t};\n\n\t\t\t\twindow.mapColorPicker.setRgb(rgb);\n\t\t\t}\n\t\t\t//$('.district-item').css(\"border-color\", \"black\");\n\t\t\t// $(\".district-item[data-id=2]\").position()\n\t\t}\n\t});\n\n\t$(document).on(\"click\", \".remove_district_item\", function () {\n\t\tvar id = $(this).parent().attr(\"data-id\");\n\t\t\n\n\t\tvar arr = Base64.toByteArray(MiniMap.GetZone());\n\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (arr[i] == id) {\n\t\t\t\tarr[i] = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar newZone = Base64.fromByteArray(arr);\n\t\tMiniMap.SetZone(newZone);\n\n\t\tvar districts = $('.district-item');\n\n\t\tfor (i = 0; i < districts.length; i++) {\n\t\t\tvar district = districts[i];\n\t\t\tid = districts[i].getAttribute(\"data-id\");\n\t\t\tvar color = $(district).css(\"background-color\");\n\t\t\tMiniMap.setDistrictColor(id, color);\n\t\t}\n\n\t\t$(this).parent().remove();\n\t\tMiniMap.paintDistrict(0);\n\t\tif ($(\".district-item\").length == 1) $(\".remove_district_item\").remove();\n\t});\n\n\t$(document).on(\"click\", \".add-new-district-button\", function () {\n\t\tvar id = 1;\n\t\tvar districts = $(\".district-item\");\n\t\tvar title = localStorage.getItem(\"title\");\n\n\t\tif (title == '' || typeof title == 'undefined') {\n\t\t\ttitle = 'title';\n\t\t}\n\n\t\tfor (var i = 0; i < districts.length; i++) id = (id <= parseInt($(districts[i]).attr(\"data-id\"))) ? parseInt($(districts[i]).attr(\"data-id\")) + 1 : id;\n\t\t// var hex = \"#\"+parseInt(Math.random()*16581375).toString(16);\n\t\tvar colors = [\"rgb(33, 149, 172)\", \"rgb(191, 68, 119)\", \"rgb(153, 164, 255)\", \"rgb(69, 193, 37)\", \"rgb(232, 156, 55)\", \"rgb(188, 9, 47)\", \"rgb(179, 158, 245)\", \"rgb(126, 71, 193)\", \"rgb(161, 54, 4)\", \"rgb(134, 76, 163)\", \"rgb(231, 69, 61)\", \"rgb(229, 169, 117)\", \"rgb(49, 148, 178)\", \"rgb(65, 53, 228)\", \"rgb(126, 189, 136)\", \"rgb(255, 221, 119)\", \"rgb(77, 106, 175)\", \"rgb(99, 178, 184)\", \"rgb(187, 0, 17)\", \"rgb(128, 175, 118)\", \"rgb(211, 106, 211)\", \"rgb(93, 190, 63)\", \"rgb(49, 23, 156)\", \"rgb(40, 139, 221)\", \"rgb(170, 85, 238)\", \"rgb(154, 131, 190)\", \"rgb(238, 17, 68)\", \"rgb(33, 104, 147)\", \"rgb(226, 223, 95)\", \"rgb(54, 175, 187)\", \"rgb(108, 169, 253)\", \"rgb(186, 174, 86)\", \"rgb(221, 170, 68)\", \"rgb(101, 46, 60)\", \"rgb(137, 191, 62)\", \"rgb(131, 31, 61)\", \"rgb(239, 145, 233)\", \"rgb(222, 80, 62)\", \"rgb(221, 97, 206)\", \"rgb(188, 87, 215)\"];\n\t\tvar hex = colors[parseInt(Math.random() * 40)];\n\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t$(this).before('
');\n\t\twindow.mapColorPicker.setHex(hex);\n\t\t$('.district-item[data-id=' + id + ']').removeClass(\"active\");\n\n\t\tif ($(\".district-item\").length == 1) {\n\t\t\t$(\".remove_district_item\").remove();\n\t\t} else if ($(\".district-item\").length == 2) {\n\t\t\t$($(\".district-item\")[0]).prepend('');\n\t\t}\n\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(document).on(\"click\", \".district-item .district-name-input, .district-item .district-button, .district-item .remove_district_item\", (e) => {\n\t\te.stopPropagation();\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone())\n\t});\n\n\t$(document).on(\"click\", \".flexi-color-picker-wrapper\", (e) => {\n\t\te.stopPropagation();\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone())\n\t});\n\n\t$(document).on(\"click\", \".district-item .district-name-input, .district-item .district-button\", function (event) {\n\t\tevent.stopPropagation();\n\t\tvar districtId = this.parentNode.getAttribute(\"data-id\");\n\t\tMiniMap.paintDistrict(districtId);\n\t\tvar mapinfo = {}\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(\".view-map\").on(\"mouseup\", function () {\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t});\n\n\t$(document).on(\"click\", \".district-button\", function () {\n\t\t$(this).parent().trigger(\"click\");\n\t\tvar mapinfo = {}\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t})\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(document).on(\"keyup\", \".district-name-input\", function () {\n\t\tvar mapinfo = {}\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t});\n\n\t$(window).click(function () {\n\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t$(\".flexi-color-picker-wrapper\").hide();\n\t});\n});\n","import { render } from \"./WorldMap.vue?vue&type=template&id=b800f04a\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js\"\n\nimport \"./WorldMap.vue?vue&type=style&index=0&id=b800f04a&lang=css\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"frontpage-info-wrapper\" }\nconst _hoisted_2 = { class: \"frontpage-info\" }\nconst _hoisted_3 = { class: \"localize\" }\nconst _hoisted_4 = { class: \"text-highlight\" }\nconst _hoisted_5 = { class: \"localize\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"localize\" }\nconst _hoisted_8 = [\"innerHTML\"]\nconst _hoisted_9 = { class: \"localize\" }\nconst _hoisted_10 = { class: \"text-highlight\" }\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { class: \"text-highlight\" }\nconst _hoisted_13 = { class: \"localize\" }\nconst _hoisted_14 = { class: \"text-highlight\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_3, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Online Players\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.serverInfo.OnlinePlayers) + \" / \" + _toDisplayString(this.serverInfo.TotalPlayers), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_5, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Time\")), 1)\n ]),\n _createElementVNode(\"span\", {\n class: \"text-highlight\",\n innerHTML: _ctx.time\n }, null, 8, _hoisted_6)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_7, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Meteor Impact\")), 1)\n ]),\n _createElementVNode(\"span\", {\n class: \"text-highlight\",\n innerHTML: _ctx.meteorImpact\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Plants\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.serverInfo.Plants), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_11, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Laws\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.serverInfo.Laws), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_13, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"World Size\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.serverInfo.WorldSize), 1)\n ])\n ], 512), [\n [_vShow, _ctx.serverInfo.TimeSinceStart]\n ])\n ]))\n}","// converts seconds into days, hours, minutes\r\nexport function sec2time(seconds: number) {\r\n\r\n let result = '';\r\n let days = Math.floor(seconds / 86400);\r\n let hours = Math.floor((seconds - (86400 * days)) / 3600);\r\n let middle = (86400 * days) + (3600 * hours);\r\n let minutes = Math.floor((seconds - middle) / 60);\r\n\r\n if (days) {\r\n result += days + ' ' + ((days == 1) ? 'day ' : 'days ');\r\n }\r\n\r\n if (hours) {\r\n result += hours + ' ' + ((hours == 1) ? 'hr ' : ' hrs ');\r\n }\r\n\r\n if (minutes) {\r\n result += minutes + ' ' + ((minutes == 1) ? 'min ' : 'mins ');\r\n }\r\n\r\n if (!days && !hours && !minutes) {\r\n result = Math.floor(seconds) + ' secs';\r\n }\r\n\r\n return result;\r\n};\r\n\r\n// converts seconds into days, hours, minutes\r\nexport function sec2worldTime(secondsStr: string | number) {\r\n const seconds = parseFloat(String(secondsStr));\r\n const days = Math.floor(seconds / 86400);\r\n\r\n //getting hours\r\n const hours = Math.floor((seconds - (86400 * days)) / 3600);\r\n\r\n const hoursStr = (hours <= 9) ? '0' + hours : hours;\r\n\r\n const middle = (86400 * days) + (3600 * hours);\r\n\r\n //getting minutes\r\n const minutes = Math.floor((seconds - middle) / 60);\r\n const minutesStr = (minutes <= 9) ? '0' + minutes : minutes;\r\n\r\n //constructing the return text. Days + 1 so it's start with 1\r\n return 'Day ' + (days + 1) + ' , ' + hoursStr + ':' + minutesStr;\r\n};\r\n","\r\n import { defineComponent } from \"vue\";\r\n import { useMainStore } from '@/stores';\r\n import { sec2time, sec2worldTime } from \"@/helpers/time\";\r\n import { definitions } from \"@/types/EcoWebServer\"\r\n\r\n type ServerInfo = definitions[\"Eco.Shared.Networking.ServerInfo\"];\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n computed: {\r\n serverInfo(): ServerInfo {\r\n return this.store.serverInfo;\r\n },\r\n time(): string {\r\n return sec2worldTime(this.serverInfo.TimeSinceStart!);\r\n },\r\n meteorImpact(): string {\r\n var untilImpact = this.serverInfo.TimeLeft ?? 0;\r\n if (untilImpact <= 0)\r\n {\r\n if (!this.serverInfo.HasMeteor)\r\n return this.$t(\"No Meteor\");\r\n else\r\n return this.$t(\"The meteor was destroyed\");\r\n }\r\n else\r\n return sec2time(untilImpact);\r\n },\r\n }\r\n });\r\n","import { render } from \"./ServerInfo.vue?vue&type=template&id=ef18f3d6&ts=true\"\nimport script from \"./ServerInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ServerInfo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=d204350c\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./Comparison.vue?vue&type=template&id=7ddb5aeb\"\nimport script from \"./Comparison.vue?vue&type=script&lang=js\"\nexport * from \"./Comparison.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock, vModelText as _vModelText, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8468a734\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"container-fluid\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"elections-wrapper col-md-12\" }\nconst _hoisted_4 = {\n key: 0,\n id: \"election-wrapper\"\n}\nconst _hoisted_5 = {\n class: \"section-wrapper\",\n style: {\"width\":\"100%\"}\n}\nconst _hoisted_6 = { class: \"election-name\" }\nconst _hoisted_7 = { class: \"election-name\" }\nconst _hoisted_8 = { class: \"name-box\" }\nconst _hoisted_9 = { class: \"election-info section-info-wrapper\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"election-info section-info-wrapper\"\n}\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = {\n key: 0,\n id: \"position-for-winner-table\",\n class: \"col-md-4\"\n}\nconst _hoisted_13 = { class: \"election-info-tbl flat-table table\" }\nconst _hoisted_14 = { class: \"table-top-left election-rule\" }\nconst _hoisted_15 = { class: \"table-top-left election-rule-description\" }\nconst _hoisted_16 = [\"title\"]\nconst _hoisted_17 = { class: \"table-left election-rule-description change-to\" }\nconst _hoisted_18 = { class: \"change-to\" }\nconst _hoisted_19 = {\n key: 1,\n class: \"election-heading col-md-5\"\n}\nconst _hoisted_20 = { class: \"election-action-on-complete\" }\nconst _hoisted_21 = {\n class: \"panel-group\",\n id: \"accordion\"\n}\nconst _hoisted_22 = { class: \"panel-heading\" }\nconst _hoisted_23 = { class: \"panel-title\" }\nconst _hoisted_24 = [\"href\"]\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"caret pull-right\" }, null, -1))\nconst _hoisted_26 = [\"id\"]\nconst _hoisted_27 = { class: \"panel-body\" }\nconst _hoisted_28 = {\n class: \"election-info-tbl flat-table table\",\n style: {\"table-layout\":\"fixed\",\"width\":\"100%\"}\n}\nconst _hoisted_29 = {\n key: 0,\n class: \"collapsible\"\n}\nconst _hoisted_30 = { class: \"table-top-left election-rule\" }\nconst _hoisted_31 = { class: \"table-top-left election-rule-description\" }\nconst _hoisted_32 = {\n key: 0,\n class: \"table-top-left election-rule-description\"\n}\nconst _hoisted_33 = [\"title\"]\nconst _hoisted_34 = { class: \"table-left change-to\" }\nconst _hoisted_35 = { class: \"change-to\" }\nconst _hoisted_36 = {\n key: 0,\n class: \"table-left current\"\n}\nconst _hoisted_37 = { class: \"current\" }\nconst _hoisted_38 = {\n key: 1,\n style: {\"display\":\"table-row-group\"}\n}\nconst _hoisted_39 = { class: \"table-top\" }\nconst _hoisted_40 = {\n class: \"table-top-left\",\n style: {\"text-align\":\"left\"}\n}\nconst _hoisted_41 = {\n key: 2,\n style: {\"display\":\"table-row-group\"}\n}\nconst _hoisted_42 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"tr\", { class: \"table-top\" }, [\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"table-top-left\" }, \"No Data\")\n], -1))\nconst _hoisted_43 = [\n _hoisted_42\n]\nconst _hoisted_44 = {\n key: 2,\n id: \"candidates-results-wrapper\",\n class: \"col-md-5\"\n}\nconst _hoisted_45 = {\n class: \"candidates-wrapper section-wrapper\",\n id: \"choise-election-wrapper\"\n}\nconst _hoisted_46 = {\n id: \"choice-election-vote-wrapper\",\n class: \"voting-wrapper\"\n}\nconst _hoisted_47 = {\n key: 0,\n class: \"vote\"\n}\nconst _hoisted_48 = {\n class: \"add-self-wrapper\",\n style: {\"position\":\"relative\"}\n}\nconst _hoisted_49 = {\n key: 0,\n class: \"btn-group btn-group-toggle bool-choice-controls vote-item vote-button\",\n \"data-toggle\": \"buttons\"\n}\nconst _hoisted_50 = [\"onClick\"]\nconst _hoisted_51 = [\"value\"]\nconst _hoisted_52 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"⇅\", -1))\nconst _hoisted_53 = [\"data-id\"]\nconst _hoisted_54 = { class: \"candidate-name-title\" }\nconst _hoisted_55 = { class: \"candidate-speech\" }\nconst _hoisted_56 = {\n key: 0,\n id: \"ranked-election-vote-wrapper\",\n class: \"voting-wrapper\"\n}\nconst _hoisted_57 = {\n id: \"section-title\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n \"data-original-title\": \"Click and drag the candidates to put them in your order of preference. If your first choice\\r\\n doesn't have enough votes to win, your second choice will be used, etc.\"\n}\nconst _hoisted_58 = {\n style: {\"width\":\"100%\"},\n class: \"localize\"\n}\nconst _hoisted_59 = {\n key: 0,\n class: \"vote\"\n}\nconst _hoisted_60 = {\n class: \"add-self-wrapper\",\n style: {\"position\":\"relative\"}\n}\nconst _hoisted_61 = {\n key: 0,\n class: \"vote-drag-box\"\n}\nconst _hoisted_62 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"⇅\", -1))\nconst _hoisted_63 = { class: \"choice\" }\nconst _hoisted_64 = [\"data-id\"]\nconst _hoisted_65 = { class: \"candidate-name-title\" }\nconst _hoisted_66 = { class: \"candidate-speech\" }\nconst _hoisted_67 = { class: \"localize\" }\nconst _hoisted_68 = { class: \"voted-wrapper col-md-8\" }\nconst _hoisted_69 = {\n key: 0,\n class: \"votes-per-round multi-choice-election\"\n}\nconst _hoisted_70 = {\n key: 0,\n class: \"no-votes\"\n}\nconst _hoisted_71 = { class: \"localize\" }\nconst _hoisted_72 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_73 = {\n key: 1,\n class: \"flat-table table\",\n style: {\"text-align\":\"center\"}\n}\nconst _hoisted_74 = { class: \"title-heading\" }\nconst _hoisted_75 = { class: \"th\" }\nconst _hoisted_76 = { class: \"localize\" }\nconst _hoisted_77 = { class: \"table-top\" }\nconst _hoisted_78 = { class: \"table-top-left\" }\nconst _hoisted_79 = { class: \"localize\" }\nconst _hoisted_80 = { class: \"localize\" }\nconst _hoisted_81 = [\"innerHTML\"]\nconst _hoisted_82 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_83 = { key: 0 }\nconst _hoisted_84 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_85 = { key: 1 }\nconst _hoisted_86 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_87 = { class: \"table-bottom\" }\nconst _hoisted_88 = { class: \"localize\" }\nconst _hoisted_89 = {\n key: 1,\n id: \"votingResultsChart\",\n class: \"votes-per-round\"\n}\nconst _hoisted_90 = { class: \"election-info-wrapper col-md-8\" }\nconst _hoisted_91 = {\n id: \"election-info-results-wrapper\",\n class: \"election-info section-info-wrapper\"\n}\nconst _hoisted_92 = { key: 0 }\nconst _hoisted_93 = { class: \"localize\" }\nconst _hoisted_94 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_95 = [\"innerHTML\"]\nconst _hoisted_96 = { class: \"localize\" }\nconst _hoisted_97 = { key: 1 }\nconst _hoisted_98 = { class: \"localize\" }\nconst _hoisted_99 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_100 = [\"innerHTML\"]\nconst _hoisted_101 = { class: \"localize\" }\nconst _hoisted_102 = { key: 2 }\nconst _hoisted_103 = { class: \"localize\" }\nconst _hoisted_104 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_105 = [\"innerHTML\"]\nconst _hoisted_106 = { key: 3 }\nconst _hoisted_107 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_108 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_109 = { class: \"localize\" }\nconst _hoisted_110 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_111 = { key: 4 }\nconst _hoisted_112 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_113 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_114 = { class: \"localize\" }\nconst _hoisted_115 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_116 = { key: 5 }\nconst _hoisted_117 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_118 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_119 = { class: \"localize\" }\nconst _hoisted_120 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_121 = { key: 6 }\nconst _hoisted_122 = /*#__PURE__*/_createTextVNode(\" This election is conducted with Instant Runoff Voting. This means that if a citizen's first choice candidate doesn't have enough votes to win, their vote goes instead to their second choice candidate, then third choice, and so on. This table shows each round of removal and how many votes each candidate has. For more info, see \")\nconst _hoisted_123 = {\n href: \"https://en.wikipedia.org/wiki/Instant%E2%80%90runoff_voting\",\n target: \"_blank\",\n class: \"localize\"\n}\nconst _hoisted_124 = { class: \"localize\" }\nconst _hoisted_125 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_126 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"input\", {\n type: \"hidden\",\n id: \"candidate-names\"\n}, null, -1))\nconst _hoisted_127 = { class: \"election-discussion section-wrapper\" }\nconst _hoisted_128 = { class: \"section-wrapper-2\" }\nconst _hoisted_129 = {\n key: 0,\n class: \"discussion-user\"\n}\nconst _hoisted_130 = { class: \"law-discussion-wrapper\" }\nconst _hoisted_131 = { class: \"law-discussion-user\" }\nconst _hoisted_132 = [\"innerHTML\"]\nconst _hoisted_133 = {\n key: 0,\n class: \"law-discussion-comment\"\n}\nconst _hoisted_134 = { key: 1 }\nconst _hoisted_135 = [\"placeholder\"]\nconst _hoisted_136 = { class: \"add-comment-buttons\" }\nconst _hoisted_137 = [\"disabled\"]\nconst _hoisted_138 = { class: \"localize\" }\nconst _hoisted_139 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"law-add-graph\",\n style: {\"display\":\"inline-block\"}\n}, [\n /*#__PURE__*/_createElementVNode(\"input\", {\n type: \"hidden\",\n id: \"graph-data\",\n value: \"\"\n })\n], -1))\nconst _hoisted_140 = {\n class: \"edit-comment-buttons\",\n style: {\"display\":\"none\"}\n}\nconst _hoisted_141 = {\n id: \"cancel-edit\",\n class: \"eco-button\"\n}\nconst _hoisted_142 = { class: \"localize\" }\nconst _hoisted_143 = [\"disabled\"]\nconst _hoisted_144 = { class: \"localize\" }\nconst _hoisted_145 = {\n class: \"row\",\n style: {\"clear\":\"both\",\"margin-right\":\"0\"}\n}\nconst _hoisted_146 = {\n key: 0,\n class: \"comment-graph\",\n id: \"graph_composer\",\n style: {\"height\":\"536px\"},\n src: \"/graph_composer/index.html\"\n}\nconst _hoisted_147 = {\n key: 1,\n class: \"map-wrapper-1 col-xl-4\",\n id: \"map-control-wrapper\"\n}\nconst _hoisted_148 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"graphContainer\",\n class: \"election-wrapper-right col-xl-8 col-lg-12\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TMPLabel = _resolveComponent(\"TMPLabel\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _component_ElectionProcessModal = _resolveComponent(\"ElectionProcessModal\")!\n const _component_AllVotesModal = _resolveComponent(\"AllVotesModal\")!\n const _component_WorldMap = _resolveComponent(\"WorldMap\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.election.Name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"h2\", null, [\n _createElementVNode(\"span\", _hoisted_8, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-title\",\n text: _ctx.election.Name\n }, null, 8, [\"text\"])\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-description\",\n text: _ctx.election.ElectionDescription,\n onTmpLinkClick: _ctx.handleTMPLinkClick\n }, null, 8, [\"text\", \"onTmpLinkClick\"])\n ]),\n (_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-description\",\n text: _ctx.election.Results.Result,\n onTmpLinkClick: _ctx.handleTMPLinkClick\n }, null, 8, [\"text\", \"onTmpLinkClick\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_ctx.election.PositionForWinner)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"table\", _hoisted_13, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.PositionForWinner.Table.slice(0, 1), (row, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candidateHead${i}`,\n class: \"table-top\"\n }, [\n _createElementVNode(\"td\", _hoisted_14, _toDisplayString(row[0]), 1),\n _createElementVNode(\"td\", _hoisted_15, _toDisplayString(row[2]), 1)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.PositionForWinner.Table.slice(1), (row, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candidateRow${i}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: row[1]\n }, _toDisplayString(row[0]), 9, _hoisted_16),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(row[2]), 1)\n ])\n ]))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.election.Provisions?.length ?? 0 > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Provisions, (provision, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `provision${i}`,\n class: \"panel panel-default\"\n }, [\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"h4\", _hoisted_23, [\n _createElementVNode(\"a\", {\n \"data-toggle\": \"collapse\",\n \"data-parent\": \"#accordion\",\n href: `#provisionBody${i}`\n }, [\n _createVNode(_component_TMPLabel, {\n text: provision.ActionOnCompleteTableHeader || `Provision #${i + 1}`\n }, null, 8, [\"text\"]),\n _hoisted_25\n ], 8, _hoisted_24)\n ])\n ]),\n _createElementVNode(\"div\", {\n id: `provisionBody${i}`,\n class: _normalizeClass(`panel-collapse collapse ${!i ? 'in' : ''}`)\n }, [\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"table\", _hoisted_28, [\n (provision.ActionOnCompleteTable)\n ? (_openBlock(), _createElementBlock(\"tbody\", _hoisted_29, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(provision.ActionOnCompleteTable.slice(0, 1), (row, j) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `actionHead${j}`,\n class: \"table-top\"\n }, [\n _createElementVNode(\"td\", _hoisted_30, _toDisplayString(row[0]), 1),\n _createElementVNode(\"td\", _hoisted_31, _toDisplayString(row[2]), 1),\n (row[3] !== undefined)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_32, _toDisplayString(row[3]), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(provision.ActionOnCompleteTable.slice(1), (row, j) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `action${j}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: row[1]\n }, _toDisplayString(row[0]), 9, _hoisted_33),\n _createElementVNode(\"td\", _hoisted_34, [\n _createElementVNode(\"span\", _hoisted_35, _toDisplayString(row[2]), 1)\n ]),\n (row[3] !== undefined)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_36, [\n _createElementVNode(\"span\", _hoisted_37, _toDisplayString(row[3]), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : (provision.ActionOnCompleteFullDescription)\n ? (_openBlock(), _createElementBlock(\"tbody\", _hoisted_38, [\n _createElementVNode(\"tr\", _hoisted_39, [\n _createElementVNode(\"td\", _hoisted_40, [\n _createVNode(_component_TMPLabel, {\n text: provision.ActionOnCompleteFullDescription\n }, null, 8, [\"text\"])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"tbody\", _hoisted_41, _hoisted_43))\n ])\n ])\n ], 10, _hoisted_26)\n ]))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_44, [\n _createElementVNode(\"div\", _hoisted_45, [\n _createElementVNode(\"div\", _hoisted_46, [\n (_ctx.store.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [\n _createElementVNode(\"div\", _hoisted_48, [\n (_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_49, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Choices, (choice, i) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n key: `choice${i}`,\n onClick: _withModifiers(($event: any) => (_ctx.vote(choice.Id)), [\"prevent\"]),\n class: \"btn btn-success form-check-label bool-choice-control eco-button\"\n }, [\n _createElementVNode(\"input\", {\n class: \"form-check-input boolean-choice-input\",\n type: \"radio\",\n name: \"options\",\n value: choice.Name\n }, null, 8, _hoisted_51),\n _createTextVNode(\" \" + _toDisplayString(choice.Name), 1)\n ], 8, _hoisted_50))\n }), 128))\n ]))\n : (_openBlock(), _createBlock(_component_draggable, {\n key: 1,\n modelValue: _ctx.candidates,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.candidates) = $event)),\n \"item-key\": \"Id\",\n group: { name: 'candidates' }\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.candidates, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `candidate${i}`,\n class: \"vote-item grab\"\n }, [\n _hoisted_52,\n _createElementVNode(\"p\", {\n \"data-id\": candidate.Id,\n class: \"candidate-name\"\n }, [\n _createElementVNode(\"span\", _hoisted_54, _toDisplayString(candidate.Name), 1),\n _createElementVNode(\"span\", _hoisted_55, _toDisplayString(candidate.Speech), 1)\n ], 8, _hoisted_53)\n ]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_56, [\n _createElementVNode(\"div\", _hoisted_57, [\n _createElementVNode(\"p\", _hoisted_58, _toDisplayString(_ctx.$t(\"Candidates Ranked\")), 1)\n ]),\n (_ctx.store.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_59, [\n _createElementVNode(\"div\", _hoisted_60, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.rankedCandidates,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.rankedCandidates) = $event)),\n \"item-key\": \"Id\",\n \"ghost-class\": \"vote-drag-box\",\n filter: \".vote-drag-box\",\n group: { name: 'candidates' },\n onAdd: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changed = true)),\n onSort: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changed = true))\n }, {\n default: _withCtx(() => [\n (!_ctx.rankedCandidates.length)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_61, \"Drag candidates here to vote\"))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rankedCandidates, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `rankedCandidate${i}`,\n class: \"vote-item grab\"\n }, [\n _hoisted_62,\n _createElementVNode(\"div\", _hoisted_63, [\n _createElementVNode(\"span\", null, _toDisplayString(++i), 1)\n ]),\n candidate\n ? (_openBlock(), _createElementBlock(\"p\", {\n key: 0,\n \"data-id\": candidate.Id,\n class: \"candidate-name\"\n }, [\n _createElementVNode(\"span\", _hoisted_65, _toDisplayString(candidate.Name), 1),\n _createElementVNode(\"span\", _hoisted_66, _toDisplayString(candidate.Speech), 1)\n ], 8, _hoisted_64))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n (_ctx.rankedCandidates.length && _ctx.changed)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"eco-button vote-button\",\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.vote && _ctx.vote(...args)))\n }, [\n _createElementVNode(\"span\", _hoisted_67, _toDisplayString(_ctx.$t(\"Submit Vote\")), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_68, [\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_69, [\n (!_ctx.election.TotalVotes)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_70, [\n _createElementVNode(\"span\", _hoisted_71, _toDisplayString(_ctx.$t(\"No one has voted yet\")), 1),\n _hoisted_72\n ]))\n : (_ctx.rounds.length)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_73, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_74, [\n _createElementVNode(\"td\", _hoisted_75, [\n _createElementVNode(\"span\", _hoisted_76, _toDisplayString(_ctx.$t(\"Votes per round\")), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", _hoisted_77, [\n _createElementVNode(\"td\", _hoisted_78, [\n _createElementVNode(\"span\", _hoisted_79, _toDisplayString(_ctx.$t(\"Candidates\")), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rounds, (round, i) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `roundHead${i}`\n }, [\n _createElementVNode(\"span\", _hoisted_80, _toDisplayString(_ctx.$t(\"Round\")), 1),\n _createTextVNode(\" \" + _toDisplayString(++i), 1)\n ]))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Results?.ChoiceRanks, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candVote${i}`,\n class: \"table-middle table-alternating-color-1\",\n \"data-candidate\": \"48\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left\",\n innerHTML: candidate.MarkedUpNameString\n }, null, 8, _hoisted_81),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(candidate.VotesPerRound, (vote, j) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `roundVote${j}`,\n class: \"round-vote\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(\"UserVotes\")) + \": \" + _toDisplayString(vote.UserVotes), 1),\n _hoisted_82,\n (vote.TwitchVotes!)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_83, _toDisplayString(_ctx.$t(\"TwitchVotes\")) + \": \" + _toDisplayString(Math.round(vote.TwitchVotes* 100) / 100), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_84,\n (vote.Total)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_85, _toDisplayString(_ctx.$t(\"Total\")) + \": \" + _toDisplayString(Math.round(vote.Total * 100) / 100), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_86\n ]))\n }), 128))\n ]))\n }), 128)),\n _createElementVNode(\"tr\", _hoisted_87, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_88, _toDisplayString(_ctx.$t(\"Total\")), 1)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_ctx.totalAllVotes), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.election.BooleanElection && _ctx.election.TotalVotes)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_89))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_90, [\n _createElementVNode(\"ul\", _hoisted_91, [\n (_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_92, [\n _createElementVNode(\"span\", _hoisted_93, _toDisplayString(_ctx.$t(\"Ended\")), 1),\n _hoisted_94,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeEndAgo }, null, 8, _hoisted_95),\n _createElementVNode(\"span\", _hoisted_96, _toDisplayString(_ctx.$t(\"ago\")), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"li\", _hoisted_97, [\n _createElementVNode(\"span\", _hoisted_98, _toDisplayString(_ctx.$t(\"Since\")), 1),\n _hoisted_99,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeStartAgo }, null, 8, _hoisted_100),\n _createElementVNode(\"span\", _hoisted_101, _toDisplayString(_ctx.$t(\"ago\")), 1)\n ])),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_102, [\n _createElementVNode(\"span\", _hoisted_103, _toDisplayString(_ctx.$t(\"Voting will end in\")), 1),\n _hoisted_104,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeToElectionEnd }, null, 8, _hoisted_105)\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_106, [\n _createTextVNode(_toDisplayString(_ctx.totalAllVotes) + \" \", 1),\n (_ctx.totalAllVotes == 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_107, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_108, _toDisplayString(_ctx.$t(\"Votes\")), 1)),\n _createElementVNode(\"span\", _hoisted_109, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_110\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished && _ctx.totalTwitchVotes > 0)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_111, [\n _createTextVNode(_toDisplayString(_ctx.totalUserVotes) + \" \", 1),\n (_ctx.totalUserVotes == 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_112, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_113, _toDisplayString(_ctx.$t(\"UserVotes\")), 1)),\n _createElementVNode(\"span\", _hoisted_114, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_115\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished && _ctx.totalTwitchVotes > 0)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_116, [\n _createTextVNode(_toDisplayString(_ctx.totalTwitchVotes) + \" \", 1),\n (_ctx.totalTwitchVotes== 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_117, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_118, _toDisplayString(_ctx.$t(\"TwitchVotes\")), 1)),\n _createElementVNode(\"span\", _hoisted_119, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_120\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_121, [\n _hoisted_122,\n _createElementVNode(\"a\", _hoisted_123, _toDisplayString(_ctx.$t(\"Instant Runoff Voting\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _createVNode(_component_ElectionProcessModal, {\n modelValue: _ctx.showElectionProcessModal,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.showElectionProcessModal) = $event)),\n election: _ctx.election\n }, null, 8, [\"modelValue\", \"election\"]),\n _createElementVNode(\"span\", _hoisted_124, _toDisplayString(_ctx.$t(\"This election is conducted using the rules of \")), 1),\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"election-process-info\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.showElectionProcessModal = true)),\n style: {\"text-decoration\":\"none\"}\n }, _toDisplayString(_ctx.election.ElectionProcess.Name), 1),\n _hoisted_125\n ]),\n _createElementVNode(\"li\", null, [\n _createVNode(_component_AllVotesModal, {\n modelValue: _ctx.showAllVotes,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.showAllVotes) = $event)),\n election: _ctx.election,\n votes: _ctx.userVotesData\n }, null, 8, [\"modelValue\", \"election\", \"votes\"]),\n _createElementVNode(\"span\", {\n class: \"view-all-votes localize\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.showAllVotes = true))\n }, _toDisplayString(_ctx.$t(\"View All Votes\")), 1)\n ])\n ])\n ]),\n _hoisted_126\n ]),\n _createElementVNode(\"div\", _hoisted_127, [\n _createElementVNode(\"div\", _hoisted_128, [\n (_ctx.election.Comments.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_129, [\n _createElementVNode(\"div\", _hoisted_130, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Comments, (comment, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `comment${i}`,\n class: \"comment-section1\"\n }, [\n _createElementVNode(\"div\", _hoisted_131, [\n _createTextVNode(_toDisplayString(comment.Username) + \" \", 1),\n _createElementVNode(\"span\", {\n class: \"law-discussion-time\",\n innerHTML: `Posted on ${_ctx.sec2worldTime(comment.Timestamp)}`\n }, null, 8, _hoisted_132)\n ]),\n (comment.Text)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_133, _toDisplayString(comment.Text), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_134, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: \"comment\",\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.commentText) = $event)),\n class: \"election-comment form-control localize\",\n placeholder: _ctx.$t('Enter your response')\n }, null, 8, _hoisted_135), [\n [_vModelText, _ctx.commentText]\n ]),\n _createElementVNode(\"div\", _hoisted_136, [\n _createElementVNode(\"button\", {\n id: \"addGraph\",\n class: \"fa fa-bar-chart comment-button add-graph-button\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.showGraphComposer=!_ctx.showGraphComposer))\n }),\n _createElementVNode(\"button\", {\n class: \"fa fa-globe comment-button add-map-button\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.showWorldMap=!_ctx.showWorldMap))\n }),\n _createElementVNode(\"button\", {\n id: \"pushComment\",\n disabled: !this.commentText,\n onClick: _cache[12] || (_cache[12] = \n//@ts-ignore\n(...args) => (_ctx.comment && _ctx.comment(...args))),\n class: \"eco-button\"\n }, [\n _createElementVNode(\"span\", _hoisted_138, _toDisplayString(_ctx.$t(\"Submit\")), 1)\n ], 8, _hoisted_137),\n _hoisted_139\n ]),\n _createElementVNode(\"div\", _hoisted_140, [\n _createElementVNode(\"button\", _hoisted_141, [\n _createElementVNode(\"span\", _hoisted_142, _toDisplayString(_ctx.$t(\"Cancel\")), 1)\n ]),\n _createElementVNode(\"button\", {\n id: \"submit\",\n disabled: !this.commentText,\n onClick: _cache[13] || (_cache[13] = \n//@ts-ignore\n(...args) => (_ctx.comment && _ctx.comment(...args))),\n class: \"eco-button\",\n style: {\"display\":\"block\"}\n }, [\n _createElementVNode(\"span\", _hoisted_144, _toDisplayString(_ctx.$t(\"Submit\")), 1)\n ], 8, _hoisted_143)\n ]),\n _createElementVNode(\"div\", _hoisted_145, [\n (_ctx.showGraphComposer)\n ? (_openBlock(), _createElementBlock(\"iframe\", _hoisted_146))\n : _createCommentVNode(\"\", true),\n (_ctx.showWorldMap)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_147, [\n _createVNode(_component_WorldMap)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_148\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, mergeProps as _mergeProps, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f400a67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"modal__content\" }\nconst _hoisted_2 = { class: \"fancy-all-votes\" }\nconst _hoisted_3 = { class: \"current-rankings\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"flat-table table\"\n}\nconst _hoisted_5 = {\n class: \"th\",\n colspan: \"5\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = {\n class: \"table-key\",\n colspan: \"12\"\n}\nconst _hoisted_9 = { class: \"localize\" }\nconst _hoisted_10 = { class: \"table-top table-top-left table-key\" }\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createBlock(_component_vue_final_modal, _mergeProps(_ctx.$attrs, {\n classes: \"modal-container\",\n \"content-class\": \"modal-content\",\n \"click-to-close\": true,\n \"esc-to-close\": true\n }), {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.election && _ctx.election.Name)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_4, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_5, [\n (_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(_ctx.$t(\"All Votes\")), 1))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"tr\", _hoisted_7, [\n _createElementVNode(\"td\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t(\"Candidates Ranked\")), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"Voters\")), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Choices, (choice, i) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `choiceRow${i}`,\n class: \"table-top\"\n }, _toDisplayString(choice.Name), 1))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.votes, (vote, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `userVote${i}`,\n class: \"table-middle table-alternating-color-2\"\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(vote.Voter), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(this.getUserVotes(vote), (choice, v) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `userChoice${v}`,\n class: \"rank\"\n }, [\n (choice > -1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, _toDisplayString(_ctx.election.BooleanElection ? \"✓\" : choice), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _: 1\n }, 16))\n}","\r\n import { defineComponent } from \"vue\";\r\n import { definitions } from \"@/types/EcoWebServer\";\r\n\r\n type RunoffVoteV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.RunoffVoteV1\"];\r\n\r\n export default defineComponent({\r\n name: 'AllVotesModal',\r\n inheritAttrs: false,\r\n props: {\r\n election: {\r\n type: Object,\r\n required: true,\r\n },\r\n votes: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n // Returns an array of rank values matching the user's vote choices\r\n getUserVotes(vote: RunoffVoteV1): Array {\r\n let choices: Array = [];\r\n if (this.election && this.votes) {\r\n for (let c = 0; c < this.election.Choices.length; ++c) {\r\n const option = this.election.Choices[c];\r\n let rankIndex = vote.RankedVotes!.indexOf(option.Id);\r\n if (this.election.BooleanElection) {\r\n choices.push(rankIndex == 0 ? 1 : -1);\r\n } else {\r\n choices.push(rankIndex > -1 ? rankIndex + 1 : rankIndex);\r\n }\r\n }\r\n }\r\n return choices;\r\n }\r\n }\r\n });\r\n","import { render } from \"./AllVotesModal.vue?vue&type=template&id=4f400a67&scoped=true&ts=true\"\nimport script from \"./AllVotesModal.vue?vue&type=script&lang=ts\"\nexport * from \"./AllVotesModal.vue?vue&type=script&lang=ts\"\n\nimport \"./AllVotesModal.vue?vue&type=style&index=0&id=4f400a67&scoped=true&lang=css\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f400a67\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./ElectionProcessModal.vue?vue&type=template&id=16d0e3c1&scoped=true\"\nimport script from \"./ElectionProcessModal.vue?vue&type=script&lang=js\"\nexport * from \"./ElectionProcessModal.vue?vue&type=script&lang=js\"\n\nimport \"./ElectionProcessModal.vue?vue&type=style&index=0&id=16d0e3c1&scoped=true&lang=css\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-16d0e3c1\"]])\n\nexport default __exports__","\r\nimport 'bootstrap';\r\nimport { defineComponent } from 'vue';\r\nimport { default as axios, AxiosError } from 'axios';\r\nimport Highcharts from 'highcharts';\r\nimport { VueDraggableNext } from 'vue-draggable-next'\r\nimport { decode } from '@/helpers/data';\r\nimport { sec2time, sec2worldTime } from '@/helpers/time';\r\nimport 'bootstrap';\r\n\r\nimport { useMainStore } from '@/stores';\r\nimport { definitions } from \"@/types/EcoWebServer\";\r\n\r\nimport WorldMap from '@/components/WorldMap.vue';\r\nimport TMPLabel from \"@/components/TMPLabel.vue\";\r\n\r\nimport AllVotesModal from '@/components/modals/AllVotesModal.vue';\r\nimport ElectionProcessModal from '@/components/modals/ElectionProcessModal.vue';\r\n\r\ntype GameServerElectionV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.GameServerElectionV1\"];\r\ntype RunoffVoteV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.RunoffVoteV1\"];\r\ntype ElectionChoiceID = definitions[\"Eco.Gameplay.Civics.ElectionChoiceID\"];\r\ntype RoundsForChoice = definitions[\"Eco.Gameplay.Civics.Elections.RoundsForChoice\"];\r\ntype VoteCounts = definitions[\"Eco.Gameplay.Civics.Elections.VoteCounts\"];\r\n\r\ninterface Candidate {\r\n Id: number;\r\n Name: string;\r\n Votes: number;\r\n Speech: string;\r\n}\r\n\r\nexport default defineComponent({\r\n components: {\r\n WorldMap,\r\n draggable: VueDraggableNext,\r\n TMPLabel,\r\n AllVotesModal,\r\n ElectionProcessModal,\r\n },\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n data() {\r\n return {\r\n election: {} as GameServerElectionV1,\r\n votes: [] as Array,\r\n candidates: [] as Array,\r\n rankedCandidates: [] as Array,\r\n test: [{ name: 'test' }],\r\n timeAtStart: Date.now() / 1000,\r\n commentText: '',\r\n changed: false,\r\n showAllVotes: false,\r\n showElectionProcessModal: false,\r\n userVotes: [] as Array,\r\n userVotesData: [] as Array,\r\n showGraphComposer: false,\r\n showWorldMap: false\r\n }\r\n },\r\n computed: {\r\n id(): string {\r\n return this.$route.params.id;\r\n },\r\n timeEndAgo(): string {\r\n return sec2time(this.election.TimeEndAgo!);\r\n },\r\n timeStartAgo(): string {\r\n return sec2time(this.election.TimeStartAgo!);\r\n },\r\n timeToElectionEnd(): string {\r\n return sec2time(Math.max(0, -this.election.TimeEndAgo! - this.secondsFromStart));\r\n },\r\n secondsFromStart(): number {\r\n return Date.now() / 1000 - this.timeAtStart;\r\n },\r\n username(): string | null {\r\n return this.store.username;\r\n },\r\n rounds(): VoteCounts[] {\r\n const ranks = this.election.Results!.ChoiceRanks!;\r\n if (!ranks.length || !ranks[0].VotesPerRound) return [];\r\n return ranks[0].VotesPerRound;\r\n },\r\n totalTwitchVotes(): any {\r\n let totalVote: any = 0;\r\n if(this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if(votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].TwitchVotes\r\n }\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n totalUserVotes(): any {\r\n let totalVote: any = 0;\r\n if (this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if (votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].UserVotes\r\n }\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n totalAllVotes(): number | null {\r\n let totalVote: any = 0;\r\n if (this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if (votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].Total\r\n }\r\n\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n\r\n },\r\n watch: {\r\n id() {\r\n this.fetch();\r\n },\r\n },\r\n mounted() {\r\n this.fetch();\r\n },\r\n methods: {\r\n handleTMPLinkClick(event) {\r\n if (event.tmpLinkMethod == \"click:ShowAllVotes\") {\r\n this.showAllVotes = true;\r\n }\r\n },\r\n darkenHexColor(hexColor, amount = 20) {\r\n // Remove the '#' symbol if present\r\n hexColor = hexColor.replace('#', '');\r\n\r\n // Convert hex color to RGB format\r\n const r = parseInt(hexColor.substr(0, 2), 16);\r\n const g = parseInt(hexColor.substr(2, 2), 16);\r\n const b = parseInt(hexColor.substr(4, 2), 16);\r\n\r\n // Calculate darker RGB values\r\n const darkR = Math.max(r - amount, 0);\r\n const darkG = Math.max(g - amount, 0);\r\n const darkB = Math.max(b - amount, 0);\r\n\r\n // Convert the darker RGB values back to hex format\r\n const darkHex = (\r\n (darkR < 16 ? '0' : '') + darkR.toString(16) +\r\n (darkG < 16 ? '0' : '') + darkG.toString(16) +\r\n (darkB < 16 ? '0' : '') + darkB.toString(16)\r\n );\r\n\r\n return `#${darkHex}`;\r\n },\r\n getColorForCandidate(candidateName) {\r\n if (candidateName === 'Yes') {\r\n return '#00FF00'; // Green\r\n } else if (candidateName === 'No') {\r\n return '#FF0000'; // Red\r\n } else {\r\n // Generate a random unique color\r\n const randomColor = Math.floor(Math.random()*16777215).toString(16);\r\n return `#${randomColor}`;\r\n }\r\n },\r\n drawPieChartIfRequired() {\r\n // Check if a pie chart is required. If not, return\r\n if (!this.election.BooleanElection || !this.election.TotalVotes) {\r\n return;\r\n }\r\n\r\n // Create a dictionary to store the combined votes using the choice ranks and candidates\r\n const getChoices: any = this.election.Results?.ChoiceRanks;\r\n const combinedVotes: any = {};\r\n\r\n // Combine the elements based on matching IDs\r\n this.candidates.forEach(candidate => {\r\n const matchingChoice = getChoices.find(choice => choice.ChoiceID.Id === candidate.Id);\r\n\r\n if (matchingChoice) {\r\n const color = this.getColorForCandidate(candidate.Name);\r\n combinedVotes[candidate.Id] = {\r\n candidate: candidate,\r\n choice: matchingChoice,\r\n color: color\r\n };\r\n }\r\n });\r\n\r\n // Calculate our chart datasets for passing to Highcharts\r\n const percentData: any = [];\r\n const voteData: any = [];\r\n\r\n // Iterate through our combined votes and populate our various chart datasets\r\n for (let choiceId in combinedVotes)\r\n {\r\n const voteInfo = combinedVotes[choiceId];\r\n const candidateName = voteInfo.candidate.Name;\r\n const color = voteInfo.color;\r\n\r\n const choiceVotes = voteInfo.choice.VotesPerRound[0];\r\n const userVotes = choiceVotes.UserVotes;\r\n const twitchVotes = choiceVotes.TwitchVotes;\r\n const totalVotes = choiceVotes.Total;\r\n const percent = Math.round((totalVotes / this.election.TotalVotes!) * 100);\r\n\r\n percentData.push({\r\n name: `${candidateName}: ${percent}%`,\r\n y: percent,\r\n color: color\r\n });\r\n\r\n voteData.push({\r\n name: `User Votes`,\r\n y: userVotes,\r\n color: this.darkenHexColor(color, 40)\r\n });\r\n\r\n voteData.push({\r\n name: `Twitch Votes`,\r\n y: twitchVotes,\r\n color: this.darkenHexColor(color, 40)\r\n });\r\n }\r\n\r\n // Render the pie chart with the computed data sets\r\n setTimeout(() => {\r\n // @ts-ignore\r\n Highcharts.chart('votingResultsChart', {\r\n chart: {\r\n type: 'pie',\r\n style: { fontFamily: 'Abel' },\r\n spacingBottom: 0,\r\n spacingTop: 0,\r\n spacingLeft: 0,\r\n spacingRight: 0,\r\n marginBottom: 0,\r\n marginTop: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n width: 500,\r\n height: 500,\r\n backgroundColor: 'transparent',\r\n },\r\n title: '',\r\n credits: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n pie: {\r\n shadow: false,\r\n center: ['50%', '50%']\r\n }\r\n },\r\n series: [{\r\n name: 'Choice',\r\n data: voteData,\r\n size: '40%',\r\n dataLabels: {\r\n color: '#ffffff',\r\n distance: -50,\r\n style: {\r\n fontSize: 14\r\n }\r\n },\r\n tooltip: {\r\n valueSuffix: 'Votes'\r\n },\r\n }, {\r\n name: 'Votes',\r\n data: percentData,\r\n size: '50%',\r\n innerSize: '75%',\r\n id: 'Votes',\r\n tooltip: {\r\n valueSuffix: '%'\r\n },\r\n }],\r\n responsive: {\r\n rules: [{\r\n condition: {\r\n maxWidth: 400\r\n },\r\n chartOptions: {\r\n series: [{}, {\r\n id: 'Votes',\r\n dataLabels: {\r\n enabled: false\r\n }\r\n }]\r\n }\r\n }]\r\n }\r\n });\r\n }, 500);\r\n },\r\n async fetch() {\r\n if (!this.id) return;\r\n\r\n try\r\n {\r\n this.election = (await axios.get(`/elections/${this.id}`)).data;\r\n\r\n let { data }: { data: Array } = await axios.get(`/elections/votes?Id=${this.id}`);\r\n this.userVotesData = data;\r\n this.userVotes = [];\r\n\r\n // Identify our ranked votes\r\n data.forEach((votes, i) => {\r\n if (votes.Voter == this.store.username)\r\n this.userVotes = votes.RankedVotes ?? [];\r\n });\r\n\r\n const choices: Record = {};\r\n this.candidates = [];\r\n\r\n const choiceRanks: Record = {};\r\n this.election.Results!.ChoiceRanks!.forEach((choice, i) => {\r\n choiceRanks[choice.ChoiceID!.Id!] = choice;\r\n });\r\n\r\n this.election.Choices!.forEach((choice, i) => {\r\n\r\n var voteCount = choiceRanks[choice.Id!].FirstRoundVotes!;\r\n var speech = decode(choice.Speech!);\r\n\r\n var newChoice = { Id: choice.Id!, Name: choice.Name!, Votes: voteCount, Speech: speech };\r\n choices[choice.Id!] = newChoice;\r\n\r\n if (this.election.BooleanElection || !this.userVotes.includes(choice.Id!)) {\r\n this.candidates.push(newChoice);\r\n }\r\n });\r\n\r\n this.rankedCandidates = this.userVotes.map(id => choices[id]);\r\n this.drawPieChartIfRequired();\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n this.$router.replace(\"/elections\");\r\n }\r\n },\r\n async vote(choiceId: number) {\r\n\r\n if (!this.store.username)\r\n return;\r\n\r\n let votes: Array = this.election.BooleanElection ? [choiceId] : this.rankedCandidates.map(candidate => candidate.Id);\r\n\r\n const vote: RunoffVoteV1 = {\r\n Voter: this.store.username,\r\n ElectionID: parseInt(this.id),\r\n RankedVotes: votes,\r\n };\r\n\r\n try {\r\n await axios.post('/elections/vote', vote);\r\n\r\n this.$swal('Success', 'Your vote has been counted', 'success');\r\n this.fetch();\r\n } catch (e) {\r\n if (e instanceof AxiosError) {\r\n if (e.response?.status == 401) {\r\n // ideally this shouldn't happen\r\n this.$swal('Oops..', \"You must be logged in to do that\", 'error');\r\n } else {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n }\r\n } else {\r\n this.$swal('Oops..', 'Unknown error trying to vote', 'error');\r\n }\r\n }\r\n },\r\n async comment() {\r\n if (!this.store.username) {\r\n return this.$swal('Forbidden', 'To add comment you need to access from the game server', 'error');\r\n }\r\n\r\n if (!this.commentText.trim()) return;\r\n\r\n try {\r\n await axios.post(`/elections/addcomment?electionId=${this.id}`, {\r\n Username: this.username,\r\n Text: this.commentText\r\n });\r\n\r\n this.commentText = '';\r\n this.fetch();\r\n } catch (e) {\r\n if (e instanceof AxiosError) {\r\n if (e.response?.status == 401) {\r\n // ideally this shouldn't happen\r\n this.$swal('Oops..', \"You must be logged in to do that\", 'error');\r\n } else {\r\n this.$swal('Oops..', e.response?.data?.Message ?? e.toJSON(), 'error');\r\n }\r\n }\r\n }\r\n },\r\n sec2worldTime\r\n }\r\n});\r\n\r\n","import { render } from \"./Election.vue?vue&type=template&id=8468a734&scoped=true&ts=true\"\nimport script from \"./Election.vue?vue&type=script&lang=ts\"\nexport * from \"./Election.vue?vue&type=script&lang=ts\"\n\nimport \"./Election.vue?vue&type=style&index=0&id=8468a734&scoped=true&lang=scss\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8468a734\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"canvas\", { id: \"c\" }, null, -1)\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"h4\", {\n id: \"status\",\n class: \"error\"\n}, null, -1)\nconst _hoisted_3 = { class: \"container-fluid page-dashboard\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = { class: \"elections-wrapper col-lg-12\" }\nconst _hoisted_6 = {\n id: \"elections-page-instructions-wrapper\",\n class: \"section-wrapper\"\n}\nconst _hoisted_7 = { id: \"section-title\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = {\n key: 0,\n id: \"section-title\"\n}\nconst _hoisted_11 = {\n id: \"menu-running-elections\",\n class: \"running-elections-wrapper collapse in\",\n \"aria-expanded\": \"true\"\n}\nconst _hoisted_12 = {\n key: 0,\n class: \"fa fa-exclamation-circle\",\n style: {\"color\":\"red\"},\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"right\",\n title: \"You have not voted on this issue.\"\n}\nconst _hoisted_13 = {\n key: 1,\n id: \"section-title\"\n}\nconst _hoisted_14 = {\n id: \"menu-previous-elections\",\n class: \"previous-elections-wrapper collapse in\",\n \"aria-expanded\": \"true\"\n}\nconst _hoisted_15 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TMPLabel = _resolveComponent(\"TMPLabel\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Eco Elections\")), 1)\n ]),\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Select an election from the menu\")), 1)\n ]),\n _hoisted_8,\n (_ctx.store.electionsLoaded && (_ctx.store.elections.past.length || _ctx.store.elections.running.length))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n (_ctx.store.elections.running.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Running Elections\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"ul\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.elections.running, (election) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `election${election.Id}`\n }, [\n _createVNode(_component_router_link, {\n to: `/election/${election.Id}`,\n class: \"running-election\",\n \"data-guid\": election.Id\n }, {\n default: _withCtx(() => [\n _createVNode(_component_TMPLabel, {\n text: election.Name\n }, null, 8, [\"text\"]),\n (election.PendingVote)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"to\", \"data-guid\"])\n ]))\n }), 128))\n ]),\n (_ctx.store.elections.past.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Previous Elections\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"ul\", _hoisted_14, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.elections.past, (election) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `election${election.Id}`\n }, [\n _createVNode(_component_router_link, {\n to: `/election/${election.Id}`,\n class: \"previous-election\",\n \"data-guid\": election.Id\n }, {\n default: _withCtx(() => [\n _createVNode(_component_TMPLabel, {\n text: election.Name\n }, null, 8, [\"text\"])\n ]),\n _: 2\n }, 1032, [\"to\", \"data-guid\"])\n ]))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(\"There have been no elections yet\")), 1)\n ]))\n ])\n ])\n ])\n ]))\n}","\r\n import { defineComponent } from \"vue\";\r\n import TMPLabel from \"../components/TMPLabel.vue\";\r\n import { useMainStore } from \"../stores\";\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n components: {\r\n TMPLabel\r\n },\r\n mounted() {\r\n this.store.fetchElections();\r\n },\r\n });\r\n","import { render } from \"./Elections.vue?vue&type=template&id=0a5d627a&ts=true\"\nimport script from \"./Elections.vue?vue&type=script&lang=ts\"\nexport * from \"./Elections.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"container-fluid\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"elections-wrapper col-lg-12\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"election-name-wrapper\",\n class: \"election-name\",\n style: {}\n}, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"election-name\" }, [\n /*#__PURE__*/_createElementVNode(\"h2\", null, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"name-box\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"election-name-title\" }, \"Elected Officials\")\n ])\n ])\n ])\n], -1)\nconst _hoisted_5 = {\n id: \"elections-page-instructions-wrapper\",\n class: \"section-wrapper\"\n}\nconst _hoisted_6 = { class: \"section-wrapper-2\" }\nconst _hoisted_7 = { class: \"elected-titles\" }\nconst _hoisted_8 = {\n id: \"#elected-officials-table\",\n class: \"flat-table table\",\n style: {\"text-align\":\"center\",\"min-width\":\"500px\"}\n}\nconst _hoisted_9 = { class: \"title-heading\" }\nconst _hoisted_10 = {\n class: \"th\",\n colspan: \"3\"\n}\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { id: \"elected-titles-list\" }\nconst _hoisted_13 = { class: \"table-top\" }\nconst _hoisted_14 = { class: \"table-top-left\" }\nconst _hoisted_15 = { class: \"localize\" }\nconst _hoisted_16 = { class: \"table-top-left\" }\nconst _hoisted_17 = { class: \"localize\" }\nconst _hoisted_18 = [\"title\"]\nconst _hoisted_19 = [\"title-id\", \"onClick\"]\nconst _hoisted_20 = { class: \"table-left\" }\nconst _hoisted_21 = {\n id: \"titlesModal\",\n class: \"modal fade in\",\n role: \"dialog\"\n}\nconst _hoisted_22 = { class: \"modal-dialog modal-xl modal-dialog-centered\" }\nconst _hoisted_23 = { class: \"fancy-election-title\" }\nconst _hoisted_24 = { id: \"election-title-modal-table-placeholder\" }\nconst _hoisted_25 = {\n key: 0,\n class: \"flat-table table\",\n style: {\"width\":\"100%\"}\n}\nconst _hoisted_26 = { class: \"title-heading\" }\nconst _hoisted_27 = {\n colspan: \"3\",\n class: \"th\"\n}\nconst _hoisted_28 = [\"title\"]\nconst _hoisted_29 = { class: \"table-left election-rule-description\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"table\", _hoisted_8, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_9, [\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"Elected Officials\")), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", _hoisted_12, [\n _createElementVNode(\"tr\", _hoisted_13, [\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(\"Title\")), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(\"Title Holders\")), 1)\n ])\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.titles, (title) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-middle\",\n key: `title${title.Id}`\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: title.Name\n }, [\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"title-name\",\n \"title-id\": title.Id,\n onClick: ($event: any) => (_ctx.table = title),\n \"data-toggle\": \"modal\",\n \"data-target\": \"#titlesModal\"\n }, _toDisplayString(title.Name), 9, _hoisted_19)\n ], 8, _hoisted_18),\n _createElementVNode(\"td\", _hoisted_20, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(title.OccupantNames, (occupant) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `occupant${occupant}`\n }, [\n _createElementVNode(\"em\", null, _toDisplayString(occupant), 1)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ])\n ])\n ])\n ])\n ])\n ])\n ])\n ]),\n (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"div\", _hoisted_24, [\n (_ctx.table.Id)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_25, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_26, [\n _createElementVNode(\"td\", _hoisted_27, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.table.Name), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.table.Table.slice(1), (rows) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `row${rows}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: rows[1]\n }, _toDisplayString(rows[0]), 9, _hoisted_28),\n _createElementVNode(\"td\", _hoisted_29, _toDisplayString(rows[2]), 1)\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ])\n ]))\n ], 64))\n}","\r\n import { defineComponent } from 'vue';\r\n import { useMainStore } from '../stores';\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n data() {\r\n return {\r\n table: {}\r\n }\r\n },\r\n computed: {\r\n titles() {\r\n return this.store.elections.titles;\r\n }\r\n }\r\n });\r\n","import { render } from \"./Officials.vue?vue&type=template&id=0037547d&ts=true\"\nimport script from \"./Officials.vue?vue&type=script&lang=ts\"\nexport * from \"./Officials.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./Profiling.vue?vue&type=template&id=1845e13f\"\nimport script from \"./Profiling.vue?vue&type=script&lang=js\"\nexport * from \"./Profiling.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a7e2a58\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"plugin-page\" }\nconst _hoisted_2 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"iframe\", {\n src: `/plugins/${_ctx.plugin?.PluginIndexUrl}`\n }, null, 8, _hoisted_2)\n ]))\n}","\r\n import { defineComponent } from \"vue\";\r\n import { useMainStore } from \"../stores\";\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n return { store };\r\n },\r\n computed: {\r\n pluginTypeName(): string { /* Retrieves our plugin identifier from the route slug */\r\n return this.$route.params.plugin;\r\n },\r\n plugin(): any { /* Returns our plugin instance currently stored in session */\r\n return this.store.webPlugins.find(this.findWebPlugin);\r\n }\r\n },\r\n mounted() {\r\n this.store.fetchWebPlugins(); // Retrieve and store our web plugins on page load.\r\n },\r\n methods: {\r\n findWebPlugin(plugin) { /* Helper function to check if a plugin instance matches our plugin identifier retrieved from the route */\r\n return plugin.TypeName == this.pluginTypeName;\r\n }\r\n }\r\n });\r\n","import { render } from \"./Plugin.vue?vue&type=template&id=9a7e2a58&scoped=true&ts=true\"\nimport script from \"./Plugin.vue?vue&type=script&lang=ts\"\nexport * from \"./Plugin.vue?vue&type=script&lang=ts\"\n\nimport \"./Plugin.vue?vue&type=style&index=0&id=9a7e2a58&scoped=true&lang=css\"\n\nimport exportComponent from \"F:\\\\Dev\\\\StrangeLoopGames\\\\Eco-Staging\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a7e2a58\"]])\n\nexport default __exports__","\r\n\r\n","\r\n import { defineComponent } from 'vue';\r\n import { default as axios, AxiosError } from 'axios';\r\n \r\n export default defineComponent({\r\n components: {\r\n },\r\n methods: {\r\n async generateTestData() {\r\n try {\r\n await axios.post(`elections/generatetestdata`);\r\n this.$swal('Success', 'generated data', 'success');\r\n }\r\n catch (e) {\r\n if (e instanceof AxiosError) {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n } else {\r\n this.$swal('Oops..', (e).toJSON(), 'error');\r\n }\r\n }\r\n },\r\n async finishElection() {\r\n try {\r\n await axios.post(`elections/finishelection`);\r\n this.$swal('Success', 'generated data', 'success');\r\n }\r\n catch (e) {\r\n if (e instanceof AxiosError) {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n } else {\r\n this.$swal('Oops..', (e).toJSON(), 'error');\r\n }\r\n }\r\n }\r\n }\r\n });\r\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\r\nimport { getLocale, setI18nLanguage, loadLocaleMessages, SUPPORT_LOCALES } from '../plugins/i18n';\r\nimport { I18n } from 'vue-i18n';\r\n\r\nimport Index from \"../pages/Index.vue\";\r\nimport Comparison from \"../pages/Comparison.vue\";\r\nimport Election from \"../pages/Election.vue\";\r\nimport Elections from \"../pages/Elections.vue\";\r\nimport Officials from \"../pages/Officials.vue\";\r\nimport Profiling from \"../pages/Profiling.vue\";\r\nimport Plugin from \"../pages/Plugin.vue\";\r\nimport RenderTest from \"../pages/RenderTest.vue\";\r\nimport Debug from \"../pages/Debug.vue\";\r\n\r\nexport function setupRouter(i18n: I18n) {\r\n\r\n // setup routes\r\n const routes: Array = [\r\n { path: \"/\", component: Index },\r\n { path: \"/comparison\", component: Comparison },\r\n { path: \"/elections\", component: Elections },\r\n { path: \"/election/:id\", component: Election },\r\n { path: \"/elections\", redirect: \"/election\"}, // Legacy redirect\r\n { path: \"/officials\", component: Officials },\r\n { path: \"/profiling-results\", component: Profiling },\r\n { path: \"/plugin/:plugin\", component: Plugin },\r\n ];\r\n\r\n // create router instance\r\n const router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n });\r\n\r\n // development only routes, due to tree shaking will get compiled out in prod\r\n if (process.env.NODE_ENV === 'development') {\r\n router.addRoute({ path: \"/render-test\", component: RenderTest });\r\n router.addRoute({ path: \"/debug\", component: Debug });\r\n }\r\n\r\n // navigation guards\r\n router.beforeEach(async () => {\r\n // load locale messages\r\n var serverLocale = getLocale(i18n);\r\n var newLocale = localStorage.getItem('lang');\r\n\r\n if (newLocale && newLocale != serverLocale && SUPPORT_LOCALES.includes(newLocale)) {\r\n serverLocale = newLocale;\r\n }\r\n\r\n if (!i18n.global.availableLocales.includes(serverLocale)) {\r\n await loadLocaleMessages(i18n, serverLocale);\r\n }\r\n\r\n // set i18n language\r\n setI18nLanguage(i18n, serverLocale);\r\n });\r\n\r\n return router;\r\n};\r\n","// plugin to provide info on if WebGL is available\r\nimport { Plugin, App } from 'vue'\r\n\r\nfunction isWebGLAvailable(): boolean {\r\n try {\r\n const canvas = document.createElement('canvas');\r\n return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nconst WebGLPlugin: Plugin = {\r\n install: (app: App, options: any) => {\r\n app.config.globalProperties.WebGLIsAvailable = isWebGLAvailable();\r\n\r\n app.provide('webgl', options)\r\n }\r\n};\r\n\r\nexport default WebGLPlugin;\r\n","import { createApp, markRaw } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport App from './App.vue';\r\nimport axios from 'axios';\r\nimport { setupRouter } from './router';\r\nimport { setupI18n } from './plugins/i18n'\r\nimport VueFinalModal from \"vue-final-modal\";\r\nimport VueAxios from 'vue-axios';\r\nimport VueSweetalert2 from 'vue-sweetalert2';\r\nimport VueProgressBar from \"@aacassandra/vue3-progressbar\";\r\nimport HighchartsVue from 'highcharts-vue'\r\nimport WebGLPlugin from './plugins/WebGLPlugin';\r\n\r\nimport 'sweetalert2/dist/sweetalert2.min.css';\r\n\r\nconst i18n = setupI18n();\r\nconst router = setupRouter(i18n);\r\nconst app = createApp(App);\r\n\r\n\r\nconst pinia = createPinia();\r\npinia.use(({ store }) => {\r\n store.$router = markRaw(router);\r\n //store.$Progress = markRaw(router);\r\n store.globalProperties = app.config.globalProperties;\r\n})\r\n\r\napp.use(pinia);\r\napp.use(router);\r\napp.use(i18n);\r\napp.use(VueFinalModal);\r\napp.use(WebGLPlugin);\r\napp.use(VueAxios, axios);\r\napp.use(VueSweetalert2);\r\napp.use(VueProgressBar, {\r\n color: '#5fa044',\r\n failedColor: '#872e30'\r\n});\r\n\r\n// cast because types are wrong https://github.com/highcharts/highcharts-vue/issues/219\r\n//app.use(HighchartsVue);\r\n\r\napp.mount('#app');\r\n","var map = {\n\t\"./cs.json\": [\n\t\t9789,\n\t\t789\n\t],\n\t\"./da.json\": [\n\t\t5638,\n\t\t638\n\t],\n\t\"./de.json\": [\n\t\t9929,\n\t\t929\n\t],\n\t\"./el.json\": [\n\t\t7498,\n\t\t498\n\t],\n\t\"./en-US.json\": [\n\t\t9594\n\t],\n\t\"./es-ES.json\": [\n\t\t3840,\n\t\t840\n\t],\n\t\"./es.json\": [\n\t\t8563,\n\t\t563\n\t],\n\t\"./fr.json\": [\n\t\t844,\n\t\t844\n\t],\n\t\"./hu.json\": [\n\t\t4626,\n\t\t626\n\t],\n\t\"./is.json\": [\n\t\t2188,\n\t\t188\n\t],\n\t\"./it.json\": [\n\t\t504,\n\t\t504\n\t],\n\t\"./ja.json\": [\n\t\t8566,\n\t\t566\n\t],\n\t\"./ko.json\": [\n\t\t7697,\n\t\t697\n\t],\n\t\"./nl.json\": [\n\t\t3055,\n\t\t55\n\t],\n\t\"./no.json\": [\n\t\t438,\n\t\t438\n\t],\n\t\"./pl.json\": [\n\t\t5143,\n\t\t560\n\t],\n\t\"./pt-BR.json\": [\n\t\t6837,\n\t\t837\n\t],\n\t\"./pt-PT.json\": [\n\t\t2176,\n\t\t176\n\t],\n\t\"./ro.json\": [\n\t\t4691,\n\t\t691\n\t],\n\t\"./ru.json\": [\n\t\t9672,\n\t\t672\n\t],\n\t\"./sv-SE.json\": [\n\t\t9385,\n\t\t385\n\t],\n\t\"./uk.json\": [\n\t\t1754,\n\t\t754\n\t],\n\t\"./zh-CN.json\": [\n\t\t9890,\n\t\t890\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 7535;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"55\":\"0ffca347\",\"176\":\"c68f7b36\",\"188\":\"d7e7b4df\",\"385\":\"cdee1f5b\",\"438\":\"64b229d1\",\"498\":\"418dc808\",\"504\":\"65c58097\",\"560\":\"59602fb1\",\"563\":\"1ee2e4ba\",\"566\":\"814c52c1\",\"626\":\"ee44b62c\",\"638\":\"b40ad925\",\"672\":\"f0451a2c\",\"691\":\"c348884f\",\"697\":\"270737db\",\"754\":\"c9874166\",\"789\":\"2dff7643\",\"837\":\"24cfadbd\",\"840\":\"2693bd54\",\"844\":\"abbcc62a\",\"890\":\"626c5a1e\",\"929\":\"9d98946d\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"world-web-ui:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkworld_web_ui\"] = self[\"webpackChunkworld_web_ui\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(9339); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","id","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_vue_progress_bar","_resolveComponent","_component_Sidebar","_component_router_view","_openBlock","_createElementBlock","_Fragment","_createVNode","_createElementVNode","clearFromXSS","data","pattern","replace","Array","isArray","map","key","clearComments","elections","election","comment","Comments","Text","text","trim","matchJson","test","onlyDigits","length","JSON","parse","e","indexOf","idsToKeys","arr","item","Id","decode","string","i","charCodeAt","useMainStore","defineStore","state","username","localStorage","getItem","authtoken","authtokentype","all","running","past","titles","serverInfo","Description","Version","JoinUrl","profiling","webPlugins","electionsLoaded","actions","auth","params","URLSearchParams","location","search","get","authToken","setItem","this","$router","path","pathname","axios","config","globalProperties","$Progress","start","headers","fetchServerInfo","res","baseURL","window","serverUrl","fetchElections","runningRaw","pastRaw","titlesRaw","val","fetchProfilingResults","fetchWebPlugins","_withScopeId","n","_pushScopeId","_popScopeId","class","role","style","_hoisted_3","_hoisted_4","_hoisted_5","target","href","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_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","title","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_createTextVNode","_hoisted_47","_hoisted_48","_component_router_link","_component_TMPLabel","store","_createCommentVNode","_normalizeClass","highlight","to","default","_withCtx","_toDisplayString","$t","_","_renderList","webPlugin","TypeName","FontAwesomeIcon","MenuTitle","Name","PendingVote","onClick","args","copyToClipboard","ref","innerHTML","processedText","handleClick","defineComponent","props","type","String","required","stripTags","Boolean","computed","str","transform","openTag","content","isWrappedBy","Tag","attributes","value","methods","event","clickedElement","parentElement","classList","contains","tmpData","getAttribute","tmpDataParts","split","tmpLinkMethod","tmpLinkParams","slice","eventData","$emit","__exports__","setup","components","TMPLabel","mounted","$route","unsecuredCopyToClipboard","textArea","document","createElement","body","appendChild","focus","select","execCommand","err","removeChild","joinUrl","success","isSecureContext","navigator","clipboard","writeText","$swal","name","Sidebar","beforeCreate","response","finish","lang","error","fail","Promise","reject","SUPPORT_LOCALES","getLocale","i18n","global","locale","toString","setupI18n","options","fallbackLocale","messages","enUS","createI18n","setI18nLanguage","querySelector","setAttribute","loadLocaleMessages","setLocaleMessage","nextTick","src","_component_WorldMap","showCompare","_component_ServerInfo","max","min","step","DistrictColors","THREE","constructor","mapping","wrapS","wrapT","magFilter","minFilter","anisotropy","format","width","height","canvas","super","ctxt","getContext","webkitImageSmoothingEnabled","undefined","zoneColor","fillStyle","strokeStyle","miterLimit","lineJoin","erasing","generateMipmaps","Reset","lastData","getImageData","image","SetPixel","vec","color","createImageData","r","g","b","a","putImageData","x","y","needsUpdate","SetDistrictColorFromStyle","fillRect","lookup","revLookup","Arr","Uint8Array","code","len","placeHoldersCount","b64","Error","toByteArray","j","l","tmp","placeHolders","L","tripletToBase64","num","encodeChunk","uint8","end","output","push","join","fromByteArray","extraBytes","parts","maxChunkLength","len2","PlotMap","plotSize","SetColor","size","beginPath","moveTo","DrawLine","distanceTo","clone","dx","Math","abs","dy","sx","sy","tr","e2","SetRect","mask","SetEraseMode","AntiAntiAlias","GetArray","Base64","LoadArray","b64MaskString","ApplyDistrictColors","colorsArray","districtOffset","LoadDistrictMap","districtData","metadata","DistrictMetadata","ID","R","G","B","DistrictMap","GIFMANAGER","my","onFinish","gifStorage","gifTimes","GenChunk","xSize","zSize","worldX","worldZ","geometry","v","Float32Array","t","Uint16Array","p","z","ti","iUp","setXYZW","setXYZ","setIndex","d","round","instances","o","instanceCount","boundingSphere","OrbitControls","object","domElement","enabled","minDistance","maxDistance","Infinity","minZoom","maxZoom","minPolarAngle","maxPolarAngle","PI","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","keys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","ORBIT","ZOOM","PAN","target0","position0","position","zoom0","zoom","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","reset","scope","copy","updateProjectionMatrix","dispatchEvent","changeEvent","update","STATE","NONE","offset","quat","setFromUnitVectors","up","quatInverse","invert","lastPosition","lastQuaternion","sub","applyQuaternion","setFromVector3","rotateLeft","getAutoRotationAngle","sphericalDelta","makeSafe","radius","scale","add","panOffset","setFromSpherical","lookAt","set","zoomChanged","distanceToSquared","EPS","dot","quaternion","dispose","removeEventListener","onContextMenu","onMouseDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseMove","onMouseUp","onKeyDown","startEvent","endEvent","ROTATE","DOLLY","TOUCH_ROTATE","TOUCH_DOLLY","TOUCH_PAN","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","pow","angle","rotateUp","panLeft","distance","objectMatrix","setFromMatrixColumn","multiplyScalar","panUp","pan","deltaX","deltaY","element","targetDistance","tan","fov","clientHeight","matrix","right","left","clientWidth","top","bottom","console","warn","dollyIn","dollyScale","dollyOut","handleMouseDownRotate","clientX","clientY","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","subVectors","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","keyCode","handleTouchStartRotate","touches","pageX","pageY","handleTouchStartDolly","sqrt","handleTouchStartPan","handleTouchMoveRotate","handleTouchMoveDolly","handleTouchMovePan","preventDefault","button","addEventListener","stopPropagation","prototype","Object","create","defineProperties","center","noZoom","noRotate","noPan","noKeys","staticMoving","dynamicDampingFactor","waterAlpha","waterAlphaInDistrictsMode","rawFragmentShader","curvedVertex","vertexShader","fragmentShader","worldLayerFragment","worldLayerVertex","EcoMap","$","load","worldWidth","worldDepth","GRID","FLAT","WRAP","FMAP","drawZone","zoning","setZoning","eraseMode","drawMap","init","terrainMap","flipY","heatMap","setupLayers","texture","views","heightMap","waterLevel","finishInit","arg","onDocumentMouseMove","hmap","getElementById","renderer","antialias","alpha","setClearColor","setPixelRatio","devicePixelRatio","worldHalfWidth","worldHalfDepth","generateHeight","setupPlots","zoneString","geometry2","rotateX","initialized","addView","animate","view","forceUpdate","settings","layerSelected","frameNum","heightFrameNum","terrainFrameNum","timeStart","timeEnd","serverTime","playSpeed","currentTime","flat","pause","OnTimeUpdated","rect","getBoundingClientRect","shareCamera","sharedRenderTarget","pars","sharedFirstView","depthRenderTarget","scene","uniforms2","tint","waterColor","time","worldSize","heat","features","featureMap","drawmap","terrain","renderTex","positionLookupShader","defines","LOOKUP","uniforms","layerShader","flatShaderDefines","curveShaderDefines","transparent","blending","mainMat","DRAWING","gradient","noWater","setLayer","renderLayer","ShaderPass","renderToScreen","mesh","waterUniforms","waterMat","waterFlatShaderDefines","waterCurveShaderDefines","vertexColors","toggle3D","forEach","mat","plane","translateY","layers","ambientLight","directionalLight","camera","normalize","userData","getY","enable","composer","EffectComposer","addPass","controls","camPos","lastCamPosition","lastRenderPosition","scenes","editView","removeView","splice","removeDeadViews","context","drawImage","imgd","pix","getWorldPos","updateSize","setSize","requestAnimationFrame","mouseX","mouseY","GetFrameNum","myTimes","maxFrame","setScissorTest","clear","myRect","deltaTime","clock","getDelta","s","heightHistoryLoaded","terrainHistoryLoaded","cam","miniMapEl","setViewport","setScissor","lastWidth","lastHeight","aspect","isNaN","materialChanged","heightChanged","lastTime","prevFrameNum","prevHeightFrameNum","prevTerrainFrameNum","loading","timeText","innerText","mouseViewX","mouseViewY","pos","firstRender","read","readRenderTargetPixels","mouseHitWorld","floor","setRenderTarget","debugKeyX","overrideMaterial","lastMouseScene","OnPositionUpdated","worldPos","OnInfoUpdated","getPlotNum","plotName","plotLookup","plotNameLookup","passes","cameraText","stringify","mapdata","log","layerNames","LayerNames","layerGroups","category","find","sort","fillLayerSelects","WaterLevel","WorldTime","districtSuffix","DistrictSuffix","plots","Plots","districtColorLookup","mouseState","dragStart","zoomSetsDrawSize","drawSize","dragPos","debugKeyZ","GetZone","SetZone","b64string","LoadProposedDistricts","proposedDistrictMap","option","attr","prepend","paintDistrict","setDistrictColor","tcanvas","tctx","lineWidth","prop","layerName","viewRef","layerInfo","layerCategory","HEATMAP","districtMapName","substring","districtMap","sell","sel","group","append","screenToWorldPos","viewX","viewY","hitWorld","getWorldArea","borderSize","result","ecoMap","MapControls","mainMap","positionText","initSlider","selector","values","slider","range","slide","ui","MiniMap","updateText","secondsToString","seconds","br","date","Date","setSeconds","toISOString","substr","ceil","html","bindEvents","infoText","click","css","show","hide","fadeToggle","on","toFixed","newState","slideDown","elem","scrollTop","mapinfo","mapdrav","display","districts","district","remove","slideUp","ready","mapcontrol","each","bg","currentPage","hasClass","removeClass","addClass","rgb","mapColorPicker","setRgb","parent","newZone","parseInt","colors","hex","random","before","setHex","districtId","parentNode","trigger","inject","WebGLIsAvailable","isSingle","change","mapView","nextElementSibling","className","_withDirectives","OnlinePlayers","TotalPlayers","meteorImpact","Plants","Laws","WorldSize","_vShow","TimeSinceStart","sec2time","days","hours","middle","minutes","sec2worldTime","secondsStr","parseFloat","hoursStr","minutesStr","untilImpact","TimeLeft","_a","HasMeteor","WorldMap","ServerInfo","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_120","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_125","_hoisted_126","_hoisted_127","_hoisted_128","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_133","_hoisted_134","_hoisted_135","_hoisted_136","_hoisted_137","_hoisted_138","_hoisted_139","_hoisted_140","_hoisted_141","_hoisted_142","_hoisted_143","_hoisted_144","_hoisted_145","_hoisted_146","_hoisted_147","_hoisted_148","_component_draggable","_component_ElectionProcessModal","_component_AllVotesModal","ElectionDescription","onTmpLinkClick","handleTMPLinkClick","Finished","Results","Result","PositionForWinner","Table","row","Provisions","_b","provision","ActionOnCompleteTableHeader","ActionOnCompleteTable","ActionOnCompleteFullDescription","BooleanElection","Choices","choice","_withModifiers","$event","vote","_createBlock","modelValue","candidates","candidate","Speech","rankedCandidates","filter","onAdd","changed","onSort","TotalVotes","rounds","_c","ChoiceRanks","MarkedUpNameString","VotesPerRound","UserVotes","TwitchVotes","Total","totalAllVotes","timeEndAgo","timeStartAgo","timeToElectionEnd","totalTwitchVotes","totalUserVotes","showElectionProcessModal","ElectionProcess","showAllVotes","votes","userVotesData","Username","Timestamp","commentText","placeholder","_vModelText","showGraphComposer","showWorldMap","disabled","colspan","_component_vue_final_modal","_mergeProps","$attrs","classes","Voter","getUserVotes","inheritAttrs","choices","c","rankIndex","RankedVotes","State","draggable","VueDraggableNext","AllVotesModal","ElectionProcessModal","timeAtStart","now","userVotes","TimeEndAgo","TimeStartAgo","secondsFromStart","ranks","totalVote","watch","fetch","darkenHexColor","hexColor","amount","darkR","darkG","darkB","darkHex","getColorForCandidate","candidateName","randomColor","drawPieChartIfRequired","getChoices","combinedVotes","matchingChoice","ChoiceID","percentData","voteData","choiceId","voteInfo","choiceVotes","twitchVotes","totalVotes","percent","setTimeout","Highcharts","chart","fontFamily","spacingBottom","spacingTop","spacingLeft","spacingRight","marginBottom","marginTop","marginLeft","marginRight","backgroundColor","credits","plotOptions","pie","shadow","series","dataLabels","fontSize","tooltip","valueSuffix","innerSize","responsive","rules","condition","maxWidth","chartOptions","choiceRanks","voteCount","FirstRoundVotes","speech","newChoice","Votes","includes","ex","ElectionID","AxiosError","status","Message","_d","toJSON","table","OccupantNames","occupant","_Teleport","rows","Size","CreatedAt","getFullResultUrl","encodedName","encodeURIComponent","url","URL","searchParams","formatDate","toLocaleString","plugin","PluginIndexUrl","pluginTypeName","findWebPlugin","$refs","innerWidth","innerHeight","material","cube","rotation","generateTestData","finishElection","setupRouter","routes","component","Index","Comparison","Elections","Election","redirect","Officials","Profiling","Plugin","router","createRouter","history","createWebHistory","beforeEach","__awaiter","serverLocale","newLocale","availableLocales","isWebGLAvailable","WebGLRenderingContext","WebGLPlugin","install","app","provide","createApp","App","pinia","createPinia","use","markRaw","VueFinalModal","VueAxios","VueSweetalert2","VueProgressBar","failedColor","mount","webpackAsyncContext","req","__webpack_require__","resolve","then","ids","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","mode","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","reduce","promises","u","miniCssF","globalThis","Function","hmd","children","hasOwnProperty","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","bind","head","Symbol","toStringTag","installedChunks","installedChunkData","promise","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}