← All changes
|
includes/page-form-builder/_out/bfb-time-utils.js
+114
-10
11.4.3
→
11.9
View file →
| @@ -330,8 +330,14 @@ | ||
| 330 | 330 | Time.ui_set_picker_toggle_for_panel = function (panel, enabled) { |
| 331 | 331 | if (!panel) return; |
| 332 | 332 | var chk = panel.querySelector('.js-toggle-timeslot-picker'); |
| 333 | 333 | if (chk) chk.checked = !!enabled; |
| 334 | + var skin_row = panel.querySelector('.js-time-picker-skin-row'); | |
| 335 | + if (skin_row) { | |
| 336 | + skin_row.hidden = !enabled; | |
| 337 | + skin_row.style.display = enabled ? '' : 'none'; | |
| 338 | + skin_row.setAttribute('aria-hidden', enabled ? 'false' : 'true'); | |
| 339 | + } | |
| 334 | 340 | var phRow = panel.querySelector('.js-placeholder-row'); |
| 335 | 341 | if (phRow) { |
| 336 | 342 | if (enabled) { |
| 337 | 343 | phRow.style.display = 'none'; |
| @@ -353,8 +359,90 @@ | ||
| 353 | 359 | Time.ui_set_picker_toggle_for_panel(panel, enabled); |
| 354 | 360 | }); |
| 355 | 361 | }; |
| 356 | 362 | |
| 363 | + /** | |
| 364 | + * Apply a time-picker skin URL directly to the Builder document. | |
| 365 | + * | |
| 366 | + * Updating the existing link avoids a no-styles interval. If another | |
| 367 | + * integration omitted the link, create it so Inspector changes still | |
| 368 | + * produce an immediate Canvas preview. | |
| 369 | + * | |
| 370 | + * @param {string} skin_url Public time-picker skin URL. | |
| 371 | + * @return {boolean} Whether a stylesheet URL was applied. | |
| 372 | + */ | |
| 373 | + Time.apply_picker_skin_url = function (skin_url) { | |
| 374 | + if (!skin_url) return false; | |
| 375 | + var stylesheet = d.getElementById('wpbc-time_picker-skin-css'); | |
| 376 | + if (!stylesheet) { | |
| 377 | + stylesheet = d.createElement('link'); | |
| 378 | + stylesheet.id = 'wpbc-time_picker-skin-css'; | |
| 379 | + stylesheet.rel = 'stylesheet'; | |
| 380 | + stylesheet.type = 'text/css'; | |
| 381 | + stylesheet.media = 'screen'; | |
| 382 | + (d.head || d.getElementsByTagName('head')[0]).appendChild(stylesheet); | |
| 383 | + } | |
| 384 | + stylesheet.setAttribute('href', String(skin_url)); | |
| 385 | + if (Time.read_picker_enabled()) { | |
| 386 | + Time.set_picker_enabled(true); | |
| 387 | + Time.schedule_init_timeselector(); | |
| 388 | + } | |
| 389 | + return true; | |
| 390 | + }; | |
| 391 | + | |
| 392 | + /** | |
| 393 | + * Apply a selected time-picker skin to the Builder preview stylesheet. | |
| 394 | + * | |
| 395 | + * @param {HTMLSelectElement} select_control Skin selectbox. | |
| 396 | + * @return {void} | |
| 397 | + */ | |
| 398 | + Time.apply_picker_skin_from_select = function (select_control) { | |
| 399 | + if (!select_control) return; | |
| 400 | + var selected_option = select_control.options && select_control.selectedIndex >= 0 ? select_control.options[select_control.selectedIndex] : null; | |
| 401 | + var skin_url = selected_option ? String(selected_option.getAttribute('data-wpbc-time-picker-skin-url') || '') : ''; | |
| 402 | + Time.apply_picker_skin_url(skin_url); | |
| 403 | + | |
| 404 | + // The style row is available only while the global picker is enabled. | |
| 405 | + // Reconcile the runtime flag as well, so an older Builder session can | |
| 406 | + // immediately construct its Canvas choices without a page reload. | |
| 407 | + var panel = select_control.closest ? select_control.closest('.wpbc_bfb__inspector_timepicker') : null; | |
| 408 | + var picker_toggle = panel ? panel.querySelector('.js-toggle-timeslot-picker') : null; | |
| 409 | + if (picker_toggle && picker_toggle.checked) { | |
| 410 | + Time.set_picker_enabled(true); | |
| 411 | + Time.schedule_init_timeselector(); | |
| 412 | + } | |
| 413 | + }; | |
| 414 | + | |
| 415 | + /** | |
| 416 | + * Synchronize all open time-field skin controls to a saved global value. | |
| 417 | + * | |
| 418 | + * @param {string} skin_value Relative time-picker skin path. | |
| 419 | + * @return {void} | |
| 420 | + */ | |
| 421 | + Time.ui_set_picker_skin_value = function (skin_value) { | |
| 422 | + d.querySelectorAll('.js-wpbc-bfb-time-picker-skin').forEach(function (select_control) { | |
| 423 | + select_control.value = String(skin_value || ''); | |
| 424 | + }); | |
| 425 | + }; | |
| 426 | + | |
| 427 | + /** | |
| 428 | + * Synchronize other controls after a global time-picker skin is saved. | |
| 429 | + * | |
| 430 | + * @return {void} | |
| 431 | + */ | |
| 432 | + Time.on_picker_skin_saved = function () { | |
| 433 | + var select_control = d.querySelector('.js-wpbc-bfb-time-picker-skin'); | |
| 434 | + var skin_value = select_control ? String(select_control.value || '') : ''; | |
| 435 | + var accent_button = d.querySelector('[data-wpbc-bfb-apply-accent-components="1"]'); | |
| 436 | + Time.ui_set_picker_skin_value(skin_value); | |
| 437 | + if (accent_button) { | |
| 438 | + accent_button.setAttribute('data-wpbc-time-picker-skin-current', skin_value); | |
| 439 | + } | |
| 440 | + }; | |
| 441 | + | |
| 442 | + // The generic protected option saver resolves successful callbacks by global function name. | |
| 443 | + w.wpbc_bfb_time_picker_skin_control_saved = Time.on_picker_skin_saved; | |
| 444 | + | |
| 357 | 445 | // ----------------------------------------------------------------------------------------------------------------- |
| 358 | 446 | // Debounced init for external time selector (canvas preview) |
| 359 | 447 | // ----------------------------------------------------------------------------------------------------------------- |
| 360 | 448 | |
| @@ -408,15 +496,19 @@ | ||
| 408 | 496 | Time.schedule_init_timeselector(); |
| 409 | 497 | return; |
| 410 | 498 | } |
| 411 | 499 | try { |
| 412 | - document.querySelectorAll('.wpbc_times_selector').forEach(function (el) { | |
| 413 | - if (el.parentNode) el.parentNode.removeChild(el); | |
| 414 | - }); | |
| 415 | - document.querySelectorAll('.wpbc_bfb__preview-select.wpbc_bfb__preview-rangetime,' + 'select[name^="rangetime"], select[name^="starttime"], select[name^="endtime"], select[name^="durationtime"]').forEach(function (s) { | |
| 416 | - s.style.removeProperty('display'); | |
| 417 | - s.hidden = false; | |
| 418 | - }); | |
| 500 | + if (typeof w.wpbc_hook__destroy_timeselector === 'function') { | |
| 501 | + w.wpbc_hook__destroy_timeselector(d); | |
| 502 | + } else { | |
| 503 | + document.querySelectorAll('.wpbc_times_selector').forEach(function (el) { | |
| 504 | + if (el.parentNode) el.parentNode.removeChild(el); | |
| 505 | + }); | |
| 506 | + document.querySelectorAll('.wpbc_bfb__preview-select.wpbc_bfb__preview-rangetime,' + 'select[name^="rangetime"], select[name^="starttime"], select[name^="endtime"], select[name^="durationtime"]').forEach(function (s) { | |
| 507 | + s.style.removeProperty('display'); | |
| 508 | + s.hidden = false; | |
| 509 | + }); | |
| 510 | + } | |
| 419 | 511 | } catch (e) {} |
| 420 | 512 | if (window.WPBC_BFB_Settings && typeof window.WPBC_BFB_Settings.when_builder_ready === 'function') { |
| 421 | 513 | window.WPBC_BFB_Settings.when_builder_ready(function (b) { |
| 422 | 514 | if (!b || !b.preview_mode) return; |
| @@ -515,17 +607,29 @@ | ||
| 515 | 607 | } catch (e) {} |
| 516 | 608 | }; |
| 517 | 609 | } catch (e) {} |
| 518 | 610 | |
| 519 | - // 3) Checkbox handler (delegated) | |
| 611 | + // 3) Checkbox handler (delegated). | |
| 612 | + // Skin changes use jQuery below because the previous/next selectbox | |
| 613 | + // controls dispatch jQuery's synthetic `change` event. | |
| 520 | 614 | d.addEventListener('change', function (ev) { |
| 521 | 615 | var t = ev.target; |
| 522 | - if (!t || !t.classList || !t.classList.contains('js-toggle-timeslot-picker')) return; | |
| 616 | + if (!t || !t.classList) return; | |
| 617 | + if (t.classList.contains('js-wpbc-bfb-time-picker-skin')) { | |
| 618 | + if (!w.jQuery) Time.apply_picker_skin_from_select(t); | |
| 619 | + return; | |
| 620 | + } | |
| 621 | + if (!t.classList.contains('js-toggle-timeslot-picker')) return; | |
| 523 | 622 | var enabled = !!t.checked; |
| 524 | 623 | Time.set_global_timeslot_picker(enabled, { |
| 525 | 624 | source: 'inspector' |
| 526 | 625 | }); |
| 527 | 626 | }); |
| 627 | + if (w.jQuery) { | |
| 628 | + w.jQuery(d).off('change.wpbcBfbTimePickerSkin', '.js-wpbc-bfb-time-picker-skin').on('change.wpbcBfbTimePickerSkin', '.js-wpbc-bfb-time-picker-skin', function () { | |
| 629 | + Time.apply_picker_skin_from_select(this); | |
| 630 | + }); | |
| 631 | + } | |
| 528 | 632 | }; |
| 529 | 633 | |
| 530 | 634 | // Auto-bind on script load. |
| 531 | 635 | try { |
| @@ -622,5 +726,5 @@ | ||
| 622 | 726 | try { |
| 623 | 727 | Time.ensure_builder_canvas_refresh_hooks(); |
| 624 | 728 | } catch (e) {} |
| 625 | 729 | })(window, document); |
| 626 | -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvX291dC9iZmItdGltZS11dGlscy5qcyIsIm5hbWVzIjpbInciLCJkIiwiQ29yZSIsIldQQkNfQkZCX0NvcmUiLCJUaW1lIiwiSU1hc2siLCJjb2VyY2VfdG9fYm9vbCIsInYiLCJzIiwidHJpbSIsInRvTG93ZXJDYXNlIiwicGFyc2VfaGhtbV8yNGgiLCJoaG1tIiwiTmFOIiwibSIsIlN0cmluZyIsIm1hdGNoIiwiSCIsIk51bWJlciIsIk0iLCJwYXJzZV9hbXBtX3RleHQiLCJ0eHQiLCJoMTIiLCJtbSIsImFwIiwidG9VcHBlckNhc2UiLCJoMjQiLCJwYXJzZV9taW51dGVzIiwibTIiLCJpc05hTiIsImZvcm1hdF9taW51dGVzXzI0aCIsIm1pbnV0ZXMiLCJNYXRoIiwiZmxvb3IiLCJISCIsIk1NIiwiZm9ybWF0X21pbnV0ZXNfYW1wbSIsIkgyNCIsImlzX2FtIiwiZXNjX2F0dHIiLCJyZXBsYWNlIiwiYXBwbHlfaW1hc2tfdG9faW5wdXQiLCJlbCIsIl9pbWFzayIsImRlc3Ryb3kiLCJlIiwibWFzayIsImJsb2NrcyIsIk1hc2tlZFJhbmdlIiwiZnJvbSIsInRvIiwibWF4TGVuZ3RoIiwibGF6eSIsImNsZWFyX2ltYXNrIiwiY29udmVydF9pbnB1dF9ub2RlX3RvX2Zvcm1hdCIsIm5vZGUiLCJ0b19mbXQiLCJ2YWx1ZV9taW51dGVzIiwicGFyZW50IiwicGFyZW50Tm9kZSIsImNscyIsImNsYXNzTmFtZSIsImlzX3N0YXJ0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJuZXdfZWwiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImFkZCIsInNldEF0dHJpYnV0ZSIsInZhbHVlIiwic3RlcCIsInJlcGxhY2VDaGlsZCIsInJlYnVpbGRfcm93X2lucHV0c190b19mb3JtYXQiLCJyb3ciLCJzX2VsIiwicXVlcnlTZWxlY3RvciIsImVfZWwiLCJzX20iLCJlX20iLCJzX25ldyIsImVfbmV3IiwicmVidWlsZF9hbGxfcm93c190b19mb3JtYXQiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImFwcGx5X2ltYXNrX2luX2NvbnRhaW5lcl8yNGgiLCJidWlsZF90aW1lX3Nsb3RzIiwic3RhcnRfbWludXRlcyIsImVuZF9taW51dGVzIiwic3RlcF9taW51dGVzIiwibGFiZWxfZm10Iiwib3V0IiwidCIsInQyIiwidjEiLCJ2MiIsImwxIiwibDIiLCJwdXNoIiwibGFiZWwiLCJzZWxlY3RlZCIsInJlYWRfcGlja2VyX2VuYWJsZWQiLCJfd3BiYyIsImdldF9vdGhlcl9wYXJhbSIsInNldF9waWNrZXJfZW5hYmxlZCIsImVuYWJsZWQiLCJzZXRfb3RoZXJfcGFyYW0iLCJ1aV9zZXRfcGlja2VyX3RvZ2dsZV9mb3JfcGFuZWwiLCJwYW5lbCIsImNoayIsImNoZWNrZWQiLCJwaFJvdyIsInN0eWxlIiwiZGlzcGxheSIsImhpZGRlbiIsInVpX2FwcGx5X3BpY2tlcl9lbmFibGVkX3RvX2FsbCIsInNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yIiwic2NoZWR1bGVkIiwidGlkIiwiREVMQVkiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicnVuIiwid3BiY19ob29rX19pbml0X3RpbWVzZWxlY3RvciIsIl9fd3BiY19ydF9tb19wYXVzZSIsIl9fd3BiY19zdF9tb19wYXVzZSIsIl9fd3BiY19ydF9tb19yZXN1bWUiLCJfX3dwYmNfc3RfbW9fcmVzdW1lIiwibWlycm9yX3NldHRpbmdzX3RvZ2dsZSIsIndwYmNfYmZiX19kaXNwYXRjaF9ldmVudF9zYWZlIiwia2V5Iiwic291cmNlIiwic3luY19wcmV2aWV3X2FmdGVyX2ZsYWciLCJkb2N1bWVudCIsInJlbW92ZUNoaWxkIiwicmVtb3ZlUHJvcGVydHkiLCJ3aW5kb3ciLCJXUEJDX0JGQl9TZXR0aW5ncyIsIndoZW5fYnVpbGRlcl9yZWFkeSIsImIiLCJwcmV2aWV3X21vZGUiLCJyZWZyZXNoX2NhbnZhcyIsImhhcmQiLCJyZWJ1aWxkIiwicmVpbml0IiwicmVzdG9yZV9zZWxlY3Rpb24iLCJyZXN0b3JlX3Njcm9sbCIsInNpbGVudF9pbnNwZWN0b3IiLCJyZW5kZXJfcHJldmlld19hbGwiLCJzZXRfZ2xvYmFsX3RpbWVzbG90X3BpY2tlciIsIm9wdHMiLCJtaXJyb3Jfc2V0dGluZ3MiLCJyZWZyZXNoX3ByZXZpZXciLCJlbnN1cmVfZ2xvYmFsX3RpbWVwaWNrZXJfdG9nZ2xlX2JpbmRlciIsIl9fdG9nZ2xlQmluZGVyQm91bmQiLCJpbml0X2FsbF9wYW5lbHMiLCJyZWFkeVN0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1vIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dHMiLCJpIiwibGVuZ3RoIiwiaiIsImFkZGVkTm9kZXMiLCJuIiwibm9kZVR5cGUiLCJtYXRjaGVzIiwib2JzZXJ2ZSIsImJvZHkiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3BhdXNlIiwiZGlzY29ubmVjdCIsIl9fd3BiY190aW1lcGlja2VyX3RvZ2dsZV9tb19yZXN1bWUiLCJldiIsInRhcmdldCIsImVuc3VyZV9idWlsZGVyX2NhbnZhc19yZWZyZXNoX2hvb2tzIiwiX19idWlsZGVyX2NhbnZhc19yZWZyZXNoX2hvb2tzX2JvdW5kIiwid3BiY19iZmJfYXBpIiwicmVhZHkiLCJ0aGVuIiwiYnVpbGRlciIsImJ1cyIsIm9uIiwiRVZTIiwiV1BCQ19CRkJfRXZlbnRzIiwiRVZfQkVGT1JFIiwiQ0FOVkFTX1JFRlJFU0giLCJFVl9BRlRFUiIsIkNBTlZBU19SRUZSRVNIRUQiXSwic291cmNlcyI6WyJpbmNsdWRlcy9wYWdlLWZvcm0tYnVpbGRlci9fc3JjL2JmYi10aW1lLXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBXUEJDIEJGQiBDb3JlOiBUaW1lIFV0aWxpdGllc1xyXG4gKlxyXG4gKiBPbmUgcGxhY2UgZm9yIGFsbCB0aW1lIHBhcnNpbmcvZm9ybWF0dGluZy9tYXNraW5nIGhlbHBlcnMgKyBzbWFsbCBVSSBoZWxwZXJzIHVzZWQgYnkgdGltZS1iYXNlZCBwYWNrcy5cclxuICpcclxuICogLSBQdXJlIGhlbHBlcnMgKHBhcnNlL2Zvcm1hdCBtaW51dGVzLCBBTS9QTSBjb252ZXJzaW9uKVxyXG4gKiAtIGlNYXNrIGludGVncmF0aW9uIGZvciBcIkhIOk1NXCIgaW5wdXRzXHJcbiAqIC0gSW5wdXQtbm9kZSBjb252ZXJzaW9uICh0eXBlPXRpbWUgPC0+IG1hc2tlZCB0ZXh0KVxyXG4gKiAtIFNtYWxsIFVJIGhlbHBlcnMgZm9yIGdsb2JhbCBcInRpbWUtc2xvdCBwaWNrZXJcIiB0b2dnbGUgKHBsYWNlaG9sZGVyIHJvdywgY2hlY2tib3ggc3luYylcclxuICogLSBEZWJvdW5jZWQgaW5pdCBmb3IgZXh0ZXJuYWwgXCJ0aW1lIHNlbGVjdG9yXCIgKHdwYmNfaG9va19faW5pdF90aW1lc2VsZWN0b3IpXHJcbiAqXHJcbiAqIEBwYWNrYWdlICAgQm9va2luZyBDYWxlbmRhclxyXG4gKiBAYXV0aG9yICAgIHdwZGV2ZWxvcFxyXG4gKiBAc2luY2UgICAgIDExLjAuMFxyXG4gKiBAdmVyc2lvbiAgIDEuMC4wXHJcbiAqIEBtb2RpZmllZDogMjAyNS0xMC0zMSAxMjozMlxyXG4gKlxyXG4gKiAuLi9pbmNsdWRlcy9wYWdlLWZvcm0tYnVpbGRlci9fb3V0L2JmYi10aW1lLXV0aWxzLmpzXHJcbiAqL1xyXG5cclxuLyogZ2xvYmFsIHdpbmRvdywgZG9jdW1lbnQgKi9cclxuKGZ1bmN0aW9uICh3LCBkKSB7XHJcblx0J3VzZSBzdHJpY3QnO1xyXG5cclxuXHR2YXIgQ29yZSA9IHcuV1BCQ19CRkJfQ29yZSB8fCAody5XUEJDX0JGQl9Db3JlID0ge30pO1xyXG5cdHZhciBUaW1lID0gQ29yZS5UaW1lIHx8IChDb3JlLlRpbWUgPSB7fSk7XHJcblxyXG5cdHZhciBJTWFzayA9IHcuSU1hc2sgfHwgbnVsbDtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBCYXNpYyBoZWxwZXJzXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0LyoqXHJcblx0ICogQ29lcmNlIG1peGVkIHZhbHVlcyB0byBib29sZWFuLlxyXG5cdCAqIEFjY2VwdHMgYm9vbGVhbnMsIG51bWJlcnMsIGFuZCBjb21tb24gc3RyaW5nczogXCJvblwiL1wib2ZmXCIsIFwidHJ1ZVwiL1wiZmFsc2VcIiwgXCIxXCIvXCIwXCIsIFwieWVzXCIvXCJub1wiLlxyXG5cdCAqIEBwYXJhbSB7Kn0gdlxyXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XHJcblx0ICovXHJcblx0VGltZS5jb2VyY2VfdG9fYm9vbCA9IGZ1bmN0aW9uICh2KSB7XHJcblx0XHRpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykgcmV0dXJuIHY7XHJcblx0XHRpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSByZXR1cm4gdiAhPT0gMDtcclxuXHRcdGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0dmFyIHMgPSB2LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRpZiAocyA9PT0gJ29uJyB8fCBzID09PSAndHJ1ZScgfHwgcyA9PT0gJzEnIHx8IHMgPT09ICd5ZXMnKSByZXR1cm4gdHJ1ZTtcclxuXHRcdFx0aWYgKHMgPT09ICdvZmYnIHx8IHMgPT09ICdmYWxzZScgfHwgcyA9PT0gJzAnIHx8IHMgPT09ICdubycgfHwgcyA9PT0gJycpIHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAhIXY7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2UgXCJISDpNTVwiIDI0aCAtPiBtaW51dGVzIHNpbmNlIDAwOjAwLiBSZXR1cm5zIE5hTiBvbiBpbnZhbGlkLlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBoaG1tXHJcblx0ICogQHJldHVybiB7bnVtYmVyfVxyXG5cdCAqL1xyXG5cdFRpbWUucGFyc2VfaGhtbV8yNGggPSBmdW5jdGlvbiAoaGhtbSkge1xyXG5cdFx0aWYgKCFoaG1tKSByZXR1cm4gTmFOO1xyXG5cdFx0dmFyIG0gPSBTdHJpbmcoaGhtbSkudHJpbSgpLm1hdGNoKC9eKFxcZHsxLDJ9KVxccyo6XFxzKihcXGR7Mn0pJC8pO1xyXG5cdFx0aWYgKCFtKSByZXR1cm4gTmFOO1xyXG5cdFx0dmFyIEggPSBOdW1iZXIobVsxXSksIE0gPSBOdW1iZXIobVsyXSk7XHJcblx0XHRpZiAoSCA8IDAgfHwgSCA+IDIzIHx8IE0gPCAwIHx8IE0gPiA1OSkgcmV0dXJuIE5hTjtcclxuXHRcdHJldHVybiBIICogNjAgKyBNO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlIFwiaDpNTSBBTS9QTVwiIC0+IG1pbnV0ZXMgc2luY2UgMDA6MDAuIFJldHVybnMgTmFOIG9uIGludmFsaWQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHR4dFxyXG5cdCAqIEByZXR1cm4ge251bWJlcn1cclxuXHQgKi9cclxuXHRUaW1lLnBhcnNlX2FtcG1fdGV4dCA9IGZ1bmN0aW9uICh0eHQpIHtcclxuXHRcdGlmICghdHh0KSByZXR1cm4gTmFOO1xyXG5cdFx0dmFyIG0gPSBTdHJpbmcodHh0KS50cmltKCkubWF0Y2goL14oXFxkezEsMn0pXFxzKjpcXHMqKFxcZHsyfSlcXHMqKFtBYVBwXVtNbV0pJC8pO1xyXG5cdFx0aWYgKCFtKSByZXR1cm4gTmFOO1xyXG5cdFx0dmFyIGgxMiA9IE51bWJlcihtWzFdKSwgbW0gPSBOdW1iZXIobVsyXSksIGFwID0gU3RyaW5nKG1bM10pLnRvVXBwZXJDYXNlKCk7XHJcblx0XHRpZiAoaDEyIDwgMSB8fCBoMTIgPiAxMiB8fCBtbSA8IDAgfHwgbW0gPiA1OSkgcmV0dXJuIE5hTjtcclxuXHRcdHZhciBoMjQgPSAoaDEyICUgMTIpICsgKGFwID09PSAnUE0nID8gMTIgOiAwKTtcclxuXHRcdHJldHVybiBoMjQgKiA2MCArIG1tO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyeSAyNGggXCJISDpNTVwiIGZpcnN0LCBmYWxsIGJhY2sgdG8gQU0vUE0gdGV4dC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdlxyXG5cdCAqIEByZXR1cm4ge251bWJlcn1cclxuXHQgKi9cclxuXHRUaW1lLnBhcnNlX21pbnV0ZXMgPSBmdW5jdGlvbiAodikge1xyXG5cdFx0dmFyIHMgPSBTdHJpbmcodiB8fCAnJykudHJpbSgpO1xyXG5cdFx0dmFyIG0yID0gVGltZS5wYXJzZV9oaG1tXzI0aChzKTtcclxuXHRcdHJldHVybiBpc05hTihtMikgPyBUaW1lLnBhcnNlX2FtcG1fdGV4dChzKSA6IG0yO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZvcm1hdCBtaW51dGVzIC0+IFwiSEg6TU1cIiAyNGguXHJcblx0ICogQHBhcmFtIHtudW1iZXJ9IG1pbnV0ZXNcclxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XHJcblx0ICovXHJcblx0VGltZS5mb3JtYXRfbWludXRlc18yNGggPSBmdW5jdGlvbiAobWludXRlcykge1xyXG5cdFx0dmFyIEggPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCkgJSAyNDtcclxuXHRcdHZhciBNID0gbWludXRlcyAlIDYwO1xyXG5cdFx0dmFyIEhIID0gKEggPCAxMCA/ICcwJyArIEggOiAnJyArIEgpO1xyXG5cdFx0dmFyIE1NID0gKE0gPCAxMCA/ICcwJyArIE0gOiAnJyArIE0pO1xyXG5cdFx0cmV0dXJuIEhIICsgJzonICsgTU07XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRm9ybWF0IG1pbnV0ZXMgLT4gXCJoOk1NIEFNL1BNXCIuXHJcblx0ICogQHBhcmFtIHtudW1iZXJ9IG1pbnV0ZXNcclxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XHJcblx0ICovXHJcblx0VGltZS5mb3JtYXRfbWludXRlc19hbXBtID0gZnVuY3Rpb24gKG1pbnV0ZXMpIHtcclxuXHRcdHZhciBIMjQgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCkgJSAyNDtcclxuXHRcdHZhciBNICAgPSBtaW51dGVzICUgNjA7XHJcblx0XHR2YXIgaXNfYW0gPSAoSDI0IDwgMTIpO1xyXG5cdFx0dmFyIGgxMiA9IEgyNCAlIDEyO1xyXG5cdFx0aWYgKGgxMiA9PT0gMCkgaDEyID0gMTI7XHJcblx0XHR2YXIgTU0gPSAoTSA8IDEwID8gJzAnICsgTSA6ICcnICsgTSk7XHJcblx0XHRyZXR1cm4gaDEyICsgJzonICsgTU0gKyAnICcgKyAoaXNfYW0gPyAnQU0nIDogJ1BNJyk7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRXNjYXBlIGF0dHJpYnV0ZSB0ZXh0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB2XHJcblx0ICogQHJldHVybiB7c3RyaW5nfVxyXG5cdCAqL1xyXG5cdFRpbWUuZXNjX2F0dHIgPSBmdW5jdGlvbiAodikge1xyXG5cdFx0cmV0dXJuIFN0cmluZyh2KS5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKS5yZXBsYWNlKC88L2csICcmbHQ7Jyk7XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBpTWFzayBoZWxwZXJzICh1c2VkIGJ5IDI0aCB0ZXh0IGlucHV0cylcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBBcHBseSBpTWFzayBcIkhIOk1NXCIgdG8gaW5wdXQuXHJcblx0ICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBlbFxyXG5cdCAqL1xyXG5cdFRpbWUuYXBwbHlfaW1hc2tfdG9faW5wdXQgPSBmdW5jdGlvbiAoZWwpIHtcclxuXHRcdGlmICghSU1hc2sgfHwgIWVsKSByZXR1cm47XHJcblx0XHRpZiAoZWwuX2ltYXNrKSB7XHJcblx0XHRcdHRyeSB7IGVsLl9pbWFzay5kZXN0cm95KCk7IH0gY2F0Y2ggKGUpIHt9XHJcblx0XHRcdGVsLl9pbWFzayA9IG51bGw7XHJcblx0XHR9XHJcblx0XHRlbC5faW1hc2sgPSBJTWFzayhlbCwge1xyXG5cdFx0XHRtYXNrOiAnSEg6TU0nLFxyXG5cdFx0XHRibG9ja3M6IHtcclxuXHRcdFx0XHRISDogeyBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSwgZnJvbTogMCwgdG86IDIzLCBtYXhMZW5ndGg6IDIgfSxcclxuXHRcdFx0XHRNTTogeyBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSwgZnJvbTogMCwgdG86IDU5LCBtYXhMZW5ndGg6IDIgfVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsYXp5OiBmYWxzZVxyXG5cdFx0fSk7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRGVzdHJveSBpTWFzayBpbnN0YW5jZSBpZiBwcmVzZW50LlxyXG5cdCAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudH0gZWxcclxuXHQgKi9cclxuXHRUaW1lLmNsZWFyX2ltYXNrID0gZnVuY3Rpb24gKGVsKSB7XHJcblx0XHRpZiAoZWwgJiYgZWwuX2ltYXNrKSB7XHJcblx0XHRcdHRyeSB7IGVsLl9pbWFzay5kZXN0cm95KCk7IH0gY2F0Y2ggKGUpIHt9XHJcblx0XHRcdGVsLl9pbWFzayA9IG51bGw7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBOb2RlIGNvbnZlcnNpb246IHR5cGU9dGltZSA8LT4gbWFza2VkIHRleHRcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IGEgc2luZ2xlIHN0YXJ0L2VuZCBpbnB1dCBub2RlIHRvICcyNGgnIChtYXNrZWQgdGV4dCkgb3IgJ2FtcG0nICh0eXBlPVwidGltZVwiKS5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXHJcblx0ICogQHBhcmFtIHsnMjRoJ3wnYW1wbSd9IHRvX2ZtdFxyXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZV9taW51dGVzXHJcblx0ICogQHJldHVybiB7SFRNTElucHV0RWxlbWVudH1cclxuXHQgKi9cclxuXHRUaW1lLmNvbnZlcnRfaW5wdXRfbm9kZV90b19mb3JtYXQgPSBmdW5jdGlvbiAobm9kZSwgdG9fZm10LCB2YWx1ZV9taW51dGVzKSB7XHJcblx0XHR2YXIgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlO1xyXG5cdFx0dmFyIGNscyAgICA9IG5vZGUuY2xhc3NOYW1lO1xyXG5cdFx0dmFyIGlzX3N0YXJ0ID0gbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJ3dwYmNfYmZiX19vcHQtc3RhcnQnKTtcclxuXHJcblx0XHR2YXIgbmV3X2VsO1xyXG5cdFx0aWYgKHRvX2ZtdCA9PT0gJzI0aCcpIHtcclxuXHRcdFx0bmV3X2VsICAgICAgICAgICA9IGQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuXHRcdFx0bmV3X2VsLnR5cGUgICAgICA9ICd0ZXh0JztcclxuXHRcdFx0bmV3X2VsLmNsYXNzTmFtZSA9IGNscy5yZXBsYWNlKC9cXGJqcy1ydC1zdGFydC10aW1lXFxifFxcYmpzLXJ0LWVuZC10aW1lXFxiL2csICcnKS50cmltKCk7XHJcblx0XHRcdG5ld19lbC5jbGFzc0xpc3QuYWRkKCdqcy1ydC1tYXNrJyk7XHJcblx0XHRcdG5ld19lbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWFzay1raW5kJywgJzI0aCcpO1xyXG5cdFx0XHRuZXdfZWwuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsICdISDpNTScpO1xyXG5cdFx0XHRuZXdfZWwudmFsdWUgPSBpc05hTih2YWx1ZV9taW51dGVzKSA/ICcnIDogVGltZS5mb3JtYXRfbWludXRlc18yNGgodmFsdWVfbWludXRlcyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRuZXdfZWwgICAgICAgICAgID0gZC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG5cdFx0XHRuZXdfZWwudHlwZSAgICAgID0gJ3RpbWUnO1xyXG5cdFx0XHRuZXdfZWwuc3RlcCAgICAgID0gJzMwMCc7XHJcblx0XHRcdG5ld19lbC5jbGFzc05hbWUgPSBjbHMucmVwbGFjZSgvXFxianMtcnQtbWFza1xcYi9nLCAnJykudHJpbSgpO1xyXG5cdFx0XHRuZXdfZWwuY2xhc3NMaXN0LmFkZChpc19zdGFydCA/ICdqcy1ydC1zdGFydC10aW1lJyA6ICdqcy1ydC1lbmQtdGltZScpO1xyXG5cdFx0XHQvLyA8aW5wdXQgdHlwZT1cInRpbWVcIj4gZXhwZWN0cyBcIkhIOk1NXCIgMjRoIHN0cmluZ1xyXG5cdFx0XHRuZXdfZWwudmFsdWUgPSBpc05hTih2YWx1ZV9taW51dGVzKSA/ICcnIDogVGltZS5mb3JtYXRfbWludXRlc18yNGgodmFsdWVfbWludXRlcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0VGltZS5jbGVhcl9pbWFzayhub2RlKTtcclxuXHRcdHBhcmVudC5yZXBsYWNlQ2hpbGQobmV3X2VsLCBub2RlKTtcclxuXHRcdHJldHVybiBuZXdfZWw7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVidWlsZCBib3RoIHN0YXJ0L2VuZCBpbnB1dHMgaW5zaWRlIGEgcm93IHRvIHRhcmdldCBmb3JtYXQuXHJcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcm93XHJcblx0ICogQHBhcmFtIHsnMjRoJ3wnYW1wbSd9IHRvX2ZtdFxyXG5cdCAqL1xyXG5cdFRpbWUucmVidWlsZF9yb3dfaW5wdXRzX3RvX2Zvcm1hdCA9IGZ1bmN0aW9uIChyb3csIHRvX2ZtdCkge1xyXG5cdFx0dmFyIHNfZWwgPSByb3cucXVlcnlTZWxlY3RvcignLndwYmNfYmZiX19vcHQtc3RhcnQnKTtcclxuXHRcdHZhciBlX2VsID0gcm93LnF1ZXJ5U2VsZWN0b3IoJy53cGJjX2JmYl9fb3B0LWVuZCcpO1xyXG5cdFx0aWYgKCFzX2VsIHx8ICFlX2VsKSByZXR1cm47XHJcblxyXG5cdFx0dmFyIHNfbSA9IFRpbWUucGFyc2VfbWludXRlcyhzX2VsLnZhbHVlKTtcclxuXHRcdHZhciBlX20gPSBUaW1lLnBhcnNlX21pbnV0ZXMoZV9lbC52YWx1ZSk7XHJcblxyXG5cdFx0dmFyIHNfbmV3ID0gVGltZS5jb252ZXJ0X2lucHV0X25vZGVfdG9fZm9ybWF0KHNfZWwsIHRvX2ZtdCwgc19tKTtcclxuXHRcdHZhciBlX25ldyA9IFRpbWUuY29udmVydF9pbnB1dF9ub2RlX3RvX2Zvcm1hdChlX2VsLCB0b19mbXQsIGVfbSk7XHJcblxyXG5cdFx0aWYgKHRvX2ZtdCA9PT0gJzI0aCcpIHtcclxuXHRcdFx0VGltZS5hcHBseV9pbWFza190b19pbnB1dChzX25ldyk7XHJcblx0XHRcdFRpbWUuYXBwbHlfaW1hc2tfdG9faW5wdXQoZV9uZXcpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0VGltZS5jbGVhcl9pbWFzayhzX25ldyk7XHJcblx0XHRcdFRpbWUuY2xlYXJfaW1hc2soZV9uZXcpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlYnVpbGQgYWxsIHJvd3MgdW5kZXIgY29udGFpbmVyIHRvIHRhcmdldCBmb3JtYXQuXHJcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyXHJcblx0ICogQHBhcmFtIHsnMjRoJ3wnYW1wbSd9IHRvX2ZtdFxyXG5cdCAqL1xyXG5cdFRpbWUucmVidWlsZF9hbGxfcm93c190b19mb3JtYXQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCB0b19mbXQpIHtcclxuXHRcdGlmICghY29udGFpbmVyKSByZXR1cm47XHJcblx0XHRjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLndwYmNfYmZiX19vcHRpb25zX3JvdycpLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xyXG5cdFx0XHRUaW1lLnJlYnVpbGRfcm93X2lucHV0c190b19mb3JtYXQocm93LCB0b19mbXQpO1xyXG5cdFx0fSk7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogQXBwbHkgaU1hc2sgdG8gYWxsIDI0aC1tYXNrZWQgaW5wdXRzIHdpdGhpbiBjb250YWluZXIuXHJcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyXHJcblx0ICovXHJcblx0VGltZS5hcHBseV9pbWFza19pbl9jb250YWluZXJfMjRoID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xyXG5cdFx0aWYgKCAhSU1hc2sgfHwgIWNvbnRhaW5lciApIHJldHVybjtcclxuXHRcdGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCAnaW5wdXRbZGF0YS1tYXNrLWtpbmQ9XCIyNGhcIl0nICkuZm9yRWFjaCggZnVuY3Rpb24gKGVsKSB7XHJcblx0XHRcdFRpbWUuYXBwbHlfaW1hc2tfdG9faW5wdXQoIGVsICk7XHJcblx0XHR9ICk7XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBTbG90IGdlbmVyYXRpb25cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBCdWlsZCBzbG90czogW3tsYWJlbCwgdmFsdWUsIHNlbGVjdGVkOmZhbHNlfSwgLi4uXVxyXG5cdCAqIE5vdGU6IGdlbmVyYXRpb24gZXhwZWN0cyBlbmQgPiBzdGFydC4gKE92ZXJuaWdodCByYW5nZXMgYXJlIGVudGVyZWQgbWFudWFsbHkgdmlhIGVkaXRvci4pXHJcblx0ICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0X21pbnV0ZXNcclxuXHQgKiBAcGFyYW0ge251bWJlcn0gZW5kX21pbnV0ZXNcclxuXHQgKiBAcGFyYW0ge251bWJlcn0gc3RlcF9taW51dGVzXHJcblx0ICogQHBhcmFtIHsnMjRoJ3wnYW1wbSd9IGxhYmVsX2ZtdFxyXG5cdCAqIEByZXR1cm4ge0FycmF5PHtsYWJlbDpzdHJpbmcsdmFsdWU6c3RyaW5nLHNlbGVjdGVkOmJvb2xlYW59Pn1cclxuXHQgKi9cclxuXHRUaW1lLmJ1aWxkX3RpbWVfc2xvdHMgPSBmdW5jdGlvbiAoc3RhcnRfbWludXRlcywgZW5kX21pbnV0ZXMsIHN0ZXBfbWludXRlcywgbGFiZWxfZm10KSB7XHJcblx0XHRpZiAoaXNOYU4oc3RhcnRfbWludXRlcykgfHwgaXNOYU4oZW5kX21pbnV0ZXMpIHx8IGlzTmFOKHN0ZXBfbWludXRlcykpIHJldHVybiBbXTtcclxuXHRcdGlmIChlbmRfbWludXRlcyA8PSBzdGFydF9taW51dGVzIHx8IHN0ZXBfbWludXRlcyA8PSAwKSByZXR1cm4gW107XHJcblx0XHR2YXIgb3V0ID0gW107XHJcblx0XHRmb3IgKHZhciB0ID0gc3RhcnRfbWludXRlczsgKHQgKyBzdGVwX21pbnV0ZXMpIDw9IGVuZF9taW51dGVzOyB0ICs9IHN0ZXBfbWludXRlcykge1xyXG5cdFx0XHR2YXIgdDIgID0gdCArIHN0ZXBfbWludXRlcztcclxuXHRcdFx0dmFyIHYxICA9IFRpbWUuZm9ybWF0X21pbnV0ZXNfMjRoKHQpO1xyXG5cdFx0XHR2YXIgdjIgID0gVGltZS5mb3JtYXRfbWludXRlc18yNGgodDIpO1xyXG5cdFx0XHR2YXIgbDEgID0gKGxhYmVsX2ZtdCA9PT0gJzI0aCcpID8gdjEgOiBUaW1lLmZvcm1hdF9taW51dGVzX2FtcG0odCk7XHJcblx0XHRcdHZhciBsMiAgPSAobGFiZWxfZm10ID09PSAnMjRoJykgPyB2MiA6IFRpbWUuZm9ybWF0X21pbnV0ZXNfYW1wbSh0Mik7XHJcblx0XHRcdG91dC5wdXNoKHsgbGFiZWw6IGwxICsgJyAtICcgKyBsMiwgdmFsdWU6IHYxICsgJyAtICcgKyB2Miwgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG91dDtcclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIEdsb2JhbCBcInRpbWUtc2xvdCBwaWNrZXJcIiBmbGFnIGhlbHBlcnNcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWFkIGdsb2JhbCB0aW1lLXNsb3QgcGlja2VyIGZsYWcgKHNhdmVkIHZpYSBfd3BiYyBvdGhlciBwYXJhbXMpLlxyXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XHJcblx0ICovXHJcblx0VGltZS5yZWFkX3BpY2tlcl9lbmFibGVkID0gZnVuY3Rpb24gKCkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKCEody5fd3BiYyAmJiB0eXBlb2Ygdy5fd3BiYy5nZXRfb3RoZXJfcGFyYW0gPT09ICdmdW5jdGlvbicpKSByZXR1cm4gZmFsc2U7XHJcblx0XHRcdHJldHVybiBUaW1lLmNvZXJjZV90b19ib29sKHcuX3dwYmMuZ2V0X290aGVyX3BhcmFtKCdpc19lbmFibGVkX2Jvb2tpbmdfdGltZXNsb3RfcGlja2VyJykpO1xyXG5cdFx0fSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH1cclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQZXJzaXN0IGdsb2JhbCB0aW1lLXNsb3QgcGlja2VyIGZsYWcuXHJcblx0ICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkXHJcblx0ICovXHJcblx0VGltZS5zZXRfcGlja2VyX2VuYWJsZWQgPSBmdW5jdGlvbiAoZW5hYmxlZCkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKHcuX3dwYmMgJiYgdHlwZW9mIHcuX3dwYmMuc2V0X290aGVyX3BhcmFtID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdFx0dy5fd3BiYy5zZXRfb3RoZXJfcGFyYW0oJ2lzX2VuYWJsZWRfYm9va2luZ190aW1lc2xvdF9waWNrZXInLCAhIWVuYWJsZWQpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlKSB7fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0b2dnbGUgKyBoaWRlL3Nob3cgcGxhY2Vob2xkZXIgcm93IHdpdGhpbiBhIHNpbmdsZSBJbnNwZWN0b3IgcGFuZWwuXHJcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcGFuZWxcclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWRcclxuXHQgKi9cclxuXHRUaW1lLnVpX3NldF9waWNrZXJfdG9nZ2xlX2Zvcl9wYW5lbCA9IGZ1bmN0aW9uIChwYW5lbCwgZW5hYmxlZCkge1xyXG5cdFx0aWYgKCFwYW5lbCkgcmV0dXJuO1xyXG5cdFx0dmFyIGNoayA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5qcy10b2dnbGUtdGltZXNsb3QtcGlja2VyJyk7XHJcblx0XHRpZiAoY2hrKSBjaGsuY2hlY2tlZCA9ICEhZW5hYmxlZDtcclxuXHJcblx0XHR2YXIgcGhSb3cgPSBwYW5lbC5xdWVyeVNlbGVjdG9yKCcuanMtcGxhY2Vob2xkZXItcm93Jyk7XHJcblx0XHRpZiAocGhSb3cpIHtcclxuXHRcdFx0aWYgKGVuYWJsZWQpIHsgcGhSb3cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgcGhSb3cuaGlkZGVuID0gdHJ1ZTsgfVxyXG5cdFx0XHRlbHNlIHsgcGhSb3cuc3R5bGUuZGlzcGxheSA9ICcnOyBwaFJvdy5oaWRkZW4gPSBmYWxzZTsgfVxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFwcGx5IHBpY2tlciBmbGFnIHRvIGFsbCBvcGVuIFRpbWUgaW5zcGVjdG9ycy5cclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWRcclxuXHQgKi9cclxuXHRUaW1lLnVpX2FwcGx5X3BpY2tlcl9lbmFibGVkX3RvX2FsbCA9IGZ1bmN0aW9uIChlbmFibGVkKSB7XHJcblx0XHRkLnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2luc3BlY3Rvcl90aW1lcGlja2VyJyApLmZvckVhY2goIGZ1bmN0aW9uIChwYW5lbCkge1xyXG5cdFx0XHQvLyBTZXQgdG9nZ2xlICsgaGlkZS9zaG93IHBsYWNlaG9sZGVyIHJvdyB3aXRoaW4gYSBzaW5nbGUgSW5zcGVjdG9yIHBhbmVsLlxyXG5cdFx0XHRUaW1lLnVpX3NldF9waWNrZXJfdG9nZ2xlX2Zvcl9wYW5lbCggcGFuZWwsIGVuYWJsZWQgKTtcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIERlYm91bmNlZCBpbml0IGZvciBleHRlcm5hbCB0aW1lIHNlbGVjdG9yIChjYW52YXMgcHJldmlldylcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWJvdW5jZWQgY2FsbCB0byBnbG9iYWwgaW5pdGlhbGl6ZXIgKGlmIHByZXNlbnQpOiB3cGJjX2hvb2tfX2luaXRfdGltZXNlbGVjdG9yKClcclxuXHQgKi9cclxuXHRUaW1lLnNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yID0gKGZ1bmN0aW9uICgpIHtcclxuXHRcdGxldCBzY2hlZHVsZWQgPSBmYWxzZTtcclxuXHRcdGxldCB0aWQgPSBudWxsO1xyXG5cdFx0Y29uc3QgREVMQVkgPSAzMDtcclxuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdGlmIChzY2hlZHVsZWQpIHJldHVybjtcclxuXHRcdFx0c2NoZWR1bGVkID0gdHJ1ZTtcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRpZCk7XHJcblx0XHRcdHRpZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gcnVuKCkge1xyXG5cdFx0XHRcdHNjaGVkdWxlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdGlmICghZC5xdWVyeVNlbGVjdG9yKCcud3BiY19iZmJfX3ByZXZpZXctdGltZXBpY2tlcicpKSByZXR1cm47XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB3LndwYmNfaG9va19faW5pdF90aW1lc2VsZWN0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3J0X21vX3BhdXNlICYmIHcuX193cGJjX3J0X21vX3BhdXNlKCk7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3N0X21vX3BhdXNlICYmIHcuX193cGJjX3N0X21vX3BhdXNlKCk7XHJcblx0XHRcdFx0XHRcdHcud3BiY19ob29rX19pbml0X3RpbWVzZWxlY3RvcigpO1xyXG5cdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7Lyogbm8tb3AgKi9cclxuXHRcdFx0XHRcdH0gZmluYWxseSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3J0X21vX3Jlc3VtZSAmJiB3Ll9fd3BiY19ydF9tb19yZXN1bWUoKTtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfc3RfbW9fcmVzdW1lICYmIHcuX193cGJjX3N0X21vX3Jlc3VtZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgREVMQVkgKTtcclxuXHRcdH07XHJcblx0fSkoKTtcclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIE1pcnJvciB0byBTZXR0aW5ncyBVSSB3aXRob3V0IGZpcmluZyBET00gJ2NoYW5nZScgKGxvb3Atc2FmZSkuXHJcblx0ICovXHJcblx0VGltZS5taXJyb3Jfc2V0dGluZ3NfdG9nZ2xlID0gZnVuY3Rpb24gKGVuYWJsZWQpIHtcclxuXHRcdHdwYmNfYmZiX19kaXNwYXRjaF9ldmVudF9zYWZlKFxyXG5cdFx0XHQnd3BiYzpiZmI6c2V0dGluZ3M6c2V0JyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGtleSAgIDogJ2Jvb2tpbmdfdGltZXNsb3RfcGlja2VyJyxcclxuXHRcdFx0XHR2YWx1ZSA6IGVuYWJsZWQgPyAnT24nIDogJ09mZicsXHJcblx0XHRcdFx0c291cmNlOiAndGltZS11dGlscydcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQcmV2aWV3IHJlZnJlc2ggZm9yIHRpbWUtc2xvdCBwaWNrZXIgdG9nZ2xlLlxyXG5cdCAqIC0gT046IGp1c3QgaW5pdCBleHRlcm5hbCB0aW1lIHNlbGVjdG9yLlxyXG5cdCAqIC0gT0ZGOiB0ZWFyZG93biB3aWRnZXRzIGFuZCB1bmhpZGUgPHNlbGVjdD4gY29udHJvbHMsIHRoZW4gc29mdCByZS1yZW5kZXIgKG5vIHJlYnVpbGQpLlxyXG5cdCAqL1xyXG5cdFRpbWUuc3luY19wcmV2aWV3X2FmdGVyX2ZsYWcgPSBmdW5jdGlvbiAoZW5hYmxlZCkge1xyXG5cdFx0aWYgKCBlbmFibGVkICkge1xyXG5cdFx0XHRUaW1lLnNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY190aW1lc19zZWxlY3RvcicgKS5mb3JFYWNoKCBmdW5jdGlvbiAoZWwpIHtcclxuXHRcdFx0XHRpZiAoIGVsLnBhcmVudE5vZGUgKSBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApO1xyXG5cdFx0XHR9ICk7XHJcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcblx0XHRcdFx0Jy53cGJjX2JmYl9fcHJldmlldy1zZWxlY3Qud3BiY19iZmJfX3ByZXZpZXctcmFuZ2V0aW1lLCcgK1xyXG5cdFx0XHRcdCdzZWxlY3RbbmFtZV49XCJyYW5nZXRpbWVcIl0sIHNlbGVjdFtuYW1lXj1cInN0YXJ0dGltZVwiXSwgc2VsZWN0W25hbWVePVwiZW5kdGltZVwiXSwgc2VsZWN0W25hbWVePVwiZHVyYXRpb250aW1lXCJdJ1xyXG5cdFx0XHQpLmZvckVhY2goIGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0cy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJ2Rpc3BsYXknICk7XHJcblx0XHRcdFx0cy5oaWRkZW4gPSBmYWxzZTtcclxuXHRcdFx0fSApO1xyXG5cdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHR9XHJcblx0XHRpZiAoIHdpbmRvdy5XUEJDX0JGQl9TZXR0aW5ncyAmJiB0eXBlb2Ygd2luZG93LldQQkNfQkZCX1NldHRpbmdzLndoZW5fYnVpbGRlcl9yZWFkeSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0d2luZG93LldQQkNfQkZCX1NldHRpbmdzLndoZW5fYnVpbGRlcl9yZWFkeSggZnVuY3Rpb24gKGIpIHtcclxuXHRcdFx0XHRpZiAoICFiIHx8ICFiLnByZXZpZXdfbW9kZSApIHJldHVybjtcclxuXHRcdFx0XHRpZiAoIHR5cGVvZiBiLnJlZnJlc2hfY2FudmFzID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0Yi5yZWZyZXNoX2NhbnZhcygge1xyXG5cdFx0XHRcdFx0XHRoYXJkICAgICAgICAgICAgIDogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0cmVidWlsZCAgICAgICAgICA6IGZhbHNlLCAgIC8vIGNyaXRpY2FsOiBubyBsb2FkX3NhdmVkX3N0cnVjdHVyZSgpXHJcblx0XHRcdFx0XHRcdHJlaW5pdCAgICAgICAgICAgOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0cmVzdG9yZV9zZWxlY3Rpb246IHRydWUsXHJcblx0XHRcdFx0XHRcdHJlc3RvcmVfc2Nyb2xsICAgOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRzaWxlbnRfaW5zcGVjdG9yIDogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0c291cmNlICAgICAgICAgICA6ICdzZXR0aW5nczp0aW1lc2xvdCdcclxuXHRcdFx0XHRcdH0gKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgYi5yZW5kZXJfcHJldmlld19hbGwgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRiLnJlbmRlcl9wcmV2aWV3X2FsbCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSApO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9uZS1jYWxsIHVuaXZlcnNhbCBzZXR0ZXIgdXNlZCBieSBTZXR0aW5ncyArIGFsbCB0aW1lLWZpZWxkIGluc3BlY3RvcnMuXHJcblx0ICovXHJcblx0VGltZS5zZXRfZ2xvYmFsX3RpbWVzbG90X3BpY2tlciA9IGZ1bmN0aW9uIChlbmFibGVkLCBvcHRzKSB7XHJcblx0XHRvcHRzID0gb3B0cyB8fCB7fTtcclxuXHRcdFRpbWUuc2V0X3BpY2tlcl9lbmFibGVkKCBlbmFibGVkICk7ICAgICAgICAgICAgICAgICAvLyBwZXJzaXN0IGluLW1lbW9yeSBmbGFnXHJcblx0XHRUaW1lLnVpX2FwcGx5X3BpY2tlcl9lbmFibGVkX3RvX2FsbCggZW5hYmxlZCApOyAgICAgLy8gc3luYyBhbGwgb3BlbiBpbnNwZWN0b3JzXHJcblx0XHRpZiAoIG9wdHMubWlycm9yX3NldHRpbmdzICE9PSBmYWxzZSApIHtcclxuXHRcdFx0VGltZS5taXJyb3Jfc2V0dGluZ3NfdG9nZ2xlKCBlbmFibGVkICk7ICAgICAgICAgICAvLyBtaXJyb3IgU2V0dGluZ3MgdG9nZ2xlIChubyAnY2hhbmdlJyBldmVudClcclxuXHRcdH1cclxuXHRcdGlmICggb3B0cy5yZWZyZXNoX3ByZXZpZXcgIT09IGZhbHNlICkge1xyXG5cdFx0XHRUaW1lLnN5bmNfcHJldmlld19hZnRlcl9mbGFnKCBlbmFibGVkICk7ICAgICAgICAgIC8vIHNhZmUgcHJldmlldyByZWZyZXNoXHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBHbG9iYWwgYmluZGVyOiBzZWxlY3QgdnMuIHRpbWUgcGlja2VyIHRvZ2dsZSAoT05FLVRJTUUsIHNoYXJlZCBieSBhbGwgdGltZS1iYXNlZCBwYWNrcylcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBCaW5kIG9uY2UgdG86XHJcblx0ICogIC0gaW5pdGlhbGl6ZSBhbGwgb3BlbiBJbnNwZWN0b3IgcGFuZWxzIHdpdGggdGhlIGN1cnJlbnQgZ2xvYmFsIGZsYWcsXHJcblx0ICogIC0gcmVhY3QgdG8gbmV3bHkgYWRkZWQgSW5zcGVjdG9yIHBhbmVscyB2aWEgTXV0YXRpb25PYnNlcnZlcixcclxuXHQgKiAgLSBwZXJzaXN0IGFuZCBicm9hZGNhc3QgY2hhbmdlcyB3aGVuIHRoZSBcIlNob3cgYXMgdGltZSBwaWNrZXJcIiBjaGVja2JveCB0b2dnbGVzLlxyXG5cdCAqL1xyXG5cdFRpbWUuZW5zdXJlX2dsb2JhbF90aW1lcGlja2VyX3RvZ2dsZV9iaW5kZXIgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG5cdFx0aWYgKFRpbWUuX190b2dnbGVCaW5kZXJCb3VuZCkgcmV0dXJuO1xyXG5cdFx0VGltZS5fX3RvZ2dsZUJpbmRlckJvdW5kID0gdHJ1ZTtcclxuXHJcblx0XHQvLyAxKSBJbml0IGFsbCBjdXJyZW50bHkgb3BlbiBwYW5lbHNcclxuXHRcdGZ1bmN0aW9uIGluaXRfYWxsX3BhbmVscygpIHtcclxuXHRcdFx0VGltZS51aV9hcHBseV9waWNrZXJfZW5hYmxlZF90b19hbGwoVGltZS5yZWFkX3BpY2tlcl9lbmFibGVkKCkpO1xyXG5cdFx0fVxyXG5cdFx0KGQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKVxyXG5cdFx0XHQ/IGQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRfYWxsX3BhbmVscylcclxuXHRcdFx0OiBpbml0X2FsbF9wYW5lbHMoKTtcclxuXHJcblx0XHQvLyAyKSBPYnNlcnZlIEluc3BlY3RvciBwYW5lbHMgdGhhdCBhcHBlYXIgbGF0ZXJcclxuXHRcdHRyeSB7XHJcblx0XHRcdHZhciBtbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRzKSB7XHJcblx0XHRcdFx0dmFyIGVuYWJsZWQgPSBUaW1lLnJlYWRfcGlja2VyX2VuYWJsZWQoKTtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG11dHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdHZhciBtID0gbXV0c1tpXTtcclxuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgbS5hZGRlZE5vZGVzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdHZhciBuID0gbS5hZGRlZE5vZGVzW2pdO1xyXG5cdFx0XHRcdFx0XHRpZiAoIW4gfHwgbi5ub2RlVHlwZSAhPT0gMSkgY29udGludWU7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAobi5tYXRjaGVzICYmIG4ubWF0Y2hlcygnLndwYmNfYmZiX19pbnNwZWN0b3JfdGltZXBpY2tlcicpKSB7XHJcblx0XHRcdFx0XHRcdFx0dHJ5IHsgVGltZS51aV9zZXRfcGlja2VyX3RvZ2dsZV9mb3JfcGFuZWwobiwgZW5hYmxlZCk7IH0gY2F0Y2ggKGUpIHt9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAobi5xdWVyeVNlbGVjdG9yKSB7XHJcblx0XHRcdFx0XHRcdFx0bi5xdWVyeVNlbGVjdG9yQWxsKCcud3BiY19iZmJfX2luc3BlY3Rvcl90aW1lcGlja2VyJykuZm9yRWFjaChmdW5jdGlvbiAocGFuZWwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRyeSB7IFRpbWUudWlfc2V0X3BpY2tlcl90b2dnbGVfZm9yX3BhbmVsKHBhbmVsLCBlbmFibGVkKTsgfSBjYXRjaCAoZSkge31cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdG1vLm9ic2VydmUoZC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuXHRcdFx0Ly8gT3B0aW9uYWwgcGF1c2UvcmVzdW1lIGhvb2tzIGlmIG90aGVyIG1vZHVsZXMgd2FudCB0byBzdXNwZW5kIG9ic2VydmVycyB0ZW1wb3JhcmlseTpcclxuXHRcdFx0dy5fX3dwYmNfdGltZXBpY2tlcl90b2dnbGVfbW9fcGF1c2UgID0gZnVuY3Rpb24oKXsgdHJ5IHsgbW8uZGlzY29ubmVjdCgpOyB9IGNhdGNoKGUpe30gfTtcclxuXHRcdFx0dy5fX3dwYmNfdGltZXBpY2tlcl90b2dnbGVfbW9fcmVzdW1lID0gZnVuY3Rpb24oKXtcclxuXHRcdFx0XHR0cnkgeyBtby5vYnNlcnZlKGQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7IH0gY2F0Y2goZSl7fVxyXG5cdFx0XHR9O1xyXG5cdFx0fSBjYXRjaCAoZSkge31cclxuXHJcblx0XHQvLyAzKSBDaGVja2JveCBoYW5kbGVyIChkZWxlZ2F0ZWQpXHJcblx0XHRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uIChldikge1xyXG5cdFx0XHR2YXIgdCA9IGV2LnRhcmdldDtcclxuXHRcdFx0aWYgKCF0IHx8ICF0LmNsYXNzTGlzdCB8fCAhdC5jbGFzc0xpc3QuY29udGFpbnMoJ2pzLXRvZ2dsZS10aW1lc2xvdC1waWNrZXInKSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0dmFyIGVuYWJsZWQgPSAhIXQuY2hlY2tlZDtcclxuXHRcdFx0VGltZS5zZXRfZ2xvYmFsX3RpbWVzbG90X3BpY2tlciggZW5hYmxlZCwgeyBzb3VyY2U6ICdpbnNwZWN0b3InIH0gKTtcclxuXHRcdH0pO1xyXG5cdH07XHJcblxyXG5cdC8vIEF1dG8tYmluZCBvbiBzY3JpcHQgbG9hZC5cclxuXHR0cnkgeyBUaW1lLmVuc3VyZV9nbG9iYWxfdGltZXBpY2tlcl90b2dnbGVfYmluZGVyKCk7IH0gY2F0Y2ggKGUpIHt9XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gQnVpbGRlciBjYW52YXMgcmVmcmVzaCBob29rcyAobW92ZWQgb3V0IG9mIGJmYi1idWlsZGVyLmpzKVxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIEJpbmQgcGF1c2UvcmVzdW1lIGhvb2tzIHRvIEJ1aWxkZXIgY2FudmFzIHJlZnJlc2ggZXZlbnRzLlxyXG5cdCAqXHJcblx0ICogV2h5IGhlcmU6XHJcblx0ICogLSBUaGlzIG1vZHVsZSBvd25zIHRoZSB0aW1lcGlja2VyLXRvZ2dsZSBNdXRhdGlvbk9ic2VydmVyIGFuZCB0aW1lIHNlbGVjdG9yIGluaXQuXHJcblx0ICogLSBCdWlsZGVyIHNob3VsZCBub3Qga25vdyBhYm91dCBwYWNrLXNwZWNpZmljIG9ic2VydmVycy5cclxuXHQgKlxyXG5cdCAqIFNhZmV0eTpcclxuXHQgKiAtIElkZW1wb3RlbnQgKGJpbmRzIG9uY2UpLlxyXG5cdCAqIC0gV2FpdHMgZm9yIHdwYmNfYmZiX2FwaS5yZWFkeS5cclxuXHQgKiAtIE5vIGhhcmQgZGVwZW5kZW5jeTogaWYgYnVpbGRlci9idXMvZXZlbnRzIGFyZSBhYnNlbnQsIGl0IHNpbGVudGx5IG5vLW9wcy5cclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxyXG5cdCAqL1xyXG5cdFRpbWUuZW5zdXJlX2J1aWxkZXJfY2FudmFzX3JlZnJlc2hfaG9va3MgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG5cdFx0aWYgKCBUaW1lLl9fYnVpbGRlcl9jYW52YXNfcmVmcmVzaF9ob29rc19ib3VuZCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0VGltZS5fX2J1aWxkZXJfY2FudmFzX3JlZnJlc2hfaG9va3NfYm91bmQgPSB0cnVlO1xyXG5cclxuXHRcdC8vIEJ1aWxkZXIgQVBJIG11c3QgZXhpc3QuXHJcblx0XHRpZiAoICF3LndwYmNfYmZiX2FwaSB8fCAhdy53cGJjX2JmYl9hcGkucmVhZHkgfHwgKHR5cGVvZiB3LndwYmNfYmZiX2FwaS5yZWFkeS50aGVuICE9PSAnZnVuY3Rpb24nKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHcud3BiY19iZmJfYXBpLnJlYWR5LnRoZW4oIGZ1bmN0aW9uIChidWlsZGVyKSB7XHJcblxyXG5cdFx0XHQvLyBCdWlsZGVyIG1pZ2h0IHJlc29sdmUgbnVsbCAodGltZW91dCkg4oCTIGp1c3QgaWdub3JlLlxyXG5cdFx0XHRpZiAoICFidWlsZGVyIHx8ICFidWlsZGVyLmJ1cyB8fCAodHlwZW9mIGJ1aWxkZXIuYnVzLm9uICE9PSAnZnVuY3Rpb24nKSApIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHZhciBFVlMgICAgICAgPSAody5XUEJDX0JGQl9Db3JlICYmIHcuV1BCQ19CRkJfQ29yZS5XUEJDX0JGQl9FdmVudHMpID8gdy5XUEJDX0JGQl9Db3JlLldQQkNfQkZCX0V2ZW50cyA6IHt9O1xyXG5cdFx0XHR2YXIgRVZfQkVGT1JFID0gRVZTLkNBTlZBU19SRUZSRVNIIHx8ICd3cGJjOmJmYjpjYW52YXMtcmVmcmVzaCc7XHJcblx0XHRcdHZhciBFVl9BRlRFUiAgPSBFVlMuQ0FOVkFTX1JFRlJFU0hFRCB8fCAnd3BiYzpiZmI6Y2FudmFzLXJlZnJlc2hlZCc7XHJcblxyXG5cdFx0XHQvLyBCRUZPUkUgcmVmcmVzaDogcGF1c2Ugb2JzZXJ2ZXJzIHRvIGF2b2lkIGxvb3BzIC8gZXh0cmEgd29yayB3aGlsZSBET00gaXMgYmVpbmcgcmVidWlsdC5cclxuXHRcdFx0YnVpbGRlci5idXMub24oIEVWX0JFRk9SRSwgZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAoIHR5cGVvZiB3Ll9fd3BiY19ydF9tb19wYXVzZSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfcnRfbW9fcGF1c2UoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmICggdHlwZW9mIHcuX193cGJjX3N0X21vX3BhdXNlID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0XHR3Ll9fd3BiY19zdF9tb19wYXVzZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYgKCB0eXBlb2Ygdy5fX3dwYmNfdGltZXBpY2tlcl90b2dnbGVfbW9fcGF1c2UgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3BhdXNlKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ICk7XHJcblxyXG5cdFx0XHQvLyBBRlRFUiByZWZyZXNoOiByZXN1bWUgYW5kIChpZiBuZWVkZWQpIHJlLWluaXQgdGltZXNlbGVjdG9yIHdpZGdldHMuXHJcblx0XHRcdGJ1aWxkZXIuYnVzLm9uKCBFVl9BRlRFUiwgZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAoIHR5cGVvZiB3Ll9fd3BiY19ydF9tb19yZXN1bWUgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3J0X21vX3Jlc3VtZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYgKCB0eXBlb2Ygdy5fX3dwYmNfc3RfbW9fcmVzdW1lID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0XHR3Ll9fd3BiY19zdF9tb19yZXN1bWUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmICggdHlwZW9mIHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3Jlc3VtZSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfdGltZXBpY2tlcl90b2dnbGVfbW9fcmVzdW1lKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBJZiB0aW1lLXNsb3QgcGlja2VyIGlzIGVuYWJsZWQgYW5kIGJ1aWxkZXIgaXMgaW4gcHJldmlldyBtb2RlLCByZS1pbml0IHRoZSB0aW1lIHNlbGVjdG9yIFVJLlxyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAoIGJ1aWxkZXIucHJldmlld19tb2RlICYmIHR5cGVvZiBUaW1lLnJlYWRfcGlja2VyX2VuYWJsZWQgPT09ICdmdW5jdGlvbicgJiYgVGltZS5yZWFkX3BpY2tlcl9lbmFibGVkKCkgKSB7XHJcblx0XHRcdFx0XHRcdGlmICggdHlwZW9mIFRpbWUuc2NoZWR1bGVfaW5pdF90aW1lc2VsZWN0b3IgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRcdFx0VGltZS5zY2hlZHVsZV9pbml0X3RpbWVzZWxlY3RvcigpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ICk7XHJcblxyXG5cdFx0fSApO1xyXG5cdH07XHJcblxyXG5cdC8vIENhbGwgb25jZSBvbiBsb2FkLlxyXG5cdHRyeSB7XHJcblx0XHRUaW1lLmVuc3VyZV9idWlsZGVyX2NhbnZhc19yZWZyZXNoX2hvb2tzKCk7XHJcblx0fSBjYXRjaCAoIGUgKSB7XHJcblx0fVxyXG5cclxuXHJcbn0pKHdpbmRvdywgZG9jdW1lbnQpO1xyXG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLFVBQVVB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 | |
| 730 | +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvX291dC9iZmItdGltZS11dGlscy5qcyIsIm5hbWVzIjpbInciLCJkIiwiQ29yZSIsIldQQkNfQkZCX0NvcmUiLCJUaW1lIiwiSU1hc2siLCJjb2VyY2VfdG9fYm9vbCIsInYiLCJzIiwidHJpbSIsInRvTG93ZXJDYXNlIiwicGFyc2VfaGhtbV8yNGgiLCJoaG1tIiwiTmFOIiwibSIsIlN0cmluZyIsIm1hdGNoIiwiSCIsIk51bWJlciIsIk0iLCJwYXJzZV9hbXBtX3RleHQiLCJ0eHQiLCJoMTIiLCJtbSIsImFwIiwidG9VcHBlckNhc2UiLCJoMjQiLCJwYXJzZV9taW51dGVzIiwibTIiLCJpc05hTiIsImZvcm1hdF9taW51dGVzXzI0aCIsIm1pbnV0ZXMiLCJNYXRoIiwiZmxvb3IiLCJISCIsIk1NIiwiZm9ybWF0X21pbnV0ZXNfYW1wbSIsIkgyNCIsImlzX2FtIiwiZXNjX2F0dHIiLCJyZXBsYWNlIiwiYXBwbHlfaW1hc2tfdG9faW5wdXQiLCJlbCIsIl9pbWFzayIsImRlc3Ryb3kiLCJlIiwibWFzayIsImJsb2NrcyIsIk1hc2tlZFJhbmdlIiwiZnJvbSIsInRvIiwibWF4TGVuZ3RoIiwibGF6eSIsImNsZWFyX2ltYXNrIiwiY29udmVydF9pbnB1dF9ub2RlX3RvX2Zvcm1hdCIsIm5vZGUiLCJ0b19mbXQiLCJ2YWx1ZV9taW51dGVzIiwicGFyZW50IiwicGFyZW50Tm9kZSIsImNscyIsImNsYXNzTmFtZSIsImlzX3N0YXJ0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJuZXdfZWwiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImFkZCIsInNldEF0dHJpYnV0ZSIsInZhbHVlIiwic3RlcCIsInJlcGxhY2VDaGlsZCIsInJlYnVpbGRfcm93X2lucHV0c190b19mb3JtYXQiLCJyb3ciLCJzX2VsIiwicXVlcnlTZWxlY3RvciIsImVfZWwiLCJzX20iLCJlX20iLCJzX25ldyIsImVfbmV3IiwicmVidWlsZF9hbGxfcm93c190b19mb3JtYXQiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImFwcGx5X2ltYXNrX2luX2NvbnRhaW5lcl8yNGgiLCJidWlsZF90aW1lX3Nsb3RzIiwic3RhcnRfbWludXRlcyIsImVuZF9taW51dGVzIiwic3RlcF9taW51dGVzIiwibGFiZWxfZm10Iiwib3V0IiwidCIsInQyIiwidjEiLCJ2MiIsImwxIiwibDIiLCJwdXNoIiwibGFiZWwiLCJzZWxlY3RlZCIsInJlYWRfcGlja2VyX2VuYWJsZWQiLCJfd3BiYyIsImdldF9vdGhlcl9wYXJhbSIsInNldF9waWNrZXJfZW5hYmxlZCIsImVuYWJsZWQiLCJzZXRfb3RoZXJfcGFyYW0iLCJ1aV9zZXRfcGlja2VyX3RvZ2dsZV9mb3JfcGFuZWwiLCJwYW5lbCIsImNoayIsImNoZWNrZWQiLCJza2luX3JvdyIsImhpZGRlbiIsInN0eWxlIiwiZGlzcGxheSIsInBoUm93IiwidWlfYXBwbHlfcGlja2VyX2VuYWJsZWRfdG9fYWxsIiwiYXBwbHlfcGlja2VyX3NraW5fdXJsIiwic2tpbl91cmwiLCJzdHlsZXNoZWV0IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsInJlbCIsIm1lZGlhIiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiYXBwZW5kQ2hpbGQiLCJzY2hlZHVsZV9pbml0X3RpbWVzZWxlY3RvciIsImFwcGx5X3BpY2tlcl9za2luX2Zyb21fc2VsZWN0Iiwic2VsZWN0X2NvbnRyb2wiLCJzZWxlY3RlZF9vcHRpb24iLCJvcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImdldEF0dHJpYnV0ZSIsImNsb3Nlc3QiLCJwaWNrZXJfdG9nZ2xlIiwidWlfc2V0X3BpY2tlcl9za2luX3ZhbHVlIiwic2tpbl92YWx1ZSIsIm9uX3BpY2tlcl9za2luX3NhdmVkIiwiYWNjZW50X2J1dHRvbiIsIndwYmNfYmZiX3RpbWVfcGlja2VyX3NraW5fY29udHJvbF9zYXZlZCIsInNjaGVkdWxlZCIsInRpZCIsIkRFTEFZIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInJ1biIsIndwYmNfaG9va19faW5pdF90aW1lc2VsZWN0b3IiLCJfX3dwYmNfcnRfbW9fcGF1c2UiLCJfX3dwYmNfc3RfbW9fcGF1c2UiLCJfX3dwYmNfcnRfbW9fcmVzdW1lIiwiX193cGJjX3N0X21vX3Jlc3VtZSIsIm1pcnJvcl9zZXR0aW5nc190b2dnbGUiLCJ3cGJjX2JmYl9fZGlzcGF0Y2hfZXZlbnRfc2FmZSIsImtleSIsInNvdXJjZSIsInN5bmNfcHJldmlld19hZnRlcl9mbGFnIiwid3BiY19ob29rX19kZXN0cm95X3RpbWVzZWxlY3RvciIsImRvY3VtZW50IiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVQcm9wZXJ0eSIsIndpbmRvdyIsIldQQkNfQkZCX1NldHRpbmdzIiwid2hlbl9idWlsZGVyX3JlYWR5IiwiYiIsInByZXZpZXdfbW9kZSIsInJlZnJlc2hfY2FudmFzIiwiaGFyZCIsInJlYnVpbGQiLCJyZWluaXQiLCJyZXN0b3JlX3NlbGVjdGlvbiIsInJlc3RvcmVfc2Nyb2xsIiwic2lsZW50X2luc3BlY3RvciIsInJlbmRlcl9wcmV2aWV3X2FsbCIsInNldF9nbG9iYWxfdGltZXNsb3RfcGlja2VyIiwib3B0cyIsIm1pcnJvcl9zZXR0aW5ncyIsInJlZnJlc2hfcHJldmlldyIsImVuc3VyZV9nbG9iYWxfdGltZXBpY2tlcl90b2dnbGVfYmluZGVyIiwiX190b2dnbGVCaW5kZXJCb3VuZCIsImluaXRfYWxsX3BhbmVscyIsInJlYWR5U3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwibW8iLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0cyIsImkiLCJsZW5ndGgiLCJqIiwiYWRkZWROb2RlcyIsIm4iLCJub2RlVHlwZSIsIm1hdGNoZXMiLCJvYnNlcnZlIiwiYm9keSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJfX3dwYmNfdGltZXBpY2tlcl90b2dnbGVfbW9fcGF1c2UiLCJkaXNjb25uZWN0IiwiX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3Jlc3VtZSIsImV2IiwidGFyZ2V0IiwialF1ZXJ5Iiwib2ZmIiwib24iLCJlbnN1cmVfYnVpbGRlcl9jYW52YXNfcmVmcmVzaF9ob29rcyIsIl9fYnVpbGRlcl9jYW52YXNfcmVmcmVzaF9ob29rc19ib3VuZCIsIndwYmNfYmZiX2FwaSIsInJlYWR5IiwidGhlbiIsImJ1aWxkZXIiLCJidXMiLCJFVlMiLCJXUEJDX0JGQl9FdmVudHMiLCJFVl9CRUZPUkUiLCJDQU5WQVNfUkVGUkVTSCIsIkVWX0FGVEVSIiwiQ0FOVkFTX1JFRlJFU0hFRCJdLCJzb3VyY2VzIjpbImluY2x1ZGVzL3BhZ2UtZm9ybS1idWlsZGVyL19zcmMvYmZiLXRpbWUtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFdQQkMgQkZCIENvcmU6IFRpbWUgVXRpbGl0aWVzXHJcbiAqXHJcbiAqIE9uZSBwbGFjZSBmb3IgYWxsIHRpbWUgcGFyc2luZy9mb3JtYXR0aW5nL21hc2tpbmcgaGVscGVycyArIHNtYWxsIFVJIGhlbHBlcnMgdXNlZCBieSB0aW1lLWJhc2VkIHBhY2tzLlxyXG4gKlxyXG4gKiAtIFB1cmUgaGVscGVycyAocGFyc2UvZm9ybWF0IG1pbnV0ZXMsIEFNL1BNIGNvbnZlcnNpb24pXHJcbiAqIC0gaU1hc2sgaW50ZWdyYXRpb24gZm9yIFwiSEg6TU1cIiBpbnB1dHNcclxuICogLSBJbnB1dC1ub2RlIGNvbnZlcnNpb24gKHR5cGU9dGltZSA8LT4gbWFza2VkIHRleHQpXHJcbiAqIC0gU21hbGwgVUkgaGVscGVycyBmb3IgZ2xvYmFsIFwidGltZS1zbG90IHBpY2tlclwiIHRvZ2dsZSAocGxhY2Vob2xkZXIgcm93LCBjaGVja2JveCBzeW5jKVxyXG4gKiAtIERlYm91bmNlZCBpbml0IGZvciBleHRlcm5hbCBcInRpbWUgc2VsZWN0b3JcIiAod3BiY19ob29rX19pbml0X3RpbWVzZWxlY3RvcilcclxuICpcclxuICogQHBhY2thZ2UgICBCb29raW5nIENhbGVuZGFyXHJcbiAqIEBhdXRob3IgICAgd3BkZXZlbG9wXHJcbiAqIEBzaW5jZSAgICAgMTEuMC4wXHJcbiAqIEB2ZXJzaW9uICAgMS4wLjBcclxuICogQG1vZGlmaWVkOiAyMDI1LTEwLTMxIDEyOjMyXHJcbiAqXHJcbiAqIC4uL2luY2x1ZGVzL3BhZ2UtZm9ybS1idWlsZGVyL19vdXQvYmZiLXRpbWUtdXRpbHMuanNcclxuICovXHJcblxyXG4vKiBnbG9iYWwgd2luZG93LCBkb2N1bWVudCAqL1xyXG4oZnVuY3Rpb24gKHcsIGQpIHtcclxuXHQndXNlIHN0cmljdCc7XHJcblxyXG5cdHZhciBDb3JlID0gdy5XUEJDX0JGQl9Db3JlIHx8ICh3LldQQkNfQkZCX0NvcmUgPSB7fSk7XHJcblx0dmFyIFRpbWUgPSBDb3JlLlRpbWUgfHwgKENvcmUuVGltZSA9IHt9KTtcclxuXHJcblx0dmFyIElNYXNrID0gdy5JTWFzayB8fCBudWxsO1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIEJhc2ljIGhlbHBlcnNcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBDb2VyY2UgbWl4ZWQgdmFsdWVzIHRvIGJvb2xlYW4uXHJcblx0ICogQWNjZXB0cyBib29sZWFucywgbnVtYmVycywgYW5kIGNvbW1vbiBzdHJpbmdzOiBcIm9uXCIvXCJvZmZcIiwgXCJ0cnVlXCIvXCJmYWxzZVwiLCBcIjFcIi9cIjBcIiwgXCJ5ZXNcIi9cIm5vXCIuXHJcblx0ICogQHBhcmFtIHsqfSB2XHJcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRUaW1lLmNvZXJjZV90b19ib29sID0gZnVuY3Rpb24gKHYpIHtcclxuXHRcdGlmICh0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdjtcclxuXHRcdGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHJldHVybiB2ICE9PSAwO1xyXG5cdFx0aWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHR2YXIgcyA9IHYudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdGlmIChzID09PSAnb24nIHx8IHMgPT09ICd0cnVlJyB8fCBzID09PSAnMScgfHwgcyA9PT0gJ3llcycpIHJldHVybiB0cnVlO1xyXG5cdFx0XHRpZiAocyA9PT0gJ29mZicgfHwgcyA9PT0gJ2ZhbHNlJyB8fCBzID09PSAnMCcgfHwgcyA9PT0gJ25vJyB8fCBzID09PSAnJykgcmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICEhdjtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXJzZSBcIkhIOk1NXCIgMjRoIC0+IG1pbnV0ZXMgc2luY2UgMDA6MDAuIFJldHVybnMgTmFOIG9uIGludmFsaWQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGhobW1cclxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9XHJcblx0ICovXHJcblx0VGltZS5wYXJzZV9oaG1tXzI0aCA9IGZ1bmN0aW9uIChoaG1tKSB7XHJcblx0XHRpZiAoIWhobW0pIHJldHVybiBOYU47XHJcblx0XHR2YXIgbSA9IFN0cmluZyhoaG1tKS50cmltKCkubWF0Y2goL14oXFxkezEsMn0pXFxzKjpcXHMqKFxcZHsyfSkkLyk7XHJcblx0XHRpZiAoIW0pIHJldHVybiBOYU47XHJcblx0XHR2YXIgSCA9IE51bWJlcihtWzFdKSwgTSA9IE51bWJlcihtWzJdKTtcclxuXHRcdGlmIChIIDwgMCB8fCBIID4gMjMgfHwgTSA8IDAgfHwgTSA+IDU5KSByZXR1cm4gTmFOO1xyXG5cdFx0cmV0dXJuIEggKiA2MCArIE07XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2UgXCJoOk1NIEFNL1BNXCIgLT4gbWludXRlcyBzaW5jZSAwMDowMC4gUmV0dXJucyBOYU4gb24gaW52YWxpZC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdHh0XHJcblx0ICogQHJldHVybiB7bnVtYmVyfVxyXG5cdCAqL1xyXG5cdFRpbWUucGFyc2VfYW1wbV90ZXh0ID0gZnVuY3Rpb24gKHR4dCkge1xyXG5cdFx0aWYgKCF0eHQpIHJldHVybiBOYU47XHJcblx0XHR2YXIgbSA9IFN0cmluZyh0eHQpLnRyaW0oKS5tYXRjaCgvXihcXGR7MSwyfSlcXHMqOlxccyooXFxkezJ9KVxccyooW0FhUHBdW01tXSkkLyk7XHJcblx0XHRpZiAoIW0pIHJldHVybiBOYU47XHJcblx0XHR2YXIgaDEyID0gTnVtYmVyKG1bMV0pLCBtbSA9IE51bWJlcihtWzJdKSwgYXAgPSBTdHJpbmcobVszXSkudG9VcHBlckNhc2UoKTtcclxuXHRcdGlmIChoMTIgPCAxIHx8IGgxMiA+IDEyIHx8IG1tIDwgMCB8fCBtbSA+IDU5KSByZXR1cm4gTmFOO1xyXG5cdFx0dmFyIGgyNCA9IChoMTIgJSAxMikgKyAoYXAgPT09ICdQTScgPyAxMiA6IDApO1xyXG5cdFx0cmV0dXJuIGgyNCAqIDYwICsgbW07XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogVHJ5IDI0aCBcIkhIOk1NXCIgZmlyc3QsIGZhbGwgYmFjayB0byBBTS9QTSB0ZXh0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB2XHJcblx0ICogQHJldHVybiB7bnVtYmVyfVxyXG5cdCAqL1xyXG5cdFRpbWUucGFyc2VfbWludXRlcyA9IGZ1bmN0aW9uICh2KSB7XHJcblx0XHR2YXIgcyA9IFN0cmluZyh2IHx8ICcnKS50cmltKCk7XHJcblx0XHR2YXIgbTIgPSBUaW1lLnBhcnNlX2hobW1fMjRoKHMpO1xyXG5cdFx0cmV0dXJuIGlzTmFOKG0yKSA/IFRpbWUucGFyc2VfYW1wbV90ZXh0KHMpIDogbTI7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRm9ybWF0IG1pbnV0ZXMgLT4gXCJISDpNTVwiIDI0aC5cclxuXHQgKiBAcGFyYW0ge251bWJlcn0gbWludXRlc1xyXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cclxuXHQgKi9cclxuXHRUaW1lLmZvcm1hdF9taW51dGVzXzI0aCA9IGZ1bmN0aW9uIChtaW51dGVzKSB7XHJcblx0XHR2YXIgSCA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKSAlIDI0O1xyXG5cdFx0dmFyIE0gPSBtaW51dGVzICUgNjA7XHJcblx0XHR2YXIgSEggPSAoSCA8IDEwID8gJzAnICsgSCA6ICcnICsgSCk7XHJcblx0XHR2YXIgTU0gPSAoTSA8IDEwID8gJzAnICsgTSA6ICcnICsgTSk7XHJcblx0XHRyZXR1cm4gSEggKyAnOicgKyBNTTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBGb3JtYXQgbWludXRlcyAtPiBcImg6TU0gQU0vUE1cIi5cclxuXHQgKiBAcGFyYW0ge251bWJlcn0gbWludXRlc1xyXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cclxuXHQgKi9cclxuXHRUaW1lLmZvcm1hdF9taW51dGVzX2FtcG0gPSBmdW5jdGlvbiAobWludXRlcykge1xyXG5cdFx0dmFyIEgyNCA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKSAlIDI0O1xyXG5cdFx0dmFyIE0gICA9IG1pbnV0ZXMgJSA2MDtcclxuXHRcdHZhciBpc19hbSA9IChIMjQgPCAxMik7XHJcblx0XHR2YXIgaDEyID0gSDI0ICUgMTI7XHJcblx0XHRpZiAoaDEyID09PSAwKSBoMTIgPSAxMjtcclxuXHRcdHZhciBNTSA9IChNIDwgMTAgPyAnMCcgKyBNIDogJycgKyBNKTtcclxuXHRcdHJldHVybiBoMTIgKyAnOicgKyBNTSArICcgJyArIChpc19hbSA/ICdBTScgOiAnUE0nKTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBFc2NhcGUgYXR0cmlidXRlIHRleHQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHZcclxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XHJcblx0ICovXHJcblx0VGltZS5lc2NfYXR0ciA9IGZ1bmN0aW9uICh2KSB7XHJcblx0XHRyZXR1cm4gU3RyaW5nKHYpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvXCIvZywgJyZxdW90OycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIGlNYXNrIGhlbHBlcnMgKHVzZWQgYnkgMjRoIHRleHQgaW5wdXRzKVxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIEFwcGx5IGlNYXNrIFwiSEg6TU1cIiB0byBpbnB1dC5cclxuXHQgKiBAcGFyYW0ge0hUTUxJbnB1dEVsZW1lbnR9IGVsXHJcblx0ICovXHJcblx0VGltZS5hcHBseV9pbWFza190b19pbnB1dCA9IGZ1bmN0aW9uIChlbCkge1xyXG5cdFx0aWYgKCFJTWFzayB8fCAhZWwpIHJldHVybjtcclxuXHRcdGlmIChlbC5faW1hc2spIHtcclxuXHRcdFx0dHJ5IHsgZWwuX2ltYXNrLmRlc3Ryb3koKTsgfSBjYXRjaCAoZSkge31cclxuXHRcdFx0ZWwuX2ltYXNrID0gbnVsbDtcclxuXHRcdH1cclxuXHRcdGVsLl9pbWFzayA9IElNYXNrKGVsLCB7XHJcblx0XHRcdG1hc2s6ICdISDpNTScsXHJcblx0XHRcdGJsb2Nrczoge1xyXG5cdFx0XHRcdEhIOiB7IG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLCBmcm9tOiAwLCB0bzogMjMsIG1heExlbmd0aDogMiB9LFxyXG5cdFx0XHRcdE1NOiB7IG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLCBmcm9tOiAwLCB0bzogNTksIG1heExlbmd0aDogMiB9XHJcblx0XHRcdH0sXHJcblx0XHRcdGxhenk6IGZhbHNlXHJcblx0XHR9KTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBEZXN0cm95IGlNYXNrIGluc3RhbmNlIGlmIHByZXNlbnQuXHJcblx0ICogQHBhcmFtIHtIVE1MSW5wdXRFbGVtZW50fSBlbFxyXG5cdCAqL1xyXG5cdFRpbWUuY2xlYXJfaW1hc2sgPSBmdW5jdGlvbiAoZWwpIHtcclxuXHRcdGlmIChlbCAmJiBlbC5faW1hc2spIHtcclxuXHRcdFx0dHJ5IHsgZWwuX2ltYXNrLmRlc3Ryb3koKTsgfSBjYXRjaCAoZSkge31cclxuXHRcdFx0ZWwuX2ltYXNrID0gbnVsbDtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIE5vZGUgY29udmVyc2lvbjogdHlwZT10aW1lIDwtPiBtYXNrZWQgdGV4dFxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnZlcnQgYSBzaW5nbGUgc3RhcnQvZW5kIGlucHV0IG5vZGUgdG8gJzI0aCcgKG1hc2tlZCB0ZXh0KSBvciAnYW1wbScgKHR5cGU9XCJ0aW1lXCIpLlxyXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGVcclxuXHQgKiBAcGFyYW0geycyNGgnfCdhbXBtJ30gdG9fZm10XHJcblx0ICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlX21pbnV0ZXNcclxuXHQgKiBAcmV0dXJuIHtIVE1MSW5wdXRFbGVtZW50fVxyXG5cdCAqL1xyXG5cdFRpbWUuY29udmVydF9pbnB1dF9ub2RlX3RvX2Zvcm1hdCA9IGZ1bmN0aW9uIChub2RlLCB0b19mbXQsIHZhbHVlX21pbnV0ZXMpIHtcclxuXHRcdHZhciBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGU7XHJcblx0XHR2YXIgY2xzICAgID0gbm9kZS5jbGFzc05hbWU7XHJcblx0XHR2YXIgaXNfc3RhcnQgPSBub2RlLmNsYXNzTGlzdC5jb250YWlucygnd3BiY19iZmJfX29wdC1zdGFydCcpO1xyXG5cclxuXHRcdHZhciBuZXdfZWw7XHJcblx0XHRpZiAodG9fZm10ID09PSAnMjRoJykge1xyXG5cdFx0XHRuZXdfZWwgICAgICAgICAgID0gZC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG5cdFx0XHRuZXdfZWwudHlwZSAgICAgID0gJ3RleHQnO1xyXG5cdFx0XHRuZXdfZWwuY2xhc3NOYW1lID0gY2xzLnJlcGxhY2UoL1xcYmpzLXJ0LXN0YXJ0LXRpbWVcXGJ8XFxianMtcnQtZW5kLXRpbWVcXGIvZywgJycpLnRyaW0oKTtcclxuXHRcdFx0bmV3X2VsLmNsYXNzTGlzdC5hZGQoJ2pzLXJ0LW1hc2snKTtcclxuXHRcdFx0bmV3X2VsLnNldEF0dHJpYnV0ZSgnZGF0YS1tYXNrLWtpbmQnLCAnMjRoJyk7XHJcblx0XHRcdG5ld19lbC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJ0hIOk1NJyk7XHJcblx0XHRcdG5ld19lbC52YWx1ZSA9IGlzTmFOKHZhbHVlX21pbnV0ZXMpID8gJycgOiBUaW1lLmZvcm1hdF9taW51dGVzXzI0aCh2YWx1ZV9taW51dGVzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG5ld19lbCAgICAgICAgICAgPSBkLmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcblx0XHRcdG5ld19lbC50eXBlICAgICAgPSAndGltZSc7XHJcblx0XHRcdG5ld19lbC5zdGVwICAgICAgPSAnMzAwJztcclxuXHRcdFx0bmV3X2VsLmNsYXNzTmFtZSA9IGNscy5yZXBsYWNlKC9cXGJqcy1ydC1tYXNrXFxiL2csICcnKS50cmltKCk7XHJcblx0XHRcdG5ld19lbC5jbGFzc0xpc3QuYWRkKGlzX3N0YXJ0ID8gJ2pzLXJ0LXN0YXJ0LXRpbWUnIDogJ2pzLXJ0LWVuZC10aW1lJyk7XHJcblx0XHRcdC8vIDxpbnB1dCB0eXBlPVwidGltZVwiPiBleHBlY3RzIFwiSEg6TU1cIiAyNGggc3RyaW5nXHJcblx0XHRcdG5ld19lbC52YWx1ZSA9IGlzTmFOKHZhbHVlX21pbnV0ZXMpID8gJycgOiBUaW1lLmZvcm1hdF9taW51dGVzXzI0aCh2YWx1ZV9taW51dGVzKTtcclxuXHRcdH1cclxuXHJcblx0XHRUaW1lLmNsZWFyX2ltYXNrKG5vZGUpO1xyXG5cdFx0cGFyZW50LnJlcGxhY2VDaGlsZChuZXdfZWwsIG5vZGUpO1xyXG5cdFx0cmV0dXJuIG5ld19lbDtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBSZWJ1aWxkIGJvdGggc3RhcnQvZW5kIGlucHV0cyBpbnNpZGUgYSByb3cgdG8gdGFyZ2V0IGZvcm1hdC5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSByb3dcclxuXHQgKiBAcGFyYW0geycyNGgnfCdhbXBtJ30gdG9fZm10XHJcblx0ICovXHJcblx0VGltZS5yZWJ1aWxkX3Jvd19pbnB1dHNfdG9fZm9ybWF0ID0gZnVuY3Rpb24gKHJvdywgdG9fZm10KSB7XHJcblx0XHR2YXIgc19lbCA9IHJvdy5xdWVyeVNlbGVjdG9yKCcud3BiY19iZmJfX29wdC1zdGFydCcpO1xyXG5cdFx0dmFyIGVfZWwgPSByb3cucXVlcnlTZWxlY3RvcignLndwYmNfYmZiX19vcHQtZW5kJyk7XHJcblx0XHRpZiAoIXNfZWwgfHwgIWVfZWwpIHJldHVybjtcclxuXHJcblx0XHR2YXIgc19tID0gVGltZS5wYXJzZV9taW51dGVzKHNfZWwudmFsdWUpO1xyXG5cdFx0dmFyIGVfbSA9IFRpbWUucGFyc2VfbWludXRlcyhlX2VsLnZhbHVlKTtcclxuXHJcblx0XHR2YXIgc19uZXcgPSBUaW1lLmNvbnZlcnRfaW5wdXRfbm9kZV90b19mb3JtYXQoc19lbCwgdG9fZm10LCBzX20pO1xyXG5cdFx0dmFyIGVfbmV3ID0gVGltZS5jb252ZXJ0X2lucHV0X25vZGVfdG9fZm9ybWF0KGVfZWwsIHRvX2ZtdCwgZV9tKTtcclxuXHJcblx0XHRpZiAodG9fZm10ID09PSAnMjRoJykge1xyXG5cdFx0XHRUaW1lLmFwcGx5X2ltYXNrX3RvX2lucHV0KHNfbmV3KTtcclxuXHRcdFx0VGltZS5hcHBseV9pbWFza190b19pbnB1dChlX25ldyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRUaW1lLmNsZWFyX2ltYXNrKHNfbmV3KTtcclxuXHRcdFx0VGltZS5jbGVhcl9pbWFzayhlX25ldyk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVidWlsZCBhbGwgcm93cyB1bmRlciBjb250YWluZXIgdG8gdGFyZ2V0IGZvcm1hdC5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBjb250YWluZXJcclxuXHQgKiBAcGFyYW0geycyNGgnfCdhbXBtJ30gdG9fZm10XHJcblx0ICovXHJcblx0VGltZS5yZWJ1aWxkX2FsbF9yb3dzX3RvX2Zvcm1hdCA9IGZ1bmN0aW9uIChjb250YWluZXIsIHRvX2ZtdCkge1xyXG5cdFx0aWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHRcdGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcud3BiY19iZmJfX29wdGlvbnNfcm93JykuZm9yRWFjaChmdW5jdGlvbiAocm93KSB7XHJcblx0XHRcdFRpbWUucmVidWlsZF9yb3dfaW5wdXRzX3RvX2Zvcm1hdChyb3csIHRvX2ZtdCk7XHJcblx0XHR9KTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBBcHBseSBpTWFzayB0byBhbGwgMjRoLW1hc2tlZCBpbnB1dHMgd2l0aGluIGNvbnRhaW5lci5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBjb250YWluZXJcclxuXHQgKi9cclxuXHRUaW1lLmFwcGx5X2ltYXNrX2luX2NvbnRhaW5lcl8yNGggPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XHJcblx0XHRpZiAoICFJTWFzayB8fCAhY29udGFpbmVyICkgcmV0dXJuO1xyXG5cdFx0Y29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoICdpbnB1dFtkYXRhLW1hc2sta2luZD1cIjI0aFwiXScgKS5mb3JFYWNoKCBmdW5jdGlvbiAoZWwpIHtcclxuXHRcdFx0VGltZS5hcHBseV9pbWFza190b19pbnB1dCggZWwgKTtcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIFNsb3QgZ2VuZXJhdGlvblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIEJ1aWxkIHNsb3RzOiBbe2xhYmVsLCB2YWx1ZSwgc2VsZWN0ZWQ6ZmFsc2V9LCAuLi5dXHJcblx0ICogTm90ZTogZ2VuZXJhdGlvbiBleHBlY3RzIGVuZCA+IHN0YXJ0LiAoT3Zlcm5pZ2h0IHJhbmdlcyBhcmUgZW50ZXJlZCBtYW51YWxseSB2aWEgZWRpdG9yLilcclxuXHQgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRfbWludXRlc1xyXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBlbmRfbWludXRlc1xyXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwX21pbnV0ZXNcclxuXHQgKiBAcGFyYW0geycyNGgnfCdhbXBtJ30gbGFiZWxfZm10XHJcblx0ICogQHJldHVybiB7QXJyYXk8e2xhYmVsOnN0cmluZyx2YWx1ZTpzdHJpbmcsc2VsZWN0ZWQ6Ym9vbGVhbn0+fVxyXG5cdCAqL1xyXG5cdFRpbWUuYnVpbGRfdGltZV9zbG90cyA9IGZ1bmN0aW9uIChzdGFydF9taW51dGVzLCBlbmRfbWludXRlcywgc3RlcF9taW51dGVzLCBsYWJlbF9mbXQpIHtcclxuXHRcdGlmIChpc05hTihzdGFydF9taW51dGVzKSB8fCBpc05hTihlbmRfbWludXRlcykgfHwgaXNOYU4oc3RlcF9taW51dGVzKSkgcmV0dXJuIFtdO1xyXG5cdFx0aWYgKGVuZF9taW51dGVzIDw9IHN0YXJ0X21pbnV0ZXMgfHwgc3RlcF9taW51dGVzIDw9IDApIHJldHVybiBbXTtcclxuXHRcdHZhciBvdXQgPSBbXTtcclxuXHRcdGZvciAodmFyIHQgPSBzdGFydF9taW51dGVzOyAodCArIHN0ZXBfbWludXRlcykgPD0gZW5kX21pbnV0ZXM7IHQgKz0gc3RlcF9taW51dGVzKSB7XHJcblx0XHRcdHZhciB0MiAgPSB0ICsgc3RlcF9taW51dGVzO1xyXG5cdFx0XHR2YXIgdjEgID0gVGltZS5mb3JtYXRfbWludXRlc18yNGgodCk7XHJcblx0XHRcdHZhciB2MiAgPSBUaW1lLmZvcm1hdF9taW51dGVzXzI0aCh0Mik7XHJcblx0XHRcdHZhciBsMSAgPSAobGFiZWxfZm10ID09PSAnMjRoJykgPyB2MSA6IFRpbWUuZm9ybWF0X21pbnV0ZXNfYW1wbSh0KTtcclxuXHRcdFx0dmFyIGwyICA9IChsYWJlbF9mbXQgPT09ICcyNGgnKSA/IHYyIDogVGltZS5mb3JtYXRfbWludXRlc19hbXBtKHQyKTtcclxuXHRcdFx0b3V0LnB1c2goeyBsYWJlbDogbDEgKyAnIC0gJyArIGwyLCB2YWx1ZTogdjEgKyAnIC0gJyArIHYyLCBzZWxlY3RlZDogZmFsc2UgfSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gb3V0O1xyXG5cdH07XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gR2xvYmFsIFwidGltZS1zbG90IHBpY2tlclwiIGZsYWcgaGVscGVyc1xyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlYWQgZ2xvYmFsIHRpbWUtc2xvdCBwaWNrZXIgZmxhZyAoc2F2ZWQgdmlhIF93cGJjIG90aGVyIHBhcmFtcykuXHJcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRUaW1lLnJlYWRfcGlja2VyX2VuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAoISh3Ll93cGJjICYmIHR5cGVvZiB3Ll93cGJjLmdldF9vdGhlcl9wYXJhbSA9PT0gJ2Z1bmN0aW9uJykpIHJldHVybiBmYWxzZTtcclxuXHRcdFx0cmV0dXJuIFRpbWUuY29lcmNlX3RvX2Jvb2wody5fd3BiYy5nZXRfb3RoZXJfcGFyYW0oJ2lzX2VuYWJsZWRfYm9va2luZ190aW1lc2xvdF9waWNrZXInKSk7XHJcblx0XHR9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBlcnNpc3QgZ2xvYmFsIHRpbWUtc2xvdCBwaWNrZXIgZmxhZy5cclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWRcclxuXHQgKi9cclxuXHRUaW1lLnNldF9waWNrZXJfZW5hYmxlZCA9IGZ1bmN0aW9uIChlbmFibGVkKSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAody5fd3BiYyAmJiB0eXBlb2Ygdy5fd3BiYy5zZXRfb3RoZXJfcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHR3Ll93cGJjLnNldF9vdGhlcl9wYXJhbSgnaXNfZW5hYmxlZF9ib29raW5nX3RpbWVzbG90X3BpY2tlcicsICEhZW5hYmxlZCk7XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGUpIHt9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRvZ2dsZSArIGhpZGUvc2hvdyBwbGFjZWhvbGRlciByb3cgd2l0aGluIGEgc2luZ2xlIEluc3BlY3RvciBwYW5lbC5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwYW5lbFxyXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZFxyXG5cdCAqL1xyXG5cdFRpbWUudWlfc2V0X3BpY2tlcl90b2dnbGVfZm9yX3BhbmVsID0gZnVuY3Rpb24gKHBhbmVsLCBlbmFibGVkKSB7XG5cdFx0aWYgKCFwYW5lbCkgcmV0dXJuO1xuXHRcdHZhciBjaGsgPSBwYW5lbC5xdWVyeVNlbGVjdG9yKCcuanMtdG9nZ2xlLXRpbWVzbG90LXBpY2tlcicpO1xuXHRcdGlmIChjaGspIGNoay5jaGVja2VkID0gISFlbmFibGVkO1xuXG5cdFx0dmFyIHNraW5fcm93ID0gcGFuZWwucXVlcnlTZWxlY3RvcignLmpzLXRpbWUtcGlja2VyLXNraW4tcm93Jyk7XG5cdFx0aWYgKHNraW5fcm93KSB7XG5cdFx0XHRza2luX3Jvdy5oaWRkZW4gPSAhZW5hYmxlZDtcblx0XHRcdHNraW5fcm93LnN0eWxlLmRpc3BsYXkgPSBlbmFibGVkID8gJycgOiAnbm9uZSc7XG5cdFx0XHRza2luX3Jvdy5zZXRBdHRyaWJ1dGUoICdhcmlhLWhpZGRlbicsIGVuYWJsZWQgPyAnZmFsc2UnIDogJ3RydWUnICk7XG5cdFx0fVxuXG5cdFx0dmFyIHBoUm93ID0gcGFuZWwucXVlcnlTZWxlY3RvcignLmpzLXBsYWNlaG9sZGVyLXJvdycpO1xuXHRcdGlmIChwaFJvdykge1xyXG5cdFx0XHRpZiAoZW5hYmxlZCkgeyBwaFJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyBwaFJvdy5oaWRkZW4gPSB0cnVlOyB9XHJcblx0XHRcdGVsc2UgeyBwaFJvdy5zdHlsZS5kaXNwbGF5ID0gJyc7IHBoUm93LmhpZGRlbiA9IGZhbHNlOyB9XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogQXBwbHkgcGlja2VyIGZsYWcgdG8gYWxsIG9wZW4gVGltZSBpbnNwZWN0b3JzLlxyXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZFxyXG5cdCAqL1xyXG5cdFRpbWUudWlfYXBwbHlfcGlja2VyX2VuYWJsZWRfdG9fYWxsID0gZnVuY3Rpb24gKGVuYWJsZWQpIHtcblx0XHRkLnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2luc3BlY3Rvcl90aW1lcGlja2VyJyApLmZvckVhY2goIGZ1bmN0aW9uIChwYW5lbCkge1xyXG5cdFx0XHQvLyBTZXQgdG9nZ2xlICsgaGlkZS9zaG93IHBsYWNlaG9sZGVyIHJvdyB3aXRoaW4gYSBzaW5nbGUgSW5zcGVjdG9yIHBhbmVsLlxyXG5cdFx0XHRUaW1lLnVpX3NldF9waWNrZXJfdG9nZ2xlX2Zvcl9wYW5lbCggcGFuZWwsIGVuYWJsZWQgKTtcclxuXHRcdH0gKTtcclxuXHR9O1xuXG5cdC8qKlxuXHQgKiBBcHBseSBhIHRpbWUtcGlja2VyIHNraW4gVVJMIGRpcmVjdGx5IHRvIHRoZSBCdWlsZGVyIGRvY3VtZW50LlxuXHQgKlxuXHQgKiBVcGRhdGluZyB0aGUgZXhpc3RpbmcgbGluayBhdm9pZHMgYSBuby1zdHlsZXMgaW50ZXJ2YWwuIElmIGFub3RoZXJcblx0ICogaW50ZWdyYXRpb24gb21pdHRlZCB0aGUgbGluaywgY3JlYXRlIGl0IHNvIEluc3BlY3RvciBjaGFuZ2VzIHN0aWxsXG5cdCAqIHByb2R1Y2UgYW4gaW1tZWRpYXRlIENhbnZhcyBwcmV2aWV3LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc2tpbl91cmwgUHVibGljIHRpbWUtcGlja2VyIHNraW4gVVJMLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIGEgc3R5bGVzaGVldCBVUkwgd2FzIGFwcGxpZWQuXG5cdCAqL1xuXHRUaW1lLmFwcGx5X3BpY2tlcl9za2luX3VybCA9IGZ1bmN0aW9uIChza2luX3VybCkge1xuXHRcdGlmICggISBza2luX3VybCApIHJldHVybiBmYWxzZTtcblxuXHRcdHZhciBzdHlsZXNoZWV0ID0gZC5nZXRFbGVtZW50QnlJZCggJ3dwYmMtdGltZV9waWNrZXItc2tpbi1jc3MnICk7XG5cdFx0aWYgKCAhIHN0eWxlc2hlZXQgKSB7XG5cdFx0XHRzdHlsZXNoZWV0ID0gZC5jcmVhdGVFbGVtZW50KCAnbGluaycgKTtcblx0XHRcdHN0eWxlc2hlZXQuaWQgPSAnd3BiYy10aW1lX3BpY2tlci1za2luLWNzcyc7XG5cdFx0XHRzdHlsZXNoZWV0LnJlbCA9ICdzdHlsZXNoZWV0Jztcblx0XHRcdHN0eWxlc2hlZXQudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cdFx0XHRzdHlsZXNoZWV0Lm1lZGlhID0gJ3NjcmVlbic7XG5cdFx0XHQoIGQuaGVhZCB8fCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAnaGVhZCcgKVswXSApLmFwcGVuZENoaWxkKCBzdHlsZXNoZWV0ICk7XG5cdFx0fVxuXG5cdFx0c3R5bGVzaGVldC5zZXRBdHRyaWJ1dGUoICdocmVmJywgU3RyaW5nKCBza2luX3VybCApICk7XG5cdFx0aWYgKCBUaW1lLnJlYWRfcGlja2VyX2VuYWJsZWQoKSApIHtcblx0XHRcdFRpbWUuc2V0X3BpY2tlcl9lbmFibGVkKCB0cnVlICk7XG5cdFx0XHRUaW1lLnNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH07XG5cblx0LyoqXG5cdCAqIEFwcGx5IGEgc2VsZWN0ZWQgdGltZS1waWNrZXIgc2tpbiB0byB0aGUgQnVpbGRlciBwcmV2aWV3IHN0eWxlc2hlZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7SFRNTFNlbGVjdEVsZW1lbnR9IHNlbGVjdF9jb250cm9sIFNraW4gc2VsZWN0Ym94LlxuXHQgKiBAcmV0dXJuIHt2b2lkfVxuXHQgKi9cblx0VGltZS5hcHBseV9waWNrZXJfc2tpbl9mcm9tX3NlbGVjdCA9IGZ1bmN0aW9uIChzZWxlY3RfY29udHJvbCkge1xuXHRcdGlmICggISBzZWxlY3RfY29udHJvbCApIHJldHVybjtcblx0XHR2YXIgc2VsZWN0ZWRfb3B0aW9uID0gc2VsZWN0X2NvbnRyb2wub3B0aW9ucyAmJiBzZWxlY3RfY29udHJvbC5zZWxlY3RlZEluZGV4ID49IDBcblx0XHRcdD8gc2VsZWN0X2NvbnRyb2wub3B0aW9uc1sgc2VsZWN0X2NvbnRyb2wuc2VsZWN0ZWRJbmRleCBdXG5cdFx0XHQ6IG51bGw7XG5cdFx0dmFyIHNraW5fdXJsID0gc2VsZWN0ZWRfb3B0aW9uID8gU3RyaW5nKCBzZWxlY3RlZF9vcHRpb24uZ2V0QXR0cmlidXRlKCAnZGF0YS13cGJjLXRpbWUtcGlja2VyLXNraW4tdXJsJyApIHx8ICcnICkgOiAnJztcblxuXHRcdFRpbWUuYXBwbHlfcGlja2VyX3NraW5fdXJsKCBza2luX3VybCApO1xuXG5cdFx0Ly8gVGhlIHN0eWxlIHJvdyBpcyBhdmFpbGFibGUgb25seSB3aGlsZSB0aGUgZ2xvYmFsIHBpY2tlciBpcyBlbmFibGVkLlxuXHRcdC8vIFJlY29uY2lsZSB0aGUgcnVudGltZSBmbGFnIGFzIHdlbGwsIHNvIGFuIG9sZGVyIEJ1aWxkZXIgc2Vzc2lvbiBjYW5cblx0XHQvLyBpbW1lZGlhdGVseSBjb25zdHJ1Y3QgaXRzIENhbnZhcyBjaG9pY2VzIHdpdGhvdXQgYSBwYWdlIHJlbG9hZC5cblx0XHR2YXIgcGFuZWwgPSBzZWxlY3RfY29udHJvbC5jbG9zZXN0ID8gc2VsZWN0X2NvbnRyb2wuY2xvc2VzdCggJy53cGJjX2JmYl9faW5zcGVjdG9yX3RpbWVwaWNrZXInICkgOiBudWxsO1xuXHRcdHZhciBwaWNrZXJfdG9nZ2xlID0gcGFuZWwgPyBwYW5lbC5xdWVyeVNlbGVjdG9yKCAnLmpzLXRvZ2dsZS10aW1lc2xvdC1waWNrZXInICkgOiBudWxsO1xuXHRcdGlmICggcGlja2VyX3RvZ2dsZSAmJiBwaWNrZXJfdG9nZ2xlLmNoZWNrZWQgKSB7XG5cdFx0XHRUaW1lLnNldF9waWNrZXJfZW5hYmxlZCggdHJ1ZSApO1xuXHRcdFx0VGltZS5zY2hlZHVsZV9pbml0X3RpbWVzZWxlY3RvcigpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogU3luY2hyb25pemUgYWxsIG9wZW4gdGltZS1maWVsZCBza2luIGNvbnRyb2xzIHRvIGEgc2F2ZWQgZ2xvYmFsIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc2tpbl92YWx1ZSBSZWxhdGl2ZSB0aW1lLXBpY2tlciBza2luIHBhdGguXG5cdCAqIEByZXR1cm4ge3ZvaWR9XG5cdCAqL1xuXHRUaW1lLnVpX3NldF9waWNrZXJfc2tpbl92YWx1ZSA9IGZ1bmN0aW9uIChza2luX3ZhbHVlKSB7XG5cdFx0ZC5xdWVyeVNlbGVjdG9yQWxsKCAnLmpzLXdwYmMtYmZiLXRpbWUtcGlja2VyLXNraW4nICkuZm9yRWFjaCggZnVuY3Rpb24gKHNlbGVjdF9jb250cm9sKSB7XG5cdFx0XHRzZWxlY3RfY29udHJvbC52YWx1ZSA9IFN0cmluZyggc2tpbl92YWx1ZSB8fCAnJyApO1xuXHRcdH0gKTtcblx0fTtcblxuXHQvKipcblx0ICogU3luY2hyb25pemUgb3RoZXIgY29udHJvbHMgYWZ0ZXIgYSBnbG9iYWwgdGltZS1waWNrZXIgc2tpbiBpcyBzYXZlZC5cblx0ICpcblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdFRpbWUub25fcGlja2VyX3NraW5fc2F2ZWQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0dmFyIHNlbGVjdF9jb250cm9sID0gZC5xdWVyeVNlbGVjdG9yKCAnLmpzLXdwYmMtYmZiLXRpbWUtcGlja2VyLXNraW4nICk7XG5cdFx0dmFyIHNraW5fdmFsdWUgPSBzZWxlY3RfY29udHJvbCA/IFN0cmluZyggc2VsZWN0X2NvbnRyb2wudmFsdWUgfHwgJycgKSA6ICcnO1xuXHRcdHZhciBhY2NlbnRfYnV0dG9uID0gZC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1iZmItYXBwbHktYWNjZW50LWNvbXBvbmVudHM9XCIxXCJdJyApO1xuXG5cdFx0VGltZS51aV9zZXRfcGlja2VyX3NraW5fdmFsdWUoIHNraW5fdmFsdWUgKTtcblx0XHRpZiAoIGFjY2VudF9idXR0b24gKSB7XG5cdFx0XHRhY2NlbnRfYnV0dG9uLnNldEF0dHJpYnV0ZSggJ2RhdGEtd3BiYy10aW1lLXBpY2tlci1za2luLWN1cnJlbnQnLCBza2luX3ZhbHVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIFRoZSBnZW5lcmljIHByb3RlY3RlZCBvcHRpb24gc2F2ZXIgcmVzb2x2ZXMgc3VjY2Vzc2Z1bCBjYWxsYmFja3MgYnkgZ2xvYmFsIGZ1bmN0aW9uIG5hbWUuXG5cdHcud3BiY19iZmJfdGltZV9waWNrZXJfc2tpbl9jb250cm9sX3NhdmVkID0gVGltZS5vbl9waWNrZXJfc2tpbl9zYXZlZDtcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gRGVib3VuY2VkIGluaXQgZm9yIGV4dGVybmFsIHRpbWUgc2VsZWN0b3IgKGNhbnZhcyBwcmV2aWV3KVxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIERlYm91bmNlZCBjYWxsIHRvIGdsb2JhbCBpbml0aWFsaXplciAoaWYgcHJlc2VudCk6IHdwYmNfaG9va19faW5pdF90aW1lc2VsZWN0b3IoKVxyXG5cdCAqL1xyXG5cdFRpbWUuc2NoZWR1bGVfaW5pdF90aW1lc2VsZWN0b3IgPSAoZnVuY3Rpb24gKCkge1xyXG5cdFx0bGV0IHNjaGVkdWxlZCA9IGZhbHNlO1xyXG5cdFx0bGV0IHRpZCA9IG51bGw7XHJcblx0XHRjb25zdCBERUxBWSA9IDMwO1xyXG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0aWYgKHNjaGVkdWxlZCkgcmV0dXJuO1xyXG5cdFx0XHRzY2hlZHVsZWQgPSB0cnVlO1xyXG5cdFx0XHRjbGVhclRpbWVvdXQodGlkKTtcclxuXHRcdFx0dGlkID0gc2V0VGltZW91dChmdW5jdGlvbiBydW4oKSB7XHJcblx0XHRcdFx0c2NoZWR1bGVkID0gZmFsc2U7XHJcblx0XHRcdFx0aWYgKCFkLnF1ZXJ5U2VsZWN0b3IoJy53cGJjX2JmYl9fcHJldmlldy10aW1lcGlja2VyJykpIHJldHVybjtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHcud3BiY19ob29rX19pbml0X3RpbWVzZWxlY3RvciA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfcnRfbW9fcGF1c2UgJiYgdy5fX3dwYmNfcnRfbW9fcGF1c2UoKTtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfc3RfbW9fcGF1c2UgJiYgdy5fX3dwYmNfc3RfbW9fcGF1c2UoKTtcclxuXHRcdFx0XHRcdFx0dy53cGJjX2hvb2tfX2luaXRfdGltZXNlbGVjdG9yKCk7XHJcblx0XHRcdFx0XHR9IGNhdGNoICggZSApIHsvKiBuby1vcCAqL1xyXG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfcnRfbW9fcmVzdW1lICYmIHcuX193cGJjX3J0X21vX3Jlc3VtZSgpO1xyXG5cdFx0XHRcdFx0XHR3Ll9fd3BiY19zdF9tb19yZXN1bWUgJiYgdy5fX3dwYmNfc3RfbW9fcmVzdW1lKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LCBERUxBWSApO1xyXG5cdFx0fTtcclxuXHR9KSgpO1xyXG5cclxuXHJcblx0LyoqXHJcblx0ICogTWlycm9yIHRvIFNldHRpbmdzIFVJIHdpdGhvdXQgZmlyaW5nIERPTSAnY2hhbmdlJyAobG9vcC1zYWZlKS5cclxuXHQgKi9cclxuXHRUaW1lLm1pcnJvcl9zZXR0aW5nc190b2dnbGUgPSBmdW5jdGlvbiAoZW5hYmxlZCkge1xyXG5cdFx0d3BiY19iZmJfX2Rpc3BhdGNoX2V2ZW50X3NhZmUoXHJcblx0XHRcdCd3cGJjOmJmYjpzZXR0aW5nczpzZXQnLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0a2V5ICAgOiAnYm9va2luZ190aW1lc2xvdF9waWNrZXInLFxyXG5cdFx0XHRcdHZhbHVlIDogZW5hYmxlZCA/ICdPbicgOiAnT2ZmJyxcclxuXHRcdFx0XHRzb3VyY2U6ICd0aW1lLXV0aWxzJ1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByZXZpZXcgcmVmcmVzaCBmb3IgdGltZS1zbG90IHBpY2tlciB0b2dnbGUuXHJcblx0ICogLSBPTjoganVzdCBpbml0IGV4dGVybmFsIHRpbWUgc2VsZWN0b3IuXHJcblx0ICogLSBPRkY6IHRlYXJkb3duIHdpZGdldHMgYW5kIHVuaGlkZSA8c2VsZWN0PiBjb250cm9scywgdGhlbiBzb2Z0IHJlLXJlbmRlciAobm8gcmVidWlsZCkuXHJcblx0ICovXHJcblx0VGltZS5zeW5jX3ByZXZpZXdfYWZ0ZXJfZmxhZyA9IGZ1bmN0aW9uIChlbmFibGVkKSB7XHJcblx0XHRpZiAoIGVuYWJsZWQgKSB7XG5cdFx0XHRUaW1lLnNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIHR5cGVvZiB3LndwYmNfaG9va19fZGVzdHJveV90aW1lc2VsZWN0b3IgPT09ICdmdW5jdGlvbicgKSB7XG5cdFx0XHRcdHcud3BiY19ob29rX19kZXN0cm95X3RpbWVzZWxlY3RvciggZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy53cGJjX3RpbWVzX3NlbGVjdG9yJyApLmZvckVhY2goIGZ1bmN0aW9uIChlbCkge1xuXHRcdFx0XHRcdGlmICggZWwucGFyZW50Tm9kZSApIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcblx0XHRcdFx0XHQnLndwYmNfYmZiX19wcmV2aWV3LXNlbGVjdC53cGJjX2JmYl9fcHJldmlldy1yYW5nZXRpbWUsJyArXG5cdFx0XHRcdFx0J3NlbGVjdFtuYW1lXj1cInJhbmdldGltZVwiXSwgc2VsZWN0W25hbWVePVwic3RhcnR0aW1lXCJdLCBzZWxlY3RbbmFtZV49XCJlbmR0aW1lXCJdLCBzZWxlY3RbbmFtZV49XCJkdXJhdGlvbnRpbWVcIl0nXG5cdFx0XHRcdCkuZm9yRWFjaCggZnVuY3Rpb24gKHMpIHtcblx0XHRcdFx0XHRzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnZGlzcGxheScgKTtcblx0XHRcdFx0XHRzLmhpZGRlbiA9IGZhbHNlO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0fVxyXG5cdFx0aWYgKCB3aW5kb3cuV1BCQ19CRkJfU2V0dGluZ3MgJiYgdHlwZW9mIHdpbmRvdy5XUEJDX0JGQl9TZXR0aW5ncy53aGVuX2J1aWxkZXJfcmVhZHkgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdHdpbmRvdy5XUEJDX0JGQl9TZXR0aW5ncy53aGVuX2J1aWxkZXJfcmVhZHkoIGZ1bmN0aW9uIChiKSB7XHJcblx0XHRcdFx0aWYgKCAhYiB8fCAhYi5wcmV2aWV3X21vZGUgKSByZXR1cm47XHJcblx0XHRcdFx0aWYgKCB0eXBlb2YgYi5yZWZyZXNoX2NhbnZhcyA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0XHRcdGIucmVmcmVzaF9jYW52YXMoIHtcclxuXHRcdFx0XHRcdFx0aGFyZCAgICAgICAgICAgICA6IHRydWUsXHJcblx0XHRcdFx0XHRcdHJlYnVpbGQgICAgICAgICAgOiBmYWxzZSwgICAvLyBjcml0aWNhbDogbm8gbG9hZF9zYXZlZF9zdHJ1Y3R1cmUoKVxyXG5cdFx0XHRcdFx0XHRyZWluaXQgICAgICAgICAgIDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdHJlc3RvcmVfc2VsZWN0aW9uOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRyZXN0b3JlX3Njcm9sbCAgIDogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0c2lsZW50X2luc3BlY3RvciA6IHRydWUsXHJcblx0XHRcdFx0XHRcdHNvdXJjZSAgICAgICAgICAgOiAnc2V0dGluZ3M6dGltZXNsb3QnXHJcblx0XHRcdFx0XHR9ICk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIGIucmVuZGVyX3ByZXZpZXdfYWxsID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0Yi5yZW5kZXJfcHJldmlld19hbGwoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBPbmUtY2FsbCB1bml2ZXJzYWwgc2V0dGVyIHVzZWQgYnkgU2V0dGluZ3MgKyBhbGwgdGltZS1maWVsZCBpbnNwZWN0b3JzLlxyXG5cdCAqL1xyXG5cdFRpbWUuc2V0X2dsb2JhbF90aW1lc2xvdF9waWNrZXIgPSBmdW5jdGlvbiAoZW5hYmxlZCwgb3B0cykge1xyXG5cdFx0b3B0cyA9IG9wdHMgfHwge307XHJcblx0XHRUaW1lLnNldF9waWNrZXJfZW5hYmxlZCggZW5hYmxlZCApOyAgICAgICAgICAgICAgICAgLy8gcGVyc2lzdCBpbi1tZW1vcnkgZmxhZ1xyXG5cdFx0VGltZS51aV9hcHBseV9waWNrZXJfZW5hYmxlZF90b19hbGwoIGVuYWJsZWQgKTsgICAgIC8vIHN5bmMgYWxsIG9wZW4gaW5zcGVjdG9yc1xyXG5cdFx0aWYgKCBvcHRzLm1pcnJvcl9zZXR0aW5ncyAhPT0gZmFsc2UgKSB7XHJcblx0XHRcdFRpbWUubWlycm9yX3NldHRpbmdzX3RvZ2dsZSggZW5hYmxlZCApOyAgICAgICAgICAgLy8gbWlycm9yIFNldHRpbmdzIHRvZ2dsZSAobm8gJ2NoYW5nZScgZXZlbnQpXHJcblx0XHR9XHJcblx0XHRpZiAoIG9wdHMucmVmcmVzaF9wcmV2aWV3ICE9PSBmYWxzZSApIHtcclxuXHRcdFx0VGltZS5zeW5jX3ByZXZpZXdfYWZ0ZXJfZmxhZyggZW5hYmxlZCApOyAgICAgICAgICAvLyBzYWZlIHByZXZpZXcgcmVmcmVzaFxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gR2xvYmFsIGJpbmRlcjogc2VsZWN0IHZzLiB0aW1lIHBpY2tlciB0b2dnbGUgKE9ORS1USU1FLCBzaGFyZWQgYnkgYWxsIHRpbWUtYmFzZWQgcGFja3MpXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0LyoqXHJcblx0ICogQmluZCBvbmNlIHRvOlxyXG5cdCAqICAtIGluaXRpYWxpemUgYWxsIG9wZW4gSW5zcGVjdG9yIHBhbmVscyB3aXRoIHRoZSBjdXJyZW50IGdsb2JhbCBmbGFnLFxyXG5cdCAqICAtIHJlYWN0IHRvIG5ld2x5IGFkZGVkIEluc3BlY3RvciBwYW5lbHMgdmlhIE11dGF0aW9uT2JzZXJ2ZXIsXHJcblx0ICogIC0gcGVyc2lzdCBhbmQgYnJvYWRjYXN0IGNoYW5nZXMgd2hlbiB0aGUgXCJTaG93IGFzIHRpbWUgcGlja2VyXCIgY2hlY2tib3ggdG9nZ2xlcy5cclxuXHQgKi9cclxuXHRUaW1lLmVuc3VyZV9nbG9iYWxfdGltZXBpY2tlcl90b2dnbGVfYmluZGVyID0gZnVuY3Rpb24gKCkge1xyXG5cclxuXHRcdGlmIChUaW1lLl9fdG9nZ2xlQmluZGVyQm91bmQpIHJldHVybjtcclxuXHRcdFRpbWUuX190b2dnbGVCaW5kZXJCb3VuZCA9IHRydWU7XHJcblxyXG5cdFx0Ly8gMSkgSW5pdCBhbGwgY3VycmVudGx5IG9wZW4gcGFuZWxzXHJcblx0XHRmdW5jdGlvbiBpbml0X2FsbF9wYW5lbHMoKSB7XHJcblx0XHRcdFRpbWUudWlfYXBwbHlfcGlja2VyX2VuYWJsZWRfdG9fYWxsKFRpbWUucmVhZF9waWNrZXJfZW5hYmxlZCgpKTtcclxuXHRcdH1cclxuXHRcdChkLnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJylcclxuXHRcdFx0PyBkLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0X2FsbF9wYW5lbHMpXHJcblx0XHRcdDogaW5pdF9hbGxfcGFuZWxzKCk7XHJcblxyXG5cdFx0Ly8gMikgT2JzZXJ2ZSBJbnNwZWN0b3IgcGFuZWxzIHRoYXQgYXBwZWFyIGxhdGVyXHJcblx0XHR0cnkge1xyXG5cdFx0XHR2YXIgbW8gPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0cykge1xyXG5cdFx0XHRcdHZhciBlbmFibGVkID0gVGltZS5yZWFkX3BpY2tlcl9lbmFibGVkKCk7XHJcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBtdXRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHR2YXIgbSA9IG11dHNbaV07XHJcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IG0uYWRkZWROb2Rlcy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHR2YXIgbiA9IG0uYWRkZWROb2Rlc1tqXTtcclxuXHRcdFx0XHRcdFx0aWYgKCFuIHx8IG4ubm9kZVR5cGUgIT09IDEpIGNvbnRpbnVlO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKG4ubWF0Y2hlcyAmJiBuLm1hdGNoZXMoJy53cGJjX2JmYl9faW5zcGVjdG9yX3RpbWVwaWNrZXInKSkge1xyXG5cdFx0XHRcdFx0XHRcdHRyeSB7IFRpbWUudWlfc2V0X3BpY2tlcl90b2dnbGVfZm9yX3BhbmVsKG4sIGVuYWJsZWQpOyB9IGNhdGNoIChlKSB7fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG4ucXVlcnlTZWxlY3Rvcikge1xyXG5cdFx0XHRcdFx0XHRcdG4ucXVlcnlTZWxlY3RvckFsbCgnLndwYmNfYmZiX19pbnNwZWN0b3JfdGltZXBpY2tlcicpLmZvckVhY2goZnVuY3Rpb24gKHBhbmVsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0cnkgeyBUaW1lLnVpX3NldF9waWNrZXJfdG9nZ2xlX2Zvcl9wYW5lbChwYW5lbCwgZW5hYmxlZCk7IH0gY2F0Y2ggKGUpIHt9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRtby5vYnNlcnZlKGQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XHJcblx0XHRcdC8vIE9wdGlvbmFsIHBhdXNlL3Jlc3VtZSBob29rcyBpZiBvdGhlciBtb2R1bGVzIHdhbnQgdG8gc3VzcGVuZCBvYnNlcnZlcnMgdGVtcG9yYXJpbHk6XHJcblx0XHRcdHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3BhdXNlICA9IGZ1bmN0aW9uKCl7IHRyeSB7IG1vLmRpc2Nvbm5lY3QoKTsgfSBjYXRjaChlKXt9IH07XHJcblx0XHRcdHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3Jlc3VtZSA9IGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0dHJ5IHsgbW8ub2JzZXJ2ZShkLmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOyB9IGNhdGNoKGUpe31cclxuXHRcdFx0fTtcclxuXHRcdH0gY2F0Y2ggKGUpIHt9XHJcblxyXG5cdFx0Ly8gMykgQ2hlY2tib3ggaGFuZGxlciAoZGVsZWdhdGVkKS5cblx0XHQvLyBTa2luIGNoYW5nZXMgdXNlIGpRdWVyeSBiZWxvdyBiZWNhdXNlIHRoZSBwcmV2aW91cy9uZXh0IHNlbGVjdGJveFxuXHRcdC8vIGNvbnRyb2xzIGRpc3BhdGNoIGpRdWVyeSdzIHN5bnRoZXRpYyBgY2hhbmdlYCBldmVudC5cblx0XHRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uIChldikge1xuXHRcdFx0dmFyIHQgPSBldi50YXJnZXQ7XG5cdFx0XHRpZiAoIXQgfHwgIXQuY2xhc3NMaXN0KSByZXR1cm47XG5cblx0XHRcdGlmICh0LmNsYXNzTGlzdC5jb250YWlucygnanMtd3BiYy1iZmItdGltZS1waWNrZXItc2tpbicpKSB7XG5cdFx0XHRcdGlmICggISB3LmpRdWVyeSApIFRpbWUuYXBwbHlfcGlja2VyX3NraW5fZnJvbV9zZWxlY3QodCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghdC5jbGFzc0xpc3QuY29udGFpbnMoJ2pzLXRvZ2dsZS10aW1lc2xvdC1waWNrZXInKSkgcmV0dXJuO1xuXHJcblx0XHRcdHZhciBlbmFibGVkID0gISF0LmNoZWNrZWQ7XG5cdFx0XHRUaW1lLnNldF9nbG9iYWxfdGltZXNsb3RfcGlja2VyKCBlbmFibGVkLCB7IHNvdXJjZTogJ2luc3BlY3RvcicgfSApO1xuXHRcdH0pO1xuXG5cdFx0aWYgKCB3LmpRdWVyeSApIHtcblx0XHRcdHcualF1ZXJ5KCBkIClcblx0XHRcdFx0Lm9mZiggJ2NoYW5nZS53cGJjQmZiVGltZVBpY2tlclNraW4nLCAnLmpzLXdwYmMtYmZiLXRpbWUtcGlja2VyLXNraW4nIClcblx0XHRcdFx0Lm9uKCAnY2hhbmdlLndwYmNCZmJUaW1lUGlja2VyU2tpbicsICcuanMtd3BiYy1iZmItdGltZS1waWNrZXItc2tpbicsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRUaW1lLmFwcGx5X3BpY2tlcl9za2luX2Zyb21fc2VsZWN0KCB0aGlzICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cdH07XG5cclxuXHQvLyBBdXRvLWJpbmQgb24gc2NyaXB0IGxvYWQuXHJcblx0dHJ5IHsgVGltZS5lbnN1cmVfZ2xvYmFsX3RpbWVwaWNrZXJfdG9nZ2xlX2JpbmRlcigpOyB9IGNhdGNoIChlKSB7fVxyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIEJ1aWxkZXIgY2FudmFzIHJlZnJlc2ggaG9va3MgKG1vdmVkIG91dCBvZiBiZmItYnVpbGRlci5qcylcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHQvKipcclxuXHQgKiBCaW5kIHBhdXNlL3Jlc3VtZSBob29rcyB0byBCdWlsZGVyIGNhbnZhcyByZWZyZXNoIGV2ZW50cy5cclxuXHQgKlxyXG5cdCAqIFdoeSBoZXJlOlxyXG5cdCAqIC0gVGhpcyBtb2R1bGUgb3ducyB0aGUgdGltZXBpY2tlci10b2dnbGUgTXV0YXRpb25PYnNlcnZlciBhbmQgdGltZSBzZWxlY3RvciBpbml0LlxyXG5cdCAqIC0gQnVpbGRlciBzaG91bGQgbm90IGtub3cgYWJvdXQgcGFjay1zcGVjaWZpYyBvYnNlcnZlcnMuXHJcblx0ICpcclxuXHQgKiBTYWZldHk6XHJcblx0ICogLSBJZGVtcG90ZW50IChiaW5kcyBvbmNlKS5cclxuXHQgKiAtIFdhaXRzIGZvciB3cGJjX2JmYl9hcGkucmVhZHkuXHJcblx0ICogLSBObyBoYXJkIGRlcGVuZGVuY3k6IGlmIGJ1aWxkZXIvYnVzL2V2ZW50cyBhcmUgYWJzZW50LCBpdCBzaWxlbnRseSBuby1vcHMuXHJcblx0ICpcclxuXHQgKiBAcmV0dXJucyB7dm9pZH1cclxuXHQgKi9cclxuXHRUaW1lLmVuc3VyZV9idWlsZGVyX2NhbnZhc19yZWZyZXNoX2hvb2tzID0gZnVuY3Rpb24gKCkge1xyXG5cclxuXHRcdGlmICggVGltZS5fX2J1aWxkZXJfY2FudmFzX3JlZnJlc2hfaG9va3NfYm91bmQgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdFRpbWUuX19idWlsZGVyX2NhbnZhc19yZWZyZXNoX2hvb2tzX2JvdW5kID0gdHJ1ZTtcclxuXHJcblx0XHQvLyBCdWlsZGVyIEFQSSBtdXN0IGV4aXN0LlxyXG5cdFx0aWYgKCAhdy53cGJjX2JmYl9hcGkgfHwgIXcud3BiY19iZmJfYXBpLnJlYWR5IHx8ICh0eXBlb2Ygdy53cGJjX2JmYl9hcGkucmVhZHkudGhlbiAhPT0gJ2Z1bmN0aW9uJykgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR3LndwYmNfYmZiX2FwaS5yZWFkeS50aGVuKCBmdW5jdGlvbiAoYnVpbGRlcikge1xyXG5cclxuXHRcdFx0Ly8gQnVpbGRlciBtaWdodCByZXNvbHZlIG51bGwgKHRpbWVvdXQpIOKAkyBqdXN0IGlnbm9yZS5cclxuXHRcdFx0aWYgKCAhYnVpbGRlciB8fCAhYnVpbGRlci5idXMgfHwgKHR5cGVvZiBidWlsZGVyLmJ1cy5vbiAhPT0gJ2Z1bmN0aW9uJykgKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR2YXIgRVZTICAgICAgID0gKHcuV1BCQ19CRkJfQ29yZSAmJiB3LldQQkNfQkZCX0NvcmUuV1BCQ19CRkJfRXZlbnRzKSA/IHcuV1BCQ19CRkJfQ29yZS5XUEJDX0JGQl9FdmVudHMgOiB7fTtcclxuXHRcdFx0dmFyIEVWX0JFRk9SRSA9IEVWUy5DQU5WQVNfUkVGUkVTSCB8fCAnd3BiYzpiZmI6Y2FudmFzLXJlZnJlc2gnO1xyXG5cdFx0XHR2YXIgRVZfQUZURVIgID0gRVZTLkNBTlZBU19SRUZSRVNIRUQgfHwgJ3dwYmM6YmZiOmNhbnZhcy1yZWZyZXNoZWQnO1xyXG5cclxuXHRcdFx0Ly8gQkVGT1JFIHJlZnJlc2g6IHBhdXNlIG9ic2VydmVycyB0byBhdm9pZCBsb29wcyAvIGV4dHJhIHdvcmsgd2hpbGUgRE9NIGlzIGJlaW5nIHJlYnVpbHQuXHJcblx0XHRcdGJ1aWxkZXIuYnVzLm9uKCBFVl9CRUZPUkUsIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYgKCB0eXBlb2Ygdy5fX3dwYmNfcnRfbW9fcGF1c2UgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3J0X21vX3BhdXNlKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAoIHR5cGVvZiB3Ll9fd3BiY19zdF9tb19wYXVzZSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfc3RfbW9fcGF1c2UoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmICggdHlwZW9mIHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3BhdXNlID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0XHR3Ll9fd3BiY190aW1lcGlja2VyX3RvZ2dsZV9tb19wYXVzZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSApO1xyXG5cclxuXHRcdFx0Ly8gQUZURVIgcmVmcmVzaDogcmVzdW1lIGFuZCAoaWYgbmVlZGVkKSByZS1pbml0IHRpbWVzZWxlY3RvciB3aWRnZXRzLlxyXG5cdFx0XHRidWlsZGVyLmJ1cy5vbiggRVZfQUZURVIsIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYgKCB0eXBlb2Ygdy5fX3dwYmNfcnRfbW9fcmVzdW1lID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0XHR3Ll9fd3BiY19ydF9tb19yZXN1bWUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmICggdHlwZW9mIHcuX193cGJjX3N0X21vX3Jlc3VtZSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0XHRcdFx0dy5fX3dwYmNfc3RfbW9fcmVzdW1lKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAoIHR5cGVvZiB3Ll9fd3BiY190aW1lcGlja2VyX3RvZ2dsZV9tb19yZXN1bWUgPT09ICdmdW5jdGlvbicgKSB7XHJcblx0XHRcdFx0XHRcdHcuX193cGJjX3RpbWVwaWNrZXJfdG9nZ2xlX21vX3Jlc3VtZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gSWYgdGltZS1zbG90IHBpY2tlciBpcyBlbmFibGVkIGFuZCBidWlsZGVyIGlzIGluIHByZXZpZXcgbW9kZSwgcmUtaW5pdCB0aGUgdGltZSBzZWxlY3RvciBVSS5cclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYgKCBidWlsZGVyLnByZXZpZXdfbW9kZSAmJiB0eXBlb2YgVGltZS5yZWFkX3BpY2tlcl9lbmFibGVkID09PSAnZnVuY3Rpb24nICYmIFRpbWUucmVhZF9waWNrZXJfZW5hYmxlZCgpICkge1xyXG5cdFx0XHRcdFx0XHRpZiAoIHR5cGVvZiBUaW1lLnNjaGVkdWxlX2luaXRfdGltZXNlbGVjdG9yID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRcdFx0XHRcdFRpbWUuc2NoZWR1bGVfaW5pdF90aW1lc2VsZWN0b3IoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSApO1xyXG5cclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHQvLyBDYWxsIG9uY2Ugb24gbG9hZC5cclxuXHR0cnkge1xyXG5cdFx0VGltZS5lbnN1cmVfYnVpbGRlcl9jYW52YXNfcmVmcmVzaF9ob29rcygpO1xyXG5cdH0gY2F0Y2ggKCBlICkge1xyXG5cdH1cclxuXHJcblxyXG59KSh3aW5kb3csIGRvY3VtZW50KTtcclxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxVQUFVQSxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNoQixZQUFZOztFQUVaLElBQUlDLElBQUksR0FBR0YsQ0FBQyxDQUFDRyxhQUFhLEtBQUtILENBQUMsQ0FBQ0csYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQ3BELElBQUlDLElBQUksR0FBR0YsSUFBSSxDQUFDRSxJQUFJLEtBQUtGLElBQUksQ0FBQ0UsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBRXhDLElBQUlDLEtBQUssR0FBR0wsQ0FBQyxDQUFDSyxLQUFLLElBQUksSUFBSTs7RUFFM0I7RUFDQTtFQUNBOztFQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDRCxJQUFJLENBQUNFLGNBQWMsR0FBRyxVQUFVQyxDQUFDLEVBQUU7SUFDbEMsSUFBSSxPQUFPQSxDQUFDLEtBQUssU0FBUyxFQUFFLE9BQU9BLENBQUM7SUFDcEMsSUFBSSxPQUFPQSxDQUFDLEtBQUssUUFBUSxFQUFFLE9BQU9BLENBQUMsS0FBSyxDQUFDO0lBQ3pDLElBQUksT0FBT0EsQ0FBQyxLQUFLLFFBQVEsRUFBRTtN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 | |