UNPKG

25.4 kBJavaScriptView Raw
1// koffee 1.14.0
2
3/*
4000 000 000 000 000 0000000 0000000 000 000
5000 0 000 000 0000 000 000 000 000 000 000 0 000
6000000000 000 000 0 000 000 000 000 000 000000000
7000 000 000 000 0000 000 000 000 000 000 000
800 00 000 000 000 0000000 0000000 00 00
9 */
10var $, _, elem, fadeOverlay, klog, koSend, onError, onFile, onMessage, onTask, openFile, post, ref, showOverlay, slash, taskDiv, tasks, title, udp, w, win;
11
12ref = require('kxk'), post = ref.post, slash = ref.slash, title = ref.title, elem = ref.elem, win = ref.win, udp = ref.udp, klog = ref.klog, $ = ref.$, _ = ref._;
13
14w = new win({
15 dir: __dirname,
16 pkg: require('../package.json'),
17 menu: '../coffee/menu.noon',
18 icon: '../img/menu@2x.png'
19});
20
21koSend = null;
22
23openFile = function(f) {
24 if (!koSend) {
25 koSend = new udp({
26 port: 9779
27 });
28 }
29 return koSend.send(slash.resolve(f));
30};
31
32tasks = {};
33
34showOverlay = function() {
35 var img, overlay, ref1;
36 img = slash.fileUrl(slash.join(__dirname, '..', 'img', 'about.png'));
37 if ((ref1 = $('#overlay')) != null) {
38 ref1.remove();
39 }
40 overlay = elem({
41 id: 'overlay'
42 });
43 overlay.appendChild(elem('img', {
44 "class": 'info',
45 src: img
46 }));
47 overlay.addEventListener('click', function(event) {
48 return event.target.remove();
49 });
50 return $('main').appendChild(overlay);
51};
52
53fadeOverlay = function() {
54 showOverlay();
55 return $('#overlay').classList.add('fade-in');
56};
57
58post.on('konradExit', function(s) {});
59
60post.on('konradError', function(s, html) {
61 return onError(s, html);
62});
63
64post.on('konradOutput', function(s, html) {
65 if (/ 😡 /.test(s)) {
66 onError(s, html);
67 }
68 if (/ 🔺 /.test(s)) {
69 return onFile(s, html);
70 } else if (/ 👍 /.test(s)) {
71 return onTask(s, html);
72 } else if (/ 🔧 /.test(s)) {
73 return onMessage(s, html);
74 } else {
75 return console.log('konrad', s);
76 }
77});
78
79post.on('konradVersion', function(s) {
80 var split;
81 klog(process.argv[0]);
82 split = s.trim().split(/\s+/);
83 title = ['path'];
84 if (process.argv[0].endsWith('Electron Helper') || process.argv[0].endsWith('electron.exe')) {
85 title = ['version', 'path'];
86 }
87 return window.titlebar.setTitle({
88 title: title,
89 pkg: {
90 version: split[0],
91 path: slash.tilde(split[2])
92 }
93 });
94});
95
96post.on('clearLog', function() {
97 $('main').innerHTML = '';
98 tasks = {};
99 return showOverlay();
100});
101
102taskDiv = function(opt) {
103 var div, fil, main, ref1, ref2, ref3, tim;
104 main = $('main');
105 if (_.isEmpty(tasks)) {
106 main.innerHTML = '';
107 }
108 if ((ref1 = tasks[opt.key]) != null) {
109 ref1.remove();
110 }
111 div = document.createElement('div');
112 tim = document.createElement('span');
113 fil = document.createElement('span');
114 div.classList.add('task');
115 tim.classList.add('time');
116 tim.innerHTML = opt.time;
117 fil.classList.add((opt.file != null) && 'file' || 'message');
118 fil.innerHTML = (ref2 = opt.fileHtml) != null ? ref2 : " " + opt.icon + " " + ((ref3 = opt.file) != null ? ref3 : opt.message);
119 fil.onclick = function() {
120 if (opt.file != null) {
121 return openFile(opt.file);
122 }
123 };
124 div.appendChild(tim);
125 div.appendChild(fil);
126 tasks[opt.key] = div;
127 main.appendChild(div);
128 return div;
129};
130
131onTask = function(s) {
132 var div, ref1, ref2, ref3, source, sourceTarget, target, time;
133 post.toMain('highlight');
134 ref1 = s.split(' 👍 '), time = ref1[0], sourceTarget = ref1[1];
135 ref2 = sourceTarget.split(' ► '), source = ref2[0], target = ref2[1];
136 source = slash.tilde(source.trim());
137 target = slash.tilde(target.trim());
138 div = taskDiv({
139 time: time,
140 file: source,
141 key: source,
142 icon: '👍'
143 });
144 div.scrollIntoViewIfNeeded();
145 if (slash.dir(target).startsWith(slash.tilde(slash.dir(__filename)))) {
146 if (slash.file(target) === 'window.js' || ((ref3 = slash.ext(target)) === 'css' || ref3 === 'html')) {
147 post.emit('menuAction', 'Reload');
148 } else if (slash.file(target) === 'main.js') {
149 post.toMain('Restart');
150 } else {
151 post.toMain('Restart konrad');
152 }
153 }
154 return fadeOverlay();
155};
156
157onMessage = function(s) {
158 var div, msg, ref1, time;
159 ref1 = s.split(' 🔧 '), time = ref1[0], msg = ref1[1];
160 return div = taskDiv({
161 time: time,
162 message: msg,
163 key: 'msg',
164 icon: '🔧'
165 });
166};
167
168onError = function(s, html) {
169 var div, fileHtml, htmls, i, j, key, lines, msg, pre, ref1, ref2, task, time;
170 post.toMain('showWindow');
171 post.toMain('highlight');
172 for (key in tasks) {
173 task = tasks[key];
174 if (task.icon === '😡') {
175 task.div.remove();
176 delete tasks[key];
177 }
178 }
179 lines = s.split('\n');
180 if (html) {
181 htmls = html.split('\n');
182 fileHtml = htmls.shift().split('</span>').slice(5).join('</span>');
183 }
184 ref1 = lines.shift().split(' 😡 '), time = ref1[0], msg = ref1[1];
185 if ((msg != null ? msg.trim : void 0) != null) {
186 msg = msg.trim();
187 if (msg.split(':').length >= 3) {
188 msg = '';
189 }
190 }
191 div = taskDiv({
192 time: time,
193 icon: '😡',
194 message: msg
195 });
196 for (i = j = 0, ref2 = lines.length; 0 <= ref2 ? j < ref2 : j > ref2; i = 0 <= ref2 ? ++j : --j) {
197 pre = document.createElement('pre');
198 pre.classList.add('error');
199 if (htmls[i]) {
200 pre.innerHTML = htmls[i];
201 } else {
202 pre.textContent = lines[i];
203 }
204 div.appendChild(pre);
205 }
206 return div.scrollIntoViewIfNeeded();
207};
208
209onFile = function(s, html) {
210 var div, file, fileHtml, htmls, ref1, time;
211 post.toMain('showWindow');
212 post.toMain('highlight');
213 if (html) {
214 htmls = html.split('\n');
215 fileHtml = htmls.shift().split('</span>').slice(5).join('</span>');
216 }
217 ref1 = s.split(' 🔺 '), time = ref1[0], file = ref1[1];
218 file = file.trim();
219 div = taskDiv({
220 time: time,
221 file: file,
222 key: file.split(':')[0],
223 icon: '🔺',
224 fileHtml: fileHtml
225 });
226 return div.scrollIntoViewIfNeeded();
227};
228
229post.on('menuAction', function(action) {
230 switch (action) {
231 case 'Clear':
232 return post.emit('clearLog');
233 case 'Set Dir...':
234 return post.toMain('setRootDir');
235 }
236});
237
238showOverlay();
239
240//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6Ii4uL2NvZmZlZSIsInNvdXJjZXMiOlsid2luZG93LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7O0FBQUEsSUFBQTs7QUFRQSxNQUFxRCxPQUFBLENBQVEsS0FBUixDQUFyRCxFQUFFLGVBQUYsRUFBUSxpQkFBUixFQUFlLGlCQUFmLEVBQXNCLGVBQXRCLEVBQTRCLGFBQTVCLEVBQWlDLGFBQWpDLEVBQXNDLGVBQXRDLEVBQTRDLFNBQTVDLEVBQStDOztBQUUvQyxDQUFBLEdBQUksSUFBSSxHQUFKLENBQ0E7SUFBQSxHQUFBLEVBQVEsU0FBUjtJQUNBLEdBQUEsRUFBUSxPQUFBLENBQVEsaUJBQVIsQ0FEUjtJQUVBLElBQUEsRUFBUSxxQkFGUjtJQUdBLElBQUEsRUFBUSxvQkFIUjtDQURBOztBQVlKLE1BQUEsR0FBUzs7QUFDVCxRQUFBLEdBQVcsU0FBQyxDQUFEO0lBQ1AsSUFBRyxDQUFJLE1BQVA7UUFBbUIsTUFBQSxHQUFTLElBQUksR0FBSixDQUFRO1lBQUEsSUFBQSxFQUFLLElBQUw7U0FBUixFQUE1Qjs7V0FDQSxNQUFNLENBQUMsSUFBUCxDQUFZLEtBQUssQ0FBQyxPQUFOLENBQWMsQ0FBZCxDQUFaO0FBRk87O0FBSVgsS0FBQSxHQUFROztBQVFSLFdBQUEsR0FBYyxTQUFBO0FBRVYsUUFBQTtJQUFBLEdBQUEsR0FBTSxLQUFLLENBQUMsT0FBTixDQUFjLEtBQUssQ0FBQyxJQUFOLENBQVcsU0FBWCxFQUFzQixJQUF0QixFQUEyQixLQUEzQixFQUFpQyxXQUFqQyxDQUFkOztZQUNPLENBQUUsTUFBZixDQUFBOztJQUNBLE9BQUEsR0FBVSxJQUFBLENBQUs7UUFBQSxFQUFBLEVBQUcsU0FBSDtLQUFMO0lBQ1YsT0FBTyxDQUFDLFdBQVIsQ0FBb0IsSUFBQSxDQUFLLEtBQUwsRUFBVztRQUFBLENBQUEsS0FBQSxDQUFBLEVBQU0sTUFBTjtRQUFhLEdBQUEsRUFBSSxHQUFqQjtL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QUF1Q1YsTUFBQSxHQUFTLFNBQUMsQ0FBRCxFQUFJLElBQUo7QUFFTCxRQUFBO0lBQUEsSUFBSSxDQUFDLE1BQUwsQ0FBWSxZQUFaO0lBQ0EsSUFBSSxDQUFDLE1BQUwsQ0FBWSxXQUFaO0lBRUEsSUFBRyxJQUFIO1FBQ0ksS0FBQSxHQUFRLElBQUksQ0FBQyxLQUFMLENBQVcsSUFBWDtRQUNSLFFBQUEsR0FBVyxLQUFLLENBQUMsS0FBTixDQUFBLENBQWEsQ0FBQyxLQUFkLENBQW9CLFNBQXBCLENBQStCLFNBQUksQ0FBQyxJQUFwQyxDQUF5QyxTQUF6QyxFQUZmOztJQUlBLE9BQWUsQ0FBQyxDQUFDLEtBQUYsQ0FBUSxNQUFSLENBQWYsRUFBQyxjQUFELEVBQU87SUFDUCxJQUFBLEdBQU8sSUFBSSxDQUFDLElBQUwsQ0FBQTtJQUVQLEdBQUEsR0FBTSxPQUFBLENBQVE7UUFBQSxJQUFBLEVBQUssSUFBTDtRQUFXLElBQUEsRUFBSyxJQUFoQjtRQUFzQixHQUFBLEVBQUksSUFBSSxDQUFDLEtBQUwsQ0FBVyxHQUFYLENBQWdCLENBQUEsQ0FBQSxDQUExQztRQUE4QyxJQUFBLEVBQUssSUFBbkQ7UUFBd0QsUUFBQSxFQUFTLFFBQWpFO0tBQVI7V0FFTixHQUFHLENBQUMsc0JBQUosQ0FBQTtBQWRLOztBQXNCVCxJQUFJLENBQUMsRUFBTCxDQUFRLFlBQVIsRUFBcUIsU0FBQyxNQUFEO0FBRWpCLFlBQU8sTUFBUDtBQUFBLGFBQ1MsT0FEVDttQkFDMkIsSUFBSSxDQUFDLElBQUwsQ0FBVSxVQUFWO0FBRDNCLGFBRVMsWUFGVDttQkFFMkIsSUFBSSxDQUFDLE1BQUwsQ0FBWSxZQUFaO0FBRjNCO0FBRmlCLENBQXJCOztBQU1BLFdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIiMjI1xuMDAwICAgMDAwICAwMDAgIDAwMCAgIDAwMCAgMDAwMDAwMCAgICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgXG4wMDAgMCAwMDAgIDAwMCAgMDAwMCAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwIDAgMDAwICBcbjAwMDAwMDAwMCAgMDAwICAwMDAgMCAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAwMDAwMDAgIFxuMDAwICAgMDAwICAwMDAgIDAwMCAgMDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgXG4wMCAgICAgMDAgIDAwMCAgMDAwICAgMDAwICAwMDAwMDAwICAgICAwMDAwMDAwICAgMDAgICAgIDAwICBcbiMjI1xuXG57IHBvc3QsIHNsYXNoLCB0aXRsZSwgZWxlbSwgd2luLCB1ZHAsIGtsb2csICQsIF8gfSA9IHJlcXVpcmUgJ2t4aydcblxudyA9IG5ldyB3aW5cbiAgICBkaXI6ICAgIF9fZGlybmFtZVxuICAgIHBrZzogICAgcmVxdWlyZSAnLi4vcGFja2FnZS5qc29uJ1xuICAgIG1lbnU6ICAgJy4uL2NvZmZlZS9tZW51Lm5vb24nXG4gICAgaWNvbjogICAnLi4vaW1nL21lbnVAMngucG5nJ1xuICAgIFxuIyAgMDAwMDAwMCAgIDAwMDAwMDAwICAgMDAwMDAwMDAgIDAwMCAgIDAwMCAgXG4jIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAgICAgMDAwMCAgMDAwICBcbiMgMDAwICAgMDAwICAwMDAwMDAwMCAgIDAwMDAwMDAgICAwMDAgMCAwMDAgIFxuIyAwMDAgICAwMDAgIDAwMCAgICAgICAgMDAwICAgICAgIDAwMCAgMDAwMCAgXG4jICAwMDAwMDAwICAgMDAwICAgICAgICAwMDAwMDAwMCAgMDAwICAgMDAwICBcblxua29TZW5kID0gbnVsbFxub3BlbkZpbGUgPSAoZikgLT5cbiAgICBpZiBub3Qga29TZW5kIHRoZW4ga29TZW5kID0gbmV3IHVkcCBwb3J0Ojk3NzlcbiAgICBrb1NlbmQuc2VuZCBzbGFzaC5yZXNvbHZlIGZcblxudGFza3MgPSB7fVxuXG4jICAwMDAwMDAwICAgMDAwICAgMDAwICAwMDAwMDAwMCAgMDAwMDAwMDAgICAwMDAgICAgICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgXG4jIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAgICAgMDAwICAgMDAwICAwMDAgICAgICAwMDAgICAwMDAgICAwMDAgMDAwICAgXG4jIDAwMCAgIDAwMCAgIDAwMCAwMDAgICAwMDAwMDAwICAgMDAwMDAwMCAgICAwMDAgICAgICAwMDAwMDAwMDAgICAgMDAwMDAgICAgXG4jIDAwMCAgIDAwMCAgICAgMDAwICAgICAwMDAgICAgICAgMDAwICAgMDAwICAwMDAgICAgICAwMDAgICAwMDAgICAgIDAwMCAgICAgXG4jICAwMDAwMDAwICAgICAgIDAgICAgICAwMDAwMDAwMCAgMDAwICAgMDAwICAwMDAwMDAwICAwMDAgICAwMDAgICAgIDAwMCAgICAgXG5cbnNob3dPdmVybGF5ID0gLT5cblxuICAgIGltZyA9IHNsYXNoLmZpbGVVcmwgc2xhc2guam9pbiBfX2Rpcm5hbWUsICcuLicgJ2ltZycgJ2Fib3V0LnBuZydcbiAgICAkKCcjb3ZlcmxheScpPy5yZW1vdmUoKSBcbiAgICBvdmVybGF5ID0gZWxlbSBpZDonb3ZlcmxheSdcbiAgICBvdmVybGF5LmFwcGVuZENoaWxkIGVsZW0gJ2ltZycgY2xhc3M6J2luZm8nIHNyYzppbWdcbiAgICBvdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIgJ2NsaWNrJyAoZXZlbnQpIC0+IGV2ZW50LnRhcmdldC5yZW1vdmUoKVxuICAgICQoJ21haW4nKS5hcHBlbmRDaGlsZCBvdmVybGF5XG5cbmZhZGVPdmVybGF5ID0gLT5cbiAgICBcbiAgICBzaG93T3ZlcmxheSgpXG4gICAgJCgnI292ZXJsYXknKS5jbGFzc0xpc3QuYWRkICdmYWRlLWluJ1xuICAgIFxuIyAwMDAwMDAwMCAgICAwMDAwMDAwICAgIDAwMDAwMDAgIDAwMDAwMDAwMCAgXG4jIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAgICAgICAgMDAwICAgICBcbiMgMDAwMDAwMDAgICAwMDAgICAwMDAgIDAwMDAwMDAgICAgICAwMDAgICAgIFxuIyAwMDAgICAgICAgIDAwMCAgIDAwMCAgICAgICAwMDAgICAgIDAwMCAgICAgXG4jIDAwMCAgICAgICAgIDAwMDAwMDAgICAwMDAwMDAwICAgICAgMDAwICAgICBcblxucG9zdC5vbiAna29ucmFkRXhpdCcgKHMpIC0+XG5wb3N0Lm9uICdrb25yYWRFcnJvcicgKHMsIGh0bWwpIC0+IG9uRXJyb3IgcywgaHRtbFxucG9zdC5vbiAna29ucmFkT3V0cHV0JyAocywgaHRtbCkgLT5cbiAgICBcbiAgICBpZiAgICAgIC8g8J+YoSAvLnRlc3QgcyB0aGVuIG9uRXJyb3IgICBzLCBodG1sXG4gICAgaWYgICAgICAvIPCflLogLy50ZXN0IHMgdGhlbiBvbkZpbGUgICAgcywgaHRtbFxuICAgIGVsc2UgaWYgLyDwn5GNIC8udGVzdCBzIHRoZW4gb25UYXNrICAgIHMsIGh0bWxcbiAgICBlbHNlIGlmIC8g8J+UpyAvLnRlc3QgcyB0aGVuIG9uTWVzc2FnZSBzLCBodG1sXG4gICAgZWxzZSBsb2cgJ2tvbnJhZCcgc1xuXG5wb3N0Lm9uICdrb25yYWRWZXJzaW9uJyAocykgLT5cblxuICAgIGtsb2cgcHJvY2Vzcy5hcmd2WzBdXG4gICAgc3BsaXQgPSBzLnRyaW0oKS5zcGxpdCAvXFxzKy9cbiAgICB0aXRsZSA9IFsncGF0aCddXG4gICAgaWYgcHJvY2Vzcy5hcmd2WzBdLmVuZHNXaXRoKCdFbGVjdHJvbiBIZWxwZXInKSBvciBwcm9jZXNzLmFyZ3ZbMF0uZW5kc1dpdGgoJ2VsZWN0cm9uLmV4ZScpXG4gICAgICAgIHRpdGxlID0gWyd2ZXJzaW9uJyAncGF0aCddXG4gICAgd2luZG93LnRpdGxlYmFyLnNldFRpdGxlICBcbiAgICAgICAgdGl0bGU6dGl0bGVcbiAgICAgICAgcGtnOlxuICAgICAgICAgICAgdmVyc2lvbjogc3BsaXRbMF1cbiAgICAgICAgICAgIHBhdGg6IHNsYXNoLnRpbGRlIHNwbGl0WzJdXG4gICAgXG5wb3N0Lm9uICdjbGVhckxvZycgLT4gXG4gICAgXG4gICAgJCgnbWFpbicpLmlubmVySFRNTCA9ICcnIFxuICAgIHRhc2tzID0ge30gXG4gICAgc2hvd092ZXJsYXkoKVxuICAgIFxuIyAwMDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgIDAwMCAgIDAwMCAgMDAwMDAwMCAgICAwMDAgIDAwMCAgIDAwMCAgXG4jICAgIDAwMCAgICAgMDAwICAgMDAwICAwMDAgICAgICAgMDAwICAwMDAgICAwMDAgICAwMDAgIDAwMCAgMDAwICAgMDAwICBcbiMgICAgMDAwICAgICAwMDAwMDAwMDAgIDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMCAgIDAwMCAgMDAwICAgMDAwIDAwMCAgIFxuIyAgICAwMDAgICAgIDAwMCAgIDAwMCAgICAgICAwMDAgIDAwMCAgMDAwICAgMDAwICAgMDAwICAwMDAgICAgIDAwMCAgICAgXG4jICAgIDAwMCAgICAgMDAwICAgMDAwICAwMDAwMDAwICAgMDAwICAgMDAwICAwMDAwMDAwICAgIDAwMCAgICAgIDAgICAgICBcblxudGFza0RpdiA9IChvcHQpIC0+XG5cbiAgICBtYWluID0kICdtYWluJ1xuICAgIGlmIF8uaXNFbXB0eSB0YXNrc1xuICAgICAgICBtYWluLmlubmVySFRNTCA9ICcnXG5cbiAgICB0YXNrc1tvcHQua2V5XT8ucmVtb3ZlKClcblxuICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgJ2RpdidcbiAgICB0aW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50ICdzcGFuJ1xuICAgIGZpbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgJ3NwYW4nXG5cbiAgICBkaXYuY2xhc3NMaXN0LmFkZCAndGFzaydcblxuICAgIHRpbS5jbGFzc0xpc3QuYWRkICd0aW1lJ1xuICAgIHRpbS5pbm5lckhUTUwgPSBvcHQudGltZVxuXG4gICAgZmlsLmNsYXNzTGlzdC5hZGQgb3B0LmZpbGU/IGFuZCAnZmlsZScgb3IgJ21lc3NhZ2UnXG4gICAgZmlsLmlubmVySFRNTCA9IG9wdC5maWxlSHRtbCA/IFwiICN7b3B0Lmljb259ICN7b3B0LmZpbGUgPyBvcHQubWVzc2FnZX1cIlxuICAgIGZpbC5vbmNsaWNrID0gLT4gb3BlbkZpbGUgb3B0LmZpbGUgaWYgb3B0LmZpbGU/XG5cbiAgICBkaXYuYXBwZW5kQ2hpbGQgdGltXG4gICAgZGl2LmFwcGVuZENoaWxkIGZpbFxuXG4gICAgdGFza3Nbb3B0LmtleV0gPSBkaXZcbiAgICBtYWluLmFwcGVuZENoaWxkIGRpdlxuXG4gICAgZGl2XG4gICAgXG4jIDAwMDAwMDAwMCAgIDAwMDAwMDAgICAgMDAwMDAwMCAgMDAwICAgMDAwXG4jICAgIDAwMCAgICAgMDAwICAgMDAwICAwMDAgICAgICAgMDAwICAwMDBcbiMgICAgMDAwICAgICAwMDAwMDAwMDAgIDAwMDAwMDAgICAwMDAwMDAwXG4jICAgIDAwMCAgICAgMDAwICAgMDAwICAgICAgIDAwMCAgMDAwICAwMDBcbiMgICAgMDAwICAgICAwMDAgICAwMDAgIDAwMDAwMDAgICAwMDAgICAwMDBcblxub25UYXNrID0gKHMpIC0+XG4gICAgXG4gICAgcG9zdC50b01haW4gJ2hpZ2hsaWdodCdcblxuICAgIFt0aW1lLCBzb3VyY2VUYXJnZXRdID0gcy5zcGxpdCAnIPCfkY0gJ1xuICAgIFtzb3VyY2UsIHRhcmdldF0gPSBzb3VyY2VUYXJnZXQuc3BsaXQgJyDilrogJ1xuICAgIFxuICAgIHNvdXJjZSA9IHNsYXNoLnRpbGRlIHNvdXJjZS50cmltKClcbiAgICB0YXJnZXQgPSBzbGFzaC50aWxkZSB0YXJnZXQudHJpbSgpXG4gICAgZGl2ID0gdGFza0RpdiB0aW1lOiB0aW1lLCBmaWxlOiBzb3VyY2UsIGtleTogc291cmNlLCBpY29uOiAn8J+RjSdcbiAgICBkaXYuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpXG4gICAgXG4gICAgaWYgc2xhc2guZGlyKHRhcmdldCkuc3RhcnRzV2l0aCBzbGFzaC50aWxkZSBzbGFzaC5kaXIgX19maWxlbmFtZVxuICAgICAgICBpZiBzbGFzaC5maWxlKHRhcmdldCkgPT0gJ3dpbmRvdy5qcycgb3Igc2xhc2guZXh0KHRhcmdldCkgaW4gWydjc3MnLCAnaHRtbCddXG4gICAgICAgICAgICBwb3N0LmVtaXQgJ21lbnVBY3Rpb24nICdSZWxvYWQnXG4gICAgICAgIGVsc2UgaWYgc2xhc2guZmlsZSh0YXJnZXQpID09ICdtYWluLmpzJ1xuICAgICAgICAgICAgcG9zdC50b01haW4gJ1Jlc3RhcnQnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgICMga2xvZyBcInNob3VsZCByZXN0YXJ0IGtvbnJhZCAnI3tzbGFzaC5maWxlKHRhcmdldCl9J1wiLCB0YXJnZXQsIHNsYXNoLnBhdGggX19maWxlbmFtZVxuICAgICAgICAgICAgcG9zdC50b01haW4gJ1Jlc3RhcnQga29ucmFkJ1xuICAgIFxuICAgIGZhZGVPdmVybGF5KClcblxuIyAwMCAgICAgMDAgIDAwMDAwMDAwICAgMDAwMDAwMCAgIDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgICAwMDAwMDAwMFxuIyAwMDAgICAwMDAgIDAwMCAgICAgICAwMDAgICAgICAgMDAwICAgICAgIDAwMCAgIDAwMCAgMDAwICAgICAgICAwMDBcbiMgMDAwMDAwMDAwICAwMDAwMDAwICAgMDAwMDAwMCAgIDAwMDAwMDAgICAwMDAwMDAwMDAgIDAwMCAgMDAwMCAgMDAwMDAwMFxuIyAwMDAgMCAwMDAgIDAwMCAgICAgICAgICAgIDAwMCAgICAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDBcbiMgMDAwICAgMDAwICAwMDAwMDAwMCAgMDAwMDAwMCAgIDAwMDAwMDAgICAwMDAgICAwMDAgICAwMDAwMDAwICAgMDAwMDAwMDBcblxub25NZXNzYWdlID0gKHMpIC0+XG5cbiAgICBbdGltZSwgbXNnXSA9IHMuc3BsaXQgJyDwn5SnICdcblxuICAgIGRpdiA9IHRhc2tEaXYgdGltZTp0aW1lLCBtZXNzYWdlOm1zZywga2V5Oidtc2cnIGljb246J/CflKcnXG4gICAgXG4jIDAwMDAwMDAwICAwMDAwMDAwMCAgIDAwMDAwMDAwICAgIDAwMDAwMDAgICAwMDAwMDAwMFxuIyAwMDAgICAgICAgMDAwICAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwXG4jIDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgICAgMDAwICAgMDAwICAwMDAwMDAwXG4jIDAwMCAgICAgICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDBcbiMgMDAwMDAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMFxuXG5vbkVycm9yID0gKHMsIGh0bWwpIC0+XG5cbiAgICBwb3N0LnRvTWFpbiAnc2hvd1dpbmRvdydcbiAgICBwb3N0LnRvTWFpbiAnaGlnaGxpZ2h0J1xuICAgIFxuICAgIGZvciBrZXksdGFzayBvZiB0YXNrc1xuICAgICAgICBpZiB0YXNrLmljb24gPT0gJ/CfmKEnIFxuICAgICAgICAgICAgdGFzay5kaXYucmVtb3ZlKClcbiAgICAgICAgICAgIGRlbGV0ZSB0YXNrc1trZXldXG5cbiAgICBsaW5lcyA9IHMuc3BsaXQgJ1xcbidcbiAgICBpZiBodG1sXG4gICAgICAgIGh0bWxzID0gaHRtbC5zcGxpdCAnXFxuJ1xuICAgICAgICBmaWxlSHRtbCA9IGh0bWxzLnNoaWZ0KCkuc3BsaXQoJzwvc3Bhbj4nKVs1Li5dLmpvaW4gJzwvc3Bhbj4nXG4gICAgXG4gICAgW3RpbWUsIG1zZ10gPSBsaW5lcy5zaGlmdCgpLnNwbGl0ICcg8J+YoSAnXG4gICAgaWYgbXNnPy50cmltP1xuICAgICAgICBtc2cgPSBtc2cudHJpbSgpXG4gICAgICAgIGlmIG1zZy5zcGxpdCgnOicpLmxlbmd0aCA+PSAzIHRoZW4gbXNnID0gJydcblxuICAgIGRpdiA9IHRhc2tEaXYgdGltZTp0aW1lLCBpY29uOifwn5ihJyBtZXNzYWdlOm1zZ1xuXG4gICAgZm9yIGkgaW4gWzAuLi5saW5lcy5sZW5ndGhdXG4gICAgICAgIHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgJ3ByZSdcbiAgICAgICAgcHJlLmNsYXNzTGlzdC5hZGQgJ2Vycm9yJ1xuICAgICAgICBpZiBodG1sc1tpXVxuICAgICAgICAgICAgcHJlLmlubmVySFRNTCA9IGh0bWxzW2ldXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9IGxpbmVzW2ldXG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZCBwcmVcblxuICAgIGRpdi5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKClcblxuIyAwMDAwMDAwMCAgMDAwICAwMDAgICAgICAwMDAwMDAwMCAgXG4jIDAwMCAgICAgICAwMDAgIDAwMCAgICAgIDAwMCAgICAgICBcbiMgMDAwMDAwICAgIDAwMCAgMDAwICAgICAgMDAwMDAwMCAgIFxuIyAwMDAgICAgICAgMDAwICAwMDAgICAgICAwMDAgICAgICAgXG4jIDAwMCAgICAgICAwMDAgIDAwMDAwMDAgIDAwMDAwMDAwICBcblxub25GaWxlID0gKHMsIGh0bWwpIC0+XG5cbiAgICBwb3N0LnRvTWFpbiAnc2hvd1dpbmRvdydcbiAgICBwb3N0LnRvTWFpbiAnaGlnaGxpZ2h0J1xuICAgIFxuICAgIGlmIGh0bWxcbiAgICAgICAgaHRtbHMgPSBodG1sLnNwbGl0ICdcXG4nXG4gICAgICAgIGZpbGVIdG1sID0gaHRtbHMuc2hpZnQoKS5zcGxpdCgnPC9zcGFuPicpWzUuLl0uam9pbiAnPC9zcGFuPidcbiAgICBcbiAgICBbdGltZSwgZmlsZV0gPSBzLnNwbGl0ICcg8J+UuiAnXG4gICAgZmlsZSA9IGZpbGUudHJpbSgpXG5cbiAgICBkaXYgPSB0YXNrRGl2IHRpbWU6dGltZSwgZmlsZTpmaWxlLCBrZXk6ZmlsZS5zcGxpdCgnOicpWzBdLCBpY29uOifwn5S6JyBmaWxlSHRtbDpmaWxlSHRtbFxuXG4gICAgZGl2LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKVxuICAgIFxuIyAwMCAgICAgMDAgIDAwMDAwMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgIDAwMDAwMDAgICAgMDAwMDAwMCAgMDAwMDAwMDAwICAwMDAgICAwMDAwMDAwICAgMDAwICAgMDAwICBcbiMgMDAwICAgMDAwICAwMDAgICAgICAgMDAwMCAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgICAgICAgIDAwMCAgICAgMDAwICAwMDAgICAwMDAgIDAwMDAgIDAwMCAgXG4jIDAwMDAwMDAwMCAgMDAwMDAwMCAgIDAwMCAwIDAwMCAgMDAwICAgMDAwICAwMDAwMDAwMDAgIDAwMCAgICAgICAgICAwMDAgICAgIDAwMCAgMDAwICAgMDAwICAwMDAgMCAwMDAgIFxuIyAwMDAgMCAwMDAgIDAwMCAgICAgICAwMDAgIDAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAgICAgICAgMDAwICAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAwMDAwICBcbiMgMDAwICAgMDAwICAwMDAwMDAwMCAgMDAwICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgIDAwMDAwMDAgICAgIDAwMCAgICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgXG5cbnBvc3Qub24gJ21lbnVBY3Rpb24nIChhY3Rpb24pIC0+XG4gICAgXG4gICAgc3dpdGNoIGFjdGlvblxuICAgICAgICB3aGVuICdDbGVhcicgICAgICB0aGVuIHBvc3QuZW1pdCAnY2xlYXJMb2cnXG4gICAgICAgIHdoZW4gJ1NldCBEaXIuLi4nIHRoZW4gcG9zdC50b01haW4gJ3NldFJvb3REaXInXG4gICAgICAgIFxuc2hvd092ZXJsYXkoKVxuIl19
241//# sourceURL=../coffee/window.coffee
\No newline at end of file