WME DOT Advisories

Overlay DOT Advisories on the WME Map Object

目前为 2020-10-12 提交的版本。查看 最新版本

// ==UserScript==
// @name         WME DOT Advisories
// @namespace    https://greasyfork.org/en/users/668704-phuz
// @require      https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js
// @version      1.03
// @description  Overlay DOT Advisories on the WME Map Object
// @author       phuz
// @include      /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant        GM_xmlhttpRequest
// @grant        GM_info
// @grant        GM_fetch
// @grant        GM_addStyle
// @require      https://cdn.jsdelivr.net/npm/hls.js@latest
// @connect      511pa.com
// @connect      deldot.gov
// @connect      511ny.org
// @connect      511nj.org
// @connect      511pabot--kbaumgart.repl.co
// @connect      rehostjson.phuz.repl.co
/* global OpenLayers */
/* global W */
/* global WazeWrap */
/* global $ */
/* global I18n */
/* global _ */
// ==/UserScript==

let PADOTLayer;
let DEDOTLayer;
let NYDOTLayer;
let NJDOTLayer;
var settings;
var newZIndex;
const DEIconC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRjU0MDFBMUJBMEYxMUU1OERGQ0YxMTRGNzU2OUVFMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRjU0MDFBMEJBMEYxMUU1OERGQ0YxMTRGNzU2OUVFMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYwRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iRjjNgAABVBJREFUeNqsVwlsVFUUPX+Z+Z1OoaWFSqFaU0hYBSSiCdYQhaRKNdFAUlRcMAFL1ABBESMouEYxwTSxRutWIkbBqKQEwxZoWKKGrcoiAqKsBStLO+1s/8/zvP+nzLTzZzpRX+a00+n999x391GEEOh5xOXTsM7+Amgq0px8ojT++wJxjgi6SsZiUIw8aEPuABTl2se6m6z560Z0rpoNJcdI/ngg8QAxlRhFFBNSIEC0ED8R3xIbiEhCWRjqwBHIW9zMi3gyE9M0+xW3UEovJBZAkIyKhEUvJRxVQNkCxaMNp+JH+fcBYhmxzlGldLtpL8TXDBjEHw3EFEQdT6qDxkAfUgG1ZDQUf6ETltN7YZ7YCfH3GZqpj6MB31F0BbGYOmLOLbInlq7cZLs1FIR243gYdy+FPoqe1rxAOADr1D5o46udvAj8heiPDQhvfovvWwGv7znbG8AcN+Wu2aNoHmnix12knomPwz+/CfqY+x1SntC65xF4ZZJNZj+TNwDeyc/CP2871ME3Mcq2h2YT87Imti4enUXv3GuT3vogfDM/5Q3yEgLBK4juXwtB82zipMpQS0bBX7Meav9yJpadY6/TrGE93Z3iatHW0iey+6OXZT6oxUOQU/1earlZURiVLzo3ZalAmHyTyFil3w3ImfE+OuuqZD35IWJLyTuzuxJam4xwU231lRqIK3MhIjvqxH85HR/cZ+tpW5gXsM4fHpTMk3Jj61hTpSwVtV8x9LHTUuPA7A6ufdpJIJWPR8PQym6BMXVZiqh3wiMwmxshOgJ+83hThXfgiDXurjYjitVyZKx8q8ly6VOcGv/fdyGy/RMnO2TYLL6Ob4O34kkofUu6yWplE1hy+Yi1X4V1cvftqKhZ45pcInTVJzovDXDidL1rjUWPbISSmwu1oAhqPlFYxBDS5mNNqdXh70/ZQrvZiFB7QYbkkhIxJV5TrsRG5RIYUxZ170Yxwfbqd6lL1UHc82mJFU9uWPH6A7YJ7RdSFUU6IIJXaZOW3DIdk9s7oRQMduLe9Rll6UVHty//YvobG3mWet3w/VbLyeGxlkN2d4KRqN/w98sR3vIub5fbs8AgwiHkPrEa+rjpCUecP8gkvGQ7Ryu9eU/GBqKPvKfRfqj1T5hHt8QVHOLE2oTogW/IEeWrsweCLOUIWP8wf9vG/n3KyQfZZEyORZ8vpA+dtCMz8eiqzWqfvq2yG0W2vuPcdP0SdLxdSWNO0HS6OWalgNMJ5uGNCLx5Fw38mo3gDKJ7v4KiK1AKy7aoJSP/yNi51KLyVs/46vrIzvoXzGO7EN70BnKmrYT3zvnJiZJporEiShH8fBZj3OYsE5pe2/NZ1+mklU+sFTvq5yiGURRuXGqXhLeiBtmeYMPDvD3DlOOTiwB9L7aix6ajpllX5Ebxmm2lpiP05VyEeAPb1RmOxfh2rLiNg+MLh5S0xCKpMct5bFtXRzwEVZsAbw4T5zNEDzZyHldBHzYZ6oChHPq5EJ2XETvXDPPQBibWdrJHu0jlWUnscWPItAjImSb9u1NWoVQmQm2I/LDKhqLzUZWJZkWYucIJoYcrmHaN9DCxPJ3y3rJlH/FMQlrnGPTZkCFwTDdY1z65cSQnX8D2FtDxb4kR30Tq3BfCrkmRcqSnmjMpVbNM1AXE1ixlXyJW9yaULbGM94zebsHzIfFqNgpVZH84+bmHAT+n+f/auIvxfxPLw8UZVS7kco9+DCkzK/1xLyc52S3YpZKGXH6NWU+MI+qJp+RMcO8qMae2syGWLVIbPIIj0Uhn8FlCLmTT498Y0t/UjLLZlKd8jflHgAEAjYU+RhKpTDQAAAAASUVORK5CYII=';
const DEIconG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQjM2ODM4MUJBMEExMUU1QjM0Mjk2QUY0RTg4QkVGNCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQjM2ODM4MEJBMEExMUU1QjM0Mjk2QUY0RTg4QkVGNCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVFRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0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';
const DEIconI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNDRENzZEMUJBMEQxMUU1QkVBRkJEQjY3RjA5MkVFRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNDRENzZEMEJBMEQxMUU1QkVBRkJEQjY3RjA5MkVFRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYwRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0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';
const DEIconR = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTdDRTI5RjhFOENFNTExQkIwQkQ3QjFGMjA1NkNGMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzMwRkNCMUJBMDcxMUU1OTE5RjkwMEI5NThDNEVCMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzMwRkNCMEJBMDcxMUU1OTE5RjkwMEI5NThDNEVCMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI4Q0M2MTJGNEVCOUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA1N0NFMjlGOEU4Q0U1MTFCQjBCRDdCMUYyMDU2Q0YyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YotOJgAABWdJREFUeNqcVwlsFFUY/nY7e7S0tPbQSkstUUu01NBWSzQKIjQaUbAxapAEj5g0KtEYRdEIeETjFYRglEDEIBgleIBnrGgjQY5C01SKFmrTi5ZSethjt7vt7o7fmzfb3ens0fqSL7Mz7/3/995/vX8tqqpCG2oA+LcRCPgAC+KNDCJZ/z0MW0o/rLbYEhYrkJgtn+J1gnh8CNhXBLguAFaTmINYSiwjridyiCR9zgXF2QmLcoK/vyd+I8YM0oLCMRO4pwZwZmqfFMOsfxTweScTP0QLrOV0Ifx8ExAWSdBn/UiD6s3hexnxJL/8SbxDfGYgVr3SqvoIIxbarPIhTX0psZ1YAZ+cQnYJMOs2IItPJZFu4S58LqCHJ+n8FehtFLLXcQN7uLqCqCT6pHpSWSyRiA0jj/iBO52nkeYtAkpepoGXTOwK395CUg/N9wdw9WpugtZt+w6ofR3orgfsuJerrtTd0zWZwBqBNIXYr5EKy9z4GnB3NUmXhkhPchOth4FzJ4Fjz+ma7MAcclUcAeY/zpjRvs4nvg6Lh5jEbxPFmi8XbuFJ18MQ5kNNQP37MtycRMM2oL8+NJ9Ajps/ZAg+GyRfQLwRj7iYHJWaQNFjQOFT5m0dfx5wu4HyvTzdMRltR58xr1vwHi1QDs1VwBqiMAqxRTh/DfVYMZNxVfaWWVlnFdC0X/gPSJ8HZJby5PRMC13R8qV5/U2budYholqh7ifCLRci9vYnM5fv0ExcwGBxZBiViOAJ+lOkxxjzfnxYFhyhpWadjPDwkXYtcMWd8tR+7zL43E4z8cDpAnjcsyAKUP4K8+7/+gg4f0rmgQg6Ty/JB6nULb9dbAZObTLLzamQB/W68zDcfJWZ2N2Vq+0skRUmtcAoPNot00QJKwieHoIp6tMrn9hw3bvASKtRNp3V0GYRoWDByLkcM7Ewg9BhI7Et2Shcu4EVuS9UrVT9xN5+efqgplGavuZFo6w9jRu2Sxm/22EmtqeOaCYRvgz4QoK9LMGnd8qAUsPKTgcD7ewu42bEqc9+QZdUG2MjePHY00bMxDNy26lQhYencHeHBEVA+f1m3xU9DZRuCEZtGJGQWctv+uZH2hmElFcsPiTPbjcTp81thsPRDg8FLhyW3/5hnW87FLmw9taxNLJcBgLGa1Ss7aoFGnfoKVgto1qxNSE5v9VM7MgYReo1P2m7b9rNxcJfL0il6iSIb0c3AlWP0hrj5nmhtfZVEbDM733yPb3oG8aOz0ycwNumdP02+iyAjt9Ziw/IPLQ5IyORSIoypxAZxfLUvU2CxY3SV3ZogRvxdkq6vJ7EuxBQH8Hxl4C7fuEKLg54p9KVhNVDEg+dAX5cLoMvgE1IcBjyzEgsAkLFOn4tx2BHLqru56XGpiIlH9MaffT/wVVMtyHBUEfiN0N5F/126iH5aqaGDxfZTHzFy6X586kRBujvhq28VBcy7zsFaT91rRIZPnlptEagmgKVJP8YrvPAzw/yPuZVN/dhdiC3ss2bLe9frfWhzuEW5jXdcuYTZkS91KrAQx0P8NffkQiUGPvfScEU2mSzZpdOcfETTvpvBiuf4xIZwqKCuXg6r35ZyGZzjFMr+TwYTbkSx3hb9PZu68RK0e4MNIfSKohQdyvMKkgPxIy/KXjuA63TDPYTwQ5T0Z9WQ4MyQCyPRzpVYjE+1bvGwRhrOojbo5pX/X/E0LpONjxEm2nGjwbmwBLihFYeI0H1x/CxGpdc/FtYTIg+p0S/FA6hbON9yCzuiSol9GbdECu41Ml5Hmm06H9n9opbmaddiZzFLmQvmlaNCf13kn0Xb5wjUy2PNm2nKg15GYuMM2taxP8JMAC5wMrd7FP1/wAAAABJRU5ErkJggg==';
const DEIconRC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTNCMzIyMUJBMEUxMUU1ODg0MENCNzgwNzdEMkEzMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTNCMzIyMEJBMEUxMUU1ODg0MENCNzgwNzdEMkEzMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYwRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZlAWAAABgZJREFUeNqkV31MU1cUP319/YBSWsC2UG1xaNBGA4YIMQ7FwIyJU3FugMYl6jBmWTD4FbPEODUuqDFm0ZiZqDOZHzHOoBjN/AOQP5hfk1bqAHG16IxCB7W2tFD6eXfuo5BS21Kyk/zy3rv3vvs799zfOe8+HiEEIs3z5g24OjqABzFNhpgRuv6L6EW4Yw3mJyeDbOlSAIYZb2OjDbQ1NEBnbS3w8Z6S80ebMxFfoJsrEfPwXolXEfa7EBbEn9h2E/E7tnuDeEOXRK+p2dmw0GQCXhgxL9qKB1tbwXL5MrDoqffdO4H11q3dQa93J06ipK+KZswAkUYDTFISBBwOGHn9Gjzv33PvYn+7ID39oKKy8hZfKgWfzQZDej3kP3jAjY+74tQlSzi4Hj9Wm2prf/V5vZ8J0YnpW7dCxqpVwFLCwUEgIyPApKQAgwQjFgv0X7oEAzdvLvDabA0Bp/N4WlHR9+lVVcGuykogfv9EErriaBju6lLel8s7GnGIsayMuPR6Yrt4kbwoKSHtMhnRY3sbQs8wxKhSkZ6KCjLY2Ehsd++SR1otacK++wBn3c+fQ+eaNeCnjobNH5U0MDzMM+Tn36ak3Zs2Ec/Ll8S0YgV5EiIzCIXEIBaPQiQiBoGAa6d4u2sXcZtMpC0vjzTj89/V1bVda9eC3+mcnPifAwe+oaTPSkuJx2wmHXPmcKTjZLGATtBxr6qqyHB3N3mgVJIWFJ9ep5sT9HgmcHwkLm9fn/RJbm4HtmsLHj6E3t27wd7YCHyxGBK1AO695vBhYGbPhr82bABpdvaVQpPpaxAIxscwkS8NXLu20u1yadXbtoEHc3mqpFzeIkFvXR2kzJ0LaQsWgLu3d+2wyaQOH/MRsb2paQXN22nl5WA9c4bLY6pIQkOVKAIBCLjdYK+vB9WWLeD1+SSOe/eKw3kmpBO+xBsyGvOTVSrgC4Uw9PQpMOg9q1AAXy5PeMWUGAUJqHLIPHKEK0CO1tZPs2pqfotK7Hc4knz9/YqUhQshgIkfcLm46qOuqQHlnj0JE/sHBuB5Xh54Xr0CRiQCFiuW326Xx1wxUKEFgzwGiwVV4fh+SCTACxPGZMamp+NG87mw0zkZlqVXYUxiLOYerEQu/4cPo2Q83GGEu7MTnC0to44lomq7nSPlY1Xjnn0+YNPS+mMSY+kLSPLynroMhrn8tDTOc1oarRcugPXs2cRljc7SNJUUFoIft8uH99LCwra4qs4oL7+N6QReLPrSkhIIorc8DBUP92oqoLGRrV5NRUXFNSIrLW2djLiR5fOtlvPnQYGiGt/7UNgTAUFnRVlZIF2+HCwYreSsrCbJ/Pmv4xKLZ82yZq5ff67vxg0I4LNq+3bwhwltUgsGIYjppDl5EgYwj4f6+ujn8BTnVDxiapp9+06xLPu+u7oaFDt2QMa6dVwZhEAgfv56vRBAaI8dA960adBz6BCkaDQt+P1uplGYlDhZp7Noamp+dGIedlZUgProUZi+fz+XItQB+h0G+n1FR2hVC+IzbRdkZsLsq1dBVFQEHegs9vk/qavbK1CpgiTCaSaW99qDB3+WzZz5xG4wQPuyZcDOmwe5zc2g3rsXJDgxq1QCXyYDoVoNqWVloD1xAmbduQODPT3wDPfWhymVJBb/JF+8uI2LVqTwox196D5Rs9bXF3Rt3PgHhimJjpIvWgQK/NpI0Ak+KndMeDRlHI8ecSeQYVqt6PFIperKPX26KKW4eOjF5s2gu34d6FEoLrEVw2XG0LJYrUbM5mpMqfMQOriRUJjY1FRgsJ7joQH8iLH2kIRcSFIszskxUqfo16qgvZ1Ls7hnLlq5hsxmrhMn+gUvBYjvwveFHmUgRBRlv77FM5fRaTRyzkpzciAhVVMRhXlPbSeiecIeTewPtx8QV8YmZ0KVLNKYBLPTi1iPME4yjtbVw4lMyEzhYGFFrEI8i9F/nYY40cmmQkztLeLzKOQNiE0h7f0PYkwnEpolCt6GfmPaQ8/nEJUId8x3IqpWTFWzGRkg0enG/pmi2TvEl4ivEMfjrZSqOgl/dyIF9p8AAwD8yyhDgVVAtgAAAABJRU5ErkJggg==';
const DEIconSE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBOEY3MUUzMUJBMEMxMUU1ODI0NkUyMTExMTE2NEU0MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBOEY3MUUzMEJBMEMxMUU1ODI0NkUyMTExMTE2NEU0MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVFRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0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';
const DEIconST = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRkMzMjkxMUJBMEQxMUU1QUQwMjgwMjRFQjcyQjA3MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRkMzMjkxMEJBMEQxMUU1QUQwMjgwMjRFQjcyQjA3MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYwRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0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';
const DEIconW = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2NTZCOTQ4MEMxM0FFNDExOTJCNzgxMEFBMkM5Q0QzRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2NTYwNUY3MUJBMEIxMUU1OUI4M0Q5QUZEOEQ4MkFCMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NTYwNUY3MEJBMEIxMUU1OUI4M0Q5QUZEOEQ4MkFCMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVFRjVFQTIwMDlCQUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY1NkI5NDgwQzEzQUU0MTE5MkI3ODEwQUEyQzlDRDNFIi8+IDwvcmRmOkRlc2NyaXB0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';
const DEIconSchRestriction = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTdDRTI5RjhFOENFNTExQkIwQkQ3QjFGMjA1NkNGMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzMwRkNCMUJBMDcxMUU1OTE5RjkwMEI5NThDNEVCMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzMwRkNCMEJBMDcxMUU1OTE5RjkwMEI5NThDNEVCMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI4Q0M2MTJGNEVCOUU1MTE4NEU2OTRCNTE0QTVGRkIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA1N0NFMjlGOEU4Q0U1MTFCQjBCRDdCMUYyMDU2Q0YyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YotOJgAABWdJREFUeNqcVwlsFFUY/nY7e7S0tPbQSkstUUu01NBWSzQKIjQaUbAxapAEj5g0KtEYRdEIeETjFYRglEDEIBgleIBnrGgjQY5C01SKFmrTi5ZSethjt7vt7o7fmzfb3ens0fqSL7Mz7/3/995/vX8tqqpCG2oA+LcRCPgAC+KNDCJZ/z0MW0o/rLbYEhYrkJgtn+J1gnh8CNhXBLguAFaTmINYSiwjridyiCR9zgXF2QmLcoK/vyd+I8YM0oLCMRO4pwZwZmqfFMOsfxTweScTP0QLrOV0Ifx8ExAWSdBn/UiD6s3hexnxJL/8SbxDfGYgVr3SqvoIIxbarPIhTX0psZ1YAZ+cQnYJMOs2IItPJZFu4S58LqCHJ+n8FehtFLLXcQN7uLqCqCT6pHpSWSyRiA0jj/iBO52nkeYtAkpepoGXTOwK395CUg/N9wdw9WpugtZt+w6ofR3orgfsuJerrtTd0zWZwBqBNIXYr5EKy9z4GnB3NUmXhkhPchOth4FzJ4Fjz+ma7MAcclUcAeY/zpjRvs4nvg6Lh5jEbxPFmi8XbuFJ18MQ5kNNQP37MtycRMM2oL8+NJ9Ajps/ZAg+GyRfQLwRj7iYHJWaQNFjQOFT5m0dfx5wu4HyvTzdMRltR58xr1vwHi1QDs1VwBqiMAqxRTh/DfVYMZNxVfaWWVlnFdC0X/gPSJ8HZJby5PRMC13R8qV5/U2budYholqh7ifCLRci9vYnM5fv0ExcwGBxZBiViOAJ+lOkxxjzfnxYFhyhpWadjPDwkXYtcMWd8tR+7zL43E4z8cDpAnjcsyAKUP4K8+7/+gg4f0rmgQg6Ty/JB6nULb9dbAZObTLLzamQB/W68zDcfJWZ2N2Vq+0skRUmtcAoPNot00QJKwieHoIp6tMrn9hw3bvASKtRNp3V0GYRoWDByLkcM7Ewg9BhI7Et2Shcu4EVuS9UrVT9xN5+efqgplGavuZFo6w9jRu2Sxm/22EmtqeOaCYRvgz4QoK9LMGnd8qAUsPKTgcD7ewu42bEqc9+QZdUG2MjePHY00bMxDNy26lQhYencHeHBEVA+f1m3xU9DZRuCEZtGJGQWctv+uZH2hmElFcsPiTPbjcTp81thsPRDg8FLhyW3/5hnW87FLmw9taxNLJcBgLGa1Ss7aoFGnfoKVgto1qxNSE5v9VM7MgYReo1P2m7b9rNxcJfL0il6iSIb0c3AlWP0hrj5nmhtfZVEbDM733yPb3oG8aOz0ycwNumdP02+iyAjt9Ziw/IPLQ5IyORSIoypxAZxfLUvU2CxY3SV3ZogRvxdkq6vJ7EuxBQH8Hxl4C7fuEKLg54p9KVhNVDEg+dAX5cLoMvgE1IcBjyzEgsAkLFOn4tx2BHLqru56XGpiIlH9MaffT/wVVMtyHBUEfiN0N5F/126iH5aqaGDxfZTHzFy6X586kRBujvhq28VBcy7zsFaT91rRIZPnlptEagmgKVJP8YrvPAzw/yPuZVN/dhdiC3ss2bLe9frfWhzuEW5jXdcuYTZkS91KrAQx0P8NffkQiUGPvfScEU2mSzZpdOcfETTvpvBiuf4xIZwqKCuXg6r35ZyGZzjFMr+TwYTbkSx3hb9PZu68RK0e4MNIfSKohQdyvMKkgPxIy/KXjuA63TDPYTwQ5T0Z9WQ4MyQCyPRzpVYjE+1bvGwRhrOojbo5pX/X/E0LpONjxEm2nGjwbmwBLihFYeI0H1x/CxGpdc/FtYTIg+p0S/FA6hbON9yCzuiSol9GbdECu41Ml5Hmm06H9n9opbmaddiZzFLmQvmlaNCf13kn0Xb5wjUy2PNm2nKg15GYuMM2taxP8JMAC5wMrd7FP1/wAAAABJRU5ErkJggg==';
const DEIconSchClosure = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAoCAYAAADpE0oSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYxOTU5RkJGMkQ3MTFFNkI5NERERDM2Qzg4NzcwRUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYxOTU5RkNGMkQ3MTFFNkI5NERERDM2Qzg4NzcwRUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFNjE5NTlGOUYyRDcxMUU2Qjk0REREMzZDODg3NzBFRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFNjE5NTlGQUYyRDcxMUU2Qjk0REREMzZDODg3NzBFRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuSU594AAAfTSURBVHja5Fh7cJTV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';
const Incident = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk4MDFDMjUwNzIzRDExRTNBQTczRjkyOTZEQ0IyOTY0IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk4MDFDMjRGNzIzRDExRTNBQTczRjkyOTZEQ0IyOTY0IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmFiMzczNzVkLWIwYTYtNDRjNC04OTE4LWU4M2ZiOTRhOGY4NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpjMjUyYWZlMC1mMjU0LWY5NDMtOGZiZi0wMTc3Mzc1ZWEzYzYiLz4gPGRjOnRpdGxlPiA8cmRmOkFsdD4gPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5JbmNpZGVudHNfb3V0bGluZWQ8L3JkZjpsaT4gPC9yZGY6QWx0PiA8L2RjOnRpdGxlPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmcc3z4AAASdSURBVHja7FdLaFxVGP7OPfc1M5lMJ5M0Gk0nNdE+sogPLNG2KNaFUksqlkAjSGtcCBJUWgouhErAUOhCwb2uXJQupCtF0I102SrEUsFNkRaxJJ3MTGbu+/j/J2lnKp04HdNkY+AnZ875/u9853/ce65QSmEz/wxs8t//AjZdgDkytL1j5whIaRKgvuERCIH9UDjHpsedRqATJwE8Yimcn5LuVv79deztEQJPU0Nf35AILCZq7lXX3jqds8DGY5574Cmgk6OS4PCoJaamcvSjO9HGY57jtQcqwFPot1V85lhByPHptzBw7jttz9H4eK8hnSQ+4xPmfjhlz5YtbQHprChH6vRrTuXQqddfgP3+HGSuANnVDYw9ix3XL+G3X68UfgkduFJ8L9Y7AvUYL+7MipMndig4eQdKNOqXx07exomdCoxh7LqmIFRwbYHP3t1uYHevgXq9CgRNre/X9ByvMYax7LN+EVA4/XKfMTbRJ3GzYiKs+lCh31gOA4Tlul5jDGPZZ10ERAp7C7aYmX7YgvIl6p4Fv+IjCcJGfZAAvxroNcYwln3Y978KkLVEfXK0z0yPmAbKNYEglAjKAZ06bIpAhKASIvBXMIxlH/Zljo4EcBUvRsl7e7vkgYMZC/Ua554E0An98j8iEFAEyh6CwNQYxrIP+zKH6ERATanhHtP46M2sgxydurRMdeeRAM+Ed8tD4gcNAV6g53zf1BjGsg/7Mgdz3ZcAeqbTo158fiRtP/SMsPAnEYYU3sAz6L+EV/IQeY0ijFnAko+I1lYwhvZhX+ZgLuZsW0BVqalRUx6ckA7lVMH3WMCqhSSEU+A3UhBTOgIWEBp3cOzDvszBXMzZlgCiHcwL8ekbho1UYIAKHoqinfirFlIaKAJJEDfVQKTnYlq7jWMf9mUO5mJO5l5TgNKXDDW3H/bAk7GFcqD0hnGTJTGFWatqdiRRVIS8dheWjDmYizmZW60lgACHt0EemVAOkdFJknubYbtY+nn+jl+ZxobltsQzF3MyN+9xV7cNF4f0YahVBkKlLp6UmeI+Kp4qvX5afjEkCjLloO/QK/rnXxe+pU6gqBiiZUt30Vl/UiHOxsvXLCGeJ+4b4nYEeHBLqVMHLKu4zzWROAmodmC2MEP4SA32Izu6W1u62K/nWuGZizmZm/fgvUTzlWw5US8Nm3JmMuMgQzOlVj2jn3pUSl0mRmY/RveecT2X2TWMq++8Te0QQtj39uSSzdKuk5aD+Uoy80cUX8gY4geTaiRPX2ezk92WMZaTWIiTNV9jyo8gM1m4xcZt2t1WRLrgIi6XIdzW10x6gGNMSkwKyzi7EM/S3pdlKpv7YCJvHf/wURvKVrApXKm1LC1h+SU4jgV7eBddk+qof/Mloks/IpNPI+W29nU5fY7CU90GbgRq8Eo9LplpQ4w/QZeaJBVhgaIr2rnKOGlUzn8BZ/7iynXg6mUYhfRqoP/lzU7p7aUs8Z7pJTEuHisOHe1z8FUPvUljhfY+lVkl9VdSXVrp5QyxUWjR5pe2FBCLVC43fRwTj1Mb0kVypBbrLtqQb3XqYkGZhCPw+98CDACt/EZVMWT0ogAAAABJRU5ErkJggg==';
const Roadwork = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUzRjQ0OTg5NzIzOTExRTM4ODlCRkYwNDVGNDI0RjlEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUzRjQ0OTg4NzIzOTExRTM4ODlCRkYwNDVGNDI0RjlEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmFkOTA4NmJkLTAzMGEtNDA0MS04ZTdiLWJhZGYwNWRmZDMzZiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDplNDcyMTVk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';
const warning = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk4MDFDMjUwNzIzRDExRTNBQTczRjkyOTZEQ0IyOTY0IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk4MDFDMjRGNzIzRDExRTNBQTczRjkyOTZEQ0IyOTY0IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmFiMzczNzVkLWIwYTYtNDRjNC04OTE4LWU4M2ZiOTRhOGY4NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpjMjUyYWZlMC1mMjU0LWY5NDMtOGZiZi0wMTc3Mzc1ZWEzYzYiLz4gPGRjOnRpdGxlPiA8cmRmOkFsdD4gPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5JbmNpZGVudHNfb3V0bGluZWQ8L3JkZjpsaT4gPC9yZGY6QWx0PiA8L2RjOnRpdGxlPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmcc3z4AAASdSURBVHja7FdLaFxVGP7OPfc1M5lMJ5M0Gk0nNdE+sogPLNG2KNaFUksqlkAjSGtcCBJUWgouhErAUOhCwb2uXJQupCtF0I102SrEUsFNkRaxJJ3MTGbu+/j/J2lnKp04HdNkY+AnZ875/u9853/ce65QSmEz/wxs8t//AjZdgDkytL1j5whIaRKgvuERCIH9UDjHpsedRqATJwE8Yimcn5LuVv79deztEQJPU0Nf35AILCZq7lXX3jqds8DGY5574Cmgk6OS4PCoJaamcvSjO9HGY57jtQcqwFPot1V85lhByPHptzBw7jttz9H4eK8hnSQ+4xPmfjhlz5YtbQHprChH6vRrTuXQqddfgP3+HGSuANnVDYw9ix3XL+G3X68UfgkduFJ8L9Y7AvUYL+7MipMndig4eQdKNOqXx07exomdCoxh7LqmIFRwbYHP3t1uYHevgXq9CgRNre/X9ByvMYax7LN+EVA4/XKfMTbRJ3GzYiKs+lCh31gOA4Tlul5jDGPZZ10ERAp7C7aYmX7YgvIl6p4Fv+IjCcJGfZAAvxroNcYwln3Y978KkLVEfXK0z0yPmAbKNYEglAjKAZ06bIpAhKASIvBXMIxlH/Zljo4EcBUvRsl7e7vkgYMZC/Ua554E0An98j8iEFAEyh6CwNQYxrIP+zKH6ERATanhHtP46M2sgxydurRMdeeRAM+Ed8tD4gcNAV6g53zf1BjGsg/7Mgdz3ZcAeqbTo158fiRtP/SMsPAnEYYU3sAz6L+EV/IQeY0ijFnAko+I1lYwhvZhX+ZgLuZsW0BVqalRUx6ckA7lVMH3WMCqhSSEU+A3UhBTOgIWEBp3cOzDvszBXMzZlgCiHcwL8ekbho1UYIAKHoqinfirFlIaKAJJEDfVQKTnYlq7jWMf9mUO5mJO5l5TgNKXDDW3H/bAk7GFcqD0hnGTJTGFWatqdiRRVIS8dheWjDmYizmZW60lgACHt0EemVAOkdFJknubYbtY+nn+jl+ZxobltsQzF3MyN+9xV7cNF4f0YahVBkKlLp6UmeI+Kp4qvX5afjEkCjLloO/QK/rnXxe+pU6gqBiiZUt30Vl/UiHOxsvXLCGeJ+4b4nYEeHBLqVMHLKu4zzWROAmodmC2MEP4SA32Izu6W1u62K/nWuGZizmZm/fgvUTzlWw5US8Nm3JmMuMgQzOlVj2jn3pUSl0mRmY/RveecT2X2TWMq++8Te0QQtj39uSSzdKuk5aD+Uoy80cUX8gY4geTaiRPX2ezk92WMZaTWIiTNV9jyo8gM1m4xcZt2t1WRLrgIi6XIdzW10x6gGNMSkwKyzi7EM/S3pdlKpv7YCJvHf/wURvKVrApXKm1LC1h+SU4jgV7eBddk+qof/Mloks/IpNPI+W29nU5fY7CU90GbgRq8Eo9LplpQ4w/QZeaJBVhgaIr2rnKOGlUzn8BZ/7iynXg6mUYhfRqoP/lzU7p7aUs8Z7pJTEuHisOHe1z8FUPvUljhfY+lVkl9VdSXVrp5QyxUWjR5pe2FBCLVC43fRwTj1Mb0kVypBbrLtqQb3XqYkGZhCPw+98CDACt/EZVMWT0ogAAAABJRU5ErkJggg==';
const DEAdvURL = 'https://tmc.deldot.gov/json/advisory.json';
const DESchURL = 'https://deldot.gov/json/str.json';
const PAURL = 'https://rehostjson.phuz.repl.co/PA';

