123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- (function() { var __moduleName = "js/main"; var __moduleAddress = "http://projects.delimited.io/webgl-globes/js/main.js";System.register(['./common/scene', './common/setEvents', './common/geoHelpers', './common/mapTexture', './common/utils', 'topojson', 'THREE', 'd3'], function (_export) {
- 'use strict';
- var scene, camera, renderer, setEvents, convertToXYZ, getEventCenter, geodecoder, mapTexture, getTween, memoize, topojson, THREE, d3;
- function animate() {
- requestAnimationFrame(animate);
- renderer.render(scene, camera);
- }
- return {
- setters: [function (_commonScene) {
- scene = _commonScene.scene;
- camera = _commonScene.camera;
- renderer = _commonScene.renderer;
- }, function (_commonSetEvents) {
- setEvents = _commonSetEvents.setEvents;
- }, function (_commonGeoHelpers) {
- convertToXYZ = _commonGeoHelpers.convertToXYZ;
- getEventCenter = _commonGeoHelpers.getEventCenter;
- geodecoder = _commonGeoHelpers.geodecoder;
- }, function (_commonMapTexture) {
- mapTexture = _commonMapTexture.mapTexture;
- }, function (_commonUtils) {
- getTween = _commonUtils.getTween;
- memoize = _commonUtils.memoize;
- }, function (_topojson) {
- topojson = _topojson['default'];
- }, function (_THREE) {
- THREE = _THREE['default'];
- }, function (_d3) {
- d3 = _d3['default'];
- }],
- execute: function () {
- d3.json('data/world.json', function (err, data) {
- d3.select('#loading').transition().duration(500).style('opacity', 0).remove();
- var currentCountry, overlay;
- var segments = 155; // number of vertices. Higher = better mouse accuracy
- // Setup cache for country textures
- var countries = topojson.feature(data, data.objects.countries);
- var geo = geodecoder(countries.features);
- var textureCache = memoize(function (cntryID, color) {
- var country = geo.find(cntryID);
- return mapTexture(country, color);
- });
- // Base globe with blue "water"
- var blueMaterial = new THREE.MeshPhongMaterial({ color: '#2B3B59', transparent: true });
- var sphere = new THREE.SphereGeometry(200, segments, segments);
- var baseGlobe = new THREE.Mesh(sphere, blueMaterial);
- baseGlobe.rotation.y = Math.PI;
- baseGlobe.addEventListener('click', onGlobeClick);
- baseGlobe.addEventListener('mousemove', onGlobeMousemove);
- // add base map layer with all countries
- var worldTexture = mapTexture(countries, '#647089');
- var mapMaterial = new THREE.MeshPhongMaterial({ map: worldTexture, transparent: true });
- var baseMap = new THREE.Mesh(new THREE.SphereGeometry(200, segments, segments), mapMaterial);
- baseMap.rotation.y = Math.PI;
- // create a container node and add the two meshes
- var root = new THREE.Object3D();
- root.scale.set(2.5, 2.5, 2.5);
- root.add(baseGlobe);
- root.add(baseMap);
- scene.add(root);
- function onGlobeClick(event) {
- // Get pointc, convert to latitude/longitude
- var latlng = getEventCenter.call(this, event);
- // Get new camera position
- var temp = new THREE.Mesh();
- temp.position.copy(convertToXYZ(latlng, 900));
- temp.lookAt(root.position);
- temp.rotateY(Math.PI);
- for (var key in temp.rotation) {
- if (temp.rotation[key] - camera.rotation[key] > Math.PI) {
- temp.rotation[key] -= Math.PI * 2;
- } else if (camera.rotation[key] - temp.rotation[key] > Math.PI) {
- temp.rotation[key] += Math.PI * 2;
- }
- }
- var tweenPos = getTween.call(camera, 'position', temp.position);
- d3.timer(tweenPos);
- var tweenRot = getTween.call(camera, 'rotation', temp.rotation);
- d3.timer(tweenRot);
- }
- function onGlobeMousemove(event) {
- var map, material;
- // Get pointc, convert to latitude/longitude
- var latlng = getEventCenter.call(this, event);
- // Look for country at that latitude/longitude
- var country = geo.search(latlng[0], latlng[1]);
- if (country !== null && country.code !== currentCountry) {
- // Track the current country displayed
- currentCountry = country.code;
- // Update the html
- d3.select('#msg').html(country.code);
- // Overlay the selected country
- map = textureCache(country.code, '#CDC290');
- material = new THREE.MeshPhongMaterial({ map: map, transparent: true });
- if (!overlay) {
- overlay = new THREE.Mesh(new THREE.SphereGeometry(201, 40, 40), material);
- overlay.rotation.y = Math.PI;
- root.add(overlay);
- } else {
- overlay.material = material;
- }
- }
- }
- setEvents(camera, [baseGlobe], 'click');
- setEvents(camera, [baseGlobe], 'mousemove', 10);
- });animate();
- }
- };
- });
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHA6Ly9wcm9qZWN0cy5kZWxpbWl0ZWQuaW8vd2ViZ2wtZ2xvYmVzL2pzL21haW4uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE0R0EsV0FBUyxPQUFPLEdBQUc7QUFDakIseUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsWUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7R0FDaEM7OzsyQkEvR1EsS0FBSzs0QkFBRSxNQUFNOzhCQUFFLFFBQVE7O21DQUN2QixTQUFTOzt1Q0FDVCxZQUFZO3lDQUFFLGNBQWM7cUNBQUUsVUFBVTs7cUNBQ3hDLFVBQVU7OzhCQUNWLFFBQVE7NkJBQUUsT0FBTzs7Ozs7Ozs7OztBQUsxQixRQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRTs7QUFFOUMsVUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQzdDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7O0FBRWhDLFlBQUksY0FBYyxFQUFFLE9BQU8sQ0FBQzs7QUFFNUIsWUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDOzs7QUFHbkIsWUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRCxZQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUV6QyxZQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ25ELGNBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsaUJBQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuQyxDQUFDLENBQUM7OztBQUdILFlBQUksWUFBWSxHQUFHLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUN0RixZQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMvRCxZQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3JELGlCQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQy9CLGlCQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xELGlCQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7OztBQUcxRCxZQUFJLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELFlBQUksV0FBVyxHQUFJLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUN2RixZQUFJLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDN0YsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQzs7O0FBRzdCLFlBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2hDLFlBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDOUIsWUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNwQixZQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xCLGFBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWhCLGlCQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUU7OztBQUczQixjQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7O0FBRzlDLGNBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzVCLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQixjQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzs7QUFFdEIsZUFBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQzdCLGdCQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3ZELGtCQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ25DLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUM5RCxrQkFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNuQztXQUNGOztBQUVELGNBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEUsWUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFbkIsY0FBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoRSxZQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BCOztBQUVELGlCQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRTtBQUMvQixjQUFJLEdBQUcsRUFBRSxRQUFRLENBQUM7OztBQUdsQixjQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7O0FBRzlDLGNBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUvQyxjQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7OztBQUd2RCwwQkFBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7OztBQUc5QixjQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7OztBQUdyQyxlQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUMsb0JBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDdEUsZ0JBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixxQkFBTyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxRSxxQkFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM3QixrQkFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuQixNQUFNO0FBQ0wscUJBQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2FBQzdCO1dBQ0Y7U0FDRjs7QUFFRCxpQkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hDLGlCQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQ2pELENBQUMsQ0FBQyxBQU1ILE9BQU8sRUFBRSxDQUFDIiwiZmlsZSI6Imh0dHA6Ly9wcm9qZWN0cy5kZWxpbWl0ZWQuaW8vd2ViZ2wtZ2xvYmVzL2pzL21haW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzY2VuZSwgY2FtZXJhLCByZW5kZXJlciB9IGZyb20gJy4vY29tbW9uL3NjZW5lJztcbmltcG9ydCB7IHNldEV2ZW50cyB9IGZyb20gJy4vY29tbW9uL3NldEV2ZW50cyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9YWVosIGdldEV2ZW50Q2VudGVyLCBnZW9kZWNvZGVyIH0gZnJvbSAnLi9jb21tb24vZ2VvSGVscGVycyc7XG5pbXBvcnQgeyBtYXBUZXh0dXJlIH0gZnJvbSAnLi9jb21tb24vbWFwVGV4dHVyZSc7XG5pbXBvcnQgeyBnZXRUd2VlbiwgbWVtb2l6ZSB9IGZyb20gJy4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB0b3BvanNvbiBmcm9tICd0b3BvanNvbic7XG5pbXBvcnQgVEhSRUUgZnJvbSAnVEhSRUUnO1xuaW1wb3J0IGQzIGZyb20gJ2QzJztcblxuZDMuanNvbignZGF0YS93b3JsZC5qc29uJywgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuXG4gIGQzLnNlbGVjdChcIiNsb2FkaW5nXCIpLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApXG4gICAgLnN0eWxlKFwib3BhY2l0eVwiLCAwKS5yZW1vdmUoKTtcblxuICB2YXIgY3VycmVudENvdW50cnksIG92ZXJsYXk7XG5cbiAgdmFyIHNlZ21lbnRzID0gMTU1OyAvLyBudW1iZXIgb2YgdmVydGljZXMuIEhpZ2hlciA9IGJldHRlciBtb3VzZSBhY2N1cmFjeVxuXG4gIC8vIFNldHVwIGNhY2hlIGZvciBjb3VudHJ5IHRleHR1cmVzXG4gIHZhciBjb3VudHJpZXMgPSB0b3BvanNvbi5mZWF0dXJlKGRhdGEsIGRhdGEub2JqZWN0cy5jb3VudHJpZXMpO1xuICB2YXIgZ2VvID0gZ2VvZGVjb2Rlcihjb3VudHJpZXMuZmVhdHVyZXMpO1xuXG4gIHZhciB0ZXh0dXJlQ2FjaGUgPSBtZW1vaXplKGZ1bmN0aW9uIChjbnRyeUlELCBjb2xvcikge1xuICAgIHZhciBjb3VudHJ5ID0gZ2VvLmZpbmQoY250cnlJRCk7XG4gICAgcmV0dXJuIG1hcFRleHR1cmUoY291bnRyeSwgY29sb3IpO1xuICB9KTtcblxuICAvLyBCYXNlIGdsb2JlIHdpdGggYmx1ZSBcIndhdGVyXCJcbiAgbGV0IGJsdWVNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6ICcjMkIzQjU5JywgdHJhbnNwYXJlbnQ6IHRydWV9KTtcbiAgbGV0IHNwaGVyZSA9IG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeSgyMDAsIHNlZ21lbnRzLCBzZWdtZW50cyk7XG4gIGxldCBiYXNlR2xvYmUgPSBuZXcgVEhSRUUuTWVzaChzcGhlcmUsIGJsdWVNYXRlcmlhbCk7XG4gIGJhc2VHbG9iZS5yb3RhdGlvbi55ID0gTWF0aC5QSTtcbiAgYmFzZUdsb2JlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25HbG9iZUNsaWNrKTtcbiAgYmFzZUdsb2JlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uR2xvYmVNb3VzZW1vdmUpO1xuXG4gIC8vIGFkZCBiYXNlIG1hcCBsYXllciB3aXRoIGFsbCBjb3VudHJpZXNcbiAgbGV0IHdvcmxkVGV4dHVyZSA9IG1hcFRleHR1cmUoY291bnRyaWVzLCAnIzY0NzA4OScpO1xuICBsZXQgbWFwTWF0ZXJpYWwgID0gbmV3IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsKHttYXA6IHdvcmxkVGV4dHVyZSwgdHJhbnNwYXJlbnQ6IHRydWV9KTtcbiAgdmFyIGJhc2VNYXAgPSBuZXcgVEhSRUUuTWVzaChuZXcgVEhSRUUuU3BoZXJlR2VvbWV0cnkoMjAwLCBzZWdtZW50cywgc2VnbWVudHMpLCBtYXBNYXRlcmlhbCk7XG4gIGJhc2VNYXAucm90YXRpb24ueSA9IE1hdGguUEk7XG5cbiAgLy8gY3JlYXRlIGEgY29udGFpbmVyIG5vZGUgYW5kIGFkZCB0aGUgdHdvIG1lc2hlc1xuICB2YXIgcm9vdCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICByb290LnNjYWxlLnNldCgyLjUsIDIuNSwgMi41KTtcbiAgcm9vdC5hZGQoYmFzZUdsb2JlKTtcbiAgcm9vdC5hZGQoYmFzZU1hcCk7XG4gIHNjZW5lLmFkZChyb290KTtcblxuICBmdW5jdGlvbiBvbkdsb2JlQ2xpY2soZXZlbnQpIHtcblxuICAgIC8vIEdldCBwb2ludGMsIGNvbnZlcnQgdG8gbGF0aXR1ZGUvbG9uZ2l0dWRlXG4gICAgdmFyIGxhdGxuZyA9IGdldEV2ZW50Q2VudGVyLmNhbGwodGhpcywgZXZlbnQpO1xuXG4gICAgLy8gR2V0IG5ldyBjYW1lcmEgcG9zaXRpb25cbiAgICB2YXIgdGVtcCA9IG5ldyBUSFJFRS5NZXNoKCk7XG4gICAgdGVtcC5wb3NpdGlvbi5jb3B5KGNvbnZlcnRUb1hZWihsYXRsbmcsIDkwMCkpO1xuICAgIHRlbXAubG9va0F0KHJvb3QucG9zaXRpb24pO1xuICAgIHRlbXAucm90YXRlWShNYXRoLlBJKTtcblxuICAgIGZvciAobGV0IGtleSBpbiB0ZW1wLnJvdGF0aW9uKSB7XG4gICAgICBpZiAodGVtcC5yb3RhdGlvbltrZXldIC0gY2FtZXJhLnJvdGF0aW9uW2tleV0gPiBNYXRoLlBJKSB7XG4gICAgICAgIHRlbXAucm90YXRpb25ba2V5XSAtPSBNYXRoLlBJICogMjtcbiAgICAgIH0gZWxzZSBpZiAoY2FtZXJhLnJvdGF0aW9uW2tleV0gLSB0ZW1wLnJvdGF0aW9uW2tleV0gPiBNYXRoLlBJKSB7XG4gICAgICAgIHRlbXAucm90YXRpb25ba2V5XSArPSBNYXRoLlBJICogMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdHdlZW5Qb3MgPSBnZXRUd2Vlbi5jYWxsKGNhbWVyYSwgJ3Bvc2l0aW9uJywgdGVtcC5wb3NpdGlvbik7XG4gICAgZDMudGltZXIodHdlZW5Qb3MpO1xuXG4gICAgdmFyIHR3ZWVuUm90ID0gZ2V0VHdlZW4uY2FsbChjYW1lcmEsICdyb3RhdGlvbicsIHRlbXAucm90YXRpb24pO1xuICAgIGQzLnRpbWVyKHR3ZWVuUm90KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uR2xvYmVNb3VzZW1vdmUoZXZlbnQpIHtcbiAgICB2YXIgbWFwLCBtYXRlcmlhbDtcblxuICAgIC8vIEdldCBwb2ludGMsIGNvbnZlcnQgdG8gbGF0aXR1ZGUvbG9uZ2l0dWRlXG4gICAgdmFyIGxhdGxuZyA9IGdldEV2ZW50Q2VudGVyLmNhbGwodGhpcywgZXZlbnQpO1xuXG4gICAgLy8gTG9vayBmb3IgY291bnRyeSBhdCB0aGF0IGxhdGl0dWRlL2xvbmdpdHVkZVxuICAgIHZhciBjb3VudHJ5ID0gZ2VvLnNlYXJjaChsYXRsbmdbMF0sIGxhdGxuZ1sxXSk7XG5cbiAgICBpZiAoY291bnRyeSAhPT0gbnVsbCAmJiBjb3VudHJ5LmNvZGUgIT09IGN1cnJlbnRDb3VudHJ5KSB7XG5cbiAgICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50IGNvdW50cnkgZGlzcGxheWVkXG4gICAgICBjdXJyZW50Q291bnRyeSA9IGNvdW50cnkuY29kZTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBodG1sXG4gICAgICBkMy5zZWxlY3QoXCIjbXNnXCIpLmh0bWwoY291bnRyeS5jb2RlKTtcblxuICAgICAgIC8vIE92ZXJsYXkgdGhlIHNlbGVjdGVkIGNvdW50cnlcbiAgICAgIG1hcCA9IHRleHR1cmVDYWNoZShjb3VudHJ5LmNvZGUsICcjQ0RDMjkwJyk7XG4gICAgICBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCh7bWFwOiBtYXAsIHRyYW5zcGFyZW50OiB0cnVlfSk7XG4gICAgICBpZiAoIW92ZXJsYXkpIHtcbiAgICAgICAgb3ZlcmxheSA9IG5ldyBUSFJFRS5NZXNoKG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeSgyMDEsIDQwLCA0MCksIG1hdGVyaWFsKTtcbiAgICAgICAgb3ZlcmxheS5yb3RhdGlvbi55ID0gTWF0aC5QSTtcbiAgICAgICAgcm9vdC5hZGQob3ZlcmxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdmVybGF5Lm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RXZlbnRzKGNhbWVyYSwgW2Jhc2VHbG9iZV0sICdjbGljaycpO1xuICBzZXRFdmVudHMoY2FtZXJhLCBbYmFzZUdsb2JlXSwgJ21vdXNlbW92ZScsIDEwKTtcbn0pO1xuXG5mdW5jdGlvbiBhbmltYXRlKCkge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbn1cbmFuaW1hdGUoKTtcbiJdfQ==
- }).call(__global);
|