diff --git a/dist/argon.js b/dist/argon.js index 163592a..0685e67 100644 --- a/dist/argon.js +++ b/dist/argon.js @@ -2860,66 +2860,7 @@ $__System.register('8', ['c', '9', 'a', 'b'], function (exports_1, context_1) { } }; }); -$__System.register('d', ['e'], function (exports_1, context_1) { - "use strict"; - - var __moduleName = context_1 && context_1.id; - var cesium_imports_1; - var TimerService, lastTime; - function requestAnimationFramePoly(callback) { - var currTime = Date.now(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = setTimeout(function () { - callback(currTime + timeToCall); - }, timeToCall); - lastTime = currTime + timeToCall; - return id; - } - return { - setters: [function (cesium_imports_1_1) { - cesium_imports_1 = cesium_imports_1_1; - }], - execute: function () { - /** - * Provides timer service - */ - TimerService = function () { - function TimerService() { - this.frameNumbers = new WeakMap(); - } - /** - * Request that the callback function be called for the next frame. - * - * @param callback function - */ - TimerService.prototype.requestFrame = function (callback) { - var _this = this; - if (typeof requestAnimationFrame !== 'undefined' && typeof performance !== 'undefined') { - this.navigationStartDate = this.navigationStartDate || cesium_imports_1.JulianDate.fromDate(new Date(performance.timing.navigationStart)); - requestAnimationFrame(function (time) { - var frameTime = cesium_imports_1.JulianDate.addSeconds(_this.navigationStartDate, time / 1000, new cesium_imports_1.JulianDate(0, 0)); - callback(frameTime, _this.getNextFrameNumber(callback)); - }); - } else { - requestAnimationFramePoly(function (time) { - var frameTime = cesium_imports_1.JulianDate.fromDate(new Date(time)); - callback(frameTime, _this.getNextFrameNumber(callback)); - }); - } - }; - TimerService.prototype.getNextFrameNumber = function (callback) { - var frameNumber = this.frameNumbers.get(callback) || 0; - this.frameNumbers.set(callback, frameNumber + 1); - return frameNumber; - }; - return TimerService; - }(); - exports_1("TimerService", TimerService); - lastTime = 0; - } - }; -}); -$__System.register('f', ['c', '10', 'a', '11', 'd', '12', 'b'], function (exports_1, context_1) { +$__System.register('d', ['c', 'e', 'a', 'f', '10', '11', 'b'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -3014,6 +2955,65 @@ $__System.register('f', ['c', '10', 'a', '11', 'd', '12', 'b'], function (export } }; }); +$__System.register('10', ['12'], function (exports_1, context_1) { + "use strict"; + + var __moduleName = context_1 && context_1.id; + var cesium_imports_1; + var TimerService, lastTime; + function requestAnimationFramePoly(callback) { + var currTime = Date.now(); + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); + var id = setTimeout(function () { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + } + return { + setters: [function (cesium_imports_1_1) { + cesium_imports_1 = cesium_imports_1_1; + }], + execute: function () { + /** + * Provides timer service + */ + TimerService = function () { + function TimerService() { + this.frameNumbers = new WeakMap(); + } + /** + * Request that the callback function be called for the next frame. + * + * @param callback function + */ + TimerService.prototype.requestFrame = function (callback) { + var _this = this; + if (typeof requestAnimationFrame !== 'undefined' && typeof performance !== 'undefined') { + this.navigationStartDate = this.navigationStartDate || cesium_imports_1.JulianDate.fromDate(new Date(performance.timing.navigationStart)); + requestAnimationFrame(function (time) { + var frameTime = cesium_imports_1.JulianDate.addSeconds(_this.navigationStartDate, time / 1000, new cesium_imports_1.JulianDate(0, 0)); + callback(frameTime, _this.getNextFrameNumber(callback)); + }); + } else { + requestAnimationFramePoly(function (time) { + var frameTime = cesium_imports_1.JulianDate.fromDate(new Date(time)); + callback(frameTime, _this.getNextFrameNumber(callback)); + }); + } + }; + TimerService.prototype.getNextFrameNumber = function (callback) { + var frameNumber = this.frameNumbers.get(callback) || 0; + this.frameNumbers.set(callback, frameNumber + 1); + return frameNumber; + }; + return TimerService; + }(); + exports_1("TimerService", TimerService); + lastTime = 0; + } + }; +}); $__System.register('13', ['c', '14', 'a', 'b'], function (exports_1, context_1) { "use strict"; @@ -3536,7 +3536,7 @@ $__System.register('13', ['c', '14', 'a', 'b'], function (exports_1, context_1) } }; }); -$__System.register('15', ['c', '10', 'a', '12', '13'], function (exports_1, context_1) { +$__System.register('15', ['c', 'e', 'a', 'f', '10', '11', '13', '9', 'b'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -3554,7 +3554,7 @@ $__System.register('15', ['c', '10', 'a', '12', '13'], function (exports_1, cont if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; - var aurelia_dependency_injection_1, common_1, session_1, reality_1, vuforia_1; + var aurelia_dependency_injection_1, common_1, session_1, device_1, timer_1, reality_1, vuforia_1, view_1, utils_1; var LiveVideoRealityLoader; return { setters: [function (aurelia_dependency_injection_1_1) { @@ -3563,19 +3563,51 @@ $__System.register('15', ['c', '10', 'a', '12', '13'], function (exports_1, cont common_1 = common_1_1; }, function (session_1_1) { session_1 = session_1_1; + }, function (device_1_1) { + device_1 = device_1_1; + }, function (timer_1_1) { + timer_1 = timer_1_1; }, function (reality_1_1) { reality_1 = reality_1_1; }, function (vuforia_1_1) { vuforia_1 = vuforia_1_1; + }, function (view_1_1) { + view_1 = view_1_1; + }, function (utils_1_1) { + utils_1 = utils_1_1; }], execute: function () { LiveVideoRealityLoader = function (_super) { __extends(LiveVideoRealityLoader, _super); - function LiveVideoRealityLoader(sessionService, vuforiaDelegate) { + function LiveVideoRealityLoader(sessionService, vuforiaDelegate, viewService, deviceService, timer) { + var _this = this; _super.call(this); this.sessionService = sessionService; this.vuforiaDelegate = vuforiaDelegate; + this.viewService = viewService; + this.deviceService = deviceService; + this.timer = timer; this.type = 'live-video'; + this.lastFrameTime = 0; + if (typeof document !== 'undefined') { + this.settingsIframe = document.createElement('iframe'); + this.settingsIframe.width = '0'; + this.settingsIframe.height = '0'; + this.settingsIframe.src = 'https://argonjs.io/tools.argonjs.io/'; + viewService.containingElementPromise.then(function (container) { + container.insertBefore(_this.settingsIframe, container.firstChild); + }); + this.videoFov = Math.PI / 2; + this.videoElement = document.createElement('video'); + this.videoElement.style = 'width:100%; height:100%;'; + this.videoElement.controls = false; + this.videoElement.autoplay = true; + viewService.containingElementPromise.then(function (container) { + container.insertBefore(_this.videoElement, container.firstChild); + }); + this.canvas = document.createElement('canvas'); + this.context = this.canvas.getContext('2d'); + } } LiveVideoRealityLoader.prototype.load = function (reality, callback) { var _this = this; @@ -3594,20 +3626,70 @@ $__System.register('15', ['c', '10', 'a', '12', '13'], function (exports_1, cont _this.vuforiaDelegate.trackingEnabled = false; }); }); + if (typeof document !== 'undefined' && typeof navigator !== 'undefined') { + window.addEventListener('message', function (event) { + var origin = event.origin || event.originalEvent.origin; + if (origin === 'http://argonjs.io') { + _this.videoFov = event.data; + } + }); + var mediaDevices = navigator.mediaDevices; + var getUserMedia = (mediaDevices.getUserMedia || mediaDevices.mozGetUserMedia || mediaDevices.msGetUserMedia || mediaDevices.webkitGetUserMedia).bind(mediaDevices); + var videoPromise = getUserMedia({ audio: false, video: true }); + videoPromise.then(function (videoStream) { + _this.videoElement.src = window.URL.createObjectURL(videoStream); + }); + videoPromise.catch(function (error) { + remoteRealitySession.errorEvent.raiseEvent(error); + }); + var firstFrame_1 = true; + var update_1 = function (time, index) { + if (firstFrame_1 || _this.videoElement.currentTime != _this.lastFrameTime) { + firstFrame_1 = false; + _this.lastFrameTime = _this.videoElement.currentTime; + _this.deviceService.update(); + var frameState = { + time: time, + index: index, + eye: { + pose: utils_1.getSerializedEntityPose(_this.deviceService.displayEntity, time), + fov: _this.videoFov + } + }; + remoteRealitySession.send('ar.reality.frameState', frameState); + } + _this.timer.requestFrame(update_1); + }; + this.timer.requestFrame(update_1); + } callback(realitySession); // Only connect after the caller is able to attach connectEvent handlers var messageChannel = this.sessionService.createSynchronousMessageChannel(); realitySession.open(messageChannel.port1, this.sessionService.configuration); remoteRealitySession.open(messageChannel.port2, { role: common_1.Role.REALITY_VIEWER }); }; - LiveVideoRealityLoader = __decorate([aurelia_dependency_injection_1.inject(session_1.SessionService, vuforia_1.VuforiaServiceDelegate)], LiveVideoRealityLoader); + LiveVideoRealityLoader.isAvailable = function () { + if (typeof navigator !== 'undefined') { + var mediaDevices = navigator.mediaDevices; + return !!(mediaDevices.getUserMedia || mediaDevices.mozGetUserMedia || mediaDevices.msGetUserMedia || mediaDevices.webkitGetUserMedia); + } else { + return false; + } + }; + LiveVideoRealityLoader.prototype.getVideoFrame = function (x, y, width, height) { + this.canvas.width = this.videoElement.videoWidth; + this.canvas.height = this.videoElement.videoHeight; + this.context.drawImage(this.videoElement, 0, 0, this.canvas.width, this.canvas.height); + return this.context.getImageData(x, y, width, height); + }; + LiveVideoRealityLoader = __decorate([aurelia_dependency_injection_1.inject(session_1.SessionService, vuforia_1.VuforiaServiceDelegate, view_1.ViewService, device_1.DeviceService, timer_1.TimerService)], LiveVideoRealityLoader); return LiveVideoRealityLoader; }(reality_1.RealityLoader); exports_1("LiveVideoRealityLoader", LiveVideoRealityLoader); } }; }); -$__System.register('16', ['c', 'e', '10', 'a', '12', 'b'], function (exports_1, context_1) { +$__System.register('16', ['c', '12', 'e', 'a', '11', 'b'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -4024,531 +4106,952 @@ $__System.register('16', ['c', 'e', '10', 'a', '12', 'b'], function (exports_1, } }; }); -$__System.registerDynamic("17", [], true, function($__require, exports, module) { - ; - var define, - global = this || self, - GLOBAL = global; - (function(define, undefined) { - define(function() { - 'use strict'; - var impl = {}; - impl.mobileDetectRules = { - "phones": { - "iPhone": "\\biPhone\\b|\\biPod\\b", - "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", - "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", - "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", - "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", - "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", - "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350", - "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", - "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", - "Asus": "Asus.*Galaxy|PadFone.*Mobile", - "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", - "Palm": "PalmSource|Palm", - "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", - "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", - "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", - "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", - "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", - "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", - "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", - "Alcatel": "Alcatel", - "Nintendo": "Nintendo 3DS", - "Amoi": "Amoi", - "INQ": "INQ", - "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" - }, - "tablets": { - "iPad": "iPad|iPad.*Mobile", - "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", - "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", - "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b", - "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", - "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", - "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C", - "BlackBerryTablet": "PlayBook|RIM Tablet", - "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", - "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", - "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", - "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b", - "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", - "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", - "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", - "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", - "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", - "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", - "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", - "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", - "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", - "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", - "IRUTablet": "M702pro", - "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", - "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", - "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", - "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", - "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", - "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", - "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", - "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", - "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", - "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", - "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", - "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", - "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", - "FlyTablet": "IQ310|Fly Vision", - "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", - "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", - "NecTablet": "\\bN-06D|\\bN-08D", - "PantechTablet": "Pantech.*P4100", - "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", - "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", - "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", - "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", - "NabiTablet": "Android.*\\bNabi", - "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", - "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", - "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", - "PlaystationTablet": "Playstation.*(Portable|Vita)", - "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", - "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", - "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", - "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", - "GalapadTablet": "Android.*\\bG1\\b", - "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", - "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", - "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", - "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", - "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", - "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", - "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", - "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", - "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", - "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", - "DPSTablet": "DPS Dream 9|DPS Dual 7", - "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", - "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", - "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", - "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", - "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", - "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", - "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", - "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", - "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", - "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7", - "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", - "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", - "iMobileTablet": "i-mobile i-note", - "TolinoTablet": "tolino tab [0-9.]+|tolino shine", - "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", - "AMPETablet": "Android.* A78 ", - "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", - "TecnoTablet": "TECNO P9", - "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", - "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", - "FX2Tablet": "FX2 PAD7|FX2 PAD10", - "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", - "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", - "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", - "CaptivaTablet": "CAPTIVA PAD", - "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", - "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", - "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", - "JaytechTablet": "TPC-PA762", - "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", - "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", - "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", - "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", - "AocTablet": "MW0811|MW0812|MW0922|MTK8382", - "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", - "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", - "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", - "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", - "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", - "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", - "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", - "UbislateTablet": "UbiSlate[\\s]?7C", - "PocketBookTablet": "Pocketbook", - "Hudl": "Hudl HT7S3|Hudl 2", - "TelstraTablet": "T-Hub2", - "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" - }, - "oss": { - "AndroidOS": "Android", - "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", - "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", - "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", - "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", - "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", - "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", - "MeeGoOS": "MeeGo", - "MaemoOS": "Maemo", - "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", - "webOS": "webOS|hpwOS", - "badaOS": "\\bBada\\b", - "BREWOS": "BREW" - }, - "uas": { - "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", - "Dolfin": "\\bDolfin\\b", - "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", - "Skyfire": "Skyfire", - "IE": "IEMobile|MSIEMobile", - "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", - "Bolt": "bolt", - "TeaShark": "teashark", - "Blazer": "Blazer", - "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", - "Tizen": "Tizen", - "UCBrowser": "UC.*Browser|UCWEB", - "baiduboxapp": "baiduboxapp", - "baidubrowser": "baidubrowser", - "DiigoBrowser": "DiigoBrowser", - "Puffin": "Puffin", - "Mercury": "\\bMercury\\b", - "ObigoBrowser": "Obigo", - "NetFront": "NF-Browser", - "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger" - }, - "props": { - "Mobile": "Mobile\/[VER]", - "Build": "Build\/[VER]", - "Version": "Version\/[VER]", - "VendorID": "VendorID\/[VER]", - "iPad": "iPad.*CPU[a-z ]+[VER]", - "iPhone": "iPhone.*CPU[a-z ]+[VER]", - "iPod": "iPod.*CPU[a-z ]+[VER]", - "Kindle": "Kindle\/[VER]", - "Chrome": ["Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]"], - "Coast": ["Coast\/[VER]"], - "Dolfin": "Dolfin\/[VER]", - "Firefox": "Firefox\/[VER]", - "Fennec": "Fennec\/[VER]", - "IE": ["IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]"], - "NetFront": "NetFront\/[VER]", - "NokiaBrowser": "NokiaBrowser\/[VER]", - "Opera": [" OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]"], - "Opera Mini": "Opera Mini\/[VER]", - "Opera Mobi": "Version\/[VER]", - "UC Browser": "UC Browser[VER]", - "MQQBrowser": "MQQBrowser\/[VER]", - "MicroMessenger": "MicroMessenger\/[VER]", - "baiduboxapp": "baiduboxapp\/[VER]", - "baidubrowser": "baidubrowser\/[VER]", - "Iron": "Iron\/[VER]", - "Safari": ["Version\/[VER]", "Safari\/[VER]"], - "Skyfire": "Skyfire\/[VER]", - "Tizen": "Tizen\/[VER]", - "Webkit": "webkit[ \/][VER]", - "Gecko": "Gecko\/[VER]", - "Trident": "Trident\/[VER]", - "Presto": "Presto\/[VER]", - "iOS": " \\bi?OS\\b [VER][ ;]{1}", - "Android": "Android [VER]", - "BlackBerry": ["BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]"], - "BREW": "BREW [VER]", - "Java": "Java\/[VER]", - "Windows Phone OS": ["Windows Phone OS [VER]", "Windows Phone [VER]"], - "Windows Phone": "Windows Phone [VER]", - "Windows CE": "Windows CE\/[VER]", - "Windows NT": "Windows NT [VER]", - "Symbian": ["SymbianOS\/[VER]", "Symbian\/[VER]"], - "webOS": ["webOS\/[VER]", "hpwOS\/[VER];"] - }, - "utils": { - "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", - "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", - "DesktopMode": "WPDesktop", - "TV": "SonyDTV|HbbTV", - "WebKit": "(webkit)[ \/]([\\w.]+)", - "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", - "Watch": "SM-V700" - } - }; - impl.detectMobileBrowsers = { - fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, - shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, - tabletPattern: /android|ipad|playbook|silk/i - }; - var hasOwnProp = Object.prototype.hasOwnProperty, - isArray; - impl.FALLBACK_PHONE = 'UnknownPhone'; - impl.FALLBACK_TABLET = 'UnknownTablet'; - impl.FALLBACK_MOBILE = 'UnknownMobile'; - isArray = ('isArray' in Array) ? Array.isArray : function(value) { - return Object.prototype.toString.call(value) === '[object Array]'; - }; - function equalIC(a, b) { - return a != null && b != null && a.toLowerCase() === b.toLowerCase(); - } - function containsIC(array, value) { - var valueLC, - i, - len = array.length; - if (!len || !value) { - return false; - } - valueLC = value.toLowerCase(); - for (i = 0; i < len; ++i) { - if (valueLC === array[i].toLowerCase()) { - return true; - } - } - return false; - } - function convertPropsToRegExp(object) { - for (var key in object) { - if (hasOwnProp.call(object, key)) { - object[key] = new RegExp(object[key], 'i'); - } - } - } - (function init() { - var key, - values, - value, - i, - len, - verPos, - mobileDetectRules = impl.mobileDetectRules; - for (key in mobileDetectRules.props) { - if (hasOwnProp.call(mobileDetectRules.props, key)) { - values = mobileDetectRules.props[key]; - if (!isArray(values)) { - values = [values]; +$__System.registerDynamic("17", [], true, function ($__require, exports, module) { + var define, + global = this || self, + GLOBAL = global; + // THIS FILE IS GENERATED - DO NOT EDIT! + /*global module:false, define:false*/ + + (function (define, undefined) { + define(function () { + 'use strict'; + + var impl = {}; + + impl.mobileDetectRules = { + "phones": { + "iPhone": "\\biPhone\\b|\\biPod\\b", + "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", + "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", + "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", + "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", + "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", + "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350", + "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", + "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", + "Asus": "Asus.*Galaxy|PadFone.*Mobile", + "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", + "Palm": "PalmSource|Palm", + "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", + "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", + "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", + "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", + "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", + "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", + "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", + "Alcatel": "Alcatel", + "Nintendo": "Nintendo 3DS", + "Amoi": "Amoi", + "INQ": "INQ", + "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" + }, + "tablets": { + "iPad": "iPad|iPad.*Mobile", + "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", + "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", + "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b", + "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", + "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", + "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C", + "BlackBerryTablet": "PlayBook|RIM Tablet", + "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", + "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", + "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", + "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b", + "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", + "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", + "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", + "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", + "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", + "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", + "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", + "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", + "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", + "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", + "IRUTablet": "M702pro", + "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", + "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", + "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", + "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", + "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", + "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", + "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", + "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", + "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", + "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", + "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", + "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", + "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", + "FlyTablet": "IQ310|Fly Vision", + "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", + "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", + "NecTablet": "\\bN-06D|\\bN-08D", + "PantechTablet": "Pantech.*P4100", + "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", + "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", + "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", + "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", + "NabiTablet": "Android.*\\bNabi", + "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", + "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", + "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", + "PlaystationTablet": "Playstation.*(Portable|Vita)", + "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", + "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", + "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", + "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", + "GalapadTablet": "Android.*\\bG1\\b", + "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", + "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", + "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", + "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", + "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", + "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", + "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", + "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", + "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", + "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", + "DPSTablet": "DPS Dream 9|DPS Dual 7", + "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", + "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", + "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", + "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", + "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", + "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", + "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", + "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", + "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", + "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7", + "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", + "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", + "iMobileTablet": "i-mobile i-note", + "TolinoTablet": "tolino tab [0-9.]+|tolino shine", + "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", + "AMPETablet": "Android.* A78 ", + "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", + "TecnoTablet": "TECNO P9", + "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", + "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", + "FX2Tablet": "FX2 PAD7|FX2 PAD10", + "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", + "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", + "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", + "CaptivaTablet": "CAPTIVA PAD", + "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", + "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", + "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", + "JaytechTablet": "TPC-PA762", + "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", + "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", + "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", + "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", + "AocTablet": "MW0811|MW0812|MW0922|MTK8382", + "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", + "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", + "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", + "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", + "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", + "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", + "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", + "UbislateTablet": "UbiSlate[\\s]?7C", + "PocketBookTablet": "Pocketbook", + "Hudl": "Hudl HT7S3|Hudl 2", + "TelstraTablet": "T-Hub2", + "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" + }, + "oss": { + "AndroidOS": "Android", + "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", + "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", + "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", + "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", + "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", + "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", + "MeeGoOS": "MeeGo", + "MaemoOS": "Maemo", + "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", + "webOS": "webOS|hpwOS", + "badaOS": "\\bBada\\b", + "BREWOS": "BREW" + }, + "uas": { + "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", + "Dolfin": "\\bDolfin\\b", + "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", + "Skyfire": "Skyfire", + "IE": "IEMobile|MSIEMobile", + "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", + "Bolt": "bolt", + "TeaShark": "teashark", + "Blazer": "Blazer", + "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", + "Tizen": "Tizen", + "UCBrowser": "UC.*Browser|UCWEB", + "baiduboxapp": "baiduboxapp", + "baidubrowser": "baidubrowser", + "DiigoBrowser": "DiigoBrowser", + "Puffin": "Puffin", + "Mercury": "\\bMercury\\b", + "ObigoBrowser": "Obigo", + "NetFront": "NF-Browser", + "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger" + }, + "props": { + "Mobile": "Mobile\/[VER]", + "Build": "Build\/[VER]", + "Version": "Version\/[VER]", + "VendorID": "VendorID\/[VER]", + "iPad": "iPad.*CPU[a-z ]+[VER]", + "iPhone": "iPhone.*CPU[a-z ]+[VER]", + "iPod": "iPod.*CPU[a-z ]+[VER]", + "Kindle": "Kindle\/[VER]", + "Chrome": ["Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]"], + "Coast": ["Coast\/[VER]"], + "Dolfin": "Dolfin\/[VER]", + "Firefox": "Firefox\/[VER]", + "Fennec": "Fennec\/[VER]", + "IE": ["IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]"], + "NetFront": "NetFront\/[VER]", + "NokiaBrowser": "NokiaBrowser\/[VER]", + "Opera": [" OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]"], + "Opera Mini": "Opera Mini\/[VER]", + "Opera Mobi": "Version\/[VER]", + "UC Browser": "UC Browser[VER]", + "MQQBrowser": "MQQBrowser\/[VER]", + "MicroMessenger": "MicroMessenger\/[VER]", + "baiduboxapp": "baiduboxapp\/[VER]", + "baidubrowser": "baidubrowser\/[VER]", + "Iron": "Iron\/[VER]", + "Safari": ["Version\/[VER]", "Safari\/[VER]"], + "Skyfire": "Skyfire\/[VER]", + "Tizen": "Tizen\/[VER]", + "Webkit": "webkit[ \/][VER]", + "Gecko": "Gecko\/[VER]", + "Trident": "Trident\/[VER]", + "Presto": "Presto\/[VER]", + "iOS": " \\bi?OS\\b [VER][ ;]{1}", + "Android": "Android [VER]", + "BlackBerry": ["BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]"], + "BREW": "BREW [VER]", + "Java": "Java\/[VER]", + "Windows Phone OS": ["Windows Phone OS [VER]", "Windows Phone [VER]"], + "Windows Phone": "Windows Phone [VER]", + "Windows CE": "Windows CE\/[VER]", + "Windows NT": "Windows NT [VER]", + "Symbian": ["SymbianOS\/[VER]", "Symbian\/[VER]"], + "webOS": ["webOS\/[VER]", "hpwOS\/[VER];"] + }, + "utils": { + "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", + "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", + "DesktopMode": "WPDesktop", + "TV": "SonyDTV|HbbTV", + "WebKit": "(webkit)[ \/]([\\w.]+)", + "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", + "Watch": "SM-V700" + } + }; + + // following patterns come from http://detectmobilebrowsers.com/ + impl.detectMobileBrowsers = { + fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, + shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, + tabletPattern: /android|ipad|playbook|silk/i + }; + + var hasOwnProp = Object.prototype.hasOwnProperty, + isArray; + + impl.FALLBACK_PHONE = 'UnknownPhone'; + impl.FALLBACK_TABLET = 'UnknownTablet'; + impl.FALLBACK_MOBILE = 'UnknownMobile'; + + isArray = 'isArray' in Array ? Array.isArray : function (value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }; + + function equalIC(a, b) { + return a != null && b != null && a.toLowerCase() === b.toLowerCase(); } - len = values.length; - for (i = 0; i < len; ++i) { - value = values[i]; - verPos = value.indexOf('[VER]'); - if (verPos >= 0) { - value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); - } - values[i] = new RegExp(value, 'i'); + + function containsIC(array, value) { + var valueLC, + i, + len = array.length; + if (!len || !value) { + return false; + } + valueLC = value.toLowerCase(); + for (i = 0; i < len; ++i) { + if (valueLC === array[i].toLowerCase()) { + return true; + } + } + return false; } - mobileDetectRules.props[key] = values; - } - } - convertPropsToRegExp(mobileDetectRules.oss); - convertPropsToRegExp(mobileDetectRules.phones); - convertPropsToRegExp(mobileDetectRules.tablets); - convertPropsToRegExp(mobileDetectRules.uas); - convertPropsToRegExp(mobileDetectRules.utils); - mobileDetectRules.oss0 = { - WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, - WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS - }; - }()); - impl.findMatch = function(rules, userAgent) { - for (var key in rules) { - if (hasOwnProp.call(rules, key)) { - if (rules[key].test(userAgent)) { - return key; + + function convertPropsToRegExp(object) { + for (var key in object) { + if (hasOwnProp.call(object, key)) { + object[key] = new RegExp(object[key], 'i'); + } + } } - } - } - return null; - }; - impl.findMatches = function(rules, userAgent) { - var result = []; - for (var key in rules) { - if (hasOwnProp.call(rules, key)) { - if (rules[key].test(userAgent)) { - result.push(key); + + (function init() { + var key, + values, + value, + i, + len, + verPos, + mobileDetectRules = impl.mobileDetectRules; + for (key in mobileDetectRules.props) { + if (hasOwnProp.call(mobileDetectRules.props, key)) { + values = mobileDetectRules.props[key]; + if (!isArray(values)) { + values = [values]; + } + len = values.length; + for (i = 0; i < len; ++i) { + value = values[i]; + verPos = value.indexOf('[VER]'); + if (verPos >= 0) { + value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); + } + values[i] = new RegExp(value, 'i'); + } + mobileDetectRules.props[key] = values; + } + } + convertPropsToRegExp(mobileDetectRules.oss); + convertPropsToRegExp(mobileDetectRules.phones); + convertPropsToRegExp(mobileDetectRules.tablets); + convertPropsToRegExp(mobileDetectRules.uas); + convertPropsToRegExp(mobileDetectRules.utils); + + // copy some patterns to oss0 which are tested first (see issue#15) + mobileDetectRules.oss0 = { + WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, + WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS + }; + })(); + + /** + * Test userAgent string against a set of rules and find the first matched key. + * @param {Object} rules (key is String, value is RegExp) + * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). + * @returns {String|null} the matched key if found, otherwise null + * @private + */ + impl.findMatch = function (rules, userAgent) { + for (var key in rules) { + if (hasOwnProp.call(rules, key)) { + if (rules[key].test(userAgent)) { + return key; + } + } + } + return null; + }; + + /** + * Test userAgent string against a set of rules and return an array of matched keys. + * @param {Object} rules (key is String, value is RegExp) + * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). + * @returns {Array} an array of matched keys, may be empty when there is no match, but not null + * @private + */ + impl.findMatches = function (rules, userAgent) { + var result = []; + for (var key in rules) { + if (hasOwnProp.call(rules, key)) { + if (rules[key].test(userAgent)) { + result.push(key); + } + } + } + return result; + }; + + /** + * Check the version of the given property in the User-Agent. + * + * @param {String} propertyName + * @param {String} userAgent + * @return {String} version or null if version not found + * @private + */ + impl.getVersionStr = function (propertyName, userAgent) { + var props = impl.mobileDetectRules.props, + patterns, + i, + len, + match; + if (hasOwnProp.call(props, propertyName)) { + patterns = props[propertyName]; + len = patterns.length; + for (i = 0; i < len; ++i) { + match = patterns[i].exec(userAgent); + if (match !== null) { + return match[1]; + } + } + } + return null; + }; + + /** + * Check the version of the given property in the User-Agent. + * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) + * + * @param {String} propertyName + * @param {String} userAgent + * @return {Number} version or NaN if version not found + * @private + */ + impl.getVersion = function (propertyName, userAgent) { + var version = impl.getVersionStr(propertyName, userAgent); + return version ? impl.prepareVersionNo(version) : NaN; + }; + + /** + * Prepare the version number. + * + * @param {String} version + * @return {Number} the version number as a floating number + * @private + */ + impl.prepareVersionNo = function (version) { + var numbers; + + numbers = version.split(/[a-z._ \/\-]/i); + if (numbers.length === 1) { + version = numbers[0]; + } + if (numbers.length > 1) { + version = numbers[0] + '.'; + numbers.shift(); + version += numbers.join(''); + } + return Number(version); + }; + + impl.isMobileFallback = function (userAgent) { + return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0, 4)); + }; + + impl.isTabletFallback = function (userAgent) { + return impl.detectMobileBrowsers.tabletPattern.test(userAgent); + }; + + impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { + if (cache.mobile !== undefined) { + return; + } + var phone, tablet, phoneSized; + + // first check for stronger tablet rules, then phone (see issue#5) + tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); + if (tablet) { + cache.mobile = cache.tablet = tablet; + cache.phone = null; + return; // unambiguously identified as tablet + } + + phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); + if (phone) { + cache.mobile = cache.phone = phone; + cache.tablet = null; + return; // unambiguously identified as phone + } + + // our rules haven't found a match -> try more general fallback rules + if (impl.isMobileFallback(userAgent)) { + phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); + if (phoneSized === undefined) { + cache.mobile = impl.FALLBACK_MOBILE; + cache.tablet = cache.phone = null; + } else if (phoneSized) { + cache.mobile = cache.phone = impl.FALLBACK_PHONE; + cache.tablet = null; + } else { + cache.mobile = cache.tablet = impl.FALLBACK_TABLET; + cache.phone = null; + } + } else if (impl.isTabletFallback(userAgent)) { + cache.mobile = cache.tablet = impl.FALLBACK_TABLET; + cache.phone = null; + } else { + // not mobile at all! + cache.mobile = cache.tablet = cache.phone = null; + } + }; + + // t is a reference to a MobileDetect instance + impl.mobileGrade = function (t) { + // impl note: + // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. + // When changes are made in Mobile_Detect.php, copy this method and replace: + // $this-> / t. + // self::MOBILE_GRADE_(.) / '$1' + // , self::VERSION_TYPE_FLOAT / (nothing) + // isIOS() / os('iOS') + // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE + var $isMobile = t.mobile() !== null; + + if ( + // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) + t.os('iOS') && t.version('iPad') >= 4.3 || t.os('iOS') && t.version('iPhone') >= 3.1 || t.os('iOS') && t.version('iPod') >= 3.1 || + + // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) + // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM + // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices + // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 + t.version('Android') > 2.1 && t.is('Webkit') || + + // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 + t.version('Windows Phone OS') >= 7.0 || + + // Blackberry 7 - Tested on BlackBerry Torch 9810 + // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 + t.is('BlackBerry') && t.version('BlackBerry') >= 6.0 || + // Blackberry Playbook (1.0-2.0) - Tested on PlayBook + t.match('Playbook.*Tablet') || + + // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) + t.version('webOS') >= 1.4 && t.match('Palm|Pre|Pixi') || + // Palm WebOS 3.0 - Tested on HP TouchPad + t.match('hp.*TouchPad') || + + // Firefox Mobile (12 Beta) - Tested on Android 2.3 device + t.is('Firefox') && t.version('Firefox') >= 12 || + + // Chrome for Android - Tested on Android 4.0, 4.1 device + t.is('Chrome') && t.is('AndroidOS') && t.version('Android') >= 4.0 || + + // Skyfire 4.1 - Tested on Android 2.3 device + t.is('Skyfire') && t.version('Skyfire') >= 4.1 && t.is('AndroidOS') && t.version('Android') >= 2.3 || + + // Opera Mobile 11.5-12: Tested on Android 2.3 + t.is('Opera') && t.version('Opera Mobi') > 11 && t.is('AndroidOS') || + + // Meego 1.2 - Tested on Nokia 950 and N9 + t.is('MeeGoOS') || + + // Tizen (pre-release) - Tested on early hardware + t.is('Tizen') || + + // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser + // @todo: more tests here! + t.is('Dolfin') && t.version('Bada') >= 2.0 || + + // UC Browser - Tested on Android 2.3 device + (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android') >= 2.3 || + + // Kindle 3 and Fire - Tested on the built-in WebKit browser for each + t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle') >= 3.0 || + + // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet + t.is('AndroidOS') && t.is('NookTablet') || + + // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 + t.version('Chrome') >= 11 && !$isMobile || + + // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 + t.version('Safari') >= 5.0 && !$isMobile || + + // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 + t.version('Firefox') >= 4.0 && !$isMobile || + + // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 + t.version('MSIE') >= 7.0 && !$isMobile || + + // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 + // @reference: http://my.opera.com/community/openweb/idopera/ + t.version('Opera') >= 10 && !$isMobile) { + return 'A'; + } + + if (t.os('iOS') && t.version('iPad') < 4.3 || t.os('iOS') && t.version('iPhone') < 3.1 || t.os('iOS') && t.version('iPod') < 3.1 || + + // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 + t.is('Blackberry') && t.version('BlackBerry') >= 5 && t.version('BlackBerry') < 6 || + + //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 + t.version('Opera Mini') >= 5.0 && t.version('Opera Mini') <= 6.5 && (t.version('Android') >= 2.3 || t.is('iOS')) || + + // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) + t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || + + // @todo: report this (tested on Nokia N71) + t.version('Opera Mobi') >= 11 && t.is('SymbianOS')) { + return 'B'; + } + + if ( + // Blackberry 4.x - Tested on the Curve 8330 + t.version('BlackBerry') < 5.0 || + // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) + t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile') <= 5.2) { + return 'C'; + } + + //All older smartphone platforms and featurephones - Any device that doesn't support media queries + //will receive the basic, C grade experience. + return 'C'; + }; + + impl.detectOS = function (ua) { + return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); + }; + + impl.getDeviceSmallerSide = function () { + return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; + }; + + /** + * Constructor for MobileDetect object. + *
+ * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
+ *
+ * Find information how to download and install: + * github.com/hgoebl/mobile-detect.js/ + *
+ * + * @example
+             *     var md = new MobileDetect(window.navigator.userAgent);
+             *     if (md.mobile()) {
+             *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';
+             *     }
+             * 
+ * + * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent'] + * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum + * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled + * as phone. + * This is only used in cases where the device cannot be classified as phone or tablet.
+ * See Declaring Tablet Layouts + * for Android.
+ * If you provide a value < 0, then this "fuzzy" check is disabled. + * @constructor + * @global + */ + function MobileDetect(userAgent, maxPhoneWidth) { + this.ua = userAgent || ''; + this._cache = {}; + //600dp is typical 7" tablet minimum width + this.maxPhoneWidth = maxPhoneWidth || 600; } - } - } - return result; - }; - impl.getVersionStr = function(propertyName, userAgent) { - var props = impl.mobileDetectRules.props, - patterns, - i, - len, - match; - if (hasOwnProp.call(props, propertyName)) { - patterns = props[propertyName]; - len = patterns.length; - for (i = 0; i < len; ++i) { - match = patterns[i].exec(userAgent); - if (match !== null) { - return match[1]; + + MobileDetect.prototype = { + constructor: MobileDetect, + + /** + * Returns the detected phone or tablet type or null if it is not a mobile device. + *
+ * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
+ *
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against + * the patterns of detectmobilebrowsers.com. If this test + * is positive, a value of UnknownPhone, UnknownTablet or + * UnknownMobile is returned.
+ * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
+ *
+ * When used server-side (node.js), there is no way to tell the difference between UnknownTablet + * and UnknownMobile, so you will get UnknownMobile here.
+ * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: + * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. + * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. + *
+ * In most cases you will use the return value just as a boolean. + * + * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". + * @function MobileDetect#mobile + */ + mobile: function () { + impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); + return this._cache.mobile; + }, + + /** + * Returns the detected phone type/family string or null. + *
+ * The returned tablet (family or producer) is one of following keys:
+ *
iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, + * Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, Wolfgang, + * Alcatel, Nintendo, Amoi, INQ, GenericPhone
+ *
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against + * the patterns of detectmobilebrowsers.com. If this test + * is positive, a value of UnknownPhone or UnknownMobile is returned.
+ * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
+ *
+ * When used server-side (node.js), there is no way to tell the difference between UnknownTablet + * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} + * will return UnknownMobile.
+ * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: + * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. + * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. + *
+ * In most cases you will use the return value just as a boolean. + * + * @returns {String} the key of the phone family or producer, e.g. "iPhone" + * @function MobileDetect#phone + */ + phone: function () { + impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); + return this._cache.phone; + }, + + /** + * Returns the detected tablet type/family string or null. + *
+ * The returned tablet (family or producer) is one of following keys:
+ *
iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, + * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, + * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, + * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, + * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, + * SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, MSITablet, + * SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, NecTablet, + * PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, PositivoTablet, + * NabiTablet, KoboTablet, DanewTablet, TexetTablet, PlaystationTablet, + * TrekstorTablet, PyleAudioTablet, AdvanTablet, DanyTechTablet, GalapadTablet, + * MicromaxTablet, KarbonnTablet, AllFineTablet, PROSCANTablet, YONESTablet, + * ChangJiaTablet, GUTablet, PointOfViewTablet, OvermaxTablet, HCLTablet, + * DPSTablet, VistureTablet, CrestaTablet, MediatekTablet, ConcordeTablet, + * GoCleverTablet, ModecomTablet, VoninoTablet, ECSTablet, StorexTablet, + * VodafoneTablet, EssentielBTablet, RossMoorTablet, iMobileTablet, TolinoTablet, + * AudioSonicTablet, AMPETablet, SkkTablet, TecnoTablet, JXDTablet, iJoyTablet, + * FX2Tablet, XoroTablet, ViewsonicTablet, OdysTablet, CaptivaTablet, + * IconbitTablet, TeclastTablet, OndaTablet, JaytechTablet, BlaupunktTablet, + * DigmaTablet, EvolioTablet, LavaTablet, AocTablet, MpmanTablet, CelkonTablet, + * WolderTablet, MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet, + * PocketBookTablet, Hudl, TelstraTablet, GenericTablet
+ *
+ * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against + * the patterns of detectmobilebrowsers.com. If this test + * is positive, a value of UnknownTablet or UnknownMobile is returned.
+ * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
+ *
+ * When used server-side (node.js), there is no way to tell the difference between UnknownTablet + * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} + * will return UnknownMobile.
+ * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: + * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. + * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. + *
+ * In most cases you will use the return value just as a boolean. + * + * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" + * @function MobileDetect#tablet + */ + tablet: function () { + impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); + return this._cache.tablet; + }, + + /** + * Returns the (first) detected user-agent string or null. + *
+ * The returned user-agent is one of following keys:
+ *
Chrome, Dolfin, Opera, Skyfire, IE, Firefox, Bolt, TeaShark, Blazer, Safari, + * Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Puffin, Mercury, + * ObigoBrowser, NetFront, GenericBrowser
+ *
+ * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare + * cases where a mobile device pretends to be more than one particular browser. You can get the + * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by + * providing one of the defined keys as first argument to {@link MobileDetect#is}. + * + * @returns {String} the key for the detected user-agent or null + * @function MobileDetect#userAgent + */ + userAgent: function () { + if (this._cache.userAgent === undefined) { + this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); + } + return this._cache.userAgent; + }, + + /** + * Returns all detected user-agent strings. + *
+ * The array is empty or contains one or more of following keys:
+ *
Chrome, Dolfin, Opera, Skyfire, IE, Firefox, Bolt, TeaShark, Blazer, Safari, + * Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Puffin, Mercury, + * ObigoBrowser, NetFront, GenericBrowser
+ *
+ * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare + * cases where a mobile device pretends to be more than one particular browser. You can get the + * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by + * providing one of the defined keys as first argument to {@link MobileDetect#is}. + * + * @returns {Array} the array of detected user-agent keys or [] + * @function MobileDetect#userAgents + */ + userAgents: function () { + if (this._cache.userAgents === undefined) { + this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); + } + return this._cache.userAgents; + }, + + /** + * Returns the detected operating system string or null. + *
+ * The operating system is one of following keys:
+ *
AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, + * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
+ * + * @returns {String} the key for the detected operating system. + * @function MobileDetect#os + */ + os: function () { + if (this._cache.os === undefined) { + this._cache.os = impl.detectOS(this.ua); + } + return this._cache.os; + }, + + /** + * Get the version (as Number) of the given property in the User-Agent. + *
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) + * + * @param {String} key a key defining a thing which has a version.
+ * You can use one of following keys:
+ *
Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, + * Dolfin, Firefox, Fennec, IE, NetFront, NokiaBrowser, Opera, Opera Mini, Opera + * Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, Iron, + * Safari, Skyfire, Tizen, Webkit, Gecko, Trident, Presto, iOS, Android, + * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows + * NT, Symbian, webOS
+ * + * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. + * Be careful when comparing this value with '==' operator! + * @function MobileDetect#version + */ + version: function (key) { + return impl.getVersion(key, this.ua); + }, + + /** + * Get the version (as String) of the given property in the User-Agent. + *
+ * + * @param {String} key a key defining a thing which has a version.
+ * You can use one of following keys:
+ *
Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, + * Dolfin, Firefox, Fennec, IE, NetFront, NokiaBrowser, Opera, Opera Mini, Opera + * Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, Iron, + * Safari, Skyfire, Tizen, Webkit, Gecko, Trident, Presto, iOS, Android, + * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows + * NT, Symbian, webOS
+ * + * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. + * + * @function MobileDetect#versionStr + */ + versionStr: function (key) { + return impl.getVersionStr(key, this.ua); + }, + + /** + * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. + * + * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or + * tablet family.
+ * For a complete list of possible values, see {@link MobileDetect#userAgent}, + * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
+ * Additionally you have following keys:
+ *
Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
+ * + * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, + * tablet or one of the listed additional keys, otherwise false + * @function MobileDetect#is + */ + is: function (key) { + return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); + }, + + /** + * Do a quick test against navigator::userAgent. + * + * @param {String|RegExp} pattern the pattern, either as String or RegExp + * (a string will be converted to a case-insensitive RegExp). + * @returns {boolean} true when the pattern matches, otherwise false + * @function MobileDetect#match + */ + match: function (pattern) { + if (!(pattern instanceof RegExp)) { + pattern = new RegExp(pattern, 'i'); + } + return pattern.test(this.ua); + }, + + /** + * Checks whether the mobile device can be considered as phone regarding screen.width. + *
+ * Obviously this method makes sense in browser environments only (not for Node.js)! + * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
+ * The argument is optional and if not present or falsy, the value of the constructor is taken. + * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true + * when screen.width is less or equal to maxPhoneWidth, otherwise false.
+ * Will always return undefined server-side. + */ + isPhoneSized: function (maxPhoneWidth) { + return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); + }, + + /** + * Returns the mobile grade ('A', 'B', 'C'). + * + * @returns {String} one of the mobile grades ('A', 'B', 'C'). + * @function MobileDetect#mobileGrade + */ + mobileGrade: function () { + if (this._cache.grade === undefined) { + this._cache.grade = impl.mobileGrade(this); + } + return this._cache.grade; + } + }; + + // environment-dependent + if (typeof window !== 'undefined' && window.screen) { + MobileDetect.isPhoneSized = function (maxPhoneWidth) { + return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; + }; + } else { + MobileDetect.isPhoneSized = function () {}; } - } - } - return null; - }; - impl.getVersion = function(propertyName, userAgent) { - var version = impl.getVersionStr(propertyName, userAgent); - return version ? impl.prepareVersionNo(version) : NaN; - }; - impl.prepareVersionNo = function(version) { - var numbers; - numbers = version.split(/[a-z._ \/\-]/i); - if (numbers.length === 1) { - version = numbers[0]; - } - if (numbers.length > 1) { - version = numbers[0] + '.'; - numbers.shift(); - version += numbers.join(''); - } - return Number(version); - }; - impl.isMobileFallback = function(userAgent) { - return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0, 4)); - }; - impl.isTabletFallback = function(userAgent) { - return impl.detectMobileBrowsers.tabletPattern.test(userAgent); - }; - impl.prepareDetectionCache = function(cache, userAgent, maxPhoneWidth) { - if (cache.mobile !== undefined) { - return; - } - var phone, - tablet, - phoneSized; - tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); - if (tablet) { - cache.mobile = cache.tablet = tablet; - cache.phone = null; - return; - } - phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); - if (phone) { - cache.mobile = cache.phone = phone; - cache.tablet = null; - return; - } - if (impl.isMobileFallback(userAgent)) { - phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); - if (phoneSized === undefined) { - cache.mobile = impl.FALLBACK_MOBILE; - cache.tablet = cache.phone = null; - } else if (phoneSized) { - cache.mobile = cache.phone = impl.FALLBACK_PHONE; - cache.tablet = null; - } else { - cache.mobile = cache.tablet = impl.FALLBACK_TABLET; - cache.phone = null; - } - } else if (impl.isTabletFallback(userAgent)) { - cache.mobile = cache.tablet = impl.FALLBACK_TABLET; - cache.phone = null; + + // should not be replaced by a completely new object - just overwrite existing methods + MobileDetect._impl = impl; + + return MobileDetect; + }); // end of call of define() + })(function (undefined) { + if (typeof module !== 'undefined' && module.exports) { + return function (factory) { + module.exports = factory(); + }; + } else if (typeof define === 'function' && define.amd) { + return define; + } else if (typeof window !== 'undefined') { + return function (factory) { + window.MobileDetect = factory(); + }; } else { - cache.mobile = cache.tablet = cache.phone = null; + // please file a bug if you get this error! + throw new Error('unknown environment'); } - }; - impl.mobileGrade = function(t) { - var $isMobile = t.mobile() !== null; - if (t.os('iOS') && t.version('iPad') >= 4.3 || t.os('iOS') && t.version('iPhone') >= 3.1 || t.os('iOS') && t.version('iPod') >= 3.1 || (t.version('Android') > 2.1 && t.is('Webkit')) || t.version('Windows Phone OS') >= 7.0 || t.is('BlackBerry') && t.version('BlackBerry') >= 6.0 || t.match('Playbook.*Tablet') || (t.version('webOS') >= 1.4 && t.match('Palm|Pre|Pixi')) || t.match('hp.*TouchPad') || (t.is('Firefox') && t.version('Firefox') >= 12) || (t.is('Chrome') && t.is('AndroidOS') && t.version('Android') >= 4.0) || (t.is('Skyfire') && t.version('Skyfire') >= 4.1 && t.is('AndroidOS') && t.version('Android') >= 2.3) || (t.is('Opera') && t.version('Opera Mobi') > 11 && t.is('AndroidOS')) || t.is('MeeGoOS') || t.is('Tizen') || t.is('Dolfin') && t.version('Bada') >= 2.0 || ((t.is('UC Browser') || t.is('Dolfin')) && t.version('Android') >= 2.3) || (t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle') >= 3.0) || t.is('AndroidOS') && t.is('NookTablet') || t.version('Chrome') >= 11 && !$isMobile || t.version('Safari') >= 5.0 && !$isMobile || t.version('Firefox') >= 4.0 && !$isMobile || t.version('MSIE') >= 7.0 && !$isMobile || t.version('Opera') >= 10 && !$isMobile) { - return 'A'; - } - if (t.os('iOS') && t.version('iPad') < 4.3 || t.os('iOS') && t.version('iPhone') < 3.1 || t.os('iOS') && t.version('iPod') < 3.1 || t.is('Blackberry') && t.version('BlackBerry') >= 5 && t.version('BlackBerry') < 6 || (t.version('Opera Mini') >= 5.0 && t.version('Opera Mini') <= 6.5 && (t.version('Android') >= 2.3 || t.is('iOS'))) || t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || t.version('Opera Mobi') >= 11 && t.is('SymbianOS')) { - return 'B'; - } - if (t.version('BlackBerry') < 5.0 || t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile') <= 5.2) { - return 'C'; - } - return 'C'; - }; - impl.detectOS = function(ua) { - return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); - }; - impl.getDeviceSmallerSide = function() { - return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; - }; - function MobileDetect(userAgent, maxPhoneWidth) { - this.ua = userAgent || ''; - this._cache = {}; - this.maxPhoneWidth = maxPhoneWidth || 600; - } - MobileDetect.prototype = { - constructor: MobileDetect, - mobile: function() { - impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); - return this._cache.mobile; - }, - phone: function() { - impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); - return this._cache.phone; - }, - tablet: function() { - impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); - return this._cache.tablet; - }, - userAgent: function() { - if (this._cache.userAgent === undefined) { - this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); - } - return this._cache.userAgent; - }, - userAgents: function() { - if (this._cache.userAgents === undefined) { - this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); - } - return this._cache.userAgents; - }, - os: function() { - if (this._cache.os === undefined) { - this._cache.os = impl.detectOS(this.ua); - } - return this._cache.os; - }, - version: function(key) { - return impl.getVersion(key, this.ua); - }, - versionStr: function(key) { - return impl.getVersionStr(key, this.ua); - }, - is: function(key) { - return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); - }, - match: function(pattern) { - if (!(pattern instanceof RegExp)) { - pattern = new RegExp(pattern, 'i'); - } - return pattern.test(this.ua); - }, - isPhoneSized: function(maxPhoneWidth) { - return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); - }, - mobileGrade: function() { - if (this._cache.grade === undefined) { - this._cache.grade = impl.mobileGrade(this); - } - return this._cache.grade; - } - }; - if (typeof window !== 'undefined' && window.screen) { - MobileDetect.isPhoneSized = function(maxPhoneWidth) { - return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; - }; - } else { - MobileDetect.isPhoneSized = function() {}; - } - MobileDetect._impl = impl; - return MobileDetect; - }); - })((function(undefined) { - if (typeof module !== 'undefined' && module.exports) { - return function(factory) { - module.exports = factory(); - }; - } else if (typeof define === 'function' && define.amd) { - return define; - } else if (typeof window !== 'undefined') { - return function(factory) { - window.MobileDetect = factory(); - }; - } else { - throw new Error('unknown environment'); - } - })()); - return module.exports; + }()); + return module.exports; }); - $__System.register('14', ['c', 'a', 'b'], function (exports_1, context_1) { "use strict"; @@ -5464,7 +5967,7 @@ define("c", ["exports", "18", "3"], function(exports, _aureliaMetadata, _aurelia }); })(); -$__System.register("10", [], function (exports_1, context_1) { +$__System.register("e", [], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -5567,13 +6070,17 @@ $__System.register("10", [], function (exports_1, context_1) { title: 'Empty Reality', providedReferenceFrames: ['FIXED'] }; + RealityViewer.LIVE_VIDEO = { + uri: 'reality:live-video', + title: 'Live Video Reality' + }; return RealityViewer; }(); exports_1("RealityViewer", RealityViewer); } }; }); -$__System.register('a', ['e', 'c', '10', 'b'], function (exports_1, context_1) { +$__System.register('a', ['12', 'c', 'e', 'b'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -6161,7 +6668,7 @@ $__System.register('a', ['e', 'c', '10', 'b'], function (exports_1, context_1) { } }; }); -$__System.register('12', ['c', 'e', '10', '14', 'a', 'b', '1'], function (exports_1, context_1) { +$__System.register('11', ['c', '12', 'e', '14', 'a', 'b', '1'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -6597,7 +7104,7 @@ $__System.register('12', ['c', 'e', '10', '14', 'a', 'b', '1'], function (export } }; }); -$__System.register('11', ['c', 'e', '17', '10', 'a', 'b', '12'], function (exports_1, context_1) { +$__System.register('f', ['c', '12', '17', 'e', 'a', 'b', '11'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -7033,7 +7540,7 @@ $__System.register('11', ['c', 'e', '17', '10', 'a', 'b', '12'], function (expor } }; }); -$__System.register('9', ['c', 'e', 'a', '16', 'b', '14', '11'], function (exports_1, context_1) { +$__System.register('9', ['c', '12', 'a', '16', 'b', '14', 'f'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -7387,7 +7894,7 @@ $__System.register('9', ['c', 'e', 'a', '16', 'b', '14', '11'], function (export } }; }); -$__System.register('19', ['c', 'a', '12', '9'], function (exports_1, context_1) { +$__System.register('19', ['c', 'a', '11', '9'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -20445,7 +20952,7 @@ define("6f", ["2d", "3c", "24", "1b", "1d", "3d", "67", "6c", "6d", "28", "34", })(); // Add functionality for keeping a moving window of samples per SampledProperty, // so that the data doesn't accumulate indefinitely -$__System.register("70", ["e"], function (exports_1, context_1) { +$__System.register("70", ["12"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -20509,7 +21016,7 @@ $__System.register("70", ["e"], function (exports_1, context_1) { } }; }); -$__System.register('e', ['4d', '1a', '46', '2d', '44', '22', '23', '26', '2c', '30', '27', '24', '1b', '1d', '3d', '29', '2a', '1e', '4b', '3b', '3e', '25', '28', '33', '34', '3f', '40', '41', '2f', '37', '35', '47', '2e', '48', '49', '4a', '36', '65', '6f', '70'], function (exports_1, context_1) { +$__System.register('12', ['4d', '1a', '46', '2d', '44', '22', '23', '26', '2c', '30', '27', '24', '1b', '1d', '3d', '29', '2a', '1e', '4b', '3b', '3e', '25', '28', '33', '34', '3f', '40', '41', '2f', '37', '35', '47', '2e', '48', '49', '4a', '36', '65', '6f', '70'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -20674,7 +21181,7 @@ $__System.register('e', ['4d', '1a', '46', '2d', '44', '22', '23', '26', '2c', ' execute: function () {} }; }); -$__System.register('b', ['1e', 'e'], function (exports_1, context_1) { +$__System.register('b', ['1e', '12'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -21194,7 +21701,7 @@ $__System.register('b', ['1e', 'e'], function (exports_1, context_1) { } }; }); -$__System.register('1', ['2', 'c', 'e', '7', 'a', '10', '16', '11', '14', '12', 'd', '8', '9', '13', 'f', '15', '19', 'b'], function (exports_1, context_1) { +$__System.register('1', ['2', 'c', '12', '7', 'a', 'e', '16', 'f', '14', '11', '10', '8', '9', '13', 'd', '15', '19', 'b'], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; @@ -21387,7 +21894,11 @@ $__System.register('1', ['2', 'c', 'e', '7', 'a', '10', '16', '11', '14', '12', container.get(view_1.PinchZoomService); container.get(ui_1.DefaultUIService); } - this.reality.setDefault(common_1.RealityViewer.EMPTY); + if (live_video_1.LiveVideoRealityLoader.isAvailable()) { + this.reality.setDefault(RealityView.LIVE_VIDEO); + } else { + this.reality.setDefault(RealityView.EMPTY); + } } // ensure the entire object graph is instantiated before connecting to the manager. for (var _i = 0, _a = Object.keys(ArgonSystem.prototype); _i < _a.length; _i++) { diff --git a/dist/argon.min.js b/dist/argon.min.js index 2305dcb..819bbb8 100644 --- a/dist/argon.min.js +++ b/dist/argon.min.js @@ -1,13 +1,13 @@ !function(e){function t(e,t,i){return 4===arguments.length?r.apply(this,arguments):void n(e,{declarative:!0,deps:t,declare:i})}function r(e,t,r,i){n(e,{declarative:!1,deps:t,executingRequire:r,execute:i})}function n(e,t){t.name=e,e in v||(v[e]=t),t.normalizedDeps=t.deps}function i(e,t){if(t[e.groupIndex]=t[e.groupIndex]||[],-1==p.call(t[e.groupIndex],e)){t[e.groupIndex].push(e);for(var r=0,n=e.normalizedDeps.length;n>r;r++){var a=e.normalizedDeps[r],o=v[a];if(o&&!o.evaluated){var s=e.groupIndex+(o.declarative!=e.declarative);if(void 0===o.groupIndex||o.groupIndex=0;a--){for(var o=r[a],u=0;ua;a++){var s=r.importers[a];if(!s.locked)for(var u=0;ua;a++){var f,c=t.normalizedDeps[a],l=v[c],d=y[c];d?f=d.exports:l&&!l.declarative?f=l.esModule:l?(s(l),d=l.module,f=d.exports):f=h(c),d&&d.importers?(d.importers.push(r),r.dependencies.push(d)):r.dependencies.push(null),r.setters[a]&&r.setters[a](f)}}}function u(e){var t,r=v[e];if(r)r.declarative?d(e,[]):r.evaluated||f(r),t=r.module.exports;else if(t=h(e),!t)throw new Error("Unable to load dependency "+e+".");return(!r||r.declarative)&&t&&t.__useDefault?t["default"]:t}function f(t){if(!t.module){var r={},n=t.module={exports:r,id:t.name};if(!t.executingRequire)for(var i=0,a=t.normalizedDeps.length;a>i;i++){var o=t.normalizedDeps[i],s=v[o];s&&f(s)}t.evaluated=!0;var l=t.execute.call(e,function(e){for(var r=0,n=t.deps.length;n>r;r++)if(t.deps[r]==e)return u(t.normalizedDeps[r]);throw new TypeError("Module "+e+" not declared as a dependency.")},r,n);l&&(n.exports=l),r=n.exports,r&&r.__esModule?t.esModule=r:t.esModule=c(r)}}function c(t){var r={};if(("object"==typeof t||"function"==typeof t)&&t!==e)if(m)for(var n in t)"default"!==n&&l(r,t,n);else{var i=t&&t.hasOwnProperty;for(var n in t)"default"===n||i&&!t.hasOwnProperty(n)||(r[n]=t[n])}return r["default"]=t,w(r,"__useDefault",{value:!0}),r}function l(e,t,r){try{var n;(n=Object.getOwnPropertyDescriptor(t,r))&&w(e,r,n)}catch(n){return e[r]=t[r],!1}}function d(t,r){var n=v[t];if(n&&!n.evaluated&&n.declarative){r.push(t);for(var i=0,a=n.normalizedDeps.length;a>i;i++){var o=n.normalizedDeps[i];-1==p.call(r,o)&&(v[o]?d(o,r):h(o))}n.evaluated||(n.evaluated=!0,n.module.execute.call(e))}}function h(e){if(S[e])return S[e];if("@node/"==e.substr(0,6))return S[e]=c(g(e.substr(6)));var t=v[e];if(!t)throw"Module "+e+" not present.";return a(e),d(e,[]),v[e]=void 0,t.declarative&&w(t.module.exports,"__esModule",{value:!0}),S[e]=t.declarative?t.module.exports:t.esModule}var v={},p=Array.prototype.indexOf||function(e){for(var t=0,r=this.length;r>t;t++)if(this[t]===e)return t;return-1},m=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(e){m=!1}var w;!function(){try{Object.defineProperty({},"a",{})&&(w=Object.defineProperty)}catch(e){w=function(e,t,r){try{e[t]=r.value||r.get.call(e)}catch(e){}}}}();var y={},g="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,S={"@empty":{}};return function(e,n,i,a){return function(o){o(function(o){for(var s={_nodeRequire:g,register:t,registerDynamic:r,get:h,set:function(e,t){S[e]=t},newModule:function(e){return e}},u=0;u1)for(var u=1;ut;t++)if(this[t]===e)return t;return-1},s=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,u="(?:^|[^$_a-zA-Z\\xA0-\\uFFFF.])",f="\\s*\\(\\s*(\"([^\"]+)\"|'([^']+)')\\s*\\)",c=/\(([^\)]*)\)/,l=/^\s+|\s+$/g,d={};i.amd={};var h={isBundle:!1,anonDefine:null};a.amdDefine=i,a.amdRequire=n}("undefined"!=typeof self?self:global);(function(){var t=e.amdDefine;t("2",["exports","3"],function(e,t){"use strict";Number.isNaN=Number.isNaN||function(e){return e!==e};Number.isFinite=Number.isFinite||function(e){return typeof e==="number"&&isFinite(e)};if(!String.prototype.endsWith){String.prototype.endsWith=function(e,t){var r=this.toString();if(typeof t!=="number"||!isFinite(t)||Math.floor(t)!==t||t>r.length){t=r.length}t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}if(!String.prototype.startsWith){String.prototype.startsWith=function(e,t){t=t||0;return this.substr(t,e.length)===e}}if(!Array.from){Array.from=function(){var e=Object.prototype.toString;var t=function t(r){return typeof r==="function"||e.call(r)==="[object Function]"};var r=function e(t){var r=Number(t);if(isNaN(r)){return 0}if(r===0||!isFinite(r)){return r}return(r>0?1:-1)*Math.floor(Math.abs(r))};var n=Math.pow(2,53)-1;var i=function e(t){var i=r(t);return Math.min(Math.max(i,0),n)};return function e(r){var n=this;var a=Object(r);if(r==null){throw new TypeError("Array.from requires an array-like object - not null or undefined")}var o=arguments.length>1?arguments[1]:void undefined;var s;if(typeof o!=="undefined"){if(!t(o)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){s=arguments[2]}}var u=i(a.length);var f=t(n)?Object(new n(u)):new Array(u);var c=0;var l;while(c>>0;var n=arguments[1];var i;for(var a=0;a>>0;var n=arguments[1];var i;for(var a=0;a=0){i=n}else{i=r+n;if(i<0){i=0}}var a;while(i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},b=f-c,T=Math.floor,E=String.fromCharCode,_;function A(e){throw new RangeError(S[e])}function P(e,t){var r=e.length;var n=[];while(r--){n[r]=t(e[r])}return n}function M(e,t){var r=e.split("@");var n="";if(r.length>1){n=r[0]+"@";e=r[1]}e=e.replace(g,".");var i=e.split(".");var a=P(i,t).join(".");return n+a}function C(e){var t=[],r=0,n=e.length,i,a;while(r=55296&&i<=56319&&r65535){e-=65536;t+=E(e>>>10&1023|55296);e=56320|e&1023}t+=E(e);return t}).join("")}function x(e){if(e-48<10){return e-22}if(e-65<26){return e-65}if(e-97<26){return e-97}return f}function R(e,t){return e+22+75*(e<26)-((t!=0)<<5)}function O(e,t,r){var n=0;e=r?T(e/h):e>>1;e+=T(e/t);for(;e>b*l>>1;n+=f){e=T(e/b)}return T(n+(b+1)*e/(e+d))}function D(e){var t=[],r=e.length,n,i=0,a=p,o=v,s,d,h,w,y,g,S,b,E;s=e.lastIndexOf(m);if(s<0){s=0}for(d=0;d=128){A("not-basic")}t.push(e.charCodeAt(d))}for(h=s>0?s+1:0;h=r){A("invalid-input")}S=x(e.charCodeAt(h++));if(S>=f||S>T((u-i)/y)){A("overflow")}i+=S*y;b=g<=o?c:g>=o+l?l:g-o;if(ST(u/E)){A("overflow")}y*=E}n=t.length+1;o=O(i-w,n,w==0);if(T(i/n)>u-a){A("overflow")}a+=T(i/n);i%=n;t.splice(i++,0,a)}return I(t)}function q(e){var t,r,n,i,a,o,s,d,h,w,y,g=[],S,b,_,P;e=C(e);S=e.length;t=p;r=0;a=v;for(o=0;o=t&&yT((u-r)/b)){A("overflow")}r+=(s-t)*b;t=s;for(o=0;ou){A("overflow")}if(y==t){for(d=r,h=f;;h+=f){w=h<=a?c:h>=a+l?l:h-a;if(d1){o.splice(0,1)}else{break}}r[s]=o.join("")}var f=-1;var c=0;var l=0;var d=-1;var h=false;for(s=0;sc){f=d;c=l}}}else{if(r[s]==="0"){h=true;d=s;l=1}}}if(l>c){f=d;c=l}if(c>1){r.splice(f,c,"")}n=r.length;var v="";if(r[0]===""){v=":"}for(s=0;s=e.length-1){return false}var n=e.lastIndexOf(".",t-1);if(n<=0||n>=t-1){return false}var i=r.list[e.slice(t+1)];if(!i){return false}return i.indexOf(" "+e.slice(n+1,t)+" ")>=0},is:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1){return false}var n=e.lastIndexOf(".",t-1);if(n>=0){return false}var i=r.list[e.slice(t+1)];if(!i){return false}return i.indexOf(" "+e.slice(0,t)+" ")>=0},get:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1){return null}var n=e.lastIndexOf(".",t-1);if(n<=0||n>=t-1){return null}var i=r.list[e.slice(t+1)];if(!i){return null}if(i.indexOf(" "+e.slice(n+1,t)+" ")<0){return null}return e.slice(n+1)},noConflict:function(){if(e.SecondLevelDomains===this){e.SecondLevelDomains=t}return this}};return r})})();(function(){var i=e.amdDefine;(function(e,a){"use strict";if(typeof r==="object"){n.exports=a(t("./punycode"),t("./IPv6"),t("./SecondLevelDomains"))}else if(typeof i==="function"&&i.amd){i("7",["4","5","6"],a)}else{e.URI=a(e.punycode,e.IPv6,e.SecondLevelDomains,e)}})(this,function(e,t,r,n){"use strict";var i=n&&n.URI;function a(e,t){var r=arguments.length>=1;var n=arguments.length>=2;if(!(this instanceof a)){if(r){if(n){return new a(e,t)}return new a(e)}return new a}if(e===undefined){if(r){throw new TypeError("undefined is not a valid argument for URI")}if(typeof location!=="undefined"){e=location.href+""}else{e=""}}this.href(e);if(t!==undefined){return this.absoluteTo(t)}return this}a.version="1.18.1";var o=a.prototype;var s=Object.prototype.hasOwnProperty;function u(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(e){if(e===undefined){return"Undefined"}return String(Object.prototype.toString.call(e)).slice(8,-1)}function c(e){return f(e)==="Array"}function l(e,t){var r={};var n,i;if(f(t)==="RegExp"){r=null}else if(c(t)){for(n=0,i=t.length;n]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;a.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/};a.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"};a.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;a.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"};a.getDomAttribute=function(e){if(!e||!e.nodeName){return undefined}var t=e.nodeName.toLowerCase();if(t==="input"&&e.type!=="image"){return undefined}return a.domAttributes[t]};function p(e){return escape(e)}function m(e){return encodeURIComponent(e).replace(/[!'()*]/g,p).replace(/\*/g,"%2A")}a.encode=m;a.decode=decodeURIComponent;a.iso8859=function(){a.encode=escape;a.decode=unescape};a.unicode=function(){a.encode=m;a.decode=decodeURIComponent};a.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/gi,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}};a.encodeQuery=function(e,t){var r=a.encode(e+"");if(t===undefined){t=a.escapeQuerySpace}return t?r.replace(/%20/g,"+"):r};a.decodeQuery=function(e,t){e+="";if(t===undefined){t=a.escapeQuerySpace}try{return a.decode(t?e.replace(/\+/g,"%20"):e)}catch(t){return e}};var w={encode:"encode",decode:"decode"};var y;var g=function(e,t){return function(r){try{return a[t](r+"").replace(a.characters[e][t].expression,function(r){return a.characters[e][t].map[r]})}catch(e){return r}}};for(y in w){a[y+"PathSegment"]=g("pathname",w[y]);a[y+"UrnPathSegment"]=g("urnpath",w[y])}var S=function(e,t,r){return function(n){var i;if(!r){i=a[t]}else{i=function(e){return a[t](a[r](e))}}var o=(n+"").split(e);for(var s=0,u=o.length;s-1){t.fragment=e.substring(r+1)||null;e=e.substring(0,r)}r=e.indexOf("?");if(r>-1){t.query=e.substring(r+1)||null;e=e.substring(0,r)}if(e.substring(0,2)==="//"){t.protocol=null;e=e.substring(2);e=a.parseAuthority(e,t)}else{r=e.indexOf(":");if(r>-1){t.protocol=e.substring(0,r)||null;if(t.protocol&&!t.protocol.match(a.protocol_expression)){t.protocol=undefined}else if(e.substring(r+1,r+3)==="//"){e=e.substring(r+3);e=a.parseAuthority(e,t)}else{e=e.substring(r+1);t.urn=true}}}t.path=e;return t};a.parseHost=function(e,t){e=e.replace(/\\/g,"/");var r=e.indexOf("/");var n;var i;if(r===-1){r=e.length}if(e.charAt(0)==="["){n=e.indexOf("]");t.hostname=e.substring(1,n)||null;t.port=e.substring(n+2,r)||null;if(t.port==="/"){t.port=null}}else{var a=e.indexOf(":");var o=e.indexOf("/");var s=e.indexOf(":",a+1);if(s!==-1&&(o===-1||s-1?r:e.length-1);var i;if(n>-1&&(r===-1||n=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s;var u,f,c,l,d;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e}],execute:function(){u="url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='768' height='768'%3E%3Cpath fill='white' d='M448.5 96H672v223.5h-64.5v-114L294 519l-45-45 313.5-313.5h-114V96zm159 511.5V384H672v223.5c0 34.5-30 64.5-64.5 64.5h-447c-36 0-64.5-30-64.5-64.5v-447C96 126 124.5 96 160.5 96H384v64.5H160.5v447h447z'/%3E%3C/svg%3E\")";f="url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512'%3E%3Cpath fill='white' d='M256 96C144.34 96 47.56 161.02 0 256c47.56 94.98 144.34 160 256 160 111.656 0 208.438-65.02 256-160-47.558-94.98-144.344-160-256-160zm126.225 84.852c30.08 19.187 55.57 44.887 74.717 75.148-19.146 30.26-44.637 55.96-74.718 75.148C344.427 355.258 300.78 368 256 368s-88.43-12.743-126.226-36.852c-30.08-19.186-55.57-44.886-74.716-75.148 19.146-30.262 44.637-55.962 74.717-75.148 1.96-1.25 3.938-2.46 5.93-3.65C130.725 190.866 128 205.612 128 221c0 70.69 57.308 128 128 128s128-57.31 128-128c0-15.387-2.726-30.134-7.704-43.8 1.99 1.19 3.97 2.402 5.93 3.652zM256 208c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48z'/%3E%3C/svg%3E\")";c="url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20245.82%20141.73%22%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill%3A%23fff%3Bfill-rule%3Aevenodd%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Ctitle%3Emask%3C%2Ftitle%3E%3Cpath%20class%3D%22a%22%20d%3D%22M175.56%2C111.37c-22.52%2C0-40.77-18.84-40.77-42.07S153%2C27.24%2C175.56%2C27.24s40.77%2C18.84%2C40.77%2C42.07S198.08%2C111.37%2C175.56%2C111.37ZM26.84%2C69.31c0-23.23%2C18.25-42.07%2C40.77-42.07s40.77%2C18.84%2C40.77%2C42.07-18.26%2C42.07-40.77%2C42.07S26.84%2C92.54%2C26.84%2C69.31ZM27.27%2C0C11.54%2C0%2C0%2C12.34%2C0%2C28.58V110.9c0%2C16.24%2C11.54%2C30.83%2C27.27%2C30.83H99.57c2.17%2C0%2C4.19-1.83%2C5.4-3.7L116.47%2C118a8%2C8%2C0%2C0%2C1%2C12.52-.18l11.51%2C20.34c1.2%2C1.86%2C3.22%2C3.61%2C5.39%2C3.61h72.29c15.74%2C0%2C27.63-14.6%2C27.63-30.83V28.58C245.82%2C12.34%2C233.93%2C0%2C218.19%2C0H27.27Z%22%2F%3E%3C%2Fsvg%3E)";l="url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBYRXhpZgAATU0AKgAAAAgABAExAAIAAAARAAAAPlEQAAEAAAABAQAAAFERAAQAAAABAAAAAFESAAQAAAABAAAAAAAAAABBZG9iZSBJbWFnZVJlYWR5AAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCACQAJADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9ObW1tTbW5NrbDMEJwtvCo5jU8KqBVHoFAAHAAFT/AGS1/wCfW3/78x//ABNFp/x6Wv8A17w/+i1qxX/ILOVXnl71T4n1l3/4C+4/1nUNF7vRfZ8vQr/ZLX/n1t/+/Mf/AMTR9ktf+fW3/wC/Mf8A8TViip5qv81T75f10X3D5P7v/kv/AACv9ktf+fW3/wC/Mf8A8TR9ktf+fW3/AO/Mf/xNWKKOar/NU++X9dF9wcn93/yX/gFf7Ja/8+tv/wB+Y/8A4mj7Ja/8+tv/AN+Y/wD4mrFFHNV/mqffL+ui+4OT+7/5L/wCv9ktf+fW3/78x/8AxNH2S1/59bf/AL8x/wDxNWKKOar/ADVPvl/XRfcHJ/d/8l/4BX+yWv8Az62//fmP/wCJo+yWv/Prb/8AfmP/AOJqxRRzVf5qn3y/rovuDk/u/wDkv/AK/wBktf8An1t/+/Mf/wATR9ktf+fW3/78x/8AxNWKKOar/NU++X9dF9wcn93/AMl/4BX+yWv/AD62/wD35j/+Jo+yWv8Az62//fmP/wCJqxRRzVf5qn3y/rovuDk/u/8Akv8AwCv9ktf+fW3/AO/Mf/xNQXVrai2uCLW2OIJjhreFhxGx5VkKsPUMCCOCCKv1Xu/+PS6/695v/RbVVOVT2kNZ/HHrLuv8kJw0fu9H9ny9BLP/AI87T/r2g/8ARS1ZqtZ/8edp/wBe0H/opas1pP45f4pfmzVT0Wj2X5L/AIP9PQoooqR8/k/6/p/09CiiigOfyf8AX9P+noUUUUBz+T/r+n/T0KKKKA5/J/1/T/p6FFFFAc/k/wCv6f8AT0KKKKA5/J/1/T/p6FFFFAc/k/6/p/09Cq15/wAed3/17T/+imqzVa8/487v/r2n/wDRTVdP+JT/AMcf/SkJz0ej2f5f8P8A09Cz/wCPO0/69oP/AEUtWarWf/Hnaf8AXtB/6KWrNKfxy/xS/NmS2XovyCiiipGFfpT8AP2E/C3xX+E3hT4ieLPF/jLQdT8VRX+o2+l6Kuix2cGkLqV3a6RN/wATHSr25eW/sLeDUHczCPbdIqRqFy35v2WmX2t3+naHpkck2pa5qOn6Jp0USl5JL/V7yHTrRUUZLN59zGcAdAT2r+ofwn4dsfCHhfw54U0xdmneGtC0nQbEYx/oukWMFhAWHPztHArOSSWcliSSSf8ARL9nx4C8H+L3E3H+eeIPDuF4l4Y4YyXLctwuX4+WKpYWWf57jZYmji4SwtbD1KtXA5fk+NpSp+1dOnHMqc6lNylQlH8B8e+O834RyvIcHw/mFTLs0zTHYnEVMRRjSnVjgMvoRhUpONanVhGOIxOOoTjLlUm8JNRklzp/n7/w7R+F/wD0Ub4kf99eFv8A5n6/N/8Aac+FFj+z98ZIvhnBqN/qGk614T0nxX4R1fV3tDe6tFNc3+ma3p90bO3tLWK907U9PZ7aNIE8+xvLb70wJf8ApCr8h/8Agrd8Pjf+AfhZ8VLSGJZ/B/i278JavcorLd/2T41tI5dObzFGfJtPEOhWEceXBil1IvGMu5H9ifSo+iB4N5Z4KcU594fcB5bwxxHw7PLs4p5hldTMqmIll9HGUsLmlGpTxWNxFGph6eBxVXHVoOClJYJKFSlO1SP5D4X+LvGOK4zyzAcQZ5XzPLsxjiMG8PiYYWEFiZ0ZVMLOEqNCnONWdejDDwfM1+/1jJaP8x6K4Xwp4r/tPy9M1SQDU1G22uWwqamqjhHPCpqCgHjhbsDcuJQwPdV/hvmOXYrK8VPCYunyVIaxkrunWpttRrUZNLnpzs7OylGSlCcYVIThH+1cPiKWKpRrUZc0Xo09JQkt4TWtpK+q1TTUotxcZMooorhNwooooAKKKKACq15/x53f/XtP/wCimqzVa8/487v/AK9p/wD0U1XT/iU/8cf/AEpCez9H+QWf/Hnaf9e0H/opas1nWf8Ax52n/XtB/wCilqzSn8cv8UvzY42stXsunl6liiq9FSPTu/u/4J9X/sWeCf8AhNv2jfA4mglm0/wdHqfju/aMHbDJoduttojTNghVPiDUtMkUNjeYCFII4/oJr8r/APgmb4JEel/E74lXEDeZqOp6Z4I0i4OQrWejW/8AbGsbB0fzL/VrGF3HAewMf3lYD9TmZUVndlREUszMQqqqjLMzHACqASSSAAMmv+hT9nrwH/qd9HXKM4xFFUsfx9neb8WV3ONq0cFGpDJMqpSl/wA+ZYPKFmFCN3GKzGc9JVJpfwN9IHPP7W8QsTgqc3PD5BgMFlULP3XXnGWYYuVk3apGvjXhqnW+Gin8KOZ8MeMdA8Yf8JD/AGBei9/4RbxRq3g7Wtox9l1/RPs/9pWR5OWtzdQgk7SS3TGCfH/2s/hw/wAWP2cvi74JtoY5tUvvB2o6loIkjDlfEPh0J4h0IxEqzRSvqel20KyphlErc7SwPyN/wTW+LH/CyJ/2qvMlXffftAeIPiRYwMVEn9j/ABBEsVlKqDpF/wAUw0fykojDHG4Fv1AIBBBAIIwQRkEHqCD1Br+jOD88y3xr8Jfr+JWHqZXxtlPEuS4tYW1Si8LPGZtw9ieRTlNc3s6E21KTtUuuh+dZxgcTwXxZ9XpuaxWS4vLMbSc/iVVUcJmNO7SWilUitFsfxZW8wuIILhN6CaOKePqkib1WRDkYKSISDkEFWHHIr2Pwr4tGohNN1WVE1JFxb3TkImpIi/dkY4VL9FXLZIW6UFlxKGDH7QPw9f4UfHT4t/D3yDb2nh7x1rT6NGQFB8N69KviTw2yKOFjXRNYsoFVflUwsikha8V1MkadfsCVZbO6ZWBIZWWF2VlI5DKwDKw5BAI5Ff8APXxlwjKljs34bzin7DM8izPMMrrVIxvVwmYZdiquCxUUnZyp+3w8oVqMuVTjFfw6sKdSn/fWTZqpU8HmGElz4TH0MNiYRv7tbDYmnCtSldXSl7OopQmtYtu6cXKMvteH4cfEm4hiuLb4bfEK5t540mguLfwT4lnt54ZVDxTQTRaY0c0MqMrxSxsySIyujFSDVXUvA3jrRbOXUtb8C+NdF023MYuNS1jwpr2mafbmaVIYRPe3thBbQmaaSOGLzJV8yaSOJMu6qf6RfhFJJL8J/hhLK7SSy/DzwVJJI5LPJI/hvTGd2Y8lmYlmJ5JJNZ3xv+GNv8ZvhJ8QPhdc6g+kf8Jp4bvdItNZiRpZdF1Rgtxo+tRRLJEZpdH1WCy1KKHzEWWS1WN2CsTX951v2YWS1+Equb5P4nZ3is9rcOzzLK8tr8P5dSweJzaplv1rBYGtiP7SjOnhq2MdOhUr2UoUpupZONj8Qp/SXxEM2hhMZwzhKOBjmMcNisVDMcROtSwkcSqVfEQpfVbTqQoqdSNO9pSXLfVW/nk8B/Cb4m/FFrz/AIV54G1/xZDp0ogv77T4IINLs7ll3i1n1bUbiy00Xez5jaJdPcopDPCqspOT4x8C+NPh5q40Dx34X1fwprL263kNhrECRPdWTSyQLfWU0Ms9re2bTwzQC5tZ5ovOhliZhIjKP6VfAHgbw78NfB3h/wAD+FbKOx0Tw7p0FhaoiIsty8a5utQvXRV+0ajqV0Zr7UbtwZbq9uJp5CXkJr8Qf+Cqer3mjftDfC66tGyD8IZkuLWRmFvdw/8ACaaqTFKBna4I3QzqN8L4IypZT+Z+Nf0Csl8IPAyPHFTjHN828QMHXyShmmCjSwNLhWeJzSvCjisHgIvDLM4xwk6jpYfMMRjHHF+yVapgcJGs6dD6Tgzx1xPF3GzyOGTYXCZBVp46phcTKdeebKnhaUqlOtiLVvqn75R5qmHp0b0VL2ccRXlT9pV+PaKyNM1O01e0S9snLRk7JYnwJrWcDLW9wo+669VYfJKmJIyVJAv1/mhVpVaFWpRrU5UqtKThUpzXLOE47xkujX47rQ/o2EoTjGcJ80JJSjKNmmmrppqRYqtef8ed3/17T/8AopqWq15/x53f/XtP/wCimpU/4lP/ABx/9KQ3az1ez6eXqFn/AMedp/17Qf8Aopas1Ws/+PO0/wCvaD/0UtWaU/jl/il+bEtl6L8gprusaPI5wkas7n0VQWY/gATTq7X4aeD3+IXxH8BeBFEmzxZ4u0PR7to1LNHpct5HPrM3AYqsOjwX0rNg7QhbtXo5LlWNz7OMqyPLaLxGYZxmWCyvA0FdOtjMfiaWFw1JNKTTnWqwjdRbV9nsY4nE0cFhsRjMTP2eGwlCtisRU/590MPTlWrT/wC3KcJS+R++/wCyX4GPw+/Z7+GeizQGDUdQ0GPxTrCsCJP7U8WSyeILlJVIBWS2XUIrMoQGjW2VGyyknof2kPGh+HnwC+MfjRJDFcaB8OfFl3YyAgFNTk0e6tdKIzwT/aNxa8dW+6OSK9oiijgijhhRY4oUSKKNFCpHHGoRERRwqqoCqBwAABXmvxi+E3hf44fDzXfhj40m1uHwx4kOnDVl8P6pJo2o3EOmanZ6tDbC+ijldLaa6sYFu4guLi33wMdjtX/VDQ4RxXC/hRT4F4P9isdkPAK4W4bnWqPCUHjsvyD+y8rr16yhVlRjPE06NavW5Ks43nUaqT3/AMwJ5vSzTiyWe5z7T6vj+IP7VzNU4+1qKhiMw+tYuFKDlBTlGlOcKcHKEXaMbxW34X/8EnfFH/COfH3xL4LlkJh8afCyXyQWPzan4K1ewu4WI6OX0/WtWZj97MYI431/Q7XxJ8I/2AfgL8EviHoPxP8AA0vxBh8T+HY9VhsTqvjO61TTZrfWdMudKv7e9sJrVY7mGS2uWdFLKY7mK3nUh4Vr7br89+jH4dcZeFfhjDgvjWWWzx2X59muIy15VjZY7DLKswWFxcYyqTw2FlCssxq5k5U/ZySjKE1N87hD3/EviHJ+KeJXnOS/WvY4jAYWnivrdCOHqfW8O6tFtQjWrJw+rQwyUuZXkpLl0u/5/v8Agq78PD4f+NXgT4k2tqsVj8RfBU2h6hcKwzP4k8C3o2mRAAVebw9r2nxI7E+ZHpbKpxDhfyq1P/kG6h/143f/AKTyV/R7/wAFQfh9/wAJd+zNd+K7a2hk1L4V+K9C8Yi4Yf6RDoV1LJ4a8SJAe6fYNaS+uI+Ny6aj5zGAf5wtU/5Buo/9eN3/AOk8lf5h/TI4O/1S8duJMRSpOngeLsLl/FuD91pOpmFKWDzR83wylPOsvzGu0rOMa8FJN+/P+lfCDN/7V4JyqMpc1bKq1bKK2t3bDTjWwul21GOBxOFpq+7pytoj+xD4Pf8AJJPhb/2TnwR/6jOmV6NXnPwe/wCSSfC3/snPgj/1GdMr0av9qOG/+SdyD/sS5X/6g0D+Ncx/5GGO/wCwzE/+npn5d/tIf8FMfDPwe8f6x8Nfh/4Db4k614Vuzp3i7W7vxCvh7w3pWtRBWu/D9hLDpmr3usanp29YtWljgtbHTr0PYGe5u4bmK2/KT9rf9pO0/ak8aeCfHMPhC+8E3nh3wTP4U1XSLvVbXWrea7bXrvVo73TNRtreyeW0eG52Ol5Y2dxFKNgSVB5rfMmrXE93rfiK7uZXnubvxN4mu7maQlpJrm61/Ubi4mdjks8s0jyOSSSzEmqNf4b+LH0lPE/xTXEOR53m9CnwdmWaQxOD4YoZXlVOjltLL8Z7fLo08xjglm1avSUIrEVa+PqRxE5VG6cIeyp0v7Y4X8O+GeF3gMbgcHOWb4bCypVczqYrFSqYmdeh7PEynh3WeEhCpeTpwp0IuklFKcpc8p6ekatd6LeC7tCG3AJc2zkiC8gBz5UuPuuvWCcDfC+CMoWU+36bqVpq1ol7ZOWjY7JI3wJraYDLW9wg+7IvVWHySpiSMlScfPtaek6td6NeLd2hDbgEubZyRDeQA58qXH3XXkwTgb4X5GULKf5Q4k4bpZxSeIw6jSzGlG0Jv3YYmEdqNZ7KVtKVV/B8E702nD9Ry3MpYOSp1G5Yab1WrdJtq84K+388OvxR974vfarXn/Hnd/8AXtP/AOimqLTdStNWtEvbJy0THZJG+BNbTAZe3uFH3ZF6hh8kqYkjJU8S3n/Hnd/9e0//AKKavx90qtDE+xrU5UqtKqoVKc1yzhOMleMl0a/HdaH2CnGdNThJShKPNGUXdNNXTTQlmR9jteR/x7Qf+ilqzuHqPzrPszm0tT/07Qf+ilqzROC55av4pfn/AMP/AFvUdl6L8ifcPUfnX3n/AME7fBY8RfHPUvFs6SG0+HnhC9uoJFTdD/bfiqU6JZo7kbVcaRHr7oAd+dpA27iPgWv23/4JweCf7C+C+teM54pI7z4g+L9QuYXcYV9E8MD/AIR/TjHxlka/g1q4DZKn7R8oGCW/rv6C/AP+vH0keCJVqXtsBwd9d45x9483s3kFODyirbZcvEWKyf3n8N7r31G/5R4255/YfhznrhPkxGbqhkWG1tzPMZv63Du+bLKOP/Dbc/QmvnX4zftW/Av4Aa5ovhv4qeMJfD2s+INJuNb0uzg8P+ItaM2mW14LCS5kl0XS7+G3Bui0UcdxJHLKY5WjRljZh9FV/NL/AMFJvFknif8Aa08V6eLr7TZeBvCfgzwlaIG3R2txLp83inVIUHRXNz4jjE46+ZFg/dFf7YfSZ8X838FvDinxRw/h8pxWeY/iHLMiy6hnVHE4nAOWJoY7HYqdTD4PG5fiKjhgcuxPs+TFU4xqyhKfNH3X/F/htwlhOMuIZ5ZmFTFUsFh8uxOOxE8HUp0q9qdShh6UYVK1DEU1eviaTknSbcFJRadmv1tl/wCClH7HcEUk0vxPvVjhjeWRv+EE8ettSNSzHavhsscKCcKCT2BNfb2lapYa3pem61pVwl5pmr2Fnqmm3cYdY7qwv7eO7s7lFkVHCT28scqh0VwGAZVOQP4w5EWVHjcZSRGRh6q4KsPxBNf1T/sT+MZvHX7KvwQ1y6kSS9g8E2Xhu+KNuIu/B09z4Tl8zkkSv/YolcNzmTPIIJ/IPoq/Sc4x8auKeJeGeM8Dwxg6+XZBTzzKnw9gMywM6tOhmGHwGYxxKzDOc29qoSzDAOl7JUXDmnzud1y/WeJ/htlHB2V5dmWT1syrQr4+WBxax9fDV1GVTDzr4d0lQweFcW/q+IU3JzT9xJJpuXuXxF8G2HxE8A+NPAeqRwyWHjHwtrvhq5FxGJIkTWdMubATMpVvmt3nWeNgC6SRo6YdVI/jf1rT9Q0i213RtWRotW0T+2dD1aNxho9V0aS70vUkPTOy+tJ1Bx8wAYda/tSr+WX/AIKC/D0/Dj9pr4wWkNuYNK8ZwW/xK0fCLHFJH4s06X+2/JVeAF8V6dr7SY6tIJCAZMD439oRwd9a4c4E48oUr1MozXG8M5hUhFOTwuc4f+0MvnVfK5RpYbFZVi6UHzxiquYqLUpThy+14AZv7PMs6yKpL3cVh8NmeHTeiq4OssNiIwXWdWli6U3a75MLfZNn9Knwe/5JJ8Lf+yc+CP8A1GdMr0avOfg9/wAkk+Fv/ZOfBH/qM6ZXo1f37w3/AMk7kH/Ylyv/ANQaB+C5j/yMMd/2GYn/ANPTP4v73/kJ6z/2Hte/9PN9VerF7/yE9Z/7D2vf+nm+qvX/ADb4j/eK/wD1+q/+lyP9EofBH/DH8kFFFFYlGnpOrXmjXYu7Rg2QEubZyRBeQg5MUuPuuvWCcDfC+CMqWU+yxanZ6tpE97ZOWja3nSSJ8Ce2nELFre4UfdkXnaw+SVcSRkg4Hg9W7TVrvRjcXVqwIa2lS5t3J8m7gEbZjlAyQ6/egmUb4nwRlSVr5jiDhylm6jiKCjSzGly8k9o4iEWrUaz/AJklalVesPgl+7acPUy7Mp4NulUvPDTbvHVulJ7zguz+3D7Wso+9pL3Sz/487T/r2g/9FLVmq1n/AMedp/17Qf8Aopas1+QT+OX+KX5s+zWy9F+QV7bZ/tpftQfCvwroXhnwJ4k8H2fgnw3p1rpGm2E/gHTb280q2t12Iby8a7je9W4fdLNqEkayyXUsrXXzSbz4lSEAhlZVZWVkdHUMjoww6OjZV0cEhlIwRX3PAHiVxp4ZZrXzfgviLOOHcVjsMsBmNTJ8wxGW1sbgPbU67wtSvhpwqcirUqdaGriqtOEpRnFOEvEz7h3KOJcJDB5xgMJj6VGr9Yw8cZhqWJp0cQoSpqrGnWjKHNyTnBuylyTkoyi2mvZP+HlP7YH/AEOfgj/w3Ol//J1fG/jHxbr3j7xd4m8deKrqK+8T+L9YuNe1+8t7ZbO2uNSuljjka2so2eOzt0ihhigto2ZYo41UMetXfE3hk6WXv7BWbTHb97Fks+mu5wFP8T2TscQynJh4il4CuePr93znxX438R8swceJONuJOKMuw9d4nDYTO84xuYU8HjPZulUl7DE16sKOKhTqSpykld053hOVKpGU/gsLwvk/DuJrf2fkuW5ZiKlNUqlXA4KhhpV6POpxXtKVOEqlJzipJN2542klODSK+oPhL+2V+0L8DvBtv4A+G/ifw9p/hW01HVNUtbLWfCVjrt1Bd6zdvf6iI764uYZfs8t5LNPFAVIgMrqjFcAfL9FcvDXFfE3B2YSzbhTPs24czOeGqYOePybHYjL8XPCVp0qlXDSr4apTqSoVKlGjOdJtwlOlTk1zQi1eYZZl2bYdYXNMDhMwwyqRrLD4zD08TRVWClGFRU6sZRVSMZzjGaXMlOSTtJ3+6/8Ah5T+2B/0Ofgj/wANzpf/AMnV84/Gz46fEj9ojVtJ134sXuhatq+iaNeeH7C90Pw/a+HZTo99ci8ms7w2s05vBDc+ZNZPIR9ja6vfLB+1SV5FRX0XEHix4m8WZZWyXibj3izP8or1KNWtlubZ5j8dgqtTD1Y1qFSeHxFedOU6VWEalOTjeMldM4cBwxw5lWJhjcsyPKsBi6anGGJwmAw2HrxjUi4TjGrSpxmlOLcZK9pJtPQ+2NF/4KI/tY+HtG0nQNK8X+DIdL0PTLDR9Nil+H2mTyxWGmWsVlZxyzG9UzSJbwRq8pVTIwLlRnFaf/Dyn9sD/oc/BH/hudL/APk6vhSivWpeO/jRQpUqFHxT48pUaNOFKlShxNmsYU6dOKhThCKxNoxhFKMUtEkkjklwTwfOUpz4YyGU5ycpSllWDblKTvKTbo3bbbbfVj5HaWaed8GW5ubm7mIG1Wnu55LmdlUcIrTSuVQcIpCDhRTKKK/KG222222223dtt6ttvdt7s+nCiiikAVXu/wDj1uf+veb/ANFtViq93/x63P8A17zf+i2qofHH/FH80B9DWZH2O15H/HtB/wCilqzuHqPzqhaf8ett/wBe8P8A6LWrFfzvP45f4pfmz9Hi7xi+6X5E+4eo/OjcPUfnUFFSMnJUghtjKysjK4DI6MMMjqeHRwcMp4IryfxL4a/ssvqGnqX0tmHmxAl3012PCsSSWsnbiGU5MJIhlONjH1Gl4wQyq6spR0dQySIwwyOjZVkYcMpBBFevk+cYnJ8T7aj79Gdo4nDSbUK8E+9nyVYXbpVUm4NtNTpyqU58eNwVLG0uSfuzjd06qV5Ql+sZWSnG+q1TUlGS+fqK6/xL4aOmFtQ09WfS3b97Fyz6bI7cIerNZMTiKU8wnEUpxsauQr9lwGPw2ZYani8LPnpT0aek6c0k5UqsbvkqQurq7TTjODlCUZS+JxGHq4arKlWjyyjr3jKL2lF9Yvo+jTTSkmkUUUV2GIUUUUAFFFFABRRRQAVXu/8Aj1uf+veb/wBFtViq93/x63P/AF7zf+i2qofHH/FH80B9AWn/AB623/XvD/6LWrFULW6tRbW4N1bHEEIytxCwOI1HDK5Vh6MpII5BIqf7Xa/8/Nv/AN/o/wD4qv56nCfPL3J/E/svv6ea+8/RYSXLHVfDHquy/wA0WKKr/a7X/n5t/wDv9H/8VR9rtf8An5t/+/0f/wAVU8k/5J/+Av8Ay8195XNH+Zfev66r7yxRVf7Xa/8APzb/APf6P/4qj7Xa/wDPzb/9/o//AIqjkn/JP/wF/wCXmvvDmj/MvvX9dV95ZzwQQrKysjo4DI6MMMjqeGRgSGU8EV5Z4l8N/wBmFr/T1ZtLZv3sPLPprtjCsTy9m7HEUpyYSRFKcFGr0r7Xa/8APzb/APf6P/4qj7XaEMrXFq6spV0eWJkdGGGR1LEMrDhlIIIr1smzXGZPiVWoxnOjPljicO1JQr00+9nyVYXbpVUm4NtNSpznCfFjcJQxtLkm4xmrunUVnKEnb/wKL0Uo3SkrbSUZR8HorpvEmjW2ms19YTwvpzsPMhE0bSWEjE/Kfmy1mx4ikPMJxHIcbWrkftdr/wA/Nv8A9/o//iq/ZcDjKOY4anisK5Tp1FqnG06c1bmpVY68tSF1dXaacZQcoSjKXxdehUw1WVGqkpR1TTvGcX8M4P7UZdHve8WlJNKxRVf7Xa/8/Nv/AN/o/wD4qj7Xa/8APzb/APf6P/4quzll/LL7n/XVfeY3/r+vVfeWKKr/AGu1/wCfm3/7/R//ABVH2u1/5+bf/v8AR/8AxVHLL+WX3P8ArqvvC/8AX9eq+8sUVX+12v8Az82//f6P/wCKo+12v/Pzb/8Af6P/AOKo5Zfyy+5/11X3hf8Ar+vVfeWKr3f/AB63P/XvN/6Laj7Xa/8APzb/APf6P/4qoLq6tWtrhRc22WglAzPCoyY2AyzOFUepJAHUkCnCMuaPuv4o9H3X+aFdd1/X/Do//9k=)"; -d=function(){function e(e,t){this.menuItems=[];this.menuOpen=true;var r=t.configuration.defaultUI||{};if(document&&!r.disable){var n=document.createElement("style");n.type="text/css";document.head.insertBefore(n,document.head.firstChild);var i=n.sheet;i.insertRule("\n .argon-button {\n background-image: "+l+";\n width: 144px;\n height: 144px;\n }\n ",0);this.element=document.createElement("div");this.element.id="argon-ui";this.element.style.bottom="0";this.element.style.right="0";this.element.style["userSelect"]="none";this.element.style.webkitUserSelect="none";this.element.style.zIndex="10";e.element.appendChild(this.element);this.background=document.createElement("div");this.background.style.position="absolute";this.background.style.bottom="-150px";this.background.style.right="-150px";this.background.style.width="300px";this.background.style.height="300px";this.background.style.opacity="0";this.background.style.transform="scale(0.1)";this.background.style.transition="transform 0.3s, opacity 0.3s";this.background.style.borderRadius="150px";this.background.style.backgroundColor="#eeb211";this.background.style.zIndex="-1";this.element.appendChild(this.background);var a=document.createElement("div");this.element.appendChild(a);a.className="argon-button";a.style.position="absolute";a.style.bottom="0";a.style.right="0";a.style.transform="scale(0.36)";a.style.transformOrigin="110% 110%";a.style.borderRadius="72px";a.style.cursor="pointer";a.style.pointerEvents="auto";a.style.zIndex="1";this.addMenuItem();if(s.detectIOS){this.addMenuItem(u,"Open in Argon",function(){s.openInArgonApp()})}this.addMenuItem(c,"Toggle VR",function(){});this.addMenuItem(f,"Select Reality Viewer...",function(){});this.addMenuItem();this.onSelect(a,this.toggleMenu.bind(this));this.toggleMenu()}}e.prototype.addMenuItem=function(e,t,r){if(!e||!t)return this.menuItems.push(null);if(this.element){var n=document.createElement("div");n.style.position="absolute";n.style.bottom="-20px";n.style.right="-20px";n.style.textAlign="left";n.style.width="40px";n.style.height="40px";n.style.fontFamily="Arial Black";n.style.color="black";n.style.cursor="default";n.style.textShadow="-1px -1px 0px #545454, 1px -1px 0px #545454, -1px 1px 0px #545454, 1px 1px 0px #545454";n.style.transition="transform 0.3s ease 0.1s, opacity 0.3s ease 0.1s";n.style.opacity="0";n.style.pointerEvents="none";n.style.transformOrigin="50% 50%";n.style.backgroundImage=e;n.style.backgroundSize="100% 100%";n.style.backgroundRepeat="no-repeat";this.element.appendChild(n);this.menuItems.push(n);n.title=t;if(r)this.onSelect(n,r);n.addEventListener("mouseenter",function(){n.style.color="#eeb211"});n.addEventListener("mouseleave",function(){n.style.color="white"})}};e.prototype.onSelect=function(e,t){e.addEventListener("touchend",function(e){e.preventDefault();e.stopPropagation();t()});e.addEventListener("click",function(e){e.stopPropagation();t()})};e.prototype.toggleMenu=function(){if(this.element){if(this.menuOpen){this.menuItems.forEach(function(e,t){if(!e)return;e.style.transform="scale(0.2)";e.style.opacity="0";e.style.pointerEvents="none"});this.background.style.opacity="0";this.background.style.transform="scale(0.1)";this.menuOpen=false}else{var e=this.menuItems.length;this.menuItems.forEach(function(t,r){if(!t)return;var n=r/(e-1)*(Math.PI/2+Math.PI/8)-Math.PI/16;var i=100;var a=i*Math.cos(n);var o=i*Math.sin(n);t.style.transform="scale(1) translateX("+-a+"px) translateY("+-o+"px)";t.style.opacity="1";t.style.pointerEvents="auto"});this.background.style.opacity="0.7";this.background.style.transform="scale(1)";this.menuOpen=true}}};e=n([i.inject(a.ViewService,o.SessionService)],e);return e}();e("DefaultUIService",d)}}});e.register("d",["e"],function(e,t){"use strict";var r=t&&t.id;var n;var i,a;function o(e){var t=Date.now();var r=Math.max(0,16-(t-a));var n=setTimeout(function(){e(t+r)},r);a=t+r;return n}return{setters:[function(e){n=e}],execute:function(){i=function(){function e(){this.frameNumbers=new WeakMap}e.prototype.requestFrame=function(e){var t=this;if(typeof requestAnimationFrame!=="undefined"&&typeof performance!=="undefined"){this.navigationStartDate=this.navigationStartDate||n.JulianDate.fromDate(new Date(performance.timing.navigationStart));requestAnimationFrame(function(r){var i=n.JulianDate.addSeconds(t.navigationStartDate,r/1e3,new n.JulianDate(0,0));e(i,t.getNextFrameNumber(e))})}else{o(function(r){var i=n.JulianDate.fromDate(new Date(r));e(i,t.getNextFrameNumber(e))})}};e.prototype.getNextFrameNumber=function(e){var t=this.frameNumbers.get(e)||0;this.frameNumbers.set(e,t+1);return t};return e}();e("TimerService",i);a=0}}});e.register("f",["c","10","a","11","d","12","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__extends||function(e,t){for(var r in t)if(t.hasOwnProperty(r))e[r]=t[r];function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)};var i=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u,f,c,l;var d;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e},function(e){l=e}],execute:function(){d=function(e){n(t,e);function t(t,r,n){e.call(this);this.sessionService=t;this.deviceService=r;this.timer=n;this.type="empty"}t.prototype.load=function(e,t){var r=this;var n=this.sessionService.addManagedSessionPort(e.uri);var i=this.sessionService.createSessionPort();var a=true;i.on["ar.context.update"]=function(){};i.connectEvent.addEventListener(function(){var e=function(t,n){if(a){r.deviceService.update({orientation:true});var o=r.deviceService.state;var s=o.time;var u=l.getSerializedEntityPose(r.deviceService.displayEntity,s);var f=o.viewport;var c=o.subviews;var d=o.geolocationAccuracy;var h=o.geolocationAltitudeAccuracy;if(u){var v={time:s,pose:u,viewport:f,subviews:c,geolocationAccuracy:d,geolocationAltitudeAccuracy:h};i.send("ar.reality.viewState",v)}r.timer.requestFrame(e)}};r.timer.requestFrame(e)});i.closeEvent.addEventListener(function(){a=false});t(n);var s=this.sessionService.createSynchronousMessageChannel();n.open(s.port1,this.sessionService.configuration);i.open(s.port2,{role:o.Role.REALITY_VIEWER})};t=i([a.inject(s.SessionService,u.DeviceService,f.TimerService)],t);return t}(c.RealityLoader);e("EmptyRealityLoader",d)}}});e.register("13",["c","14","a","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__extends||function(e,t){for(var r in t)if(t.hasOwnProperty(r))e[r]=t[r];function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)};var i=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f,c,l,d,h,v,p,m,w;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){(function(e){e[e["SUCCESS"]=100]="SUCCESS";e[e["INIT_ERROR"]=-1]="INIT_ERROR";e[e["INIT_DEVICE_NOT_SUPPORTED"]=-2]="INIT_DEVICE_NOT_SUPPORTED";e[e["INIT_NO_CAMERA_ACCESS"]=-3]="INIT_NO_CAMERA_ACCESS";e[e["INIT_LICENSE_ERROR_MISSING_KEY"]=-4]="INIT_LICENSE_ERROR_MISSING_KEY";e[e["INIT_LICENSE_ERROR_INVALID_KEY"]=-5]="INIT_LICENSE_ERROR_INVALID_KEY";e[e["INIT_LICENSE_ERROR_NO_NETWORK_PERMANENT"]=-6]="INIT_LICENSE_ERROR_NO_NETWORK_PERMANENT";e[e["INIT_LICENSE_ERROR_NO_NETWORK_TRANSIENT"]=-7]="INIT_LICENSE_ERROR_NO_NETWORK_TRANSIENT";e[e["INIT_LICENSE_ERROR_CANCELED_KEY"]=-8]="INIT_LICENSE_ERROR_CANCELED_KEY";e[e["INIT_LICENSE_ERROR_PRODUCT_TYPE_MISMATCH"]=-9]="INIT_LICENSE_ERROR_PRODUCT_TYPE_MISMATCH";e[e["INIT_EXTERNAL_DEVICE_NOT_DETECTED"]=-10]="INIT_EXTERNAL_DEVICE_NOT_DETECTED"})(f||(f={}));e("VuforiaInitResult",f);(function(e){e[e["MaxSimultaneousImageTargets"]=0]="MaxSimultaneousImageTargets";e[e["MaxSimultaneousObjectTargets"]=1]="MaxSimultaneousObjectTargets";e[e["DelayedLoadingObjectDatasets"]=2]="DelayedLoadingObjectDatasets"})(c||(c={}));e("VuforiaHint",c);l=function(){function e(){this.stateUpdateEvent=new u.Event}return e}();e("VuforiaServiceDelegateBase",l);d=function(e){n(t,e);function t(){e.apply(this,arguments)}t.prototype.isAvailable=function(){return false};t.prototype.setHint=function(e,t){return true};t.prototype.decryptLicenseKey=function(e,t){return Promise.resolve(undefined)};t.prototype.init=function(e){return Promise.resolve(f.SUCCESS)};t.prototype.deinit=function(){};t.prototype.cameraDeviceInitAndStart=function(){return true};t.prototype.cameraDeviceSetFlashTorchMode=function(e){return true};t.prototype.objectTrackerInit=function(){return true};t.prototype.objectTrackerCreateDataSet=function(e){return""};t.prototype.objectTrackerDestroyDataSet=function(e){return true};t.prototype.objectTrackerActivateDataSet=function(e){return true};t.prototype.objectTrackerDeactivateDataSet=function(e){return true};t.prototype.dataSetFetch=function(e){return Promise.resolve(undefined)};t.prototype.dataSetLoad=function(e){return Promise.resolve()};return t}(l);e("VuforiaServiceDelegate",d);h=function(){function e(e,t,r){var n=this;this.sessionService=e;this.focusService=t;this.delegate=r;this._sessionSwitcherCommandQueue=new u.CommandQueue;this._sessionCommandQueue=new WeakMap;this._sessionInitOptions=new WeakMap;this._sessionInitPromise=new WeakMap;this._sessionIsInitialized=new WeakMap;this._sessionCreatedDataSets=new WeakMap;this._sessionActivatedDataSets=new WeakMap;if(e.isRealityManager){this._sessionSwitcherCommandQueue.errorEvent.addEventListener(function(e){n.sessionService.errorEvent.raiseEvent(e)});e.connectEvent.addEventListener(function(e){var t=new u.CommandQueue;t.errorEvent.addEventListener(function(t){n.sessionService.errorEvent.raiseEvent(t);e.sendError(t)});n._sessionCommandQueue.set(e,t);var i=new Set;n._sessionCreatedDataSets.set(e,i);var a=new Set;n._sessionActivatedDataSets.set(e,a);e.on["ar.vuforia.isAvailable"]=function(){return Promise.resolve({available:r.isAvailable()})};e.on["ar.vuforia.init"]=function(i){if(!r.isAvailable())throw new Error("Vuforia is not supported");if(n._sessionIsInitialized.get(e))throw new Error("Vuforia has already been initialized");if(!i.key&&!i.encryptedLicenseData)throw new Error("Expected `encryptedLicenseData` field. You can encrypt your Vuforia license key at http://docs.argonjs.io/start/vuforia-pgp-encryptor");var a=i.key?Promise.resolve(i.key):r.decryptLicenseKey(i.encryptedLicenseData,e);return a.then(function(r){n._sessionInitOptions.set(e,{key:r});var i=t.push(function(){return n._init(e).then(function(){n._sessionIsInitialized.set(e,true)})},n._controllingSession===e);if(n.focusService.getSession()===e){n._setControllingSession(e)}n._sessionInitPromise.set(e,i);return i})};e.on["ar.vuforia.objectTrackerCreateDataSet"]=function(a){var o=a.url;return t.push(function(){var e=r.objectTrackerCreateDataSet(o);if(e){i.add(e);return Promise.resolve({id:e})}throw new Error("Unable to create DataSet")},n._controllingSession===e)};e.on["ar.vuforia.objectTrackerActivateDataSet"]=function(i){var o=i.id;return t.push(function(){if(r.objectTrackerActivateDataSet(o)){a.add(o);e.send("ar.vuforia.objectTrackerActivateDataSetEvent",{id:o});return}throw new Error("Unable to activate DataSet ("+o+")")},n._controllingSession===e)};e.on["ar.vuforia.objectTrackerDeactivateDataSet"]=function(i){var o=i.id;return t.push(function(){if(r.objectTrackerDeactivateDataSet(o)){a.delete(o);e.send("ar.vuforia.objectTrackerDeactivateDataSetEvent",{id:o});return}throw new Error("Unable to deactivate DataSet ("+o+")")},n._controllingSession===e)};e.on["ar.vuforia.dataSetFetch"]=function(i){var a=i.id;return t.push(function(){return r.dataSetFetch(a)},n._controllingSession===e)};e.on["ar.vuforia.dataSetLoad"]=function(i){var a=i.id;return t.push(function(){return r.dataSetLoad(a)},n._controllingSession===e)};e.closeEvent.addEventListener(function(){if(n._controllingSession===e){t.clear();t.push(function(){n._cleanupSession(e);setTimeout(function(){n._ensureActiveSession()},2e3)},true)}else{n._cleanupSession(e)}})});t.sessionFocusEvent.addEventListener(function(e){var t=e.current;if(t&&n._sessionInitOptions.get(t)){n._setControllingSession(t)}})}}e.prototype.isAvailable=function(){return this.sessionService.manager.request("ar.vuforia.isAvailable").then(function(e){return e.available})};e.prototype.initWithUnencryptedKey=function(e,t){var r=this;if(!t)this.sessionService.ensureIsRealityManager();return this.sessionService.manager.request("ar.vuforia.init",e).then(function(){return new v(r.sessionService.manager)})};e.prototype.init=function(e){var t=this;if(!e.encryptedLicenseData||typeof e.encryptedLicenseData!=="string")throw new Error("options.encryptedLicenseData is required.");return this.sessionService.manager.request("ar.vuforia.init",e).then(function(){return new v(t.sessionService.manager)})};e.prototype._ensureActiveSession=function(){console.log("VuforiaService: Ensuring an active session is in control.");if(this._controllingSession&&this._controllingSession.isConnected)return;this._selectControllingSession()};e.prototype._selectControllingSession=function(){var e=this.focusService.getSession();if(e&&this._sessionInitOptions.get(e)){this._setControllingSession(e);return}for(var t=0,r=this.sessionService.managedSessions;t=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u,f;var c;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e}],execute:function(){c=function(e){n(t,e);function t(t,r){e.call(this);this.sessionService=t;this.vuforiaDelegate=r;this.type="live-video"}t.prototype.load=function(e,t){var r=this;var n=this.sessionService.addManagedSessionPort(e.uri);var i=this.sessionService.createSessionPort();i.on["ar.context.update"]=function(){};i.connectEvent.addEventListener(function(){var e=r.vuforiaDelegate.stateUpdateEvent.addEventListener(function(e){i.send("ar.reality.viewState",e)});r.vuforiaDelegate.videoEnabled=true;r.vuforiaDelegate.trackingEnabled=true;i.closeEvent.addEventListener(function(){e();r.vuforiaDelegate.videoEnabled=false;r.vuforiaDelegate.trackingEnabled=false})});t(n);var a=this.sessionService.createSynchronousMessageChannel();n.open(a.port1,this.sessionService.configuration);i.open(a.port2,{role:o.Role.REALITY_VIEWER})};t=i([a.inject(s.SessionService,f.VuforiaServiceDelegate)],t);return t}(u.RealityLoader);e("LiveVideoRealityLoader",c)}}});e.register("16",["c","e","10","a","12","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f;var c,l,d,h,v;function p(e){var t=e;return a.defined(t.id)?t.id:""+t}return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e}],execute:function(){(function(e){e[e["KNOWN"]=1]="KNOWN";e[e["FOUND"]=2]="FOUND";e[e["LOST"]=4]="LOST"})(c||(c={}));e("PoseStatus",c);l=new a.Cartesian3(0,0);d=new a.Quaternion(0,0);h=new a.Cartesian3(0,0);v=function(){function e(e,t){var r=this;this.sessionService=e;this.realityService=t;this.updateEvent=new f.Event;this.renderEvent=new f.Event;this.subscribedEntities=new a.EntityCollection;this.entities=new a.CompositeEntityCollection;this.localOriginChangeEvent=new f.Event;this.user=new a.Entity({id:"ar.user",name:"user",position:new a.ConstantPositionProperty(undefined,a.ReferenceFrame.FIXED),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.localOriginEastNorthUp=new a.Entity({id:"ar.localENU",name:"localOriginENU",position:new a.ConstantPositionProperty(undefined,a.ReferenceFrame.FIXED),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.localOriginEastUpSouth=new a.Entity({id:"ar.localEUS",name:"localOriginEUS",position:new a.ConstantPositionProperty(a.Cartesian3.ZERO,this.localOriginEastNorthUp),orientation:new a.ConstantProperty(a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,Math.PI/2))});this.maxDeltaTime=1/3*1e3;this._frame={time:new a.JulianDate(0,0),systemTime:0,deltaTime:0};this._defaultReferenceFrame=this.localOriginEastNorthUp;this._entityPoseCache={};this._entityPoseMap=new Map;this._subscribedEntities=new WeakMap;this._updatingEntities=new Set;this._knownEntities=new Set;this._frameIndex=0;this.entities.addCollection(this.subscribedEntities);this.subscribedEntities.add(this.user);if(this.sessionService.isRealityManager||this.sessionService.isRealityViewer){this.realityService.viewStateEvent.addEventListener(function(e){r._update({time:e.time,index:r._frameIndex++,reality:r.realityService.getCurrent(),entities:{},view:e})});this.realityService.frameEvent.addEventListener(function(e){r._update(e)});this.sessionService.connectEvent.addEventListener(function(e){r._subscribedEntities.set(e,new Set);e.on["ar.context.subscribe"]=function(t){var n=t.id;var i=r._subscribedEntities.get(e);if(i)i.add(n)}})}else{this.sessionService.manager.on["ar.context.update"]=function(e){r._update(e)}}}Object.defineProperty(e.prototype,"frame",{get:function(){if(!a.defined(this.serializedFrameState))throw new Error("A frame state has not yet been received");return this._frame},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"serializedFrameState",{get:function(){return this._serializedState},enumerable:true,configurable:true});e.prototype.getTime=function(){return this.frame.time};e.prototype.setDefaultReferenceFrame=function(e){this._defaultReferenceFrame=e};e.prototype.getDefaultReferenceFrame=function(){return this._defaultReferenceFrame};e.prototype.subscribeToEntityById=function(e){this.sessionService.manager.send("ar.context.subscribe",{id:e});return this.subscribedEntities.getOrCreateEntity(e)};e.prototype.getEntityPose=function(e,t){if(t===void 0){t=this._defaultReferenceFrame}var r=this.getTime();var n=e.id+"@"+p(t);var i=this._entityPoseMap.get(n);if(!a.defined(i)){i={position:new a.Cartesian3,orientation:new a.Quaternion,time:a.JulianDate.clone(r),poseStatus:0};this._entityPoseMap.set(n,i)}else{a.JulianDate.clone(r,i.time)}var o=f.getEntityPositionInReferenceFrame(e,r,t,i.position);var s=f.getEntityOrientationInReferenceFrame(e,r,t,i.orientation);var u=o&&s;var l=0;var d=i.poseStatus;if(u){l|=c.KNOWN}if(u&&!(d&c.KNOWN)){l|=c.FOUND}else if(!u&&d&c.KNOWN){l|=c.LOST}i.poseStatus=l;return i};e.prototype.getCurrentEntityState=function(e,t){console.warn("getCurrentEntityState is deprecated. Use getEntityPose instead.");return this.getEntityPose(e,t)};e.prototype._update=function(e){var t=this;if(this.sessionService.isRealityManager){delete e.entities[this.user.id];this._entityPoseCache={};for(var r=0,n=this.sessionService.managedSessions;r25e6)){var o=this.localOriginEastNorthUp.position;var s=this.localOriginEastNorthUp.orientation;o.setValue(r,t);if(t===a.ReferenceFrame.FIXED){var u=a.Transforms.headingPitchRollQuaternion(r,0,0,0,undefined,d);s.setValue(u)}else{s.setValue(a.Quaternion.IDENTITY)}this.localOriginChangeEvent.raiseEvent(undefined)}};e.prototype._sendUpdateForSession=function(e,t){var r=this;var n={};for(var i in e.entities){n[i]=e.entities[i]}var o=this._subscribedEntities.get(t);o.forEach(function(t){r._addEntityAndAncestorsToPoseMap(n,t,e.time)});var s={reality:e.reality,index:e.index,time:e.time,view:e.view,entities:n,sendTime:a.JulianDate.now()};t.send("ar.context.update",s)};e.prototype._addEntityAndAncestorsToPoseMap=function(e,t,r){if(!a.defined(this._entityPoseCache[t])){var n=this.subscribedEntities.getById(t);if(!n)return;this._entityPoseCache[t]=f.getSerializedEntityPose(n,r);if(n.position&&n.position.referenceFrame instanceof a.Entity){var i=p(n.position.referenceFrame);this._addEntityAndAncestorsToPoseMap(e,i,r)}}e[t]=this._entityPoseCache[t]};e=n([i.inject(s.SessionService,u.RealityService)],e);return e}();e("ContextService",v)}}});e.registerDynamic("17",[],true,function(e,t,r){var n,i=this||self,a=i;(function(e,t){e(function(){"use strict";var e={};e.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6",Dell:"Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b",Samsung:"Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350", -LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533",Asus:"Asus.*Galaxy|PadFone.*Mobile",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo 3DS",Amoi:"Amoi",INQ:"INQ",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android.*\\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+",Skyfire:"Skyfire",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari",Tizen:"Tizen",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Puffin:"Puffin",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:"Firefox/[VER]",Fennec:"Fennec/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]","UC Browser":"UC Browser[VER]",MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}};e.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var r=Object.prototype.hasOwnProperty,n;e.FALLBACK_PHONE="UnknownPhone";e.FALLBACK_TABLET="UnknownTablet";e.FALLBACK_MOBILE="UnknownMobile";n="isArray"in Array?Array.isArray:function(e){return Object.prototype.toString.call(e)==="[object Array]"};function i(e,t){return e!=null&&t!=null&&e.toLowerCase()===t.toLowerCase()}function a(e,t){var r,n,i=e.length;if(!i||!t){return false}r=t.toLowerCase();for(n=0;n=0){s=s.substring(0,c)+"([\\w._\\+]+)"+s.substring(c+5)}a[u]=new RegExp(s,"i")}l.props[i]=a}}o(l.oss);o(l.phones);o(l.tablets);o(l.uas);o(l.utils);l.oss0={WindowsPhoneOS:l.oss.WindowsPhoneOS,WindowsMobileOS:l.oss.WindowsMobileOS}})();e.findMatch=function(e,t){for(var n in e){if(r.call(e,n)){if(e[n].test(t)){return n}}}return null};e.findMatches=function(e,t){var n=[];for(var i in e){if(r.call(e,i)){if(e[i].test(t)){n.push(i)}}}return n};e.getVersionStr=function(t,n){var i=e.mobileDetectRules.props,a,o,s,u;if(r.call(i,t)){a=i[t];s=a.length;for(o=0;o1){e=t[0]+".";t.shift();e+=t.join("")}return Number(e)};e.isMobileFallback=function(t){return e.detectMobileBrowsers.fullPattern.test(t)||e.detectMobileBrowsers.shortPattern.test(t.substr(0,4))};e.isTabletFallback=function(t){return e.detectMobileBrowsers.tabletPattern.test(t)};e.prepareDetectionCache=function(r,n,i){if(r.mobile!==t){return}var a,o,u;o=e.findMatch(e.mobileDetectRules.tablets,n);if(o){r.mobile=r.tablet=o;r.phone=null;return}a=e.findMatch(e.mobileDetectRules.phones,n);if(a){r.mobile=r.phone=a;r.tablet=null;return}if(e.isMobileFallback(n)){u=s.isPhoneSized(i);if(u===t){r.mobile=e.FALLBACK_MOBILE;r.tablet=r.phone=null}else if(u){r.mobile=r.phone=e.FALLBACK_PHONE;r.tablet=null}else{r.mobile=r.tablet=e.FALLBACK_TABLET;r.phone=null}}else if(e.isTabletFallback(n)){r.mobile=r.tablet=e.FALLBACK_TABLET;r.phone=null}else{r.mobile=r.tablet=r.phone=null}};e.mobileGrade=function(e){var t=e.mobile()!==null;if(e.os("iOS")&&e.version("iPad")>=4.3||e.os("iOS")&&e.version("iPhone")>=3.1||e.os("iOS")&&e.version("iPod")>=3.1||e.version("Android")>2.1&&e.is("Webkit")||e.version("Windows Phone OS")>=7||e.is("BlackBerry")&&e.version("BlackBerry")>=6||e.match("Playbook.*Tablet")||e.version("webOS")>=1.4&&e.match("Palm|Pre|Pixi")||e.match("hp.*TouchPad")||e.is("Firefox")&&e.version("Firefox")>=12||e.is("Chrome")&&e.is("AndroidOS")&&e.version("Android")>=4||e.is("Skyfire")&&e.version("Skyfire")>=4.1&&e.is("AndroidOS")&&e.version("Android")>=2.3||e.is("Opera")&&e.version("Opera Mobi")>11&&e.is("AndroidOS")||e.is("MeeGoOS")||e.is("Tizen")||e.is("Dolfin")&&e.version("Bada")>=2||(e.is("UC Browser")||e.is("Dolfin"))&&e.version("Android")>=2.3||(e.match("Kindle Fire")||e.is("Kindle")&&e.version("Kindle")>=3)||e.is("AndroidOS")&&e.is("NookTablet")||e.version("Chrome")>=11&&!t||e.version("Safari")>=5&&!t||e.version("Firefox")>=4&&!t||e.version("MSIE")>=7&&!t||e.version("Opera")>=10&&!t){return"A"}if(e.os("iOS")&&e.version("iPad")<4.3||e.os("iOS")&&e.version("iPhone")<3.1||e.os("iOS")&&e.version("iPod")<3.1||e.is("Blackberry")&&e.version("BlackBerry")>=5&&e.version("BlackBerry")<6||e.version("Opera Mini")>=5&&e.version("Opera Mini")<=6.5&&(e.version("Android")>=2.3||e.is("iOS"))||e.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||e.version("Opera Mobi")>=11&&e.is("SymbianOS")){return"B"}if(e.version("BlackBerry")<5||e.match("MSIEMobile|Windows CE.*Mobile")||e.version("Windows Mobile")<=5.2){return"C"}return"C"};e.detectOS=function(t){return e.findMatch(e.mobileDetectRules.oss0,t)||e.findMatch(e.mobileDetectRules.oss,t)};e.getDeviceSmallerSide=function(){return window.screen.width=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o;var s;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e}],execute:function(){s=function(){function e(e){var t=this;this.sessionService=e;this.focusEvent=new o.Event;this.blurEvent=new o.Event;this._hasFocus=false;this._sessionFocusEvent=new o.Event;e.manager.on["ar.focus.state"]=function(e){t._setFocus(e.state)};if(e.isRealityManager){e.manager.connectEvent.addEventListener(function(){setTimeout(function(){if(!t._session)t.setSession(t.sessionService.manager)})})}}Object.defineProperty(e.prototype,"hasFocus",{get:function(){return this._hasFocus},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"sessionFocusEvent",{get:function(){this.sessionService.ensureIsRealityManager();return this._sessionFocusEvent},enumerable:true,configurable:true});e.prototype.getSession=function(){this.sessionService.ensureIsRealityManager();return this._session};e.prototype.setSession=function(e){this.sessionService.ensureIsRealityManager();if(e&&!e.isConnected)throw new Error("Only a connected session can be granted focus");var t=this._session;if(t!==e){if(t)t.send("ar.focus.state",{state:false});if(e)e.send("ar.focus.state",{state:true});this._session=e;this.sessionFocusEvent.raiseEvent({ -previous:t,current:e})}};e.prototype.whenSessionHasFocus=function(e){var t=this;this.sessionService.ensureIsRealityManager();return new Promise(function(r){var n=t.sessionFocusEvent.addEventListener(function(t){var i=t.current;if(i===e){n();r()}})})};e.prototype._setFocus=function(e){if(this._hasFocus!==e){this._hasFocus=e;if(e){this.focusEvent.raiseEvent(undefined)}else{this.blurEvent.raiseEvent(undefined)}}};e=n([i.inject(a.SessionService)],e);return e}();e("FocusService",s)}}});(function(){var t=e.amdDefine;t("18",["exports","3"],function(e,t){"use strict";e.__esModule=true;var r=Object.assign||function(e){for(var t=1;t=a.length)break;u=a[s++]}else{s=a.next();if(s.done)break;u=s.value}var f=u;Object.defineProperty(i,f,{value:e[f],writable:true})}};return r?n(r):n}return r}function l(){return true}function d(){}function h(e){if(e===undefined){e={}}else if(typeof e==="function"){e={validate:e}}if(!e.validate){e.validate=l}if(!e.compose){e.compose=d}return e}function v(e){return function(t){var r=e(t);return r===true}}function p(e,t){return function(r){var n=t(r);if(n!==true){throw new Error(n||e+" was not correctly implemented.")}}}function m(e,t){t=h(t);var r=function r(n){var i=typeof n==="function"?n.prototype:n;t.compose(i);r.assert(i);Object.defineProperty(i,"protocol:"+e,{enumerable:false,configurable:false,writable:false,value:true})};r.validate=v(t.validate);r.assert=p(e,t.validate);return r}m.create=function(e,t){t=h(t);var r="protocol:"+e;var n=function r(n){var i=m(e,t);return n?i(n):i};n.decorates=function(e){return e[r]===true};n.validate=v(t.validate);n.assert=p(e,t.validate);return n}})})();(function(){var t=e.amdDefine;t("3",["exports"],function(e){"use strict";e.__esModule=true;e.AggregateError=t;e.initializePAL=a;function t(e,t,r){if(t){if(t.innerError&&r){return t}if(t.stack){e+="\n------------------------------------------------\ninner error: "+t.stack}}var n=new Error(e);if(t){n.innerError=t}return n}var r={};e.FEATURE=r;var n={noop:function e(){},eachModule:function e(){}};e.PLATFORM=n;n.global=function(){if(typeof self!=="undefined"){return self}if(typeof global!=="undefined"){return global}return new Function("return this")()}();var i={};e.DOM=i;function a(e){if(typeof Object.getPropertyDescriptor!=="function"){Object.getPropertyDescriptor=function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);var n=Object.getPrototypeOf(e);while(typeof r==="undefined"&&n!==null){r=Object.getOwnPropertyDescriptor(n,t);n=Object.getPrototypeOf(n)}return r}}e(n,r,i)}})})();(function(){var t=e.amdDefine;t("c",["exports","18","3"],function(e,t,r){"use strict";e.__esModule=true;var n;var i=function(){function e(e,t){for(var r=0;r=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f,c,l,d,h,v,p,m;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){f=function(){function e(t){var r=this;this.uri=t;this._connectEvent=new u.Event;this.closeEvent=new u.Event;this.errorEvent=new u.Event;this.on={};this._isOpened=false;this._isConnected=false;this._isClosed=false;this.on[e.OPEN]=function(e){if(!e)throw new Error("Session did not provide a configuration");if(r._isConnected)throw new Error("Session has already connected!");r.info=e;r._isConnected=true;r._connectEvent.raiseEvent(undefined)};this.on[e.CLOSE]=function(){r._isClosed=true;r._isConnected=false;if(r.messagePort&&r.messagePort.close)r.messagePort.close();r.closeEvent.raiseEvent(undefined)};this.on[e.ERROR]=function(e){var t=new Error("Session Error: "+e.message);if(e.stack)t["stack"]=e.stack;r.errorEvent.raiseEvent(t)};this.errorEvent.addEventListener(function(e){if(r.errorEvent.numberOfListeners===1)console.error(e)})}Object.defineProperty(e.prototype,"connectEvent",{get:function(){if(this._isConnected)throw new Error("The connectEvent only fires once and the session is already connected.");return this._connectEvent},enumerable:true,configurable:true});e.prototype.supportsProtocol=function(e,t){if(!this._isConnected)throw new Error("Session has not yet connected");var r=this.info.protocols;if(!r)return false;var n=false;var i=new Set;r.forEach(function(t){if(t.indexOf(e)!==-1){var r=+t.split("@v")[1]||0;i.add(r)}});if(t){if(Array.isArray(t)){t.forEach(function(e){if(i.has(e)){n=true}})}else{if(i.has(t)){n=true}}}else if(!t){n=true}return n};e.prototype.open=function(t,r){var n=this;if(this._isClosed)return;if(this._isOpened)throw new Error("Session can only be opened once");if(!r)throw new Error("Session options must be provided");this.messagePort=t;this._isOpened=true;this.messagePort.onmessage=function(e){if(n._isClosed)return;var t=e.data[0];var r=e.data[1];var i=e.data[2]||{};var a=e.data[3];var o=n.on[r];if(o&&!a){try{var s=o(i,e);if(s)console.warn("Handler for "+r+" returned an unexpected response")}catch(e){n.sendError(e);n.errorEvent.raiseEvent(e)}}else if(o){var s=new Promise(function(t){return t(o(i,e))});Promise.resolve(s).then(function(e){if(n._isClosed)return;n.send(r+":resolve:"+t,e)}).catch(function(e){if(n._isClosed)return;var i;if(typeof e==="string")i=e;else if(typeof e.message==="string")i=e.message;n.send(r+":reject:"+t,{reason:i})})}else{var u="Unable to handle message "+r;if(a){n.send(r+":reject:"+t,{reason:u})}else{n.sendError({message:u})}n.errorEvent.raiseEvent(new Error("No handlers are available for topic "+r))}};this.send(e.OPEN,r)};e.prototype.send=function(e,t){if(!this._isOpened)throw new Error("Session must be open to send messages");if(this._isClosed)return false;var r=a.createGuid();this.messagePort.postMessage([r,e,t]);return true};e.prototype.sendError=function(t){var r=t;if(r instanceof Error){r={message:r.message,stack:r["stack"]}}return this.send(e.ERROR,r)};e.prototype.request=function(e,t){var r=this;if(!this._isOpened||this._isClosed)throw new Error("Session must be open to make requests");var n=a.createGuid();var i=e+":resolve:"+n;var o=e+":reject:"+n;var s=new Promise(function(t,n){r.on[i]=function(e){delete r.on[i];delete r.on[o];t(e)};r.on[o]=function(t){delete r.on[i];delete r.on[o];console.warn("Request '"+e+"' rejected with reason:\n"+t.reason);n(new Error(t.reason))}});this.messagePort.postMessage([n,e,t||{},true]);return s};e.prototype.close=function(){if(this._isClosed)return;if(this._isOpened){this.send(e.CLOSE)}this._isClosed=true;this._isConnected=false;if(this.messagePort&&this.messagePort.close)this.messagePort.close();this.closeEvent.raiseEvent(undefined)};Object.defineProperty(e.prototype,"isConnected",{get:function(){return this._isConnected},enumerable:true,configurable:true});e.OPEN="ar.session.open";e.CLOSE="ar.session.close";e.ERROR="ar.session.error";return e}();e("SessionPort",f);c=function(){function e(){}e.prototype.create=function(e){return new f(e)};return e}();e("SessionPortFactory",c);l=function(){function e(){}return e}();e("ConnectService",l);d=function(){function e(e,t,r,n){var i=this;this.configuration=e;this.connectService=t;this.sessionPortFactory=r;this.messageChannelFactory=n;this.manager=this.createSessionPort("argon:manager");this.errorEvent=new u.Event;this._connectEvent=new u.Event;this._managedSessions=[];this.errorEvent.addEventListener(function(e){if(i.errorEvent.numberOfListeners===1)console.error(e)});this.manager.errorEvent.addEventListener(function(e){i.errorEvent.raiseEvent(e)});Object.freeze(this)}Object.defineProperty(e.prototype,"connectEvent",{get:function(){return this._connectEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"managedSessions",{get:function(){this.ensureIsRealityManager();return this._managedSessions},enumerable:true,configurable:true});e.prototype.connect=function(){if(this.connectService&&this.connectService.connect){this.connectService.connect(this)}else{console.warn("Argon: Unable to connect to a manager session; a connect service is not available")}};e.prototype.addManagedSessionPort=function(e){var t=this;this.ensureIsRealityManager();var r=this.sessionPortFactory.create(e);r.errorEvent.addEventListener(function(e){t.errorEvent.raiseEvent(e)});r.connectEvent.addEventListener(function(){t.managedSessions.push(r);t.connectEvent.raiseEvent(r)});r.closeEvent.addEventListener(function(){var e=t.managedSessions.indexOf(r);if(e>-1)t.managedSessions.splice(e,1)});return r};e.prototype.createSessionPort=function(e){return this.sessionPortFactory.create(e)};e.prototype.createMessageChannel=function(){return this.messageChannelFactory.create()};e.prototype.createSynchronousMessageChannel=function(){return this.messageChannelFactory.createSynchronous()};Object.defineProperty(e.prototype,"isRealityManager",{get:function(){return s.Role.isRealityManager(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityAugmenter",{get:function(){return s.Role.isRealityAugmenter(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityViewer",{get:function(){return s.Role.isRealityViewer(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isManager",{get:function(){console.warn("Deprecated. Use isRealityManager()");return this.isManager},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isApplication",{get:function(){console.warn("Deprecated. Use isRealityAugmenter()");return this.isRealityAugmenter},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityView",{get:function(){console.warn("Deprecated. Use isRealityViewer()");return this.isRealityViewer},enumerable:true,configurable:true});e.prototype.ensureIsRealityManager=function(){if(!this.isRealityManager)throw new Error("An reality-manager only API was accessed from a non reality-manager.")};e.prototype.ensureIsRealityViewer=function(){if(!this.isRealityViewer)throw new Error("An reality-viewer only API was accessed from a non reality-viewer.")};e.prototype.ensureNotRealityViewer=function(){if(this.isRealityViewer)throw new Error("An non-permitted API was accessed from a reality-viewer.")};e.prototype.ensureNotRealityAugmenter=function(){if(this.isRealityAugmenter)throw new Error("An non-permitted API was accessed from a reality-viewer.")};e=i([o.inject("config",l,c,u.MessageChannelFactory)],e);return e}();e("SessionService",d);h=function(e){n(t,e);function t(){e.apply(this,arguments)}t.prototype.connect=function(e){var t=e.createSynchronousMessageChannel();var r=t.port1;t.port2.onmessage=function(e){t.port2.postMessage(e.data)};e.manager.connectEvent.addEventListener(function(){e.connectEvent.raiseEvent(e.manager)});e.manager.open(r,e.configuration)};return t}(l);e("LoopbackConnectService",h);v=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&typeof window.parent!=="undefined"};t.prototype.connect=function(e){var t=e.createMessageChannel();window.parent.postMessage({type:"ARGON_SESSION"},"*",[t.port1]);e.manager.open(t.port2,e.configuration)};return t}(l);e("DOMConnectService",v);p=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&!!window["__ARGON_DEBUG_PORT__"]};t.prototype.connect=function(e){var t=e.manager,r=e.configuration;t.open(window["__ARGON_DEBUG_PORT__"],r)};return t}(l);e("DebugConnectService",p);m=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&window["webkit"]&&window["webkit"].messageHandlers};t.prototype.connect=function(e){var t=e.createSynchronousMessageChannel();t.port2.onmessage=function(e){webkit.messageHandlers.argon.postMessage(JSON.stringify(e.data))};window["__ARGON_PORT__"]=t.port2;e.manager.open(t.port1,e.configuration);window.addEventListener("beforeunload",function(){e.manager.close()})};return t}(l);e("WKWebViewConnectService",m)}}});e.register("12",["c","e","10","14","a","b","1"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){l=function(){function e(){}return e}();e("RealityLoader",l);d=function(){function e(e,t){var r=this;this.sessionService=e;this.focusService=t;this.realities=new Array;this.connectEvent=new f.Event;this._changeEvent=new f.Event;this._viewStateEvent=new f.Event;this._frameEvent=new f.Event;this.desiredRealityMap=new WeakMap;this.desiredRealityMapInverse=new WeakMap;this.sessionDesiredRealityChangeEvent=new f.Event;this._loaders=[];this._scratchFrustum=new a.PerspectiveFrustum;this._scratchArray=new Array;this._loadID=-1;if(e.isRealityManager){e.manager.connectEvent.addEventListener(function(){setTimeout(function(){if(r._loadID===-1)r._setNextReality(r.onSelectReality())})})}e.connectEvent.addEventListener(function(e){if(!o.Role.isRealityViewer(e.info.role)){e.on["ar.reality.desired"]=function(t){var n=t.reality;var i=r.desiredRealityMap.get(e);console.log("Session set desired reality: "+JSON.stringify(n));if(n){if(n["type"]){var a=n["type"];n.uri=n.uri||"reality:"+a;if(a==="hosted")n.uri=n["url"];if(!n.title&&n["name"])n.title=n["name"]}if(r.isSupported(n)){r.desiredRealityMap.set(e,n);r.desiredRealityMapInverse.set(n,e)}else{e.sendError({message:'Reality of type "'+n.uri+'" is not available on this platform'});return}}else{r.desiredRealityMap.delete(e)}r._setNextReality(r.onSelectReality());r.sessionDesiredRealityChangeEvent.raiseEvent({session:e,previous:i,current:n})}}});e.manager.on["ar.reality.connect"]=function(e){var t=e.id;var n=r.sessionService.createSessionPort();var i=r.sessionService.createSynchronousMessageChannel();var a="ar.reality.message.route."+t;var o="ar.reality.message.send."+t;var s="ar.reality.close."+t;i.port1.onmessage=function(e){r.sessionService.manager.send(a,e.data)};r.sessionService.manager.on[o]=function(e){i.port1.postMessage(e)};r.sessionService.manager.on[s]=function(){n.close()};n.connectEvent.addEventListener(function(){r.connectEvent.raiseEvent(n)});r.sessionService.manager.closeEvent.addEventListener(function(){n.close();delete r.sessionService.manager.on[o];delete r.sessionService.manager.on[s]});n.open(i.port2,r.sessionService.configuration)}}Object.defineProperty(e.prototype,"changeEvent",{get:function(){this.sessionService.ensureIsRealityManager();return this._changeEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"viewStateEvent",{get:function(){this.sessionService.ensureNotRealityAugmenter();return this._viewStateEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"frameEvent",{get:function(){this.sessionService.ensureNotRealityAugmenter();return this._frameEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"session",{get:function(){return this._session},enumerable:true,configurable:true});e.prototype.setDefault=function(e){this._default=e};e.prototype.registerLoader=function(e){this.sessionService.ensureIsRealityManager();this._loaders.push(e)};e.prototype.getCurrent=function(){this.sessionService.ensureNotRealityAugmenter();return this._current};e.prototype.isSupported=function(e){this.sessionService.ensureIsRealityManager();return!!this._getLoader(e)};e.prototype.publishFrame=function(e){console.warn("publishFrame is deprecated. Use publishViewState()");this.sessionService.ensureIsRealityViewer();if(this.sessionService.manager.isConnected){this.sessionService.manager.send("ar.reality.frameState",e)}};e.prototype.publishViewState=function(e){this.sessionService.ensureIsRealityViewer();if(this.sessionService.manager.isConnected){this.sessionService.manager.send("ar.reality.viewState",e);this.viewStateEvent.raiseEvent(e)}};e.prototype.setDesired=function(e){this.sessionService.ensureNotRealityViewer();this._desired=e;if(this.sessionService.isRealityManager){this._setNextReality(e,true)}else{this.sessionService.manager.send("ar.reality.desired",{reality:e})}};e.prototype.getDesired=function(){return this._desired};e.prototype.setOptionalReferenceFrames=function(e){};e.prototype.setRequiredReferenceFrames=function(e){};e.prototype.onSelectReality=function(){this.sessionService.ensureIsRealityManager();var e=this.desiredRealityMap.get(this.sessionService.manager);if(!e){var t=this.focusService.getSession();if(t&&t.isConnected){e=this.desiredRealityMap.get(t)}}if(!e){for(var r=0,n=this.sessionService.managedSessions;r=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){(function(e){e[e["OTHER"]=0]="OTHER";e[e["START"]=1]="START";e[e["CHANGE"]=2]="CHANGE";e[e["END"]=3]="END"})(l||(l={}));e("ZoomState",l);d=function(){function e(e,t){var r=this;this.sessionService=e;this.realityService=t;this.geolocationEntity=new a.Entity({id:"ar.device.geolocation",name:"Device Geolocation"});this.orientationEntity=new a.Entity({id:"ar.device.orientation",name:"Device Orientation"});this.deviceEntity=new a.Entity({id:"ar.device",name:"Device"});this.displayEntity=new a.Entity({id:"ar.device.display",name:"Device Display",position:new a.ConstantPositionProperty(a.Cartesian3.ZERO,this.deviceEntity),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.subscribers=new Set;this.locationSubscribers=new Set;this.orientationSubscribers=new Set;this._subscriberTimeoutIds=new WeakMap;this._state={time:a.JulianDate.now(),viewport:this.getMaximumViewport(),defaultFov:Math.PI/2,subviews:[{type:s.SubviewType.SINGULAR,frustum:{fov:Math.PI/2}}],geolocationAccuracy:undefined,geolocationAltitudeAccuracy:undefined};this._scratchCartesian=new a.Cartesian3;this._scratchQuaternion1=new a.Quaternion;this._scratchQuaternion2=new a.Quaternion;this._x90Rot=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,a.CesiumMath.PI_OVER_TWO);this._headingDrift=0;if(typeof navigator!=="undefined"){this._mobileDetect=new o.default(navigator.userAgent)}this.sessionService.manager.on["ar.device.state"]=function(e){if(r.sessionService.isRealityManager)return;r._state=e;r._updateEntity(e.geolocationPose,r.geolocationEntity,a.ReferenceFrame.FIXED);if(!r._deviceorientationListener){r._updateEntity(e.orientationPose,r.orientationEntity,r.geolocationEntity)}r._updateEntity(e.devicePose,r.deviceEntity,r.orientationEntity);r._updateEntity(e.displayPose,r.displayEntity,r.deviceEntity)};e.manager.on["ar.reality.zoom"]=e.manager.on["ar.device.zoom"]=function(e){r.zoom(e)};var n=function(){if(r.locationSubscribers.size>0)r.startLocationUpdates();else r.stopLocationUpdates();if(r.orientationSubscribers.size>0)r.startOrientationUpdates();else r.stopOrientationUpdates();r.updateDeviceState()};this.sessionService.connectEvent.addEventListener(function(e){e.on["ar.device.subscribe"]=function(t){r.subscribers.add(e);if(t.location)r.locationSubscribers.add(e);else r.locationSubscribers.delete(e);if(t.orientation)r.orientationSubscribers.add(e);else r.orientationSubscribers.delete(e);var i=setTimeout(function(){r.subscribers.delete(e);r.locationSubscribers.delete(e);r.orientationSubscribers.delete(e);n()},t.timeout);var a=r._subscriberTimeoutIds.get(e);if(a!==undefined)clearTimeout(a);r._subscriberTimeoutIds.set(e,i);n()};e.on["ar.reality.desiredFov"]=e.on["ar.device.desiredFov"]=function(e){var t=e.fov;r.onDesiredFov(t);r.updateDeviceState()};if(s.Role.isRealityAugmenter(e.info.role)){r.locationSubscribers.add(e);r.orientationSubscribers.add(e)}r.updateDeviceState()});if(this.sessionService.isRealityManager){this.startOrientationUpdates();setTimeout(function(){n()},1e4);if(typeof window!=="undefined"&&window.addEventListener){var i=function(){var e=r.displayEntity.orientation;var t=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,(-window.orientation||0)*a.CesiumMath.RADIANS_PER_DEGREE,r._scratchQuaternion1);if(r._mobileDetect&&!r._mobileDetect.mobile()){t=a.Quaternion.multiply(r._x90Rot,t,t)}e.setValue(t)};window.addEventListener("resize",function(){r.state.viewport=r.getMaximumViewport();i()});window.addEventListener("orientationchange",function(){i()})}}if(this.sessionService.isRealityViewer){this.sessionService.manager.connectEvent.addEventListener(function(){r.stopOrientationUpdates()})}}e.prototype.update=function(e){var t=this;this.updateDeviceState();if(this.sessionService.isRealityViewer&&e&&e.orientation){this.startOrientationUpdates()}if(this._subscriptionTimeoutId||!this.sessionService.manager.isConnected)return;e=e||{};e.timeout=e.timeout||3e3;this._subscriptionTimeoutId=setTimeout(function(){t._subscriptionTimeoutId=undefined;t.sessionService.manager.send("ar.device.subscribe",e)},e.timeout*.75)};e.prototype.updateDeviceState=function(){var e=this._state;var t=a.JulianDate.now(e.time);e.geolocationPose=f.getSerializedEntityPose(this.geolocationEntity,t,a.ReferenceFrame.FIXED);e.orientationPose=f.getSerializedEntityPose(this.orientationEntity,t,this.geolocationEntity);e.devicePose=f.getSerializedEntityPose(this.deviceEntity,t,this.deviceEntity.position&&this.deviceEntity.position.referenceFrame);e.displayPose=f.getSerializedEntityPose(this.displayEntity,t,this.displayEntity.position&&this.displayEntity.position.referenceFrame);this.subscribers.forEach(function(t,r){r.send("ar.device.state",e)})};e.prototype.setDesiredFov=function(e){this.zoom({fov:e||this.state.defaultFov,zoom:1,state:l.OTHER})};e.prototype.setDefaultFov=function(e){var t=this.state.subviews[0].frustum.fov;var r=t/this.state.defaultFov;this.setDesiredFov(e*r);this.state.defaultFov=e};Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:true,configurable:true});e.prototype._updateEntity=function(e,t,r){if(e){var n=e.p===0?a.Cartesian3.ZERO:e.p;var i=e.o===0?a.Quaternion.IDENTITY:e.o;var o=t.position;if(o instanceof a.ConstantPositionProperty){o.setValue(n)}else{t.position=new a.ConstantPositionProperty(n,r)}var s=t.orientation;if(s instanceof a.ConstantProperty){s.setValue(i)}else{t.orientation=new a.ConstantProperty(i)}}else{t.position=undefined;t.orientation=undefined}};e.prototype.startLocationUpdates=function(){var e=this;if(!this.sessionService.isRealityManager||typeof navigator=="undefined")return;if(!a.defined(this._geolocationWatchId)){this._geolocationWatchId=navigator.geolocation.watchPosition(function(t){if(e.geolocationEntity.position instanceof a.SampledPositionProperty===false){var r=new a.SampledPositionProperty(a.ReferenceFrame.FIXED);r.forwardExtrapolationType=a.ExtrapolationType.HOLD;r.backwardExtrapolationType=a.ExtrapolationType.HOLD;r.maxNumSamples=10;e.geolocationEntity.position=r}var n=a.JulianDate.fromDate(new Date(t.timestamp));var i=a.Cartesian3.fromDegrees(t.coords.longitude,t.coords.latitude,t.coords.altitude||0,undefined,e._scratchCartesian);e.geolocationEntity.position.addSample(n,i);if(e.geolocationEntity.orientation instanceof a.ConstantProperty===false){e.geolocationEntity.orientation=new a.ConstantProperty}var o=a.Transforms.headingPitchRollQuaternion(i,0,0,0,undefined,e._scratchQuaternion1);e.geolocationEntity.orientation.setValue(o);e._state.geolocationAccuracy=t.coords.accuracy;e._state.geolocationAltitudeAccuracy=t.coords.altitudeAccuracy||undefined;e.updateDeviceState()},function(e){console.error(e)},{enableHighAccuracy:true})}};e.prototype.startOrientationUpdates=function(){var e=this;if(typeof navigator=="undefined")return;if(!a.defined(this._deviceorientationListener)){this._deviceorientationListener=function(t){var r=t.alpha;if(!a.defined(r)){return}if(t.absolute){e._alphaOffset=0}var n=t["webkitCompassHeading"];var i=+t["webkitCompassAccuracy"];if((!a.defined(e._alphaOffset)||Math.abs(e._headingDrift)>5)&&a.defined(n)&&i>=0&&i<50&&n>=0){if(!a.defined(e._alphaOffset)){e._alphaOffset=-n}else{e._alphaOffset-=e._headingDrift}}var o=e._alphaOffset||-n||0;var s=a.CesiumMath.RADIANS_PER_DEGREE*(t.alpha+o);var u=a.CesiumMath.RADIANS_PER_DEGREE*t.beta;var f=a.CesiumMath.RADIANS_PER_DEGREE*t.gamma;var c=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,s,e._scratchQuaternion1);var l=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,u,e._scratchQuaternion2);var d=a.Quaternion.multiply(c,l,e._scratchQuaternion1);var h=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Y,f,e._scratchQuaternion2);var v=a.Quaternion.multiply(d,h,d);if(e.orientationEntity.position instanceof a.ConstantPositionProperty==false){e.orientationEntity.position=new a.ConstantPositionProperty(a.Cartesian3.ZERO,e.geolocationEntity)}if(e.orientationEntity.orientation instanceof a.ConstantProperty==false){e.orientationEntity.orientation=new a.ConstantProperty}e.orientationEntity.orientation.setValue(v);if(e.deviceEntity.position instanceof a.ConstantPositionProperty==false){e.deviceEntity.position=new a.ConstantPositionProperty(a.Cartesian3.ZERO,e.orientationEntity)}if(e.deviceEntity.orientation instanceof a.ConstantProperty==false){e.deviceEntity.orientation=new a.ConstantProperty(a.Quaternion.IDENTITY)}e.updateDeviceState()};window.addEventListener("deviceorientation",this._deviceorientationListener)}};e.prototype.stopLocationUpdates=function(){if(typeof navigator==="undefined")return;if(a.defined(this._geolocationWatchId)){navigator.geolocation.clearWatch(this._geolocationWatchId);this._geolocationWatchId=undefined}};e.prototype.stopOrientationUpdates=function(){if(typeof navigator==="undefined")return;if(a.defined(this._deviceorientationListener)){window.removeEventListener("deviceorientation",this._deviceorientationListener);this._deviceorientationListener=undefined;this._alphaOffset=undefined}};e.prototype.getMaximumViewport=function(){if(typeof document!=="undefined"&&document.documentElement){return{x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}}throw new Error("Not implemeneted for the current platform")};e.prototype.zoom=function(e){if(this.realityService.session&&this.realityService.session.info["reality.handlesZoom"]){this.realityService.session.send("ar.device.zoom",e);this.realityService.session.send("ar.reality.zoom",e)}else{var t=this.onZoom(e);if(this.sessionService.isRealityViewer||this.sessionService.isRealityManager){this.sessionService.manager.send("ar.device.desiredFov",{fov:t})}}};e.prototype.onZoom=function(e){var t=2*Math.atan(Math.tan(e.fov*.5)/e.zoom);t=Math.max(10*a.CesiumMath.RADIANS_PER_DEGREE,Math.min(t,160*a.CesiumMath.RADIANS_PER_DEGREE));if(e.state===l.END&&Math.abs(t-this.state.defaultFov)<.05){t=this.state.defaultFov}return t};e.prototype.onDesiredFov=function(e){this.state.subviews.forEach(function(t){t.frustum.fov=e})};e=n([i.inject(u.SessionService,c.RealityService)],e);return e}();e("DeviceService",d)}}});e.register("9",["c","e","a","16","b","14","11"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d,h,v;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){if(typeof document!=="undefined"&&document.createElement){var t=document.querySelector("meta[name=viewport]");if(!t)t=document.createElement("meta");t.name="viewport";t.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0";document.head.appendChild(t);var r=document.querySelector("meta[name=argon]");if(!r)r=document.createElement("meta");r.name="argon";document.head.appendChild(r);d=new Promise(function(e){var t=function(){var t=document.querySelector("#argon");if(!t)t=document.createElement("div");t.id="argon";t.classList.add("argon-view");document.body.appendChild(t);l=t;e(t)};if(document.readyState=="loading"){document.addEventListener("DOMContentLoaded",t)}else{t()}});var p=document.createElement("style");p.type="text/css";document.head.insertBefore(p,document.head.firstChild);var m=p.sheet;m.insertRule("\n #argon {\n position: fixed;\n left: 0px;\n bottom: 0px;\n width: 100%;\n height: 100%;\n margin: 0;\n border: 0;\n padding: 0;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n ",0);m.insertRule("\n .argon-view > * {\n position: absolute;\n -webkit-tap-highlight-color: initial;\n }\n ",1)}h=function(){function e(e,t,r,n){var i=this;this.sessionService=t;this.focusService=r;this.contextService=n;this.viewportChangeEvent=new u.Event;this.acquireEvent=new u.Event;this.releaseEvent=new u.Event;this.desiredViewportMap=new WeakMap;this._subviews=[];this._subviewEntities=[];this._frustums=[];if(typeof document!=="undefined"&&document.createElement){var a=this.element=document.createElement("div");a.style.width="100%";a.style.height="100%";a.classList.add("argon-view");this.containingElementPromise=new Promise(function(t){if(e&&e instanceof HTMLElement){e.insertBefore(a,e.firstChild);t(e)}else{l=document.querySelector("#argon");if(l){l.insertBefore(a,l.firstChild);t(l)}else{d.then(function(e){e.insertBefore(a,e.firstChild);t(e)})}i.focusService.focusEvent.addEventListener(function(){d.then(function(e){e.classList.remove("argon-no-focus");e.classList.add("argon-focus")})});i.focusService.blurEvent.addEventListener(function(){d.then(function(e){e.classList.remove("argon-focus");e.classList.add("argon-no-focus")})});l.addEventListener("touchmove",function(e){e.preventDefault()},true);l.addEventListener("gesturestart",function(e){e.preventDefault()},true)}});if(this.sessionService.isRealityViewer){this.sessionService.manager.on["ar.view.uievent"]=function(e){e.view=window;var t;switch(e.type){case"wheel":t=new WheelEvent(e.type,e);default:t=new MouseEvent(e.type,e)}var r=document.elementFromPoint(t.clientX,t.clientY)||window;r.dispatchEvent(t)}}}if(this.sessionService.isRealityManager){this.sessionService.connectEvent.addEventListener(function(e){e.on["ar.viewport.desired"]=function(t){i.desiredViewportMap.set(e,t)}})}this.contextService.renderEvent.addEventListener(function(){var e=i.contextService.serializedFrameState;var t=i._subviewEntities;t.length=0;e.view.subviews.forEach(function(r,n){var a="ar.view_"+n;e.entities[a]=r.pose||e.view.pose;i.contextService.updateEntityFromFrameState(a,e);delete e.entities[a];t[n]=i.contextService.entities.getById(a)});i._update()})}e.prototype.getSubviews=function(e){var t=this;this._update();var r=this._subviews;r.length=this._current.subviews.length;this._current.subviews.forEach(function(n,i){var o=t._subviewEntities[i];var s=r[i]=r[i]||{};s.index=i;s.type=n.type;s.pose=t.contextService.getEntityPose(o,e);s.viewport=n.viewport||{x:0,y:0,width:t._current.viewport.width,height:t._current.viewport.height};s.frustum=t._frustums[i];if(!s.frustum){s.frustum=t._frustums[i]=new a.PerspectiveFrustum;s.frustum.near=.01;s.frustum.far=1e7}s.frustum.fov=n.frustum.fov;s.frustum.aspectRatio=n.frustum.aspectRatio||s.viewport.width/s.viewport.height;s.frustum.xOffset=n.frustum.xOffset||0;s.frustum.yOffset=n.frustum.yOffset||0;s.projectionMatrix=n.projectionMatrix||s.frustum.infiniteProjectionMatrix});return r};e.prototype.getViewport=function(){return this._current.viewport};e.prototype.setDesiredViewport=function(e){this.sessionService.manager.send("ar.view.desiredViewport",e)};e.prototype.requestOwnership=function(){};e.prototype.releaseOwnership=function(){};e.prototype.isOwner=function(){};e.prototype._update=function(){var e=this;var t=this.contextService.serializedFrameState;if(!t)throw new Error("Expected state to be defined");var r=t.view;var n=JSON.stringify(r.viewport);var i=this._current&&this._current.viewport;this._current=r;if(!this._currentViewportJSON||this._currentViewportJSON!==n){this._currentViewportJSON=n;if(this.element){requestAnimationFrame(function(){var t=r.viewport;e.element.style.left=t.x+"px";e.element.style.bottom=t.y+"px";e.element.style.width=t.width+"px";e.element.style.height=t.height+"px"})}this.viewportChangeEvent.raiseEvent({previous:i})}};e=n([i.inject("containerElement",o.SessionService,f.FocusService,s.ContextService)],e);return e}();e("ViewService",h);v=function(){function e(e,t,r,n){var i=this;this.viewService=e;this.deviceService=t;this.contextService=r;this.sessionService=n;if(this.sessionService.isRealityManager&&!this.sessionService.configuration["app.disablePinchZoom"]){this.viewService.containingElementPromise.then(function(e){var t=-1;if(typeof PointerEvent!=="undefined"){var r=new Array;var n=-1;var a=1;var o=function(e){for(var t=0;t=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){f=function(e){n(t,e);function t(t,r){var n=this;e.call(this);this.sessionService=t;this.viewService=r;this.type="hosted";this.iframeElement=document.createElement("iframe");this.iframeElement.style.border="0";this.iframeElement.width="100%";this.iframeElement.height="100%";r.containingElementPromise.then(function(e){e.insertBefore(n.iframeElement,e.firstChild);var t=function(e){if(n.currentRealitySession){var t=n.iframeElement.getBoundingClientRect();n.currentRealitySession.send("ar.view.uievent",{type:e.type,bubbles:e.bubbles,cancelable:e.cancelable,detail:e.detail,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,button:e.button,buttons:e.buttons,clientX:e.clientX+t.left,clientY:e.clientY+t.top,screenX:e.screenX,screenY:e.screenY,movementX:e.movementX,movementY:e.movementY,deltaX:e.deltaX,deltaY:e.deltaY,deltaZ:e.deltaZ,deltaMode:e.deltaMode,wheelDelta:e.wheelDelta,wheelDeltaX:e.wheelDeltaX,wheelDeltaY:e.wheelDeltaY})}};["click","dblclick","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","wheel"].forEach(function(r){e.addEventListener(r,t,false)})})}t.prototype.load=function(e,t){var r=this;this.viewService.containingElementPromise.then(function(n){var i=function(n){if(n.data.type!=="ARGON_SESSION")return;var a=n.ports&&n.ports[0];if(!a)throw new Error("Received an ARGON_SESSION message without a MessagePort object");var o=0;var s;while(o-1;m--){v=p[m];l(e,S,b,v)}}for(d=n-1;d>=0;d--){w=r[d];w.collectionChanged.addEventListener(h.prototype._onCollectionChanged,e);p=w.values;b=w.id;for(m=p.length-1;m>-1;m--){v=p[m];c(e,S,b,v);var T=g.getById(v.id);if(!t(T)){T=y.getById(v.id);if(!t(T)){s.id=v.id;T=new a(s)}else{f(T)}g.add(T)}T.merge(v)}}e._collectionsCopy=r.slice(0);y.suspendEvents();y.removeAll();var E=g.values;for(d=0;dthis._collections.length){throw new n("index must be less than or equal to the number of collections.")}}if(!i){r=this._collections.length;this._collections.push(e)}else{this._collections.splice(r,0,e)}d(this)};h.prototype.removeCollection=function(e){var t=this._collections.indexOf(e);if(t!==-1){this._collections.splice(t,1);d(this);return true}return false};h.prototype.removeAllCollections=function(){this._collections.length=0;d(this)};h.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};h.prototype.contains=function(e){return this._composite.contains(e)};h.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};h.prototype.getCollection=function(e){if(!t(e)){throw new n("index is required.","index")}return this._collections[e]};h.prototype.getCollectionsLength=function(){return this._collections.length};function v(e,r){if(!t(r)){throw new n("collection is required.")}var i=e.indexOf(r);if(i===-1){throw new n("collection is not in this composite.")}return i}function p(e,t,r){var n=e._collections;t=i.clamp(t,0,n.length-1);r=i.clamp(r,0,n.length-1);if(t===r){return}var a=n[t];n[t]=n[r];n[r]=a;d(e)}h.prototype.raiseCollection=function(e){var t=v(this._collections,e);p(this,t,t+1)};h.prototype.lowerCollection=function(e){var t=v(this._collections,e);p(this,t,t-1)};h.prototype.raiseCollectionToTop=function(e){var t=v(this._collections,e);if(t===this._collections.length-1){return}this._collections.splice(t,1);this._collections.push(e);d(this)};h.prototype.lowerCollectionToBottom=function(e){var t=v(this._collections,e);if(t===0){return}this._collections.splice(t,1);this._collections.splice(0,0,e);d(this)};h.prototype.suspendEvents=function(){this._suspendCount++;this._composite.suspendEvents()};h.prototype.resumeEvents=function(){if(this._suspendCount===0){throw new n("resumeEvents can not be called before suspendEvents.")}this._suspendCount--;if(this._shouldRecomposite&&this._suspendCount===0){d(this);this._shouldRecomposite=false}this._composite.resumeEvents()};h.prototype.computeAvailability=function(){return this._composite.computeAvailability()};h.prototype.getById=function(e){return this._composite.getById(e)};h.prototype._onCollectionChanged=function(e,r,n){var i=this._collectionsCopy;var o=i.length;var u=this._composite;u.suspendEvents();var d;var h;var v;var p;var m=n.length;var w=this._eventHash;var y=e.id;for(d=0;d=0;h--){v=i[h].getById(S);if(t(v)){if(!t(p)){p=u.getById(S);f(p)}p.merge(v)}}if(!t(p)){u.removeById(S)}p=undefined}var b=r.length;for(d=0;d=0;h--){v=i[h].getById(E);if(t(v)){if(!t(p)){p=u.getById(E);if(!t(p)){s.id=E;p=new a(s);u.add(p)}else{f(p)}}p.merge(v)}}p=undefined}u.resumeEvents()};h.prototype._onDefinitionChanged=function(e,r,n,i){var a=this._collections;var o=this._composite;var s=a.length;var u=e.id;var f=o.getById(u);var c=f[r];var l=!t(c);var d=true;for(var h=s-1;h>=0;h--){var v=a[h].getById(e.id);if(t(v)){var p=v[r];if(t(p)){if(d){d=false;if(t(p.merge)&&t(p.clone)){c=p.clone(c)}else{c=p;break}}c.merge(p)}}}if(l&&f.propertyNames.indexOf(r)===-1){f.addProperty(r)}f[r]=c};return h})})();(function(){var t=e.amdDefine;t("2b",["1b","1c","1d"],function(e,t,r){"use strict";function n(){this._array=[];this._hash={}}t(n.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});n.prototype.contains=function(t){if(typeof t!=="string"&&typeof t!=="number"){throw new r("key is required to be a string or number.")}return e(this._hash[t])};n.prototype.set=function(e,t){if(typeof e!=="string"&&typeof e!=="number"){throw new r("key is required to be a string or number.")}var n=this._hash[e];if(t!==n){this.remove(e);this._hash[e]=t;this._array.push(t)}};n.prototype.get=function(e){if(typeof e!=="string"&&typeof e!=="number"){throw new r("key is required to be a string or number.")}return this._hash[e]};n.prototype.remove=function(t){if(e(t)&&typeof t!=="string"&&typeof t!=="number"){throw new r("key is required to be a string or number.")}var n=this._hash[t];var i=e(n);if(i){var a=this._array;a.splice(a.indexOf(n),1);delete this._hash[t]}return i};n.prototype.removeAll=function(){var e=this._array;if(e.length>0){this._hash={};e.length=0}};return n})})();(function(){var t=e.amdDefine;t("27",[],function(){"use strict";function e(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=Math.random()*16|0;var r=e==="x"?t:t&3|8;return r.toString(16)})}return e})})();(function(){var t=e.amdDefine;t("2c",["2d","24","1b","1c","1d","1e","2e","2f"],function(e,t,r,n,i,a,o,s){"use strict";function u(r,n){this._definitionChanged=new a;this._value=e.clone(r);this._referenceFrame=t(n,o.FIXED)}n(u.prototype,{isConstant:{get:function(){return!r(this._value)||this._referenceFrame===o.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});u.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,o.FIXED,t)};u.prototype.setValue=function(t,n){var i=false;if(!e.equals(this._value,t)){i=true;this._value=e.clone(t)}if(r(n)&&this._referenceFrame!==n){i=true;this._referenceFrame=n}if(i){this._definitionChanged.raiseEvent(this)}};u.prototype.getValueInReferenceFrame=function(e,t,n){ -if(!r(e)){throw new i("time is required.")}if(!r(t)){throw new i("referenceFrame is required.")}return s.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};u.prototype.equals=function(t){return this===t||t instanceof u&&e.equals(this._value,t._value)&&this._referenceFrame===t._referenceFrame};return u})})();(function(){var t=e.amdDefine;t("30",["24","1b","1c","1d","1e"],function(e,t,r,n,i){"use strict";function a(e){this._value=undefined;this._hasClone=false;this._hasEquals=false;this._definitionChanged=new i;this.setValue(e)}r(a.prototype,{isConstant:{value:true},definitionChanged:{get:function(){return this._definitionChanged}}});a.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};a.prototype.setValue=function(e){var r=this._value;if(r!==e){var n=t(e);var i=n&&typeof e.clone==="function";var a=n&&typeof e.equals==="function";this._hasClone=i;this._hasEquals=a;var o=!a||!e.equals(r);if(o){this._value=!i?e:e.clone();this._definitionChanged.raiseEvent(this)}}};a.prototype.equals=function(e){return this===e||e instanceof a&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};return a})})();(function(){var t=e.amdDefine;t("31",["24","1b","30"],function(e,t,r){"use strict";function n(e,r,n,i,a){return{configurable:i,get:function(){return this[r]},set:function(i){var o=this[r];var s=this[n];if(t(s)){s();this[n]=undefined}var u=t(i);if(u&&!t(i.getValue)&&t(a)){i=a(i)}if(o!==i){this[r]=i;this._definitionChanged.raiseEvent(this,e,i,o)}if(t(i)&&t(i.definitionChanged)){this[n]=i.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,i,i)},this)}}}}function i(e){return new r(e)}function a(t,r,a){return n(t,"_"+t.toString(),"_"+t.toString()+"Subscription",e(r,false),e(a,i))}return a})})();(function(){var t=e.amdDefine;t("32",["31"],function(e){"use strict";function t(e){return e}function r(r,n){return e(r,n,t)}return r})})();(function(){var t=e.amdDefine;t("29",["2d","27","24","1b","1c","1d","1e","33","34","35","36","@empty","@empty","2c","@empty","31","32","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","37","@empty","@empty"],function(e,t,r,n,i,a,o,s,u,f,c,l,d,h,v,p,m,w,y,g,S,b,T,E,_,A,P,M,C,I){"use strict";function x(e){return new h(e)}function R(e){return p(e,undefined,x)}function O(e,t){return p(e,undefined,function(e){if(e instanceof t){return e}return new t(e)})}function D(e){e=r(e,r.EMPTY_OBJECT);var i=e.id;if(!n(i)){i=t()}this._availability=undefined;this._id=i;this._definitionChanged=new o;this._name=e.name;this._show=r(e.show,true);this._parent=undefined;this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","orientation","path","point","polygon","polyline","polylineVolume","position","rectangle","viewFrom","wall"];this._billboard=undefined;this._billboardSubscription=undefined;this._box=undefined;this._boxSubscription=undefined;this._corridor=undefined;this._corridorSubscription=undefined;this._cylinder=undefined;this._cylinderSubscription=undefined;this._description=undefined;this._descriptionSubscription=undefined;this._ellipse=undefined;this._ellipseSubscription=undefined;this._ellipsoid=undefined;this._ellipsoidSubscription=undefined;this._label=undefined;this._labelSubscription=undefined;this._model=undefined;this._modelSubscription=undefined;this._orientation=undefined;this._orientationSubscription=undefined;this._path=undefined;this._pathSubscription=undefined;this._point=undefined;this._pointSubscription=undefined;this._polygon=undefined;this._polygonSubscription=undefined;this._polyline=undefined;this._polylineSubscription=undefined;this._polylineVolume=undefined;this._polylineVolumeSubscription=undefined;this._position=undefined;this._positionSubscription=undefined;this._rectangle=undefined;this._rectangleSubscription=undefined;this._viewFrom=undefined;this._viewFromSubscription=undefined;this._wall=undefined;this._wallSubscription=undefined;this._children=[];this.entityCollection=undefined;this.parent=e.parent;this.merge(e)}function q(e,t,r){var n=t.length;for(var i=0;i0){for(f=0;f=Math.PI){throw new r("fov must be in the range [0, PI).")}if(t.aspectRatio<0){throw new r("aspectRatio must be positive.")}if(t.near<0||t.near>t.far){throw new r("near must be greater than zero and less than far.")}t._aspectRatio=t.aspectRatio;t._fov=t.fov;t._fovy=t.aspectRatio<=1?t.fov:Math.atan(Math.tan(t.fov*.5)/t.aspectRatio)*2;t._near=t.near;t._far=t.far;t._sseDenominator=2*Math.tan(.5*t._fovy);t._xOffset=t.xOffset;t._yOffset=t.yOffset;n.top=t.near*Math.tan(.5*t._fovy);n.bottom=-n.top;n.right=t.aspectRatio*n.top;n.left=-n.right;n.near=t.near;n.far=t.far;n.right+=t.xOffset;n.left+=t.xOffset;n.top+=t.yOffset;n.bottom+=t.yOffset}}t(i.prototype,{projectionMatrix:{get:function(){a(this);return this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){a(this);return this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){a(this);return this._fovy}},sseDenominator:{get:function(){a(this);return this._sseDenominator}}});i.prototype.computeCullingVolume=function(e,t,r){a(this);return this._offCenterFrustum.computeCullingVolume(e,t,r)};i.prototype.getPixelDimensions=function(e,t,r,n){a(this);return this._offCenterFrustum.getPixelDimensions(e,t,r,n)};i.prototype.clone=function(t){if(!e(t)){t=new i}t.aspectRatio=this.aspectRatio;t.fov=this.fov;t.near=this.near;t.far=this.far;t._aspectRatio=undefined;t._fov=undefined;t._near=undefined;t._far=undefined;this._offCenterFrustum.clone(t._offCenterFrustum);return t};i.prototype.equals=function(t){if(!e(t)){return false}a(this);a(t);return this.fov===t.fov&&this.aspectRatio===t.aspectRatio&&this.near===t.near&&this.far===t.far&&this._offCenterFrustum.equals(t._offCenterFrustum)};return i})})();(function(){var t=e.amdDefine;t("42",["20"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)})})();(function(){var t=e.amdDefine;t("43",["2d","44","24","1b","1d","42","45"],function(e,t,r,n,i,a,o){"use strict";function s(e){this.planes=r(e,[])}var u=[new e,new e,new e];e.clone(e.UNIT_X,u[0]);e.clone(e.UNIT_Y,u[1]);e.clone(e.UNIT_Z,u[2]);var f=new e;var c=new e;var l=new o(new e,0);s.fromBoundingSphere=function(r,a){if(!n(r)){throw new i("boundingSphere is required.")}if(!n(a)){a=new s}var o=u.length;var l=a.planes;l.length=2*o;var d=r.center;var h=r.radius;var v=0;for(var p=0;pe.far){throw new o("near must be greater than zero and less than far.")}e._left=a;e._right=n;e._top=t;e._bottom=r;e._near=u;e._far=f;e._perspectiveMatrix=s.computePerspectiveOffCenter(a,n,r,t,u,f,e._perspectiveMatrix);e._infinitePerspective=s.computeInfinitePerspectiveOffCenter(a,n,r,t,u,e._infinitePerspective)}}a(f.prototype,{projectionMatrix:{get:function(){c(this);return this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){c(this);return this._infinitePerspective}}});var l=new t;var d=new t;var h=new t;var v=new t;f.prototype.computeCullingVolume=function(e,n,a){if(!i(e)){throw new o("position is required.")}if(!i(n)){throw new o("direction is required.")}if(!i(a)){throw new o("up is required.")}var s=this._cullingVolume.planes;var u=this.top;var f=this.bottom;var c=this.right;var p=this.left;var m=this.near;var w=this.far;var y=t.cross(n,a,l);var g=d;t.multiplyByScalar(n,m,g);t.add(e,g,g);var S=h;t.multiplyByScalar(n,w,S);t.add(e,S,S);var b=v;t.multiplyByScalar(y,p,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(b,a,b);var T=s[0];if(!i(T)){T=s[0]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(y,c,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(a,b,b);T=s[1];if(!i(T)){T=s[1]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(a,f,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(y,b,b);T=s[2];if(!i(T)){T=s[2]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(a,u,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(b,y,b);T=s[3];if(!i(T)){T=s[3]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);T=s[4];if(!i(T)){T=s[4]=new r}T.x=n.x;T.y=n.y;T.z=n.z;T.w=-t.dot(n,g);t.negate(n,b);T=s[5];if(!i(T)){T=s[5]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,S);return this._cullingVolume};f.prototype.getPixelDimensions=function(e,t,r,n){c(this);if(!i(e)||!i(t)){throw new o("Both drawingBufferWidth and drawingBufferHeight are required.")}if(e<=0){throw new o("drawingBufferWidth must be greater than zero.")}if(t<=0){throw new o("drawingBufferHeight must be greater than zero.")}if(!i(r)){throw new o("distance is required.")}if(!i(n)){throw new o("A result object is required.")}var a=1/this.near;var s=this.top*a;var u=2*r*s/t;s=this.right*a;var f=2*r*s/e;n.x=f;n.y=u;return n};f.prototype.clone=function(e){if(!i(e)){e=new f}e.right=this.right;e.left=this.left;e.top=this.top;e.bottom=this.bottom;e.near=this.near;e.far=this.far;e._left=undefined;e._right=undefined;e._top=undefined;e._bottom=undefined;e._near=undefined;e._far=undefined;return e};f.prototype.equals=function(e){return i(e)&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};return f})})();(function(){var t=e.amdDefine;t("47",["1b","1c","1d","1e","37"],function(e,t,r,n,i){"use strict";function a(t){var r=t._targetEntity;if(t._resolveEntity){r=t._targetCollection.getById(t._targetId);if(e(r)){t._targetEntity=r;t._resolveEntity=false}}return r}var o=function(t,i){if(!e(t)){throw new r("targetCollection is required.")}if(!e(i)||i===""){throw new r("targetId is required.")}this._targetCollection=t;this._targetId=i;this._targetEntity=undefined;this._definitionChanged=new n;this._resolveEntity=true;t.collectionChanged.addEventListener(o.prototype._onCollectionChanged,this)};t(o.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},id:{get:function(){return this._targetId}},position:{get:function(){var t=a(this);return e(t)?t.position:undefined}},orientation:{get:function(){var t=a(this);return e(t)?t.orientation:undefined}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},resolvedEntity:{get:function(){return a(this)}}});o.prototype._onCollectionChanged=function(t,r,n){var i=this._targetEntity;if(e(i)){if(n.indexOf(i)!==-1){this._resolveEntity=true}else if(this._resolveEntity){a(this);if(!this._resolveEntity){this._definitionChanged.raiseEvent(this)}}}};return o})})();(function(){var t=e.amdDefine;t("48",["1b","1c","1d","1e","39","37"],function(e,t,r,n,i,a){"use strict";function o(t){var r=true;if(t._resolveEntity){var n=t._targetCollection.getById(t._targetId);if(e(n)){n.definitionChanged.addEventListener(u.prototype._onTargetEntityDefinitionChanged,t);t._targetEntity=n;t._resolveEntity=false}else{n=t._targetEntity;r=false}if(!e(n)){throw new i('target entity "'+t._targetId+'" could not be resolved.')}}return r}function s(t){var r=t._targetProperty;if(t._resolveProperty){var n=o(t);var a=t._targetPropertyNames;r=t._targetEntity;var s=a.length;for(var u=0;u0){i=new Array(n);for(var s=0;s0&&(!r(n)||n.length!==a)){throw new i("derivatives length must be equal to the number of derivatives.")}this._property.addSample(e,t,n)};c.prototype.addSamples=function(e,t,r){this._property.addSamples(e,t,r)};c.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};c.prototype.equals=function(e){return this===e||e instanceof c&&u.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};return c})})();(function(){var t=e.amdDefine;t("1e",["1b","1c","1d"],function(e,t,r){"use strict";function n(){this._listeners=[];this._scopes=[];this._toRemove=[];this._insideRaiseEvent=false}t(n.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});n.prototype.addEventListener=function(e,t){if(typeof e!=="function"){throw new r("listener is required and must be a function.")}this._listeners.push(e);this._scopes.push(t);var n=this;return function(){n.removeEventListener(e,t)}};n.prototype.removeEventListener=function(e,t){if(typeof e!=="function"){throw new r("listener is required and must be a function.")}var n=this._listeners;var i=this._scopes;var a=-1;for(var o=0;o=t;n--){e[n]=e[s--]}}for(n=0;n=0||r(y)&&s.compare(w,y)>=0){break}d[g++]=w;u=u+1;for(f=0;f0){h.length=S;c(i,m,h);d.length=g;c(n,p,d)}}else{for(f=0;ff){return undefined}if(this._backwardExtrapolationType===o.HOLD){return c.unpack(l,0,n)}}if(d>=u){d=u-1;var v=a[d];f=this._forwardExtrapolationDuration;if(this._forwardExtrapolationType===o.NONE||f!==0&&s.secondsDifference(t,v)>f){return undefined}if(this._forwardExtrapolationType===o.HOLD){d=u-1;return c.unpack(l,d*c.packedLength,n)}}var p=this._xTable;var m=this._yTable;var w=this._interpolationAlgorithm;var y=this._packedInterpolationLength;var g=this._inputOrder;if(this._updateTableLength){this._updateTableLength=false;var S=Math.min(w.getRequiredDataPoints(this._interpolationDegree,g),u);if(S!==this._numberOfPoints){this._numberOfPoints=S;p.length=S;m.length=S*y}}var b=this._numberOfPoints-1;if(b<1){return undefined}var T=0;var E=u-1;var _=E-T+1;if(_>=b+1){var A=d-(b/2|0)-1;if(AE){P=E;A=P-b;if(A=0){if(mt.length-1){s.xPoleWander=0;s.yPoleWander=0;s.xPoleOffset=0;s.yPoleOffset=0;s.ut1MinusUtc=0;return s}var f=t[i];var c=t[a];if(f.equals(c)||n.equals(f)){p(e,r,i,u,s);return s}else if(n.equals(c)){p(e,r,a,u,s);return s}var l=o.secondsDifference(n,f)/o.secondsDifference(c,f);var d=i*u;var h=a*u;var v=r[d+e._ut1MinusUtcSecondsColumn];var w=r[h+e._ut1MinusUtcSecondsColumn];var y=w-v;if(y>.5||y<-.5){var g=r[d+e._taiMinusUtcSecondsColumn];var S=r[h+e._taiMinusUtcSecondsColumn];if(g!==S){if(c.equals(n)){v=w}else{w-=S-g}}}s.xPoleWander=m(l,r[d+e._xPoleWanderRadiansColumn],r[h+e._xPoleWanderRadiansColumn]);s.yPoleWander=m(l,r[d+e._yPoleWanderRadiansColumn],r[h+e._yPoleWanderRadiansColumn]);s.xPoleOffset=m(l,r[d+e._xCelestialPoleOffsetRadiansColumn],r[h+e._xCelestialPoleOffsetRadiansColumn]);s.yPoleOffset=m(l,r[d+e._yCelestialPoleOffsetRadiansColumn],r[h+e._yCelestialPoleOffsetRadiansColumn]);s.ut1MinusUtc=m(l,v,w);return s}return d})})();(function(){var t=e.amdDefine;t("50",[],function(){"use strict";function e(e,t,r,n,i){this.xPoleWander=e;this.yPoleWander=t;this.xPoleOffset=r;this.yPoleOffset=n;this.ut1MinusUtc=i}return e})})();(function(){var t=e.amdDefine;t("55",["56","24","1b","1d"],function(e,t,r,n){"use strict";function i(i,a){if(!r(i)){throw new n("relative uri is required.")}a=t(a,document.location.href);var o=new e(a);var s=new e(i);return s.resolve(o).toString()}return i})})();(function(){var t=e.amdDefine;t("56",[],function(){function e(r){if(r instanceof e){this.scheme=r.scheme;this.authority=r.authority;this.path=r.path;this.query=r.query;this.fragment=r.fragment}else if(r){var n=t.exec(r);this.scheme=n[1];this.authority=n[2];this.path=n[3];this.query=n[4];this.fragment=n[5]}}e.prototype.scheme=null;e.prototype.authority=null;e.prototype.path="";e.prototype.query=null;e.prototype.fragment=null;var t=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme};e.prototype.getAuthority=function(){return this.authority};e.prototype.getPath=function(){return this.path};e.prototype.getQuery=function(){return this.query};e.prototype.getFragment=function(){return this.fragment};e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment};e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query};e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment};e.prototype.normalize=function(){this.removeDotSegments();if(this.scheme)this.scheme=this.scheme.toLowerCase();if(this.authority)this.authority=this.authority.replace(i,o).replace(r,a);if(this.path)this.path=this.path.replace(r,a);if(this.query)this.query=this.query.replace(r,a);if(this.fragment)this.fragment=this.fragment.replace(r,a)};var r=/%[0-9a-z]{2}/gi;var n=/[a-zA-Z0-9\-\._~]/;var i=/(.*@)?([^@:]*)(:.*)?/;function a(e){var t=unescape(e);return n.test(t)?t:e.toUpperCase()}function o(e,t,r,n){return(t||"")+r.toLowerCase()+(n||"")}e.prototype.resolve=function(t){var r=new e;if(this.scheme){r.scheme=this.scheme;r.authority=this.authority;r.path=this.path;r.query=this.query}else{r.scheme=t.scheme;if(this.authority){r.authority=this.authority;r.path=this.path;r.query=this.query}else{r.authority=t.authority;if(this.path==""){r.path=t.path;r.query=this.query||t.query}else{if(this.path.charAt(0)=="/"){r.path=this.path;r.removeDotSegments()}else{if(t.authority&&t.path==""){r.path="/"+this.path}else{r.path=t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path}r.removeDotSegments()}r.query=this.query}}}r.fragment=this.fragment;return r};e.prototype.removeDotSegments=function(){var e=this.path.split("/"),t=[],r,n=e[0]=="";if(n)e.shift();var i=e[0]==""?e.shift():null;while(e.length){r=e.shift();if(r==".."){t.pop()}else if(r!="."){t.push(r)}}if(r=="."||r=="..")t.push("");if(n)t.unshift("");this.path=t.join("/")};e.prototype.toString=function(){var e="";if(this.scheme)e+=this.scheme+":";if(this.authority)e+="//"+this.authority;e+=this.path;if(this.query)e+="?"+this.query;if(this.fragment)e+="#"+this.fragment;return e};return e})})();(function(){var t=e.amdDefine;t("57",["56","24","1b","1d"],function(e,t,r,n){"use strict";function i(i,a,o){if(!r(i)){throw new n("first is required")}if(!r(a)){throw new n("second is required")}o=t(o,true);if(!(i instanceof e)){i=new e(i)}if(!(a instanceof e)){a=new e(a)}if(r(a.authority)&&!r(a.scheme)){if(typeof document!=="undefined"&&r(document.location)&&r(document.location.href)){a.scheme=new e(document.location.href).scheme}else{a.scheme=i.scheme}}var s=i;if(a.isAbsolute()){s=a}var u="";if(r(s.scheme)){u+=s.scheme+":"}if(r(s.authority)){u+="//"+s.authority;if(s.path!==""&&s.path!=="/"){u=u.replace(/\/?$/,"/");s.path=s.path.replace(/^\/?/g,"")}}if(s===i){if(o){u+=i.path.replace(/\/?$/,"/")+a.path.replace(/^\/?/g,"")}else{u+=i.path+a.path}}else{u+=a.path}var f=r(i.query);var c=r(a.query);if(f&&c){u+="?"+i.query+"&"+a.query}else if(f&&!c){u+="?"+i.query}else if(!f&&c){u+="?"+a.query}var l=r(a.fragment);if(r(i.fragment)&&!l){u+="#"+i.fragment}else if(l){u+="#"+a.fragment}return u}return i})})();(function(){var t=e.amdDefine;t("58",["56","1b","1d","55","57","require"],function(e,t,r,n,i,a){"use strict";var o=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i;function s(){var e=document.getElementsByTagName("script");for(var t=0,r=e.length;t>>0;o=Math.max(0,Math.min(t,p));u=[];s=p-o+1;c=[];l=f();if(!o){l.resolve(u)}else{v=l.progress;h=function(e){c.push(e);if(!--s){d=h=S;l.reject(c)}};d=function(e){u.push(e);if(!--o){d=h=S;l.resolve(u)}};for(m=0;m>>0;r=[];u=f();if(!a){u.resolve(r)}else{o=function e(i,o){n(i,t).then(function(e){r[o]=e;if(!--a){u.resolve(r)}},u.reject)};for(s=0;s2;return n(e,function(e){e=i?r:e;t.resolve(e);return e},function(e){t.reject(e);return u(e)},t.progress)}function y(e,t){var r,n=0;while(r=e[n++]){r(t)}}function g(e,t){var r,n=t.length;while(n>e){r=t[--n];if(r!=null&&typeof r!="function"){throw new Error("arg "+n+" must be a function")}}}function S(){}t=[].slice;e=[].reduce||function(e){var t,r,n,i,a;a=0;t=Object(this);i=t.length>>>0;r=arguments;if(r.length<=1){for(;;){if(a in t){n=t[a++];break}if(++a>=i){throw new TypeError}}}else{n=r[1]}for(;a0){var o=i.substring(0,a);var s=i.substring(a+2);t[o]=s}}return t}return e})})();(function(){var t=e.amdDefine;t("5b",["1b","5a"],function(e,t){"use strict";function r(e,r,n){this.statusCode=e;this.response=r;this.responseHeaders=n;if(typeof this.responseHeaders==="string"){this.responseHeaders=t(this.responseHeaders)}}r.prototype.toString=function(){var t="Request has failed.";if(e(this.statusCode)){t+=" Status Code: "+this.statusCode}return t};return r})})();(function(){var t=e.amdDefine;t("5c",["4f","24","1b","1d","5b","39"],function(e,t,r,n,i,a){"use strict";function o(i){i=t(i,t.EMPTY_OBJECT);if(!r(i.url)){throw new n("options.url is required.")}var a=i.responseType;var s=t(i.method,"GET");var u=i.data;var f=i.headers;var c=i.overrideMimeType;return e(i.url,function(t){var r=e.defer();o.load(t,a,s,u,f,r,c);return r.promise})}var s=/^data:(.*?)(;base64)?,(.*)$/;function u(e,t){var r=decodeURIComponent(t);if(e){return atob(r)}return r}function f(e,t){var r=u(e,t);var n=new ArrayBuffer(r.length);var i=new Uint8Array(n);for(var a=0;a=200&&h.status<300){if(r(h.response)){f.resolve(h.response)}else{if(r(h.responseXML)&&h.responseXML.hasChildNodes()){f.resolve(h.responseXML)}else if(r(h.responseText)){f.resolve(h.responseText)}else{f.reject(new a("unknown XMLHttpRequest response type."))}}}else{f.reject(new i(h.status,h.response,h.getAllResponseHeaders()))}};h.onerror=function(e){f.reject(new i)};h.send(o)};o.defaultLoad=o.load;return o})})();(function(){var t=e.amdDefine;t("5d",["5c"],function(e){"use strict";function t(t,r){return e({url:t,headers:r})}return t})})();(function(){var t=e.amdDefine;t("52",["59","1b","1d","5d"],function(e,t,r,n){"use strict";var i={Accept:"application/json,*/*;q=0.01"};function a(a,o){if(!t(a)){throw new r("url is required.")}if(!t(o)){o=i}else if(!t(o.Accept)){o=e(o);o.Accept=i.Accept}return n(a,o).then(function(e){return JSON.parse(e)})}return a})})();(function(){var t=e.amdDefine;t("5e",["4f","58","24","1b","5f","25","52","54"],function(e,t,r,n,i,a,o,s){"use strict";function u(e){e=r(e,r.EMPTY_OBJECT);this._xysFileUrlTemplate=e.xysFileUrlTemplate;this._interpolationOrder=r(e.interpolationOrder,9);this._sampleZeroJulianEphemerisDate=r(e.sampleZeroJulianEphemerisDate,2442396.5);this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,s.TAI);this._stepSizeDays=r(e.stepSizeDays,1);this._samplesPerXysFile=r(e.samplesPerXysFile,1e3);this._totalSamples=r(e.totalSamples,27426);this._samples=new Array(this._totalSamples*3);this._chunkDownloadsInProgress=[];var t=this._interpolationOrder;var n=this._denominators=new Array(t+1);var i=this._xTable=new Array(t+1);var o=Math.pow(this._stepSizeDays,t);for(var u=0;u<=t;++u){n[u]=o;i[u]=u*this._stepSizeDays;for(var f=0;f<=t;++f){if(f!==u){n[u]*=u-f}}n[u]=1/n[u]}this._work=new Array(t+1);this._coef=new Array(t+1)}var f=new a(0,0,s.TAI);function c(e,t,r){var n=f;n.dayNumber=t;n.secondsOfDay=r;return a.daysDifference(n,e._sampleZeroDateTT)}u.prototype.preload=function(t,r,n,i){var a=c(this,t,r);var o=c(this,n,i);var s=a/this._stepSizeDays-this._interpolationOrder/2|0;if(s<0){s=0}var u=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;if(u>=this._totalSamples){u=this._totalSamples-1}var f=s/this._samplesPerXysFile|0;var d=u/this._samplesPerXysFile|0;var h=[];for(var v=f;v<=d;++v){h.push(l(this,v))}return e.all(h)};u.prototype.computeXysRadians=function(e,t,r){var a=c(this,e,t);if(a<0){return undefined}var o=a/this._stepSizeDays|0;if(o>=this._totalSamples){return undefined}var s=this._interpolationOrder;var u=o-(s/2|0);if(u<0){u=0}var f=u+s;if(f>=this._totalSamples){f=this._totalSamples-1;u=f-s;if(u<0){u=0}}var d=false;var h=this._samples;if(!n(h[u*3])){l(this,u/this._samplesPerXysFile|0);d=true}if(!n(h[f*3])){l(this,f/this._samplesPerXysFile|0);d=true}if(d){return undefined}if(!n(r)){r=new i(0,0,0)}else{r.x=0;r.y=0;r.s=0}var v=a-u*this._stepSizeDays;var p=this._work;var m=this._denominators;var w=this._coef;var y=this._xTable;var g,S;for(g=0;g<=s;++g){p[g]=v-y[g]}for(g=0;g<=s;++g){w[g]=1;for(S=0;S<=s;++S){if(S!==g){w[g]*=p[S]}}w[g]*=m[g];var b=(u+g)*3;r.x+=w[g]*h[b++];r.y+=w[g]*h[b++];r.s+=w[g]*h[b]}return r};function l(r,i){if(r._chunkDownloadsInProgress[i]){return r._chunkDownloadsInProgress[i]}var a=e.defer();r._chunkDownloadsInProgress[i]=a;var s;var u=r._xysFileUrlTemplate;if(n(u)){s=u.replace("{0}",i)}else{s=t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json")}e(o(s),function(e){r._chunkDownloadsInProgress[i]=false;var t=r._samples;var n=e.samples;var o=i*r._samplesPerXysFile*3;for(var s=0,u=n.length;s0){i=Math.sqrt(m+1);d=.5*i;i=.5/i;a=(e[s.COLUMN1ROW2]-e[s.COLUMN2ROW1])*i;o=(e[s.COLUMN2ROW0]-e[s.COLUMN0ROW2])*i;f=(e[s.COLUMN0ROW1]-e[s.COLUMN1ROW0])*i}else{var w=c;var y=0;if(v>h){y=1}if(p>h&&p>v){y=2}var g=w[y];var S=w[g];i=Math.sqrt(e[s.getElementIndex(y,y)]-e[s.getElementIndex(g,g)]-e[s.getElementIndex(S,S)]+1);var b=l;b[y]=.5*i;i=.5/i;d=(e[s.getElementIndex(S,g)]-e[s.getElementIndex(g,S)])*i;b[g]=(e[s.getElementIndex(g,y)]+e[s.getElementIndex(y,g)])*i;b[S]=(e[s.getElementIndex(S,y)]+e[s.getElementIndex(y,S)])*i;a=-b[0];o=-b[1];f=-b[2]}if(!r(t)){return new u(a,o,f,d)}t.x=a;t.y=o;t.z=f;t.w=d;return t};var d=new u;u.fromHeadingPitchRoll=function(t,i,a,o){if(!r(t)){throw new n("heading is required.")}if(!r(i)){throw new n("pitch is required.")}if(!r(a)){throw new n("roll is required.")}var s=u.fromAxisAngle(e.UNIT_X,a,d);var f=u.fromAxisAngle(e.UNIT_Y,-i,o);o=u.multiply(f,s,f);var c=u.fromAxisAngle(e.UNIT_Z,-t,d);return u.multiply(c,o,o)};var h=new e;var v=new e;var p=new u;var m=new u;var w=new u;u.packedLength=4;u.pack=function(e,i,a){if(!r(e)){throw new n("value is required")}if(!r(i)){throw new n("array is required")}a=t(a,0);i[a++]=e.x;i[a++]=e.y;i[a++]=e.z;i[a]=e.w};u.unpack=function(e,i,a){if(!r(e)){throw new n("array is required")}i=t(i,0);if(!r(a)){a=new u}a.x=e[i];a.y=e[i+1];a.z=e[i+2];a.w=e[i+3];return a};u.packedInterpolationLength=3;u.convertPackedArrayForInterpolation=function(e,t,r,n){u.unpack(e,r*4,w);u.conjugate(w,w);for(var i=0,a=r-t+1;i=0){s=1}else{s=-1;o=-o}var f=o-1;var c=1-i;var l=i*i;var d=c*c;for(var h=7;h>=0;--h){x[h]=(C[h]*l-I[h])*f;R[h]=(C[h]*d-I[h])*f}var v=s*i*(1+x[0]*(1+x[1]*(1+x[2]*(1+x[3]*(1+x[4]*(1+x[5]*(1+x[6]*(1+x[7]))))))));var p=c*(1+R[0]*(1+R[1]*(1+R[2]*(1+R[3]*(1+R[4]*(1+R[5]*(1+R[6]*(1+R[7]))))))));var m=u.multiplyByScalar(e,p,P);u.multiplyByScalar(t,v,a);return u.add(m,a,a)};u.fastSquad=function(e,t,i,a,o,s){if(!r(e)||!r(t)||!r(i)||!r(a)){throw new n("q0, q1, s0, and s1 are required.")}if(typeof o!=="number"){throw new n("t is required and must be a number.")}if(!r(s)){throw new n("result is required")}var f=u.fastSlerp(e,t,o,_);var c=u.fastSlerp(i,a,o,A);return u.fastSlerp(f,c,2*o*(1-o),s)};u.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};u.equalsEpsilon=function(e,t,i){if(typeof i!=="number"){throw new n("epsilon is required and must be a number.")}return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i&&Math.abs(e.z-t.z)<=i&&Math.abs(e.w-t.w)<=i};u.ZERO=a(new u(0,0,0,0));u.IDENTITY=a(new u(0,0,0,1));u.prototype.clone=function(e){return u.clone(this,e)};u.prototype.equals=function(e){return u.equals(this,e)};u.prototype.equalsEpsilon=function(e,t){return u.equalsEpsilon(this,e,t)};u.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"};return u})})();(function(){var t=e.amdDefine;t("36",["4f","46","2d","44","3c","24","1b","1d","4e","50","3d","5e","5f","25","28","33","34","35","53"],function(e,t,r,n,i,a,o,s,u,f,c,l,d,h,v,p,m,w,y){"use strict";var g={};var S=new r;var b=new r;var T=new r;g.eastNorthUpToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(0,-i,0,e.x,1,0,0,e.y,0,0,i,e.z,0,0,0,1)}n[0]=0;n[1]=1;n[2]=0;n[3]=0;n[4]=-i;n[5]=0;n[6]=0;n[7]=0;n[8]=0;n[9]=0;n[10]=i;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=S;var f=b;var l=T;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(f.x,l.x,u.x,e.x,f.y,l.y,u.y,e.y,f.z,l.z,u.z,e.z,0,0,0,1)}n[0]=f.x;n[1]=f.y;n[2]=f.z;n[3]=0;n[4]=l.x;n[5]=l.y;n[6]=l.z;n[7]=0;n[8]=u.x;n[9]=u.y;n[10]=u.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};var E=new r;var _=new r;var A=new r;g.northEastDownToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(-i,0,0,e.x,0,1,0,e.y,0,0,-i,e.z,0,0,0,1)}n[0]=-i;n[1]=0;n[2]=0;n[3]=0;n[4]=0;n[5]=1;n[6]=0;n[7]=0;n[8]=0;n[9]=0;n[10]=-i;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=E;var f=_;var l=A;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(l.x,f.x,-u.x,e.x,l.y,f.y,-u.y,e.y,l.z,f.z,-u.z,e.z,0,0,0,1)}n[0]=l.x;n[1]=l.y;n[2]=l.z;n[3]=0;n[4]=f.x;n[5]=f.y;n[6]=f.z;n[7]=0;n[8]=-u.x;n[9]=-u.y;n[10]=-u.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};g.northUpEastToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(-i,0,0,e.x,0,0,1,e.y,0,i,0,e.z,0,0,0,1)}n[0]=-i;n[1]=0;n[2]=0;n[3]=0;n[4]=0;n[5]=0;n[6]=i;n[7]=0;n[8]=0;n[9]=1;n[10]=0;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=S;var f=b;var l=T;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(l.x,u.x,f.x,e.x,l.y,u.y,f.y,e.y,l.z,u.z,f.z,e.z,0,0,0,1)}n[0]=l.x;n[1]=l.y;n[2]=l.z;n[3]=0;n[4]=u.x;n[5]=u.y;n[6]=u.z;n[7]=0;n[8]=f.x;n[9]=f.y;n[10]=f.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};var P=new w;var M=new r(1,1,1);var C=new m;g.headingPitchRollToFixedFrame=function(e,t,n,i,a,o){var s=w.fromHeadingPitchRoll(t,n,i,P);var u=m.fromTranslationQuaternionRotationScale(r.ZERO,s,M,C);o=g.eastNorthUpToFixedFrame(e,a,o);return m.multiply(o,u,o)};var I=new m;var x=new p;g.headingPitchRollQuaternion=function(e,t,r,n,i,a){var o=g.headingPitchRollToFixedFrame(e,t,r,n,i,I);var s=m.getRotation(o,x);return w.fromRotationMatrix(s,a)};var R=6*3600+41*60+50.54841;var O=8640184.812866;var D=.093104;var q=-62e-7;var N=1.1772758384668e-19;var G=72921158553e-15;var L=v.TWO_PI/86400;var B=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}B=h.addSeconds(e,-h.computeTaiMinusUtc(e),B);var r=B.dayNumber;var n=B.secondsOfDay;var i;var a=r-2451545;if(n>=43200){i=(a+.5)/y.DAYS_PER_JULIAN_CENTURY}else{i=(a-.5)/y.DAYS_PER_JULIAN_CENTURY}var u=R+i*(O+i*(D+i*q));var f=u*L%v.TWO_PI;var c=G+N*(r-2451545.5);var l=(n+y.SECONDS_PER_DAY*.5)%y.SECONDS_PER_DAY;var d=f+c*l;var m=Math.cos(d);var w=Math.sin(d);if(!o(t)){return new p(m,w,0,-w,m,0,0,0,1)}t[0]=m;t[1]=-w;t[2]=0;t[3]=w;t[4]=m;t[5]=0;t[6]=0;t[7]=0;t[8]=1;return t};g.iau2006XysData=new l;g.earthOrientationParameters=u.NONE;var H=32.184;var k=2451545;g.preloadIcrfFixed=function(t){var r=t.start.dayNumber;var n=t.start.secondsOfDay+H;var i=t.stop.dayNumber;var a=t.stop.secondsOfDay+H;var o=g.iau2006XysData.preload(r,n,i,a);var s=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,s])};g.computeIcrfToFixedMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}if(!o(t)){t=new p}var r=g.computeFixedToIcrfMatrix(e,t);if(!o(r)){return undefined}return p.transpose(r,t)};var z=new d(0,0,0);var F=new f(0,0,0,0,0,0);var V=new p;var U=new p;g.computeFixedToIcrfMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}if(!o(t)){t=new p}var r=g.earthOrientationParameters.compute(e,F);if(!o(r)){return undefined}var n=e.dayNumber;var i=e.secondsOfDay+H;var a=g.iau2006XysData.computeXysRadians(n,i,z);if(!o(a)){return undefined}var u=a.x+r.xPoleOffset;var f=a.y+r.yPoleOffset;var c=1/(1+Math.sqrt(1-u*u-f*f));var l=V;l[0]=1-c*u*u;l[3]=-c*u*f;l[6]=u;l[1]=-c*u*f;l[4]=1-c*f*f;l[7]=f;l[2]=-u;l[5]=-f;l[8]=1-c*(u*u+f*f);var d=p.fromRotationZ(-a.s,U);var m=p.multiply(l,d,V);var w=e.dayNumber;var S=e.secondsOfDay-h.computeTaiMinusUtc(e)+r.ut1MinusUtc;var b=w-2451545;var T=S/y.SECONDS_PER_DAY;var E=.779057273264+T+.00273781191135448*(b+T);E=E%1*v.TWO_PI;var _=p.fromRotationZ(E,U);var A=p.multiply(m,_,V);var P=Math.cos(r.xPoleWander);var M=Math.cos(r.yPoleWander);var C=Math.sin(r.xPoleWander);var I=Math.sin(r.yPoleWander);var x=n-k+i/y.SECONDS_PER_DAY;x/=36525;var R=-47e-6*x*v.RADIANS_PER_DEGREE/3600;var O=Math.cos(R);var D=Math.sin(R);var q=U;q[0]=P*O;q[1]=P*D;q[2]=C;q[3]=-M*D+I*C*O;q[4]=M*O+I*C*D;q[5]=-I*P;q[6]=-I*D-M*C*O;q[7]=I*O-M*C*D;q[8]=M*P;return p.multiply(A,q,t)};var W=new n;g.pointToWindowCoordinates=function(e,t,r,n){n=g.pointToGLWindowCoordinates(e,t,r,n);n.y=2*t[5]-n.y;return n};g.pointToGLWindowCoordinates=function(e,r,i,a){if(!o(e)){throw new s("modelViewProjectionMatrix is required.")}if(!o(r)){throw new s("viewportTransformation is required.")}if(!o(i)){throw new s("point is required.")}if(!o(a)){a=new t}var u=W;m.multiplyByVector(e,n.fromElements(i.x,i.y,i.z,1,u),u);n.multiplyByScalar(u,1/u.w,u);m.multiplyByVector(r,u,u);return t.fromCartesian4(u,a)};var j=new r;var X=new r;var K=new r;g.rotationMatrixFromPositionVelocity=function(e,t,n,i){if(!o(e)){throw new s("position is required.")}if(!o(t)){throw new s("velocity is required.")}var u=a(n,c.WGS84).geodeticSurfaceNormal(e,j);var f=r.cross(t,u,X);if(r.equalsEpsilon(f,r.ZERO,v.EPSILON6)){f=r.clone(r.UNIT_X,f)}var l=r.cross(f,t,K);r.cross(t,l,f);r.negate(f,f);if(!o(i)){i=new p}i[0]=t.x;i[1]=t.y;i[2]=t.z;i[3]=f.x;i[4]=f.y;i[5]=f.z;i[6]=l.x;i[7]=l.y;i[8]=l.z;return i};var Q=new i;var Y=new r;var Z=new r;var J=new n;var $=new n;var ee=new n;var te=new n;var re=new n;var ne=new m;var ie=new m;g.basisTo2D=function(e,t,i){if(!o(e)){throw new s("projection is required.")}if(!o(t)){throw new s("matrix is required.")}if(!o(i)){throw new s("result is required.")}var a=e.ellipsoid;var u=m.getColumn(t,3,J);var f=a.cartesianToCartographic(u,Q);var c=g.eastNorthUpToFixedFrame(u,a,ne);var l=m.inverseTransformation(c,ie);var d=e.project(f,Y);var h=$;h.x=d.z;h.y=d.x;h.z=d.y;h.w=1;var v=m.getColumn(t,0,Z);var p=r.magnitude(v);var w=m.multiplyByVector(l,v,ee);n.fromElements(w.z,w.x,w.y,0,w);var y=m.getColumn(t,1,Z);var S=r.magnitude(y);var b=m.multiplyByVector(l,y,te);n.fromElements(b.z,b.x,b.y,0,b);var T=m.getColumn(t,2,Z);var E=r.magnitude(T);var _=re;r.cross(w,b,_);r.normalize(_,_);r.cross(b,_,w);r.normalize(w,w);r.cross(_,w,b);r.normalize(b,b);r.multiplyByScalar(w,p,w);r.multiplyByScalar(b,S,b);r.multiplyByScalar(_,E,_);m.setColumn(i,0,w,i);m.setColumn(i,1,b,i);m.setColumn(i,2,_,i);m.setColumn(i,3,h,i);return i};return g})})();(function(){var t=e.amdDefine;t("62",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;var t=arguments,r=0,n=t[r++];var i=function(e,t,r,n){if(!r){r=" "}var i=e.length>=t?"":Array(1+t-e.length>>>0).join(r);return n?e+i:i+e};var a=function(e,t,r,n,a,o){var s=n-e.length;if(s>0){if(r||!a){e=i(e,n,o,r)}else{e=e.slice(0,t.length)+i("",s,"0",true)+e.slice(t.length)}}return e};var o=function(e,t,r,n,o,s,u){var f=e>>>0;r=r&&f&&{2:"0b",8:"0",16:"0x"}[t]||"";e=r+i(f.toString(t),s||0,"0",false);return a(e,r,n,o,u)};var s=function(e,t,r,n,i,o){if(n!=null){e=e.slice(0,n)}return a(e,"",t,r,i,o)};var u=function(e,n,u,f,c,l,d){var h;var v;var p;var m;var w;if(e=="%%"){return"%"}var y=false,g="",S=false,b=false,T=" ";var E=u.length;for(var _=0;u&&_-1?6:d=="d"?0:undefined}else if(l=="*"){l=+t[r++]}else if(l.charAt(0)=="*"){l=+t[l.slice(1,-1)]}else{l=+l}w=n?t[n.slice(0,-1)]:t[r++];switch(d){case"s":return s(String(w),y,f,l,S,T);case"c":return s(String.fromCharCode(+w),y,f,l,S);case"b":return o(w,2,b,y,f,l,S);case"o":return o(w,8,b,y,f,l,S);case"x":return o(w,16,b,y,f,l,S);case"X":return o(w,16,b,y,f,l,S).toUpperCase();case"u":return o(w,10,b,y,f,l,S);case"i":case"d":h=+w||0;h=Math.round(h-h%1);v=h<0?"-":g;w=v+i(String(Math.abs(h)),l,"0",false);return a(w,v,y,f,S);case"e":case"E":case"f":case"F":case"g":case"G":h=+w;v=h<0?"-":g;p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())];m=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2];w=v+Math.abs(h)[p](l);return a(w,v,y,f,S)[m]();default:return e}};return n.replace(e,u)}return e})})();(function(){var t=e.amdDefine;t("4d",["1b","1d"],function(e,t){"use strict";function r(r,n,i){if(!e(r)){throw new t("array is required.")}if(!e(n)){throw new t("itemToFind is required.")}if(!e(i)){throw new t("comparator is required.")}var a=0;var o=r.length-1;var s;var u;while(a<=o){s=~~((a+o)/2);u=i(r[s],n);if(u<0){a=s+1;continue}if(u>0){o=s-1;continue}return s}return~(o+1)}return r})})();(function(){var t=e.amdDefine;t("63",[],function(){"use strict";function e(e,t,r,n,i,a,o,s){this.year=e;this.month=t;this.day=r;this.hour=n;this.minute=i;this.second=a;this.millisecond=o;this.isLeapSecond=s}return e})})();(function(){var t=e.amdDefine;t("64",["1d"],function(e){"use strict";function t(t){if(t===null||isNaN(t)){throw new e("year is required and must be a number.")}return t%4===0&&t%100!==0||t%400===0}return t})})();(function(){var t=e.amdDefine; -t("51",[],function(){"use strict";function e(e,t){this.julianDate=e;this.offset=t}return e})})();(function(){var t=e.amdDefine;t("25",["62","4d","24","1b","1d","63","64","51","53","54"],function(e,t,r,n,i,a,o,s,u,f){"use strict";var c=new a;var l=[31,28,31,30,31,30,31,31,30,31,30,31];var d=29;function h(e,t){return I.compare(e.julianDate,t.julianDate)}var v=new s;function p(e){v.julianDate=e;var r=I.leapSeconds;var n=t(r,v,h);if(n<0){n=~n}if(n>=r.length){n=r.length-1}var i=r[n].offset;if(n>0){var a=I.secondsDifference(r[n].julianDate,e);if(a>i){n--;i=r[n].offset}}I.addSeconds(e,i,e)}function m(e,r){v.julianDate=e;var n=I.leapSeconds;var i=t(n,v,h);if(i<0){i=~i}if(i===0){return I.addSeconds(e,-n[0].offset,r)}if(i>=n.length){return I.addSeconds(e,-n[i-1].offset,r)}var a=I.secondsDifference(n[i].julianDate,e);if(a===0){return I.addSeconds(e,-n[i].offset,r)}if(a<=1){return undefined}return I.addSeconds(e,-n[--i].offset,r)}function w(e,t,r){var n=t/u.SECONDS_PER_DAY|0;e+=n;t-=u.SECONDS_PER_DAY*n;if(t<0){e--;t+=u.SECONDS_PER_DAY}r.dayNumber=e;r.secondsOfDay=t;return r}function y(e,t,r,n,i,a,o){var s=(t-14)/12|0;var f=e+4800+s;var c=(1461*f/4|0)+(367*(t-2-12*s)/12|0)-(3*((f+100)/100|0)/4|0)+r-32075;n=n-12;if(n<0){n+=24}var l=a+(n*u.SECONDS_PER_HOUR+i*u.SECONDS_PER_MINUTE+o*u.SECONDS_PER_MILLISECOND);if(l>=43200){c-=1}return[c,l]}var g=/^(\d{4})$/;var S=/^(\d{4})-(\d{2})$/;var b=/^(\d{4})-?(\d{3})$/;var T=/^(\d{4})-?W(\d{2})-?(\d{1})?$/;var E=/^(\d{4})-?(\d{2})-?(\d{2})$/;var _=/([Z+\-])?(\d{2})?:?(\d{2})?$/;var A=/^(\d{2})(\.\d+)?/.source+_.source;var P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+_.source;var M=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+_.source;var C="Invalid ISO 8601 date.";function I(e,t,n){this.dayNumber=undefined;this.secondsOfDay=undefined;e=r(e,0);t=r(t,0);n=r(n,f.UTC);var i=e|0;t=t+(e-i)*u.SECONDS_PER_DAY;w(i,t,this);if(n===f.UTC){p(this)}}I.fromDate=function(e,t){if(!(e instanceof Date)||isNaN(e.getTime())){throw new i("date must be a valid JavaScript Date.")}var r=y(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());if(!n(t)){return new I(r[0],r[1],f.UTC)}w(r[0],r[1],t);p(t);return t};I.fromIso8601=function(e,t){if(typeof e!=="string"){throw new i(C)}e=e.replace(",",".");var r=e.split("T");var a;var s=1;var u=1;var c=0;var h=0;var v=0;var m=0;var _=r[0];var x=r[1];var R;var O;if(!n(_)){throw new i(C)}var D;r=_.match(E);if(r!==null){D=_.split("-").length-1;if(D>0&&D!==2){throw new i(C)}a=+r[1];s=+r[2];u=+r[3]}else{r=_.match(S);if(r!==null){a=+r[1];s=+r[2]}else{r=_.match(g);if(r!==null){a=+r[1]}else{var q;r=_.match(b);if(r!==null){a=+r[1];q=+r[2];O=o(a);if(q<1||O&&q>366||!O&&q>365){throw new i(C)}}else{r=_.match(T);if(r!==null){a=+r[1];var N=+r[2];var G=+r[3]||0;D=_.split("-").length-1;if(D>0&&(!n(r[3])&&D!==1||n(r[3])&&D!==2)){throw new i(C)}var L=new Date(Date.UTC(a,0,4));q=N*7+G-L.getUTCDay()-3}else{throw new i(C)}}R=new Date(Date.UTC(a,0,1));R.setUTCDate(q);s=R.getUTCMonth()+1;u=R.getUTCDate()}}}O=o(a);if(s<1||s>12||u<1||(s!==2||!O)&&u>l[s-1]||O&&s===2&&u>d){throw new i(C)}var B;if(n(x)){r=x.match(M);if(r!==null){D=x.split(":").length-1;if(D>0&&D!==2&&D!==3){throw new i(C)}c=+r[1];h=+r[2];v=+r[3];m=+(r[4]||0)*1e3;B=5}else{r=x.match(P);if(r!==null){D=x.split(":").length-1;if(D>2){throw new i(C)}c=+r[1];h=+r[2];v=+(r[3]||0)*60;B=4}else{r=x.match(A);if(r!==null){c=+r[1];h=+(r[2]||0)*60;B=3}else{throw new i(C)}}}if(h>=60||v>=61||c>24||c===24&&(h>0||v>0||m>0)){throw new i(C)}var H=r[B];var k=+r[B+1];var z=+(r[B+2]||0);switch(H){case"+":c=c-k;h=h-z;break;case"-":c=c+k;h=h+z;break;case"Z":break;default:h=h+new Date(Date.UTC(a,s-1,u,c,h)).getTimezoneOffset();break}}else{h=h+new Date(a,s-1,u).getTimezoneOffset()}var F=v===60;if(F){v--}while(h>=60){h-=60;c++}while(c>=24){c-=24;u++}R=O&&s===2?d:l[s-1];while(u>R){u-=R;s++;if(s>12){s-=12;a++}R=O&&s===2?d:l[s-1]}while(h<0){h+=60;c--}while(c<0){c+=24;u--}while(u<1){s--;if(s<1){s+=12;a--}R=O&&s===2?d:l[s-1];u+=R}var V=y(a,s,u,c,h,v,m);if(!n(t)){t=new I(V[0],V[1],f.UTC)}else{w(V[0],V[1],t);p(t)}if(F){I.addSeconds(t,1,t)}return t};I.now=function(e){return I.fromDate(new Date,e)};var x=new I(0,0,f.TAI);I.toGregorianDate=function(e,t){if(!n(e)){throw new i("julianDate is required.")}var r=false;var o=m(e,x);if(!n(o)){I.addSeconds(e,-1,x);o=m(x,x);r=true}var s=o.dayNumber;var f=o.secondsOfDay;if(f>=43200){s+=1}var c=s+68569|0;var l=4*c/146097|0;c=c-((146097*l+3)/4|0)|0;var d=4e3*(c+1)/1461001|0;c=c-(1461*d/4|0)+31|0;var h=80*c/2447|0;var v=c-(2447*h/80|0)|0;c=h/11|0;var p=h+2-12*c|0;var w=100*(l-49)+d+c|0;var y=f/u.SECONDS_PER_HOUR|0;var g=f-y*u.SECONDS_PER_HOUR;var S=g/u.SECONDS_PER_MINUTE|0;g=g-S*u.SECONDS_PER_MINUTE;var b=g|0;var T=(g-b)/u.SECONDS_PER_MILLISECOND;y+=12;if(y>23){y-=24}if(r){b+=1}if(!n(t)){return new a(w,p,v,y,S,b,T,r)}t.year=w;t.month=p;t.day=v;t.hour=y;t.minute=S;t.second=b;t.millisecond=T;t.isLeapSecond=r;return t};I.toDate=function(e){if(!n(e)){throw new i("julianDate is required.")}var t=I.toGregorianDate(e,c);var r=t.second;if(t.isLeapSecond){r-=1}return new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,r,t.millisecond))};I.toIso8601=function(t,r){if(!n(t)){throw new i("julianDate is required.")}var a=I.toGregorianDate(t,a);var o;if(!n(r)&&a.millisecond!==0){o=(a.millisecond*.01).toString().replace(".","");return e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,o)}if(!n(r)||r===0){return e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second)}o=(a.millisecond*.01).toFixed(r).replace(".","").slice(0,r);return e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,o)};I.clone=function(e,t){if(!n(e)){return undefined}if(!n(t)){return new I(e.dayNumber,e.secondsOfDay,f.TAI)}t.dayNumber=e.dayNumber;t.secondsOfDay=e.secondsOfDay;return t};I.compare=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=e.dayNumber-t.dayNumber;if(r!==0){return r}return e.secondsOfDay-t.secondsOfDay};I.equals=function(e,t){return e===t||n(e)&&n(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};I.equalsEpsilon=function(e,t,r){if(!n(r)){throw new i("epsilon is required.")}return e===t||n(e)&&n(t)&&Math.abs(I.secondsDifference(e,t))<=r};I.totalDays=function(e){if(!n(e)){throw new i("julianDate is required.")}return e.dayNumber+e.secondsOfDay/u.SECONDS_PER_DAY};I.secondsDifference=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=(e.dayNumber-t.dayNumber)*u.SECONDS_PER_DAY;return r+(e.secondsOfDay-t.secondsOfDay)};I.daysDifference=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=e.dayNumber-t.dayNumber;var a=(e.secondsOfDay-t.secondsOfDay)/u.SECONDS_PER_DAY;return r+a};I.computeTaiMinusUtc=function(e){v.julianDate=e;var r=I.leapSeconds;var n=t(r,v,h);if(n<0){n=~n;--n;if(n<0){n=0}}return r[n].offset};I.addSeconds=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("seconds is required.")}if(!n(r)){throw new i("result is required.")}return w(e.dayNumber,e.secondsOfDay+t,r)};I.addMinutes=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("minutes is required.")}if(!n(r)){throw new i("result is required.")}var a=e.secondsOfDay+t*u.SECONDS_PER_MINUTE;return w(e.dayNumber,a,r)};I.addHours=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("hours is required.")}if(!n(r)){throw new i("result is required.")}var a=e.secondsOfDay+t*u.SECONDS_PER_HOUR;return w(e.dayNumber,a,r)};I.addDays=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("days is required.")}if(!n(r)){throw new i("result is required.")}var a=e.dayNumber+t;return w(a,e.secondsOfDay,r)};I.lessThan=function(e,t){return I.compare(e,t)<0};I.lessThanOrEquals=function(e,t){return I.compare(e,t)<=0};I.greaterThan=function(e,t){return I.compare(e,t)>0};I.greaterThanOrEquals=function(e,t){return I.compare(e,t)>=0};I.prototype.clone=function(e){return I.clone(this,e)};I.prototype.equals=function(e){return I.equals(this,e)};I.prototype.equalsEpsilon=function(e,t){return I.equalsEpsilon(this,e,t)};I.prototype.toString=function(){return I.toIso8601(this)};I.leapSeconds=[new s(new I(2441317,43210,f.TAI),10),new s(new I(2441499,43211,f.TAI),11),new s(new I(2441683,43212,f.TAI),12),new s(new I(2442048,43213,f.TAI),13),new s(new I(2442413,43214,f.TAI),14),new s(new I(2442778,43215,f.TAI),15),new s(new I(2443144,43216,f.TAI),16),new s(new I(2443509,43217,f.TAI),17),new s(new I(2443874,43218,f.TAI),18),new s(new I(2444239,43219,f.TAI),19),new s(new I(2444786,43220,f.TAI),20),new s(new I(2445151,43221,f.TAI),21),new s(new I(2445516,43222,f.TAI),22),new s(new I(2446247,43223,f.TAI),23),new s(new I(2447161,43224,f.TAI),24),new s(new I(2447892,43225,f.TAI),25),new s(new I(2448257,43226,f.TAI),26),new s(new I(2448804,43227,f.TAI),27),new s(new I(2449169,43228,f.TAI),28),new s(new I(2449534,43229,f.TAI),29),new s(new I(2450083,43230,f.TAI),30),new s(new I(2450630,43231,f.TAI),31),new s(new I(2451179,43232,f.TAI),32),new s(new I(2453736,43233,f.TAI),33),new s(new I(2454832,43234,f.TAI),34),new s(new I(2456109,43235,f.TAI),35),new s(new I(2457204,43236,f.TAI),36)];return I})})();(function(){var t=e.amdDefine;t("53",["20"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)})})();(function(){var t=e.amdDefine;t("54",["20"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)})})();(function(){var t=e.amdDefine;t("65",["2d","1b","1d","25","28","33","53","54"],function(e,t,r,n,i,a,o,s){"use strict";var u={};function f(e){var t=6.239996+.0172019696544*e;return.001657*Math.sin(t+.01671*Math.sin(t))}var c=32.184;var l=2451545;function d(e,t){t=n.addSeconds(e,c,t);var r=n.totalDays(t)-l;t=n.addSeconds(t,f(r),t);return t}var h=new n(2451545,0,s.TAI);var v=398600435e6;var p=v*(1+.012300034)*328900.56;var m=1e3;var w=i.RADIANS_PER_DEGREE;var y=i.RADIANS_PER_ARCSECOND;var g=14959787e4;var S=new a;function b(n,o,s,u,f,c,l,d){if(s<0){s=-s;f+=i.PI}if(s<0||s>i.PI){throw new r("The inclination is out of range. Inclination must be greater than or equal to zero and less than or equal to Pi radians.")}var h=n*(1-o);var v=u-f;var p=f;var m=E(c-u,o);var w=T(o,0);if(w==="Hyperbolic"&&Math.abs(i.negativePiToPi(m))>=Math.acos(-1/o)){throw new r("The true anomaly of the hyperbolic orbit lies outside of the bounds of the hyperbola.")}C(v,s,p,S);var y=h*(1+o);var g=Math.cos(m);var b=Math.sin(m);var _=1+o*g;if(_<=i.Epsilon10){throw new r("elements cannot be converted to cartesian")}var A=y/_;if(!t(d)){d=new e(A*g,A*b,0)}else{d.x=A*g;d.y=A*b;d.z=0}return a.multiplyByVector(S,d,d)}function T(e,t){if(e<0){throw new r("eccentricity cannot be negative.")}else if(e<=t){return"Circular"}else if(e<1-t){return"Elliptical"}else if(e<=1+t){return"Parabolic"}else{return"Hyperbolic"}}function E(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=P(e,t);return M(n,t)}var _=50;var A=i.EPSILON8;function P(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=Math.floor(e/i.TWO_PI);e-=n*i.TWO_PI;var a=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e));var o=Number.MAX_VALUE;var s;for(s=0;s<_&&Math.abs(o-a)>A;++s){o=a;var u=o-t*Math.sin(o)-e;var f=1-t*Math.cos(o);a=o-u/f}if(s>=_){throw new r("Kepler equation did not converge")}o=a+n*i.TWO_PI;return o}function M(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=Math.floor(e/i.TWO_PI);e-=n*i.TWO_PI;var a=Math.cos(e)-t;var o=Math.sin(e)*Math.sqrt(1-t*t);var s=Math.atan2(o,a);s=i.zeroToTwoPi(s);if(e<0){s-=i.TWO_PI}s+=n*i.TWO_PI;return s}function C(e,n,o,s){if(n<0||n>i.PI){throw new r("inclination out of range")}var u=Math.cos(e);var f=Math.sin(e);var c=Math.cos(n);var l=Math.sin(n);var d=Math.cos(o);var h=Math.sin(o);if(!t(s)){s=new a(d*u-h*f*c,-d*f-h*u*c,h*l,h*u+d*f*c,-h*f+d*u*c,-d*l,f*l,u*l,c)}else{s[0]=d*u-h*f*c;s[1]=h*u+d*f*c;s[2]=f*l;s[3]=-d*f-h*u*c;s[4]=-h*f+d*u*c;s[5]=u*l;s[6]=h*l;s[7]=-d*l;s[8]=c}return s}var I=1.0000010178*g;var x=100.46645683*w;var R=1295977422.83429*y;var O=16002;var D=21863;var q=32004;var N=10931;var G=14529;var L=16368;var B=15318;var H=32794;var k=64*1e-7*g;var z=-152*1e-7*g;var F=62*1e-7*g;var V=-8*1e-7*g;var U=32*1e-7*g;var W=-41*1e-7*g;var j=19*1e-7*g;var X=-11*1e-7*g;var K=-150*1e-7*g;var Q=-46*1e-7*g;var Y=68*1e-7*g;var Z=54*1e-7*g;var J=14*1e-7*g;var $=24*1e-7*g;var ee=-28*1e-7*g;var te=22*1e-7*g;var re=10;var ne=16002;var ie=21863;var ae=10931;var oe=1473;var se=32004;var ue=4387;var fe=73;var ce=-325*1e-7;var le=-322*1e-7;var de=-79*1e-7;var he=232*1e-7;var ve=-52*1e-7;var pe=97*1e-7;var me=55*1e-7;var we=-41*1e-7;var ye=-105*1e-7;var ge=-137*1e-7;var Se=258*1e-7;var be=35*1e-7;var Te=-116*1e-7;var Ee=-88*1e-7;var _e=-112*1e-7;var Ae=-80*1e-7;var Pe=new n(0,0,s.TAI);function Me(e,t){d(e,Pe);var r=Pe.dayNumber-h.dayNumber+(Pe.secondsOfDay-h.secondsOfDay)/o.SECONDS_PER_DAY;var n=r/(o.DAYS_PER_JULIAN_CENTURY*10);var i=.3595362*n;var a=I+k*Math.cos(O*i)+K*Math.sin(O*i)+z*Math.cos(D*i)+Q*Math.sin(D*i)+F*Math.cos(q*i)+Y*Math.sin(q*i)+V*Math.cos(N*i)+Z*Math.sin(N*i)+U*Math.cos(G*i)+J*Math.sin(G*i)+W*Math.cos(L*i)+$*Math.sin(L*i)+j*Math.cos(B*i)+ee*Math.sin(B*i)+X*Math.cos(H*i)+te*Math.sin(H*i);var s=x+R*n+ce*Math.cos(re*i)+ye*Math.sin(re*i)+le*Math.cos(ne*i)+ge*Math.sin(ne*i)+de*Math.cos(ie*i)+Se*Math.sin(ie*i)+he*Math.cos(ae*i)+be*Math.sin(ae*i)+ve*Math.cos(oe*i)+Te*Math.sin(oe*i)+pe*Math.cos(se*i)+Ee*Math.sin(se*i)+me*Math.cos(ue*i)+_e*Math.sin(ue*i)+we*Math.cos(fe*i)+Ae*Math.sin(fe*i);var u=.0167086342-.0004203654*n;var f=102.93734808*w+11612.3529*y*n;var c=469.97289*y*n;var l=174.87317577*w-8679.27034*y*n;return b(a,u,c,f,l,s,p,t)}function Ce(e,t){d(e,Pe);var r=Pe.dayNumber-h.dayNumber+(Pe.secondsOfDay-h.secondsOfDay)/o.SECONDS_PER_DAY;var n=r/o.DAYS_PER_JULIAN_CENTURY;var i=n*n;var a=i*n;var s=a*n;var u=383397.7725+.004*n;var f=.055545526-1.6e-8*n;var c=5.15668983*w;var l=-8e-5*n+.02966*i-42e-6*a-1.3e-7*s;var p=83.35324312*w;var g=14643420.2669*n-38.2702*i-.045047*a+21301e-8*s;var S=125.04455501*w;var T=-6967919.3631*n+6.3602*i+.007625*a-3586e-8*s;var E=218.31664563*w;var _=1732559343.4847*n-6.391*i+.006588*a-3169e-8*s;var A=297.85019547*w+y*(1602961601.209*n-6.3706*i+.006593*a-3169e-8*s);var P=93.27209062*w+y*(1739527262.8478*n-12.7512*i-.001037*a+417e-8*s);var M=134.96340251*w+y*(1717915923.2178*n+31.8792*i+.051635*a-2447e-7*s);var C=357.52910918*w+y*(129596581.0481*n-.5532*i+136e-6*a-1149e-8*s);var I=310.17137918*w-y*(6967051.436*n+6.2068*i+.007618*a-3219e-8*s);var x=2*A;var R=4*A;var O=6*A;var D=2*M;var q=3*M;var N=4*M;var G=2*P;u+=3400.4*Math.cos(x)-635.6*Math.cos(x-M)-235.6*Math.cos(M)+218.1*Math.cos(x-C)+181*Math.cos(x+M);f+=.014216*Math.cos(x-M)+.008551*Math.cos(x-D)-.001383*Math.cos(M)+.001356*Math.cos(x+M)-.001147*Math.cos(R-q)-914e-6*Math.cos(R-D)+869e-6*Math.cos(x-C-M)-627e-6*Math.cos(x)-394e-6*Math.cos(R-N)+282e-6*Math.cos(x-C-D)-279e-6*Math.cos(A-M)-236e-6*Math.cos(D)+231e-6*Math.cos(R)+229e-6*Math.cos(O-N)-201e-6*Math.cos(D-G);l+=486.26*Math.cos(x-G)-40.13*Math.cos(x)+37.51*Math.cos(G)+25.73*Math.cos(D-G)+19.97*Math.cos(x-C-G);g+=-55609*Math.sin(x-M)-34711*Math.sin(x-D)-9792*Math.sin(M)+9385*Math.sin(R-q)+7505*Math.sin(R-D)+5318*Math.sin(x+M)+3484*Math.sin(R-N)-3417*Math.sin(x-C-M)-2530*Math.sin(O-N)-2376*Math.sin(x)-2075*Math.sin(x-q)-1883*Math.sin(D)-1736*Math.sin(O-5*M)+1626*Math.sin(C)-1370*Math.sin(O-q);T+=-5392*Math.sin(x-G)-540*Math.sin(C)-441*Math.sin(x)+423*Math.sin(G)-288*Math.sin(D-G);_+=-3332.9*Math.sin(x)+1197.4*Math.sin(x-M)-662.5*Math.sin(C)+396.3*Math.sin(M)-218*Math.sin(x-C);var L=2*I;var B=3*I;l+=46.997*Math.cos(I)*n-.614*Math.cos(x-G+I)*n+.614*Math.cos(x-G-I)*n-.0297*Math.cos(L)*i-.0335*Math.cos(I)*i+.0012*Math.cos(x-G+L)*i-16e-5*Math.cos(I)*a+4e-5*Math.cos(B)*a+4e-5*Math.cos(L)*a;var H=2.116*Math.sin(I)*n-.111*Math.sin(x-G-I)*n-.0015*Math.sin(I)*i;g+=H;_+=H;T+=-520.77*Math.sin(I)*n+13.66*Math.sin(x-G+I)*n+1.12*Math.sin(x-I)*n-1.06*Math.sin(G-I)*n+.66*Math.sin(L)*i+.371*Math.sin(I)*i-.035*Math.sin(x-G+L)*i-.015*Math.sin(x-G+I)*i+.0014*Math.sin(I)*a-.0011*Math.sin(B)*a-9e-4*Math.sin(L)*a;u*=m;var k=c+l*y;var z=p+g*y;var F=E+_*y;var V=S+T*y;return b(u,f,k,z,V,F,v,t)}var Ie=.012300034;var xe=Ie/(Ie+1)*-1;function Re(t,r){r=Ce(t,r);return e.multiplyByScalar(r,xe,r)}var Oe=new a(1.0000000000000002,5.619723173785822e-16,4.690511510146299e-19,-5.154129427414611e-16,.9174820620691819,-.39777715593191376,-2.23970096136568e-16,.39777715593191376,.9174820620691819);var De=new e;u.computeSunPositionInEarthInertialFrame=function(r,i){if(!t(r)){r=n.now()}if(!t(i)){i=new e}De=Me(r,De);i=e.negate(De,i);Re(r,De);e.subtract(i,De,i);a.multiplyByVector(Oe,i,i);return i};u.computeMoonPositionInEarthInertialFrame=function(e,r){if(!t(e)){e=n.now()}r=Ce(e,r);a.multiplyByVector(Oe,r,r);return r};return u})})();(function(){var t=e.amdDefine;t("3d",["2d","3c","24","1b","1c","1d","20","28","66"],function(e,t,r,n,i,a,o,s,u){"use strict";function f(t,n,i,o){n=r(n,0);i=r(i,0);o=r(o,0);if(n<0||i<0||o<0){throw new a("All radii components must be greater than or equal to zero.")}t._radii=new e(n,i,o);t._radiiSquared=new e(n*n,i*i,o*o);t._radiiToTheFourth=new e(n*n*n*n,i*i*i*i,o*o*o*o);t._oneOverRadii=new e(n===0?0:1/n,i===0?0:1/i,o===0?0:1/o);t._oneOverRadiiSquared=new e(n===0?0:1/(n*n),i===0?0:1/(i*i),o===0?0:1/(o*o));t._minimumRadius=Math.min(n,i,o);t._maximumRadius=Math.max(n,i,o);t._centerToleranceSquared=s.EPSILON1}function c(e,t,r){this._radii=undefined;this._radiiSquared=undefined;this._radiiToTheFourth=undefined;this._oneOverRadii=undefined;this._oneOverRadiiSquared=undefined;this._minimumRadius=undefined;this._maximumRadius=undefined;this._centerToleranceSquared=undefined;f(this,e,t,r)}i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});c.clone=function(t,r){if(!n(t)){return undefined}var i=t._radii;if(!n(r)){return new c(i.x,i.y,i.z)}e.clone(i,r._radii);e.clone(t._radiiSquared,r._radiiSquared);e.clone(t._radiiToTheFourth,r._radiiToTheFourth);e.clone(t._oneOverRadii,r._oneOverRadii);e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared);r._minimumRadius=t._minimumRadius;r._maximumRadius=t._maximumRadius;r._centerToleranceSquared=t._centerToleranceSquared;return r};c.fromCartesian3=function(e,t){if(!n(t)){t=new c}if(!n(e)){return t}f(t,e.x,e.y,e.z);return t};c.WGS84=o(new c(6378137,6378137,6356752.314245179));c.UNIT_SPHERE=o(new c(1,1,1));c.MOON=o(new c(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS));c.prototype.clone=function(e){return c.clone(this,e)};c.packedLength=e.packedLength;c.pack=function(t,i,o){if(!n(t)){throw new a("value is required")}if(!n(i)){throw new a("array is required")}o=r(o,0);e.pack(t._radii,i,o)};c.unpack=function(t,i,o){if(!n(t)){throw new a("array is required")}i=r(i,0);var s=e.unpack(t,i);return c.fromCartesian3(s,o)};c.prototype.geocentricSurfaceNormal=e.normalize;c.prototype.geodeticSurfaceNormalCartographic=function(t,r){if(!n(t)){throw new a("cartographic is required.")}var i=t.longitude;var o=t.latitude;var s=Math.cos(o);var u=s*Math.cos(i);var f=s*Math.sin(i);var c=Math.sin(o);if(!n(r)){r=new e}r.x=u;r.y=f;r.z=c;return e.normalize(r,r)};c.prototype.geodeticSurfaceNormal=function(t,r){if(!n(r)){r=new e}r=e.multiplyComponents(t,this._oneOverRadiiSquared,r);return e.normalize(r,r)};var l=new e;var d=new e;c.prototype.cartographicToCartesian=function(t,r){var i=l;var a=d;this.geodeticSurfaceNormalCartographic(t,i);e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));e.divideByScalar(a,o,a);e.multiplyByScalar(i,t.height,i);if(!n(r)){r=new e}return e.add(a,i,r)};c.prototype.cartographicArrayToCartesianArray=function(e,t){if(!n(e)){throw new a("cartographics is required.")}var r=e.length;if(!n(t)){t=new Array(r)}else{t.length=r}for(var i=0;is.EPSILON12);var O=C*(t*t-r*r)/(r*r);var D=1+O*(4096+O*(O*(320-175*O)-768))/16384;var q=O*(256+O*(O*(74-47*O)-128))/1024;var N=I*I;var G=q*M*(I+q*(P*(2*N-1)-q*I*(4*M*M-3)*(4*N-3)/6)/4);var L=r*D*(A-G);var B=Math.atan2(p*_,y-S*E);var H=Math.atan2(h*_,y*E-S);e._distance=L;e._startHeading=B;e._endHeading=H;e._uSquared=O}function d(r,n,i,o){var s=e.normalize(o.cartographicToCartesian(n,v),h);var f=e.normalize(o.cartographicToCartesian(i,v),v);if(Math.abs(Math.abs(e.angleBetween(s,f))-Math.PI)<.0125){throw new a("geodesic position is not unique")}l(r,o.maximumRadius,o.minimumRadius,n.longitude,n.latitude,i.longitude,i.latitude);r._start=t.clone(n,r._start);r._end=t.clone(i,r._end);r._start.height=0;r._end.height=0;u(r)}var h=new e;var v=new e;function p(e,i,a){var s=r(a,o.WGS84);this._ellipsoid=s;this._start=new t;this._end=new t;this._constants={};this._startHeading=undefined;this._endHeading=undefined;this._distance=undefined;this._uSquared=undefined;if(n(e)&&n(i)){d(this,e,i,s)}}i(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting surfaceDistance")}return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting startHeading")}return this._startHeading}},endHeading:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting endHeading")}return this._endHeading}}});p.prototype.setEndPoints=function(e,t){if(!n(e)){throw new a("start cartographic position is required")}if(!n(t)){throw new a("end cartgraphic position is required")}d(this,e,t,this._ellipsoid)};p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};p.prototype.interpolateUsingSurfaceDistance=function(e,r){if(!n(this._distance)){throw new a("start and end must be set before calling funciton interpolateUsingSurfaceDistance")}var i=this._constants;var o=i.distanceRatio+e/i.b;var s=Math.cos(2*o);var u=Math.cos(4*o);var f=Math.cos(6*o);var l=Math.sin(2*o);var d=Math.sin(4*o);var h=Math.sin(6*o);var v=Math.sin(8*o);var p=o*o;var m=o*p;var w=i.u8Over256;var y=i.u2Over4;var g=i.u6Over64;var S=i.u4Over16;var b=2*m*w*s/3+o*(1-y+7*S/4-15*g/4+579*w/64-(S-15*g/4+187*w/16)*s-(5*g/4-115*w/16)*u-29*w*f/16)+(y/2-S+71*g/32-85*w/16)*l+(5*S/16-5*g/4+383*w/96)*d-p*((g-11*w/2)*l+5*w*d/2)+(29*g/96-29*w/16)*h+539*w*v/1536;var T=Math.asin(Math.sin(b)*i.cosineAlpha);var E=Math.atan(i.a/i.b*Math.tan(T));b=b-i.sigma;var _=Math.cos(2*i.sigma+b);var A=Math.sin(b);var P=Math.cos(b);var M=i.cosineU*P;var C=i.sineU*A;var I=Math.atan2(A*i.sineHeading,M-C*i.cosineHeading);var x=I-c(i.f,i.sineAlpha,i.cosineSquaredAlpha,b,A,P,_);if(n(r)){r.longitude=this._start.longitude+x;r.latitude=E;r.height=0;return r}return new t(this._start.longitude+x,E,0)};return p})})();(function(){var t=e.amdDefine;t("66",["2d","1b","1d","28"],function(e,t,r,n){"use strict";var i=new e;var a=new e;function o(o,s,u,f,c){if(!t(o)){throw new r("cartesian is required.")}if(!t(s)){throw new r("oneOverRadii is required.")}if(!t(u)){throw new r("oneOverRadiiSquared is required.")}if(!t(f)){throw new r("centerToleranceSquared is required.")}var l=o.x;var d=o.y;var h=o.z;var v=s.x;var p=s.y;var m=s.z;var w=l*l*v*v;var y=d*d*p*p;var g=h*h*m*m;var S=w+y+g;var b=Math.sqrt(1/S);var T=e.multiplyByScalar(o,b,i);if(Sn.EPSILON12);if(!t(c)){return new e(l*R,d*O,h*D)}c.x=l*R;c.y=d*O;c.z=h*D;return c}return o})})();(function(){var t=e.amdDefine;t("3c",["2d","24","1b","1d","20","28","66"],function(e,t,r,n,i,a,o){"use strict";function s(e,r,n){this.longitude=t(e,0);this.latitude=t(r,0);this.height=t(n,0)}s.fromRadians=function(e,i,a,o){if(!r(e)){throw new n("longitude is required.")}if(!r(i)){throw new n("latitude is required.")}a=t(a,0);if(!r(o)){return new s(e,i,a)}o.longitude=e;o.latitude=i;o.height=a;return o};s.fromDegrees=function(e,t,i,o){if(!r(e)){throw new n("longitude is required.")}if(!r(t)){throw new n("latitude is required.")}e=a.toRadians(e);t=a.toRadians(t);return s.fromRadians(e,t,i,o)};var u=new e;var f=new e;var c=new e;var l=new e(1/6378137,1/6378137,1/6356752.314245179);var d=new e(1/(6378137*6378137),1/(6378137*6378137),1/(6356752.314245179*6356752.314245179));var h=a.EPSILON1;s.fromCartesian=function(t,n,i){var v=r(n)?n.oneOverRadii:l;var p=r(n)?n.oneOverRadiiSquared:d;var m=r(n)?n._centerToleranceSquared:h;var w=o(t,v,p,m,f);if(!r(w)){return undefined}var y=e.multiplyComponents(t,p,u);y=e.normalize(y,y);var g=e.subtract(t,w,c);var S=Math.atan2(y.y,y.x);var b=Math.asin(y.z);var T=a.sign(e.dot(g,t))*e.magnitude(g);if(!r(i)){return new s(S,b,T)}i.longitude=S;i.latitude=b;i.height=T;return i};s.clone=function(e,t){if(!r(e)){return undefined}if(!r(t)){return new s(e.longitude,e.latitude,e.height)}t.longitude=e.longitude;t.latitude=e.latitude;t.height=e.height;return t};s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};s.equalsEpsilon=function(e,t,i){if(typeof i!=="number"){throw new n("epsilon is required and must be a number.")}return e===t||r(e)&&r(t)&&Math.abs(e.longitude-t.longitude)<=i&&Math.abs(e.latitude-t.latitude)<=i&&Math.abs(e.height-t.height)<=i};s.ZERO=i(new s(0,0,0));s.prototype.clone=function(e){return s.clone(this,e)};s.prototype.equals=function(e){return s.equals(this,e)};s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)};s.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"};return s})})();(function(){var t=e.amdDefine;t("68",["1d","69"],function(e,t){"use strict";var r={};r.computeDiscriminant=function(t,r,n,i){if(typeof t!=="number"){throw new e("a is a required number.")}if(typeof r!=="number"){throw new e("b is a required number.")}if(typeof n!=="number"){throw new e("c is a required number.")}if(typeof i!=="number"){throw new e("d is a required number.")}var a=t*t;var o=r*r;var s=n*n;var u=i*i;var f=18*t*r*n*i+o*s-27*a*u-4*(t*s*n+o*r*i);return f};function n(e,t,r,n){var i=e;var a=t/3;var o=r/3;var s=n;var u=i*o;var f=a*s;var c=a*a;var l=o*o;var d=i*o-c;var h=i*s-a*o;var v=a*s-l;var p=4*d*v-h*h;var m;var w;if(p<0){var y;var g;var S;if(c*f>=u*l){y=i;g=d;S=-2*a*d+i*h}else{y=s;g=v;S=-s*h+2*o*v}var b=S<0?-1:1;var T=-b*Math.abs(y)*Math.sqrt(-p);w=-S+T;var E=w/2;var _=E<0?-Math.pow(-E,1/3):Math.pow(E,1/3);var A=w===T?-_:-g/_;m=g<=0?_+A:-S/(_*_+A*A+g);if(c*f>=u*l){return[(m-a)/i]}return[-s/(m+o)]}var P=d;var M=-2*a*d+i*h;var C=v;var I=-s*h+2*o*v;var x=Math.sqrt(p);var R=Math.sqrt(3)/2;var O=Math.abs(Math.atan2(i*x,-M)/3);m=2*Math.sqrt(-P);var D=Math.cos(O);w=m*D;var q=m*(-D/2-R*Math.sin(O));var N=w+q>2*a?w-a:q-a;var G=i;var L=N/G;O=Math.abs(Math.atan2(s*x,-I)/3);m=2*Math.sqrt(-C);D=Math.cos(O);w=m*D;q=m*(-D/2-R*Math.sin(O));var B=-s;var H=w+q<2*o?w+o:q+o;var k=B/H;var z=G*H;var F=-N*H-G*B;var V=N*B;var U=(o*F-a*V)/(-a*F+o*z);if(L<=U){if(L<=k){if(U<=k){return[L,U,k]}return[L,k,U]}return[k,L,U]}if(L<=k){return[U,L,k]}if(U<=k){return[U,k,L]}return[k,U,L]}r.computeRealRoots=function(r,i,a,o){if(typeof r!=="number"){throw new e("a is a required number.")}if(typeof i!=="number"){throw new e("b is a required number.")}if(typeof a!=="number"){throw new e("c is a required number.")}if(typeof o!=="number"){throw new e("d is a required number.")}var s;var u;if(r===0){return t.computeRealRoots(i,a,o)}else if(i===0){if(a===0){if(o===0){return[0,0,0]}u=-o/r;var f=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3);return[f,f,f]}else if(o===0){s=t.computeRealRoots(r,0,a);if(s.Length===0){return[0]}return[s[0],0,s[1]]}return n(r,0,a,o)}else if(a===0){if(o===0){u=-i/r;if(u<0){return[u,0,0]}return[0,0,u]}return n(r,i,0,o)}else if(o===0){s=t.computeRealRoots(r,i,a);if(s.length===0){return[0]}else if(s[1]<=0){return[s[0],s[1],0]}else if(s[0]>=0){return[0,s[0],s[1]]}return[s[0],0,s[1]]}return n(r,i,a,o); -};return r})})();(function(){var t=e.amdDefine;t("69",["1d","28"],function(e,t){"use strict";var r={};r.computeDiscriminant=function(t,r,n){if(typeof t!=="number"){throw new e("a is a required number.")}if(typeof r!=="number"){throw new e("b is a required number.")}if(typeof n!=="number"){throw new e("c is a required number.")}var i=r*r-4*t*n;return i};function n(e,r,n){var i=e+r;if(t.sign(e)!==t.sign(r)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(r)))u&&u/s0){return[h/r,a/h]}return[a/h,h/r]};return r})})();(function(){var t=e.amdDefine;t("6a",["68","1d","28","69"],function(e,t,r,n){"use strict";var i={};i.computeDiscriminant=function(e,r,n,i,a){if(typeof e!=="number"){throw new t("a is a required number.")}if(typeof r!=="number"){throw new t("b is a required number.")}if(typeof n!=="number"){throw new t("c is a required number.")}if(typeof i!=="number"){throw new t("d is a required number.")}if(typeof a!=="number"){throw new t("e is a required number.")}var o=e*e;var s=o*e;var u=r*r;var f=u*r;var c=n*n;var l=c*n;var d=i*i;var h=d*i;var v=a*a;var p=v*a;var m=u*c*d-4*f*h-4*e*l*d+18*e*r*n*h-27*o*d*d+256*s*p+a*(18*f*n*i-4*u*l+16*e*c*c-80*e*r*c*i-6*e*u*d+144*o*n*d)+v*(144*e*u*n-27*u*u-128*o*c-192*o*r*i);return m};function a(t,i,a,o){var s=t*t;var u=i-3*s/8;var f=a-i*t/2+s*t/8;var c=o-a*t/4+i*s/16-3*s*s/256;var l=e.computeRealRoots(1,2*u,u*u-4*c,-f*f);if(l.length>0){var d=-t/4;var h=l[l.length-1];if(Math.abs(h)=0&&m>=0){var y=Math.sqrt(p);var g=Math.sqrt(m);return[d-g,d-y,d+y,d+g]}else if(p>=0&&m<0){w=Math.sqrt(p);return[d-w,d+w]}else if(p<0&&m>=0){w=Math.sqrt(m);return[d-w,d+w]}}return[]}else if(h>0){var S=Math.sqrt(h);var b=(u+h-f/S)/2;var T=(u+h+f/S)/2;var E=n.computeRealRoots(1,S,b);var _=n.computeRealRoots(1,-S,T);if(E.length!==0){E[0]+=d;E[1]+=d;if(_.length!==0){_[0]+=d;_[1]+=d;if(E[1]<=_[0]){return[E[0],E[1],_[0],_[1]]}else if(_[1]<=E[0]){return[_[0],_[1],E[0],E[1]]}else if(E[0]>=_[0]&&E[1]<=_[1]){return[_[0],E[0],E[1],_[1]]}else if(_[0]>=E[0]&&_[1]<=E[1]){return[E[0],_[0],_[1],E[1]]}else if(E[0]>_[0]&&E[0]<_[1]){return[_[0],E[0],_[1],E[1]]}return[E[0],_[0],E[1],_[1]]}return E}if(_.length!==0){_[0]+=d;_[1]+=d;return _}return[]}}return[]}function o(t,i,a,o){var s=a*a;var u=i*i;var f=t*t;var c=-2*i;var l=a*t+u-4*o;var d=f*o-a*i*t+s;var h=e.computeRealRoots(1,c,l,d);if(h.length>0){var v=h[0];var p=i-v;var m=p*p;var w=t/2;var y=p/2;var g=m-4*o;var S=m+4*Math.abs(o);var b=f-4*v;var T=f+4*Math.abs(v);var E;var _;if(v<0||g*T=O[0]&&R[1]<=O[1]){return[O[0],R[0],R[1],O[1]]}else if(O[0]>=R[0]&&O[1]<=R[1]){return[R[0],O[0],O[1],R[1]]}else if(R[0]>O[0]&&R[0]S){return undefined}T=e.cross(b,w,p);_=e.dot(m,T);if(_<0||E+_>S){return undefined}A=e.dot(y,T)/S}else{if(Math.abs(S)1){return undefined}T=e.cross(b,w,p);_=e.dot(m,T)*P;if(_<0||E+_>1){return undefined}A=e.dot(y,T)*P}return A}c.rayTriangle=function(t,r,i,a,o,s){var u=m(t,r,i,a,o);if(!n(u)||u<0){return undefined}if(!n(s)){s=new e}e.multiplyByScalar(t.direction,u,s);return e.add(t.origin,s,s)};var w=new f;c.lineSegmentTriangle=function(t,r,a,o,s,u,f){if(!n(t)){throw new i("v0 is required.")}if(!n(r)){throw new i("v1 is required.")}var c=w;e.clone(t,c.origin);e.subtract(r,t,c.direction);e.normalize(c.direction,c.direction);var l=m(c,a,o,s,u);if(!n(l)||l<0||l>e.distance(t,r)){return undefined}if(!n(f)){f=new e}e.multiplyByScalar(c.direction,l,f);return e.add(c.origin,f,f)};function y(e,t,r,n){var i=t*t-4*e*r;if(i<0){return undefined}else if(i>0){var a=1/(2*e);var o=Math.sqrt(i);var s=(-t+o)*a;var u=(-t-o)*a;if(sf){return undefined}o.start=Math.max(o.start,0);o.stop=Math.min(o.stop,f);return o};var T=new e;var E=new e;c.rayEllipsoid=function(t,r){if(!n(t)){throw new i("ray is required.")}if(!n(r)){throw new i("ellipsoid is required.")}var a=r.oneOverRadii;var o=e.multiplyComponents(a,t.origin,T);var s=e.multiplyComponents(a,t.direction,E);var u=e.magnitudeSquared(o);var f=e.dot(o,s);var c,l,d,h,v;if(u>1){if(f>=0){return undefined}var p=f*f;c=u-1;l=e.magnitudeSquared(s);d=l*c;if(pd){h=f*f-d;v=-f+Math.sqrt(h);var m=v/l;var w=c/v;if(m0){y.push(new e(i,f*N,f*-B))}else if(B!==0){y.push(new e(i,f*N,f*-B));y.push(new e(i,f*N,f*B));++q}else{y.push(new e(i,f*N,f*B))}}return y}var P=new e;var M=new e;var C=new e;var I=new e;var x=new e;var R=new o;var O=new o;var D=new o;var q=new o;var N=new o;var G=new o;var L=new o;var B=new e;var H=new e;var k=new t;c.grazingAltitudeLocation=function(t,r){if(!n(t)){throw new i("ray is required.")}if(!n(r)){throw new i("ellipsoid is required.")}var s=t.origin;var u=t.direction;var f=r.geodeticSurfaceNormal(s,P);if(e.dot(u,f)>=0){return s}var c=n(this.rayEllipsoid(t,r));var l=r.transformPositionToScaledSpace(u,P);var d=e.normalize(l,l);var h=e.mostOrthogonalAxis(l,I);var v=e.normalize(e.cross(h,d,M),M);var p=e.normalize(e.cross(d,v,C),C);var m=R;m[0]=d.x;m[1]=d.y;m[2]=d.z;m[3]=v.x;m[4]=v.y;m[5]=v.z;m[6]=p.x;m[7]=p.y;m[8]=p.z;var w=o.transpose(m,O);var y=o.fromScale(r.radii,D);var g=o.fromScale(r.oneOverRadii,q);var S=N;S[0]=0;S[1]=-u.z;S[2]=u.y;S[3]=u.z;S[4]=0;S[5]=-u.x;S[6]=-u.y;S[7]=u.x;S[8]=0;var b=o.multiply(o.multiply(w,g,G),S,G);var T=o.multiply(o.multiply(b,y,L),m,L);var E=o.multiplyByVector(b,s,x);var _=A(T,e.negate(E,P),0,0,1);var z;var F;var V=_.length;if(V>0){var U=e.clone(e.ZERO,H);var W=Number.NEGATIVE_INFINITY;for(var j=0;jW){W=K;U=e.clone(z,U)}}var Q=r.cartesianToCartographic(U,k);W=a.clamp(W,0,1);F=e.magnitude(e.subtract(U,s,I))*Math.sqrt(1-W*W);F=c?-F:F;Q.height=F;return r.cartographicToCartesian(Q,new e)}return undefined};var z=new e;c.lineSegmentPlane=function(t,r,o,s){if(!n(t)){throw new i("endPoint0 is required.")}if(!n(r)){throw new i("endPoint1 is required.")}if(!n(o)){throw new i("plane is required.")}if(!n(s)){s=new e}var u=e.subtract(r,t,z);var f=o.normal;var c=e.dot(f,u);if(Math.abs(c)1){return undefined}e.multiplyByScalar(u,d,s);e.add(t,s,s);return s};c.trianglePlaneIntersection=function(t,r,a,o){if(!n(t)||!n(r)||!n(a)||!n(o)){throw new i("p0, p1, p2, and plane are required.")}var s=o.normal;var u=o.distance;var f=e.dot(s,t)+u<0;var l=e.dot(s,r)+u<0;var d=e.dot(s,a)+u<0;var h=0;h+=f?1:0;h+=l?1:0;h+=d?1:0;var v,p;if(h===1||h===2){v=new e;p=new e}if(h===1){if(f){c.lineSegmentPlane(t,r,o,v);c.lineSegmentPlane(t,a,o,p);return{positions:[t,r,a,v,p],indices:[0,3,4,1,2,4,1,4,3]}}else if(l){c.lineSegmentPlane(r,a,o,v);c.lineSegmentPlane(r,t,o,p);return{positions:[t,r,a,v,p],indices:[1,3,4,2,0,4,2,4,3]}}else if(d){c.lineSegmentPlane(a,t,o,v);c.lineSegmentPlane(a,r,o,p);return{positions:[t,r,a,v,p],indices:[2,3,4,0,1,4,0,4,3]}}}else if(h===2){if(!f){c.lineSegmentPlane(r,t,o,v);c.lineSegmentPlane(a,t,o,p);return{positions:[t,r,a,v,p],indices:[1,2,4,1,4,3,0,3,4]}}else if(!l){c.lineSegmentPlane(a,r,o,v);c.lineSegmentPlane(t,r,o,p);return{positions:[t,r,a,v,p],indices:[2,0,4,2,4,3,1,3,4]}}else if(!d){c.lineSegmentPlane(t,a,o,v);c.lineSegmentPlane(r,a,o,p);return{positions:[t,r,a,v,p],indices:[0,1,4,0,4,3,2,3,4]}}}return undefined};return c})})();(function(){var t=e.amdDefine;t("6d",["1b"],function(e){"use strict";var t=Array.isArray;if(!e(t)){t=function(e){return Object.prototype.toString.call(e)==="[object Array]"}}return t})})();(function(){var t=e.amdDefine;t("44",["24","1b","1d","20","28"],function(e,t,r,n,i){"use strict";function a(t,r,n,i){this.x=e(t,0);this.y=e(r,0);this.z=e(n,0);this.w=e(i,0)}a.fromElements=function(e,r,n,i,o){if(!t(o)){return new a(e,r,n,i)}o.x=e;o.y=r;o.z=n;o.w=i;return o};a.fromColor=function(e,n){if(!t(e)){throw new r("color is required")}if(!t(n)){return new a(e.red,e.green,e.blue,e.alpha)}n.x=e.red;n.y=e.green;n.z=e.blue;n.w=e.alpha;return n};a.clone=function(e,r){if(!t(e)){return undefined}if(!t(r)){return new a(e.x,e.y,e.z,e.w)}r.x=e.x;r.y=e.y;r.z=e.z;r.w=e.w;return r};a.packedLength=4;a.pack=function(n,i,a){if(!t(n)){throw new r("value is required")}if(!t(i)){throw new r("array is required")}a=e(a,0);i[a++]=n.x;i[a++]=n.y;i[a++]=n.z;i[a]=n.w};a.unpack=function(n,i,o){if(!t(n)){throw new r("array is required")}i=e(i,0);if(!t(o)){o=new a}o.x=n[i++];o.y=n[i++];o.z=n[i++];o.w=n[i];return o};a.packArray=function(e,n){if(!t(e)){throw new r("array is required")}var i=e.length;if(!t(n)){n=new Array(i*4)}else{n.length=i*4}for(var o=0;o2){throw new i("row must be 0, 1, or 2.")}if(typeof e!=="number"||e<0||e>2){throw new i("column must be 0, 1, or 2.")}return e*3+t};s.getColumn=function(e,t,n){if(!r(e)){throw new i("matrix is required.")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(n)){throw new i("result is required")}var a=t*3;var o=e[a];var s=e[a+1];var u=e[a+2];n.x=o;n.y=s;n.z=u;return n};s.setColumn=function(e,t,n,a){if(!r(e)){throw new i("matrix is required")}if(!r(n)){throw new i("cartesian is required")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(a)){throw new i("result is required")}a=s.clone(e,a);var o=t*3;a[o]=n.x;a[o+1]=n.y;a[o+2]=n.z;return a};s.getRow=function(e,t,n){if(!r(e)){throw new i("matrix is required.")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(n)){throw new i("result is required")}var a=e[t];var o=e[t+3];var s=e[t+6];n.x=a;n.y=o;n.z=s;return n};s.setRow=function(e,t,n,a){if(!r(e)){throw new i("matrix is required")}if(!r(n)){throw new i("cartesian is required")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(a)){throw new i("result is required")}a=s.clone(e,a);a[t]=n.x;a[t+3]=n.y;a[t+6]=n.z;return a};var u=new e;s.getScale=function(t,n){if(!r(t)){throw new i("matrix is required.")}if(!r(n)){throw new i("result is required")}n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],u));n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],u));n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],u));return n};var f=new e;s.getMaximumScale=function(t){s.getScale(t,f);return e.maximumComponent(f)};s.multiply=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}var a=e[0]*t[0]+e[3]*t[1]+e[6]*t[2];var o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2];var s=e[2]*t[0]+e[5]*t[1]+e[8]*t[2];var u=e[0]*t[3]+e[3]*t[4]+e[6]*t[5];var f=e[1]*t[3]+e[4]*t[4]+e[7]*t[5];var c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5];var l=e[0]*t[6]+e[3]*t[7]+e[6]*t[8];var d=e[1]*t[6]+e[4]*t[7]+e[7]*t[8];var h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];n[0]=a;n[1]=o;n[2]=s;n[3]=u;n[4]=f;n[5]=c;n[6]=l;n[7]=d;n[8]=h;return n};s.add=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]+t[0];n[1]=e[1]+t[1];n[2]=e[2]+t[2];n[3]=e[3]+t[3];n[4]=e[4]+t[4];n[5]=e[5]+t[5];n[6]=e[6]+t[6];n[7]=e[7]+t[7];n[8]=e[8]+t[8];return n};s.subtract=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]-t[0];n[1]=e[1]-t[1];n[2]=e[2]-t[2];n[3]=e[3]-t[3];n[4]=e[4]-t[4];n[5]=e[5]-t[5];n[6]=e[6]-t[6];n[7]=e[7]-t[7];n[8]=e[8]-t[8];return n};s.multiplyByVector=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("cartesian is required")}if(!r(n)){throw new i("result is required")}var a=t.x;var o=t.y;var s=t.z;var u=e[0]*a+e[3]*o+e[6]*s;var f=e[1]*a+e[4]*o+e[7]*s;var c=e[2]*a+e[5]*o+e[8]*s;n.x=u;n.y=f;n.z=c;return n};s.multiplyByScalar=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(typeof t!=="number"){throw new i("scalar must be a number")}if(!r(n)){throw new i("result is required")}n[0]=e[0]*t;n[1]=e[1]*t;n[2]=e[2]*t;n[3]=e[3]*t;n[4]=e[4]*t;n[5]=e[5]*t;n[6]=e[6]*t;n[7]=e[7]*t;n[8]=e[8]*t;return n};s.multiplyByScale=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("scale is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]*t.x;n[1]=e[1]*t.x;n[2]=e[2]*t.x;n[3]=e[3]*t.y;n[4]=e[4]*t.y;n[5]=e[5]*t.y;n[6]=e[6]*t.z;n[7]=e[7]*t.z;n[8]=e[8]*t.z;return n};s.negate=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];t[3]=-e[3];t[4]=-e[4];t[5]=-e[5];t[6]=-e[6];t[7]=-e[7];t[8]=-e[8];return t};s.transpose=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}var n=e[0];var a=e[3];var o=e[6];var s=e[1];var u=e[4];var f=e[7];var c=e[2];var l=e[5];var d=e[8];t[0]=n;t[1]=a;t[2]=o;t[3]=s;t[4]=u;t[5]=f;t[6]=c;t[7]=l;t[8]=d;return t};function c(e){var t=0;for(var r=0;r<9;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}var l=[1,0,0];var d=[2,2,1];function h(e){var t=0;for(var r=0;r<3;++r){var n=e[s.getElementIndex(d[r],l[r])];t+=2*n*n}return Math.sqrt(t)}function v(e,t){var r=o.EPSILON15;var n=0;var i=1;for(var a=0;a<3;++a){var u=Math.abs(e[s.getElementIndex(d[a],l[a])]);if(u>n){i=a;n=u}}var f=1;var c=0;var h=l[i];var v=d[i];if(Math.abs(e[s.getElementIndex(v,h)])>r){var p=e[s.getElementIndex(v,v)];var m=e[s.getElementIndex(h,h)];var w=e[s.getElementIndex(v,h)];var y=(p-m)/2/w;var g;if(y<0){g=-1/(-y+Math.sqrt(1+y*y))}else{g=1/(y+Math.sqrt(1+y*y))}f=1/Math.sqrt(1+g*g);c=g*f}t=s.clone(s.IDENTITY,t);t[s.getElementIndex(h,h)]=t[s.getElementIndex(v,v)]=f;t[s.getElementIndex(v,h)]=c;t[s.getElementIndex(h,v)]=-c;return t}var p=new s;var m=new s;s.computeEigenDecomposition=function(e,t){if(!r(e)){throw new i("matrix is required.")}var n=o.EPSILON20;var a=10;var u=0;var f=0;if(!r(t)){t={}}var l=t.unitary=s.clone(s.IDENTITY,t.unitary);var d=t.diagonal=s.clone(e,t.diagonal);var w=n*c(d);while(fw){v(d,p);s.transpose(p,m);s.multiply(d,p,d);s.multiply(m,d,d);s.multiply(l,p,l);if(++u>2){++f;u=0}}return t};s.abs=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}t[0]=Math.abs(e[0]);t[1]=Math.abs(e[1]);t[2]=Math.abs(e[2]);t[3]=Math.abs(e[3]);t[4]=Math.abs(e[4]);t[5]=Math.abs(e[5]);t[6]=Math.abs(e[6]);t[7]=Math.abs(e[7]);t[8]=Math.abs(e[8]);return t};s.determinant=function(e){if(!r(e)){throw new i("matrix is required")}var t=e[0];var n=e[3];var a=e[6];var o=e[1];var s=e[4];var u=e[7];var f=e[2];var c=e[5];var l=e[8];return t*(s*l-c*u)+o*(c*a-n*l)+f*(n*u-s*a)};s.inverse=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}var n=e[0];var a=e[1];var u=e[2];var f=e[3];var c=e[4];var l=e[5];var d=e[6];var h=e[7];var v=e[8];var p=s.determinant(e);if(Math.abs(p)<=o.EPSILON15){throw new i("matrix is not invertible")}t[0]=c*v-h*l;t[1]=h*u-a*v;t[2]=a*l-c*u;t[3]=d*l-f*v;t[4]=n*v-d*u;t[5]=f*u-n*l;t[6]=f*h-d*c;t[7]=d*a-n*h;t[8]=n*c-f*a;var m=1/p;return s.multiplyByScalar(t,m,t)};s.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};s.equalsEpsilon=function(e,t,n){if(typeof n!=="number"){throw new i("epsilon must be a number")}return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};s.IDENTITY=a(new s(1,0,0,0,1,0,0,0,1));s.ZERO=a(new s(0,0,0,0,0,0,0,0,0));s.COLUMN0ROW0=0;s.COLUMN0ROW1=1;s.COLUMN0ROW2=2;s.COLUMN1ROW0=3;s.COLUMN1ROW1=4;s.COLUMN1ROW2=5;s.COLUMN2ROW0=6;s.COLUMN2ROW1=7;s.COLUMN2ROW2=8;n(s.prototype,{length:{get:function(){return s.packedLength}}});s.prototype.clone=function(e){return s.clone(this,e)};s.prototype.equals=function(e){return s.equals(this,e)};s.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]};s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)};s.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"};return s})})();(function(){var t=e.amdDefine;t("39",["1b"],function(e){"use strict";function t(e){this.name="RuntimeError";this.message=e;var t;try{throw new Error}catch(e){t=e.stack}this.stack=t}if(e(Object.create)){t.prototype=Object.create(Error.prototype);t.prototype.constructor=t}t.prototype.toString=function(){var t=this.name+": "+this.message;if(e(this.stack)){t+="\n"+this.stack.toString()}return t};return t})})();(function(){var t=e.amdDefine;t("34",["2d","44","24","1b","1c","1d","20","28","33","39"],function(e,t,r,n,i,a,o,s,u,f){"use strict";function c(e,t,n,i,a,o,s,u,f,c,l,d,h,v,p,m){this[0]=r(e,0);this[1]=r(a,0);this[2]=r(f,0);this[3]=r(h,0);this[4]=r(t,0);this[5]=r(o,0);this[6]=r(c,0);this[7]=r(v,0);this[8]=r(n,0);this[9]=r(s,0);this[10]=r(l,0);this[11]=r(p,0);this[12]=r(i,0);this[13]=r(u,0); -this[14]=r(d,0);this[15]=r(m,0)}c.packedLength=16;c.pack=function(e,t,i){if(!n(e)){throw new a("value is required")}if(!n(t)){throw new a("array is required")}i=r(i,0);t[i++]=e[0];t[i++]=e[1];t[i++]=e[2];t[i++]=e[3];t[i++]=e[4];t[i++]=e[5];t[i++]=e[6];t[i++]=e[7];t[i++]=e[8];t[i++]=e[9];t[i++]=e[10];t[i++]=e[11];t[i++]=e[12];t[i++]=e[13];t[i++]=e[14];t[i]=e[15]};c.unpack=function(e,t,i){if(!n(e)){throw new a("array is required")}t=r(t,0);if(!n(i)){i=new c}i[0]=e[t++];i[1]=e[t++];i[2]=e[t++];i[3]=e[t++];i[4]=e[t++];i[5]=e[t++];i[6]=e[t++];i[7]=e[t++];i[8]=e[t++];i[9]=e[t++];i[10]=e[t++];i[11]=e[t++];i[12]=e[t++];i[13]=e[t++];i[14]=e[t++];i[15]=e[t];return i};c.clone=function(e,t){if(!n(e)){return undefined}if(!n(t)){return new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];t[9]=e[9];t[10]=e[10];t[11]=e[11];t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t};c.fromArray=c.unpack;c.fromColumnMajorArray=function(e,t){if(!n(e)){throw new a("values is required")}return c.clone(e,t)};c.fromRowMajorArray=function(e,t){if(!n(e)){throw new a("values is required.")}if(!n(t)){return new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}t[0]=e[0];t[1]=e[4];t[2]=e[8];t[3]=e[12];t[4]=e[1];t[5]=e[5];t[6]=e[9];t[7]=e[13];t[8]=e[2];t[9]=e[6];t[10]=e[10];t[11]=e[14];t[12]=e[3];t[13]=e[7];t[14]=e[11];t[15]=e[15];return t};c.fromRotationTranslation=function(t,i,o){if(!n(t)){throw new a("rotation is required.")}i=r(i,e.ZERO);if(!n(o)){return new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)}o[0]=t[0];o[1]=t[1];o[2]=t[2];o[3]=0;o[4]=t[3];o[5]=t[4];o[6]=t[5];o[7]=0;o[8]=t[6];o[9]=t[7];o[10]=t[8];o[11]=0;o[12]=i.x;o[13]=i.y;o[14]=i.z;o[15]=1;return o};c.fromTranslationQuaternionRotationScale=function(e,t,r,i){if(!n(e)){throw new a("translation is required.")}if(!n(t)){throw new a("rotation is required.")}if(!n(r)){throw new a("scale is required.")}if(!n(i)){i=new c}var o=r.x;var s=r.y;var u=r.z;var f=t.x*t.x;var l=t.x*t.y;var d=t.x*t.z;var h=t.x*t.w;var v=t.y*t.y;var p=t.y*t.z;var m=t.y*t.w;var w=t.z*t.z;var y=t.z*t.w;var g=t.w*t.w;var S=f-v-w+g;var b=2*(l-y);var T=2*(d+m);var E=2*(l+y);var _=-f+v-w+g;var A=2*(p-h);var P=2*(d-m);var M=2*(p+h);var C=-f-v+w+g;i[0]=S*o;i[1]=E*o;i[2]=P*o;i[3]=0;i[4]=b*s;i[5]=_*s;i[6]=M*s;i[7]=0;i[8]=T*u;i[9]=A*u;i[10]=C*u;i[11]=0;i[12]=e.x;i[13]=e.y;i[14]=e.z;i[15]=1;return i};c.fromTranslationRotationScale=function(e,t){if(!n(e)){throw new a("translationRotationScale is required.")}return c.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};c.fromTranslation=function(e,t){if(!n(e)){throw new a("translation is required.")}return c.fromRotationTranslation(u.IDENTITY,e,t)};c.fromScale=function(e,t){if(!n(e)){throw new a("scale is required.")}if(!n(t)){return new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)}t[0]=e.x;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=e.y;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=e.z;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t};c.fromUniformScale=function(e,t){if(typeof e!=="number"){throw new a("scale is required.")}if(!n(t)){return new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)}t[0]=e;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=e;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=e;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t};var l=new e;var d=new e;var h=new e;c.fromCamera=function(t,r){if(!n(t)){throw new a("camera is required.")}var i=t.position;var o=t.direction;var s=t.up;if(!n(i)){throw new a("camera.position is required.")}if(!n(o)){throw new a("camera.direction is required.")}if(!n(s)){throw new a("camera.up is required.")}e.normalize(o,l);e.normalize(e.cross(l,s,d),d);e.normalize(e.cross(d,l,h),h);var u=d.x;var f=d.y;var v=d.z;var p=l.x;var m=l.y;var w=l.z;var y=h.x;var g=h.y;var S=h.z;var b=i.x;var T=i.y;var E=i.z;var _=u*-b+f*-T+v*-E;var A=y*-b+g*-T+S*-E;var P=p*b+m*T+w*E;if(!n(r)){return new c(u,f,v,_,y,g,S,A,-p,-m,-w,P,0,0,0,1)}r[0]=u;r[1]=y;r[2]=-p;r[3]=0;r[4]=f;r[5]=g;r[6]=-m;r[7]=0;r[8]=v;r[9]=S;r[10]=-w;r[11]=0;r[12]=_;r[13]=A;r[14]=P;r[15]=1;return r};c.computePerspectiveFieldOfView=function(e,t,r,i,o){if(e<=0||e>Math.PI){throw new a("fovY must be in [0, PI).")}if(t<=0){throw new a("aspectRatio must be greater than zero.")}if(r<=0){throw new a("near must be greater than zero.")}if(i<=0){throw new a("far must be greater than zero.")}if(!n(o)){throw new a("result is required")}var s=Math.tan(e*.5);var u=1/s;var f=u/t;var c=(i+r)/(r-i);var l=2*i*r/(r-i);o[0]=f;o[1]=0;o[2]=0;o[3]=0;o[4]=0;o[5]=u;o[6]=0;o[7]=0;o[8]=0;o[9]=0;o[10]=c;o[11]=-1;o[12]=0;o[13]=0;o[14]=l;o[15]=0;return o};c.computeOrthographicOffCenter=function(e,t,r,i,o,s,u){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("far is required.")}if(!n(u)){throw new a("result is required")}var f=1/(t-e);var c=1/(i-r);var l=1/(s-o);var d=-(t+e)*f;var h=-(i+r)*c;var v=-(s+o)*l;f*=2;c*=2;l*=-2;u[0]=f;u[1]=0;u[2]=0;u[3]=0;u[4]=0;u[5]=c;u[6]=0;u[7]=0;u[8]=0;u[9]=0;u[10]=l;u[11]=0;u[12]=d;u[13]=h;u[14]=v;u[15]=1;return u};c.computePerspectiveOffCenter=function(e,t,r,i,o,s,u){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("far is required.")}if(!n(u)){throw new a("result is required")}var f=2*o/(t-e);var c=2*o/(i-r);var l=(t+e)/(t-e);var d=(i+r)/(i-r);var h=-(s+o)/(s-o);var v=-1;var p=-2*s*o/(s-o);u[0]=f;u[1]=0;u[2]=0;u[3]=0;u[4]=0;u[5]=c;u[6]=0;u[7]=0;u[8]=l;u[9]=d;u[10]=h;u[11]=v;u[12]=0;u[13]=0;u[14]=p;u[15]=0;return u};c.computeInfinitePerspectiveOffCenter=function(e,t,r,i,o,s){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("result is required")}var u=2*o/(t-e);var f=2*o/(i-r);var c=(t+e)/(t-e);var l=(i+r)/(i-r);var d=-1;var h=-1;var v=-2*o;s[0]=u;s[1]=0;s[2]=0;s[3]=0;s[4]=0;s[5]=f;s[6]=0;s[7]=0;s[8]=c;s[9]=l;s[10]=d;s[11]=h;s[12]=0;s[13]=0;s[14]=v;s[15]=0;return s};c.computeViewportTransformation=function(e,t,i,o){if(!n(o)){throw new a("result is required")}e=r(e,r.EMPTY_OBJECT);var s=r(e.x,0);var u=r(e.y,0);var f=r(e.width,0);var c=r(e.height,0);t=r(t,0);i=r(i,1);var l=f*.5;var d=c*.5;var h=(i-t)*.5;var v=l;var p=d;var m=h;var w=s+l;var y=u+d;var g=t+h;var S=1;o[0]=v;o[1]=0;o[2]=0;o[3]=0;o[4]=0;o[5]=p;o[6]=0;o[7]=0;o[8]=0;o[9]=0;o[10]=m;o[11]=0;o[12]=w;o[13]=y;o[14]=g;o[15]=S;return o};c.computeView=function(t,r,i,o,s){if(!n(t)){throw new a("position is required")}if(!n(r)){throw new a("direction is required")}if(!n(i)){throw new a("up is required")}if(!n(o)){throw new a("right is required")}if(!n(s)){throw new a("result is required")}s[0]=o.x;s[1]=i.x;s[2]=-r.x;s[3]=0;s[4]=o.y;s[5]=i.y;s[6]=-r.y;s[7]=0;s[8]=o.z;s[9]=i.z;s[10]=-r.z;s[11]=0;s[12]=-e.dot(o,t);s[13]=-e.dot(i,t);s[14]=e.dot(r,t);s[15]=1;return s};c.toArray=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];t[9]=e[9];t[10]=e[10];t[11]=e[11];t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t};c.getElementIndex=function(e,t){if(typeof t!=="number"||t<0||t>3){throw new a("row must be 0, 1, 2, or 3.")}if(typeof e!=="number"||e<0||e>3){throw new a("column must be 0, 1, 2, or 3.")}return e*4+t};c.getColumn=function(e,t,r){if(!n(e)){throw new a("matrix is required.")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(r)){throw new a("result is required")}var i=t*4;var o=e[i];var s=e[i+1];var u=e[i+2];var f=e[i+3];r.x=o;r.y=s;r.z=u;r.w=f;return r};c.setColumn=function(e,t,r,i){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("cartesian is required")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(i)){throw new a("result is required")}i=c.clone(e,i);var o=t*4;i[o]=r.x;i[o+1]=r.y;i[o+2]=r.z;i[o+3]=r.w;return i};c.setTranslation=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("translation is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0];r[1]=e[1];r[2]=e[2];r[3]=e[3];r[4]=e[4];r[5]=e[5];r[6]=e[6];r[7]=e[7];r[8]=e[8];r[9]=e[9];r[10]=e[10];r[11]=e[11];r[12]=t.x;r[13]=t.y;r[14]=t.z;r[15]=e[15];return r};c.getRow=function(e,t,r){if(!n(e)){throw new a("matrix is required.")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(r)){throw new a("result is required")}var i=e[t];var o=e[t+4];var s=e[t+8];var u=e[t+12];r.x=i;r.y=o;r.z=s;r.w=u;return r};c.setRow=function(e,t,r,i){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("cartesian is required")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(i)){throw new a("result is required")}i=c.clone(e,i);i[t]=r.x;i[t+4]=r.y;i[t+8]=r.z;i[t+12]=r.w;return i};var v=new e;c.getScale=function(t,r){if(!n(t)){throw new a("matrix is required.")}if(!n(r)){throw new a("result is required")}r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],v));r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],v));r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],v));return r};var p=new e;c.getMaximumScale=function(t){c.getScale(t,p);return e.maximumComponent(p)};c.multiply=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[3];var f=e[4];var c=e[5];var l=e[6];var d=e[7];var h=e[8];var v=e[9];var p=e[10];var m=e[11];var w=e[12];var y=e[13];var g=e[14];var S=e[15];var b=t[0];var T=t[1];var E=t[2];var _=t[3];var A=t[4];var P=t[5];var M=t[6];var C=t[7];var I=t[8];var x=t[9];var R=t[10];var O=t[11];var D=t[12];var q=t[13];var N=t[14];var G=t[15];var L=i*b+f*T+h*E+w*_;var B=o*b+c*T+v*E+y*_;var H=s*b+l*T+p*E+g*_;var k=u*b+d*T+m*E+S*_;var z=i*A+f*P+h*M+w*C;var F=o*A+c*P+v*M+y*C;var V=s*A+l*P+p*M+g*C;var U=u*A+d*P+m*M+S*C;var W=i*I+f*x+h*R+w*O;var j=o*I+c*x+v*R+y*O;var X=s*I+l*x+p*R+g*O;var K=u*I+d*x+m*R+S*O;var Q=i*D+f*q+h*N+w*G;var Y=o*D+c*q+v*N+y*G;var Z=s*D+l*q+p*N+g*G;var J=u*D+d*q+m*N+S*G;r[0]=L;r[1]=B;r[2]=H;r[3]=k;r[4]=z;r[5]=F;r[6]=V;r[7]=U;r[8]=W;r[9]=j;r[10]=X;r[11]=K;r[12]=Q;r[13]=Y;r[14]=Z;r[15]=J;return r};c.add=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0]+t[0];r[1]=e[1]+t[1];r[2]=e[2]+t[2];r[3]=e[3]+t[3];r[4]=e[4]+t[4];r[5]=e[5]+t[5];r[6]=e[6]+t[6];r[7]=e[7]+t[7];r[8]=e[8]+t[8];r[9]=e[9]+t[9];r[10]=e[10]+t[10];r[11]=e[11]+t[11];r[12]=e[12]+t[12];r[13]=e[13]+t[13];r[14]=e[14]+t[14];r[15]=e[15]+t[15];return r};c.subtract=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0]-t[0];r[1]=e[1]-t[1];r[2]=e[2]-t[2];r[3]=e[3]-t[3];r[4]=e[4]-t[4];r[5]=e[5]-t[5];r[6]=e[6]-t[6];r[7]=e[7]-t[7];r[8]=e[8]-t[8];r[9]=e[9]-t[9];r[10]=e[10]-t[10];r[11]=e[11]-t[11];r[12]=e[12]-t[12];r[13]=e[13]-t[13];r[14]=e[14]-t[14];r[15]=e[15]-t[15];return r};c.multiplyTransformation=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[4];var f=e[5];var c=e[6];var l=e[8];var d=e[9];var h=e[10];var v=e[12];var p=e[13];var m=e[14];var w=t[0];var y=t[1];var g=t[2];var S=t[4];var b=t[5];var T=t[6];var E=t[8];var _=t[9];var A=t[10];var P=t[12];var M=t[13];var C=t[14];var I=i*w+u*y+l*g;var x=o*w+f*y+d*g;var R=s*w+c*y+h*g;var O=i*S+u*b+l*T;var D=o*S+f*b+d*T;var q=s*S+c*b+h*T;var N=i*E+u*_+l*A;var G=o*E+f*_+d*A;var L=s*E+c*_+h*A;var B=i*P+u*M+l*C+v;var H=o*P+f*M+d*C+p;var k=s*P+c*M+h*C+m;r[0]=I;r[1]=x;r[2]=R;r[3]=0;r[4]=O;r[5]=D;r[6]=q;r[7]=0;r[8]=N;r[9]=G;r[10]=L;r[11]=0;r[12]=B;r[13]=H;r[14]=k;r[15]=1;return r};c.multiplyByMatrix3=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("rotation is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[4];var f=e[5];var c=e[6];var l=e[8];var d=e[9];var h=e[10];var v=t[0];var p=t[1];var m=t[2];var w=t[3];var y=t[4];var g=t[5];var S=t[6];var b=t[7];var T=t[8];var E=i*v+u*p+l*m;var _=o*v+f*p+d*m;var A=s*v+c*p+h*m;var P=i*w+u*y+l*g;var M=o*w+f*y+d*g;var C=s*w+c*y+h*g;var I=i*S+u*b+l*T;var x=o*S+f*b+d*T;var R=s*S+c*b+h*T;r[0]=E;r[1]=_;r[2]=A;r[3]=0;r[4]=P;r[5]=M;r[6]=C;r[7]=0;r[8]=I;r[9]=x;r[10]=R;r[11]=0;r[12]=e[12];r[13]=e[13];r[14]=e[14];r[15]=e[15];return r};c.multiplyByTranslation=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("translation is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=i*e[0]+o*e[4]+s*e[8]+e[12];var f=i*e[1]+o*e[5]+s*e[9]+e[13];var c=i*e[2]+o*e[6]+s*e[10]+e[14];r[0]=e[0];r[1]=e[1];r[2]=e[2];r[3]=e[3];r[4]=e[4];r[5]=e[5];r[6]=e[6];r[7]=e[7];r[8]=e[8];r[9]=e[9];r[10]=e[10];r[11]=e[11];r[12]=u;r[13]=f;r[14]=c;r[15]=e[15];return r};var m=new e;c.multiplyByUniformScale=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(typeof t!=="number"){throw new a("scale is required")}if(!n(r)){throw new a("result is required")}m.x=t;m.y=t;m.z=t;return c.multiplyByScale(e,m,r)};c.multiplyByScale=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("scale is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;if(i===1&&o===1&&s===1){return c.clone(e,r)}r[0]=i*e[0];r[1]=i*e[1];r[2]=i*e[2];r[3]=0;r[4]=o*e[4];r[5]=o*e[5];r[6]=o*e[6];r[7]=0;r[8]=s*e[8];r[9]=s*e[9];r[10]=s*e[10];r[11]=0;r[12]=e[12];r[13]=e[13];r[14]=e[14];r[15]=1;return r};c.multiplyByVector=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=t.w;var f=e[0]*i+e[4]*o+e[8]*s+e[12]*u;var c=e[1]*i+e[5]*o+e[9]*s+e[13]*u;var l=e[2]*i+e[6]*o+e[10]*s+e[14]*u;var d=e[3]*i+e[7]*o+e[11]*s+e[15]*u;r.x=f;r.y=c;r.z=l;r.w=d;return r};c.multiplyByPointAsVector=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=e[0]*i+e[4]*o+e[8]*s;var f=e[1]*i+e[5]*o+e[9]*s;var c=e[2]*i+e[6]*o+e[10]*s;r.x=u;r.y=f;r.z=c;return r};c.multiplyByPoint=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=e[0]*i+e[4]*o+e[8]*s+e[12];var f=e[1]*i+e[5]*o+e[9]*s+e[13];var c=e[2]*i+e[6]*o+e[10]*s+e[14];r.x=u;r.y=f;r.z=c;return r};c.multiplyByScalar=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(typeof t!=="number"){throw new a("scalar must be a number")}if(!n(r)){throw new a("result is required")}r[0]=e[0]*t;r[1]=e[1]*t;r[2]=e[2]*t;r[3]=e[3]*t;r[4]=e[4]*t;r[5]=e[5]*t;r[6]=e[6]*t;r[7]=e[7]*t;r[8]=e[8]*t;r[9]=e[9]*t;r[10]=e[10]*t;r[11]=e[11]*t;r[12]=e[12]*t;r[13]=e[13]*t;r[14]=e[14]*t;r[15]=e[15]*t;return r};c.negate=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];t[3]=-e[3];t[4]=-e[4];t[5]=-e[5];t[6]=-e[6];t[7]=-e[7];t[8]=-e[8];t[9]=-e[9];t[10]=-e[10];t[11]=-e[11];t[12]=-e[12];t[13]=-e[13];t[14]=-e[14];t[15]=-e[15];return t};c.transpose=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}var r=e[1];var i=e[2];var o=e[3];var s=e[6];var u=e[7];var f=e[11];t[0]=e[0];t[1]=e[4];t[2]=e[8];t[3]=e[12];t[4]=r;t[5]=e[5];t[6]=e[9];t[7]=e[13];t[8]=i;t[9]=s;t[10]=e[10];t[11]=e[14];t[12]=o;t[13]=u;t[14]=f;t[15]=e[15];return t};c.abs=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=Math.abs(e[0]);t[1]=Math.abs(e[1]);t[2]=Math.abs(e[2]);t[3]=Math.abs(e[3]);t[4]=Math.abs(e[4]);t[5]=Math.abs(e[5]);t[6]=Math.abs(e[6]);t[7]=Math.abs(e[7]);t[8]=Math.abs(e[8]);t[9]=Math.abs(e[9]);t[10]=Math.abs(e[10]);t[11]=Math.abs(e[11]);t[12]=Math.abs(e[12]);t[13]=Math.abs(e[13]);t[14]=Math.abs(e[14]);t[15]=Math.abs(e[15]);return t};c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};c.equalsEpsilon=function(e,t,r){if(typeof r!=="number"){throw new a("epsilon must be a number")}return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r};c.getTranslation=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t.x=e[12];t.y=e[13];t.z=e[14];return t};c.getRotation=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[4];t[4]=e[5];t[5]=e[6];t[6]=e[8];t[7]=e[9];t[8]=e[10];return t};var w=new u;var y=new u;var g=new t;var S=new t(0,0,0,1);c.inverse=function(e,r){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("result is required")}if(u.equalsEpsilon(c.getRotation(e,w),y,s.EPSILON7)&&t.equals(c.getRow(e,3,g),S)){r[0]=0;r[1]=0;r[2]=0;r[3]=0;r[4]=0;r[5]=0;r[6]=0;r[7]=0;r[8]=0;r[9]=0;r[10]=0;r[11]=0;r[12]=-e[12];r[13]=-e[13];r[14]=-e[14];r[15]=1;return r}var i=e[0];var o=e[4];var l=e[8];var d=e[12];var h=e[1];var v=e[5];var p=e[9];var m=e[13];var b=e[2];var T=e[6];var E=e[10];var _=e[14];var A=e[3];var P=e[7];var M=e[11];var C=e[15];var I=E*C;var x=_*M;var R=T*C;var O=_*P;var D=T*M;var q=E*P;var N=b*C;var G=_*A;var L=b*M;var B=E*A;var H=b*P;var k=T*A;var z=I*v+O*p+D*m-(x*v+R*p+q*m);var F=x*h+N*p+B*m-(I*h+G*p+L*m);var V=R*h+G*v+H*m-(O*h+N*v+k*m);var U=q*h+L*v+k*p-(D*h+B*v+H*p);var W=x*o+R*l+q*d-(I*o+O*l+D*d);var j=I*i+G*l+L*d-(x*i+N*l+B*d);var X=O*i+N*o+k*d-(R*i+G*o+H*d);var K=D*i+B*o+H*l-(q*i+L*o+k*l);I=l*m;x=d*p;R=o*m;O=d*v;D=o*p;q=l*v;N=i*m;G=d*h;L=i*p;B=l*h;H=i*v;k=o*h;var Q=I*P+O*M+D*C-(x*P+R*M+q*C);var Y=x*A+N*M+B*C-(I*A+G*M+L*C);var Z=R*A+G*P+H*C-(O*A+N*P+k*C);var J=q*A+L*P+k*M-(D*A+B*P+H*M);var $=R*E+q*_+x*T-(D*_+I*T+O*E);var ee=L*_+I*b+G*E-(N*E+B*_+x*b);var te=N*T+k*_+O*b-(H*_+R*b+G*T);var re=H*E+D*b+B*T-(L*T+k*E+q*b);var ne=i*z+o*F+l*V+d*U;if(Math.abs(ne)>>0;for(this.mti=1;this.mti>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti;this.mt[this.mti]>>>=0}};e.prototype.genrand_int32=function(){var e;var t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;if(this.mti==this.N+1)this.init_genrand(5489);for(r=0;r>>1^t[e&1]}for(;r>>1^t[e&1]}e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK;this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1];this.mti=0}e=this.mt[this.mti++];e^=e>>>11;e^=e<<7&2636928640;e^=e<<15&4022730752;e^=e>>>18;return e>>>0};e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)};return e})})();(function(){var t=e.amdDefine;t("24",["20"],function(e){"use strict";function t(e,t){if(e!==undefined){return e}return t}t.EMPTY_OBJECT=e({});return t})})();(function(){var t=e.amdDefine;t("28",["6e","24","1b","1d"],function(e,t,r,n){"use strict";var i={};i.EPSILON1=.1;i.EPSILON2=.01;i.EPSILON3=.001;i.EPSILON4=1e-4;i.EPSILON5=1e-5;i.EPSILON6=1e-6;i.EPSILON7=1e-7;i.EPSILON8=1e-8;i.EPSILON9=1e-9;i.EPSILON10=1e-10;i.EPSILON11=1e-11;i.EPSILON12=1e-12;i.EPSILON13=1e-13;i.EPSILON14=1e-14;i.EPSILON15=1e-15;i.EPSILON16=1e-16;i.EPSILON17=1e-17;i.EPSILON18=1e-18;i.EPSILON19=1e-19;i.EPSILON20=1e-20;i.GRAVITATIONALPARAMETER=3986004418e5;i.SOLAR_RADIUS=6955e5;i.LUNAR_RADIUS=1737400;i.SIXTY_FOUR_KILOBYTES=64*1024;i.sign=function(e){if(e>0){return 1}if(e<0){return-1}return 0};i.signNotZero=function(e){return e<0?-1:1};i.toSNorm=function(e){return Math.round((i.clamp(e,-1,1)*.5+.5)*255)};i.fromSNorm=function(e){return i.clamp(e,0,255)/255*2-1};i.sinh=function(e){var t=Math.pow(Math.E,e);var r=Math.pow(Math.E,-1*e);return(t-r)*.5};i.cosh=function(e){var t=Math.pow(Math.E,e);var r=Math.pow(Math.E,-1*e);return(t+r)*.5};i.lerp=function(e,t,r){return(1-r)*e+r*t};i.PI=Math.PI;i.ONE_OVER_PI=1/Math.PI;i.PI_OVER_TWO=Math.PI*.5;i.PI_OVER_THREE=Math.PI/3;i.PI_OVER_FOUR=Math.PI/4;i.PI_OVER_SIX=Math.PI/6;i.THREE_PI_OVER_TWO=3*Math.PI*.5;i.TWO_PI=2*Math.PI;i.ONE_OVER_TWO_PI=1/(2*Math.PI);i.RADIANS_PER_DEGREE=Math.PI/180;i.DEGREES_PER_RADIAN=180/Math.PI;i.RADIANS_PER_ARCSECOND=i.RADIANS_PER_DEGREE/3600;i.toRadians=function(e){if(!r(e)){throw new n("degrees is required.")}return e*i.RADIANS_PER_DEGREE};i.toDegrees=function(e){if(!r(e)){throw new n("radians is required.")}return e*i.DEGREES_PER_RADIAN};i.convertLongitudeRange=function(e){if(!r(e)){throw new n("angle is required.")}var t=i.TWO_PI;var a=e-Math.floor(e/t)*t;if(a<-Math.PI){return a+t}if(a>=Math.PI){return a-t}return a};i.negativePiToPi=function(e){if(!r(e)){throw new n("x is required.")}return i.zeroToTwoPi(e+i.PI)-i.PI};i.zeroToTwoPi=function(e){if(!r(e)){throw new n("x is required.")}var t=i.mod(e,i.TWO_PI);if(Math.abs(t)i.EPSILON14){return i.TWO_PI}return t};i.mod=function(e,t){if(!r(e)){throw new n("m is required.")}if(!r(t)){throw new n("n is required.")}return(e%t+t)%t};i.equalsEpsilon=function(e,i,a,o){if(!r(e)){throw new n("left is required.")}if(!r(i)){throw new n("right is required.")}if(!r(a)){throw new n("relativeEpsilon is required.")}o=t(o,a);var s=Math.abs(e-i);return s<=o||s<=a*Math.max(Math.abs(e),Math.abs(i))};var a=[1];i.factorial=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}var t=a.length;if(e>=t){var r=a[t-1];for(var i=t;i<=e;i++){a.push(r*i)}}return a[e]};i.incrementWrap=function(e,i,a){a=t(a,0);if(!r(e)){throw new n("n is required.")}if(i<=a){throw new n("maximumValue must be greater than minimumValue.")}++e;if(e>i){e=a}return e};i.isPowerOfTwo=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}return e!==0&&(e&e-1)===0};i.nextPowerOfTwo=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}--e;e|=e>>1;e|=e>>2;e|=e>>4;e|=e>>8;e|=e>>16;++e;return e};i.clamp=function(e,t,i){if(!r(e)){throw new n("value is required")}if(!r(t)){throw new n("min is required.")}if(!r(i)){throw new n("max is required.")}return ei?i:e};var o=new e;i.setRandomNumberSeed=function(t){if(!r(t)){throw new n("seed is required.")}o=new e(t)};i.nextRandomNumber=function(){return o.random()};i.acosClamped=function(e){if(!r(e)){throw new n("value is required.")}return Math.acos(i.clamp(e,-1,1))};i.asinClamped=function(e){if(!r(e)){throw new n("value is required.")}return Math.asin(i.clamp(e,-1,1))};i.chordLength=function(e,t){if(!r(e)){throw new n("angle is required.")}if(!r(t)){throw new n("radius is required.")}return 2*t*Math.sin(e*.5)};i.logBase=function(e,t){if(!r(e)){throw new n("number is required.")}if(!r(t)){throw new n("base is required.")}return Math.log(e)/Math.log(t)};i.fog=function(e,t){var r=e*t;return 1-Math.exp(-(r*r))};return i})})();(function(){var t=e.amdDefine;t("2d",["24","1b","1d","20","28"],function(e,t,r,n,i){"use strict";function a(t,r,n){this.x=e(t,0);this.y=e(r,0);this.z=e(n,0)}a.fromSpherical=function(n,i){if(!t(n)){throw new r("spherical is required")}if(!t(i)){i=new a}var o=n.clock;var s=n.cone;var u=e(n.magnitude,1);var f=u*Math.sin(s);i.x=f*Math.cos(o);i.y=f*Math.sin(o);i.z=u*Math.cos(s);return i};a.fromElements=function(e,r,n,i){if(!t(i)){return new a(e,r,n)}i.x=e;i.y=r;i.z=n;return i};a.clone=function(e,r){if(!t(e)){return undefined}if(!t(r)){return new a(e.x,e.y,e.z)}r.x=e.x;r.y=e.y;r.z=e.z;return r};a.fromCartesian4=a.clone;a.packedLength=3;a.pack=function(n,i,a){if(!t(n)){throw new r("value is required")}if(!t(i)){throw new r("array is required")}a=e(a,0);i[a++]=n.x;i[a++]=n.y;i[a]=n.z};a.unpack=function(n,i,o){if(!t(n)){throw new r("array is required")}i=e(i,0);if(!t(o)){o=new a}o.x=n[i++];o.y=n[i++];o.z=n[i];return o};a.packArray=function(e,n){if(!t(e)){throw new r("array is required")}var i=e.length;if(!t(n)){n=new Array(i*3)}else{n.length=i*3}for(var o=0;o0){i=r(i,c.IDENTITY);var u=c.inverseTransformation(i,v);var f=c.multiplyByPoint(u,e.ZERO,p);var d=c.multiplyByPointAsVector(u,e.UNIT_Y,m);var h=l.fromPointNormal(f,d,w);var T=c.multiplyByPointAsVector(u,e.UNIT_X,y);var E=l.fromPointNormal(f,T,g);var _=1;a.push(e.clone(t[0]));var A=a[0];var P=t.length;for(var M=1;M0){r.splice(0,i);e._values.splice(0,i*e._innerType.packedLength);e._updateTableLength=true;e._definitionChanged.raiseEvent(e)}}function o(e,t){if(t===undefined)return;var r=e._times.length-t;if(r>0){e._times.splice(0,r);e._values.splice(0,r*e._innerType.packedLength);e._updateTableLength=true}}return{setters:[function(e){n=e}],execute:function(){i=function(e,t){return function(){var r=e.apply(this,arguments);t.call(this,r);return r}};n.SampledProperty.prototype.removeSamplesBeforeDate=function(e){a(this,e)};n.SampledPositionProperty.prototype.removeSamplesBeforeDate=function(e){a(this._property,e)};n.SampledProperty.prototype.addSample=i(n.SampledProperty.prototype.addSample,function(){o(this,this.maxNumSamples)});n.SampledProperty.prototype.addSamples=i(n.SampledProperty.prototype.addSamples,function(){o(this,this.maxNumSamples)});n.SampledProperty.prototype.addSamplesPackedArray=i(n.SampledProperty.prototype.addSamplesPackedArray,function(){o(this,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSample=i(n.SampledPositionProperty.prototype.addSample,function(){o(this._property,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSamples=i(n.SampledPositionProperty.prototype.addSamples,function(){o(this._property,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSamplesPackedArray=i(n.SampledPositionProperty.prototype.addSamplesPackedArray,function(){o(this._property,this.maxNumSamples)})}}});e.register("e",["4d","1a","46","2d","44","22","23","26","2c","30","27","24","1b","1d","3d","29","2a","1e","4b","3b","3e","25","28","33","34","3f","40","41","2f","37","35","47","2e","48","49","4a","36","65","6f","70"],function(e,t){"use strict";var r=t&&t.id;return{setters:[function(t){e({binarySearch:t["default"]})},function(t){e({CallbackProperty:t["default"]})},function(t){e({Cartesian2:t["default"]})},function(t){e({Cartesian3:t["default"]})},function(t){e({Cartesian4:t["default"]})},function(t){e({Clock:t["default"]})},function(t){e({ClockStep:t["default"]})},function(t){e({CompositeEntityCollection:t["default"]})},function(t){e({ConstantPositionProperty:t["default"]})},function(t){e({ConstantProperty:t["default"]})},function(t){e({createGuid:t["default"]})},function(t){e({defaultValue:t["default"]})},function(t){e({defined:t["default"]})},function(t){e({DeveloperError:t["default"]})},function(t){e({Ellipsoid:t["default"]})},function(t){e({Entity:t["default"]})},function(t){e({EntityCollection:t["default"]})},function(t){e({Event:t["default"]})},function(t){e({ExtrapolationType:t["default"]})},function(t){e({GeographicProjection:t["default"]})},function(t){e({HermitePolynomialApproximation:t["default"]})},function(t){e({JulianDate:t["default"]})},function(t){e({CesiumMath:t["default"]})},function(t){e({Matrix3:t["default"]})},function(t){e({Matrix4:t["default"]})},function(t){e({OrientationProperty:t["default"]})},function(t){e({PerspectiveFrustum:t["default"]})},function(t){e({PerspectiveOffCenterFrustum:t["default"]})},function(t){e({PositionProperty:t["default"]})},function(t){e({Property:t["default"]})},function(t){e({Quaternion:t["default"]})},function(t){e({ReferenceEntity:t["default"]})},function(t){e({ReferenceFrame:t["default"]})},function(t){e({ReferenceProperty:t["default"]})},function(t){e({SampledPositionProperty:t["default"]})},function(t){e({SampledProperty:t["default"]})},function(t){e({Transforms:t["default"]})},function(t){e({Simon1994PlanetaryPositions:t["default"]})},function(t){e({PolylinePipeline:t["default"]})},function(e){}],execute:function(){}}});e.register("b",["1e","e"],function(e,t){"use strict";var r=t&&t.id;var n,i;var a,o,s,u,f,c,l,d,h,v,p,m;function w(e){var t=[];var r=e;do{var n=r.position;r=n&&n.referenceFrame;if(i.defined(r))t.unshift(r)}while(i.defined(r));return t}e("getAncestorReferenceFrames",w);function y(e){return w(e)[0]}e("getRootReferenceFrame",y);function g(e,t,r,n){return e.position&&e.position.getValueInReferenceFrame(t,r,n)}e("getEntityPositionInReferenceFrame",g);function S(e,t,r,n){var a=e.position&&e.position.referenceFrame;if(!i.defined(a))return undefined;var o=e.orientation&&e.orientation.getValue(t,n);if(!i.defined(o))return undefined;return i.OrientationProperty.convertToReferenceFrame(t,o,a,r,n)}e("getEntityOrientationInReferenceFrame",S);function b(e,t,r){var n=undefined;if(!i.defined(r)){n=w(e);r=n[0]}if(!i.defined(r))return;var a=g(e,t,r,{});if(!a&&!n)return undefined;var o=S(e,t,r,{});if(!o&&!n)return undefined;if(a&&o){return{p:i.Cartesian3.ZERO.equalsEpsilon(a,i.CesiumMath.EPSILON16)?0:a,o:i.Quaternion.IDENTITY.equalsEpsilon(o,i.CesiumMath.EPSILON16)?0:o,r:typeof r==="number"?r:r.id}}else if(n){for(var s=1;s0&&!e._currentCommandPending){e._executeNextCommand()}})};e.prototype.pause=function(){this._paused=true};e.prototype.clear=function(){this._queue.forEach(function(e){e.reject("Unable to execute.")});this._queue=[]};e.prototype._executeNextCommand=function(){var e=this;this._currentCommand=undefined;this._currentCommandPending=undefined;if(this._paused)return;var t=this._queue.shift();if(!t)return;this._currentCommand=t.command;this._currentCommandPending=t.execute().then(this._executeNextCommand.bind(this)).catch(function(t){e.errorEvent.raiseEvent(t);e._executeNextCommand()})};return e}();e("CommandQueue",o);e("getEntityPosition",s=g);e("getEntityOrientation",u=S);f=typeof document!=="undefined"?document.createElement("a"):undefined;c=function(){function e(){var e=this;var t=true;var r;var n;var i;r=new Promise(function(r){e.port1={set onmessage(e){i=e;r()},get onmessage(){return i},postMessage:function(r){if(t){n.then(function(){if(e.port2.onmessage)e.port2.onmessage({data:r})})}},close:function(){t=false}}});var a;n=new Promise(function(n){e.port2={set onmessage(e){a=e;n()},get onmessage(){return a},postMessage:function(n){if(t){r.then(function(){if(e.port1.onmessage)e.port1.onmessage({data:n})})}},close:function(){t=false}}})}return e}();e("MessageChannelLike",c);l=function(){function e(){var e=this;var t=[];var r=function(e){t.push(e)};e.port1={get onmessage(){return r},set onmessage(e){r=e;t.forEach(function(t){return e(t)});t=[]},postMessage:function(t){if(e.port2.onmessage)e.port2.onmessage({data:t})},close:function(){e.port1.onmessage=undefined;e.port2.onmessage=undefined}};var n=[];var i=function(e){n.push(e)};e.port2={get onmessage(){return i},set onmessage(e){i=e;n.forEach(function(t){return e(t)});n=[]},postMessage:function(t){if(e.port1.onmessage)e.port1.onmessage({data:t})},close:function(){e.port1.onmessage=undefined;e.port2.onmessage=undefined}}}return e}();e("SynchronousMessageChannel",l);d=function(){function e(){}e.prototype.create=function(){if(typeof MessageChannel!=="undefined")return new MessageChannel;else return new c};e.prototype.createSynchronous=function(){return new l};return e}();e("MessageChannelFactory",d);h=new i.PerspectiveOffCenterFrustum;v=new i.Cartesian3;p=new i.Quaternion;e("detectIOS",m=typeof navigator!=="undefined"&&typeof window!=="undefined"&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window["MSStream"])}}});e.register("1",["2","c","e","7","a","10","16","11","14","12","d","8","9","13","f","15","19","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__extends||function(e,t){for(var r in t)if(t.hasOwnProperty(r))e[r]=t[r];function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)};var i,a,o,s,u,f,c,l,d,h,v,p,m,w,y,g;var S,b;function T(e){var t=e===void 0?{}:e,r=t.configuration,n=t.container,a=n===void 0?new i.Container:n;var o;if(typeof HTMLElement==="undefined"){o=u.Role.REALITY_MANAGER}else if(navigator.userAgent.indexOf("Argon")>0||window.top!==window){o=u.Role.APPLICATION}else{o=u.Role.REALITY_MANAGER}var s=Object.assign(r||{},{role:o});a.registerInstance("containerElement",null);return new S(s,a)}e("init",T);function E(e){if(e===void 0){e={}}return _(e)}e("initReality",E);function _(e){var t=e===void 0?{}:e,r=t.configuration,n=t.container,a=n===void 0?new i.Container:n;var o=Object.assign(r||{},{role:u.Role.REALITY_VIEW,"reality.supportsControlPort":true});a.registerInstance("containerElement",null);return new S(o,a)}e("initRealityViewer",_);function A(e){var t=e.containerElement,r=e.configuration,n=e.container,a=n===void 0?new i.Container:n;var o=Object.assign(r||{},{role:u.Role.REALITY_MANAGER});a.registerInstance("containerElement",t);return new S(o,a)}e("initLocal",A);var P={ArgonSystem:true,RealityView:true,init:true,initReality:true,initRealityViewer:true,initLocal:true,DI:true,Cesium:true,URI:true,EmptyRealityLoader:true,LiveVideoRealityLoader:true,HostedRealityLoader:true};function M(t){var r={};for(var n in t){if(n!=="default"&&!P.hasOwnProperty(n))r[n]=t[n]}e(r)}return{setters:[function(e){},function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e;M(e)},function(e){u=e;M(e)},function(e){f=e;M(e)},function(e){c=e;M(e)},function(e){l=e;M(e)},function(e){d=e;M(e)},function(e){h=e;M(e)},function(e){v=e;M(e)},function(e){p=e;M(e)},function(e){m=e;M(e)},function(e){w=e},function(e){y=e},function(e){g=e},function(e){M(e)}],execute:function(){e("DI",i);e("Cesium",a);e("URI",o);e("EmptyRealityLoader",w.EmptyRealityLoader);e("LiveVideoRealityLoader",y.LiveVideoRealityLoader);e("HostedRealityLoader",g.HostedRealityLoader);S=function(){function e(t,r){if(r===void 0){r=new i.Container}this.container=r;if(!e.instance)e.instance=this;r.registerInstance("config",t);r.registerInstance(e,this);if(!r.hasResolver("containerElement"))r.registerInstance("containerElement",null);if(t.role===u.Role.REALITY_MANAGER){r.registerSingleton(s.ConnectService,s.LoopbackConnectService)}else if(s.WKWebViewConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.WKWebViewConnectService)}else if(s.DOMConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.DOMConnectService)}else if(s.DebugConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.DebugConnectService)}if(t.role===u.Role.REALITY_MANAGER){this.reality.registerLoader(r.get(w.EmptyRealityLoader));this.reality.registerLoader(r.get(y.LiveVideoRealityLoader));if(typeof document!=="undefined"){this.reality.registerLoader(r.get(g.HostedRealityLoader));r.get(p.PinchZoomService);r.get(v.DefaultUIService)}this.reality.setDefault(u.RealityViewer.EMPTY)}for(var n=0,a=Object.keys(e.prototype);n=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u,f,c,l;var d;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e},function(e){l=e}],execute:function(){d=function(e){n(t,e);function t(t,r,n){e.call(this);this.sessionService=t;this.deviceService=r;this.timer=n;this.type="empty"}t.prototype.load=function(e,t){var r=this;var n=this.sessionService.addManagedSessionPort(e.uri);var i=this.sessionService.createSessionPort();var a=true;i.on["ar.context.update"]=function(){};i.connectEvent.addEventListener(function(){var e=function(t,n){if(a){r.deviceService.update({orientation:true});var o=r.deviceService.state;var s=o.time;var u=l.getSerializedEntityPose(r.deviceService.displayEntity,s);var f=o.viewport;var c=o.subviews;var d=o.geolocationAccuracy;var h=o.geolocationAltitudeAccuracy;if(u){var v={time:s,pose:u,viewport:f,subviews:c,geolocationAccuracy:d,geolocationAltitudeAccuracy:h};i.send("ar.reality.viewState",v)}r.timer.requestFrame(e)}};r.timer.requestFrame(e)});i.closeEvent.addEventListener(function(){a=false});t(n);var s=this.sessionService.createSynchronousMessageChannel();n.open(s.port1,this.sessionService.configuration);i.open(s.port2,{role:o.Role.REALITY_VIEWER})};t=i([a.inject(s.SessionService,u.DeviceService,f.TimerService)],t);return t}(c.RealityLoader);e("EmptyRealityLoader",d)}}});e.register("10",["12"],function(e,t){"use strict";var r=t&&t.id;var n;var i,a;function o(e){var t=Date.now();var r=Math.max(0,16-(t-a));var n=setTimeout(function(){e(t+r)},r);a=t+r;return n}return{setters:[function(e){n=e}],execute:function(){i=function(){function e(){this.frameNumbers=new WeakMap}e.prototype.requestFrame=function(e){var t=this;if(typeof requestAnimationFrame!=="undefined"&&typeof performance!=="undefined"){this.navigationStartDate=this.navigationStartDate||n.JulianDate.fromDate(new Date(performance.timing.navigationStart));requestAnimationFrame(function(r){var i=n.JulianDate.addSeconds(t.navigationStartDate,r/1e3,new n.JulianDate(0,0));e(i,t.getNextFrameNumber(e))})}else{o(function(r){var i=n.JulianDate.fromDate(new Date(r));e(i,t.getNextFrameNumber(e))})}};e.prototype.getNextFrameNumber=function(e){var t=this.frameNumbers.get(e)||0;this.frameNumbers.set(e,t+1);return t};return e}();e("TimerService",i);a=0}}});e.register("13",["c","14","a","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__extends||function(e,t){for(var r in t)if(t.hasOwnProperty(r))e[r]=t[r];function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)};var i=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f,c,l,d,h,v,p,m,w;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){(function(e){e[e["SUCCESS"]=100]="SUCCESS";e[e["INIT_ERROR"]=-1]="INIT_ERROR";e[e["INIT_DEVICE_NOT_SUPPORTED"]=-2]="INIT_DEVICE_NOT_SUPPORTED";e[e["INIT_NO_CAMERA_ACCESS"]=-3]="INIT_NO_CAMERA_ACCESS";e[e["INIT_LICENSE_ERROR_MISSING_KEY"]=-4]="INIT_LICENSE_ERROR_MISSING_KEY";e[e["INIT_LICENSE_ERROR_INVALID_KEY"]=-5]="INIT_LICENSE_ERROR_INVALID_KEY";e[e["INIT_LICENSE_ERROR_NO_NETWORK_PERMANENT"]=-6]="INIT_LICENSE_ERROR_NO_NETWORK_PERMANENT";e[e["INIT_LICENSE_ERROR_NO_NETWORK_TRANSIENT"]=-7]="INIT_LICENSE_ERROR_NO_NETWORK_TRANSIENT";e[e["INIT_LICENSE_ERROR_CANCELED_KEY"]=-8]="INIT_LICENSE_ERROR_CANCELED_KEY";e[e["INIT_LICENSE_ERROR_PRODUCT_TYPE_MISMATCH"]=-9]="INIT_LICENSE_ERROR_PRODUCT_TYPE_MISMATCH";e[e["INIT_EXTERNAL_DEVICE_NOT_DETECTED"]=-10]="INIT_EXTERNAL_DEVICE_NOT_DETECTED"})(f||(f={}));e("VuforiaInitResult",f);(function(e){e[e["MaxSimultaneousImageTargets"]=0]="MaxSimultaneousImageTargets";e[e["MaxSimultaneousObjectTargets"]=1]="MaxSimultaneousObjectTargets";e[e["DelayedLoadingObjectDatasets"]=2]="DelayedLoadingObjectDatasets"})(c||(c={}));e("VuforiaHint",c);l=function(){function e(){this.stateUpdateEvent=new u.Event}return e}();e("VuforiaServiceDelegateBase",l);d=function(e){n(t,e);function t(){e.apply(this,arguments)}t.prototype.isAvailable=function(){return false};t.prototype.setHint=function(e,t){return true};t.prototype.decryptLicenseKey=function(e,t){return Promise.resolve(undefined)};t.prototype.init=function(e){return Promise.resolve(f.SUCCESS)};t.prototype.deinit=function(){};t.prototype.cameraDeviceInitAndStart=function(){return true};t.prototype.cameraDeviceSetFlashTorchMode=function(e){return true};t.prototype.objectTrackerInit=function(){return true};t.prototype.objectTrackerCreateDataSet=function(e){return""};t.prototype.objectTrackerDestroyDataSet=function(e){return true};t.prototype.objectTrackerActivateDataSet=function(e){return true};t.prototype.objectTrackerDeactivateDataSet=function(e){return true};t.prototype.dataSetFetch=function(e){return Promise.resolve(undefined)};t.prototype.dataSetLoad=function(e){return Promise.resolve()};return t}(l);e("VuforiaServiceDelegate",d);h=function(){function e(e,t,r){var n=this;this.sessionService=e;this.focusService=t;this.delegate=r;this._sessionSwitcherCommandQueue=new u.CommandQueue;this._sessionCommandQueue=new WeakMap;this._sessionInitOptions=new WeakMap;this._sessionInitPromise=new WeakMap;this._sessionIsInitialized=new WeakMap;this._sessionCreatedDataSets=new WeakMap;this._sessionActivatedDataSets=new WeakMap;if(e.isRealityManager){this._sessionSwitcherCommandQueue.errorEvent.addEventListener(function(e){n.sessionService.errorEvent.raiseEvent(e)});e.connectEvent.addEventListener(function(e){var t=new u.CommandQueue;t.errorEvent.addEventListener(function(t){n.sessionService.errorEvent.raiseEvent(t);e.sendError(t)});n._sessionCommandQueue.set(e,t);var i=new Set;n._sessionCreatedDataSets.set(e,i);var a=new Set;n._sessionActivatedDataSets.set(e,a);e.on["ar.vuforia.isAvailable"]=function(){return Promise.resolve({available:r.isAvailable()})};e.on["ar.vuforia.init"]=function(i){if(!r.isAvailable())throw new Error("Vuforia is not supported");if(n._sessionIsInitialized.get(e))throw new Error("Vuforia has already been initialized");if(!i.key&&!i.encryptedLicenseData)throw new Error("Expected `encryptedLicenseData` field. You can encrypt your Vuforia license key at http://docs.argonjs.io/start/vuforia-pgp-encryptor");var a=i.key?Promise.resolve(i.key):r.decryptLicenseKey(i.encryptedLicenseData,e);return a.then(function(r){n._sessionInitOptions.set(e,{key:r});var i=t.push(function(){return n._init(e).then(function(){n._sessionIsInitialized.set(e,true)})},n._controllingSession===e);if(n.focusService.getSession()===e){n._setControllingSession(e)}n._sessionInitPromise.set(e,i);return i})};e.on["ar.vuforia.objectTrackerCreateDataSet"]=function(a){var o=a.url;return t.push(function(){var e=r.objectTrackerCreateDataSet(o);if(e){i.add(e);return Promise.resolve({id:e})}throw new Error("Unable to create DataSet")},n._controllingSession===e)};e.on["ar.vuforia.objectTrackerActivateDataSet"]=function(i){var o=i.id;return t.push(function(){if(r.objectTrackerActivateDataSet(o)){a.add(o);e.send("ar.vuforia.objectTrackerActivateDataSetEvent",{id:o});return}throw new Error("Unable to activate DataSet ("+o+")")},n._controllingSession===e)};e.on["ar.vuforia.objectTrackerDeactivateDataSet"]=function(i){var o=i.id;return t.push(function(){if(r.objectTrackerDeactivateDataSet(o)){a.delete(o);e.send("ar.vuforia.objectTrackerDeactivateDataSetEvent",{id:o});return}throw new Error("Unable to deactivate DataSet ("+o+")")},n._controllingSession===e)};e.on["ar.vuforia.dataSetFetch"]=function(i){var a=i.id;return t.push(function(){return r.dataSetFetch(a)},n._controllingSession===e)};e.on["ar.vuforia.dataSetLoad"]=function(i){var a=i.id;return t.push(function(){return r.dataSetLoad(a)},n._controllingSession===e)};e.closeEvent.addEventListener(function(){if(n._controllingSession===e){t.clear();t.push(function(){n._cleanupSession(e);setTimeout(function(){n._ensureActiveSession()},2e3)},true)}else{n._cleanupSession(e)}})});t.sessionFocusEvent.addEventListener(function(e){var t=e.current;if(t&&n._sessionInitOptions.get(t)){n._setControllingSession(t)}})}}e.prototype.isAvailable=function(){return this.sessionService.manager.request("ar.vuforia.isAvailable").then(function(e){return e.available})};e.prototype.initWithUnencryptedKey=function(e,t){var r=this;if(!t)this.sessionService.ensureIsRealityManager();return this.sessionService.manager.request("ar.vuforia.init",e).then(function(){return new v(r.sessionService.manager)})};e.prototype.init=function(e){var t=this;if(!e.encryptedLicenseData||typeof e.encryptedLicenseData!=="string")throw new Error("options.encryptedLicenseData is required.");return this.sessionService.manager.request("ar.vuforia.init",e).then(function(){return new v(t.sessionService.manager)})};e.prototype._ensureActiveSession=function(){console.log("VuforiaService: Ensuring an active session is in control.");if(this._controllingSession&&this._controllingSession.isConnected)return;this._selectControllingSession()};e.prototype._selectControllingSession=function(){var e=this.focusService.getSession();if(e&&this._sessionInitOptions.get(e)){this._setControllingSession(e);return}for(var t=0,r=this.sessionService.managedSessions;t=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u,f,c,l,d,h;var v;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e},function(e){l=e},function(e){d=e},function(e){h=e}],execute:function(){v=function(e){n(t,e);function t(t,r,n,i,a){var o=this;e.call(this);this.sessionService=t;this.vuforiaDelegate=r;this.viewService=n;this.deviceService=i;this.timer=a;this.type="live-video";this.lastFrameTime=0;if(typeof document!=="undefined"){this.settingsIframe=document.createElement("iframe");this.settingsIframe.width="0";this.settingsIframe.height="0";this.settingsIframe.src="https://argonjs.io/tools.argonjs.io/";n.containingElementPromise.then(function(e){e.insertBefore(o.settingsIframe,e.firstChild)});this.videoFov=Math.PI/2;this.videoElement=document.createElement("video");this.videoElement.style="width:100%; height:100%;";this.videoElement.controls=false;this.videoElement.autoplay=true;n.containingElementPromise.then(function(e){e.insertBefore(o.videoElement,e.firstChild)});this.canvas=document.createElement("canvas");this.context=this.canvas.getContext("2d")}}t.prototype.load=function(e,t){var r=this;var n=this.sessionService.addManagedSessionPort(e.uri);var i=this.sessionService.createSessionPort();i.on["ar.context.update"]=function(){};i.connectEvent.addEventListener(function(){var e=r.vuforiaDelegate.stateUpdateEvent.addEventListener(function(e){i.send("ar.reality.viewState",e)});r.vuforiaDelegate.videoEnabled=true;r.vuforiaDelegate.trackingEnabled=true;i.closeEvent.addEventListener(function(){e();r.vuforiaDelegate.videoEnabled=false;r.vuforiaDelegate.trackingEnabled=false})});if(typeof document!=="undefined"&&typeof navigator!=="undefined"){window.addEventListener("message",function(e){var t=e.origin||e.originalEvent.origin;if(t==="http://argonjs.io"){r.videoFov=e.data}});var a=navigator.mediaDevices;var s=(a.getUserMedia||a.mozGetUserMedia||a.msGetUserMedia||a.webkitGetUserMedia).bind(a);var u=s({audio:false,video:true});u.then(function(e){r.videoElement.src=window.URL.createObjectURL(e)});u.catch(function(e){i.errorEvent.raiseEvent(e)});var f=true;var c=function(e,t){if(f||r.videoElement.currentTime!=r.lastFrameTime){f=false;r.lastFrameTime=r.videoElement.currentTime;r.deviceService.update();var n={time:e,index:t,eye:{pose:h.getSerializedEntityPose(r.deviceService.displayEntity,e),fov:r.videoFov}};i.send("ar.reality.frameState",n)}r.timer.requestFrame(c)};this.timer.requestFrame(c)}t(n);var l=this.sessionService.createSynchronousMessageChannel();n.open(l.port1,this.sessionService.configuration);i.open(l.port2,{role:o.Role.REALITY_VIEWER})};t.isAvailable=function(){if(typeof navigator!=="undefined"){var e=navigator.mediaDevices;return!!(e.getUserMedia||e.mozGetUserMedia||e.msGetUserMedia||e.webkitGetUserMedia)}else{return false}};t.prototype.getVideoFrame=function(e,t,r,n){this.canvas.width=this.videoElement.videoWidth;this.canvas.height=this.videoElement.videoHeight;this.context.drawImage(this.videoElement,0,0,this.canvas.width,this.canvas.height);return this.context.getImageData(e,t,r,n)};t=i([a.inject(s.SessionService,l.VuforiaServiceDelegate,d.ViewService,u.DeviceService,f.TimerService)],t);return t}(c.RealityLoader);e("LiveVideoRealityLoader",v)}}});e.register("16",["c","12","e","a","11","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f;var c,l,d,h,v;function p(e){var t=e;return a.defined(t.id)?t.id:""+t}return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e}],execute:function(){(function(e){e[e["KNOWN"]=1]="KNOWN";e[e["FOUND"]=2]="FOUND";e[e["LOST"]=4]="LOST"})(c||(c={}));e("PoseStatus",c);l=new a.Cartesian3(0,0);d=new a.Quaternion(0,0);h=new a.Cartesian3(0,0);v=function(){function e(e,t){var r=this;this.sessionService=e;this.realityService=t;this.updateEvent=new f.Event;this.renderEvent=new f.Event;this.subscribedEntities=new a.EntityCollection;this.entities=new a.CompositeEntityCollection;this.localOriginChangeEvent=new f.Event;this.user=new a.Entity({id:"ar.user",name:"user",position:new a.ConstantPositionProperty(undefined,a.ReferenceFrame.FIXED),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.localOriginEastNorthUp=new a.Entity({id:"ar.localENU",name:"localOriginENU",position:new a.ConstantPositionProperty(undefined,a.ReferenceFrame.FIXED),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.localOriginEastUpSouth=new a.Entity({id:"ar.localEUS",name:"localOriginEUS",position:new a.ConstantPositionProperty(a.Cartesian3.ZERO,this.localOriginEastNorthUp),orientation:new a.ConstantProperty(a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,Math.PI/2))});this.maxDeltaTime=1/3*1e3;this._frame={time:new a.JulianDate(0,0),systemTime:0,deltaTime:0};this._defaultReferenceFrame=this.localOriginEastNorthUp;this._entityPoseCache={};this._entityPoseMap=new Map;this._subscribedEntities=new WeakMap;this._updatingEntities=new Set;this._knownEntities=new Set;this._frameIndex=0;this.entities.addCollection(this.subscribedEntities);this.subscribedEntities.add(this.user);if(this.sessionService.isRealityManager||this.sessionService.isRealityViewer){this.realityService.viewStateEvent.addEventListener(function(e){r._update({time:e.time,index:r._frameIndex++,reality:r.realityService.getCurrent(),entities:{},view:e})});this.realityService.frameEvent.addEventListener(function(e){r._update(e)});this.sessionService.connectEvent.addEventListener(function(e){r._subscribedEntities.set(e,new Set);e.on["ar.context.subscribe"]=function(t){var n=t.id;var i=r._subscribedEntities.get(e);if(i)i.add(n)}})}else{this.sessionService.manager.on["ar.context.update"]=function(e){r._update(e)}}}Object.defineProperty(e.prototype,"frame",{get:function(){if(!a.defined(this.serializedFrameState))throw new Error("A frame state has not yet been received");return this._frame},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"serializedFrameState",{get:function(){return this._serializedState},enumerable:true,configurable:true});e.prototype.getTime=function(){return this.frame.time};e.prototype.setDefaultReferenceFrame=function(e){this._defaultReferenceFrame=e};e.prototype.getDefaultReferenceFrame=function(){return this._defaultReferenceFrame};e.prototype.subscribeToEntityById=function(e){this.sessionService.manager.send("ar.context.subscribe",{id:e});return this.subscribedEntities.getOrCreateEntity(e)};e.prototype.getEntityPose=function(e,t){if(t===void 0){t=this._defaultReferenceFrame}var r=this.getTime();var n=e.id+"@"+p(t);var i=this._entityPoseMap.get(n);if(!a.defined(i)){i={position:new a.Cartesian3,orientation:new a.Quaternion,time:a.JulianDate.clone(r),poseStatus:0};this._entityPoseMap.set(n,i)}else{a.JulianDate.clone(r,i.time)}var o=f.getEntityPositionInReferenceFrame(e,r,t,i.position);var s=f.getEntityOrientationInReferenceFrame(e,r,t,i.orientation);var u=o&&s;var l=0;var d=i.poseStatus;if(u){l|=c.KNOWN}if(u&&!(d&c.KNOWN)){l|=c.FOUND}else if(!u&&d&c.KNOWN){l|=c.LOST}i.poseStatus=l;return i};e.prototype.getCurrentEntityState=function(e,t){console.warn("getCurrentEntityState is deprecated. Use getEntityPose instead.");return this.getEntityPose(e,t)};e.prototype._update=function(e){var t=this;if(this.sessionService.isRealityManager){delete e.entities[this.user.id];this._entityPoseCache={};for(var r=0,n=this.sessionService.managedSessions;r25e6)){var o=this.localOriginEastNorthUp.position;var s=this.localOriginEastNorthUp.orientation;o.setValue(r,t);if(t===a.ReferenceFrame.FIXED){var u=a.Transforms.headingPitchRollQuaternion(r,0,0,0,undefined,d);s.setValue(u)}else{s.setValue(a.Quaternion.IDENTITY)}this.localOriginChangeEvent.raiseEvent(undefined)}};e.prototype._sendUpdateForSession=function(e,t){var r=this;var n={};for(var i in e.entities){n[i]=e.entities[i]}var o=this._subscribedEntities.get(t);o.forEach(function(t){r._addEntityAndAncestorsToPoseMap(n,t,e.time)});var s={reality:e.reality,index:e.index,time:e.time,view:e.view,entities:n,sendTime:a.JulianDate.now()};t.send("ar.context.update",s)};e.prototype._addEntityAndAncestorsToPoseMap=function(e,t,r){if(!a.defined(this._entityPoseCache[t])){var n=this.subscribedEntities.getById(t);if(!n)return;this._entityPoseCache[t]=f.getSerializedEntityPose(n,r);if(n.position&&n.position.referenceFrame instanceof a.Entity){var i=p(n.position.referenceFrame);this._addEntityAndAncestorsToPoseMap(e,i,r)}}e[t]=this._entityPoseCache[t]};e=n([i.inject(s.SessionService,u.RealityService)],e);return e}();e("ContextService",v)}}});e.registerDynamic("17",[],true,function(e,t,r){var n,i=this||self,a=i;(function(e,t){e(function(){"use strict";var e={};e.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6",Dell:"Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", +Samsung:"Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533",Asus:"Asus.*Galaxy|PadFone.*Mobile",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo 3DS",Amoi:"Amoi",INQ:"INQ",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\\b",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android.*\\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+",Skyfire:"Skyfire",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari",Tizen:"Tizen",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Puffin:"Puffin",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:"Firefox/[VER]",Fennec:"Fennec/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]","UC Browser":"UC Browser[VER]",MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}};e.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var r=Object.prototype.hasOwnProperty,n;e.FALLBACK_PHONE="UnknownPhone";e.FALLBACK_TABLET="UnknownTablet";e.FALLBACK_MOBILE="UnknownMobile";n="isArray"in Array?Array.isArray:function(e){return Object.prototype.toString.call(e)==="[object Array]"};function i(e,t){return e!=null&&t!=null&&e.toLowerCase()===t.toLowerCase()}function a(e,t){var r,n,i=e.length;if(!i||!t){return false}r=t.toLowerCase();for(n=0;n=0){s=s.substring(0,c)+"([\\w._\\+]+)"+s.substring(c+5)}a[u]=new RegExp(s,"i")}l.props[i]=a}}o(l.oss);o(l.phones);o(l.tablets);o(l.uas);o(l.utils);l.oss0={WindowsPhoneOS:l.oss.WindowsPhoneOS,WindowsMobileOS:l.oss.WindowsMobileOS}})();e.findMatch=function(e,t){for(var n in e){if(r.call(e,n)){if(e[n].test(t)){return n}}}return null};e.findMatches=function(e,t){var n=[];for(var i in e){if(r.call(e,i)){if(e[i].test(t)){n.push(i)}}}return n};e.getVersionStr=function(t,n){var i=e.mobileDetectRules.props,a,o,s,u;if(r.call(i,t)){a=i[t];s=a.length;for(o=0;o1){e=t[0]+".";t.shift();e+=t.join("")}return Number(e)};e.isMobileFallback=function(t){return e.detectMobileBrowsers.fullPattern.test(t)||e.detectMobileBrowsers.shortPattern.test(t.substr(0,4))};e.isTabletFallback=function(t){return e.detectMobileBrowsers.tabletPattern.test(t)};e.prepareDetectionCache=function(r,n,i){if(r.mobile!==t){return}var a,o,u;o=e.findMatch(e.mobileDetectRules.tablets,n);if(o){r.mobile=r.tablet=o;r.phone=null;return}a=e.findMatch(e.mobileDetectRules.phones,n);if(a){r.mobile=r.phone=a;r.tablet=null;return}if(e.isMobileFallback(n)){u=s.isPhoneSized(i);if(u===t){r.mobile=e.FALLBACK_MOBILE;r.tablet=r.phone=null}else if(u){r.mobile=r.phone=e.FALLBACK_PHONE;r.tablet=null}else{r.mobile=r.tablet=e.FALLBACK_TABLET;r.phone=null}}else if(e.isTabletFallback(n)){r.mobile=r.tablet=e.FALLBACK_TABLET; +r.phone=null}else{r.mobile=r.tablet=r.phone=null}};e.mobileGrade=function(e){var t=e.mobile()!==null;if(e.os("iOS")&&e.version("iPad")>=4.3||e.os("iOS")&&e.version("iPhone")>=3.1||e.os("iOS")&&e.version("iPod")>=3.1||e.version("Android")>2.1&&e.is("Webkit")||e.version("Windows Phone OS")>=7||e.is("BlackBerry")&&e.version("BlackBerry")>=6||e.match("Playbook.*Tablet")||e.version("webOS")>=1.4&&e.match("Palm|Pre|Pixi")||e.match("hp.*TouchPad")||e.is("Firefox")&&e.version("Firefox")>=12||e.is("Chrome")&&e.is("AndroidOS")&&e.version("Android")>=4||e.is("Skyfire")&&e.version("Skyfire")>=4.1&&e.is("AndroidOS")&&e.version("Android")>=2.3||e.is("Opera")&&e.version("Opera Mobi")>11&&e.is("AndroidOS")||e.is("MeeGoOS")||e.is("Tizen")||e.is("Dolfin")&&e.version("Bada")>=2||(e.is("UC Browser")||e.is("Dolfin"))&&e.version("Android")>=2.3||e.match("Kindle Fire")||e.is("Kindle")&&e.version("Kindle")>=3||e.is("AndroidOS")&&e.is("NookTablet")||e.version("Chrome")>=11&&!t||e.version("Safari")>=5&&!t||e.version("Firefox")>=4&&!t||e.version("MSIE")>=7&&!t||e.version("Opera")>=10&&!t){return"A"}if(e.os("iOS")&&e.version("iPad")<4.3||e.os("iOS")&&e.version("iPhone")<3.1||e.os("iOS")&&e.version("iPod")<3.1||e.is("Blackberry")&&e.version("BlackBerry")>=5&&e.version("BlackBerry")<6||e.version("Opera Mini")>=5&&e.version("Opera Mini")<=6.5&&(e.version("Android")>=2.3||e.is("iOS"))||e.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||e.version("Opera Mobi")>=11&&e.is("SymbianOS")){return"B"}if(e.version("BlackBerry")<5||e.match("MSIEMobile|Windows CE.*Mobile")||e.version("Windows Mobile")<=5.2){return"C"}return"C"};e.detectOS=function(t){return e.findMatch(e.mobileDetectRules.oss0,t)||e.findMatch(e.mobileDetectRules.oss,t)};e.getDeviceSmallerSide=function(){return window.screen.width=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o;var s;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e}],execute:function(){s=function(){function e(e){var t=this;this.sessionService=e;this.focusEvent=new o.Event;this.blurEvent=new o.Event;this._hasFocus=false;this._sessionFocusEvent=new o.Event;e.manager.on["ar.focus.state"]=function(e){t._setFocus(e.state)};if(e.isRealityManager){e.manager.connectEvent.addEventListener(function(){setTimeout(function(){if(!t._session)t.setSession(t.sessionService.manager)})})}}Object.defineProperty(e.prototype,"hasFocus",{get:function(){return this._hasFocus},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"sessionFocusEvent",{get:function(){this.sessionService.ensureIsRealityManager();return this._sessionFocusEvent},enumerable:true,configurable:true});e.prototype.getSession=function(){this.sessionService.ensureIsRealityManager();return this._session};e.prototype.setSession=function(e){this.sessionService.ensureIsRealityManager();if(e&&!e.isConnected)throw new Error("Only a connected session can be granted focus");var t=this._session;if(t!==e){if(t)t.send("ar.focus.state",{state:false});if(e)e.send("ar.focus.state",{state:true});this._session=e;this.sessionFocusEvent.raiseEvent({previous:t,current:e})}};e.prototype.whenSessionHasFocus=function(e){var t=this;this.sessionService.ensureIsRealityManager();return new Promise(function(r){var n=t.sessionFocusEvent.addEventListener(function(t){var i=t.current;if(i===e){n();r()}})})};e.prototype._setFocus=function(e){if(this._hasFocus!==e){this._hasFocus=e;if(e){this.focusEvent.raiseEvent(undefined)}else{this.blurEvent.raiseEvent(undefined)}}};e=n([i.inject(a.SessionService)],e);return e}();e("FocusService",s)}}});(function(){var t=e.amdDefine;t("18",["exports","3"],function(e,t){"use strict";e.__esModule=true;var r=Object.assign||function(e){for(var t=1;t=a.length)break;u=a[s++]}else{s=a.next();if(s.done)break;u=s.value}var f=u;Object.defineProperty(i,f,{value:e[f],writable:true})}};return r?n(r):n}return r}function l(){return true}function d(){}function h(e){if(e===undefined){e={}}else if(typeof e==="function"){e={validate:e}}if(!e.validate){e.validate=l}if(!e.compose){e.compose=d}return e}function v(e){return function(t){var r=e(t);return r===true}}function p(e,t){return function(r){var n=t(r);if(n!==true){throw new Error(n||e+" was not correctly implemented.")}}}function m(e,t){t=h(t);var r=function r(n){var i=typeof n==="function"?n.prototype:n;t.compose(i);r.assert(i);Object.defineProperty(i,"protocol:"+e,{enumerable:false,configurable:false,writable:false,value:true})};r.validate=v(t.validate);r.assert=p(e,t.validate);return r}m.create=function(e,t){t=h(t);var r="protocol:"+e;var n=function r(n){var i=m(e,t);return n?i(n):i};n.decorates=function(e){return e[r]===true};n.validate=v(t.validate);n.assert=p(e,t.validate);return n}})})();(function(){var t=e.amdDefine;t("3",["exports"],function(e){"use strict";e.__esModule=true;e.AggregateError=t;e.initializePAL=a;function t(e,t,r){if(t){if(t.innerError&&r){return t}if(t.stack){e+="\n------------------------------------------------\ninner error: "+t.stack}}var n=new Error(e);if(t){n.innerError=t}return n}var r={};e.FEATURE=r;var n={noop:function e(){},eachModule:function e(){}};e.PLATFORM=n;n.global=function(){if(typeof self!=="undefined"){return self}if(typeof global!=="undefined"){return global}return new Function("return this")()}();var i={};e.DOM=i;function a(e){if(typeof Object.getPropertyDescriptor!=="function"){Object.getPropertyDescriptor=function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);var n=Object.getPrototypeOf(e);while(typeof r==="undefined"&&n!==null){r=Object.getOwnPropertyDescriptor(n,t);n=Object.getPrototypeOf(n)}return r}}e(n,r,i)}})})();(function(){var t=e.amdDefine;t("c",["exports","18","3"],function(e,t,r){"use strict";e.__esModule=true;var n;var i=function(){function e(e,t){for(var r=0;r=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f,c,l,d,h,v,p,m;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){f=function(){function e(t){var r=this;this.uri=t;this._connectEvent=new u.Event;this.closeEvent=new u.Event;this.errorEvent=new u.Event;this.on={};this._isOpened=false;this._isConnected=false;this._isClosed=false;this.on[e.OPEN]=function(e){if(!e)throw new Error("Session did not provide a configuration");if(r._isConnected)throw new Error("Session has already connected!");r.info=e;r._isConnected=true;r._connectEvent.raiseEvent(undefined)};this.on[e.CLOSE]=function(){r._isClosed=true;r._isConnected=false;if(r.messagePort&&r.messagePort.close)r.messagePort.close();r.closeEvent.raiseEvent(undefined)};this.on[e.ERROR]=function(e){var t=new Error("Session Error: "+e.message);if(e.stack)t["stack"]=e.stack;r.errorEvent.raiseEvent(t)};this.errorEvent.addEventListener(function(e){if(r.errorEvent.numberOfListeners===1)console.error(e)})}Object.defineProperty(e.prototype,"connectEvent",{get:function(){if(this._isConnected)throw new Error("The connectEvent only fires once and the session is already connected.");return this._connectEvent},enumerable:true,configurable:true});e.prototype.supportsProtocol=function(e,t){if(!this._isConnected)throw new Error("Session has not yet connected");var r=this.info.protocols;if(!r)return false;var n=false;var i=new Set;r.forEach(function(t){if(t.indexOf(e)!==-1){var r=+t.split("@v")[1]||0;i.add(r)}});if(t){if(Array.isArray(t)){t.forEach(function(e){if(i.has(e)){n=true}})}else{if(i.has(t)){n=true}}}else if(!t){n=true}return n};e.prototype.open=function(t,r){var n=this;if(this._isClosed)return;if(this._isOpened)throw new Error("Session can only be opened once");if(!r)throw new Error("Session options must be provided");this.messagePort=t;this._isOpened=true;this.messagePort.onmessage=function(e){if(n._isClosed)return;var t=e.data[0];var r=e.data[1];var i=e.data[2]||{};var a=e.data[3];var o=n.on[r];if(o&&!a){try{var s=o(i,e);if(s)console.warn("Handler for "+r+" returned an unexpected response")}catch(e){n.sendError(e);n.errorEvent.raiseEvent(e)}}else if(o){var s=new Promise(function(t){return t(o(i,e))});Promise.resolve(s).then(function(e){if(n._isClosed)return;n.send(r+":resolve:"+t,e)}).catch(function(e){if(n._isClosed)return;var i;if(typeof e==="string")i=e;else if(typeof e.message==="string")i=e.message;n.send(r+":reject:"+t,{reason:i})})}else{var u="Unable to handle message "+r;if(a){n.send(r+":reject:"+t,{reason:u})}else{n.sendError({message:u})}n.errorEvent.raiseEvent(new Error("No handlers are available for topic "+r))}};this.send(e.OPEN,r)};e.prototype.send=function(e,t){if(!this._isOpened)throw new Error("Session must be open to send messages");if(this._isClosed)return false;var r=a.createGuid();this.messagePort.postMessage([r,e,t]);return true};e.prototype.sendError=function(t){var r=t;if(r instanceof Error){r={message:r.message,stack:r["stack"]}}return this.send(e.ERROR,r)};e.prototype.request=function(e,t){var r=this;if(!this._isOpened||this._isClosed)throw new Error("Session must be open to make requests");var n=a.createGuid();var i=e+":resolve:"+n;var o=e+":reject:"+n;var s=new Promise(function(t,n){r.on[i]=function(e){delete r.on[i];delete r.on[o];t(e)};r.on[o]=function(t){delete r.on[i];delete r.on[o];console.warn("Request '"+e+"' rejected with reason:\n"+t.reason);n(new Error(t.reason))}});this.messagePort.postMessage([n,e,t||{},true]);return s};e.prototype.close=function(){if(this._isClosed)return;if(this._isOpened){this.send(e.CLOSE)}this._isClosed=true;this._isConnected=false;if(this.messagePort&&this.messagePort.close)this.messagePort.close();this.closeEvent.raiseEvent(undefined)};Object.defineProperty(e.prototype,"isConnected",{get:function(){return this._isConnected},enumerable:true,configurable:true});e.OPEN="ar.session.open";e.CLOSE="ar.session.close";e.ERROR="ar.session.error";return e}();e("SessionPort",f);c=function(){function e(){}e.prototype.create=function(e){return new f(e)};return e}();e("SessionPortFactory",c);l=function(){function e(){}return e}();e("ConnectService",l);d=function(){function e(e,t,r,n){var i=this;this.configuration=e;this.connectService=t;this.sessionPortFactory=r;this.messageChannelFactory=n;this.manager=this.createSessionPort("argon:manager");this.errorEvent=new u.Event;this._connectEvent=new u.Event;this._managedSessions=[];this.errorEvent.addEventListener(function(e){if(i.errorEvent.numberOfListeners===1)console.error(e)});this.manager.errorEvent.addEventListener(function(e){i.errorEvent.raiseEvent(e)});Object.freeze(this)}Object.defineProperty(e.prototype,"connectEvent",{get:function(){return this._connectEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"managedSessions",{get:function(){this.ensureIsRealityManager();return this._managedSessions},enumerable:true,configurable:true});e.prototype.connect=function(){if(this.connectService&&this.connectService.connect){this.connectService.connect(this)}else{console.warn("Argon: Unable to connect to a manager session; a connect service is not available")}};e.prototype.addManagedSessionPort=function(e){var t=this;this.ensureIsRealityManager();var r=this.sessionPortFactory.create(e);r.errorEvent.addEventListener(function(e){t.errorEvent.raiseEvent(e)});r.connectEvent.addEventListener(function(){t.managedSessions.push(r);t.connectEvent.raiseEvent(r)});r.closeEvent.addEventListener(function(){var e=t.managedSessions.indexOf(r);if(e>-1)t.managedSessions.splice(e,1)});return r};e.prototype.createSessionPort=function(e){return this.sessionPortFactory.create(e)};e.prototype.createMessageChannel=function(){return this.messageChannelFactory.create()};e.prototype.createSynchronousMessageChannel=function(){return this.messageChannelFactory.createSynchronous()};Object.defineProperty(e.prototype,"isRealityManager",{get:function(){return s.Role.isRealityManager(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityAugmenter",{get:function(){return s.Role.isRealityAugmenter(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityViewer",{get:function(){return s.Role.isRealityViewer(this.configuration.role)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isManager",{get:function(){console.warn("Deprecated. Use isRealityManager()");return this.isManager},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isApplication",{get:function(){console.warn("Deprecated. Use isRealityAugmenter()");return this.isRealityAugmenter},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"isRealityView",{get:function(){console.warn("Deprecated. Use isRealityViewer()");return this.isRealityViewer},enumerable:true,configurable:true});e.prototype.ensureIsRealityManager=function(){if(!this.isRealityManager)throw new Error("An reality-manager only API was accessed from a non reality-manager.")};e.prototype.ensureIsRealityViewer=function(){if(!this.isRealityViewer)throw new Error("An reality-viewer only API was accessed from a non reality-viewer.")};e.prototype.ensureNotRealityViewer=function(){if(this.isRealityViewer)throw new Error("An non-permitted API was accessed from a reality-viewer.")};e.prototype.ensureNotRealityAugmenter=function(){if(this.isRealityAugmenter)throw new Error("An non-permitted API was accessed from a reality-viewer.")};e=i([o.inject("config",l,c,u.MessageChannelFactory)],e);return e}();e("SessionService",d);h=function(e){n(t,e);function t(){e.apply(this,arguments)}t.prototype.connect=function(e){var t=e.createSynchronousMessageChannel();var r=t.port1;t.port2.onmessage=function(e){t.port2.postMessage(e.data)};e.manager.connectEvent.addEventListener(function(){e.connectEvent.raiseEvent(e.manager)});e.manager.open(r,e.configuration)};return t}(l);e("LoopbackConnectService",h);v=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&typeof window.parent!=="undefined"};t.prototype.connect=function(e){var t=e.createMessageChannel();window.parent.postMessage({type:"ARGON_SESSION"},"*",[t.port1]);e.manager.open(t.port2,e.configuration)};return t}(l);e("DOMConnectService",v);p=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&!!window["__ARGON_DEBUG_PORT__"]};t.prototype.connect=function(e){var t=e.manager,r=e.configuration;t.open(window["__ARGON_DEBUG_PORT__"],r)};return t}(l);e("DebugConnectService",p);m=function(e){n(t,e);function t(){e.apply(this,arguments)}t.isAvailable=function(){return typeof window!=="undefined"&&window["webkit"]&&window["webkit"].messageHandlers};t.prototype.connect=function(e){var t=e.createSynchronousMessageChannel();t.port2.onmessage=function(e){webkit.messageHandlers.argon.postMessage(JSON.stringify(e.data))};window["__ARGON_PORT__"]=t.port2;e.manager.open(t.port1,e.configuration);window.addEventListener("beforeunload",function(){e.manager.close()})};return t}(l);e("WKWebViewConnectService",m)}}});e.register("11",["c","12","e","14","a","b","1"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){l=function(){function e(){}return e}();e("RealityLoader",l);d=function(){function e(e,t){var r=this;this.sessionService=e;this.focusService=t;this.realities=new Array;this.connectEvent=new f.Event;this._changeEvent=new f.Event;this._viewStateEvent=new f.Event;this._frameEvent=new f.Event;this.desiredRealityMap=new WeakMap;this.desiredRealityMapInverse=new WeakMap;this.sessionDesiredRealityChangeEvent=new f.Event;this._loaders=[];this._scratchFrustum=new a.PerspectiveFrustum;this._scratchArray=new Array;this._loadID=-1;if(e.isRealityManager){e.manager.connectEvent.addEventListener(function(){setTimeout(function(){if(r._loadID===-1)r._setNextReality(r.onSelectReality())})})}e.connectEvent.addEventListener(function(e){if(!o.Role.isRealityViewer(e.info.role)){e.on["ar.reality.desired"]=function(t){var n=t.reality;var i=r.desiredRealityMap.get(e);console.log("Session set desired reality: "+JSON.stringify(n));if(n){if(n["type"]){var a=n["type"];n.uri=n.uri||"reality:"+a;if(a==="hosted")n.uri=n["url"];if(!n.title&&n["name"])n.title=n["name"]}if(r.isSupported(n)){r.desiredRealityMap.set(e,n);r.desiredRealityMapInverse.set(n,e)}else{e.sendError({message:'Reality of type "'+n.uri+'" is not available on this platform'});return}}else{r.desiredRealityMap.delete(e)}r._setNextReality(r.onSelectReality());r.sessionDesiredRealityChangeEvent.raiseEvent({session:e,previous:i,current:n})}}});e.manager.on["ar.reality.connect"]=function(e){var t=e.id;var n=r.sessionService.createSessionPort();var i=r.sessionService.createSynchronousMessageChannel(); +var a="ar.reality.message.route."+t;var o="ar.reality.message.send."+t;var s="ar.reality.close."+t;i.port1.onmessage=function(e){r.sessionService.manager.send(a,e.data)};r.sessionService.manager.on[o]=function(e){i.port1.postMessage(e)};r.sessionService.manager.on[s]=function(){n.close()};n.connectEvent.addEventListener(function(){r.connectEvent.raiseEvent(n)});r.sessionService.manager.closeEvent.addEventListener(function(){n.close();delete r.sessionService.manager.on[o];delete r.sessionService.manager.on[s]});n.open(i.port2,r.sessionService.configuration)}}Object.defineProperty(e.prototype,"changeEvent",{get:function(){this.sessionService.ensureIsRealityManager();return this._changeEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"viewStateEvent",{get:function(){this.sessionService.ensureNotRealityAugmenter();return this._viewStateEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"frameEvent",{get:function(){this.sessionService.ensureNotRealityAugmenter();return this._frameEvent},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"session",{get:function(){return this._session},enumerable:true,configurable:true});e.prototype.setDefault=function(e){this._default=e};e.prototype.registerLoader=function(e){this.sessionService.ensureIsRealityManager();this._loaders.push(e)};e.prototype.getCurrent=function(){this.sessionService.ensureNotRealityAugmenter();return this._current};e.prototype.isSupported=function(e){this.sessionService.ensureIsRealityManager();return!!this._getLoader(e)};e.prototype.publishFrame=function(e){console.warn("publishFrame is deprecated. Use publishViewState()");this.sessionService.ensureIsRealityViewer();if(this.sessionService.manager.isConnected){this.sessionService.manager.send("ar.reality.frameState",e)}};e.prototype.publishViewState=function(e){this.sessionService.ensureIsRealityViewer();if(this.sessionService.manager.isConnected){this.sessionService.manager.send("ar.reality.viewState",e);this.viewStateEvent.raiseEvent(e)}};e.prototype.setDesired=function(e){this.sessionService.ensureNotRealityViewer();this._desired=e;if(this.sessionService.isRealityManager){this._setNextReality(e,true)}else{this.sessionService.manager.send("ar.reality.desired",{reality:e})}};e.prototype.getDesired=function(){return this._desired};e.prototype.setOptionalReferenceFrames=function(e){};e.prototype.setRequiredReferenceFrames=function(e){};e.prototype.onSelectReality=function(){this.sessionService.ensureIsRealityManager();var e=this.desiredRealityMap.get(this.sessionService.manager);if(!e){var t=this.focusService.getSession();if(t&&t.isConnected){e=this.desiredRealityMap.get(t)}}if(!e){for(var r=0,n=this.sessionService.managedSessions;r=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){(function(e){e[e["OTHER"]=0]="OTHER";e[e["START"]=1]="START";e[e["CHANGE"]=2]="CHANGE";e[e["END"]=3]="END"})(l||(l={}));e("ZoomState",l);d=function(){function e(e,t){var r=this;this.sessionService=e;this.realityService=t;this.geolocationEntity=new a.Entity({id:"ar.device.geolocation",name:"Device Geolocation"});this.orientationEntity=new a.Entity({id:"ar.device.orientation",name:"Device Orientation"});this.deviceEntity=new a.Entity({id:"ar.device",name:"Device"});this.displayEntity=new a.Entity({id:"ar.device.display",name:"Device Display",position:new a.ConstantPositionProperty(a.Cartesian3.ZERO,this.deviceEntity),orientation:new a.ConstantProperty(a.Quaternion.IDENTITY)});this.subscribers=new Set;this.locationSubscribers=new Set;this.orientationSubscribers=new Set;this._subscriberTimeoutIds=new WeakMap;this._state={time:a.JulianDate.now(),viewport:this.getMaximumViewport(),defaultFov:Math.PI/2,subviews:[{type:s.SubviewType.SINGULAR,frustum:{fov:Math.PI/2}}],geolocationAccuracy:undefined,geolocationAltitudeAccuracy:undefined};this._scratchCartesian=new a.Cartesian3;this._scratchQuaternion1=new a.Quaternion;this._scratchQuaternion2=new a.Quaternion;this._x90Rot=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,a.CesiumMath.PI_OVER_TWO);this._headingDrift=0;if(typeof navigator!=="undefined"){this._mobileDetect=new o.default(navigator.userAgent)}this.sessionService.manager.on["ar.device.state"]=function(e){if(r.sessionService.isRealityManager)return;r._state=e;r._updateEntity(e.geolocationPose,r.geolocationEntity,a.ReferenceFrame.FIXED);if(!r._deviceorientationListener){r._updateEntity(e.orientationPose,r.orientationEntity,r.geolocationEntity)}r._updateEntity(e.devicePose,r.deviceEntity,r.orientationEntity);r._updateEntity(e.displayPose,r.displayEntity,r.deviceEntity)};e.manager.on["ar.reality.zoom"]=e.manager.on["ar.device.zoom"]=function(e){r.zoom(e)};var n=function(){if(r.locationSubscribers.size>0)r.startLocationUpdates();else r.stopLocationUpdates();if(r.orientationSubscribers.size>0)r.startOrientationUpdates();else r.stopOrientationUpdates();r.updateDeviceState()};this.sessionService.connectEvent.addEventListener(function(e){e.on["ar.device.subscribe"]=function(t){r.subscribers.add(e);if(t.location)r.locationSubscribers.add(e);else r.locationSubscribers.delete(e);if(t.orientation)r.orientationSubscribers.add(e);else r.orientationSubscribers.delete(e);var i=setTimeout(function(){r.subscribers.delete(e);r.locationSubscribers.delete(e);r.orientationSubscribers.delete(e);n()},t.timeout);var a=r._subscriberTimeoutIds.get(e);if(a!==undefined)clearTimeout(a);r._subscriberTimeoutIds.set(e,i);n()};e.on["ar.reality.desiredFov"]=e.on["ar.device.desiredFov"]=function(e){var t=e.fov;r.onDesiredFov(t);r.updateDeviceState()};if(s.Role.isRealityAugmenter(e.info.role)){r.locationSubscribers.add(e);r.orientationSubscribers.add(e)}r.updateDeviceState()});if(this.sessionService.isRealityManager){this.startOrientationUpdates();setTimeout(function(){n()},1e4);if(typeof window!=="undefined"&&window.addEventListener){var i=function(){var e=r.displayEntity.orientation;var t=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,(-window.orientation||0)*a.CesiumMath.RADIANS_PER_DEGREE,r._scratchQuaternion1);if(r._mobileDetect&&!r._mobileDetect.mobile()){t=a.Quaternion.multiply(r._x90Rot,t,t)}e.setValue(t)};window.addEventListener("resize",function(){r.state.viewport=r.getMaximumViewport();i()});window.addEventListener("orientationchange",function(){i()})}}if(this.sessionService.isRealityViewer){this.sessionService.manager.connectEvent.addEventListener(function(){r.stopOrientationUpdates()})}}e.prototype.update=function(e){var t=this;this.updateDeviceState();if(this.sessionService.isRealityViewer&&e&&e.orientation){this.startOrientationUpdates()}if(this._subscriptionTimeoutId||!this.sessionService.manager.isConnected)return;e=e||{};e.timeout=e.timeout||3e3;this._subscriptionTimeoutId=setTimeout(function(){t._subscriptionTimeoutId=undefined;t.sessionService.manager.send("ar.device.subscribe",e)},e.timeout*.75)};e.prototype.updateDeviceState=function(){var e=this._state;var t=a.JulianDate.now(e.time);e.geolocationPose=f.getSerializedEntityPose(this.geolocationEntity,t,a.ReferenceFrame.FIXED);e.orientationPose=f.getSerializedEntityPose(this.orientationEntity,t,this.geolocationEntity);e.devicePose=f.getSerializedEntityPose(this.deviceEntity,t,this.deviceEntity.position&&this.deviceEntity.position.referenceFrame);e.displayPose=f.getSerializedEntityPose(this.displayEntity,t,this.displayEntity.position&&this.displayEntity.position.referenceFrame);this.subscribers.forEach(function(t,r){r.send("ar.device.state",e)})};e.prototype.setDesiredFov=function(e){this.zoom({fov:e||this.state.defaultFov,zoom:1,state:l.OTHER})};e.prototype.setDefaultFov=function(e){var t=this.state.subviews[0].frustum.fov;var r=t/this.state.defaultFov;this.setDesiredFov(e*r);this.state.defaultFov=e};Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:true,configurable:true});e.prototype._updateEntity=function(e,t,r){if(e){var n=e.p===0?a.Cartesian3.ZERO:e.p;var i=e.o===0?a.Quaternion.IDENTITY:e.o;var o=t.position;if(o instanceof a.ConstantPositionProperty){o.setValue(n)}else{t.position=new a.ConstantPositionProperty(n,r)}var s=t.orientation;if(s instanceof a.ConstantProperty){s.setValue(i)}else{t.orientation=new a.ConstantProperty(i)}}else{t.position=undefined;t.orientation=undefined}};e.prototype.startLocationUpdates=function(){var e=this;if(!this.sessionService.isRealityManager||typeof navigator=="undefined")return;if(!a.defined(this._geolocationWatchId)){this._geolocationWatchId=navigator.geolocation.watchPosition(function(t){if(e.geolocationEntity.position instanceof a.SampledPositionProperty===false){var r=new a.SampledPositionProperty(a.ReferenceFrame.FIXED);r.forwardExtrapolationType=a.ExtrapolationType.HOLD;r.backwardExtrapolationType=a.ExtrapolationType.HOLD;r.maxNumSamples=10;e.geolocationEntity.position=r}var n=a.JulianDate.fromDate(new Date(t.timestamp));var i=a.Cartesian3.fromDegrees(t.coords.longitude,t.coords.latitude,t.coords.altitude||0,undefined,e._scratchCartesian);e.geolocationEntity.position.addSample(n,i);if(e.geolocationEntity.orientation instanceof a.ConstantProperty===false){e.geolocationEntity.orientation=new a.ConstantProperty}var o=a.Transforms.headingPitchRollQuaternion(i,0,0,0,undefined,e._scratchQuaternion1);e.geolocationEntity.orientation.setValue(o);e._state.geolocationAccuracy=t.coords.accuracy;e._state.geolocationAltitudeAccuracy=t.coords.altitudeAccuracy||undefined;e.updateDeviceState()},function(e){console.error(e)},{enableHighAccuracy:true})}};e.prototype.startOrientationUpdates=function(){var e=this;if(typeof navigator=="undefined")return;if(!a.defined(this._deviceorientationListener)){this._deviceorientationListener=function(t){var r=t.alpha;if(!a.defined(r)){return}if(t.absolute){e._alphaOffset=0}var n=t["webkitCompassHeading"];var i=+t["webkitCompassAccuracy"];if((!a.defined(e._alphaOffset)||Math.abs(e._headingDrift)>5)&&a.defined(n)&&i>=0&&i<50&&n>=0){if(!a.defined(e._alphaOffset)){e._alphaOffset=-n}else{e._alphaOffset-=e._headingDrift}}var o=e._alphaOffset||-n||0;var s=a.CesiumMath.RADIANS_PER_DEGREE*(t.alpha+o);var u=a.CesiumMath.RADIANS_PER_DEGREE*t.beta;var f=a.CesiumMath.RADIANS_PER_DEGREE*t.gamma;var c=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Z,s,e._scratchQuaternion1);var l=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_X,u,e._scratchQuaternion2);var d=a.Quaternion.multiply(c,l,e._scratchQuaternion1);var h=a.Quaternion.fromAxisAngle(a.Cartesian3.UNIT_Y,f,e._scratchQuaternion2);var v=a.Quaternion.multiply(d,h,d);if(e.orientationEntity.position instanceof a.ConstantPositionProperty==false){e.orientationEntity.position=new a.ConstantPositionProperty(a.Cartesian3.ZERO,e.geolocationEntity)}if(e.orientationEntity.orientation instanceof a.ConstantProperty==false){e.orientationEntity.orientation=new a.ConstantProperty}e.orientationEntity.orientation.setValue(v);if(e.deviceEntity.position instanceof a.ConstantPositionProperty==false){e.deviceEntity.position=new a.ConstantPositionProperty(a.Cartesian3.ZERO,e.orientationEntity)}if(e.deviceEntity.orientation instanceof a.ConstantProperty==false){e.deviceEntity.orientation=new a.ConstantProperty(a.Quaternion.IDENTITY)}e.updateDeviceState()};window.addEventListener("deviceorientation",this._deviceorientationListener)}};e.prototype.stopLocationUpdates=function(){if(typeof navigator==="undefined")return;if(a.defined(this._geolocationWatchId)){navigator.geolocation.clearWatch(this._geolocationWatchId);this._geolocationWatchId=undefined}};e.prototype.stopOrientationUpdates=function(){if(typeof navigator==="undefined")return;if(a.defined(this._deviceorientationListener)){window.removeEventListener("deviceorientation",this._deviceorientationListener);this._deviceorientationListener=undefined;this._alphaOffset=undefined}};e.prototype.getMaximumViewport=function(){if(typeof document!=="undefined"&&document.documentElement){return{x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}}throw new Error("Not implemeneted for the current platform")};e.prototype.zoom=function(e){if(this.realityService.session&&this.realityService.session.info["reality.handlesZoom"]){this.realityService.session.send("ar.device.zoom",e);this.realityService.session.send("ar.reality.zoom",e)}else{var t=this.onZoom(e);if(this.sessionService.isRealityViewer||this.sessionService.isRealityManager){this.sessionService.manager.send("ar.device.desiredFov",{fov:t})}}};e.prototype.onZoom=function(e){var t=2*Math.atan(Math.tan(e.fov*.5)/e.zoom);t=Math.max(10*a.CesiumMath.RADIANS_PER_DEGREE,Math.min(t,160*a.CesiumMath.RADIANS_PER_DEGREE));if(e.state===l.END&&Math.abs(t-this.state.defaultFov)<.05){t=this.state.defaultFov}return t};e.prototype.onDesiredFov=function(e){this.state.subviews.forEach(function(t){t.frustum.fov=e})};e=n([i.inject(u.SessionService,c.RealityService)],e);return e}();e("DeviceService",d)}}});e.register("9",["c","12","a","16","b","14","f"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__decorate||function(e,t,r,n){var i=arguments.length,a=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,r):n,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var i,a,o,s,u,f,c;var l,d,h,v;return{setters:[function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e},function(e){f=e},function(e){c=e}],execute:function(){if(typeof document!=="undefined"&&document.createElement){var t=document.querySelector("meta[name=viewport]");if(!t)t=document.createElement("meta");t.name="viewport";t.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0";document.head.appendChild(t);var r=document.querySelector("meta[name=argon]");if(!r)r=document.createElement("meta");r.name="argon";document.head.appendChild(r);d=new Promise(function(e){var t=function(){var t=document.querySelector("#argon");if(!t)t=document.createElement("div");t.id="argon";t.classList.add("argon-view");document.body.appendChild(t);l=t;e(t)};if(document.readyState=="loading"){document.addEventListener("DOMContentLoaded",t)}else{t()}});var p=document.createElement("style");p.type="text/css";document.head.insertBefore(p,document.head.firstChild);var m=p.sheet;m.insertRule("\n #argon {\n position: fixed;\n left: 0px;\n bottom: 0px;\n width: 100%;\n height: 100%;\n margin: 0;\n border: 0;\n padding: 0;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n ",0);m.insertRule("\n .argon-view > * {\n position: absolute;\n -webkit-tap-highlight-color: initial;\n }\n ",1)}h=function(){function e(e,t,r,n){var i=this;this.sessionService=t;this.focusService=r;this.contextService=n;this.viewportChangeEvent=new u.Event;this.acquireEvent=new u.Event;this.releaseEvent=new u.Event;this.desiredViewportMap=new WeakMap;this._subviews=[];this._subviewEntities=[];this._frustums=[];if(typeof document!=="undefined"&&document.createElement){var a=this.element=document.createElement("div");a.style.width="100%";a.style.height="100%";a.classList.add("argon-view");this.containingElementPromise=new Promise(function(t){if(e&&e instanceof HTMLElement){e.insertBefore(a,e.firstChild);t(e)}else{l=document.querySelector("#argon");if(l){l.insertBefore(a,l.firstChild);t(l)}else{d.then(function(e){e.insertBefore(a,e.firstChild);t(e)})}i.focusService.focusEvent.addEventListener(function(){d.then(function(e){e.classList.remove("argon-no-focus");e.classList.add("argon-focus")})});i.focusService.blurEvent.addEventListener(function(){d.then(function(e){e.classList.remove("argon-focus");e.classList.add("argon-no-focus")})});l.addEventListener("touchmove",function(e){e.preventDefault()},true);l.addEventListener("gesturestart",function(e){e.preventDefault()},true)}});if(this.sessionService.isRealityViewer){this.sessionService.manager.on["ar.view.uievent"]=function(e){e.view=window;var t;switch(e.type){case"wheel":t=new WheelEvent(e.type,e);default:t=new MouseEvent(e.type,e)}var r=document.elementFromPoint(t.clientX,t.clientY)||window;r.dispatchEvent(t)}}}if(this.sessionService.isRealityManager){this.sessionService.connectEvent.addEventListener(function(e){e.on["ar.viewport.desired"]=function(t){i.desiredViewportMap.set(e,t)}})}this.contextService.renderEvent.addEventListener(function(){var e=i.contextService.serializedFrameState;var t=i._subviewEntities;t.length=0;e.view.subviews.forEach(function(r,n){var a="ar.view_"+n;e.entities[a]=r.pose||e.view.pose;i.contextService.updateEntityFromFrameState(a,e);delete e.entities[a];t[n]=i.contextService.entities.getById(a)});i._update()})}e.prototype.getSubviews=function(e){var t=this;this._update();var r=this._subviews;r.length=this._current.subviews.length;this._current.subviews.forEach(function(n,i){var o=t._subviewEntities[i];var s=r[i]=r[i]||{};s.index=i;s.type=n.type;s.pose=t.contextService.getEntityPose(o,e);s.viewport=n.viewport||{x:0,y:0,width:t._current.viewport.width,height:t._current.viewport.height};s.frustum=t._frustums[i];if(!s.frustum){s.frustum=t._frustums[i]=new a.PerspectiveFrustum;s.frustum.near=.01;s.frustum.far=1e7}s.frustum.fov=n.frustum.fov;s.frustum.aspectRatio=n.frustum.aspectRatio||s.viewport.width/s.viewport.height;s.frustum.xOffset=n.frustum.xOffset||0;s.frustum.yOffset=n.frustum.yOffset||0;s.projectionMatrix=n.projectionMatrix||s.frustum.infiniteProjectionMatrix});return r};e.prototype.getViewport=function(){return this._current.viewport};e.prototype.setDesiredViewport=function(e){this.sessionService.manager.send("ar.view.desiredViewport",e)};e.prototype.requestOwnership=function(){};e.prototype.releaseOwnership=function(){};e.prototype.isOwner=function(){};e.prototype._update=function(){var e=this;var t=this.contextService.serializedFrameState;if(!t)throw new Error("Expected state to be defined");var r=t.view;var n=JSON.stringify(r.viewport);var i=this._current&&this._current.viewport;this._current=r;if(!this._currentViewportJSON||this._currentViewportJSON!==n){this._currentViewportJSON=n;if(this.element){requestAnimationFrame(function(){var t=r.viewport;e.element.style.left=t.x+"px";e.element.style.bottom=t.y+"px";e.element.style.width=t.width+"px";e.element.style.height=t.height+"px"})}this.viewportChangeEvent.raiseEvent({previous:i})}};e=n([i.inject("containerElement",o.SessionService,f.FocusService,s.ContextService)],e);return e}();e("ViewService",h);v=function(){function e(e,t,r,n){var i=this;this.viewService=e;this.deviceService=t;this.contextService=r;this.sessionService=n;if(this.sessionService.isRealityManager&&!this.sessionService.configuration["app.disablePinchZoom"]){this.viewService.containingElementPromise.then(function(e){var t=-1;if(typeof PointerEvent!=="undefined"){var r=new Array;var n=-1;var a=1;var o=function(e){for(var t=0;t=0;s--)if(o=e[s])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};var a,o,s,u;var f;return{setters:[function(e){a=e},function(e){o=e},function(e){s=e},function(e){u=e}],execute:function(){f=function(e){n(t,e);function t(t,r){var n=this;e.call(this);this.sessionService=t;this.viewService=r;this.type="hosted";this.iframeElement=document.createElement("iframe");this.iframeElement.style.border="0";this.iframeElement.width="100%";this.iframeElement.height="100%";r.containingElementPromise.then(function(e){e.insertBefore(n.iframeElement,e.firstChild);var t=function(e){if(n.currentRealitySession){var t=n.iframeElement.getBoundingClientRect();n.currentRealitySession.send("ar.view.uievent",{type:e.type,bubbles:e.bubbles,cancelable:e.cancelable,detail:e.detail,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,button:e.button,buttons:e.buttons,clientX:e.clientX+t.left,clientY:e.clientY+t.top,screenX:e.screenX,screenY:e.screenY,movementX:e.movementX,movementY:e.movementY,deltaX:e.deltaX,deltaY:e.deltaY,deltaZ:e.deltaZ,deltaMode:e.deltaMode,wheelDelta:e.wheelDelta,wheelDeltaX:e.wheelDeltaX,wheelDeltaY:e.wheelDeltaY})}};["click","dblclick","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","wheel"].forEach(function(r){e.addEventListener(r,t,false)})})}t.prototype.load=function(e,t){var r=this;this.viewService.containingElementPromise.then(function(n){var i=function(n){if(n.data.type!=="ARGON_SESSION")return;var a=n.ports&&n.ports[0];if(!a)throw new Error("Received an ARGON_SESSION message without a MessagePort object");var o=0;var s;while(o-1;m--){v=p[m];l(e,S,b,v)}}for(d=n-1;d>=0;d--){w=r[d];w.collectionChanged.addEventListener(h.prototype._onCollectionChanged,e);p=w.values;b=w.id;for(m=p.length-1;m>-1;m--){v=p[m];c(e,S,b,v);var T=g.getById(v.id);if(!t(T)){T=y.getById(v.id);if(!t(T)){s.id=v.id;T=new a(s)}else{f(T)}g.add(T)}T.merge(v)}}e._collectionsCopy=r.slice(0);y.suspendEvents();y.removeAll();var E=g.values;for(d=0;dthis._collections.length){throw new n("index must be less than or equal to the number of collections.")}}if(!i){r=this._collections.length;this._collections.push(e)}else{this._collections.splice(r,0,e)}d(this)};h.prototype.removeCollection=function(e){var t=this._collections.indexOf(e);if(t!==-1){this._collections.splice(t,1);d(this);return true}return false};h.prototype.removeAllCollections=function(){this._collections.length=0;d(this)};h.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};h.prototype.contains=function(e){return this._composite.contains(e)};h.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};h.prototype.getCollection=function(e){if(!t(e)){throw new n("index is required.","index")}return this._collections[e]};h.prototype.getCollectionsLength=function(){return this._collections.length};function v(e,r){if(!t(r)){throw new n("collection is required.")}var i=e.indexOf(r);if(i===-1){throw new n("collection is not in this composite.")}return i}function p(e,t,r){var n=e._collections;t=i.clamp(t,0,n.length-1);r=i.clamp(r,0,n.length-1);if(t===r){return}var a=n[t];n[t]=n[r];n[r]=a;d(e)}h.prototype.raiseCollection=function(e){var t=v(this._collections,e);p(this,t,t+1)};h.prototype.lowerCollection=function(e){var t=v(this._collections,e);p(this,t,t-1)};h.prototype.raiseCollectionToTop=function(e){var t=v(this._collections,e);if(t===this._collections.length-1){return}this._collections.splice(t,1);this._collections.push(e);d(this)};h.prototype.lowerCollectionToBottom=function(e){var t=v(this._collections,e);if(t===0){return}this._collections.splice(t,1);this._collections.splice(0,0,e);d(this)};h.prototype.suspendEvents=function(){this._suspendCount++;this._composite.suspendEvents()};h.prototype.resumeEvents=function(){if(this._suspendCount===0){throw new n("resumeEvents can not be called before suspendEvents.")}this._suspendCount--;if(this._shouldRecomposite&&this._suspendCount===0){d(this);this._shouldRecomposite=false}this._composite.resumeEvents()};h.prototype.computeAvailability=function(){return this._composite.computeAvailability()};h.prototype.getById=function(e){return this._composite.getById(e)};h.prototype._onCollectionChanged=function(e,r,n){var i=this._collectionsCopy;var o=i.length;var u=this._composite;u.suspendEvents();var d;var h;var v;var p;var m=n.length;var w=this._eventHash;var y=e.id;for(d=0;d=0;h--){v=i[h].getById(S);if(t(v)){if(!t(p)){p=u.getById(S);f(p)}p.merge(v)}}if(!t(p)){u.removeById(S)}p=undefined}var b=r.length;for(d=0;d=0;h--){v=i[h].getById(E);if(t(v)){if(!t(p)){p=u.getById(E);if(!t(p)){s.id=E;p=new a(s);u.add(p)}else{f(p)}}p.merge(v)}}p=undefined}u.resumeEvents()};h.prototype._onDefinitionChanged=function(e,r,n,i){var a=this._collections;var o=this._composite;var s=a.length;var u=e.id;var f=o.getById(u);var c=f[r];var l=!t(c);var d=true;for(var h=s-1;h>=0;h--){var v=a[h].getById(e.id);if(t(v)){var p=v[r];if(t(p)){if(d){d=false;if(t(p.merge)&&t(p.clone)){c=p.clone(c)}else{c=p;break}}c.merge(p)}}}if(l&&f.propertyNames.indexOf(r)===-1){f.addProperty(r)}f[r]=c};return h})})();(function(){var t=e.amdDefine;t("2b",["1b","1c","1d"],function(e,t,r){"use strict";function n(){this._array=[];this._hash={}}t(n.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});n.prototype.contains=function(t){if(typeof t!=="string"&&typeof t!=="number"){throw new r("key is required to be a string or number.")}return e(this._hash[t])};n.prototype.set=function(e,t){if(typeof e!=="string"&&typeof e!=="number"){throw new r("key is required to be a string or number.")}var n=this._hash[e];if(t!==n){this.remove(e);this._hash[e]=t;this._array.push(t)}};n.prototype.get=function(e){if(typeof e!=="string"&&typeof e!=="number"){throw new r("key is required to be a string or number.")}return this._hash[e]};n.prototype.remove=function(t){if(e(t)&&typeof t!=="string"&&typeof t!=="number"){throw new r("key is required to be a string or number.")}var n=this._hash[t];var i=e(n);if(i){var a=this._array;a.splice(a.indexOf(n),1);delete this._hash[t]}return i};n.prototype.removeAll=function(){var e=this._array;if(e.length>0){this._hash={};e.length=0}};return n})})();(function(){var t=e.amdDefine;t("27",[],function(){"use strict";function e(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=Math.random()*16|0;var r=e==="x"?t:t&3|8;return r.toString(16)})}return e})})();(function(){var t=e.amdDefine;t("2c",["2d","24","1b","1c","1d","1e","2e","2f"],function(e,t,r,n,i,a,o,s){"use strict";function u(r,n){this._definitionChanged=new a;this._value=e.clone(r);this._referenceFrame=t(n,o.FIXED)}n(u.prototype,{isConstant:{get:function(){return!r(this._value)||this._referenceFrame===o.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});u.prototype.getValue=function(e,t){return this.getValueInReferenceFrame(e,o.FIXED,t)};u.prototype.setValue=function(t,n){var i=false;if(!e.equals(this._value,t)){i=true;this._value=e.clone(t)}if(r(n)&&this._referenceFrame!==n){i=true;this._referenceFrame=n}if(i){this._definitionChanged.raiseEvent(this)}};u.prototype.getValueInReferenceFrame=function(e,t,n){if(!r(e)){throw new i("time is required.")}if(!r(t)){throw new i("referenceFrame is required.")}return s.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};u.prototype.equals=function(t){return this===t||t instanceof u&&e.equals(this._value,t._value)&&this._referenceFrame===t._referenceFrame};return u})})();(function(){var t=e.amdDefine;t("30",["24","1b","1c","1d","1e"],function(e,t,r,n,i){"use strict";function a(e){this._value=undefined;this._hasClone=false;this._hasEquals=false;this._definitionChanged=new i;this.setValue(e)}r(a.prototype,{isConstant:{value:true},definitionChanged:{get:function(){return this._definitionChanged}}});a.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};a.prototype.setValue=function(e){var r=this._value;if(r!==e){var n=t(e);var i=n&&typeof e.clone==="function";var a=n&&typeof e.equals==="function";this._hasClone=i;this._hasEquals=a;var o=!a||!e.equals(r);if(o){this._value=!i?e:e.clone();this._definitionChanged.raiseEvent(this)}}};a.prototype.equals=function(e){return this===e||e instanceof a&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};return a})})();(function(){var t=e.amdDefine;t("31",["24","1b","30"],function(e,t,r){"use strict";function n(e,r,n,i,a){return{configurable:i,get:function(){return this[r]},set:function(i){var o=this[r];var s=this[n];if(t(s)){s();this[n]=undefined}var u=t(i);if(u&&!t(i.getValue)&&t(a)){i=a(i)}if(o!==i){this[r]=i;this._definitionChanged.raiseEvent(this,e,i,o)}if(t(i)&&t(i.definitionChanged)){this[n]=i.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,i,i)},this)}}}}function i(e){return new r(e)}function a(t,r,a){return n(t,"_"+t.toString(),"_"+t.toString()+"Subscription",e(r,false),e(a,i))}return a})})();(function(){var t=e.amdDefine;t("32",["31"],function(e){"use strict";function t(e){return e}function r(r,n){return e(r,n,t)}return r})})();(function(){var t=e.amdDefine;t("29",["2d","27","24","1b","1c","1d","1e","33","34","35","36","@empty","@empty","2c","@empty","31","32","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","@empty","37","@empty","@empty"],function(e,t,r,n,i,a,o,s,u,f,c,l,d,h,v,p,m,w,y,g,S,b,T,E,_,A,P,M,C,I){"use strict";function x(e){return new h(e)}function R(e){return p(e,undefined,x)}function O(e,t){return p(e,undefined,function(e){if(e instanceof t){return e}return new t(e)})}function D(e){e=r(e,r.EMPTY_OBJECT);var i=e.id;if(!n(i)){i=t()}this._availability=undefined;this._id=i;this._definitionChanged=new o;this._name=e.name;this._show=r(e.show,true);this._parent=undefined;this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","orientation","path","point","polygon","polyline","polylineVolume","position","rectangle","viewFrom","wall"];this._billboard=undefined;this._billboardSubscription=undefined;this._box=undefined;this._boxSubscription=undefined;this._corridor=undefined;this._corridorSubscription=undefined;this._cylinder=undefined;this._cylinderSubscription=undefined;this._description=undefined;this._descriptionSubscription=undefined;this._ellipse=undefined;this._ellipseSubscription=undefined;this._ellipsoid=undefined;this._ellipsoidSubscription=undefined;this._label=undefined;this._labelSubscription=undefined;this._model=undefined;this._modelSubscription=undefined;this._orientation=undefined;this._orientationSubscription=undefined;this._path=undefined;this._pathSubscription=undefined;this._point=undefined;this._pointSubscription=undefined;this._polygon=undefined;this._polygonSubscription=undefined;this._polyline=undefined;this._polylineSubscription=undefined;this._polylineVolume=undefined;this._polylineVolumeSubscription=undefined;this._position=undefined;this._positionSubscription=undefined;this._rectangle=undefined;this._rectangleSubscription=undefined;this._viewFrom=undefined;this._viewFromSubscription=undefined;this._wall=undefined;this._wallSubscription=undefined;this._children=[];this.entityCollection=undefined;this.parent=e.parent;this.merge(e)}function q(e,t,r){var n=t.length;for(var i=0;i0){for(f=0;f=Math.PI){throw new r("fov must be in the range [0, PI).")}if(t.aspectRatio<0){throw new r("aspectRatio must be positive.")}if(t.near<0||t.near>t.far){throw new r("near must be greater than zero and less than far.")}t._aspectRatio=t.aspectRatio;t._fov=t.fov;t._fovy=t.aspectRatio<=1?t.fov:Math.atan(Math.tan(t.fov*.5)/t.aspectRatio)*2;t._near=t.near;t._far=t.far;t._sseDenominator=2*Math.tan(.5*t._fovy);t._xOffset=t.xOffset;t._yOffset=t.yOffset;n.top=t.near*Math.tan(.5*t._fovy);n.bottom=-n.top;n.right=t.aspectRatio*n.top;n.left=-n.right;n.near=t.near;n.far=t.far;n.right+=t.xOffset;n.left+=t.xOffset;n.top+=t.yOffset;n.bottom+=t.yOffset}}t(i.prototype,{projectionMatrix:{get:function(){a(this);return this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){a(this);return this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){a(this);return this._fovy}},sseDenominator:{get:function(){a(this);return this._sseDenominator}}});i.prototype.computeCullingVolume=function(e,t,r){a(this);return this._offCenterFrustum.computeCullingVolume(e,t,r)};i.prototype.getPixelDimensions=function(e,t,r,n){a(this);return this._offCenterFrustum.getPixelDimensions(e,t,r,n)};i.prototype.clone=function(t){if(!e(t)){t=new i}t.aspectRatio=this.aspectRatio;t.fov=this.fov;t.near=this.near;t.far=this.far;t._aspectRatio=undefined;t._fov=undefined;t._near=undefined;t._far=undefined;this._offCenterFrustum.clone(t._offCenterFrustum);return t};i.prototype.equals=function(t){if(!e(t)){return false}a(this);a(t);return this.fov===t.fov&&this.aspectRatio===t.aspectRatio&&this.near===t.near&&this.far===t.far&&this._offCenterFrustum.equals(t._offCenterFrustum)};return i})})();(function(){var t=e.amdDefine;t("42",["20"],function(e){"use strict";var t={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};return e(t)})})();(function(){var t=e.amdDefine;t("43",["2d","44","24","1b","1d","42","45"],function(e,t,r,n,i,a,o){"use strict";function s(e){this.planes=r(e,[])}var u=[new e,new e,new e];e.clone(e.UNIT_X,u[0]);e.clone(e.UNIT_Y,u[1]);e.clone(e.UNIT_Z,u[2]);var f=new e;var c=new e;var l=new o(new e,0);s.fromBoundingSphere=function(r,a){if(!n(r)){throw new i("boundingSphere is required.")}if(!n(a)){a=new s}var o=u.length;var l=a.planes;l.length=2*o;var d=r.center;var h=r.radius;var v=0;for(var p=0;pe.far){throw new o("near must be greater than zero and less than far.")}e._left=a;e._right=n;e._top=t;e._bottom=r;e._near=u;e._far=f;e._perspectiveMatrix=s.computePerspectiveOffCenter(a,n,r,t,u,f,e._perspectiveMatrix);e._infinitePerspective=s.computeInfinitePerspectiveOffCenter(a,n,r,t,u,e._infinitePerspective)}}a(f.prototype,{projectionMatrix:{get:function(){c(this);return this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){c(this);return this._infinitePerspective}}});var l=new t;var d=new t;var h=new t;var v=new t;f.prototype.computeCullingVolume=function(e,n,a){if(!i(e)){throw new o("position is required.")}if(!i(n)){throw new o("direction is required.")}if(!i(a)){throw new o("up is required.")}var s=this._cullingVolume.planes;var u=this.top;var f=this.bottom;var c=this.right;var p=this.left;var m=this.near;var w=this.far;var y=t.cross(n,a,l);var g=d;t.multiplyByScalar(n,m,g);t.add(e,g,g);var S=h;t.multiplyByScalar(n,w,S);t.add(e,S,S);var b=v;t.multiplyByScalar(y,p,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(b,a,b);var T=s[0];if(!i(T)){T=s[0]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(y,c,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(a,b,b);T=s[1];if(!i(T)){T=s[1]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(a,f,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(y,b,b);T=s[2];if(!i(T)){T=s[2]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);t.multiplyByScalar(a,u,b);t.add(g,b,b);t.subtract(b,e,b);t.normalize(b,b);t.cross(b,y,b);T=s[3];if(!i(T)){T=s[3]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,e);T=s[4];if(!i(T)){T=s[4]=new r}T.x=n.x;T.y=n.y;T.z=n.z;T.w=-t.dot(n,g);t.negate(n,b);T=s[5];if(!i(T)){T=s[5]=new r}T.x=b.x;T.y=b.y;T.z=b.z;T.w=-t.dot(b,S);return this._cullingVolume};f.prototype.getPixelDimensions=function(e,t,r,n){c(this);if(!i(e)||!i(t)){throw new o("Both drawingBufferWidth and drawingBufferHeight are required.")}if(e<=0){throw new o("drawingBufferWidth must be greater than zero.")}if(t<=0){throw new o("drawingBufferHeight must be greater than zero.")}if(!i(r)){throw new o("distance is required.")}if(!i(n)){throw new o("A result object is required.")}var a=1/this.near;var s=this.top*a;var u=2*r*s/t;s=this.right*a;var f=2*r*s/e;n.x=f;n.y=u;return n};f.prototype.clone=function(e){if(!i(e)){e=new f}e.right=this.right;e.left=this.left;e.top=this.top;e.bottom=this.bottom;e.near=this.near;e.far=this.far;e._left=undefined;e._right=undefined;e._top=undefined;e._bottom=undefined;e._near=undefined;e._far=undefined;return e};f.prototype.equals=function(e){return i(e)&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};return f})})();(function(){var t=e.amdDefine;t("47",["1b","1c","1d","1e","37"],function(e,t,r,n,i){"use strict";function a(t){var r=t._targetEntity;if(t._resolveEntity){r=t._targetCollection.getById(t._targetId);if(e(r)){t._targetEntity=r;t._resolveEntity=false}}return r}var o=function(t,i){if(!e(t)){throw new r("targetCollection is required.")}if(!e(i)||i===""){throw new r("targetId is required.")}this._targetCollection=t;this._targetId=i;this._targetEntity=undefined;this._definitionChanged=new n;this._resolveEntity=true;t.collectionChanged.addEventListener(o.prototype._onCollectionChanged,this)};t(o.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},id:{get:function(){return this._targetId}},position:{get:function(){var t=a(this);return e(t)?t.position:undefined}},orientation:{get:function(){var t=a(this);return e(t)?t.orientation:undefined}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},resolvedEntity:{get:function(){return a(this)}}});o.prototype._onCollectionChanged=function(t,r,n){var i=this._targetEntity;if(e(i)){if(n.indexOf(i)!==-1){this._resolveEntity=true}else if(this._resolveEntity){a(this);if(!this._resolveEntity){this._definitionChanged.raiseEvent(this)}}}};return o})})();(function(){var t=e.amdDefine;t("48",["1b","1c","1d","1e","39","37"],function(e,t,r,n,i,a){"use strict";function o(t){var r=true;if(t._resolveEntity){var n=t._targetCollection.getById(t._targetId);if(e(n)){n.definitionChanged.addEventListener(u.prototype._onTargetEntityDefinitionChanged,t);t._targetEntity=n;t._resolveEntity=false}else{n=t._targetEntity;r=false}if(!e(n)){throw new i('target entity "'+t._targetId+'" could not be resolved.')}}return r}function s(t){var r=t._targetProperty;if(t._resolveProperty){var n=o(t);var a=t._targetPropertyNames;r=t._targetEntity;var s=a.length;for(var u=0;u0){i=new Array(n);for(var s=0;s0&&(!r(n)||n.length!==a)){throw new i("derivatives length must be equal to the number of derivatives.")}this._property.addSample(e,t,n)};c.prototype.addSamples=function(e,t,r){this._property.addSamples(e,t,r)};c.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};c.prototype.equals=function(e){return this===e||e instanceof c&&u.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};return c})})();(function(){var t=e.amdDefine;t("1e",["1b","1c","1d"],function(e,t,r){"use strict";function n(){this._listeners=[];this._scopes=[];this._toRemove=[];this._insideRaiseEvent=false}t(n.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});n.prototype.addEventListener=function(e,t){if(typeof e!=="function"){throw new r("listener is required and must be a function.")}this._listeners.push(e);this._scopes.push(t);var n=this;return function(){n.removeEventListener(e,t)}};n.prototype.removeEventListener=function(e,t){if(typeof e!=="function"){throw new r("listener is required and must be a function.")}var n=this._listeners;var i=this._scopes;var a=-1;for(var o=0;o=t;n--){e[n]=e[s--]}}for(n=0;n=0||r(y)&&s.compare(w,y)>=0){break}d[g++]=w;u=u+1;for(f=0;f0){h.length=S;c(i,m,h);d.length=g;c(n,p,d)}}else{for(f=0;ff){return undefined}if(this._backwardExtrapolationType===o.HOLD){return c.unpack(l,0,n)}}if(d>=u){d=u-1;var v=a[d];f=this._forwardExtrapolationDuration;if(this._forwardExtrapolationType===o.NONE||f!==0&&s.secondsDifference(t,v)>f){return undefined}if(this._forwardExtrapolationType===o.HOLD){d=u-1;return c.unpack(l,d*c.packedLength,n)}}var p=this._xTable;var m=this._yTable;var w=this._interpolationAlgorithm;var y=this._packedInterpolationLength;var g=this._inputOrder;if(this._updateTableLength){this._updateTableLength=false;var S=Math.min(w.getRequiredDataPoints(this._interpolationDegree,g),u);if(S!==this._numberOfPoints){this._numberOfPoints=S;p.length=S;m.length=S*y}}var b=this._numberOfPoints-1;if(b<1){return undefined}var T=0;var E=u-1;var _=E-T+1;if(_>=b+1){var A=d-(b/2|0)-1;if(AE){P=E;A=P-b;if(A=0){if(mt.length-1){s.xPoleWander=0;s.yPoleWander=0;s.xPoleOffset=0;s.yPoleOffset=0;s.ut1MinusUtc=0;return s}var f=t[i];var c=t[a];if(f.equals(c)||n.equals(f)){p(e,r,i,u,s);return s}else if(n.equals(c)){p(e,r,a,u,s);return s}var l=o.secondsDifference(n,f)/o.secondsDifference(c,f);var d=i*u;var h=a*u;var v=r[d+e._ut1MinusUtcSecondsColumn];var w=r[h+e._ut1MinusUtcSecondsColumn];var y=w-v;if(y>.5||y<-.5){var g=r[d+e._taiMinusUtcSecondsColumn];var S=r[h+e._taiMinusUtcSecondsColumn];if(g!==S){if(c.equals(n)){v=w}else{w-=S-g}}}s.xPoleWander=m(l,r[d+e._xPoleWanderRadiansColumn],r[h+e._xPoleWanderRadiansColumn]);s.yPoleWander=m(l,r[d+e._yPoleWanderRadiansColumn],r[h+e._yPoleWanderRadiansColumn]);s.xPoleOffset=m(l,r[d+e._xCelestialPoleOffsetRadiansColumn],r[h+e._xCelestialPoleOffsetRadiansColumn]);s.yPoleOffset=m(l,r[d+e._yCelestialPoleOffsetRadiansColumn],r[h+e._yCelestialPoleOffsetRadiansColumn]);s.ut1MinusUtc=m(l,v,w);return s}return d})})();(function(){var t=e.amdDefine;t("50",[],function(){"use strict";function e(e,t,r,n,i){this.xPoleWander=e;this.yPoleWander=t;this.xPoleOffset=r;this.yPoleOffset=n;this.ut1MinusUtc=i}return e})})();(function(){var t=e.amdDefine;t("55",["56","24","1b","1d"],function(e,t,r,n){"use strict";function i(i,a){if(!r(i)){throw new n("relative uri is required.")}a=t(a,document.location.href);var o=new e(a);var s=new e(i);return s.resolve(o).toString()}return i})})();(function(){var t=e.amdDefine;t("56",[],function(){function e(r){if(r instanceof e){this.scheme=r.scheme;this.authority=r.authority;this.path=r.path;this.query=r.query;this.fragment=r.fragment}else if(r){var n=t.exec(r);this.scheme=n[1];this.authority=n[2];this.path=n[3];this.query=n[4];this.fragment=n[5]}}e.prototype.scheme=null;e.prototype.authority=null;e.prototype.path="";e.prototype.query=null;e.prototype.fragment=null;var t=new RegExp("^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$");e.prototype.getScheme=function(){return this.scheme};e.prototype.getAuthority=function(){return this.authority};e.prototype.getPath=function(){return this.path};e.prototype.getQuery=function(){return this.query};e.prototype.getFragment=function(){ +return this.fragment};e.prototype.isAbsolute=function(){return!!this.scheme&&!this.fragment};e.prototype.isSameDocumentAs=function(e){return e.scheme==this.scheme&&e.authority==this.authority&&e.path==this.path&&e.query==this.query};e.prototype.equals=function(e){return this.isSameDocumentAs(e)&&e.fragment==this.fragment};e.prototype.normalize=function(){this.removeDotSegments();if(this.scheme)this.scheme=this.scheme.toLowerCase();if(this.authority)this.authority=this.authority.replace(i,o).replace(r,a);if(this.path)this.path=this.path.replace(r,a);if(this.query)this.query=this.query.replace(r,a);if(this.fragment)this.fragment=this.fragment.replace(r,a)};var r=/%[0-9a-z]{2}/gi;var n=/[a-zA-Z0-9\-\._~]/;var i=/(.*@)?([^@:]*)(:.*)?/;function a(e){var t=unescape(e);return n.test(t)?t:e.toUpperCase()}function o(e,t,r,n){return(t||"")+r.toLowerCase()+(n||"")}e.prototype.resolve=function(t){var r=new e;if(this.scheme){r.scheme=this.scheme;r.authority=this.authority;r.path=this.path;r.query=this.query}else{r.scheme=t.scheme;if(this.authority){r.authority=this.authority;r.path=this.path;r.query=this.query}else{r.authority=t.authority;if(this.path==""){r.path=t.path;r.query=this.query||t.query}else{if(this.path.charAt(0)=="/"){r.path=this.path;r.removeDotSegments()}else{if(t.authority&&t.path==""){r.path="/"+this.path}else{r.path=t.path.substring(0,t.path.lastIndexOf("/")+1)+this.path}r.removeDotSegments()}r.query=this.query}}}r.fragment=this.fragment;return r};e.prototype.removeDotSegments=function(){var e=this.path.split("/"),t=[],r,n=e[0]=="";if(n)e.shift();var i=e[0]==""?e.shift():null;while(e.length){r=e.shift();if(r==".."){t.pop()}else if(r!="."){t.push(r)}}if(r=="."||r=="..")t.push("");if(n)t.unshift("");this.path=t.join("/")};e.prototype.toString=function(){var e="";if(this.scheme)e+=this.scheme+":";if(this.authority)e+="//"+this.authority;e+=this.path;if(this.query)e+="?"+this.query;if(this.fragment)e+="#"+this.fragment;return e};return e})})();(function(){var t=e.amdDefine;t("57",["56","24","1b","1d"],function(e,t,r,n){"use strict";function i(i,a,o){if(!r(i)){throw new n("first is required")}if(!r(a)){throw new n("second is required")}o=t(o,true);if(!(i instanceof e)){i=new e(i)}if(!(a instanceof e)){a=new e(a)}if(r(a.authority)&&!r(a.scheme)){if(typeof document!=="undefined"&&r(document.location)&&r(document.location.href)){a.scheme=new e(document.location.href).scheme}else{a.scheme=i.scheme}}var s=i;if(a.isAbsolute()){s=a}var u="";if(r(s.scheme)){u+=s.scheme+":"}if(r(s.authority)){u+="//"+s.authority;if(s.path!==""&&s.path!=="/"){u=u.replace(/\/?$/,"/");s.path=s.path.replace(/^\/?/g,"")}}if(s===i){if(o){u+=i.path.replace(/\/?$/,"/")+a.path.replace(/^\/?/g,"")}else{u+=i.path+a.path}}else{u+=a.path}var f=r(i.query);var c=r(a.query);if(f&&c){u+="?"+i.query+"&"+a.query}else if(f&&!c){u+="?"+i.query}else if(!f&&c){u+="?"+a.query}var l=r(a.fragment);if(r(i.fragment)&&!l){u+="#"+i.fragment}else if(l){u+="#"+a.fragment}return u}return i})})();(function(){var t=e.amdDefine;t("58",["56","1b","1d","55","57","require"],function(e,t,r,n,i,a){"use strict";var o=/((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i;function s(){var e=document.getElementsByTagName("script");for(var t=0,r=e.length;t>>0;o=Math.max(0,Math.min(t,p));u=[];s=p-o+1;c=[];l=f();if(!o){l.resolve(u)}else{v=l.progress;h=function(e){c.push(e);if(!--s){d=h=S;l.reject(c)}};d=function(e){u.push(e);if(!--o){d=h=S;l.resolve(u)}};for(m=0;m>>0;r=[];u=f();if(!a){u.resolve(r)}else{o=function e(i,o){n(i,t).then(function(e){r[o]=e;if(!--a){u.resolve(r)}},u.reject)};for(s=0;s2;return n(e,function(e){e=i?r:e;t.resolve(e);return e},function(e){t.reject(e);return u(e)},t.progress)}function y(e,t){var r,n=0;while(r=e[n++]){r(t)}}function g(e,t){var r,n=t.length;while(n>e){r=t[--n];if(r!=null&&typeof r!="function"){throw new Error("arg "+n+" must be a function")}}}function S(){}t=[].slice;e=[].reduce||function(e){var t,r,n,i,a;a=0;t=Object(this);i=t.length>>>0;r=arguments;if(r.length<=1){for(;;){if(a in t){n=t[a++];break}if(++a>=i){throw new TypeError}}}else{n=r[1]}for(;a0){var o=i.substring(0,a);var s=i.substring(a+2);t[o]=s}}return t}return e})})();(function(){var t=e.amdDefine;t("5b",["1b","5a"],function(e,t){"use strict";function r(e,r,n){this.statusCode=e;this.response=r;this.responseHeaders=n;if(typeof this.responseHeaders==="string"){this.responseHeaders=t(this.responseHeaders)}}r.prototype.toString=function(){var t="Request has failed.";if(e(this.statusCode)){t+=" Status Code: "+this.statusCode}return t};return r})})();(function(){var t=e.amdDefine;t("5c",["4f","24","1b","1d","5b","39"],function(e,t,r,n,i,a){"use strict";function o(i){i=t(i,t.EMPTY_OBJECT);if(!r(i.url)){throw new n("options.url is required.")}var a=i.responseType;var s=t(i.method,"GET");var u=i.data;var f=i.headers;var c=i.overrideMimeType;return e(i.url,function(t){var r=e.defer();o.load(t,a,s,u,f,r,c);return r.promise})}var s=/^data:(.*?)(;base64)?,(.*)$/;function u(e,t){var r=decodeURIComponent(t);if(e){return atob(r)}return r}function f(e,t){var r=u(e,t);var n=new ArrayBuffer(r.length);var i=new Uint8Array(n);for(var a=0;a=200&&h.status<300){if(r(h.response)){f.resolve(h.response)}else{if(r(h.responseXML)&&h.responseXML.hasChildNodes()){f.resolve(h.responseXML)}else if(r(h.responseText)){f.resolve(h.responseText)}else{f.reject(new a("unknown XMLHttpRequest response type."))}}}else{f.reject(new i(h.status,h.response,h.getAllResponseHeaders()))}};h.onerror=function(e){f.reject(new i)};h.send(o)};o.defaultLoad=o.load;return o})})();(function(){var t=e.amdDefine;t("5d",["5c"],function(e){"use strict";function t(t,r){return e({url:t,headers:r})}return t})})();(function(){var t=e.amdDefine;t("52",["59","1b","1d","5d"],function(e,t,r,n){"use strict";var i={Accept:"application/json,*/*;q=0.01"};function a(a,o){if(!t(a)){throw new r("url is required.")}if(!t(o)){o=i}else if(!t(o.Accept)){o=e(o);o.Accept=i.Accept}return n(a,o).then(function(e){return JSON.parse(e)})}return a})})();(function(){var t=e.amdDefine;t("5e",["4f","58","24","1b","5f","25","52","54"],function(e,t,r,n,i,a,o,s){"use strict";function u(e){e=r(e,r.EMPTY_OBJECT);this._xysFileUrlTemplate=e.xysFileUrlTemplate;this._interpolationOrder=r(e.interpolationOrder,9);this._sampleZeroJulianEphemerisDate=r(e.sampleZeroJulianEphemerisDate,2442396.5);this._sampleZeroDateTT=new a(this._sampleZeroJulianEphemerisDate,0,s.TAI);this._stepSizeDays=r(e.stepSizeDays,1);this._samplesPerXysFile=r(e.samplesPerXysFile,1e3);this._totalSamples=r(e.totalSamples,27426);this._samples=new Array(this._totalSamples*3);this._chunkDownloadsInProgress=[];var t=this._interpolationOrder;var n=this._denominators=new Array(t+1);var i=this._xTable=new Array(t+1);var o=Math.pow(this._stepSizeDays,t);for(var u=0;u<=t;++u){n[u]=o;i[u]=u*this._stepSizeDays;for(var f=0;f<=t;++f){if(f!==u){n[u]*=u-f}}n[u]=1/n[u]}this._work=new Array(t+1);this._coef=new Array(t+1)}var f=new a(0,0,s.TAI);function c(e,t,r){var n=f;n.dayNumber=t;n.secondsOfDay=r;return a.daysDifference(n,e._sampleZeroDateTT)}u.prototype.preload=function(t,r,n,i){var a=c(this,t,r);var o=c(this,n,i);var s=a/this._stepSizeDays-this._interpolationOrder/2|0;if(s<0){s=0}var u=o/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;if(u>=this._totalSamples){u=this._totalSamples-1}var f=s/this._samplesPerXysFile|0;var d=u/this._samplesPerXysFile|0;var h=[];for(var v=f;v<=d;++v){h.push(l(this,v))}return e.all(h)};u.prototype.computeXysRadians=function(e,t,r){var a=c(this,e,t);if(a<0){return undefined}var o=a/this._stepSizeDays|0;if(o>=this._totalSamples){return undefined}var s=this._interpolationOrder;var u=o-(s/2|0);if(u<0){u=0}var f=u+s;if(f>=this._totalSamples){f=this._totalSamples-1;u=f-s;if(u<0){u=0}}var d=false;var h=this._samples;if(!n(h[u*3])){l(this,u/this._samplesPerXysFile|0);d=true}if(!n(h[f*3])){l(this,f/this._samplesPerXysFile|0);d=true}if(d){return undefined}if(!n(r)){r=new i(0,0,0)}else{r.x=0;r.y=0;r.s=0}var v=a-u*this._stepSizeDays;var p=this._work;var m=this._denominators;var w=this._coef;var y=this._xTable;var g,S;for(g=0;g<=s;++g){p[g]=v-y[g]}for(g=0;g<=s;++g){w[g]=1;for(S=0;S<=s;++S){if(S!==g){w[g]*=p[S]}}w[g]*=m[g];var b=(u+g)*3;r.x+=w[g]*h[b++];r.y+=w[g]*h[b++];r.s+=w[g]*h[b]}return r};function l(r,i){if(r._chunkDownloadsInProgress[i]){return r._chunkDownloadsInProgress[i]}var a=e.defer();r._chunkDownloadsInProgress[i]=a;var s;var u=r._xysFileUrlTemplate;if(n(u)){s=u.replace("{0}",i)}else{s=t("Assets/IAU2006_XYS/IAU2006_XYS_"+i+".json")}e(o(s),function(e){r._chunkDownloadsInProgress[i]=false;var t=r._samples;var n=e.samples;var o=i*r._samplesPerXysFile*3;for(var s=0,u=n.length;s0){i=Math.sqrt(m+1);d=.5*i;i=.5/i;a=(e[s.COLUMN1ROW2]-e[s.COLUMN2ROW1])*i;o=(e[s.COLUMN2ROW0]-e[s.COLUMN0ROW2])*i;f=(e[s.COLUMN0ROW1]-e[s.COLUMN1ROW0])*i}else{var w=c;var y=0;if(v>h){y=1}if(p>h&&p>v){y=2}var g=w[y];var S=w[g];i=Math.sqrt(e[s.getElementIndex(y,y)]-e[s.getElementIndex(g,g)]-e[s.getElementIndex(S,S)]+1);var b=l;b[y]=.5*i;i=.5/i;d=(e[s.getElementIndex(S,g)]-e[s.getElementIndex(g,S)])*i;b[g]=(e[s.getElementIndex(g,y)]+e[s.getElementIndex(y,g)])*i;b[S]=(e[s.getElementIndex(S,y)]+e[s.getElementIndex(y,S)])*i;a=-b[0];o=-b[1];f=-b[2]}if(!r(t)){return new u(a,o,f,d)}t.x=a;t.y=o;t.z=f;t.w=d;return t};var d=new u;u.fromHeadingPitchRoll=function(t,i,a,o){if(!r(t)){throw new n("heading is required.")}if(!r(i)){throw new n("pitch is required.")}if(!r(a)){throw new n("roll is required.")}var s=u.fromAxisAngle(e.UNIT_X,a,d);var f=u.fromAxisAngle(e.UNIT_Y,-i,o);o=u.multiply(f,s,f);var c=u.fromAxisAngle(e.UNIT_Z,-t,d);return u.multiply(c,o,o)};var h=new e;var v=new e;var p=new u;var m=new u;var w=new u;u.packedLength=4;u.pack=function(e,i,a){if(!r(e)){throw new n("value is required")}if(!r(i)){throw new n("array is required")}a=t(a,0);i[a++]=e.x;i[a++]=e.y;i[a++]=e.z;i[a]=e.w};u.unpack=function(e,i,a){if(!r(e)){throw new n("array is required")}i=t(i,0);if(!r(a)){a=new u}a.x=e[i];a.y=e[i+1];a.z=e[i+2];a.w=e[i+3];return a};u.packedInterpolationLength=3;u.convertPackedArrayForInterpolation=function(e,t,r,n){u.unpack(e,r*4,w);u.conjugate(w,w);for(var i=0,a=r-t+1;i=0){s=1}else{s=-1;o=-o}var f=o-1;var c=1-i;var l=i*i;var d=c*c;for(var h=7;h>=0;--h){x[h]=(C[h]*l-I[h])*f;R[h]=(C[h]*d-I[h])*f}var v=s*i*(1+x[0]*(1+x[1]*(1+x[2]*(1+x[3]*(1+x[4]*(1+x[5]*(1+x[6]*(1+x[7]))))))));var p=c*(1+R[0]*(1+R[1]*(1+R[2]*(1+R[3]*(1+R[4]*(1+R[5]*(1+R[6]*(1+R[7]))))))));var m=u.multiplyByScalar(e,p,P);u.multiplyByScalar(t,v,a);return u.add(m,a,a)};u.fastSquad=function(e,t,i,a,o,s){if(!r(e)||!r(t)||!r(i)||!r(a)){throw new n("q0, q1, s0, and s1 are required.")}if(typeof o!=="number"){throw new n("t is required and must be a number.")}if(!r(s)){throw new n("result is required")}var f=u.fastSlerp(e,t,o,_);var c=u.fastSlerp(i,a,o,A);return u.fastSlerp(f,c,2*o*(1-o),s)};u.equals=function(e,t){return e===t||r(e)&&r(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};u.equalsEpsilon=function(e,t,i){if(typeof i!=="number"){throw new n("epsilon is required and must be a number.")}return e===t||r(e)&&r(t)&&Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i&&Math.abs(e.z-t.z)<=i&&Math.abs(e.w-t.w)<=i};u.ZERO=a(new u(0,0,0,0));u.IDENTITY=a(new u(0,0,0,1));u.prototype.clone=function(e){return u.clone(this,e)};u.prototype.equals=function(e){return u.equals(this,e)};u.prototype.equalsEpsilon=function(e,t){return u.equalsEpsilon(this,e,t)};u.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"};return u})})();(function(){var t=e.amdDefine;t("36",["4f","46","2d","44","3c","24","1b","1d","4e","50","3d","5e","5f","25","28","33","34","35","53"],function(e,t,r,n,i,a,o,s,u,f,c,l,d,h,v,p,m,w,y){"use strict";var g={};var S=new r;var b=new r;var T=new r;g.eastNorthUpToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(0,-i,0,e.x,1,0,0,e.y,0,0,i,e.z,0,0,0,1)}n[0]=0;n[1]=1;n[2]=0;n[3]=0;n[4]=-i;n[5]=0;n[6]=0;n[7]=0;n[8]=0;n[9]=0;n[10]=i;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=S;var f=b;var l=T;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(f.x,l.x,u.x,e.x,f.y,l.y,u.y,e.y,f.z,l.z,u.z,e.z,0,0,0,1)}n[0]=f.x;n[1]=f.y;n[2]=f.z;n[3]=0;n[4]=l.x;n[5]=l.y;n[6]=l.z;n[7]=0;n[8]=u.x;n[9]=u.y;n[10]=u.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};var E=new r;var _=new r;var A=new r;g.northEastDownToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(-i,0,0,e.x,0,1,0,e.y,0,0,-i,e.z,0,0,0,1)}n[0]=-i;n[1]=0;n[2]=0;n[3]=0;n[4]=0;n[5]=1;n[6]=0;n[7]=0;n[8]=0;n[9]=0;n[10]=-i;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=E;var f=_;var l=A;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(l.x,f.x,-u.x,e.x,l.y,f.y,-u.y,e.y,l.z,f.z,-u.z,e.z,0,0,0,1)}n[0]=l.x;n[1]=l.y;n[2]=l.z;n[3]=0;n[4]=f.x;n[5]=f.y;n[6]=f.z;n[7]=0;n[8]=-u.x;n[9]=-u.y;n[10]=-u.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};g.northUpEastToFixedFrame=function(e,t,n){if(!o(e)){throw new s("origin is required.")}if(v.equalsEpsilon(e.x,0,v.EPSILON14)&&v.equalsEpsilon(e.y,0,v.EPSILON14)){var i=v.sign(e.z);if(!o(n)){return new m(-i,0,0,e.x,0,0,1,e.y,0,i,0,e.z,0,0,0,1)}n[0]=-i;n[1]=0;n[2]=0;n[3]=0;n[4]=0;n[5]=0;n[6]=i;n[7]=0;n[8]=0;n[9]=1;n[10]=0;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n}var u=S;var f=b;var l=T;t=a(t,c.WGS84);t.geodeticSurfaceNormal(e,u);f.x=-e.y;f.y=e.x;f.z=0;r.normalize(f,f);r.cross(u,f,l);if(!o(n)){return new m(l.x,u.x,f.x,e.x,l.y,u.y,f.y,e.y,l.z,u.z,f.z,e.z,0,0,0,1)}n[0]=l.x;n[1]=l.y;n[2]=l.z;n[3]=0;n[4]=u.x;n[5]=u.y;n[6]=u.z;n[7]=0;n[8]=f.x;n[9]=f.y;n[10]=f.z;n[11]=0;n[12]=e.x;n[13]=e.y;n[14]=e.z;n[15]=1;return n};var P=new w;var M=new r(1,1,1);var C=new m;g.headingPitchRollToFixedFrame=function(e,t,n,i,a,o){var s=w.fromHeadingPitchRoll(t,n,i,P);var u=m.fromTranslationQuaternionRotationScale(r.ZERO,s,M,C);o=g.eastNorthUpToFixedFrame(e,a,o);return m.multiply(o,u,o)};var I=new m;var x=new p;g.headingPitchRollQuaternion=function(e,t,r,n,i,a){var o=g.headingPitchRollToFixedFrame(e,t,r,n,i,I);var s=m.getRotation(o,x);return w.fromRotationMatrix(s,a)};var R=6*3600+41*60+50.54841;var O=8640184.812866;var D=.093104;var q=-62e-7;var N=1.1772758384668e-19;var G=72921158553e-15;var L=v.TWO_PI/86400;var B=new h;g.computeTemeToPseudoFixedMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}B=h.addSeconds(e,-h.computeTaiMinusUtc(e),B);var r=B.dayNumber;var n=B.secondsOfDay;var i;var a=r-2451545;if(n>=43200){i=(a+.5)/y.DAYS_PER_JULIAN_CENTURY}else{i=(a-.5)/y.DAYS_PER_JULIAN_CENTURY}var u=R+i*(O+i*(D+i*q));var f=u*L%v.TWO_PI;var c=G+N*(r-2451545.5);var l=(n+y.SECONDS_PER_DAY*.5)%y.SECONDS_PER_DAY;var d=f+c*l;var m=Math.cos(d);var w=Math.sin(d);if(!o(t)){return new p(m,w,0,-w,m,0,0,0,1)}t[0]=m;t[1]=-w;t[2]=0;t[3]=w;t[4]=m;t[5]=0;t[6]=0;t[7]=0;t[8]=1;return t};g.iau2006XysData=new l;g.earthOrientationParameters=u.NONE;var H=32.184;var k=2451545;g.preloadIcrfFixed=function(t){var r=t.start.dayNumber;var n=t.start.secondsOfDay+H;var i=t.stop.dayNumber;var a=t.stop.secondsOfDay+H;var o=g.iau2006XysData.preload(r,n,i,a);var s=g.earthOrientationParameters.getPromiseToLoad();return e.all([o,s])};g.computeIcrfToFixedMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}if(!o(t)){t=new p}var r=g.computeFixedToIcrfMatrix(e,t);if(!o(r)){return undefined}return p.transpose(r,t)};var z=new d(0,0,0);var F=new f(0,0,0,0,0,0);var V=new p;var U=new p;g.computeFixedToIcrfMatrix=function(e,t){if(!o(e)){throw new s("date is required.")}if(!o(t)){t=new p}var r=g.earthOrientationParameters.compute(e,F);if(!o(r)){return undefined}var n=e.dayNumber;var i=e.secondsOfDay+H;var a=g.iau2006XysData.computeXysRadians(n,i,z);if(!o(a)){return undefined}var u=a.x+r.xPoleOffset;var f=a.y+r.yPoleOffset;var c=1/(1+Math.sqrt(1-u*u-f*f));var l=V;l[0]=1-c*u*u;l[3]=-c*u*f;l[6]=u;l[1]=-c*u*f;l[4]=1-c*f*f;l[7]=f;l[2]=-u;l[5]=-f;l[8]=1-c*(u*u+f*f);var d=p.fromRotationZ(-a.s,U);var m=p.multiply(l,d,V);var w=e.dayNumber;var S=e.secondsOfDay-h.computeTaiMinusUtc(e)+r.ut1MinusUtc;var b=w-2451545;var T=S/y.SECONDS_PER_DAY; +var E=.779057273264+T+.00273781191135448*(b+T);E=E%1*v.TWO_PI;var _=p.fromRotationZ(E,U);var A=p.multiply(m,_,V);var P=Math.cos(r.xPoleWander);var M=Math.cos(r.yPoleWander);var C=Math.sin(r.xPoleWander);var I=Math.sin(r.yPoleWander);var x=n-k+i/y.SECONDS_PER_DAY;x/=36525;var R=-47e-6*x*v.RADIANS_PER_DEGREE/3600;var O=Math.cos(R);var D=Math.sin(R);var q=U;q[0]=P*O;q[1]=P*D;q[2]=C;q[3]=-M*D+I*C*O;q[4]=M*O+I*C*D;q[5]=-I*P;q[6]=-I*D-M*C*O;q[7]=I*O-M*C*D;q[8]=M*P;return p.multiply(A,q,t)};var W=new n;g.pointToWindowCoordinates=function(e,t,r,n){n=g.pointToGLWindowCoordinates(e,t,r,n);n.y=2*t[5]-n.y;return n};g.pointToGLWindowCoordinates=function(e,r,i,a){if(!o(e)){throw new s("modelViewProjectionMatrix is required.")}if(!o(r)){throw new s("viewportTransformation is required.")}if(!o(i)){throw new s("point is required.")}if(!o(a)){a=new t}var u=W;m.multiplyByVector(e,n.fromElements(i.x,i.y,i.z,1,u),u);n.multiplyByScalar(u,1/u.w,u);m.multiplyByVector(r,u,u);return t.fromCartesian4(u,a)};var j=new r;var X=new r;var K=new r;g.rotationMatrixFromPositionVelocity=function(e,t,n,i){if(!o(e)){throw new s("position is required.")}if(!o(t)){throw new s("velocity is required.")}var u=a(n,c.WGS84).geodeticSurfaceNormal(e,j);var f=r.cross(t,u,X);if(r.equalsEpsilon(f,r.ZERO,v.EPSILON6)){f=r.clone(r.UNIT_X,f)}var l=r.cross(f,t,K);r.cross(t,l,f);r.negate(f,f);if(!o(i)){i=new p}i[0]=t.x;i[1]=t.y;i[2]=t.z;i[3]=f.x;i[4]=f.y;i[5]=f.z;i[6]=l.x;i[7]=l.y;i[8]=l.z;return i};var Q=new i;var Y=new r;var Z=new r;var J=new n;var $=new n;var ee=new n;var te=new n;var re=new n;var ne=new m;var ie=new m;g.basisTo2D=function(e,t,i){if(!o(e)){throw new s("projection is required.")}if(!o(t)){throw new s("matrix is required.")}if(!o(i)){throw new s("result is required.")}var a=e.ellipsoid;var u=m.getColumn(t,3,J);var f=a.cartesianToCartographic(u,Q);var c=g.eastNorthUpToFixedFrame(u,a,ne);var l=m.inverseTransformation(c,ie);var d=e.project(f,Y);var h=$;h.x=d.z;h.y=d.x;h.z=d.y;h.w=1;var v=m.getColumn(t,0,Z);var p=r.magnitude(v);var w=m.multiplyByVector(l,v,ee);n.fromElements(w.z,w.x,w.y,0,w);var y=m.getColumn(t,1,Z);var S=r.magnitude(y);var b=m.multiplyByVector(l,y,te);n.fromElements(b.z,b.x,b.y,0,b);var T=m.getColumn(t,2,Z);var E=r.magnitude(T);var _=re;r.cross(w,b,_);r.normalize(_,_);r.cross(b,_,w);r.normalize(w,w);r.cross(_,w,b);r.normalize(b,b);r.multiplyByScalar(w,p,w);r.multiplyByScalar(b,S,b);r.multiplyByScalar(_,E,_);m.setColumn(i,0,w,i);m.setColumn(i,1,b,i);m.setColumn(i,2,_,i);m.setColumn(i,3,h,i);return i};return g})})();(function(){var t=e.amdDefine;t("62",[],function(){function e(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;var t=arguments,r=0,n=t[r++];var i=function(e,t,r,n){if(!r){r=" "}var i=e.length>=t?"":Array(1+t-e.length>>>0).join(r);return n?e+i:i+e};var a=function(e,t,r,n,a,o){var s=n-e.length;if(s>0){if(r||!a){e=i(e,n,o,r)}else{e=e.slice(0,t.length)+i("",s,"0",true)+e.slice(t.length)}}return e};var o=function(e,t,r,n,o,s,u){var f=e>>>0;r=r&&f&&{2:"0b",8:"0",16:"0x"}[t]||"";e=r+i(f.toString(t),s||0,"0",false);return a(e,r,n,o,u)};var s=function(e,t,r,n,i,o){if(n!=null){e=e.slice(0,n)}return a(e,"",t,r,i,o)};var u=function(e,n,u,f,c,l,d){var h;var v;var p;var m;var w;if(e=="%%"){return"%"}var y=false,g="",S=false,b=false,T=" ";var E=u.length;for(var _=0;u&&_-1?6:d=="d"?0:undefined}else if(l=="*"){l=+t[r++]}else if(l.charAt(0)=="*"){l=+t[l.slice(1,-1)]}else{l=+l}w=n?t[n.slice(0,-1)]:t[r++];switch(d){case"s":return s(String(w),y,f,l,S,T);case"c":return s(String.fromCharCode(+w),y,f,l,S);case"b":return o(w,2,b,y,f,l,S);case"o":return o(w,8,b,y,f,l,S);case"x":return o(w,16,b,y,f,l,S);case"X":return o(w,16,b,y,f,l,S).toUpperCase();case"u":return o(w,10,b,y,f,l,S);case"i":case"d":h=+w||0;h=Math.round(h-h%1);v=h<0?"-":g;w=v+i(String(Math.abs(h)),l,"0",false);return a(w,v,y,f,S);case"e":case"E":case"f":case"F":case"g":case"G":h=+w;v=h<0?"-":g;p=["toExponential","toFixed","toPrecision"]["efg".indexOf(d.toLowerCase())];m=["toString","toUpperCase"]["eEfFgG".indexOf(d)%2];w=v+Math.abs(h)[p](l);return a(w,v,y,f,S)[m]();default:return e}};return n.replace(e,u)}return e})})();(function(){var t=e.amdDefine;t("4d",["1b","1d"],function(e,t){"use strict";function r(r,n,i){if(!e(r)){throw new t("array is required.")}if(!e(n)){throw new t("itemToFind is required.")}if(!e(i)){throw new t("comparator is required.")}var a=0;var o=r.length-1;var s;var u;while(a<=o){s=~~((a+o)/2);u=i(r[s],n);if(u<0){a=s+1;continue}if(u>0){o=s-1;continue}return s}return~(o+1)}return r})})();(function(){var t=e.amdDefine;t("63",[],function(){"use strict";function e(e,t,r,n,i,a,o,s){this.year=e;this.month=t;this.day=r;this.hour=n;this.minute=i;this.second=a;this.millisecond=o;this.isLeapSecond=s}return e})})();(function(){var t=e.amdDefine;t("64",["1d"],function(e){"use strict";function t(t){if(t===null||isNaN(t)){throw new e("year is required and must be a number.")}return t%4===0&&t%100!==0||t%400===0}return t})})();(function(){var t=e.amdDefine;t("51",[],function(){"use strict";function e(e,t){this.julianDate=e;this.offset=t}return e})})();(function(){var t=e.amdDefine;t("25",["62","4d","24","1b","1d","63","64","51","53","54"],function(e,t,r,n,i,a,o,s,u,f){"use strict";var c=new a;var l=[31,28,31,30,31,30,31,31,30,31,30,31];var d=29;function h(e,t){return I.compare(e.julianDate,t.julianDate)}var v=new s;function p(e){v.julianDate=e;var r=I.leapSeconds;var n=t(r,v,h);if(n<0){n=~n}if(n>=r.length){n=r.length-1}var i=r[n].offset;if(n>0){var a=I.secondsDifference(r[n].julianDate,e);if(a>i){n--;i=r[n].offset}}I.addSeconds(e,i,e)}function m(e,r){v.julianDate=e;var n=I.leapSeconds;var i=t(n,v,h);if(i<0){i=~i}if(i===0){return I.addSeconds(e,-n[0].offset,r)}if(i>=n.length){return I.addSeconds(e,-n[i-1].offset,r)}var a=I.secondsDifference(n[i].julianDate,e);if(a===0){return I.addSeconds(e,-n[i].offset,r)}if(a<=1){return undefined}return I.addSeconds(e,-n[--i].offset,r)}function w(e,t,r){var n=t/u.SECONDS_PER_DAY|0;e+=n;t-=u.SECONDS_PER_DAY*n;if(t<0){e--;t+=u.SECONDS_PER_DAY}r.dayNumber=e;r.secondsOfDay=t;return r}function y(e,t,r,n,i,a,o){var s=(t-14)/12|0;var f=e+4800+s;var c=(1461*f/4|0)+(367*(t-2-12*s)/12|0)-(3*((f+100)/100|0)/4|0)+r-32075;n=n-12;if(n<0){n+=24}var l=a+(n*u.SECONDS_PER_HOUR+i*u.SECONDS_PER_MINUTE+o*u.SECONDS_PER_MILLISECOND);if(l>=43200){c-=1}return[c,l]}var g=/^(\d{4})$/;var S=/^(\d{4})-(\d{2})$/;var b=/^(\d{4})-?(\d{3})$/;var T=/^(\d{4})-?W(\d{2})-?(\d{1})?$/;var E=/^(\d{4})-?(\d{2})-?(\d{2})$/;var _=/([Z+\-])?(\d{2})?:?(\d{2})?$/;var A=/^(\d{2})(\.\d+)?/.source+_.source;var P=/^(\d{2}):?(\d{2})(\.\d+)?/.source+_.source;var M=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+_.source;var C="Invalid ISO 8601 date.";function I(e,t,n){this.dayNumber=undefined;this.secondsOfDay=undefined;e=r(e,0);t=r(t,0);n=r(n,f.UTC);var i=e|0;t=t+(e-i)*u.SECONDS_PER_DAY;w(i,t,this);if(n===f.UTC){p(this)}}I.fromDate=function(e,t){if(!(e instanceof Date)||isNaN(e.getTime())){throw new i("date must be a valid JavaScript Date.")}var r=y(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());if(!n(t)){return new I(r[0],r[1],f.UTC)}w(r[0],r[1],t);p(t);return t};I.fromIso8601=function(e,t){if(typeof e!=="string"){throw new i(C)}e=e.replace(",",".");var r=e.split("T");var a;var s=1;var u=1;var c=0;var h=0;var v=0;var m=0;var _=r[0];var x=r[1];var R;var O;if(!n(_)){throw new i(C)}var D;r=_.match(E);if(r!==null){D=_.split("-").length-1;if(D>0&&D!==2){throw new i(C)}a=+r[1];s=+r[2];u=+r[3]}else{r=_.match(S);if(r!==null){a=+r[1];s=+r[2]}else{r=_.match(g);if(r!==null){a=+r[1]}else{var q;r=_.match(b);if(r!==null){a=+r[1];q=+r[2];O=o(a);if(q<1||O&&q>366||!O&&q>365){throw new i(C)}}else{r=_.match(T);if(r!==null){a=+r[1];var N=+r[2];var G=+r[3]||0;D=_.split("-").length-1;if(D>0&&(!n(r[3])&&D!==1||n(r[3])&&D!==2)){throw new i(C)}var L=new Date(Date.UTC(a,0,4));q=N*7+G-L.getUTCDay()-3}else{throw new i(C)}}R=new Date(Date.UTC(a,0,1));R.setUTCDate(q);s=R.getUTCMonth()+1;u=R.getUTCDate()}}}O=o(a);if(s<1||s>12||u<1||(s!==2||!O)&&u>l[s-1]||O&&s===2&&u>d){throw new i(C)}var B;if(n(x)){r=x.match(M);if(r!==null){D=x.split(":").length-1;if(D>0&&D!==2&&D!==3){throw new i(C)}c=+r[1];h=+r[2];v=+r[3];m=+(r[4]||0)*1e3;B=5}else{r=x.match(P);if(r!==null){D=x.split(":").length-1;if(D>2){throw new i(C)}c=+r[1];h=+r[2];v=+(r[3]||0)*60;B=4}else{r=x.match(A);if(r!==null){c=+r[1];h=+(r[2]||0)*60;B=3}else{throw new i(C)}}}if(h>=60||v>=61||c>24||c===24&&(h>0||v>0||m>0)){throw new i(C)}var H=r[B];var k=+r[B+1];var z=+(r[B+2]||0);switch(H){case"+":c=c-k;h=h-z;break;case"-":c=c+k;h=h+z;break;case"Z":break;default:h=h+new Date(Date.UTC(a,s-1,u,c,h)).getTimezoneOffset();break}}else{h=h+new Date(a,s-1,u).getTimezoneOffset()}var F=v===60;if(F){v--}while(h>=60){h-=60;c++}while(c>=24){c-=24;u++}R=O&&s===2?d:l[s-1];while(u>R){u-=R;s++;if(s>12){s-=12;a++}R=O&&s===2?d:l[s-1]}while(h<0){h+=60;c--}while(c<0){c+=24;u--}while(u<1){s--;if(s<1){s+=12;a--}R=O&&s===2?d:l[s-1];u+=R}var V=y(a,s,u,c,h,v,m);if(!n(t)){t=new I(V[0],V[1],f.UTC)}else{w(V[0],V[1],t);p(t)}if(F){I.addSeconds(t,1,t)}return t};I.now=function(e){return I.fromDate(new Date,e)};var x=new I(0,0,f.TAI);I.toGregorianDate=function(e,t){if(!n(e)){throw new i("julianDate is required.")}var r=false;var o=m(e,x);if(!n(o)){I.addSeconds(e,-1,x);o=m(x,x);r=true}var s=o.dayNumber;var f=o.secondsOfDay;if(f>=43200){s+=1}var c=s+68569|0;var l=4*c/146097|0;c=c-((146097*l+3)/4|0)|0;var d=4e3*(c+1)/1461001|0;c=c-(1461*d/4|0)+31|0;var h=80*c/2447|0;var v=c-(2447*h/80|0)|0;c=h/11|0;var p=h+2-12*c|0;var w=100*(l-49)+d+c|0;var y=f/u.SECONDS_PER_HOUR|0;var g=f-y*u.SECONDS_PER_HOUR;var S=g/u.SECONDS_PER_MINUTE|0;g=g-S*u.SECONDS_PER_MINUTE;var b=g|0;var T=(g-b)/u.SECONDS_PER_MILLISECOND;y+=12;if(y>23){y-=24}if(r){b+=1}if(!n(t)){return new a(w,p,v,y,S,b,T,r)}t.year=w;t.month=p;t.day=v;t.hour=y;t.minute=S;t.second=b;t.millisecond=T;t.isLeapSecond=r;return t};I.toDate=function(e){if(!n(e)){throw new i("julianDate is required.")}var t=I.toGregorianDate(e,c);var r=t.second;if(t.isLeapSecond){r-=1}return new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,r,t.millisecond))};I.toIso8601=function(t,r){if(!n(t)){throw new i("julianDate is required.")}var a=I.toGregorianDate(t,a);var o;if(!n(r)&&a.millisecond!==0){o=(a.millisecond*.01).toString().replace(".","");return e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,o)}if(!n(r)||r===0){return e("%04d-%02d-%02dT%02d:%02d:%02dZ",a.year,a.month,a.day,a.hour,a.minute,a.second)}o=(a.millisecond*.01).toFixed(r).replace(".","").slice(0,r);return e("%04d-%02d-%02dT%02d:%02d:%02d.%sZ",a.year,a.month,a.day,a.hour,a.minute,a.second,o)};I.clone=function(e,t){if(!n(e)){return undefined}if(!n(t)){return new I(e.dayNumber,e.secondsOfDay,f.TAI)}t.dayNumber=e.dayNumber;t.secondsOfDay=e.secondsOfDay;return t};I.compare=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=e.dayNumber-t.dayNumber;if(r!==0){return r}return e.secondsOfDay-t.secondsOfDay};I.equals=function(e,t){return e===t||n(e)&&n(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};I.equalsEpsilon=function(e,t,r){if(!n(r)){throw new i("epsilon is required.")}return e===t||n(e)&&n(t)&&Math.abs(I.secondsDifference(e,t))<=r};I.totalDays=function(e){if(!n(e)){throw new i("julianDate is required.")}return e.dayNumber+e.secondsOfDay/u.SECONDS_PER_DAY};I.secondsDifference=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=(e.dayNumber-t.dayNumber)*u.SECONDS_PER_DAY;return r+(e.secondsOfDay-t.secondsOfDay)};I.daysDifference=function(e,t){if(!n(e)){throw new i("left is required.")}if(!n(t)){throw new i("right is required.")}var r=e.dayNumber-t.dayNumber;var a=(e.secondsOfDay-t.secondsOfDay)/u.SECONDS_PER_DAY;return r+a};I.computeTaiMinusUtc=function(e){v.julianDate=e;var r=I.leapSeconds;var n=t(r,v,h);if(n<0){n=~n;--n;if(n<0){n=0}}return r[n].offset};I.addSeconds=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("seconds is required.")}if(!n(r)){throw new i("result is required.")}return w(e.dayNumber,e.secondsOfDay+t,r)};I.addMinutes=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("minutes is required.")}if(!n(r)){throw new i("result is required.")}var a=e.secondsOfDay+t*u.SECONDS_PER_MINUTE;return w(e.dayNumber,a,r)};I.addHours=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("hours is required.")}if(!n(r)){throw new i("result is required.")}var a=e.secondsOfDay+t*u.SECONDS_PER_HOUR;return w(e.dayNumber,a,r)};I.addDays=function(e,t,r){if(!n(e)){throw new i("julianDate is required.")}if(!n(t)){throw new i("days is required.")}if(!n(r)){throw new i("result is required.")}var a=e.dayNumber+t;return w(a,e.secondsOfDay,r)};I.lessThan=function(e,t){return I.compare(e,t)<0};I.lessThanOrEquals=function(e,t){return I.compare(e,t)<=0};I.greaterThan=function(e,t){return I.compare(e,t)>0};I.greaterThanOrEquals=function(e,t){return I.compare(e,t)>=0};I.prototype.clone=function(e){return I.clone(this,e)};I.prototype.equals=function(e){return I.equals(this,e)};I.prototype.equalsEpsilon=function(e,t){return I.equalsEpsilon(this,e,t)};I.prototype.toString=function(){return I.toIso8601(this)};I.leapSeconds=[new s(new I(2441317,43210,f.TAI),10),new s(new I(2441499,43211,f.TAI),11),new s(new I(2441683,43212,f.TAI),12),new s(new I(2442048,43213,f.TAI),13),new s(new I(2442413,43214,f.TAI),14),new s(new I(2442778,43215,f.TAI),15),new s(new I(2443144,43216,f.TAI),16),new s(new I(2443509,43217,f.TAI),17),new s(new I(2443874,43218,f.TAI),18),new s(new I(2444239,43219,f.TAI),19),new s(new I(2444786,43220,f.TAI),20),new s(new I(2445151,43221,f.TAI),21),new s(new I(2445516,43222,f.TAI),22),new s(new I(2446247,43223,f.TAI),23),new s(new I(2447161,43224,f.TAI),24),new s(new I(2447892,43225,f.TAI),25),new s(new I(2448257,43226,f.TAI),26),new s(new I(2448804,43227,f.TAI),27),new s(new I(2449169,43228,f.TAI),28),new s(new I(2449534,43229,f.TAI),29),new s(new I(2450083,43230,f.TAI),30),new s(new I(2450630,43231,f.TAI),31),new s(new I(2451179,43232,f.TAI),32),new s(new I(2453736,43233,f.TAI),33),new s(new I(2454832,43234,f.TAI),34),new s(new I(2456109,43235,f.TAI),35),new s(new I(2457204,43236,f.TAI),36)];return I})})();(function(){var t=e.amdDefine;t("53",["20"],function(e){"use strict";var t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:2400000.5};return e(t)})})();(function(){var t=e.amdDefine;t("54",["20"],function(e){"use strict";var t={UTC:0,TAI:1};return e(t)})})();(function(){var t=e.amdDefine;t("65",["2d","1b","1d","25","28","33","53","54"],function(e,t,r,n,i,a,o,s){"use strict";var u={};function f(e){var t=6.239996+.0172019696544*e;return.001657*Math.sin(t+.01671*Math.sin(t))}var c=32.184;var l=2451545;function d(e,t){t=n.addSeconds(e,c,t);var r=n.totalDays(t)-l;t=n.addSeconds(t,f(r),t);return t}var h=new n(2451545,0,s.TAI);var v=398600435e6;var p=v*(1+.012300034)*328900.56;var m=1e3;var w=i.RADIANS_PER_DEGREE;var y=i.RADIANS_PER_ARCSECOND;var g=14959787e4;var S=new a;function b(n,o,s,u,f,c,l,d){if(s<0){s=-s;f+=i.PI}if(s<0||s>i.PI){throw new r("The inclination is out of range. Inclination must be greater than or equal to zero and less than or equal to Pi radians.")}var h=n*(1-o);var v=u-f;var p=f;var m=E(c-u,o);var w=T(o,0);if(w==="Hyperbolic"&&Math.abs(i.negativePiToPi(m))>=Math.acos(-1/o)){throw new r("The true anomaly of the hyperbolic orbit lies outside of the bounds of the hyperbola.")}C(v,s,p,S);var y=h*(1+o);var g=Math.cos(m);var b=Math.sin(m);var _=1+o*g;if(_<=i.Epsilon10){throw new r("elements cannot be converted to cartesian")}var A=y/_;if(!t(d)){d=new e(A*g,A*b,0)}else{d.x=A*g;d.y=A*b;d.z=0}return a.multiplyByVector(S,d,d)}function T(e,t){if(e<0){throw new r("eccentricity cannot be negative.")}else if(e<=t){return"Circular"}else if(e<1-t){return"Elliptical"}else if(e<=1+t){return"Parabolic"}else{return"Hyperbolic"}}function E(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=P(e,t);return M(n,t)}var _=50;var A=i.EPSILON8;function P(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=Math.floor(e/i.TWO_PI);e-=n*i.TWO_PI;var a=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e));var o=Number.MAX_VALUE;var s;for(s=0;s<_&&Math.abs(o-a)>A;++s){o=a;var u=o-t*Math.sin(o)-e;var f=1-t*Math.cos(o);a=o-u/f}if(s>=_){throw new r("Kepler equation did not converge")}o=a+n*i.TWO_PI;return o}function M(e,t){if(t<0||t>=1){throw new r("eccentricity out of range.")}var n=Math.floor(e/i.TWO_PI);e-=n*i.TWO_PI;var a=Math.cos(e)-t;var o=Math.sin(e)*Math.sqrt(1-t*t);var s=Math.atan2(o,a);s=i.zeroToTwoPi(s);if(e<0){s-=i.TWO_PI}s+=n*i.TWO_PI;return s}function C(e,n,o,s){if(n<0||n>i.PI){throw new r("inclination out of range")}var u=Math.cos(e);var f=Math.sin(e);var c=Math.cos(n);var l=Math.sin(n);var d=Math.cos(o);var h=Math.sin(o);if(!t(s)){s=new a(d*u-h*f*c,-d*f-h*u*c,h*l,h*u+d*f*c,-h*f+d*u*c,-d*l,f*l,u*l,c)}else{s[0]=d*u-h*f*c;s[1]=h*u+d*f*c;s[2]=f*l;s[3]=-d*f-h*u*c;s[4]=-h*f+d*u*c;s[5]=u*l;s[6]=h*l;s[7]=-d*l;s[8]=c}return s}var I=1.0000010178*g;var x=100.46645683*w;var R=1295977422.83429*y;var O=16002;var D=21863;var q=32004;var N=10931;var G=14529;var L=16368;var B=15318;var H=32794;var k=64*1e-7*g;var z=-152*1e-7*g;var F=62*1e-7*g;var V=-8*1e-7*g;var U=32*1e-7*g;var W=-41*1e-7*g;var j=19*1e-7*g;var X=-11*1e-7*g;var K=-150*1e-7*g;var Q=-46*1e-7*g;var Y=68*1e-7*g;var Z=54*1e-7*g;var J=14*1e-7*g;var $=24*1e-7*g;var ee=-28*1e-7*g;var te=22*1e-7*g;var re=10;var ne=16002;var ie=21863;var ae=10931;var oe=1473;var se=32004;var ue=4387;var fe=73;var ce=-325*1e-7;var le=-322*1e-7;var de=-79*1e-7;var he=232*1e-7;var ve=-52*1e-7;var pe=97*1e-7;var me=55*1e-7;var we=-41*1e-7;var ye=-105*1e-7;var ge=-137*1e-7;var Se=258*1e-7;var be=35*1e-7;var Te=-116*1e-7;var Ee=-88*1e-7;var _e=-112*1e-7;var Ae=-80*1e-7;var Pe=new n(0,0,s.TAI);function Me(e,t){d(e,Pe);var r=Pe.dayNumber-h.dayNumber+(Pe.secondsOfDay-h.secondsOfDay)/o.SECONDS_PER_DAY;var n=r/(o.DAYS_PER_JULIAN_CENTURY*10);var i=.3595362*n;var a=I+k*Math.cos(O*i)+K*Math.sin(O*i)+z*Math.cos(D*i)+Q*Math.sin(D*i)+F*Math.cos(q*i)+Y*Math.sin(q*i)+V*Math.cos(N*i)+Z*Math.sin(N*i)+U*Math.cos(G*i)+J*Math.sin(G*i)+W*Math.cos(L*i)+$*Math.sin(L*i)+j*Math.cos(B*i)+ee*Math.sin(B*i)+X*Math.cos(H*i)+te*Math.sin(H*i);var s=x+R*n+ce*Math.cos(re*i)+ye*Math.sin(re*i)+le*Math.cos(ne*i)+ge*Math.sin(ne*i)+de*Math.cos(ie*i)+Se*Math.sin(ie*i)+he*Math.cos(ae*i)+be*Math.sin(ae*i)+ve*Math.cos(oe*i)+Te*Math.sin(oe*i)+pe*Math.cos(se*i)+Ee*Math.sin(se*i)+me*Math.cos(ue*i)+_e*Math.sin(ue*i)+we*Math.cos(fe*i)+Ae*Math.sin(fe*i);var u=.0167086342-.0004203654*n;var f=102.93734808*w+11612.3529*y*n;var c=469.97289*y*n;var l=174.87317577*w-8679.27034*y*n;return b(a,u,c,f,l,s,p,t)}function Ce(e,t){d(e,Pe);var r=Pe.dayNumber-h.dayNumber+(Pe.secondsOfDay-h.secondsOfDay)/o.SECONDS_PER_DAY;var n=r/o.DAYS_PER_JULIAN_CENTURY;var i=n*n;var a=i*n;var s=a*n;var u=383397.7725+.004*n;var f=.055545526-1.6e-8*n;var c=5.15668983*w;var l=-8e-5*n+.02966*i-42e-6*a-1.3e-7*s;var p=83.35324312*w;var g=14643420.2669*n-38.2702*i-.045047*a+21301e-8*s;var S=125.04455501*w;var T=-6967919.3631*n+6.3602*i+.007625*a-3586e-8*s;var E=218.31664563*w;var _=1732559343.4847*n-6.391*i+.006588*a-3169e-8*s;var A=297.85019547*w+y*(1602961601.209*n-6.3706*i+.006593*a-3169e-8*s);var P=93.27209062*w+y*(1739527262.8478*n-12.7512*i-.001037*a+417e-8*s);var M=134.96340251*w+y*(1717915923.2178*n+31.8792*i+.051635*a-2447e-7*s);var C=357.52910918*w+y*(129596581.0481*n-.5532*i+136e-6*a-1149e-8*s);var I=310.17137918*w-y*(6967051.436*n+6.2068*i+.007618*a-3219e-8*s);var x=2*A;var R=4*A;var O=6*A;var D=2*M;var q=3*M;var N=4*M;var G=2*P;u+=3400.4*Math.cos(x)-635.6*Math.cos(x-M)-235.6*Math.cos(M)+218.1*Math.cos(x-C)+181*Math.cos(x+M);f+=.014216*Math.cos(x-M)+.008551*Math.cos(x-D)-.001383*Math.cos(M)+.001356*Math.cos(x+M)-.001147*Math.cos(R-q)-914e-6*Math.cos(R-D)+869e-6*Math.cos(x-C-M)-627e-6*Math.cos(x)-394e-6*Math.cos(R-N)+282e-6*Math.cos(x-C-D)-279e-6*Math.cos(A-M)-236e-6*Math.cos(D)+231e-6*Math.cos(R)+229e-6*Math.cos(O-N)-201e-6*Math.cos(D-G);l+=486.26*Math.cos(x-G)-40.13*Math.cos(x)+37.51*Math.cos(G)+25.73*Math.cos(D-G)+19.97*Math.cos(x-C-G);g+=-55609*Math.sin(x-M)-34711*Math.sin(x-D)-9792*Math.sin(M)+9385*Math.sin(R-q)+7505*Math.sin(R-D)+5318*Math.sin(x+M)+3484*Math.sin(R-N)-3417*Math.sin(x-C-M)-2530*Math.sin(O-N)-2376*Math.sin(x)-2075*Math.sin(x-q)-1883*Math.sin(D)-1736*Math.sin(O-5*M)+1626*Math.sin(C)-1370*Math.sin(O-q);T+=-5392*Math.sin(x-G)-540*Math.sin(C)-441*Math.sin(x)+423*Math.sin(G)-288*Math.sin(D-G);_+=-3332.9*Math.sin(x)+1197.4*Math.sin(x-M)-662.5*Math.sin(C)+396.3*Math.sin(M)-218*Math.sin(x-C);var L=2*I;var B=3*I;l+=46.997*Math.cos(I)*n-.614*Math.cos(x-G+I)*n+.614*Math.cos(x-G-I)*n-.0297*Math.cos(L)*i-.0335*Math.cos(I)*i+.0012*Math.cos(x-G+L)*i-16e-5*Math.cos(I)*a+4e-5*Math.cos(B)*a+4e-5*Math.cos(L)*a;var H=2.116*Math.sin(I)*n-.111*Math.sin(x-G-I)*n-.0015*Math.sin(I)*i;g+=H;_+=H;T+=-520.77*Math.sin(I)*n+13.66*Math.sin(x-G+I)*n+1.12*Math.sin(x-I)*n-1.06*Math.sin(G-I)*n+.66*Math.sin(L)*i+.371*Math.sin(I)*i-.035*Math.sin(x-G+L)*i-.015*Math.sin(x-G+I)*i+.0014*Math.sin(I)*a-.0011*Math.sin(B)*a-9e-4*Math.sin(L)*a;u*=m;var k=c+l*y;var z=p+g*y;var F=E+_*y;var V=S+T*y;return b(u,f,k,z,V,F,v,t)}var Ie=.012300034;var xe=Ie/(Ie+1)*-1;function Re(t,r){r=Ce(t,r);return e.multiplyByScalar(r,xe,r)}var Oe=new a(1.0000000000000002,5.619723173785822e-16,4.690511510146299e-19,-5.154129427414611e-16,.9174820620691819,-.39777715593191376,-2.23970096136568e-16,.39777715593191376,.9174820620691819);var De=new e;u.computeSunPositionInEarthInertialFrame=function(r,i){if(!t(r)){r=n.now()}if(!t(i)){i=new e}De=Me(r,De);i=e.negate(De,i);Re(r,De);e.subtract(i,De,i);a.multiplyByVector(Oe,i,i);return i};u.computeMoonPositionInEarthInertialFrame=function(e,r){if(!t(e)){e=n.now()}r=Ce(e,r);a.multiplyByVector(Oe,r,r);return r};return u})})();(function(){var t=e.amdDefine;t("3d",["2d","3c","24","1b","1c","1d","20","28","66"],function(e,t,r,n,i,a,o,s,u){"use strict";function f(t,n,i,o){n=r(n,0);i=r(i,0);o=r(o,0);if(n<0||i<0||o<0){throw new a("All radii components must be greater than or equal to zero.")}t._radii=new e(n,i,o);t._radiiSquared=new e(n*n,i*i,o*o);t._radiiToTheFourth=new e(n*n*n*n,i*i*i*i,o*o*o*o);t._oneOverRadii=new e(n===0?0:1/n,i===0?0:1/i,o===0?0:1/o);t._oneOverRadiiSquared=new e(n===0?0:1/(n*n),i===0?0:1/(i*i),o===0?0:1/(o*o));t._minimumRadius=Math.min(n,i,o);t._maximumRadius=Math.max(n,i,o);t._centerToleranceSquared=s.EPSILON1}function c(e,t,r){this._radii=undefined;this._radiiSquared=undefined;this._radiiToTheFourth=undefined;this._oneOverRadii=undefined;this._oneOverRadiiSquared=undefined;this._minimumRadius=undefined;this._maximumRadius=undefined;this._centerToleranceSquared=undefined;f(this,e,t,r)}i(c.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});c.clone=function(t,r){if(!n(t)){return undefined}var i=t._radii;if(!n(r)){return new c(i.x,i.y,i.z)}e.clone(i,r._radii);e.clone(t._radiiSquared,r._radiiSquared);e.clone(t._radiiToTheFourth,r._radiiToTheFourth);e.clone(t._oneOverRadii,r._oneOverRadii);e.clone(t._oneOverRadiiSquared,r._oneOverRadiiSquared);r._minimumRadius=t._minimumRadius;r._maximumRadius=t._maximumRadius;r._centerToleranceSquared=t._centerToleranceSquared;return r};c.fromCartesian3=function(e,t){if(!n(t)){t=new c}if(!n(e)){return t}f(t,e.x,e.y,e.z);return t};c.WGS84=o(new c(6378137,6378137,6356752.314245179));c.UNIT_SPHERE=o(new c(1,1,1));c.MOON=o(new c(s.LUNAR_RADIUS,s.LUNAR_RADIUS,s.LUNAR_RADIUS));c.prototype.clone=function(e){return c.clone(this,e)};c.packedLength=e.packedLength;c.pack=function(t,i,o){if(!n(t)){throw new a("value is required")}if(!n(i)){throw new a("array is required")}o=r(o,0);e.pack(t._radii,i,o)};c.unpack=function(t,i,o){if(!n(t)){throw new a("array is required")}i=r(i,0);var s=e.unpack(t,i);return c.fromCartesian3(s,o)};c.prototype.geocentricSurfaceNormal=e.normalize;c.prototype.geodeticSurfaceNormalCartographic=function(t,r){if(!n(t)){throw new a("cartographic is required.")}var i=t.longitude;var o=t.latitude;var s=Math.cos(o);var u=s*Math.cos(i);var f=s*Math.sin(i);var c=Math.sin(o);if(!n(r)){r=new e}r.x=u;r.y=f;r.z=c;return e.normalize(r,r)};c.prototype.geodeticSurfaceNormal=function(t,r){if(!n(r)){r=new e}r=e.multiplyComponents(t,this._oneOverRadiiSquared,r);return e.normalize(r,r)};var l=new e;var d=new e;c.prototype.cartographicToCartesian=function(t,r){var i=l;var a=d;this.geodeticSurfaceNormalCartographic(t,i);e.multiplyComponents(this._radiiSquared,i,a);var o=Math.sqrt(e.dot(i,a));e.divideByScalar(a,o,a);e.multiplyByScalar(i,t.height,i);if(!n(r)){r=new e}return e.add(a,i,r)};c.prototype.cartographicArrayToCartesianArray=function(e,t){if(!n(e)){throw new a("cartographics is required.")}var r=e.length;if(!n(t)){t=new Array(r)}else{t.length=r}for(var i=0;is.EPSILON12);var O=C*(t*t-r*r)/(r*r);var D=1+O*(4096+O*(O*(320-175*O)-768))/16384;var q=O*(256+O*(O*(74-47*O)-128))/1024;var N=I*I;var G=q*M*(I+q*(P*(2*N-1)-q*I*(4*M*M-3)*(4*N-3)/6)/4);var L=r*D*(A-G);var B=Math.atan2(p*_,y-S*E);var H=Math.atan2(h*_,y*E-S);e._distance=L;e._startHeading=B;e._endHeading=H;e._uSquared=O}function d(r,n,i,o){var s=e.normalize(o.cartographicToCartesian(n,v),h);var f=e.normalize(o.cartographicToCartesian(i,v),v);if(Math.abs(Math.abs(e.angleBetween(s,f))-Math.PI)<.0125){throw new a("geodesic position is not unique")}l(r,o.maximumRadius,o.minimumRadius,n.longitude,n.latitude,i.longitude,i.latitude);r._start=t.clone(n,r._start);r._end=t.clone(i,r._end);r._start.height=0;r._end.height=0;u(r)}var h=new e;var v=new e;function p(e,i,a){var s=r(a,o.WGS84);this._ellipsoid=s;this._start=new t;this._end=new t;this._constants={};this._startHeading=undefined;this._endHeading=undefined;this._distance=undefined;this._uSquared=undefined;if(n(e)&&n(i)){d(this,e,i,s)}}i(p.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting surfaceDistance")}return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting startHeading")}return this._startHeading}},endHeading:{get:function(){if(!n(this._distance)){throw new a("set end positions before getting endHeading")}return this._endHeading}}});p.prototype.setEndPoints=function(e,t){if(!n(e)){throw new a("start cartographic position is required")}if(!n(t)){throw new a("end cartgraphic position is required")}d(this,e,t,this._ellipsoid)};p.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};p.prototype.interpolateUsingSurfaceDistance=function(e,r){if(!n(this._distance)){throw new a("start and end must be set before calling funciton interpolateUsingSurfaceDistance")}var i=this._constants;var o=i.distanceRatio+e/i.b;var s=Math.cos(2*o);var u=Math.cos(4*o);var f=Math.cos(6*o);var l=Math.sin(2*o);var d=Math.sin(4*o);var h=Math.sin(6*o);var v=Math.sin(8*o);var p=o*o;var m=o*p;var w=i.u8Over256;var y=i.u2Over4;var g=i.u6Over64;var S=i.u4Over16;var b=2*m*w*s/3+o*(1-y+7*S/4-15*g/4+579*w/64-(S-15*g/4+187*w/16)*s-(5*g/4-115*w/16)*u-29*w*f/16)+(y/2-S+71*g/32-85*w/16)*l+(5*S/16-5*g/4+383*w/96)*d-p*((g-11*w/2)*l+5*w*d/2)+(29*g/96-29*w/16)*h+539*w*v/1536;var T=Math.asin(Math.sin(b)*i.cosineAlpha);var E=Math.atan(i.a/i.b*Math.tan(T));b=b-i.sigma;var _=Math.cos(2*i.sigma+b);var A=Math.sin(b);var P=Math.cos(b);var M=i.cosineU*P;var C=i.sineU*A;var I=Math.atan2(A*i.sineHeading,M-C*i.cosineHeading);var x=I-c(i.f,i.sineAlpha,i.cosineSquaredAlpha,b,A,P,_);if(n(r)){r.longitude=this._start.longitude+x;r.latitude=E;r.height=0;return r}return new t(this._start.longitude+x,E,0)};return p})})();(function(){ +var t=e.amdDefine;t("66",["2d","1b","1d","28"],function(e,t,r,n){"use strict";var i=new e;var a=new e;function o(o,s,u,f,c){if(!t(o)){throw new r("cartesian is required.")}if(!t(s)){throw new r("oneOverRadii is required.")}if(!t(u)){throw new r("oneOverRadiiSquared is required.")}if(!t(f)){throw new r("centerToleranceSquared is required.")}var l=o.x;var d=o.y;var h=o.z;var v=s.x;var p=s.y;var m=s.z;var w=l*l*v*v;var y=d*d*p*p;var g=h*h*m*m;var S=w+y+g;var b=Math.sqrt(1/S);var T=e.multiplyByScalar(o,b,i);if(Sn.EPSILON12);if(!t(c)){return new e(l*R,d*O,h*D)}c.x=l*R;c.y=d*O;c.z=h*D;return c}return o})})();(function(){var t=e.amdDefine;t("3c",["2d","24","1b","1d","20","28","66"],function(e,t,r,n,i,a,o){"use strict";function s(e,r,n){this.longitude=t(e,0);this.latitude=t(r,0);this.height=t(n,0)}s.fromRadians=function(e,i,a,o){if(!r(e)){throw new n("longitude is required.")}if(!r(i)){throw new n("latitude is required.")}a=t(a,0);if(!r(o)){return new s(e,i,a)}o.longitude=e;o.latitude=i;o.height=a;return o};s.fromDegrees=function(e,t,i,o){if(!r(e)){throw new n("longitude is required.")}if(!r(t)){throw new n("latitude is required.")}e=a.toRadians(e);t=a.toRadians(t);return s.fromRadians(e,t,i,o)};var u=new e;var f=new e;var c=new e;var l=new e(1/6378137,1/6378137,1/6356752.314245179);var d=new e(1/(6378137*6378137),1/(6378137*6378137),1/(6356752.314245179*6356752.314245179));var h=a.EPSILON1;s.fromCartesian=function(t,n,i){var v=r(n)?n.oneOverRadii:l;var p=r(n)?n.oneOverRadiiSquared:d;var m=r(n)?n._centerToleranceSquared:h;var w=o(t,v,p,m,f);if(!r(w)){return undefined}var y=e.multiplyComponents(t,p,u);y=e.normalize(y,y);var g=e.subtract(t,w,c);var S=Math.atan2(y.y,y.x);var b=Math.asin(y.z);var T=a.sign(e.dot(g,t))*e.magnitude(g);if(!r(i)){return new s(S,b,T)}i.longitude=S;i.latitude=b;i.height=T;return i};s.clone=function(e,t){if(!r(e)){return undefined}if(!r(t)){return new s(e.longitude,e.latitude,e.height)}t.longitude=e.longitude;t.latitude=e.latitude;t.height=e.height;return t};s.equals=function(e,t){return e===t||r(e)&&r(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};s.equalsEpsilon=function(e,t,i){if(typeof i!=="number"){throw new n("epsilon is required and must be a number.")}return e===t||r(e)&&r(t)&&Math.abs(e.longitude-t.longitude)<=i&&Math.abs(e.latitude-t.latitude)<=i&&Math.abs(e.height-t.height)<=i};s.ZERO=i(new s(0,0,0));s.prototype.clone=function(e){return s.clone(this,e)};s.prototype.equals=function(e){return s.equals(this,e)};s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)};s.prototype.toString=function(){return"("+this.longitude+", "+this.latitude+", "+this.height+")"};return s})})();(function(){var t=e.amdDefine;t("68",["1d","69"],function(e,t){"use strict";var r={};r.computeDiscriminant=function(t,r,n,i){if(typeof t!=="number"){throw new e("a is a required number.")}if(typeof r!=="number"){throw new e("b is a required number.")}if(typeof n!=="number"){throw new e("c is a required number.")}if(typeof i!=="number"){throw new e("d is a required number.")}var a=t*t;var o=r*r;var s=n*n;var u=i*i;var f=18*t*r*n*i+o*s-27*a*u-4*(t*s*n+o*r*i);return f};function n(e,t,r,n){var i=e;var a=t/3;var o=r/3;var s=n;var u=i*o;var f=a*s;var c=a*a;var l=o*o;var d=i*o-c;var h=i*s-a*o;var v=a*s-l;var p=4*d*v-h*h;var m;var w;if(p<0){var y;var g;var S;if(c*f>=u*l){y=i;g=d;S=-2*a*d+i*h}else{y=s;g=v;S=-s*h+2*o*v}var b=S<0?-1:1;var T=-b*Math.abs(y)*Math.sqrt(-p);w=-S+T;var E=w/2;var _=E<0?-Math.pow(-E,1/3):Math.pow(E,1/3);var A=w===T?-_:-g/_;m=g<=0?_+A:-S/(_*_+A*A+g);if(c*f>=u*l){return[(m-a)/i]}return[-s/(m+o)]}var P=d;var M=-2*a*d+i*h;var C=v;var I=-s*h+2*o*v;var x=Math.sqrt(p);var R=Math.sqrt(3)/2;var O=Math.abs(Math.atan2(i*x,-M)/3);m=2*Math.sqrt(-P);var D=Math.cos(O);w=m*D;var q=m*(-D/2-R*Math.sin(O));var N=w+q>2*a?w-a:q-a;var G=i;var L=N/G;O=Math.abs(Math.atan2(s*x,-I)/3);m=2*Math.sqrt(-C);D=Math.cos(O);w=m*D;q=m*(-D/2-R*Math.sin(O));var B=-s;var H=w+q<2*o?w+o:q+o;var k=B/H;var z=G*H;var F=-N*H-G*B;var V=N*B;var U=(o*F-a*V)/(-a*F+o*z);if(L<=U){if(L<=k){if(U<=k){return[L,U,k]}return[L,k,U]}return[k,L,U]}if(L<=k){return[U,L,k]}if(U<=k){return[U,k,L]}return[k,U,L]}r.computeRealRoots=function(r,i,a,o){if(typeof r!=="number"){throw new e("a is a required number.")}if(typeof i!=="number"){throw new e("b is a required number.")}if(typeof a!=="number"){throw new e("c is a required number.")}if(typeof o!=="number"){throw new e("d is a required number.")}var s;var u;if(r===0){return t.computeRealRoots(i,a,o)}else if(i===0){if(a===0){if(o===0){return[0,0,0]}u=-o/r;var f=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3);return[f,f,f]}else if(o===0){s=t.computeRealRoots(r,0,a);if(s.Length===0){return[0]}return[s[0],0,s[1]]}return n(r,0,a,o)}else if(a===0){if(o===0){u=-i/r;if(u<0){return[u,0,0]}return[0,0,u]}return n(r,i,0,o)}else if(o===0){s=t.computeRealRoots(r,i,a);if(s.length===0){return[0]}else if(s[1]<=0){return[s[0],s[1],0]}else if(s[0]>=0){return[0,s[0],s[1]]}return[s[0],0,s[1]]}return n(r,i,a,o)};return r})})();(function(){var t=e.amdDefine;t("69",["1d","28"],function(e,t){"use strict";var r={};r.computeDiscriminant=function(t,r,n){if(typeof t!=="number"){throw new e("a is a required number.")}if(typeof r!=="number"){throw new e("b is a required number.")}if(typeof n!=="number"){throw new e("c is a required number.")}var i=r*r-4*t*n;return i};function n(e,r,n){var i=e+r;if(t.sign(e)!==t.sign(r)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(r)))u&&u/s0){return[h/r,a/h]}return[a/h,h/r]};return r})})();(function(){var t=e.amdDefine;t("6a",["68","1d","28","69"],function(e,t,r,n){"use strict";var i={};i.computeDiscriminant=function(e,r,n,i,a){if(typeof e!=="number"){throw new t("a is a required number.")}if(typeof r!=="number"){throw new t("b is a required number.")}if(typeof n!=="number"){throw new t("c is a required number.")}if(typeof i!=="number"){throw new t("d is a required number.")}if(typeof a!=="number"){throw new t("e is a required number.")}var o=e*e;var s=o*e;var u=r*r;var f=u*r;var c=n*n;var l=c*n;var d=i*i;var h=d*i;var v=a*a;var p=v*a;var m=u*c*d-4*f*h-4*e*l*d+18*e*r*n*h-27*o*d*d+256*s*p+a*(18*f*n*i-4*u*l+16*e*c*c-80*e*r*c*i-6*e*u*d+144*o*n*d)+v*(144*e*u*n-27*u*u-128*o*c-192*o*r*i);return m};function a(t,i,a,o){var s=t*t;var u=i-3*s/8;var f=a-i*t/2+s*t/8;var c=o-a*t/4+i*s/16-3*s*s/256;var l=e.computeRealRoots(1,2*u,u*u-4*c,-f*f);if(l.length>0){var d=-t/4;var h=l[l.length-1];if(Math.abs(h)=0&&m>=0){var y=Math.sqrt(p);var g=Math.sqrt(m);return[d-g,d-y,d+y,d+g]}else if(p>=0&&m<0){w=Math.sqrt(p);return[d-w,d+w]}else if(p<0&&m>=0){w=Math.sqrt(m);return[d-w,d+w]}}return[]}else if(h>0){var S=Math.sqrt(h);var b=(u+h-f/S)/2;var T=(u+h+f/S)/2;var E=n.computeRealRoots(1,S,b);var _=n.computeRealRoots(1,-S,T);if(E.length!==0){E[0]+=d;E[1]+=d;if(_.length!==0){_[0]+=d;_[1]+=d;if(E[1]<=_[0]){return[E[0],E[1],_[0],_[1]]}else if(_[1]<=E[0]){return[_[0],_[1],E[0],E[1]]}else if(E[0]>=_[0]&&E[1]<=_[1]){return[_[0],E[0],E[1],_[1]]}else if(_[0]>=E[0]&&_[1]<=E[1]){return[E[0],_[0],_[1],E[1]]}else if(E[0]>_[0]&&E[0]<_[1]){return[_[0],E[0],_[1],E[1]]}return[E[0],_[0],E[1],_[1]]}return E}if(_.length!==0){_[0]+=d;_[1]+=d;return _}return[]}}return[]}function o(t,i,a,o){var s=a*a;var u=i*i;var f=t*t;var c=-2*i;var l=a*t+u-4*o;var d=f*o-a*i*t+s;var h=e.computeRealRoots(1,c,l,d);if(h.length>0){var v=h[0];var p=i-v;var m=p*p;var w=t/2;var y=p/2;var g=m-4*o;var S=m+4*Math.abs(o);var b=f-4*v;var T=f+4*Math.abs(v);var E;var _;if(v<0||g*T=O[0]&&R[1]<=O[1]){return[O[0],R[0],R[1],O[1]]}else if(O[0]>=R[0]&&O[1]<=R[1]){return[R[0],O[0],O[1],R[1]]}else if(R[0]>O[0]&&R[0]S){return undefined}T=e.cross(b,w,p);_=e.dot(m,T);if(_<0||E+_>S){return undefined}A=e.dot(y,T)/S}else{if(Math.abs(S)1){return undefined}T=e.cross(b,w,p);_=e.dot(m,T)*P;if(_<0||E+_>1){return undefined}A=e.dot(y,T)*P}return A}c.rayTriangle=function(t,r,i,a,o,s){var u=m(t,r,i,a,o);if(!n(u)||u<0){return undefined}if(!n(s)){s=new e}e.multiplyByScalar(t.direction,u,s);return e.add(t.origin,s,s)};var w=new f;c.lineSegmentTriangle=function(t,r,a,o,s,u,f){if(!n(t)){throw new i("v0 is required.")}if(!n(r)){throw new i("v1 is required.")}var c=w;e.clone(t,c.origin);e.subtract(r,t,c.direction);e.normalize(c.direction,c.direction);var l=m(c,a,o,s,u);if(!n(l)||l<0||l>e.distance(t,r)){return undefined}if(!n(f)){f=new e}e.multiplyByScalar(c.direction,l,f);return e.add(c.origin,f,f)};function y(e,t,r,n){var i=t*t-4*e*r;if(i<0){return undefined}else if(i>0){var a=1/(2*e);var o=Math.sqrt(i);var s=(-t+o)*a;var u=(-t-o)*a;if(sf){return undefined}o.start=Math.max(o.start,0);o.stop=Math.min(o.stop,f);return o};var T=new e;var E=new e;c.rayEllipsoid=function(t,r){if(!n(t)){throw new i("ray is required.")}if(!n(r)){throw new i("ellipsoid is required.")}var a=r.oneOverRadii;var o=e.multiplyComponents(a,t.origin,T);var s=e.multiplyComponents(a,t.direction,E);var u=e.magnitudeSquared(o);var f=e.dot(o,s);var c,l,d,h,v;if(u>1){if(f>=0){return undefined}var p=f*f;c=u-1;l=e.magnitudeSquared(s);d=l*c;if(pd){h=f*f-d;v=-f+Math.sqrt(h);var m=v/l;var w=c/v;if(m0){y.push(new e(i,f*N,f*-B))}else if(B!==0){y.push(new e(i,f*N,f*-B));y.push(new e(i,f*N,f*B));++q}else{y.push(new e(i,f*N,f*B))}}return y}var P=new e;var M=new e;var C=new e;var I=new e;var x=new e;var R=new o;var O=new o;var D=new o;var q=new o;var N=new o;var G=new o;var L=new o;var B=new e;var H=new e;var k=new t;c.grazingAltitudeLocation=function(t,r){if(!n(t)){throw new i("ray is required.")}if(!n(r)){throw new i("ellipsoid is required.")}var s=t.origin;var u=t.direction;var f=r.geodeticSurfaceNormal(s,P);if(e.dot(u,f)>=0){return s}var c=n(this.rayEllipsoid(t,r));var l=r.transformPositionToScaledSpace(u,P);var d=e.normalize(l,l);var h=e.mostOrthogonalAxis(l,I);var v=e.normalize(e.cross(h,d,M),M);var p=e.normalize(e.cross(d,v,C),C);var m=R;m[0]=d.x;m[1]=d.y;m[2]=d.z;m[3]=v.x;m[4]=v.y;m[5]=v.z;m[6]=p.x;m[7]=p.y;m[8]=p.z;var w=o.transpose(m,O);var y=o.fromScale(r.radii,D);var g=o.fromScale(r.oneOverRadii,q);var S=N;S[0]=0;S[1]=-u.z;S[2]=u.y;S[3]=u.z;S[4]=0;S[5]=-u.x;S[6]=-u.y;S[7]=u.x;S[8]=0;var b=o.multiply(o.multiply(w,g,G),S,G);var T=o.multiply(o.multiply(b,y,L),m,L);var E=o.multiplyByVector(b,s,x);var _=A(T,e.negate(E,P),0,0,1);var z;var F;var V=_.length;if(V>0){var U=e.clone(e.ZERO,H);var W=Number.NEGATIVE_INFINITY;for(var j=0;jW){W=K;U=e.clone(z,U)}}var Q=r.cartesianToCartographic(U,k);W=a.clamp(W,0,1);F=e.magnitude(e.subtract(U,s,I))*Math.sqrt(1-W*W);F=c?-F:F;Q.height=F;return r.cartographicToCartesian(Q,new e)}return undefined};var z=new e;c.lineSegmentPlane=function(t,r,o,s){if(!n(t)){throw new i("endPoint0 is required.")}if(!n(r)){throw new i("endPoint1 is required.")}if(!n(o)){throw new i("plane is required.")}if(!n(s)){s=new e}var u=e.subtract(r,t,z);var f=o.normal;var c=e.dot(f,u);if(Math.abs(c)1){return undefined}e.multiplyByScalar(u,d,s);e.add(t,s,s);return s};c.trianglePlaneIntersection=function(t,r,a,o){if(!n(t)||!n(r)||!n(a)||!n(o)){throw new i("p0, p1, p2, and plane are required.")}var s=o.normal;var u=o.distance;var f=e.dot(s,t)+u<0;var l=e.dot(s,r)+u<0;var d=e.dot(s,a)+u<0;var h=0;h+=f?1:0;h+=l?1:0;h+=d?1:0;var v,p;if(h===1||h===2){v=new e;p=new e}if(h===1){if(f){c.lineSegmentPlane(t,r,o,v);c.lineSegmentPlane(t,a,o,p);return{positions:[t,r,a,v,p],indices:[0,3,4,1,2,4,1,4,3]}}else if(l){c.lineSegmentPlane(r,a,o,v);c.lineSegmentPlane(r,t,o,p);return{positions:[t,r,a,v,p],indices:[1,3,4,2,0,4,2,4,3]}}else if(d){c.lineSegmentPlane(a,t,o,v);c.lineSegmentPlane(a,r,o,p);return{positions:[t,r,a,v,p],indices:[2,3,4,0,1,4,0,4,3]}}}else if(h===2){if(!f){c.lineSegmentPlane(r,t,o,v);c.lineSegmentPlane(a,t,o,p);return{positions:[t,r,a,v,p],indices:[1,2,4,1,4,3,0,3,4]}}else if(!l){c.lineSegmentPlane(a,r,o,v);c.lineSegmentPlane(t,r,o,p);return{positions:[t,r,a,v,p],indices:[2,0,4,2,4,3,1,3,4]}}else if(!d){c.lineSegmentPlane(t,a,o,v);c.lineSegmentPlane(r,a,o,p);return{positions:[t,r,a,v,p],indices:[0,1,4,0,4,3,2,3,4]}}}return undefined};return c})})();(function(){var t=e.amdDefine;t("6d",["1b"],function(e){"use strict";var t=Array.isArray;if(!e(t)){t=function(e){return Object.prototype.toString.call(e)==="[object Array]"}}return t})})();(function(){var t=e.amdDefine;t("44",["24","1b","1d","20","28"],function(e,t,r,n,i){"use strict";function a(t,r,n,i){this.x=e(t,0);this.y=e(r,0);this.z=e(n,0);this.w=e(i,0)}a.fromElements=function(e,r,n,i,o){if(!t(o)){return new a(e,r,n,i)}o.x=e;o.y=r;o.z=n;o.w=i;return o};a.fromColor=function(e,n){if(!t(e)){throw new r("color is required")}if(!t(n)){return new a(e.red,e.green,e.blue,e.alpha)}n.x=e.red;n.y=e.green;n.z=e.blue;n.w=e.alpha;return n};a.clone=function(e,r){if(!t(e)){return undefined}if(!t(r)){return new a(e.x,e.y,e.z,e.w)}r.x=e.x;r.y=e.y;r.z=e.z;r.w=e.w;return r};a.packedLength=4;a.pack=function(n,i,a){if(!t(n)){throw new r("value is required")}if(!t(i)){throw new r("array is required")}a=e(a,0);i[a++]=n.x;i[a++]=n.y;i[a++]=n.z;i[a]=n.w};a.unpack=function(n,i,o){if(!t(n)){throw new r("array is required")}i=e(i,0);if(!t(o)){o=new a}o.x=n[i++];o.y=n[i++];o.z=n[i++];o.w=n[i];return o};a.packArray=function(e,n){if(!t(e)){throw new r("array is required")}var i=e.length;if(!t(n)){n=new Array(i*4)}else{n.length=i*4}for(var o=0;o2){throw new i("row must be 0, 1, or 2.")}if(typeof e!=="number"||e<0||e>2){throw new i("column must be 0, 1, or 2.")}return e*3+t};s.getColumn=function(e,t,n){if(!r(e)){throw new i("matrix is required.")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(n)){throw new i("result is required")}var a=t*3;var o=e[a];var s=e[a+1];var u=e[a+2];n.x=o;n.y=s;n.z=u;return n};s.setColumn=function(e,t,n,a){if(!r(e)){throw new i("matrix is required")}if(!r(n)){throw new i("cartesian is required")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(a)){throw new i("result is required")}a=s.clone(e,a);var o=t*3;a[o]=n.x;a[o+1]=n.y;a[o+2]=n.z;return a};s.getRow=function(e,t,n){if(!r(e)){throw new i("matrix is required.")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(n)){throw new i("result is required")}var a=e[t];var o=e[t+3];var s=e[t+6];n.x=a;n.y=o;n.z=s;return n};s.setRow=function(e,t,n,a){if(!r(e)){throw new i("matrix is required")}if(!r(n)){throw new i("cartesian is required")}if(typeof t!=="number"||t<0||t>2){throw new i("index must be 0, 1, or 2.")}if(!r(a)){throw new i("result is required")}a=s.clone(e,a);a[t]=n.x;a[t+3]=n.y;a[t+6]=n.z;return a};var u=new e;s.getScale=function(t,n){if(!r(t)){throw new i("matrix is required.")}if(!r(n)){throw new i("result is required")}n.x=e.magnitude(e.fromElements(t[0],t[1],t[2],u));n.y=e.magnitude(e.fromElements(t[3],t[4],t[5],u));n.z=e.magnitude(e.fromElements(t[6],t[7],t[8],u));return n};var f=new e;s.getMaximumScale=function(t){s.getScale(t,f);return e.maximumComponent(f)};s.multiply=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}var a=e[0]*t[0]+e[3]*t[1]+e[6]*t[2];var o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2];var s=e[2]*t[0]+e[5]*t[1]+e[8]*t[2];var u=e[0]*t[3]+e[3]*t[4]+e[6]*t[5];var f=e[1]*t[3]+e[4]*t[4]+e[7]*t[5];var c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5];var l=e[0]*t[6]+e[3]*t[7]+e[6]*t[8];var d=e[1]*t[6]+e[4]*t[7]+e[7]*t[8];var h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];n[0]=a;n[1]=o;n[2]=s;n[3]=u;n[4]=f;n[5]=c;n[6]=l;n[7]=d;n[8]=h;return n};s.add=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]+t[0];n[1]=e[1]+t[1];n[2]=e[2]+t[2];n[3]=e[3]+t[3];n[4]=e[4]+t[4];n[5]=e[5]+t[5];n[6]=e[6]+t[6];n[7]=e[7]+t[7];n[8]=e[8]+t[8];return n};s.subtract=function(e,t,n){if(!r(e)){throw new i("left is required")}if(!r(t)){throw new i("right is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]-t[0];n[1]=e[1]-t[1];n[2]=e[2]-t[2];n[3]=e[3]-t[3];n[4]=e[4]-t[4];n[5]=e[5]-t[5];n[6]=e[6]-t[6];n[7]=e[7]-t[7];n[8]=e[8]-t[8];return n};s.multiplyByVector=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("cartesian is required")}if(!r(n)){throw new i("result is required")}var a=t.x;var o=t.y;var s=t.z;var u=e[0]*a+e[3]*o+e[6]*s;var f=e[1]*a+e[4]*o+e[7]*s;var c=e[2]*a+e[5]*o+e[8]*s;n.x=u; +n.y=f;n.z=c;return n};s.multiplyByScalar=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(typeof t!=="number"){throw new i("scalar must be a number")}if(!r(n)){throw new i("result is required")}n[0]=e[0]*t;n[1]=e[1]*t;n[2]=e[2]*t;n[3]=e[3]*t;n[4]=e[4]*t;n[5]=e[5]*t;n[6]=e[6]*t;n[7]=e[7]*t;n[8]=e[8]*t;return n};s.multiplyByScale=function(e,t,n){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("scale is required")}if(!r(n)){throw new i("result is required")}n[0]=e[0]*t.x;n[1]=e[1]*t.x;n[2]=e[2]*t.x;n[3]=e[3]*t.y;n[4]=e[4]*t.y;n[5]=e[5]*t.y;n[6]=e[6]*t.z;n[7]=e[7]*t.z;n[8]=e[8]*t.z;return n};s.negate=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];t[3]=-e[3];t[4]=-e[4];t[5]=-e[5];t[6]=-e[6];t[7]=-e[7];t[8]=-e[8];return t};s.transpose=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}var n=e[0];var a=e[3];var o=e[6];var s=e[1];var u=e[4];var f=e[7];var c=e[2];var l=e[5];var d=e[8];t[0]=n;t[1]=a;t[2]=o;t[3]=s;t[4]=u;t[5]=f;t[6]=c;t[7]=l;t[8]=d;return t};function c(e){var t=0;for(var r=0;r<9;++r){var n=e[r];t+=n*n}return Math.sqrt(t)}var l=[1,0,0];var d=[2,2,1];function h(e){var t=0;for(var r=0;r<3;++r){var n=e[s.getElementIndex(d[r],l[r])];t+=2*n*n}return Math.sqrt(t)}function v(e,t){var r=o.EPSILON15;var n=0;var i=1;for(var a=0;a<3;++a){var u=Math.abs(e[s.getElementIndex(d[a],l[a])]);if(u>n){i=a;n=u}}var f=1;var c=0;var h=l[i];var v=d[i];if(Math.abs(e[s.getElementIndex(v,h)])>r){var p=e[s.getElementIndex(v,v)];var m=e[s.getElementIndex(h,h)];var w=e[s.getElementIndex(v,h)];var y=(p-m)/2/w;var g;if(y<0){g=-1/(-y+Math.sqrt(1+y*y))}else{g=1/(y+Math.sqrt(1+y*y))}f=1/Math.sqrt(1+g*g);c=g*f}t=s.clone(s.IDENTITY,t);t[s.getElementIndex(h,h)]=t[s.getElementIndex(v,v)]=f;t[s.getElementIndex(v,h)]=c;t[s.getElementIndex(h,v)]=-c;return t}var p=new s;var m=new s;s.computeEigenDecomposition=function(e,t){if(!r(e)){throw new i("matrix is required.")}var n=o.EPSILON20;var a=10;var u=0;var f=0;if(!r(t)){t={}}var l=t.unitary=s.clone(s.IDENTITY,t.unitary);var d=t.diagonal=s.clone(e,t.diagonal);var w=n*c(d);while(fw){v(d,p);s.transpose(p,m);s.multiply(d,p,d);s.multiply(m,d,d);s.multiply(l,p,l);if(++u>2){++f;u=0}}return t};s.abs=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}t[0]=Math.abs(e[0]);t[1]=Math.abs(e[1]);t[2]=Math.abs(e[2]);t[3]=Math.abs(e[3]);t[4]=Math.abs(e[4]);t[5]=Math.abs(e[5]);t[6]=Math.abs(e[6]);t[7]=Math.abs(e[7]);t[8]=Math.abs(e[8]);return t};s.determinant=function(e){if(!r(e)){throw new i("matrix is required")}var t=e[0];var n=e[3];var a=e[6];var o=e[1];var s=e[4];var u=e[7];var f=e[2];var c=e[5];var l=e[8];return t*(s*l-c*u)+o*(c*a-n*l)+f*(n*u-s*a)};s.inverse=function(e,t){if(!r(e)){throw new i("matrix is required")}if(!r(t)){throw new i("result is required")}var n=e[0];var a=e[1];var u=e[2];var f=e[3];var c=e[4];var l=e[5];var d=e[6];var h=e[7];var v=e[8];var p=s.determinant(e);if(Math.abs(p)<=o.EPSILON15){throw new i("matrix is not invertible")}t[0]=c*v-h*l;t[1]=h*u-a*v;t[2]=a*l-c*u;t[3]=d*l-f*v;t[4]=n*v-d*u;t[5]=f*u-n*l;t[6]=f*h-d*c;t[7]=d*a-n*h;t[8]=n*c-f*a;var m=1/p;return s.multiplyByScalar(t,m,t)};s.equals=function(e,t){return e===t||r(e)&&r(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};s.equalsEpsilon=function(e,t,n){if(typeof n!=="number"){throw new i("epsilon must be a number")}return e===t||r(e)&&r(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};s.IDENTITY=a(new s(1,0,0,0,1,0,0,0,1));s.ZERO=a(new s(0,0,0,0,0,0,0,0,0));s.COLUMN0ROW0=0;s.COLUMN0ROW1=1;s.COLUMN0ROW2=2;s.COLUMN1ROW0=3;s.COLUMN1ROW1=4;s.COLUMN1ROW2=5;s.COLUMN2ROW0=6;s.COLUMN2ROW1=7;s.COLUMN2ROW2=8;n(s.prototype,{length:{get:function(){return s.packedLength}}});s.prototype.clone=function(e){return s.clone(this,e)};s.prototype.equals=function(e){return s.equals(this,e)};s.equalsArray=function(e,t,r){return e[0]===t[r]&&e[1]===t[r+1]&&e[2]===t[r+2]&&e[3]===t[r+3]&&e[4]===t[r+4]&&e[5]===t[r+5]&&e[6]===t[r+6]&&e[7]===t[r+7]&&e[8]===t[r+8]};s.prototype.equalsEpsilon=function(e,t){return s.equalsEpsilon(this,e,t)};s.prototype.toString=function(){return"("+this[0]+", "+this[3]+", "+this[6]+")\n"+"("+this[1]+", "+this[4]+", "+this[7]+")\n"+"("+this[2]+", "+this[5]+", "+this[8]+")"};return s})})();(function(){var t=e.amdDefine;t("39",["1b"],function(e){"use strict";function t(e){this.name="RuntimeError";this.message=e;var t;try{throw new Error}catch(e){t=e.stack}this.stack=t}if(e(Object.create)){t.prototype=Object.create(Error.prototype);t.prototype.constructor=t}t.prototype.toString=function(){var t=this.name+": "+this.message;if(e(this.stack)){t+="\n"+this.stack.toString()}return t};return t})})();(function(){var t=e.amdDefine;t("34",["2d","44","24","1b","1c","1d","20","28","33","39"],function(e,t,r,n,i,a,o,s,u,f){"use strict";function c(e,t,n,i,a,o,s,u,f,c,l,d,h,v,p,m){this[0]=r(e,0);this[1]=r(a,0);this[2]=r(f,0);this[3]=r(h,0);this[4]=r(t,0);this[5]=r(o,0);this[6]=r(c,0);this[7]=r(v,0);this[8]=r(n,0);this[9]=r(s,0);this[10]=r(l,0);this[11]=r(p,0);this[12]=r(i,0);this[13]=r(u,0);this[14]=r(d,0);this[15]=r(m,0)}c.packedLength=16;c.pack=function(e,t,i){if(!n(e)){throw new a("value is required")}if(!n(t)){throw new a("array is required")}i=r(i,0);t[i++]=e[0];t[i++]=e[1];t[i++]=e[2];t[i++]=e[3];t[i++]=e[4];t[i++]=e[5];t[i++]=e[6];t[i++]=e[7];t[i++]=e[8];t[i++]=e[9];t[i++]=e[10];t[i++]=e[11];t[i++]=e[12];t[i++]=e[13];t[i++]=e[14];t[i]=e[15]};c.unpack=function(e,t,i){if(!n(e)){throw new a("array is required")}t=r(t,0);if(!n(i)){i=new c}i[0]=e[t++];i[1]=e[t++];i[2]=e[t++];i[3]=e[t++];i[4]=e[t++];i[5]=e[t++];i[6]=e[t++];i[7]=e[t++];i[8]=e[t++];i[9]=e[t++];i[10]=e[t++];i[11]=e[t++];i[12]=e[t++];i[13]=e[t++];i[14]=e[t++];i[15]=e[t];return i};c.clone=function(e,t){if(!n(e)){return undefined}if(!n(t)){return new c(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];t[9]=e[9];t[10]=e[10];t[11]=e[11];t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t};c.fromArray=c.unpack;c.fromColumnMajorArray=function(e,t){if(!n(e)){throw new a("values is required")}return c.clone(e,t)};c.fromRowMajorArray=function(e,t){if(!n(e)){throw new a("values is required.")}if(!n(t)){return new c(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}t[0]=e[0];t[1]=e[4];t[2]=e[8];t[3]=e[12];t[4]=e[1];t[5]=e[5];t[6]=e[9];t[7]=e[13];t[8]=e[2];t[9]=e[6];t[10]=e[10];t[11]=e[14];t[12]=e[3];t[13]=e[7];t[14]=e[11];t[15]=e[15];return t};c.fromRotationTranslation=function(t,i,o){if(!n(t)){throw new a("rotation is required.")}i=r(i,e.ZERO);if(!n(o)){return new c(t[0],t[3],t[6],i.x,t[1],t[4],t[7],i.y,t[2],t[5],t[8],i.z,0,0,0,1)}o[0]=t[0];o[1]=t[1];o[2]=t[2];o[3]=0;o[4]=t[3];o[5]=t[4];o[6]=t[5];o[7]=0;o[8]=t[6];o[9]=t[7];o[10]=t[8];o[11]=0;o[12]=i.x;o[13]=i.y;o[14]=i.z;o[15]=1;return o};c.fromTranslationQuaternionRotationScale=function(e,t,r,i){if(!n(e)){throw new a("translation is required.")}if(!n(t)){throw new a("rotation is required.")}if(!n(r)){throw new a("scale is required.")}if(!n(i)){i=new c}var o=r.x;var s=r.y;var u=r.z;var f=t.x*t.x;var l=t.x*t.y;var d=t.x*t.z;var h=t.x*t.w;var v=t.y*t.y;var p=t.y*t.z;var m=t.y*t.w;var w=t.z*t.z;var y=t.z*t.w;var g=t.w*t.w;var S=f-v-w+g;var b=2*(l-y);var T=2*(d+m);var E=2*(l+y);var _=-f+v-w+g;var A=2*(p-h);var P=2*(d-m);var M=2*(p+h);var C=-f-v+w+g;i[0]=S*o;i[1]=E*o;i[2]=P*o;i[3]=0;i[4]=b*s;i[5]=_*s;i[6]=M*s;i[7]=0;i[8]=T*u;i[9]=A*u;i[10]=C*u;i[11]=0;i[12]=e.x;i[13]=e.y;i[14]=e.z;i[15]=1;return i};c.fromTranslationRotationScale=function(e,t){if(!n(e)){throw new a("translationRotationScale is required.")}return c.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};c.fromTranslation=function(e,t){if(!n(e)){throw new a("translation is required.")}return c.fromRotationTranslation(u.IDENTITY,e,t)};c.fromScale=function(e,t){if(!n(e)){throw new a("scale is required.")}if(!n(t)){return new c(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)}t[0]=e.x;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=e.y;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=e.z;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t};c.fromUniformScale=function(e,t){if(typeof e!=="number"){throw new a("scale is required.")}if(!n(t)){return new c(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)}t[0]=e;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=e;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=e;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t};var l=new e;var d=new e;var h=new e;c.fromCamera=function(t,r){if(!n(t)){throw new a("camera is required.")}var i=t.position;var o=t.direction;var s=t.up;if(!n(i)){throw new a("camera.position is required.")}if(!n(o)){throw new a("camera.direction is required.")}if(!n(s)){throw new a("camera.up is required.")}e.normalize(o,l);e.normalize(e.cross(l,s,d),d);e.normalize(e.cross(d,l,h),h);var u=d.x;var f=d.y;var v=d.z;var p=l.x;var m=l.y;var w=l.z;var y=h.x;var g=h.y;var S=h.z;var b=i.x;var T=i.y;var E=i.z;var _=u*-b+f*-T+v*-E;var A=y*-b+g*-T+S*-E;var P=p*b+m*T+w*E;if(!n(r)){return new c(u,f,v,_,y,g,S,A,-p,-m,-w,P,0,0,0,1)}r[0]=u;r[1]=y;r[2]=-p;r[3]=0;r[4]=f;r[5]=g;r[6]=-m;r[7]=0;r[8]=v;r[9]=S;r[10]=-w;r[11]=0;r[12]=_;r[13]=A;r[14]=P;r[15]=1;return r};c.computePerspectiveFieldOfView=function(e,t,r,i,o){if(e<=0||e>Math.PI){throw new a("fovY must be in [0, PI).")}if(t<=0){throw new a("aspectRatio must be greater than zero.")}if(r<=0){throw new a("near must be greater than zero.")}if(i<=0){throw new a("far must be greater than zero.")}if(!n(o)){throw new a("result is required")}var s=Math.tan(e*.5);var u=1/s;var f=u/t;var c=(i+r)/(r-i);var l=2*i*r/(r-i);o[0]=f;o[1]=0;o[2]=0;o[3]=0;o[4]=0;o[5]=u;o[6]=0;o[7]=0;o[8]=0;o[9]=0;o[10]=c;o[11]=-1;o[12]=0;o[13]=0;o[14]=l;o[15]=0;return o};c.computeOrthographicOffCenter=function(e,t,r,i,o,s,u){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("far is required.")}if(!n(u)){throw new a("result is required")}var f=1/(t-e);var c=1/(i-r);var l=1/(s-o);var d=-(t+e)*f;var h=-(i+r)*c;var v=-(s+o)*l;f*=2;c*=2;l*=-2;u[0]=f;u[1]=0;u[2]=0;u[3]=0;u[4]=0;u[5]=c;u[6]=0;u[7]=0;u[8]=0;u[9]=0;u[10]=l;u[11]=0;u[12]=d;u[13]=h;u[14]=v;u[15]=1;return u};c.computePerspectiveOffCenter=function(e,t,r,i,o,s,u){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("far is required.")}if(!n(u)){throw new a("result is required")}var f=2*o/(t-e);var c=2*o/(i-r);var l=(t+e)/(t-e);var d=(i+r)/(i-r);var h=-(s+o)/(s-o);var v=-1;var p=-2*s*o/(s-o);u[0]=f;u[1]=0;u[2]=0;u[3]=0;u[4]=0;u[5]=c;u[6]=0;u[7]=0;u[8]=l;u[9]=d;u[10]=h;u[11]=v;u[12]=0;u[13]=0;u[14]=p;u[15]=0;return u};c.computeInfinitePerspectiveOffCenter=function(e,t,r,i,o,s){if(!n(e)){throw new a("left is required.")}if(!n(t)){throw new a("right is required.")}if(!n(r)){throw new a("bottom is required.")}if(!n(i)){throw new a("top is required.")}if(!n(o)){throw new a("near is required.")}if(!n(s)){throw new a("result is required")}var u=2*o/(t-e);var f=2*o/(i-r);var c=(t+e)/(t-e);var l=(i+r)/(i-r);var d=-1;var h=-1;var v=-2*o;s[0]=u;s[1]=0;s[2]=0;s[3]=0;s[4]=0;s[5]=f;s[6]=0;s[7]=0;s[8]=c;s[9]=l;s[10]=d;s[11]=h;s[12]=0;s[13]=0;s[14]=v;s[15]=0;return s};c.computeViewportTransformation=function(e,t,i,o){if(!n(o)){throw new a("result is required")}e=r(e,r.EMPTY_OBJECT);var s=r(e.x,0);var u=r(e.y,0);var f=r(e.width,0);var c=r(e.height,0);t=r(t,0);i=r(i,1);var l=f*.5;var d=c*.5;var h=(i-t)*.5;var v=l;var p=d;var m=h;var w=s+l;var y=u+d;var g=t+h;var S=1;o[0]=v;o[1]=0;o[2]=0;o[3]=0;o[4]=0;o[5]=p;o[6]=0;o[7]=0;o[8]=0;o[9]=0;o[10]=m;o[11]=0;o[12]=w;o[13]=y;o[14]=g;o[15]=S;return o};c.computeView=function(t,r,i,o,s){if(!n(t)){throw new a("position is required")}if(!n(r)){throw new a("direction is required")}if(!n(i)){throw new a("up is required")}if(!n(o)){throw new a("right is required")}if(!n(s)){throw new a("result is required")}s[0]=o.x;s[1]=i.x;s[2]=-r.x;s[3]=0;s[4]=o.y;s[5]=i.y;s[6]=-r.y;s[7]=0;s[8]=o.z;s[9]=i.z;s[10]=-r.z;s[11]=0;s[12]=-e.dot(o,t);s[13]=-e.dot(i,t);s[14]=e.dot(r,t);s[15]=1;return s};c.toArray=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[3];t[4]=e[4];t[5]=e[5];t[6]=e[6];t[7]=e[7];t[8]=e[8];t[9]=e[9];t[10]=e[10];t[11]=e[11];t[12]=e[12];t[13]=e[13];t[14]=e[14];t[15]=e[15];return t};c.getElementIndex=function(e,t){if(typeof t!=="number"||t<0||t>3){throw new a("row must be 0, 1, 2, or 3.")}if(typeof e!=="number"||e<0||e>3){throw new a("column must be 0, 1, 2, or 3.")}return e*4+t};c.getColumn=function(e,t,r){if(!n(e)){throw new a("matrix is required.")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(r)){throw new a("result is required")}var i=t*4;var o=e[i];var s=e[i+1];var u=e[i+2];var f=e[i+3];r.x=o;r.y=s;r.z=u;r.w=f;return r};c.setColumn=function(e,t,r,i){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("cartesian is required")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(i)){throw new a("result is required")}i=c.clone(e,i);var o=t*4;i[o]=r.x;i[o+1]=r.y;i[o+2]=r.z;i[o+3]=r.w;return i};c.setTranslation=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("translation is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0];r[1]=e[1];r[2]=e[2];r[3]=e[3];r[4]=e[4];r[5]=e[5];r[6]=e[6];r[7]=e[7];r[8]=e[8];r[9]=e[9];r[10]=e[10];r[11]=e[11];r[12]=t.x;r[13]=t.y;r[14]=t.z;r[15]=e[15];return r};c.getRow=function(e,t,r){if(!n(e)){throw new a("matrix is required.")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(r)){throw new a("result is required")}var i=e[t];var o=e[t+4];var s=e[t+8];var u=e[t+12];r.x=i;r.y=o;r.z=s;r.w=u;return r};c.setRow=function(e,t,r,i){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("cartesian is required")}if(typeof t!=="number"||t<0||t>3){throw new a("index must be 0, 1, 2, or 3.")}if(!n(i)){throw new a("result is required")}i=c.clone(e,i);i[t]=r.x;i[t+4]=r.y;i[t+8]=r.z;i[t+12]=r.w;return i};var v=new e;c.getScale=function(t,r){if(!n(t)){throw new a("matrix is required.")}if(!n(r)){throw new a("result is required")}r.x=e.magnitude(e.fromElements(t[0],t[1],t[2],v));r.y=e.magnitude(e.fromElements(t[4],t[5],t[6],v));r.z=e.magnitude(e.fromElements(t[8],t[9],t[10],v));return r};var p=new e;c.getMaximumScale=function(t){c.getScale(t,p);return e.maximumComponent(p)};c.multiply=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[3];var f=e[4];var c=e[5];var l=e[6];var d=e[7];var h=e[8];var v=e[9];var p=e[10];var m=e[11];var w=e[12];var y=e[13];var g=e[14];var S=e[15];var b=t[0];var T=t[1];var E=t[2];var _=t[3];var A=t[4];var P=t[5];var M=t[6];var C=t[7];var I=t[8];var x=t[9];var R=t[10];var O=t[11];var D=t[12];var q=t[13];var N=t[14];var G=t[15];var L=i*b+f*T+h*E+w*_;var B=o*b+c*T+v*E+y*_;var H=s*b+l*T+p*E+g*_;var k=u*b+d*T+m*E+S*_;var z=i*A+f*P+h*M+w*C;var F=o*A+c*P+v*M+y*C;var V=s*A+l*P+p*M+g*C;var U=u*A+d*P+m*M+S*C;var W=i*I+f*x+h*R+w*O;var j=o*I+c*x+v*R+y*O;var X=s*I+l*x+p*R+g*O;var K=u*I+d*x+m*R+S*O;var Q=i*D+f*q+h*N+w*G;var Y=o*D+c*q+v*N+y*G;var Z=s*D+l*q+p*N+g*G;var J=u*D+d*q+m*N+S*G;r[0]=L;r[1]=B;r[2]=H;r[3]=k;r[4]=z;r[5]=F;r[6]=V;r[7]=U;r[8]=W;r[9]=j;r[10]=X;r[11]=K;r[12]=Q;r[13]=Y;r[14]=Z;r[15]=J;return r};c.add=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0]+t[0];r[1]=e[1]+t[1];r[2]=e[2]+t[2];r[3]=e[3]+t[3];r[4]=e[4]+t[4];r[5]=e[5]+t[5];r[6]=e[6]+t[6];r[7]=e[7]+t[7];r[8]=e[8]+t[8];r[9]=e[9]+t[9];r[10]=e[10]+t[10];r[11]=e[11]+t[11];r[12]=e[12]+t[12];r[13]=e[13]+t[13];r[14]=e[14]+t[14];r[15]=e[15]+t[15];return r};c.subtract=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}r[0]=e[0]-t[0];r[1]=e[1]-t[1];r[2]=e[2]-t[2];r[3]=e[3]-t[3];r[4]=e[4]-t[4];r[5]=e[5]-t[5];r[6]=e[6]-t[6];r[7]=e[7]-t[7];r[8]=e[8]-t[8];r[9]=e[9]-t[9];r[10]=e[10]-t[10];r[11]=e[11]-t[11];r[12]=e[12]-t[12];r[13]=e[13]-t[13];r[14]=e[14]-t[14];r[15]=e[15]-t[15];return r};c.multiplyTransformation=function(e,t,r){if(!n(e)){throw new a("left is required")}if(!n(t)){throw new a("right is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[4];var f=e[5];var c=e[6];var l=e[8];var d=e[9];var h=e[10];var v=e[12];var p=e[13];var m=e[14];var w=t[0];var y=t[1];var g=t[2];var S=t[4];var b=t[5];var T=t[6];var E=t[8];var _=t[9];var A=t[10];var P=t[12];var M=t[13];var C=t[14];var I=i*w+u*y+l*g;var x=o*w+f*y+d*g;var R=s*w+c*y+h*g;var O=i*S+u*b+l*T;var D=o*S+f*b+d*T;var q=s*S+c*b+h*T;var N=i*E+u*_+l*A;var G=o*E+f*_+d*A;var L=s*E+c*_+h*A;var B=i*P+u*M+l*C+v;var H=o*P+f*M+d*C+p;var k=s*P+c*M+h*C+m;r[0]=I;r[1]=x;r[2]=R;r[3]=0;r[4]=O;r[5]=D;r[6]=q;r[7]=0;r[8]=N;r[9]=G;r[10]=L;r[11]=0;r[12]=B;r[13]=H;r[14]=k;r[15]=1;return r};c.multiplyByMatrix3=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("rotation is required")}if(!n(r)){throw new a("result is required")}var i=e[0];var o=e[1];var s=e[2];var u=e[4];var f=e[5];var c=e[6];var l=e[8];var d=e[9];var h=e[10];var v=t[0];var p=t[1];var m=t[2];var w=t[3];var y=t[4];var g=t[5];var S=t[6];var b=t[7];var T=t[8];var E=i*v+u*p+l*m;var _=o*v+f*p+d*m;var A=s*v+c*p+h*m;var P=i*w+u*y+l*g;var M=o*w+f*y+d*g;var C=s*w+c*y+h*g;var I=i*S+u*b+l*T;var x=o*S+f*b+d*T;var R=s*S+c*b+h*T;r[0]=E;r[1]=_;r[2]=A;r[3]=0;r[4]=P;r[5]=M;r[6]=C;r[7]=0;r[8]=I;r[9]=x;r[10]=R;r[11]=0;r[12]=e[12];r[13]=e[13];r[14]=e[14];r[15]=e[15];return r};c.multiplyByTranslation=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("translation is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=i*e[0]+o*e[4]+s*e[8]+e[12];var f=i*e[1]+o*e[5]+s*e[9]+e[13];var c=i*e[2]+o*e[6]+s*e[10]+e[14];r[0]=e[0];r[1]=e[1];r[2]=e[2];r[3]=e[3];r[4]=e[4];r[5]=e[5];r[6]=e[6];r[7]=e[7];r[8]=e[8];r[9]=e[9];r[10]=e[10];r[11]=e[11];r[12]=u;r[13]=f;r[14]=c;r[15]=e[15];return r};var m=new e;c.multiplyByUniformScale=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(typeof t!=="number"){throw new a("scale is required")}if(!n(r)){throw new a("result is required")}m.x=t;m.y=t;m.z=t;return c.multiplyByScale(e,m,r)};c.multiplyByScale=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("scale is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;if(i===1&&o===1&&s===1){return c.clone(e,r)}r[0]=i*e[0];r[1]=i*e[1];r[2]=i*e[2];r[3]=0;r[4]=o*e[4];r[5]=o*e[5];r[6]=o*e[6];r[7]=0;r[8]=s*e[8];r[9]=s*e[9];r[10]=s*e[10];r[11]=0;r[12]=e[12];r[13]=e[13];r[14]=e[14];r[15]=1;return r};c.multiplyByVector=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=t.w;var f=e[0]*i+e[4]*o+e[8]*s+e[12]*u;var c=e[1]*i+e[5]*o+e[9]*s+e[13]*u;var l=e[2]*i+e[6]*o+e[10]*s+e[14]*u;var d=e[3]*i+e[7]*o+e[11]*s+e[15]*u;r.x=f;r.y=c;r.z=l;r.w=d;return r};c.multiplyByPointAsVector=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=e[0]*i+e[4]*o+e[8]*s;var f=e[1]*i+e[5]*o+e[9]*s;var c=e[2]*i+e[6]*o+e[10]*s;r.x=u;r.y=f;r.z=c;return r};c.multiplyByPoint=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("cartesian is required")}if(!n(r)){throw new a("result is required")}var i=t.x;var o=t.y;var s=t.z;var u=e[0]*i+e[4]*o+e[8]*s+e[12];var f=e[1]*i+e[5]*o+e[9]*s+e[13];var c=e[2]*i+e[6]*o+e[10]*s+e[14];r.x=u;r.y=f;r.z=c;return r};c.multiplyByScalar=function(e,t,r){if(!n(e)){throw new a("matrix is required")}if(typeof t!=="number"){throw new a("scalar must be a number")}if(!n(r)){throw new a("result is required")}r[0]=e[0]*t;r[1]=e[1]*t;r[2]=e[2]*t;r[3]=e[3]*t;r[4]=e[4]*t;r[5]=e[5]*t;r[6]=e[6]*t;r[7]=e[7]*t;r[8]=e[8]*t;r[9]=e[9]*t;r[10]=e[10]*t;r[11]=e[11]*t;r[12]=e[12]*t;r[13]=e[13]*t;r[14]=e[14]*t;r[15]=e[15]*t;return r};c.negate=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=-e[0];t[1]=-e[1];t[2]=-e[2];t[3]=-e[3];t[4]=-e[4];t[5]=-e[5];t[6]=-e[6];t[7]=-e[7];t[8]=-e[8];t[9]=-e[9];t[10]=-e[10];t[11]=-e[11];t[12]=-e[12];t[13]=-e[13];t[14]=-e[14];t[15]=-e[15];return t};c.transpose=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}var r=e[1];var i=e[2];var o=e[3];var s=e[6];var u=e[7];var f=e[11];t[0]=e[0];t[1]=e[4];t[2]=e[8];t[3]=e[12];t[4]=r;t[5]=e[5];t[6]=e[9];t[7]=e[13];t[8]=i;t[9]=s;t[10]=e[10];t[11]=e[14];t[12]=o;t[13]=u;t[14]=f;t[15]=e[15];return t};c.abs=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=Math.abs(e[0]);t[1]=Math.abs(e[1]);t[2]=Math.abs(e[2]);t[3]=Math.abs(e[3]);t[4]=Math.abs(e[4]);t[5]=Math.abs(e[5]);t[6]=Math.abs(e[6]);t[7]=Math.abs(e[7]);t[8]=Math.abs(e[8]);t[9]=Math.abs(e[9]);t[10]=Math.abs(e[10]);t[11]=Math.abs(e[11]);t[12]=Math.abs(e[12]);t[13]=Math.abs(e[13]);t[14]=Math.abs(e[14]);t[15]=Math.abs(e[15]);return t};c.equals=function(e,t){return e===t||n(e)&&n(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};c.equalsEpsilon=function(e,t,r){if(typeof r!=="number"){throw new a("epsilon must be a number")}return e===t||n(e)&&n(t)&&Math.abs(e[0]-t[0])<=r&&Math.abs(e[1]-t[1])<=r&&Math.abs(e[2]-t[2])<=r&&Math.abs(e[3]-t[3])<=r&&Math.abs(e[4]-t[4])<=r&&Math.abs(e[5]-t[5])<=r&&Math.abs(e[6]-t[6])<=r&&Math.abs(e[7]-t[7])<=r&&Math.abs(e[8]-t[8])<=r&&Math.abs(e[9]-t[9])<=r&&Math.abs(e[10]-t[10])<=r&&Math.abs(e[11]-t[11])<=r&&Math.abs(e[12]-t[12])<=r&&Math.abs(e[13]-t[13])<=r&&Math.abs(e[14]-t[14])<=r&&Math.abs(e[15]-t[15])<=r};c.getTranslation=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t.x=e[12];t.y=e[13];t.z=e[14];return t};c.getRotation=function(e,t){if(!n(e)){throw new a("matrix is required")}if(!n(t)){throw new a("result is required")}t[0]=e[0];t[1]=e[1];t[2]=e[2];t[3]=e[4];t[4]=e[5];t[5]=e[6];t[6]=e[8];t[7]=e[9];t[8]=e[10];return t};var w=new u;var y=new u;var g=new t;var S=new t(0,0,0,1);c.inverse=function(e,r){if(!n(e)){throw new a("matrix is required")}if(!n(r)){throw new a("result is required")}if(u.equalsEpsilon(c.getRotation(e,w),y,s.EPSILON7)&&t.equals(c.getRow(e,3,g),S)){r[0]=0;r[1]=0;r[2]=0;r[3]=0;r[4]=0;r[5]=0;r[6]=0;r[7]=0;r[8]=0;r[9]=0;r[10]=0;r[11]=0;r[12]=-e[12];r[13]=-e[13];r[14]=-e[14];r[15]=1;return r}var i=e[0];var o=e[4];var l=e[8];var d=e[12];var h=e[1];var v=e[5];var p=e[9];var m=e[13];var b=e[2];var T=e[6];var E=e[10];var _=e[14];var A=e[3];var P=e[7];var M=e[11];var C=e[15];var I=E*C;var x=_*M;var R=T*C;var O=_*P;var D=T*M;var q=E*P;var N=b*C;var G=_*A;var L=b*M;var B=E*A;var H=b*P;var k=T*A;var z=I*v+O*p+D*m-(x*v+R*p+q*m);var F=x*h+N*p+B*m-(I*h+G*p+L*m);var V=R*h+G*v+H*m-(O*h+N*v+k*m);var U=q*h+L*v+k*p-(D*h+B*v+H*p);var W=x*o+R*l+q*d-(I*o+O*l+D*d);var j=I*i+G*l+L*d-(x*i+N*l+B*d);var X=O*i+N*o+k*d-(R*i+G*o+H*d);var K=D*i+B*o+H*l-(q*i+L*o+k*l);I=l*m;x=d*p;R=o*m;O=d*v;D=o*p;q=l*v;N=i*m;G=d*h;L=i*p;B=l*h;H=i*v;k=o*h;var Q=I*P+O*M+D*C-(x*P+R*M+q*C);var Y=x*A+N*M+B*C-(I*A+G*M+L*C);var Z=R*A+G*P+H*C-(O*A+N*P+k*C);var J=q*A+L*P+k*M-(D*A+B*P+H*M);var $=R*E+q*_+x*T-(D*_+I*T+O*E);var ee=L*_+I*b+G*E-(N*E+B*_+x*b);var te=N*T+k*_+O*b-(H*_+R*b+G*T);var re=H*E+D*b+B*T-(L*T+k*E+q*b);var ne=i*z+o*F+l*V+d*U;if(Math.abs(ne)>>0;for(this.mti=1;this.mti>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti;this.mt[this.mti]>>>=0}};e.prototype.genrand_int32=function(){var e;var t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var r;if(this.mti==this.N+1)this.init_genrand(5489);for(r=0;r>>1^t[e&1]}for(;r>>1^t[e&1]}e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK;this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1];this.mti=0}e=this.mt[this.mti++];e^=e>>>11;e^=e<<7&2636928640;e^=e<<15&4022730752;e^=e>>>18;return e>>>0};e.prototype.random=function(){return this.genrand_int32()*(1/4294967296)};return e})})();(function(){var t=e.amdDefine;t("24",["20"],function(e){"use strict";function t(e,t){if(e!==undefined){return e}return t}t.EMPTY_OBJECT=e({});return t})})();(function(){var t=e.amdDefine;t("28",["6e","24","1b","1d"],function(e,t,r,n){"use strict";var i={};i.EPSILON1=.1;i.EPSILON2=.01;i.EPSILON3=.001;i.EPSILON4=1e-4;i.EPSILON5=1e-5;i.EPSILON6=1e-6;i.EPSILON7=1e-7;i.EPSILON8=1e-8;i.EPSILON9=1e-9;i.EPSILON10=1e-10;i.EPSILON11=1e-11;i.EPSILON12=1e-12;i.EPSILON13=1e-13;i.EPSILON14=1e-14;i.EPSILON15=1e-15;i.EPSILON16=1e-16;i.EPSILON17=1e-17;i.EPSILON18=1e-18;i.EPSILON19=1e-19;i.EPSILON20=1e-20;i.GRAVITATIONALPARAMETER=3986004418e5;i.SOLAR_RADIUS=6955e5;i.LUNAR_RADIUS=1737400;i.SIXTY_FOUR_KILOBYTES=64*1024;i.sign=function(e){if(e>0){return 1}if(e<0){return-1}return 0};i.signNotZero=function(e){return e<0?-1:1};i.toSNorm=function(e){return Math.round((i.clamp(e,-1,1)*.5+.5)*255)};i.fromSNorm=function(e){return i.clamp(e,0,255)/255*2-1};i.sinh=function(e){var t=Math.pow(Math.E,e);var r=Math.pow(Math.E,-1*e);return(t-r)*.5};i.cosh=function(e){var t=Math.pow(Math.E,e);var r=Math.pow(Math.E,-1*e);return(t+r)*.5};i.lerp=function(e,t,r){return(1-r)*e+r*t};i.PI=Math.PI;i.ONE_OVER_PI=1/Math.PI;i.PI_OVER_TWO=Math.PI*.5;i.PI_OVER_THREE=Math.PI/3;i.PI_OVER_FOUR=Math.PI/4;i.PI_OVER_SIX=Math.PI/6;i.THREE_PI_OVER_TWO=3*Math.PI*.5;i.TWO_PI=2*Math.PI;i.ONE_OVER_TWO_PI=1/(2*Math.PI);i.RADIANS_PER_DEGREE=Math.PI/180;i.DEGREES_PER_RADIAN=180/Math.PI;i.RADIANS_PER_ARCSECOND=i.RADIANS_PER_DEGREE/3600;i.toRadians=function(e){if(!r(e)){throw new n("degrees is required.")}return e*i.RADIANS_PER_DEGREE};i.toDegrees=function(e){if(!r(e)){throw new n("radians is required.")}return e*i.DEGREES_PER_RADIAN};i.convertLongitudeRange=function(e){if(!r(e)){throw new n("angle is required.")}var t=i.TWO_PI;var a=e-Math.floor(e/t)*t;if(a<-Math.PI){return a+t}if(a>=Math.PI){return a-t}return a};i.negativePiToPi=function(e){if(!r(e)){throw new n("x is required.")}return i.zeroToTwoPi(e+i.PI)-i.PI};i.zeroToTwoPi=function(e){if(!r(e)){throw new n("x is required.")}var t=i.mod(e,i.TWO_PI);if(Math.abs(t)i.EPSILON14){return i.TWO_PI}return t};i.mod=function(e,t){if(!r(e)){throw new n("m is required.")}if(!r(t)){throw new n("n is required.")}return(e%t+t)%t};i.equalsEpsilon=function(e,i,a,o){if(!r(e)){throw new n("left is required.")}if(!r(i)){throw new n("right is required.")}if(!r(a)){throw new n("relativeEpsilon is required.")}o=t(o,a);var s=Math.abs(e-i);return s<=o||s<=a*Math.max(Math.abs(e),Math.abs(i))};var a=[1];i.factorial=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}var t=a.length;if(e>=t){var r=a[t-1];for(var i=t;i<=e;i++){a.push(r*i)}}return a[e]};i.incrementWrap=function(e,i,a){a=t(a,0);if(!r(e)){throw new n("n is required.")}if(i<=a){throw new n("maximumValue must be greater than minimumValue.")}++e;if(e>i){e=a}return e};i.isPowerOfTwo=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}return e!==0&&(e&e-1)===0};i.nextPowerOfTwo=function(e){if(typeof e!=="number"||e<0){throw new n("A number greater than or equal to 0 is required.")}--e;e|=e>>1;e|=e>>2;e|=e>>4;e|=e>>8;e|=e>>16;++e;return e};i.clamp=function(e,t,i){if(!r(e)){throw new n("value is required")}if(!r(t)){throw new n("min is required.")}if(!r(i)){throw new n("max is required.")}return ei?i:e};var o=new e;i.setRandomNumberSeed=function(t){if(!r(t)){throw new n("seed is required.")}o=new e(t)};i.nextRandomNumber=function(){return o.random()};i.acosClamped=function(e){if(!r(e)){throw new n("value is required.")}return Math.acos(i.clamp(e,-1,1))};i.asinClamped=function(e){if(!r(e)){throw new n("value is required.")}return Math.asin(i.clamp(e,-1,1))};i.chordLength=function(e,t){if(!r(e)){throw new n("angle is required.")}if(!r(t)){throw new n("radius is required.")}return 2*t*Math.sin(e*.5)};i.logBase=function(e,t){if(!r(e)){throw new n("number is required.")}if(!r(t)){throw new n("base is required.")}return Math.log(e)/Math.log(t)};i.fog=function(e,t){var r=e*t;return 1-Math.exp(-(r*r))};return i})})();(function(){var t=e.amdDefine;t("2d",["24","1b","1d","20","28"],function(e,t,r,n,i){ +"use strict";function a(t,r,n){this.x=e(t,0);this.y=e(r,0);this.z=e(n,0)}a.fromSpherical=function(n,i){if(!t(n)){throw new r("spherical is required")}if(!t(i)){i=new a}var o=n.clock;var s=n.cone;var u=e(n.magnitude,1);var f=u*Math.sin(s);i.x=f*Math.cos(o);i.y=f*Math.sin(o);i.z=u*Math.cos(s);return i};a.fromElements=function(e,r,n,i){if(!t(i)){return new a(e,r,n)}i.x=e;i.y=r;i.z=n;return i};a.clone=function(e,r){if(!t(e)){return undefined}if(!t(r)){return new a(e.x,e.y,e.z)}r.x=e.x;r.y=e.y;r.z=e.z;return r};a.fromCartesian4=a.clone;a.packedLength=3;a.pack=function(n,i,a){if(!t(n)){throw new r("value is required")}if(!t(i)){throw new r("array is required")}a=e(a,0);i[a++]=n.x;i[a++]=n.y;i[a]=n.z};a.unpack=function(n,i,o){if(!t(n)){throw new r("array is required")}i=e(i,0);if(!t(o)){o=new a}o.x=n[i++];o.y=n[i++];o.z=n[i];return o};a.packArray=function(e,n){if(!t(e)){throw new r("array is required")}var i=e.length;if(!t(n)){n=new Array(i*3)}else{n.length=i*3}for(var o=0;o0){i=r(i,c.IDENTITY);var u=c.inverseTransformation(i,v);var f=c.multiplyByPoint(u,e.ZERO,p);var d=c.multiplyByPointAsVector(u,e.UNIT_Y,m);var h=l.fromPointNormal(f,d,w);var T=c.multiplyByPointAsVector(u,e.UNIT_X,y);var E=l.fromPointNormal(f,T,g);var _=1;a.push(e.clone(t[0]));var A=a[0];var P=t.length;for(var M=1;M0){r.splice(0,i);e._values.splice(0,i*e._innerType.packedLength);e._updateTableLength=true;e._definitionChanged.raiseEvent(e)}}function o(e,t){if(t===undefined)return;var r=e._times.length-t;if(r>0){e._times.splice(0,r);e._values.splice(0,r*e._innerType.packedLength);e._updateTableLength=true}}return{setters:[function(e){n=e}],execute:function(){i=function(e,t){return function(){var r=e.apply(this,arguments);t.call(this,r);return r}};n.SampledProperty.prototype.removeSamplesBeforeDate=function(e){a(this,e)};n.SampledPositionProperty.prototype.removeSamplesBeforeDate=function(e){a(this._property,e)};n.SampledProperty.prototype.addSample=i(n.SampledProperty.prototype.addSample,function(){o(this,this.maxNumSamples)});n.SampledProperty.prototype.addSamples=i(n.SampledProperty.prototype.addSamples,function(){o(this,this.maxNumSamples)});n.SampledProperty.prototype.addSamplesPackedArray=i(n.SampledProperty.prototype.addSamplesPackedArray,function(){o(this,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSample=i(n.SampledPositionProperty.prototype.addSample,function(){o(this._property,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSamples=i(n.SampledPositionProperty.prototype.addSamples,function(){o(this._property,this.maxNumSamples)});n.SampledPositionProperty.prototype.addSamplesPackedArray=i(n.SampledPositionProperty.prototype.addSamplesPackedArray,function(){o(this._property,this.maxNumSamples)})}}});e.register("12",["4d","1a","46","2d","44","22","23","26","2c","30","27","24","1b","1d","3d","29","2a","1e","4b","3b","3e","25","28","33","34","3f","40","41","2f","37","35","47","2e","48","49","4a","36","65","6f","70"],function(e,t){"use strict";var r=t&&t.id;return{setters:[function(t){e({binarySearch:t["default"]})},function(t){e({CallbackProperty:t["default"]})},function(t){e({Cartesian2:t["default"]})},function(t){e({Cartesian3:t["default"]})},function(t){e({Cartesian4:t["default"]})},function(t){e({Clock:t["default"]})},function(t){e({ClockStep:t["default"]})},function(t){e({CompositeEntityCollection:t["default"]})},function(t){e({ConstantPositionProperty:t["default"]})},function(t){e({ConstantProperty:t["default"]})},function(t){e({createGuid:t["default"]})},function(t){e({defaultValue:t["default"]})},function(t){e({defined:t["default"]})},function(t){e({DeveloperError:t["default"]})},function(t){e({Ellipsoid:t["default"]})},function(t){e({Entity:t["default"]})},function(t){e({EntityCollection:t["default"]})},function(t){e({Event:t["default"]})},function(t){e({ExtrapolationType:t["default"]})},function(t){e({GeographicProjection:t["default"]})},function(t){e({HermitePolynomialApproximation:t["default"]})},function(t){e({JulianDate:t["default"]})},function(t){e({CesiumMath:t["default"]})},function(t){e({Matrix3:t["default"]})},function(t){e({Matrix4:t["default"]})},function(t){e({OrientationProperty:t["default"]})},function(t){e({PerspectiveFrustum:t["default"]})},function(t){e({PerspectiveOffCenterFrustum:t["default"]})},function(t){e({PositionProperty:t["default"]})},function(t){e({Property:t["default"]})},function(t){e({Quaternion:t["default"]})},function(t){e({ReferenceEntity:t["default"]})},function(t){e({ReferenceFrame:t["default"]})},function(t){e({ReferenceProperty:t["default"]})},function(t){e({SampledPositionProperty:t["default"]})},function(t){e({SampledProperty:t["default"]})},function(t){e({Transforms:t["default"]})},function(t){e({Simon1994PlanetaryPositions:t["default"]})},function(t){e({PolylinePipeline:t["default"]})},function(e){}],execute:function(){}}});e.register("b",["1e","12"],function(e,t){"use strict";var r=t&&t.id;var n,i;var a,o,s,u,f,c,l,d,h,v,p,m;function w(e){var t=[];var r=e;do{var n=r.position;r=n&&n.referenceFrame;if(i.defined(r))t.unshift(r)}while(i.defined(r));return t}e("getAncestorReferenceFrames",w);function y(e){return w(e)[0]}e("getRootReferenceFrame",y);function g(e,t,r,n){return e.position&&e.position.getValueInReferenceFrame(t,r,n)}e("getEntityPositionInReferenceFrame",g);function S(e,t,r,n){var a=e.position&&e.position.referenceFrame;if(!i.defined(a))return undefined;var o=e.orientation&&e.orientation.getValue(t,n);if(!i.defined(o))return undefined;return i.OrientationProperty.convertToReferenceFrame(t,o,a,r,n)}e("getEntityOrientationInReferenceFrame",S);function b(e,t,r){var n=undefined;if(!i.defined(r)){n=w(e);r=n[0]}if(!i.defined(r))return;var a=g(e,t,r,{});if(!a&&!n)return undefined;var o=S(e,t,r,{});if(!o&&!n)return undefined;if(a&&o){return{p:i.Cartesian3.ZERO.equalsEpsilon(a,i.CesiumMath.EPSILON16)?0:a,o:i.Quaternion.IDENTITY.equalsEpsilon(o,i.CesiumMath.EPSILON16)?0:o,r:typeof r==="number"?r:r.id}}else if(n){for(var s=1;s0&&!e._currentCommandPending){e._executeNextCommand()}})};e.prototype.pause=function(){this._paused=true};e.prototype.clear=function(){this._queue.forEach(function(e){e.reject("Unable to execute.")});this._queue=[]};e.prototype._executeNextCommand=function(){var e=this;this._currentCommand=undefined;this._currentCommandPending=undefined;if(this._paused)return;var t=this._queue.shift();if(!t)return;this._currentCommand=t.command;this._currentCommandPending=t.execute().then(this._executeNextCommand.bind(this)).catch(function(t){e.errorEvent.raiseEvent(t);e._executeNextCommand()})};return e}();e("CommandQueue",o);e("getEntityPosition",s=g);e("getEntityOrientation",u=S);f=typeof document!=="undefined"?document.createElement("a"):undefined;c=function(){function e(){var e=this;var t=true;var r;var n;var i;r=new Promise(function(r){e.port1={set onmessage(e){i=e;r()},get onmessage(){return i},postMessage:function(r){if(t){n.then(function(){if(e.port2.onmessage)e.port2.onmessage({data:r})})}},close:function(){t=false}}});var a;n=new Promise(function(n){e.port2={set onmessage(e){a=e;n()},get onmessage(){return a},postMessage:function(n){if(t){r.then(function(){if(e.port1.onmessage)e.port1.onmessage({data:n})})}},close:function(){t=false}}})}return e}();e("MessageChannelLike",c);l=function(){function e(){var e=this;var t=[];var r=function(e){t.push(e)};e.port1={get onmessage(){return r},set onmessage(e){r=e;t.forEach(function(t){return e(t)});t=[]},postMessage:function(t){if(e.port2.onmessage)e.port2.onmessage({data:t})},close:function(){e.port1.onmessage=undefined;e.port2.onmessage=undefined}};var n=[];var i=function(e){n.push(e)};e.port2={get onmessage(){return i},set onmessage(e){i=e;n.forEach(function(t){return e(t)});n=[]},postMessage:function(t){if(e.port1.onmessage)e.port1.onmessage({data:t})},close:function(){e.port1.onmessage=undefined;e.port2.onmessage=undefined}}}return e}();e("SynchronousMessageChannel",l);d=function(){function e(){}e.prototype.create=function(){if(typeof MessageChannel!=="undefined")return new MessageChannel;else return new c};e.prototype.createSynchronous=function(){return new l};return e}();e("MessageChannelFactory",d);h=new i.PerspectiveOffCenterFrustum;v=new i.Cartesian3;p=new i.Quaternion;e("detectIOS",m=typeof navigator!=="undefined"&&typeof window!=="undefined"&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window["MSStream"])}}});e.register("1",["2","c","12","7","a","e","16","f","14","11","10","8","9","13","d","15","19","b"],function(e,t){"use strict";var r=t&&t.id;var n=this&&this.__extends||function(e,t){for(var r in t)if(t.hasOwnProperty(r))e[r]=t[r];function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)};var i,a,o,s,u,f,c,l,d,h,v,p,m,w,y,g;var S,b;function T(e){var t=e===void 0?{}:e,r=t.configuration,n=t.container,a=n===void 0?new i.Container:n;var o;if(typeof HTMLElement==="undefined"){o=u.Role.REALITY_MANAGER}else if(navigator.userAgent.indexOf("Argon")>0||window.top!==window){o=u.Role.APPLICATION}else{o=u.Role.REALITY_MANAGER}var s=Object.assign(r||{},{role:o});a.registerInstance("containerElement",null);return new S(s,a)}e("init",T);function E(e){if(e===void 0){e={}}return _(e)}e("initReality",E);function _(e){var t=e===void 0?{}:e,r=t.configuration,n=t.container,a=n===void 0?new i.Container:n;var o=Object.assign(r||{},{role:u.Role.REALITY_VIEW,"reality.supportsControlPort":true});a.registerInstance("containerElement",null);return new S(o,a)}e("initRealityViewer",_);function A(e){var t=e.containerElement,r=e.configuration,n=e.container,a=n===void 0?new i.Container:n;var o=Object.assign(r||{},{role:u.Role.REALITY_MANAGER});a.registerInstance("containerElement",t);return new S(o,a)}e("initLocal",A);var P={ArgonSystem:true,RealityView:true,init:true,initReality:true,initRealityViewer:true,initLocal:true,DI:true,Cesium:true,URI:true,EmptyRealityLoader:true,LiveVideoRealityLoader:true,HostedRealityLoader:true};function M(t){var r={};for(var n in t){if(n!=="default"&&!P.hasOwnProperty(n))r[n]=t[n]}e(r)}return{setters:[function(e){},function(e){i=e},function(e){a=e},function(e){o=e},function(e){s=e;M(e)},function(e){u=e;M(e)},function(e){f=e;M(e)},function(e){c=e;M(e)},function(e){l=e;M(e)},function(e){d=e;M(e)},function(e){h=e;M(e)},function(e){v=e;M(e)},function(e){p=e;M(e)},function(e){m=e;M(e)},function(e){w=e},function(e){y=e},function(e){g=e},function(e){M(e)}],execute:function(){e("DI",i);e("Cesium",a);e("URI",o);e("EmptyRealityLoader",w.EmptyRealityLoader);e("LiveVideoRealityLoader",y.LiveVideoRealityLoader);e("HostedRealityLoader",g.HostedRealityLoader);S=function(){function e(t,r){if(r===void 0){r=new i.Container}this.container=r;if(!e.instance)e.instance=this;r.registerInstance("config",t);r.registerInstance(e,this);if(!r.hasResolver("containerElement"))r.registerInstance("containerElement",null);if(t.role===u.Role.REALITY_MANAGER){r.registerSingleton(s.ConnectService,s.LoopbackConnectService)}else if(s.WKWebViewConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.WKWebViewConnectService)}else if(s.DOMConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.DOMConnectService)}else if(s.DebugConnectService.isAvailable()){r.registerSingleton(s.ConnectService,s.DebugConnectService)}if(t.role===u.Role.REALITY_MANAGER){this.reality.registerLoader(r.get(w.EmptyRealityLoader));this.reality.registerLoader(r.get(y.LiveVideoRealityLoader));if(typeof document!=="undefined"){this.reality.registerLoader(r.get(g.HostedRealityLoader));r.get(p.PinchZoomService);r.get(v.DefaultUIService)}if(y.LiveVideoRealityLoader.isAvailable()){this.reality.setDefault(b.LIVE_VIDEO)}else{this.reality.setDefault(b.EMPTY)}}for(var n=0,a=Object.keys(e.prototype);n dist/argon.js", - "prebuild": "npm run build:min", - "build": "uglifyjs dist/argon.js -m -o dist/argon.min.js", - "browser-sync": "browser-sync start --server --directory --startPath \"index.html\" --files \"src/**\"", - "test": "npm run browser-sync", - "static": "static -p 3000", - "typedoc": "typedoc --tsconfig tsconfig.build.json --out docs --mode file --gaID UA-63191442-2 --name argon.js --readme src/README.md --target ES5 --module commonjs --experimentalDecorators --excludeNotExported --excludeExternals --ignoreCompilerErrors src", - "postinstall": "npm install types/cesium types/mobile-detect" - }, - "dependencies": { - "@types/urijs": "^1.15.26", - "aurelia-dependency-injection": "^1.0.0" - }, - "devDependencies": { - "@types/chai": "^3.4.29", - "@types/mocha": "^2.2.28", - "@types/systemjs": "^0.18.27", - "browser-sync": "^2.11.0", - "derequire": "^2.0.3", - "jspm": "^0.17.0-beta.22", - "node-static": "^0.7.7", - "tsconfig-glob": "^0.2.1", - "typedoc": "^0.4.5", - "typescript": "^2.0.0", - "typescript-formatter": "^2.3.0", - "uglify-js": "^2.7.3" - } -} +{ + "name": "@argonjs/argon", + "version": "1.1.0-beta", + "main": "dist/argon.js", + "typings": "index.d.ts", + "jspm": { + "format": "cjs", + "jspmPackage": true, + "dependencies": { + "cesium": "github:aelatgt/cesium@referenceFrames", + "aurelia-dependency-injection": "npm:aurelia-dependency-injection@^1.0.0-beta.1.1.4", + "aurelia-polyfills": "npm:aurelia-polyfills@^1.0.0-beta.1.0.0", + "mobile-detect": "npm:mobile-detect@^1.3.2", + "ts": "github:frankwallis/plugin-typescript@^5.0.9", + "urijs": "github:medialize/URI.js@^1.18.1" + }, + "devDependencies": { + "chai": "npm:chai@^3.5.0", + "css": "github:systemjs/plugin-css@^0.1.19", + "mocha": "npm:mocha@^2.3.3" + }, + "peerDependencies": { + "aurelia-logging": "npm:aurelia-logging@^1.0.0-beta.1.1.1", + "aurelia-metadata": "npm:aurelia-metadata@^1.0.0-beta.1.1.3", + "aurelia-pal": "npm:aurelia-pal@^1.0.0-beta.1.1.1", + "os": "github:jspm/nodelibs-os@^0.2.0-alpha" + }, + "overrides": { + "npm:chai@3.5.0": { + "main": "index.js", + "format": "cjs", + "jspmPackage": true, + "meta": { + "*": { + "globals": { + "process": "process" + } + }, + "*.json": { + "format": "json" + }, + "chai.js": { + "cjsRequireDetection": false + } + }, + "map": { + "./lib/chai/utils": "./lib/chai/utils/index.js", + "process": "@empty" + } + }, + "npm:deep-eql@0.1.3": { + "main": "index.js", + "format": "cjs", + "meta": { + "*.json": { + "format": "json" + } + }, + "map": { + "buffer": "@empty" + } + }, + "npm:mobile-detect@1.3.2": { + "format": "cjs", + "jspmPackage": true, + "map": {} + }, + "npm:mocha@2.4.5": { + "browser": "mocha", + "main": "mocha", + "meta": { + "mocha.js": { + "deps": [ + "./mocha.css!" + ], + "exports": "mocha" + } + }, + "dependencies": { + "css": "*" + }, + "registry": "jspm" + }, + "github:aelatgt/cesium@referenceFrames": { + "registry": "github", + "dependencies": {}, + "map": { + "./Source/DataSources/BillboardGraphics": "@empty", + "./Source/DataSources/BoxGraphics": "@empty", + "./Source/DataSources/CorridorGraphics": "@empty", + "./Source/DataSources/CylinderGraphics": "@empty", + "./Source/DataSources/EllipseGraphics": "@empty", + "./Source/DataSources/EllipsoidGraphics": "@empty", + "./Source/DataSources/LabelGraphics": "@empty", + "./Source/DataSources/ModelGraphics": "@empty", + "./Source/DataSources/PathGraphics": "@empty", + "./Source/DataSources/PointGraphics": "@empty", + "./Source/DataSources/PolygonGraphics": "@empty", + "./Source/DataSources/PolylineGraphics": "@empty", + "./Source/DataSources/PolylineVolumeGraphics": "@empty", + "./Source/DataSources/RectangleGraphics": "@empty", + "./Source/DataSources/WallGraphics": "@empty" + } + }, + "npm:typescript@2.0.0": { + "browser": {}, + "map": { + "crypto": "@empty", + "buffer": "@empty", + "child_process": "@empty", + "fs": "@empty", + "path": "@empty", + "process": "@empty", + "readline": "@empty" + } + } + } + }, + "scripts": { + "format": "tsfmt -r", + "build:min": "jspm build src/argon.ts .tmp/argon-build.js --format umd --global-name Argon --skip-source-maps && derequire .tmp/argon-build.js > dist/argon.js", + "prebuild": "npm run build:min", + "build": "uglifyjs dist/argon.js -m -o dist/argon.min.js", + "browser-sync": "browser-sync start --server --directory --startPath \"index.html\" --files \"src/**\"", + "test": "npm run browser-sync", + "static": "static -p 3000", + "typedoc": "typedoc --tsconfig tsconfig.build.json --out docs --mode file --gaID UA-63191442-2 --name argon.js --readme src/README.md --target ES5 --module commonjs --experimentalDecorators --excludeNotExported --excludeExternals --ignoreCompilerErrors src", + "postinstall": "npm install types/cesium types/mobile-detect" + }, + "dependencies": { + "@types/urijs": "^1.15.26", + "aurelia-dependency-injection": "^1.0.0" + }, + "devDependencies": { + "@types/chai": "^3.4.29", + "@types/mocha": "^2.2.28", + "@types/systemjs": "^0.18.27", + "browser-sync": "^2.11.0", + "derequire": "^2.0.3", + "jspm": "^0.17.0-beta.22", + "node-static": "^0.7.7", + "tsconfig-glob": "^0.2.1", + "typedoc": "^0.4.5", + "typescript": "^2.0.0", + "typescript-formatter": "^2.3.0", + "uglify-js": "^2.7.3" + } +} diff --git a/src/argon.ts b/src/argon.ts index 6867145..fcae392 100644 --- a/src/argon.ts +++ b/src/argon.ts @@ -97,7 +97,11 @@ export class ArgonSystem { container.get(DefaultUIService); } - this.reality.setDefault(RealityViewer.EMPTY); + if (LiveVideoRealityLoader.isAvailable()) { + this.reality.setDefault(RealityView.LIVE_VIDEO); + } else { + this.reality.setDefault(RealityView.EMPTY); + } } // ensure the entire object graph is instantiated before connecting to the manager. diff --git a/src/common.ts b/src/common.ts index 4b7cd8f..c55a4c3 100644 --- a/src/common.ts +++ b/src/common.ts @@ -270,6 +270,12 @@ export class RealityViewer { providedReferenceFrames: ['FIXED'] } + static LIVE_VIDEO: RealityView = { + uri: 'reality:live-video', + title: 'Live Video Reality' + // No reference frames provided? + } + public uri: string; public title?: string; public providedReferenceFrames?: Array; @@ -283,4 +289,4 @@ export class RealityViewer { } return 'hosted'; } -} \ No newline at end of file +} diff --git a/src/reality-loader/live_video.ts b/src/reality-loader/live_video.ts index 58050cf..215de2a 100644 --- a/src/reality-loader/live_video.ts +++ b/src/reality-loader/live_video.ts @@ -1,17 +1,60 @@ import { inject } from 'aurelia-dependency-injection' import { Role, RealityViewer } from '../common' import { SessionService, SessionPort } from '../session' +import { DeviceService } from '../device' +import { TimerService } from '../timer' import { RealityLoader } from '../reality' import { VuforiaServiceDelegate } from '../vuforia' +import { ViewService } from '../view' +import { getSerializedEntityPose } from '../utils' -@inject(SessionService, VuforiaServiceDelegate) +@inject(SessionService, VuforiaServiceDelegate, ViewService, DeviceService, TimerService) export class LiveVideoRealityLoader extends RealityLoader { public type = 'live-video'; + private videoElement: HTMLVideoElement; + private lastFrameTime: number; + private canvas: HTMLCanvasElement; + private context: RenderingContext; + + private videoFov: number; + + private settingsIframe: HTMLIFrameElement; + constructor( - private sessionService: SessionService, - private vuforiaDelegate: VuforiaServiceDelegate) { + private sessionService: SessionService, + private vuforiaDelegate: VuforiaServiceDelegate, + private viewService: ViewService, + private deviceService: DeviceService, + private timer: TimerService) { super(); + + this.lastFrameTime = 0; + + if (typeof document !== 'undefined') { + this.settingsIframe = document.createElement('iframe'); + this.settingsIframe.width = '0'; + this.settingsIframe.height = '0'; + this.settingsIframe.src = 'https://argonjs.io/tools.argonjs.io/'; + + viewService.containingElementPromise.then((container) => { + container.insertBefore(this.settingsIframe, container.firstChild); + }); + + this.videoFov = Math.PI / 2; + + this.videoElement = document.createElement('video'); + this.videoElement.style = 'width:100%; height:100%;'; + this.videoElement.controls = false; + this.videoElement.autoplay = true; + + viewService.containingElementPromise.then((container) => { + container.insertBefore(this.videoElement, container.firstChild); + }); + + this.canvas = document.createElement('canvas'); + this.context = this.canvas.getContext('2d'); + } } public load(reality: RealityViewer, callback: (realitySession: SessionPort) => void): void { @@ -33,7 +76,55 @@ export class LiveVideoRealityLoader extends RealityLoader { this.vuforiaDelegate.videoEnabled = false; this.vuforiaDelegate.trackingEnabled = false; }); - }) + }); + + if (typeof document !== 'undefined' && typeof navigator !== 'undefined') { + window.addEventListener('message', (event) => { + const origin = event.origin || event.originalEvent.origin; + + if (origin === 'http://argonjs.io') { + this.videoFov = event.data; + } + }); + + const mediaDevices = navigator.mediaDevices; + + const getUserMedia = (mediaDevices.getUserMedia || mediaDevices.mozGetUserMedia || + mediaDevices.msGetUserMedia || mediaDevices.webkitGetUserMedia).bind(mediaDevices); + + const videoPromise = getUserMedia({ audio: false, video: true }); + + videoPromise.then((videoStream: MediaStream) => { + this.videoElement.src = window.URL.createObjectURL(videoStream); + }); + + videoPromise.catch((error: DOMException) => { + remoteRealitySession.errorEvent.raiseEvent(error); + }); + + let firstFrame = true; + + const update = (time: JulianDate, index: number) => { + if (firstFrame || this.videoElement.currentTime != this.lastFrameTime) { + firstFrame = false; + this.lastFrameTime = this.videoElement.currentTime; + this.deviceService.update(); + const frameState: SerializedPartialFrameState = { + time, + index, + eye: { + pose: getSerializedEntityPose(this.deviceService.displayEntity, time), + fov: this.videoFov + } + }; + remoteRealitySession.send('ar.reality.frameState', frameState); + } + + this.timer.requestFrame(update); + }; + + this.timer.requestFrame(update); + } callback(realitySession); // Only connect after the caller is able to attach connectEvent handlers @@ -41,4 +132,20 @@ export class LiveVideoRealityLoader extends RealityLoader { realitySession.open(messageChannel.port1, this.sessionService.configuration); remoteRealitySession.open(messageChannel.port2, { role: Role.REALITY_VIEWER }); } + + public static isAvailable(): bool { + if (typeof navigator !== 'undefined') { + const mediaDevices = navigator.mediaDevices; + return !!(mediaDevices.getUserMedia || mediaDevices.mozGetUserMedia || mediaDevices.msGetUserMedia || mediaDevices.webkitGetUserMedia); + } else { + return false; + } + } + + public getVideoFrame(x: number, y: number, width: number, height: number): ImageData { + this.canvas.width = this.videoElement.videoWidth; + this.canvas.height = this.videoElement.videoHeight; + this.context.drawImage(this.videoElement, 0, 0, this.canvas.width, this.canvas.height); + return this.context.getImageData(x, y, width, height); + } }