(function() {
    'use strict';
    //Bootstrap
    function bootstrap(tries = 1) {
        if (W && W.loginManager && W.map && W.loginManager.user && W.model
            && W.model.states && W.model.states.getObjectArray().length && WazeWrap && WazeWrap.Ready) {
            console.log("WME DOT Cameras Loaded!");
            init();
            if (!OpenLayers.Icon) {
                installIcon();
            }
            $(".overlay-button").click(function(){PADOTLayer.destroy(); DEDOTLayer.destroy(); initializeSettings()});
        } else if (tries < 1000) {
            setTimeout(function () {bootstrap(++tries);}, 200);
        }
    }
    //Build the Tab and Settings Division
    function init()
    {
        var $section = $("<div>");
        $section.html([
            '<div id="chkEnables">',
            '<table border=1 style="text-align:center;width:100%;padding:10px;">',
            '<tr><td colspan=2 style="text-align:center"><b>Enable</b></td><td style="text-align"><b>State</b></td></tr>',
            '<tr><td colspan=2 align=center><input type="checkbox" id="chkPADOTEnabled" class="WMEDOTAdvSettingsCheckbox"></td><td align=center>PA</td></tr>',
            '<tr><td colspan=2 align=center><input type="checkbox" id="chkDEDOTEnabled" class="WMEDOTAdvSettingsCheckbox"></td><td align=center>DE</td></tr>',
            //'<tr><td colspan=2 align=center><input type="checkbox" id="chkNYDOTEnabled" class="WMEDOTAdvSettingsCheckbox"></td><td align=center>NY</td></tr>',
            //'<tr><td colspan=2 align=center><input type="checkbox" id="chkNJDOTEnabled" class="WMEDOTAdvSettingsCheckbox"></td><td align=center>NJ</td></tr>',
            '</table>',
            '</div></div>'
        ].join(' '));
        new WazeWrap.Interface.Tab('DOT Advisories', $section.html(), initializeSettings);
    }
    //Build the State Layers
    function buildDOTAdvLayers(state) {
        eval(state.substring(0,2) + 'DOTLayer = new OpenLayers.Layer.Markers(' + state.substring(0,2) + 'DOTLayer)');
        eval('W.map.addLayer(' + state.substring(0,2) + 'DOTLayer)');
        eval(state.substring(0,2) + "DOTLayer.setZIndex(" + newZIndex + ")");
    }
    function getFeed(url,type,callback) {
        GM_xmlhttpRequest({
            method: "GET",
            url: url,
            onload: function(response) {
                var result = response;
                callback(result);
            }
        });
    }
    function getDEDOT() {
        getDEDOTAdv();
        getDEDOTSch();
    }
    //Get the DE Advisory JSON Feed
    function getDEDOTAdv() {
        getFeed(DEAdvURL,"json", function(result) {
            var resultObj = JSON.parse(result.responseText).advisories;
            var i=0;
            while (i<resultObj.length) {
                drawMarkers("DEAdv",resultObj[i].id,"",resultObj[i].where.lon,resultObj[i].where.lat,"DEIconC",resultObj[i].where.location,resultObj[i].timestamp,resultObj[i].published.linkbackUrl);
                i++;
            }
        })
    }
    //Get the DE Schedule JSON Feed
    function getDEDOTSch() {
        getFeed(DESchURL,"json", function(result) {
            var resultObj = JSON.parse(result.responseText);
            var i=0;
            while (i<resultObj.length) {
                drawMarkers("DESch",resultObj[i].str.strId,resultObj[i].str.title,resultObj[i].str.longitude,resultObj[i].str.latitude,"DEIconSch" + resultObj[i].str.impactType,resultObj[i].str.construction,resultObj[i].str.startDate,resultObj[i].str.releaseId);
                i++;
            }
        })
    }
    //Get the PA Event JSON Feed
    function getPADOT() {
        getFeed(PAURL,"json", function(result) {
            var resultObj = JSON.parse(result.responseText);
            var i=0;
            while (i<resultObj.length) {
                var icon;
                switch(resultObj[i].EventType) {
                    case "roadwork":
                        icon = "Roadwork";
                        break;
                    default:
                        icon = "Incident";
                }
                if ((resultObj[i].LaneStatus == "closed") || (resultObj[i].LaneStatus == "ramp closure")) {
                    drawMarkers("PA",resultObj[i].EventID,resultObj[i].Facility,resultObj[i].FromLocLatLong.split(",")[1],resultObj[i].FromLocLatLong.split(",")[0],icon,resultObj[i].Description,resultObj[i].LastUpdate,"");
                }
                i++;
            }
        })
    }
    //Generate the Camera markers
    function drawMarkers(state,id,title,x,y,icontype,desc,timestamp,link) {
        var size = new OpenLayers.Size(20,20);
        var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
        var icon = new OpenLayers.Icon(eval(icontype),size);
        var epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
        var projectTo = W.map.getProjectionObject(); //The map projection (Spherical Mercator)
        var lonLat = new OpenLayers.LonLat(x,y).transform(epsg4326,projectTo);
        var newMarker = new OpenLayers.Marker(lonLat,icon);
        newMarker.desc = desc;
        newMarker.eventId = id;
        newMarker.title = title;
        newMarker.state = state;
        newMarker.timestamp = timestamp;
        newMarker.events.register('click',newMarker,popup);
        newMarker.location = lonLat;
        if (link != "-1" && state == "DESch") {
            newMarker.link = '<a href=https://deldot.gov/About/news/index.shtml?dc=release&id=' + link + ' target="_blank">';
        } else if (link == "-1" && state == "DESch") {
            newMarker.link = `<a href='javascript:alert("Sorry!  No publication available for this closure")'>`;
        } else {
            newMarker.link = link;
        }
        eval(state.substring(0,2) + "DOTLayer.addMarker(newMarker)");
    }
    function popup(evt) {
        $("#gmPopupContainer").remove ();
        $("#gmPopupContainer").hide ();
        var popupHTML;
        W.map.moveTo(this.location);
        switch(this.state) {
            case "DEAdv":
                this.timestamp = new Date(this.timestamp);
                popupHTML = (['<div id="gmPopupContainer" style="max-width:500px;margin: 4;text-align: center">' +
                              '<table border=0><tr><td>Updated: ' + this.timestamp.toLocaleString() + '<hr></td></tr>' +
                              '<tr><td>' + this.desc + '</td></tr>' +
                              '<tr><td><a href="' + this.link + '" target="_blank">DelDot Link</a></td></tr>' +
                              '<tr><td><form><button id="gmCloseDlgBtn" type="button">Close</button></form></td></tr>' +
                              '</table>' +
                              '</div>'
                             ]);
                break;
            case "DESch":
                popupHTML = (['<div id="gmPopupContainer" style="width:500px;margin: 4;text-align: center">' +
                              '<table border=0><tr><td><h4>' + this.title.toString() + '</h4><hr></td></tr>' +
                              '<tr><td>Period: ' + this.timestamp.replace(/ 12:00 AM/g,"") + '<hr></td></tr>' +
                              '<tr><td>' + this.desc + '</td></tr>' +
                              '<tr><td>' + this.link + 'DelDot Link</a></td></tr>' +
                              '<tr><td><form><button id="gmCloseDlgBtn" type="button">Close</button></form></td></tr>' +
                              '</table>' +
                              '</div>'
                             ]);
                break;
            case "PA":
                popupHTML = (['<div id="gmPopupContainer" style="width:500px;margin: 4 auto;text-align: center">' +
                              '<table border=0><tr><td><h4>' + this.title.toString() + '</h4><hr></td></tr>' +
                              '<tr><td>Time: ' + new Date(this.timestamp).toLocaleString() + '<hr></td></tr>' +
                              '<tr><td>' + this.desc + '</td></tr>' +
                              '<tr><td><form><button id="gmCloseDlgBtn" type="button">Close</button></form></td></tr>' +
                              '</table>' +
                              '</div>'
                             ]);
        }

        $("body").append(popupHTML);
        //Position the modal based on the position of the click event
        $("#gmPopupContainer").css({left: document.getElementById("user-tabs").offsetWidth + W.map.getPixelFromLonLat(W.map.getCenter()).x - document.getElementById("gmPopupContainer").clientWidth - 10 });
        $("#gmPopupContainer").css({top: document.getElementById("left-app-head").offsetHeight + W.map.getPixelFromLonLat(W.map.getCenter()).y - (document.getElementById("gmPopupContainer").clientHeight / 2) });
        $("#gmPopupContainer").show();
        //Add listener for popup's "Close" button
        $("#gmCloseDlgBtn").click ( function () {
            $("#gmPopupContainer").remove ();
            $("#gmPopupContainer").hide ();
        });
    }
    function initializeSettings()
    {
        loadSettings();
        setChecked('chkPADOTEnabled', settings.PADOTEnabled);
        setChecked('chkDEDOTEnabled', settings.DEDOTEnabled);
        setChecked('chkNYDOTEnabled', settings.NYDOTEnabled);
        setChecked('chkNJDOTEnabled', settings.NJDOTEnabled);

        //Add Handler for Checkbox Setting Changes
        $('.WMEDOTAdvSettingsCheckbox').change(function() {
            var settingName = $(this)[0].id.substr(3);
            settings[settingName] = this.checked;
            saveSettings();
            if(this.checked) {
                buildDOTAdvLayers(settingName.substring(0,2));
                eval("get" + settingName.substring(0,2) + "DOT()");
            }
            else
            {
                //eval(settingName.substring(0,2) + "DOTLayer.destroy()");
                eval('W.map.removeLayer(' + settingName.substring(0,2) + 'DOTLayer)');
            }
        });
        if (document.getElementById('WMEFUzoom') != null) {
            newZIndex = document.getElementById('WMEFUzoom').style.zIndex - 211;
        } else {
            newZIndex = 900;
        }
        if (document.getElementById('chkDEDOTEnabled').checked) { buildDOTAdvLayers("DE"); getDEDOT();}
        if (document.getElementById('chkPADOTEnabled').checked) { buildDOTAdvLayers("PA"); getPADOT();}
    }
    //Set Checkbox from Settings
    function setChecked(checkboxId, checked) {
        $('#' + checkboxId).prop('checked', checked);
    }
    //Load Saved Settings
    function loadSettings() {
        var loadedSettings = $.parseJSON(localStorage.getItem("WMEDOT_Settings"));
        var defaultSettings = {
            Enabled: false,
        };
        settings = loadedSettings ? loadedSettings : defaultSettings;
        for (var prop in defaultSettings) {
            if (!settings.hasOwnProperty(prop)) {
                settings[prop] = defaultSettings[prop];
            }
        }
    }
    //Save Tab Settings
    function saveSettings() {
        if (localStorage) {
            var localsettings = {
                PADOTEnabled: settings.PADOTEnabled,
                DEDOTEnabled: settings.DEDOTEnabled,
                NYDOTEnabled: settings.NYDOTEnabled,
                NJDOTEnabled: settings.NJDOTEnabled,
            };
            localStorage.setItem("WMEDOT_Settings", JSON.stringify(localsettings));
        }
    }
    //Add the Icon Class to OpenLayers
    function installIcon() {
        console.log('Installing OpenLayers.Icon');
        OpenLayers.Icon = OpenLayers.Class({
            url: null,
            size: null,
            offset: null,
            calculateOffset: null,
            imageDiv: null,
            px: null,
            initialize: function(a,b,c,d){
                this.url=a;
                this.size=b||{w: 20,h: 20};
                this.offset=c||{x: -(this.size.w/2),y: -(this.size.h/2)};
                this.calculateOffset=d;
                a=OpenLayers.Util.createUniqueID("OL_Icon_");
                let div = this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a);
                $(div.firstChild).removeClass('olAlphaImg'); // LEAVE THIS LINE TO PREVENT WME-HARDHATS SCRIPT FROM TURNING ALL ICONS INTO HARDHAT WAZERS --MAPOMATIC
            },
            destroy: function(){ this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null; },
            clone: function(){ return new OpenLayers.Icon(this.url,this.size,this.offset,this.calculateOffset); },
            setSize: function(a){ null!==a&&(this.size=a); this.draw(); },
            setUrl: function(a){ null!==a&&(this.url=a); this.draw(); },
            draw: function(a){
                OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");
                this.moveTo(a);
                return this.imageDiv;
            },
            erase: function(){ null!==this.imageDiv&&null!==this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv); },
            setOpacity: function(a){ OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,null,null,null,a); },
            moveTo: function(a){
                null!==a&&(this.px=a);
                null!==this.imageDiv&&(null===this.px?this.display(!1): (
                    this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),
                    OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x: this.px.x+this.offset.x,y: this.px.y+this.offset.y})
                ));
            },
            display: function(a){ this.imageDiv.style.display=a?"": "none"; },
            isDrawn: function(){ return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType; },
            CLASS_NAME: "OpenLayers.Icon"
        });
    }
    //--- CSS styles make it work...
    GM_addStyle ("                                      \
#gmPopupContainer {                                     \
position:               absolute;                        \
background:             lightgray;                      \
border:                 3px double black;               \
border-radius:          1ex;                            \
z-index:                777;                            \
display:                block; \
}                                                       \
#gmPopupContainer button{                               \
cursor:                 pointer;                        \
margin:                 1em 1em 0;                      \
border:                 1px outset buttonface;          \
}                                                       \
");
    bootstrap();
})();