@digitransit-component/digitransit-component-datetimepicker 0.6.21 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +5 -5
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,a,i,o,l,r,s,c,d,u){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=p(t),m=p(n),f=p(a),y=p(i),b=p(l),g=p(r),h=p(s),v=p(c),x=p(d),w=p(u);function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function E(e,t){if(e){if("string"==typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],a=!0,i=!1,o=void 0;try{for(var l,r=e[Symbol.iterator]();!(a=(l=r.next()).done)&&(n.push(l.value),!t||n.length!==t);a=!0);}catch(e){i=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(i)throw o}}return n}}(e,t)||E(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){return function(e){if(Array.isArray(e))return k(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||E(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var F={parseTypedTime:function(e){var t=e;return 3===t.length&&t.split("").every((function(e){return Number.isInteger(Number(e))}))&&(t=Number(t.slice(0,2))<=23?"".concat(t.slice(0,2),":").concat(t[2]):"".concat(t[0],":").concat(t.slice(1))),t}};var N={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function S(e){var t=e.value,a=e.onChange,i=e.getDisplay,o=e.timeChoices,l=e.validate,r=e.id,s=e.label,c=e.icon,d=e.disableTyping,u=e.timeZone;f.default.tz.setDefault(u);var p=C(n.useState(i(t)),2),_=p[0],y=p[1],b=C(n.useState(!1),2),g=b[0],h=b[1];n.useEffect((function(){return y(i(t))}),[t]);var x=function(e){var t=Number(e);!Number.isNaN(t)&&f.default(t).isValid()&&f.default(t).valueOf()===t&&a(t)},w=o.map((function(e){return{value:e.toString(),label:i(e)}})),k=w.reduce((function(e,n){return Math.abs(t-e.value)<Math.abs(t-n.value)?e:n})),E="".concat(r,"-input"),R="".concat(r,"-label");return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:N["combobox-container"],htmlFor:E},m.default.createElement("span",{className:N["sr-only"],id:R},s," ",_),c,m.default.createElement(v.default,{"aria-labelledby":R,ariaLiveMessages:{guidance:function(){return"."},onChange:function(){return""},onFilter:function(){return""},onFocus:function(e){var t=e.context,n=e.label;return"menu"===t?n:""}},options:w,inputId:E,onChange:function(e){if(g){var n=l(_,t);null!==n?(x(n),h(!1)):(y(i(t)),h(!1))}else x(e.value)},components:{IndicatorsContainer:function(){return null}},className:N["datetimepicker-select-container"],classNamePrefix:"datetimepicker-select",onInputChange:function(e,t){var n=t.action;if(!d&&"input-change"===n){var a=F.parseTypedTime(e);y(a),h(!0)}},inputValue:!d&&_,value:k,filterOption:function(){return!0},controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:function(e){d||e.target.select()},onBlur:function(){if(g){var e=l(_,t);null!==e?(x(e),h(!1)):(y(i(t)),h(!1))}},onKeyDown:function(e){["ArrowDown","ArrowUp"].includes(e.key)&&h(!1)},isSearchable:!d})))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button, .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button, .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #dddddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #dddddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #dddddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #dddddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #ffffff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0px;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n color: #333333;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(S.propTypes={value:_.default.number.isRequired,onChange:_.default.func.isRequired,getDisplay:_.default.func.isRequired,timeChoices:_.default.arrayOf(_.default.number).isRequired,validate:_.default.func.isRequired,id:_.default.string.isRequired,label:_.default.node.isRequired,icon:_.default.node.isRequired,disableTyping:_.default.bool,timeZone:_.default.string}),S.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki"};var P={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt"}};function O(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var G=["ref"];function T(e){var t=e.value,a=e.getDisplay,i=e.onChange,o=e.itemCount,l=e.startTime,r=e.id,s=e.label,c=e.icon,d=e.timeZone;f.default.tz.setDefault(d);var u=C(n.useState(!1),2),p=u[0],_=u[1],y=n.useRef(null),b=Array(o).fill().map((function(e,t){return f.default(l).add(t,"day").valueOf()})),g=b.map((function(e){return t-e})).findIndex((function(e){return e<6e4}));n.useLayoutEffect((function(){p&&y.current&&(y.current.scrollTop=50*g)}),[t,p]);var h=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),v="".concat(r,"-input"),x="".concat(r,"-label");return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:N["input-container"],htmlFor:v},m.default.createElement("span",null,c),m.default.createElement("span",{className:N["sr-only"],id:x},s),h?m.default.createElement(m.default.Fragment,null,m.default.createElement("select",{className:N["mobile-input-display"],onChange:function(e){return i(Number(e.target.value))},value:t},b.map((function(e){return m.default.createElement("option",{key:e,value:e},a(e))})))):m.default.createElement(w.default,{id:r,suggestions:b,getSuggestionValue:function(e){return e.toString()},renderSuggestion:function(e){return a(e)},onSuggestionsFetchRequested:function(){return null},shouldRenderSuggestions:function(){return!0},inputProps:{value:a(t),onChange:function(e,t){var n=t.newValue;i(Number(n))},onFocus:function(){_(!0)},onBlur:function(){_(!1)},id:v,"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:function(){return null},renderSuggestionsContainer:function(e){var t=e.containerProps,n=e.children,a=t.ref,i=O(t,G);return m.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:function(e){e&&(y.current=e,a(e))}}),n)},theme:N})))}function q(e){var t=e.value,a=e.getDisplay,i=e.onChange,o=e.id,l=e.label,r=e.icon,s=e.timeZone,c=e.validate,d=C(n.useState(a(t)),2),u=d[0],p=d[1];f.default.tz.setDefault(s);var _="".concat(o,"-input"),y="".concat(o,"-label"),b=n.useRef(null);return n.useLayoutEffect((function(){b.current&&b.current.focus()}),[]),m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:N["input-container"],htmlFor:_},m.default.createElement("span",null,r),m.default.createElement("span",{className:N["sr-only"],id:y},l),m.default.createElement("input",{id:_,inputMode:"numeric",type:"text",maxLength:"6",className:N["time-input-mobile"],value:u,onFocus:function(e){e.target.setSelectionRange(0,0)},onChange:function(e){var n=e.target.value;if(n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===u&&(n=n.charAt(0)),!(n.length>5)){var a=F.parseTypedTime(n);p(a);var o=c(a,t);o&&i(o)}},ref:b})))}function W(e){var t=e.departureOrArrival,a=e.onNowClick,i=e.lang,o=e.color,l=e.timeZone,r=e.onSubmit,s=e.onCancel,c=e.timestamp,d=e.getTimeDisplay,u=e.dateSelectItemCount,p=e.getDateDisplay,_=e.validateTime,y=e.fontWeights;f.default.tz.setDefault(l);var v={lng:i},w=C(n.useState(c),2),k=w[0],E=w[1],R=C(n.useState(t),2),F=R[0],S=R[1];var P=C(n.useState(b.default("datetimepicker-")),1)[0],O=f.default().startOf("day").hour(f.default(k).hour()).minute(f.default(k).minute()).valueOf();return m.default.createElement(x.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:N["mobile-modal-content"],overlayClassName:N["mobile-modal-overlay"]},m.default.createElement("div",{style:{"--color":"".concat(o),"--font-weight-medium":y.medium}},m.default.createElement("div",{className:N["top-row"]},m.default.createElement("h3",{className:N["modal-title"]},g.default.t("choose-time",v)),m.default.createElement("button",{type:"button",className:N["departure-now-button"],onClick:a},g.default.t("departure-now",v))),m.default.createElement("div",{className:N["tab-row"]},m.default.createElement("label",{htmlFor:"".concat(P,"-modal-departure"),className:"".concat(N["radio-tab-label"],"\n ").concat(N["departure"===F?"active":void 0])},g.default.t("departure",v),m.default.createElement("input",{id:"".concat(P,"-modal-departure"),name:"departureOrArrival",type:"radio",value:"departure",className:N["radio-textbutton"],onChange:function(){S("departure")},checked:"departure"===F})),m.default.createElement("label",{htmlFor:"".concat(P,"-modal-arrival"),className:"".concat(N["radio-tab-label"],"\n ").concat(N["arrival"===F?"active":void 0])},g.default.t("arrival",v),m.default.createElement("input",{id:"".concat(P,"-modal-arrival"),name:"departureOrArrival",type:"radio",value:"arrival",className:N["radio-textbutton"],onChange:function(){S("arrival")},checked:"arrival"===F}))),m.default.createElement("div",{className:N["input-row"]},m.default.createElement(T,{value:k,getDisplay:p,onChange:function(e){E(e)},itemCount:u,startTime:O,id:"".concat(P,"-date"),label:g.default.t("date",v),icon:m.default.createElement("span",{className:"".concat(N["combobox-icon"]," ").concat(N["date-input-icon"])},m.default.createElement(h.default,{img:"calendar",color:o})),timeZone:l}),m.default.createElement(q,{value:k,getDisplay:d,onChange:function(e){E(e)},id:"".concat(P,"-time"),label:g.default.t("time",v),icon:m.default.createElement("span",{className:"".concat(N["combobox-icon"]," ").concat(N["time-input-icon"])},m.default.createElement(h.default,{img:"time",color:o})),timeZone:l,validate:_})),m.default.createElement("div",{className:N["buttons-row"]},m.default.createElement("button",{type:"button",className:N["ready-button"],onClick:function(){return r(k,F)}},g.default.t("ready",v)),m.default.createElement("button",{type:"button",className:N["cancel-button"],onClick:s},g.default.t("cancel",v)))))}function A(e){var t=e.timestamp,a=e.onTimeChange,i=e.onDateChange,o=e.departureOrArrival,l=e.onNowClick,r=e.onDepartureClick,s=e.onArrivalClick,c=e.embedWhenClosed,d=e.embedWhenOpen,u=e.lang,p=e.color,_=e.timeZone,y=e.onModalSubmit,v=e.fontWeights,x=e.serviceTimeRange,w=e.onOpen,k=e.onClose,E=e.openPicker;f.default.tz.setDefault(_);var F,O=C(n.useState(E||!1),2),G=O[0],T=O[1],q=C(n.useState(t||f.default().valueOf()),2),A=q[0],X=q[1],D=C(n.useState(null),2),z=D[0],Z=D[1],j=C(n.useState(b.default("datetimepicker-")),1)[0],V=C(n.useState((F=navigator.userAgent||navigator.vendor||window.opera,/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(F)&&function(){if("undefined"==typeof window||null===window)return!1;var e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}())),1)[0],I=n.useRef(),L=n.useRef(),M=n.useRef(),H={lng:u};n.useEffect((function(){Object.keys(P).forEach((function(e){return g.default.addResourceBundle(e,"translation",P[u])}))}),[]),n.useEffect((function(){f.default.locale(u)}),[u]);var Y=null===t;n.useEffect((function(){Y?X(f.default().valueOf()):(z&&(clearInterval(z),Z(null)),X(t))}),[t]),n.useEffect((function(){if(Y){z&&clearInterval(z);var e=setInterval((function(){var t=f.default().valueOf();f.default(A).isSame(t,"minute")||(clearInterval(e),Z(null),X(t))}),5e3);return Z(e),function(){return clearInterval(e)}}}),[A]);var U=n.useRef();n.useEffect((function(){U.current=G}));var K=U.current;n.useLayoutEffect((function(){var e;if(!K===G)if(G)L&&(null===(e=L.current)||void 0===e||e.focus());else if(I){var t;null===(t=I.current)||void 0===t||t.focus()}}));for(var B=function(e){var t,n=f.default(e);return t=n.isSame(f.default(),"day")?g.default.t("today",H):n.isSame(f.default().add(1,"day"),"day")?g.default.t("tomorrow",H):n.format("dd D.M."),t="".concat(t.charAt(0).toUpperCase()).concat(t.slice(1))},J=function(e){return f.default(e).format("HH:mm")},Q=function(e,t){var n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){var a=n.includes(".")?".":":",i=n.split(a),o=Number(i[0]),l=!Number.isNaN(o)&&o>=0&&o<=23,r=Number(i[1]);return!Number.isNaN(r)&&r>=0&&r<=59&&l?f.default(t).hours(o).minutes(r).valueOf():null}return null},$=f.default(A),ee=f.default(A).startOf("day").valueOf(),te=[],ne=f.default(ee);ne.isSame(ee,"day");)te.push(ne.valueOf()),ne.add(15,"minutes");if(null===t){var ae,ie=3e5,oe=Math.ceil(A/ie)*ie,le=Array(7).fill().map((function(e,t){return oe+t*ie})),re=te.map((function(e){return A-e})).findIndex((function(e){return e<=0}));(ae=te).splice.apply(ae,[re,0].concat(R(le))),te=Array.from(new Set(te))}var se=f.default().startOf("day").hour($.hour()).minute($.minute()).valueOf(),ce=Array(x).fill().map((function(e,t){return f.default(se).add(t,"day").valueOf()}));function de(){M.current&&(M.current.innerHTML=g.default.t("accessible-closed",H),setTimeout((function(){M.current.innerHTML=null}),100))}return m.default.createElement("fieldset",{className:N["dt-datetimepicker"],id:"".concat(j,"-root"),style:{"--color":"".concat(p),"--font-weight-medium":v.medium}},m.default.createElement("legend",{className:N["sr-only"]},g.default.t("accessible-title",H)),m.default.createElement("span",{className:N["sr-only"]},g.default.t("accessible-update-instructions",H)),m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:G?"".concat(N.hidden," datetimepicker-top-row"):"".concat(N["top-row-container"]," ").concat(N.closed," datetimepicker-top-row")},m.default.createElement("label",{className:N["label-open"],htmlFor:"".concat(j,"-open")},m.default.createElement("span",{className:N["time-icon"]},m.default.createElement(h.default,{img:"time",color:p})),m.default.createElement("span",{className:N["sr-only"]},g.default.t("accessible-open",H)),m.default.createElement("span",{role:"alert",className:N["sr-only"],ref:M}),m.default.createElement("button",{id:"".concat(j,"-open"),type:"button",className:"".concat(N.textbutton," ").concat(N.active," ").concat(N["open-button"]),"aria-controls":"".concat(j,"-root"),"aria-expanded":"false",onClick:function(){T(!0),M.current&&(M.current.innerHTML=g.default.t("accessible-opened",H),setTimeout((function(){M.current.innerHTML=null}),100)),w&&w()},ref:I},m.default.createElement("span",null,Y&&"departure"===o?g.default.t("departure-now",H):m.default.createElement(m.default.Fragment,null,g.default.t("departure"===o?"departure":"arrival",H)," ".concat(f.default().isSame(f.default(A),"day")?"":B(A).toLowerCase()," ").concat(J(A)))),m.default.createElement("span",{className:N["dropdown-icon"]},m.default.createElement(h.default,{img:"arrow-dropdown",color:p})))),m.default.createElement("span",{className:N["right-edge"]},c)),m.default.createElement("div",null)),V?G&&m.default.createElement(W,{departureOrArrival:o,onNowClick:function(){T(!1),de(),l()},lang:u,color:p,onSubmit:function(e,t){y(e,t),T(!1),de()},onCancel:function(){T(!1),de(),k&&k()},getTimeDisplay:J,timeZone:_,timestamp:A,getDateDisplay:B,dateSelectItemCount:x,getDisplay:J,validateTime:Q,fontWeights:v}):m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:"".concat(N["datetimepicker-open-container"]," ").concat(G?"":N.hidden)},m.default.createElement("div",{className:"".concat(G?N["top-row-container"]:N.hidden," datetimepicker-top-row")}," ",m.default.createElement("span",{role:"alert",className:N["sr-only"],ref:M}),m.default.createElement("span",null),m.default.createElement("span",{className:N["departure-or-arrival-container"]},m.default.createElement("label",{htmlFor:"".concat(j,"-departure"),className:"".concat(N["radio-textbutton-label"],"\n ").concat(N["departure"===o?"active":void 0])},g.default.t("departure",H),m.default.createElement("input",{id:"".concat(j,"-departure"),name:"departureOrArrival",type:"radio",value:"departure",className:N["radio-textbutton"],onChange:function(){r()},checked:"departure"===o})),m.default.createElement("label",{htmlFor:"".concat(j,"-arrival"),className:"".concat(N["radio-textbutton-label"],"\n ").concat(N["arrival"===o?"active":void 0])},g.default.t("arrival",H),m.default.createElement("input",{id:"".concat(j,"-arrival"),name:"departureOrArrival",type:"radio",value:"arrival",className:N["radio-textbutton"],onChange:function(){s()},checked:"arrival"===o}))),m.default.createElement("button",{id:"".concat(j,"-now"),type:"button",className:N["departure-now-button"],onClick:function(){T(!1),de(),k&&k(),l()},ref:L},g.default.t("departure-now",H)),m.default.createElement("span",{className:N["right-edge"]},m.default.createElement("button",{type:"button",className:N["close-button"],"aria-controls":"".concat(j,"-root"),"aria-expanded":"true",onClick:function(){T(!1),de(),k&&k()}},m.default.createElement("span",{className:N["close-icon"]},m.default.createElement(h.default,{img:"close",color:p})),m.default.createElement("span",{className:N["sr-only"]},g.default.t("accessible-close",H))))),m.default.createElement("div",{className:G?"".concat(N["picker-container"]):"".concat(N.hidden," datetimepicker-top-row")},m.default.createElement(m.default.Fragment,null,m.default.createElement("span",{className:N["combobox-left"]},m.default.createElement(S,{value:A,onChange:function(e){i(e)},getDisplay:B,timeChoices:ce,validate:function(){return null},icon:m.default.createElement("span",{className:"".concat(N["combobox-icon"]," ").concat(N["date-input-icon"])},m.default.createElement(h.default,{img:"calendar",color:p})),id:"".concat(j,"-date"),label:g.default.t("date",H),disableTyping:!0,timeZone:_})),m.default.createElement("span",{className:N["combobox-right"]},m.default.createElement(S,{value:A,onChange:function(e){a(e)},getDisplay:J,timeChoices:te,validate:Q,icon:m.default.createElement("span",{className:"".concat(N["combobox-icon"]," ").concat(N["time-input-icon"])},m.default.createElement(h.default,{img:"time",color:p})),id:"".concat(j,"-time"),label:g.default.t("time",H),timeZone:_}))))),m.default.createElement("span",{className:G?"":N.hidden},d),m.default.createElement("div",{className:G?"datetimepicker-bottom-row-open":""})))}function X(e){var t=e.realtime,a=e.initialArriveBy,i=e.initialTimestamp,o=e.onDepartureClick,l=e.onArrivalClick,r=e.onTimeChange,s=e.onDateChange,c=e.onNowClick,d=e.embedWhenClosed,u=e.embedWhenOpen,p=e.lang,_=e.color,b=e.timeZone,g=e.fontWeights,h=e.serviceTimeRange,v=e.onOpen,x=e.onClose,w=e.openPicker;f.default.locale(p),f.default.tz.setDefault(b);var k=t?null:f.default().valueOf(),E=C(n.useState(i?1e3*i:k),2),R=E[0],F=E[1],N=C(n.useState(!0===a?"arrival":"departure"),2),S=N[0],P=N[1];n.useEffect((function(){var e=null===R&&void 0===i,t=null===R||void 0===i,n=Math.round(R/1e3)===i;!e&&(t||!n)&&F(void 0===i?null:1e3*i),!a==("arrival"===S)&&P(!0===a?"arrival":"departure")}),[i,a]);var O=y.default((function(e){if(null===e)return F(f.default().valueOf()),void r(Math.round(f.default().valueOf()/1e3),"arrival"===S);F(e),r(Math.round(e/1e3),"arrival"===S)}),10),G=y.default((function(e){if(null===e)return F(f.default().valueOf()),void s(Math.round(f.default().valueOf()/1e3),"arrival"===S);F(e),s(Math.round(e/1e3),"arrival"===S)}),10);return m.default.createElement(A,{timestamp:R,onTimeChange:O,onDateChange:G,departureOrArrival:S,onNowClick:function(){P("departure");var e=t?null:f.default().valueOf();F(e),c(Math.round(e/1e3))},onDepartureClick:function(){var e=!1,t=R;if(null===R){var n=f.default().valueOf();F(n),t=n,e=!0}"departure"!==S&&(P("departure"),e=!0),e&&o(Math.round(t/1e3))},onArrivalClick:function(){var e=!1,t=R;if(null===R){var n=f.default().valueOf();F(n),t=n,e=!0}"arrival"!==S&&(P("arrival"),e=!0),e&&l(Math.round(t/1e3))},embedWhenClosed:d,embedWhenOpen:u,lang:p,color:_,timeZone:b,onModalSubmit:function(e,t){F(e),P(t),r(e/1e3,"arrival"===t,!0)},fontWeights:g,serviceTimeRange:h,onOpen:v,onClose:x,openPicker:w})}"production"!==process.env.NODE_ENV&&(T.propTypes={value:_.default.number.isRequired,getDisplay:_.default.func.isRequired,onChange:_.default.func.isRequired,itemCount:_.default.number.isRequired,startTime:_.default.number.isRequired,id:_.default.string.isRequired,label:_.default.string.isRequired,icon:_.default.node,dateTimeCombined:_.default.bool,timeZone:_.default.string}),T.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(q.propTypes={value:_.default.number.isRequired,getDisplay:_.default.func.isRequired,onChange:_.default.func.isRequired,id:_.default.string.isRequired,label:_.default.string.isRequired,icon:_.default.node,timeZone:_.default.string,validate:_.default.func.isRequired}),q.defaultProps={icon:null,timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"en",resources:{}}),Object.keys(P).forEach((function(e){return g.default.addResourceBundle(e,"translation",P[e])})),"production"!==process.env.NODE_ENV&&(W.propTypes={timeZone:_.default.string,departureOrArrival:_.default.oneOf(["departure","arrival"]).isRequired,onNowClick:_.default.func.isRequired,lang:_.default.string.isRequired,color:_.default.string,onSubmit:_.default.func.isRequired,onCancel:_.default.func.isRequired,timestamp:_.default.number.isRequired,getTimeDisplay:_.default.func.isRequired,dateSelectItemCount:_.default.number.isRequired,getDateDisplay:_.default.func.isRequired,validateTime:_.default.func.isRequired,fontWeights:_.default.shape({medium:_.default.number.isRequired}).isRequired}),W.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(A.propTypes={timestamp:_.default.number,timeZone:_.default.string,onTimeChange:_.default.func.isRequired,onDateChange:_.default.func.isRequired,departureOrArrival:_.default.oneOf(["departure","arrival"]).isRequired,onNowClick:_.default.func.isRequired,onDepartureClick:_.default.func.isRequired,onArrivalClick:_.default.func.isRequired,embedWhenClosed:_.default.node,embedWhenOpen:_.default.node,lang:_.default.string.isRequired,color:_.default.string,onModalSubmit:_.default.func.isRequired,fontWeights:_.default.shape({medium:_.default.number.isRequired}).isRequired,serviceTimeRange:_.default.number,onOpen:_.default.func,onClose:_.default.func,openPicker:_.default.bool}),A.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",serviceTimeRange:30,onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(X.propTypes={realtime:_.default.bool,initialTimestamp:_.default.number,initialArriveBy:_.default.bool,onDepartureClick:_.default.func.isRequired,onArrivalClick:_.default.func.isRequired,onTimeChange:_.default.func.isRequired,onDateChange:_.default.func.isRequired,onNowClick:_.default.func.isRequired,embedWhenClosed:_.default.node,embedWhenOpen:_.default.node,lang:_.default.string,color:_.default.string,timeZone:_.default.string,fontWeights:_.default.shape({medium:_.default.number}),serviceTimeRange:_.default.number,onOpen:_.default.func,onClose:_.default.func,openPicker:_.default.bool}),X.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0},e.default=X,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIi4uL3NyYy9oZWxwZXJzL3V0aWxzLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGVza3RvcERhdGV0aW1lcGlja2VyLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vc3JjL2hlbHBlcnMvTW9iaWxlRGF0ZXBpY2tlci5qcyIsIi4uL3NyYy9oZWxwZXJzL21vYmlsZURldGVjdGlvbi5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVQaWNrZXJNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL0RhdGV0aW1lcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykge1xuICAgIGFycjJbaV0gPSBhcnJbaV07XG4gIH1cblxuICByZXR1cm4gYXJyMjtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0XCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXlcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcbiAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5XCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXlcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZFwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsIi8qKlxuICogSGFuZGxlIHR5cGluZyB0aW1lIGFuZCBhZGRpbmcgbmVjZXNzYXJ5IDpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZWRWYWx1ZVxuICpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VUeXBlZFRpbWUodHlwZWRWYWx1ZSkge1xuICBsZXQgYWN0dWFsVmFsdWUgPSB0eXBlZFZhbHVlO1xuICBpZiAoXG4gICAgYWN0dWFsVmFsdWUubGVuZ3RoID09PSAzICYmXG4gICAgYWN0dWFsVmFsdWUuc3BsaXQoJycpLmV2ZXJ5KG4gPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIobikpKVxuICApIHtcbiAgICAvLyBhZGQgJzonIGlmIHVzZXIgdHlwZXMgdGhyZWUgbnVtYmVycyBpbiBhIHJvd1xuICAgIGlmIChOdW1iZXIoYWN0dWFsVmFsdWUuc2xpY2UoMCwgMikpIDw9IDIzKSB7XG4gICAgICBhY3R1YWxWYWx1ZSA9IGAke2FjdHVhbFZhbHVlLnNsaWNlKDAsIDIpfToke2FjdHVhbFZhbHVlWzJdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWVbMF19OiR7YWN0dWFsVmFsdWUuc2xpY2UoMSl9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjdHVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgZGF0ZSBvciB0aW1lIGlucHV0IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge051bWJlcn0gcHJvcHMudmFsdWUgICAgQ3VycmVudGx5IHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DaGFuZ2UgICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIGlucHV0IGlzIGNoYW5nZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLmdldERpc3BsYXkgICBGdW5jdGlvbiB0byBnZXQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRpbWVzdGFtcFxuICogQHBhcmFtIHthcnJheX0gICAgcHJvcHMudGltZUNob2ljZXMgIEFycmF5IG9mIHRpbWVzdGFtcHMgdG8gY2hvb3NlIGZyb21cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRlICAgICAgICAgICBGdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCB3aGVuIHVzZXIgdHlwZXMgc29tZXRoaW5nIGFuZCBoaXRzIGVudGVyLiBQYXJhbWV0ZXIgaXMgaW5wdXQgYXMgc3RyaW5nc3RyaW5nLCByZXR1cm4gbnVtYmVyIHRpbWVzdGFtcCBpZiBpbnB1dCBpcyB2YWxpZCBvciBudWxsIGlmIGludmFsaWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqXG4gKiBAZXhhbXBsZVxuICogPERlc2t0b3BEYXRldGltZXBpY2tlclxuICogICB2YWx1ZT17MTU5MDEzMzgyMzAwMH1cbiAqICAgb25DaGFuZ2U9e3RpbWVzdGFtcCA9PiB1cGRhdGUodGltZXN0YW1wKX1cbiAqICAgZ2V0RGlzcGxheT17dGltZXN0YW1wID0+IGZvcm1hdFRpbWUodGltZXN0YW1wKX1cbiAqICAgdGltZUNob2ljZXM9e1sxNTkwMTMzODIzMDAwXX1cbiAqICAgdmFsaWRhdGU9KGlucHV0ID0+IHZhbGlkYXRlVGltZVN0cmluZyhpbnB1dCkpXG4gKiAgIGlkPVwidGltZWlucHV0XCJcbiAqICAgaWNvbj1cIjxJY29uIC8+XCJcbiAqICAgZGlzYWJsZVR5cGluZz17ZmFsc2V9IC8vIGNhbiBiZSBvbWl0dGVkIGlmIG5vdCB0cnVlXG4gKi9cbmZ1bmN0aW9uIERlc2t0b3BEYXRldGltZXBpY2tlcih7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgZ2V0RGlzcGxheSxcbiAgdGltZUNob2ljZXMsXG4gIHZhbGlkYXRlLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIGRpc2FibGVUeXBpbmcsXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFt0eXBpbmcsIHNldFR5cGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuXG4gIC8vIG5ld1ZhbHVlIGlzIHN0cmluZ1xuICBjb25zdCBoYW5kbGVUaW1lc3RhbXAgPSBuZXdWYWx1ZSA9PiB7XG4gICAgY29uc3QgYXNOdW1iZXIgPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgIGlmIChcbiAgICAgIE51bWJlci5pc05hTihhc051bWJlcikgfHxcbiAgICAgICFtb21lbnQoYXNOdW1iZXIpLmlzVmFsaWQoKSB8fFxuICAgICAgbW9tZW50KGFzTnVtYmVyKS52YWx1ZU9mKCkgIT09IGFzTnVtYmVyXG4gICAgKSB7XG4gICAgICAvLyBUT0RPIGhhbmRsZSBlcnJvcj9cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DaGFuZ2UoYXNOdW1iZXIpO1xuICB9O1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAobmV3VmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoZGlzYWJsZVR5cGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnaW5wdXQtY2hhbmdlJykge1xuICAgICAgY29uc3QgdmFsaWRhdGVkID0gdXRpbHMucGFyc2VUeXBlZFRpbWUobmV3VmFsdWUpO1xuICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKHZhbGlkYXRlZCk7XG4gICAgICBzZXRUeXBpbmcodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvcHRpb25zID0gdGltZUNob2ljZXMubWFwKHQgPT4ge1xuICAgIHJldHVybiB7IHZhbHVlOiB0LnRvU3RyaW5nKCksIGxhYmVsOiBnZXREaXNwbGF5KHQpIH07XG4gIH0pO1xuICBjb25zdCBjbG9zZXN0T3B0aW9uID0gb3B0aW9ucy5yZWR1Y2UoKGEsIGIpID0+XG4gICAgTWF0aC5hYnModmFsdWUgLSBhLnZhbHVlKSA8IE1hdGguYWJzKHZhbHVlIC0gYi52YWx1ZSkgPyBhIDogYixcbiAgKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICAgIHtsYWJlbH0ge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aWNvbn1cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17bGFiZWxJZH1cbiAgICAgICAgICBhcmlhTGl2ZU1lc3NhZ2VzPXt7XG4gICAgICAgICAgICBndWlkYW5jZTogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJy4nOyAvLyB0aGlzIGNhbid0IGJlIGVtcHR5IGZvciBzb21lIHJlYXNvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkZpbHRlcjogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKHsgY29udGV4dCwgbGFiZWw6IGl0ZW1MYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb250ZXh0ID09PSAnbWVudScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUxhYmVsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIGlucHV0SWQ9e2lucHV0SWR9XG4gICAgICAgICAgb25DaGFuZ2U9e3RpbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGluZykge1xuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWQgPSB2YWxpZGF0ZShkaXNwbGF5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh2YWxpZGF0ZWQpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgSW5kaWNhdG9yc0NvbnRhaW5lcjogKCkgPT4gbnVsbCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkYXRldGltZXBpY2tlci1zZWxlY3QtY29udGFpbmVyJ119XG4gICAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwiZGF0ZXRpbWVwaWNrZXItc2VsZWN0XCJcbiAgICAgICAgICBvbklucHV0Q2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgIGlucHV0VmFsdWU9eyFkaXNhYmxlVHlwaW5nICYmIGRpc3BsYXlWYWx1ZX1cbiAgICAgICAgICB2YWx1ZT17Y2xvc2VzdE9wdGlvbn1cbiAgICAgICAgICBmaWx0ZXJPcHRpb249eygpID0+IHRydWV9XG4gICAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlPXtkaXNhYmxlVHlwaW5nfVxuICAgICAgICAgIHRhYlNlbGVjdHNWYWx1ZT17ZmFsc2V9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKCFkaXNhYmxlVHlwaW5nKSB7XG4gICAgICAgICAgICAgIGUudGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgICAvLyByZW1vdmluZyBmb2N1cyBhbHNvIGxvY2tzIGluIHZhbHVlXG4gICAgICAgICAgICBpZiAodHlwaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IHZhbGlkYXRlKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHZhbGlkYXRlZCk7XG4gICAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uS2V5RG93bj17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCddLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaXNTZWFyY2hhYmxlPXshZGlzYWJsZVR5cGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC8+XG4gICk7XG59XG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdGltZUNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLmlzUmVxdWlyZWQsXG4gIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZVR5cGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuRGVza3RvcERhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGlzYWJsZVR5cGluZzogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BEYXRldGltZXBpY2tlcjtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdG9kYXk6ICdIZXV0ZScsXG4gICAgdG9tb3Jyb3c6ICdNb3JnZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1NjaGxpZcOfZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ0F1c3dhaGwgZ2VzY2hsb3NzZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZmZm5lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnQXVzd2FobCBnZcO2ZmZuZXQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdHVtIHVuZCBVaHJ6ZWl0YXVzd2FobCcsXG4gICAgYXJyaXZhbDogJ0Fua3VuZnQnLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQWJmYWhydCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQWJmYWhydCBqZXR6dCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1plaXQgd8OkaGxlbicsXG4gICAgcmVhZHk6ICdGZXJ0aWcnLFxuICAgIHRpbWU6ICdaZWl0JyxcbiAgICBjYW5jZWw6ICdBYmJyZWNoZW4nLFxuICB9LFxuICBlbjoge1xuICAgIHRvZGF5OiAnVG9kYXknLFxuICAgIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ0Nsb3NlIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdUaW1lcGlja2VyIGNsb3NlZCcsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdPcGVuIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdUaW1lcGlja2VyIG9wZW5lZCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0ZSBhbmQgdGltZXBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQ2hhbmdpbmcgdGltZSBwYXJhbWV0ZXJzIHdpbGwgdHJpZ2dlciBhIG5ldyBzZWFyY2guJyxcbiAgICBhcnJpdmFsOiAnQXJyaXZhbCcsXG4gICAgZGF0ZTogJ0RhdGUnLFxuICAgIGRlcGFydHVyZTogJ0RlcGFydHVyZScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTGVhdmluZyBub3cnLFxuICAgIHRpbWU6ICdUaW1lJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnQ2hvb3NlIHRpbWUnLFxuICAgIHJlYWR5OiAnUmVhZHknLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gIH0sXG4gIGZpOiB7XG4gICAgdG9kYXk6ICdUw6Ruw6TDpG4nLFxuICAgIHRvbW9ycm93OiAnSHVvbWVubmEnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N1bGplIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVmFsaXRzaW4gc3VsamV0dHUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnQXZhYSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1ZhbGl0c2luIGF2YXR0dScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnQWlrYS0gamEgcMOkaXbDpG3DpMOkcsOkdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0Fpa2F2YWxpbnRvamVuIG11dXR0YW1pbmVuIGxhdWthaXNlZSB1dWRlbiBoYXVuLicsXG4gICAgYXJyaXZhbDogJ1BlcmlsbMOkJyxcbiAgICBkYXRlOiAnUMOkaXbDpCcsXG4gICAgZGVwYXJ0dXJlOiAnTMOkaHTDtmFpa2EnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0zDpGh0w7Ygbnl0JyxcbiAgICB0aW1lOiAnQWlrYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1ZhbGl0c2UgYWlrYScsXG4gICAgcmVhZHk6ICdWYWxtaXMnLFxuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICB9LFxuICBzdjoge1xuICAgIHRvZGF5OiAnSSBkYWcnLFxuICAgIHRvbW9ycm93OiAnSSBtb3Jnb24nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N0w6RuZyB2w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdWw6RsamFyZW4gc3TDpG5nZGUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZwcG5hIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1bDpGxqYXJlbiDDtnBwbmFkZScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnVGlkLSBvY2ggZGF0dW12w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ09tIGR1IMOkbmRyYXIgdGlkZXJuYSwgc3RhcnRhcyBlbiBueSBzw7ZrbmluZyBhdXRvbWF0aXNrdC4nLFxuICAgIGFycml2YWw6ICdBbmzDpG5kZXInLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQXZnw6VuZ3N0aWQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0F2Z8OlciBudScsXG4gICAgdGltZTogJ1RpZCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1bDpGxqIHRpZCcsXG4gICAgcmVhZHk6ICdGw6RyZGlnJyxcbiAgICBjYW5jZWw6ICdBdmJyeXQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBpc0FuZHJvaWQgfSBmcm9tICcuL21vYmlsZURldGVjdGlvbic7XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgYSBkYXRlIGlucHV0IG9uIG1vYmlsZVxuICovXG5mdW5jdGlvbiBNb2JpbGVEYXRlcGlja2VyKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9uQ2hhbmdlLFxuICBpdGVtQ291bnQsXG4gIHN0YXJ0VGltZSxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICB0aW1lWm9uZSxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuXG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2Nyb2xsUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRlQ2hvaWNlcyA9IEFycmF5KGl0ZW1Db3VudClcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KHN0YXJ0VGltZSkuYWRkKGksICdkYXknKS52YWx1ZU9mKCkpO1xuICBjb25zdCBtaW51dGUgPSAxMDAwICogNjA7XG4gIGNvbnN0IGRpZmZzID0gZGF0ZUNob2ljZXMubWFwKHQgPT4gdmFsdWUgLSB0KTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBkaWZmcy5maW5kSW5kZXgodCA9PiB0IDwgbWludXRlKTsgLy8gd2hlbiB0aW1lIGlzIG5vdywgdGhlIHRpbWVzIG1pZ2h0IGRpZmZlciBieSBsZXNzIHRoYW4gb25lIG1pbnV0ZVxuICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gNTA7XG4gIC8vIHNjcm9sbCB0byBzZWxlY3RlZCB0aW1lIHdoZW4gZHJvcGRvd24gaXMgb3BlbmVkXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wZW4gJiYgc2Nyb2xsUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IGVsZW1lbnRIZWlnaHQgKiBzY3JvbGxJbmRleDtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgb3Blbl0pO1xuICBjb25zdCBuYXRpdmVJbnB1dCA9ICFpc0FuZHJvaWQoKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4+e2ljb259PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLWlucHV0LWRpc3BsYXknXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2UoTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2RhdGVDaG9pY2VzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2RhdGV9IHZhbHVlPXtkYXRlfT5cbiAgICAgICAgICAgICAgICAgICAge2dldERpc3BsYXkoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e2RhdGVDaG9pY2VzfVxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGlvblZhbHVlPXtzID0+IHMudG9TdHJpbmcoKX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICB2YWx1ZTogZ2V0RGlzcGxheSh2YWx1ZSksXG4gICAgICAgICAgICAgIG9uQ2hhbmdlOiAoXywgeyBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBsYWJlbElkLFxuICAgICAgICAgICAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbm9uZScsXG4gICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljaz17ZmFsc2V9XG4gICAgICAgICAgICBvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgICByZW5kZXJTdWdnZXN0aW9uc0NvbnRhaW5lcj17KHsgY29udGFpbmVyUHJvcHMsIGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgICAgLy8gc2V0IHJlZnMgZm9yIGF1dG9zdWdnZXN0IGxpYnJhcnkgYW5kIHNjcm9sbGJhciBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gZWxlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICAgIHJlZihlbGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdiB0YWJJbmRleD1cIi0xXCIgey4uLm90aGVyUmVmc30gcmVmPXtjb250YWluZXJSZWZ9PlxuICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHRoZW1lPXtzdHlsZXN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC8+XG4gICk7XG59XG5Nb2JpbGVEYXRlcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBzdGFydFRpbWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIGRhdGVUaW1lQ29tYmluZWQ6IFByb3BUeXBlcy5ib29sLFxuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbk1vYmlsZURhdGVwaWNrZXIuZGVmYXVsdFByb3BzID0ge1xuICBpY29uOiBudWxsLFxuICBkYXRlVGltZUNvbWJpbmVkOiBmYWxzZSxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9iaWxlRGF0ZXBpY2tlcjtcbiIsIi8qKlxuICogIERldGVjdCBpZiB1c2VyIGlzIG9uIGEgbW9iaWxlIGRldmljZSBieSBwYXJzaW5nIHVzZXJBZ2VudC4gVGhpcyBpcyBub3QgMTAwJSByZWxpYWJsZSBidXQgY2xvc2UgZW5vdWdoLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuICBjb25zdCBtb2JpbGUgPSAvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXFwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2kudGVzdChcbiAgICB1c2VyQWdlbnQsXG4gICk7XG4gIHJldHVybiBtb2JpbGU7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIHVzZXIgaXMgb24gYW4gYW5kcm9pZCBkZXZpY2UuIE5vdCAxMDAlIHJlbGlhYmxlLlxuICovXG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdhbmRyb2lkJykgPiAtMTtcbn1cblxuZXhwb3J0IHsgaXNNb2JpbGUsIGlzQW5kcm9pZCB9O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZUxheW91dEVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgdGltZSBpbnB1dCBvbiBtb2JpbGVcbiAqL1xuZnVuY3Rpb24gTW9iaWxlVGltZXBpY2tlcih7XG4gIHZhbHVlLFxuICBnZXREaXNwbGF5LFxuICBvbkNoYW5nZSxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICB0aW1lWm9uZSxcbiAgdmFsaWRhdGUsXG59KSB7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBjaGFuZ2VJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHRpbWVJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aW1lSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgdGltZUlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICAgIDxzcGFuPntpY29ufTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgICBpbnB1dE1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgbWF4TGVuZ3RoPVwiNlwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3RpbWUtaW5wdXQtbW9iaWxlJ119XG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgb25Gb2N1cz17ZSA9PiB7XG4gICAgICAgICAgICBlLnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTsgLy8gc2V0IGNhcmV0IHRvIHN0YXJ0IG9mIGlucHV0XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAvLyBudW1iZXIgdHlwZWQgYXMgZmlyc3QgY2hhciA9PiBjbGVhciByZXN0IG9mIHRoZSBpbnB1dFxuICAgICAgICAgICAgICBuZXdWYWx1ZS5tYXRjaCgvWzAtOV17M306WzAtOV17Mn0vKSAmJlxuICAgICAgICAgICAgICBuZXdWYWx1ZS5zbGljZSgxKSA9PT0gaW5wdXRWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuY2hhckF0KDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWN0dWFsID0gdXRpbHMucGFyc2VUeXBlZFRpbWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgY2hhbmdlSW5wdXRWYWx1ZShhY3R1YWwpO1xuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdmFsaWRhdGUoYWN0dWFsLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e3RpbWVJbnB1dFJlZn1cbiAgICAgICAgLz5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC8+XG4gICk7XG59XG5Nb2JpbGVUaW1lcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsaWRhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5Nb2JpbGVUaW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgaWNvbjogbnVsbCxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9iaWxlVGltZXBpY2tlcjtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZmknO1xuaW1wb3J0IHVuaXF1ZUlkIGZyb20gJ2xvZGFzaC91bmlxdWVJZCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBNb2RhbCBmcm9tICdyZWFjdC1tb2RhbCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBNb2JpbGVEYXRlcGlja2VyIGZyb20gJy4vTW9iaWxlRGF0ZXBpY2tlcic7XG5pbXBvcnQgTW9iaWxlVGltZXBpY2tlciBmcm9tICcuL01vYmlsZVRpbWVwaWNrZXInO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG5tb21lbnQubG9jYWxlKCdlbicpO1xuaTE4bmV4dC5pbml0KHsgbG5nOiAnZW4nLCByZXNvdXJjZXM6IHt9IH0pO1xuT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pLFxuKTtcblxuLyoqXG4gKiBUT0RPXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVBpY2tlck1vZGFsKHtcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uU3VibWl0LFxuICBvbkNhbmNlbCxcbiAgdGltZXN0YW1wLFxuICBnZXRUaW1lRGlzcGxheSxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudCxcbiAgZ2V0RGF0ZURpc3BsYXksXG4gIHZhbGlkYXRlVGltZSxcbiAgZm9udFdlaWdodHMsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgdHJhbnNsYXRpb25TZXR0aW5ncyA9IHsgbG5nOiBsYW5nIH07XG5cbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZVRpbWVzdGFtcF0gPSB1c2VTdGF0ZSh0aW1lc3RhbXApO1xuXG4gIGNvbnN0IFtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50LCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICApO1xuXG4gIGZ1bmN0aW9uIG9uQXJyaXZhbENsaWNrKCkge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnYXJyaXZhbCcpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25EZXBhcnR1cmVDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25EYXRlQ2hhbmdlKG5ld1ZhbHVlKSB7XG4gICAgY2hhbmdlVGltZXN0YW1wKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVGltZUNoYW5nZShuZXdWYWx1ZSkge1xuICAgIGNoYW5nZVRpbWVzdGFtcChuZXdWYWx1ZSk7XG4gIH1cblxuICAvLyBmb3IgaW5wdXQgbGFiZWxzXG4gIGNvbnN0IFtodG1sSWRdID0gdXNlU3RhdGUodW5pcXVlSWQoJ2RhdGV0aW1lcGlja2VyLScpKTtcbiAgY29uc3QgZGF0ZVNlbGVjdFN0YXJ0VGltZSA9IG1vbWVudCgpXG4gICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgLmhvdXIobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmhvdXIoKSlcbiAgICAubWludXRlKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5taW51dGUoKSlcbiAgICAudmFsdWVPZigpO1xuXG4gIHJldHVybiAoXG4gICAgPE1vZGFsXG4gICAgICBhcHBFbGVtZW50PXtkb2N1bWVudCA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhcHAnKSA6IHVuZGVmaW5lZH1cbiAgICAgIGlzT3BlblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1jb250ZW50J119XG4gICAgICBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ21vYmlsZS1tb2RhbC1vdmVybGF5J119XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3RvcC1yb3cnXX0+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzWydtb2RhbC10aXRsZSddfT5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2Nob29zZS10aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25Ob3dDbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0YWItcm93J119PlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRhYi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj17YCR7aHRtbElkfS1tb2RhbC1hcnJpdmFsYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2RlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LXJvdyddfT5cbiAgICAgICAgICA8TW9iaWxlRGF0ZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICBpdGVtQ291bnQ9e2RhdGVTZWxlY3RJdGVtQ291bnR9XG4gICAgICAgICAgICBzdGFydFRpbWU9e2RhdGVTZWxlY3RTdGFydFRpbWV9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kYXRlYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ2RhdGUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWydkYXRlLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxNb2JpbGVUaW1lcGlja2VyXG4gICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uVGltZUNoYW5nZX1cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgndGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICB2YWxpZGF0ZT17dmFsaWRhdGVUaW1lfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydidXR0b25zLXJvdyddfT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyZWFkeS1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgIG9uU3VibWl0KGRpc3BsYXlUaW1lc3RhbXAsIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgncmVhZHknLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjYW5jZWwtYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNhbmNlbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdjYW5jZWwnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L01vZGFsPlxuICApO1xufVxuXG5Nb2JpbGVQaWNrZXJNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNhbmNlbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldFRpbWVEaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkYXRlU2VsZWN0SXRlbUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERhdGVEaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB2YWxpZGF0ZVRpbWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlUGlja2VyTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVQaWNrZXJNb2RhbDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZmknO1xuaW1wb3J0IHVuaXF1ZUlkIGZyb20gJ2xvZGFzaC91bmlxdWVJZCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBJY29uIGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWljb24nO1xuaW1wb3J0IERlc2t0b3BEYXRldGltZXBpY2tlciBmcm9tICcuL0Rlc2t0b3BEYXRldGltZXBpY2tlcic7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vdHJhbnNsYXRpb25zJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcbmltcG9ydCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQgZnJvbSAnLi9kYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQnO1xuaW1wb3J0IE1vYmlsZVBpY2tlck1vZGFsIGZyb20gJy4vTW9iaWxlUGlja2VyTW9kYWwnO1xuXG5tb21lbnQubG9jYWxlKCdlbicpO1xuaTE4bmV4dC5pbml0KHtcbiAgbG5nOiAnZmknLFxuICBmYWxsYmFja0xuZzogJ2ZpJyxcbiAgZGVmYXVsdE5TOiAndHJhbnNsYXRpb24nLFxuICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgZXNjYXBlVmFsdWU6IGZhbHNlLCAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgfSxcbn0pO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgY29tYm9ib3ggc3R5bGUgaW5wdXRzIGZvciBzZWxlY3RpbmcgZGF0ZSBhbmQgdGltZS4gVGhpcyBpcyBhIGNvbnRyb2xsZWQgY29tcG9uZW50LCB0aW1lc3RhbXAgaXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYm90aCBpbnB1dHMuXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gcHJvcHMudGltZXN0YW1wICAgICAgQ3VycmVudGx5IHNlbGVjdGVkIHRpbWUgYXMgYSB1bml4IHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHMuIFNldCB0byBudWxsIHRvIHNpZ25pZnkgdGhhdCBcIm5vd1wiIGlzIHNlbGVjdGVkLiBEaXNwbGF5ZWQgdGltZSBpcyB1cGRhdGVkIGluIHJlYWx0aW1lIHdoZW4gc2V0IHRvIG51bGxcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uVGltZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gdGltZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgQ2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlc1xuICogQHBhcmFtIHsnYXJyaXZhbCd8J2RlcGFydHVyZSd9IHByb3BzLmRlcGFydHVyZU9yQXJyaXZhbCAgIERldGVybWluZSBpZiBpbnB1dCBpcyBzZXQgdG8gY2hvb3NlIGRlcGFydHVyZSBvciBhcnJpdmFsIHRpbWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EZXBhcnR1cmVDbGljayAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0dXJlXCIgYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQXJyaXZhbENsaWNrICAgICBDYWxsZWQgd2hlbiBcImFycml2YWxcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNlcnZpY2VUaW1lUmFuZ2UgICAgICAgICAgIERldGVybWluZSBudW1iZXIgb2YgZGF5cyBzaG93biBpbiB0aW1lcGlja2VyLiBPcHRpb25hbC4gZGVmYXVsdCBpcyAzMC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uT3BlbiAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgb3Blbi4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNsb3NlICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIGNsb3NlZC4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vcGVuUGlja2VyICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHRpbWVwaWNrZXIgc2hvdWxkIGJlIG9wZW4gaW4gaW50aWFsIHJlbmRlci4gT3B0aW9uYWwuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICpcbiAqXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHRpbWVzdGFtcD17MTU5MDEzMzgyMzAwMH1cbiAqICAgb25UaW1lQ2hhbmdlPXsobmV3VGltZXN0YW1wKSA9PiB1cGRhdGUobmV3VGltZXN0YW1wKX1cbiAqICAgb25EYXRlQ2hhbmdlPXsobmV3VGltZXN0YW1wKSA9PiB1cGRhdGUobmV3VGltZXN0YW1wKX1cbiAqICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXsnZGVwYXJ0dXJlJ31cbiAqICAgb25Ob3dDbGljaz17KCkgPT4gc2V0VGltZXN0YW1wVG9OdWxsKCl9XG4gKiAgIG9uRGVwYXJ0dXJlQ2xpY2s9eygpID0+IGRlcGFydHVyZUNsaWNrZWQoKX1cbiAqICAgb25BcnJpdmFsQ2xpY2s9eygpID0+IGFycml2YWxDbGlja2VkKCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlcih7XG4gIHRpbWVzdGFtcCxcbiAgb25UaW1lQ2hhbmdlLFxuICBvbkRhdGVDaGFuZ2UsXG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIGVtYmVkV2hlbkNsb3NlZCxcbiAgZW1iZWRXaGVuT3BlbixcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvbk1vZGFsU3VibWl0LFxuICBmb250V2VpZ2h0cyxcbiAgc2VydmljZVRpbWVSYW5nZSxcbiAgb25PcGVuLFxuICBvbkNsb3NlLFxuICBvcGVuUGlja2VyLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IFtpc09wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUob3BlblBpY2tlciB8fCBmYWxzZSk7XG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wXSA9IHVzZVN0YXRlKFxuICAgIHRpbWVzdGFtcCB8fCBtb21lbnQoKS52YWx1ZU9mKCksXG4gICk7XG4gIC8vIHRpbWVyIGZvciB1cGRhdGluZyBkaXNwbGF5VGltZXN0YW1wIGluIHJlYWwgdGltZVxuICBjb25zdCBbdGltZXJJZCwgc2V0VGltZXJdID0gdXNlU3RhdGUobnVsbCk7XG4gIC8vIGZvciBpbnB1dCBsYWJlbHNcbiAgY29uc3QgW2h0bWxJZF0gPSB1c2VTdGF0ZSh1bmlxdWVJZCgnZGF0ZXRpbWVwaWNrZXItJykpO1xuICBjb25zdCBbdXNlTW9iaWxlSW5wdXRzXSA9IHVzZVN0YXRlKGlzTW9iaWxlKCkgJiYgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkKCkpO1xuICBjb25zdCBvcGVuUGlja2VyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGFsZXJ0UmVmID0gdXNlUmVmKCk7XG5cbiAgY29uc3QgdHJhbnNsYXRpb25TZXR0aW5ncyA9IHsgbG5nOiBsYW5nIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2gobGFuZ3VhZ2UgPT5cbiAgICAgIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZ3VhZ2UsICd0cmFuc2xhdGlvbicsIHRyYW5zbGF0aW9uc1tsYW5nXSksXG4gICAgKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgfSwgW2xhbmddKTtcblxuICBjb25zdCBub3dTZWxlY3RlZCA9IHRpbWVzdGFtcCA9PT0gbnVsbDtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobm93U2VsZWN0ZWQpIHtcbiAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2xlYXIgdGltZXJcbiAgICAgIGlmICh0aW1lcklkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJJZCk7XG4gICAgICAgIHNldFRpbWVyKG51bGwpO1xuICAgICAgfVxuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgIH1cbiAgfSwgW3RpbWVzdGFtcF0pO1xuXG4gIC8vIHNldCB0aW1lciB0byB1cGRhdGUgZGlzcGxheVRpbWVzdGFtcCB3aGVuIG1pbnV0ZSBjaGFuZ2VzIGlmIG5vd1NlbGVjdGVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFub3dTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRpbWVySWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJJZCk7XG4gICAgfVxuICAgIGNvbnN0IG5ld0lkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY29uc3Qgc2FtZU1pbnV0ZSA9IG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5pc1NhbWUobm93LCAnbWludXRlJyk7XG4gICAgICBpZiAoIXNhbWVNaW51dGUpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChuZXdJZCk7XG4gICAgICAgIHNldFRpbWVyKG51bGwpO1xuICAgICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKG5vdyk7XG4gICAgICB9XG4gICAgfSwgNTAwMCk7XG4gICAgc2V0VGltZXIobmV3SWQpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgfSwgW2Rpc3BsYXlUaW1lc3RhbXBdKTtcblxuICBjb25zdCBwcmV2SXNPcGVuUmVmID0gdXNlUmVmKCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJldklzT3BlblJlZi5jdXJyZW50ID0gaXNPcGVuO1xuICB9KTtcbiAgY29uc3QgcHJldklzT3BlbiA9IHByZXZJc09wZW5SZWYuY3VycmVudDtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcHJldklzT3BlbiA9PT0gaXNPcGVuKSB7XG4gICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgIGlmIChpbnB1dFJlZikge1xuICAgICAgICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob3BlblBpY2tlclJlZikge1xuICAgICAgICBvcGVuUGlja2VyUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBwYXJhbSBkYXRlIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXREYXRlRGlzcGxheSA9IGRhdGUgPT4ge1xuICAgIGNvbnN0IHRpbWUgPSBtb21lbnQoZGF0ZSk7XG4gICAgbGV0IGZvcm1hdHRlZDtcbiAgICBpZiAodGltZS5pc1NhbWUobW9tZW50KCksICdkYXknKSkge1xuICAgICAgZm9ybWF0dGVkID0gaTE4bmV4dC50KCd0b2RheScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpO1xuICAgIH0gZWxzZSBpZiAodGltZS5pc1NhbWUobW9tZW50KCkuYWRkKDEsICdkYXknKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvbW9ycm93JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1hdHRlZCA9IHRpbWUuZm9ybWF0KCdkZCBELk0uJyk7XG4gICAgfVxuICAgIGZvcm1hdHRlZCA9IGAke2Zvcm1hdHRlZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke2Zvcm1hdHRlZC5zbGljZSgxKX1gO1xuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH07XG5cbiAgLy8gcGFyYW0gdGltZSBpcyB0aW1lc3RhbXBcbiAgY29uc3QgZ2V0VGltZURpc3BsYXkgPSB0aW1lID0+IHtcbiAgICByZXR1cm4gbW9tZW50KHRpbWUpLmZvcm1hdCgnSEg6bW0nKTtcbiAgfTtcblxuICBjb25zdCB2YWxpZGF0ZVRpbWUgPSAoaW5wdXRWYWx1ZSwgY3VycmVudFRpbWVzdGFtcCkgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBpbnB1dFZhbHVlLnRyaW0oKTtcbiAgICBpZiAodHJpbW1lZC5tYXRjaCgvXlswLTldezEsMn0oXFwufDopWzAtOV17Mn0kLykgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNwbGl0dGVyID0gdHJpbW1lZC5pbmNsdWRlcygnLicpID8gJy4nIDogJzonO1xuICAgICAgY29uc3QgdmFsdWVzID0gdHJpbW1lZC5zcGxpdChzcGxpdHRlcik7XG4gICAgICBjb25zdCBob3VycyA9IE51bWJlcih2YWx1ZXNbMF0pO1xuICAgICAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKHZhbHVlc1sxXSk7XG4gICAgICBjb25zdCBtaW51dGVzVmFsaWQgPVxuICAgICAgICAhTnVtYmVyLmlzTmFOKG1pbnV0ZXMpICYmIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xuICAgICAgaWYgKCFtaW51dGVzVmFsaWQgfHwgIWhvdXJzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdTdGFtcCA9IG1vbWVudChjdXJyZW50VGltZXN0YW1wKVxuICAgICAgICAuaG91cnMoaG91cnMpXG4gICAgICAgIC5taW51dGVzKG1pbnV0ZXMpXG4gICAgICAgIC52YWx1ZU9mKCk7XG4gICAgICByZXR1cm4gbmV3U3RhbXA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdGVkTW9tZW50ID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApO1xuICBjb25zdCB0aW1lU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcbiAgbGV0IHRpbWVDaG9pY2VzID0gW107XG4gIGNvbnN0IGN1cnJlbnQgPSBtb21lbnQodGltZVNlbGVjdFN0YXJ0VGltZSk7XG4gIHdoaWxlIChjdXJyZW50LmlzU2FtZSh0aW1lU2VsZWN0U3RhcnRUaW1lLCAnZGF5JykpIHtcbiAgICB0aW1lQ2hvaWNlcy5wdXNoKGN1cnJlbnQudmFsdWVPZigpKTtcbiAgICBjdXJyZW50LmFkZCgxNSwgJ21pbnV0ZXMnKTtcbiAgfVxuICBpZiAodGltZXN0YW1wID09PSBudWxsKSB7XG4gICAgLy8gaWYgdGltZSBpcyBzZXQgdG8gbm93XG4gICAgLy8gYWRkIHRpbWVzIGluIDUgbWluIGludGVydmFscyBmb3IgbmV4dCAzMCBtaW5zXG4gICAgY29uc3QgZml2ZU1pbnV0ZXMgPSAxMDAwICogNjAgKiA1O1xuICAgIGNvbnN0IG5leHRGaXZlTWluID0gTWF0aC5jZWlsKGRpc3BsYXlUaW1lc3RhbXAgLyBmaXZlTWludXRlcykgKiBmaXZlTWludXRlcztcbiAgICBjb25zdCB0aW1lc1RvQWRkID0gQXJyYXkoNylcbiAgICAgIC5maWxsKClcbiAgICAgIC5tYXAoKF8sIGkpID0+IG5leHRGaXZlTWluICsgaSAqIGZpdmVNaW51dGVzKTtcbiAgICBjb25zdCBjbG9zZXN0SW5kZXhBZnRlciA9IHRpbWVDaG9pY2VzXG4gICAgICAubWFwKHQgPT4gZGlzcGxheVRpbWVzdGFtcCAtIHQpXG4gICAgICAuZmluZEluZGV4KHQgPT4gdCA8PSAwKTtcbiAgICB0aW1lQ2hvaWNlcy5zcGxpY2UoY2xvc2VzdEluZGV4QWZ0ZXIsIDAsIC4uLnRpbWVzVG9BZGQpO1xuICAgIHRpbWVDaG9pY2VzID0gQXJyYXkuZnJvbShuZXcgU2V0KHRpbWVDaG9pY2VzKSk7IC8vIHJlbW92ZSBkdXBsaWNhdGVzXG4gIH1cblxuICBjb25zdCBkYXRlU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KClcbiAgICAuc3RhcnRPZignZGF5JylcbiAgICAuaG91cihzZWxlY3RlZE1vbWVudC5ob3VyKCkpXG4gICAgLm1pbnV0ZShzZWxlY3RlZE1vbWVudC5taW51dGUoKSlcbiAgICAudmFsdWVPZigpO1xuICBjb25zdCBkYXRlQ2hvaWNlcyA9IEFycmF5KHNlcnZpY2VUaW1lUmFuZ2UpXG4gICAgLmZpbGwoKVxuICAgIC5tYXAoKF8sIGkpID0+IG1vbWVudChkYXRlU2VsZWN0U3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKSB7XG4gICAgaWYgKGFsZXJ0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gaTE4bmV4dC50KFxuICAgICAgICAnYWNjZXNzaWJsZS1jbG9zZWQnLFxuICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IG51bGw7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3dTY3JlZW5yZWFkZXJPcGVuQWxlcnQoKSB7XG4gICAgaWYgKGFsZXJ0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gaTE4bmV4dC50KFxuICAgICAgICAnYWNjZXNzaWJsZS1vcGVuZWQnLFxuICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBhbGVydFJlZi5jdXJyZW50LmlubmVySFRNTCA9IG51bGw7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlck9wZW4oKSB7XG4gICAgaWYgKHVzZU1vYmlsZUlucHV0cykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgaXNPcGVuICYmIChcbiAgICAgICAgICA8TW9iaWxlUGlja2VyTW9kYWxcbiAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbD17ZGVwYXJ0dXJlT3JBcnJpdmFsfVxuICAgICAgICAgICAgb25Ob3dDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgICAgb25Ob3dDbGljaygpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICBvblN1Ym1pdD17KG5ld1RpbWVzdGFtcCwgbmV3RGVwYXJ0dXJlT3JBcnJpdmFsKSA9PiB7XG4gICAgICAgICAgICAgIG9uTW9kYWxTdWJtaXQobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpO1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBnZXRUaW1lRGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICB0aW1lc3RhbXA9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREYXRlRGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICBkYXRlU2VsZWN0SXRlbUNvdW50PXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICB2YWxpZGF0ZVRpbWU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXtmb250V2VpZ2h0c31cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2RhdGV0aW1lcGlja2VyLW9wZW4tY29udGFpbmVyJ119ICR7XG4gICAgICAgICAgICAhaXNPcGVuID8gc3R5bGVzLmhpZGRlbiA6ICcnXG4gICAgICAgICAgfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICBpc09wZW5cbiAgICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8c3BhbiAvPlxuICAgICAgICAgICAgey8qIFRoaXMgZW1wdHkgc3BhbiBwcmV2ZW50cyBhIHdlaXJkIGZvY3VzIGJ1ZyBvbiBjaHJvbWUgKi99XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW9yLWFycml2YWwtY29udGFpbmVyJ119PlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gJ2FjdGl2ZScgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWFycml2YWxgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbm93YH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3JpZ2h0LWVkZ2UnXX0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtYnV0dG9uJ119XG4gICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtaWNvbiddfT5cbiAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNsb3NlXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtY2xvc2UnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWydwaWNrZXItY29udGFpbmVyJ119YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtbGVmdCddfT5cbiAgICAgICAgICAgICAgICA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICAgICAgICB0aW1lQ2hvaWNlcz17ZGF0ZUNob2ljZXN9XG4gICAgICAgICAgICAgICAgICB2YWxpZGF0ZT17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWydkYXRlLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2FsZW5kYXJcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LWRhdGVgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgnZGF0ZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVR5cGluZ1xuICAgICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LXJpZ2h0J119PlxuICAgICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25UaW1lQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXt0aW1lQ2hvaWNlc31cbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlPXt2YWxpZGF0ZVRpbWV9XG4gICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LXRpbWVgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgndGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtpc09wZW4gPyAnJyA6IHN0eWxlcy5oaWRkZW59PntlbWJlZFdoZW5PcGVufTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2lzT3BlbiA/ICdkYXRldGltZXBpY2tlci1ib3R0b20tcm93LW9wZW4nIDogJyd9IC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZmllbGRzZXRcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkdC1kYXRldGltZXBpY2tlciddfVxuICAgICAgaWQ9e2Ake2h0bWxJZH0tcm9vdGB9XG4gICAgICBzdHlsZT17e1xuICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICctLWZvbnQtd2VpZ2h0LW1lZGl1bSc6IGZvbnRXZWlnaHRzLm1lZGl1bSxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGxlZ2VuZCBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS10aXRsZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgPC9sZWdlbmQ+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L3NwYW4+XG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICFpc09wZW5cbiAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3RvcC1yb3ctY29udGFpbmVyJ119ICR7c3R5bGVzLmNsb3NlZH0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snbGFiZWwtb3BlbiddfSBodG1sRm9yPXtgJHtodG1sSWR9LW9wZW5gfT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWljb24nXX0+XG4gICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1vcGVuJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiByb2xlPVwiYWxlcnRcIiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSByZWY9e2FsZXJ0UmVmfSAvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1vcGVuYH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnRleHRidXR0b259ICR7c3R5bGVzLmFjdGl2ZX0gJHtzdHlsZXNbJ29wZW4tYnV0dG9uJ119YH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbk9wZW4pIHtcbiAgICAgICAgICAgICAgICAgIG9uT3BlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtvcGVuUGlja2VyUmVmfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7bm93U2VsZWN0ZWQgJiYgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJyA/IChcbiAgICAgICAgICAgICAgICAgIGkxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpXG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoXG4gICAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYXJyaXZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25TZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2AgJHtcbiAgICAgICAgICAgICAgICAgICAgICBtb21lbnQoKS5pc1NhbWUobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLCAnZGF5JylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0RGF0ZURpc3BsYXkoZGlzcGxheVRpbWVzdGFtcCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICB9ICR7Z2V0VGltZURpc3BsYXkoZGlzcGxheVRpbWVzdGFtcCl9YH1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2Ryb3Bkb3duLWljb24nXX0+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwiYXJyb3ctZHJvcGRvd25cIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3JpZ2h0LWVkZ2UnXX0+e2VtYmVkV2hlbkNsb3NlZH08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IC8+XG4gICAgICA8Lz5cbiAgICAgIHtyZW5kZXJPcGVuKCl9XG4gICAgPC9maWVsZHNldD5cbiAgKTtcbn1cblxuRGF0ZXRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB0aW1lc3RhbXA6IFByb3BUeXBlcy5udW1iZXIsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblRpbWVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGF0ZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZW1iZWRXaGVuQ2xvc2VkOiBQcm9wVHlwZXMubm9kZSxcbiAgZW1iZWRXaGVuT3BlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uTW9kYWxTdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxuICBzZXJ2aWNlVGltZVJhbmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgZW1iZWRXaGVuQ2xvc2VkOiBudWxsLFxuICBlbWJlZFdoZW5PcGVuOiBudWxsLFxuICBjb2xvcjogJyMwMDdhYzknLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IDMwLFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyO1xuIiwiLyoqXG4gKiBEZXRlY3QgaWYgaW5wdXQgdHlwZT1cImRhdGVcIiBhbmQgdHlwZT1cInRpbWVcIiBhcmUgc3VwcG9ydGVkIGluIGJ5IHRoZSBicm93c2VyXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkKCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgd2luZG93ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICBlbGVtLnR5cGUgPSAnZGF0ZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICdkYXRlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBlbGVtLnR5cGUgPSAndGltZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICd0aW1lJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgRGF0ZXRpbWVwaWNrZXIgZnJvbSAnLi9oZWxwZXJzL0RhdGV0aW1lcGlja2VyJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGFuIGlucHV0IHRvIGNob29zZSBhIGRhdGUgYW5kIHRpbWUuIFJlbmRlcnMgc2VwYXJhdGUgaW5wdXQgZmllbGRzIGZvciBkYXRlIGFuZCB0aW1lIHNlbGVjdGlvbi4gVmFsdWVzIGZvciB0aW1lc3RhbXAgYW5kIGFycml2ZUJ5IGNvcnJlc3BvbmQgdG8gRGlnaXRyYW5zaXQgcXVlcnkgcGFyYW1zIHRpbWUgYW5kIGFycml2ZUJ5LiBUaGlzIGNvbXBvbmVudCB3aWxsIGRpc3BsYXkgYSBuYXRpdmUgZGF0ZSBpbnB1dCBvbiBtb2JpbGUgYW5kIGEgY3VzdG9tIG9uZSBmb3IgZGVza3RvcC4gTW9iaWxlIGRldGVjdGlvbiBpcyBkb25lIGJ5IHBhcnNpbmcgdXNlciBhZ2VudC5cbiAqXG4gKiBAYWxpYXMgRGF0ZXRpbWVwaWNrZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLnJlYWx0aW1lICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHNlbGVjdGVkIHRpbWUgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiAnbm93JyBpcyBzZWxlY3RlZC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy5pbml0aWFsVGltZXN0YW1wICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBzZWxlY3RlZCB0aW1lLiBVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzLiBVcGRhdGluZyB0aGlzIHdpbGwgY2hhbmdlIHRpbWVwaWNrZXIgdmFsdWUgYnV0IHRoZSBjb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuaW5pdGlhbEFycml2ZUJ5ICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBhcnJpdmVCeS4gRGV0ZXJtaW5lcyBpZiBwaWNrZXIgaXMgaW4gYXJyaXZhbCBtb2RlICh0cnVlKSBvciBkZXBhcnR1cmUgbW9kZSAoZmFsc2UpLiBDb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC4gQ2hhbmdpbmcgdGhpcyB3aWxsIGFsc28gdHJpZ2dlciBjaGFuZ2UgaW4gdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uVGltZUNoYW5nZSAgICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSwgYXJyaXZlQnkpIHdoZW4gdGltZSBpbnB1dCBjaGFuZ2VzLiB0aW1lIGlzIG51bWJlciB0aW1lc3RhbXAgaW4gc2Vjb25kcywgYXJyaXZlQnkgaXMgYm9vbGVhblxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EYXRlQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiBkYXRlIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk5vd0NsaWNrICAgICAgICAgICAgICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnQgbm93XCIgYnV0dG9uIGlzIGNsaWNrZWQuIHRpbWUgaXMgY3VycmVudCBpbnB1dCB2YWx1ZSBpbiBzZWNvbmRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUpIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQXJyaXZhbENsaWNrICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImFycml2YWxcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuQ2xvc2VkICAgICAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgaW4gdGhlIGNvcm5lciB3aGVuIGlucHV0IGlzIGNsb3NlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5PcGVuICAgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciB3aGVuIGlucHV0IGlzIG9wZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5sYW5nICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBzZWxlY3Rpb24uIERlZmF1bHQgJ2VuJ1xuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNlcnZpY2VUaW1lUmFuZ2UgICAgICAgICAgIERldGVybWluZSBudW1iZXIgb2YgZGF5cyBzaG93biBpbiB0aW1lcGlja2VyLiBPcHRpb25hbC4gZGVmYXVsdCBpcyAzMC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uT3BlbiAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgb3Blbi4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNsb3NlICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIGNsb3NlZC4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vcGVuUGlja2VyICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHRpbWVwaWNrZXIgc2hvdWxkIGJlIG9wZW4gaW4gaW50aWFsIHJlbmRlci4gT3B0aW9uYWwuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICogQGV4YW1wbGVcbiAqIDxEYXRldGltZXBpY2tlclxuICogICByZWFsdGltZT17dHJ1ZX1cbiAqICAgaW5pdGlhbFRpbWVzdGFtcD17MTU5MDEzMzgyM31cbiAqICAgaW5pdGlhbEFycml2ZUJ5PXtmYWxzZX1cbiAqICAgb25UaW1lQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uRGF0ZUNoYW5nZT17KHRpbWUsIGFycml2ZUJ5KSA9PiBjaGFuZ2VVcmwodGltZSwgYXJyaXZlQnkpfVxuICogICBvbk5vd0NsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCAndHJ1ZScpfVxuICogICBvbkFycml2YWxDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCB1bmRlZmluZWQpfVxuICogICBlbWJlZFdoZW5DbG9zZWQ9ezxidXR0b24gLz59XG4gKiAgIGxhbmc9eydlbid9XG4gKiAgIHNlcnZpY2VUaW1lUmFuZ2U9ezE1fVxuICogLz5cbiAqL1xuZnVuY3Rpb24gRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lcih7XG4gIHJlYWx0aW1lLFxuICBpbml0aWFsQXJyaXZlQnksXG4gIGluaXRpYWxUaW1lc3RhbXAsXG4gIG9uRGVwYXJ0dXJlQ2xpY2ssXG4gIG9uQXJyaXZhbENsaWNrLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgb25Ob3dDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC5sb2NhbGUobGFuZyk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5pdGlhbE5vdyA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgY29uc3QgW3RpbWVzdGFtcCwgY2hhbmdlVGltZXN0YW1wU3RhdGVdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbFRpbWVzdGFtcCA/IGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwIDogaW5pdGlhbE5vdyxcbiAgKTtcbiAgY29uc3QgW2RlcGFydHVyZU9yQXJyaXZhbCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGluaXRpYWxBcnJpdmVCeSA9PT0gdHJ1ZSA/ICdhcnJpdmFsJyA6ICdkZXBhcnR1cmUnLFxuICApO1xuXG4gIC8vIHVwZGF0ZSBzdGF0ZSBpZiBwcm9wcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBib3RoTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCAmJiBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb25lTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCB8fCBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2FtZVRpbWUgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCAvIDEwMDApID09PSBpbml0aWFsVGltZXN0YW1wO1xuICAgIGNvbnN0IHRpbWVzdGFtcENoYW5nZWQgPSAhYm90aE51bGwgJiYgKG9uZU51bGwgfHwgIXNhbWVUaW1lKTtcbiAgICBpZiAodGltZXN0YW1wQ2hhbmdlZCkge1xuICAgICAgaWYgKGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpbml0aWFsQXJyaXZlQnkgPT09IChkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJykpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChcbiAgICAgICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICAgICApO1xuICAgIH1cbiAgfSwgW2luaXRpYWxUaW1lc3RhbXAsIGluaXRpYWxBcnJpdmVCeV0pO1xuXG4gIGNvbnN0IHRpbWVDaGFuZ2VkID0gZGVib3VuY2UobmV3VGltZSA9PiB7XG4gICAgaWYgKG5ld1RpbWUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvblRpbWVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3VGltZSk7XG4gICAgb25UaW1lQ2hhbmdlKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBkYXRlQ2hhbmdlZCA9IGRlYm91bmNlKG5ld0RhdGUgPT4ge1xuICAgIGlmIChuZXdEYXRlID09PSBudWxsKSB7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgICAgb25EYXRlQ2hhbmdlKFxuICAgICAgICBNYXRoLnJvdW5kKG1vbWVudCgpLnZhbHVlT2YoKSAvIDEwMDApLFxuICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld0RhdGUpO1xuICAgIG9uRGF0ZUNoYW5nZShNYXRoLnJvdW5kKG5ld0RhdGUgLyAxMDAwKSwgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcpO1xuICB9LCAxMCk7XG5cbiAgY29uc3Qgbm93Q2xpY2tlZCA9ICgpID0+IHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgIGNvbnN0IG5ld1RpbWVzdGFtcCA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lc3RhbXApO1xuICAgIG9uTm93Q2xpY2soTWF0aC5yb3VuZChuZXdUaW1lc3RhbXAgLyAxMDAwKSk7XG4gIH07XG5cbiAgY29uc3QgZGVwYXJ0dXJlQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdkZXBhcnR1cmUnKSB7XG4gICAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkRlcGFydHVyZUNsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYXJyaXZhbENsaWNrZWQgPSAoKSA9PiB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgbmV3VGltZSA9IHRpbWVzdGFtcDtcbiAgICBpZiAodGltZXN0YW1wID09PSBudWxsKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShub3cpO1xuICAgICAgbmV3VGltZSA9IG5vdztcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGVwYXJ0dXJlT3JBcnJpdmFsICE9PSAnYXJyaXZhbCcpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnYXJyaXZhbCcpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkFycml2YWxDbGljayhNYXRoLnJvdW5kKG5ld1RpbWUgLyAxMDAwKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbk1vZGFsU3VibWl0ID0gKHRpbWUsIG1vZGUpID0+IHtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZSh0aW1lKTtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwobW9kZSk7XG4gICAgb25UaW1lQ2hhbmdlKHRpbWUgLyAxMDAwLCBtb2RlID09PSAnYXJyaXZhbCcsIHRydWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERhdGV0aW1lcGlja2VyXG4gICAgICB0aW1lc3RhbXA9e3RpbWVzdGFtcH1cbiAgICAgIG9uVGltZUNoYW5nZT17dGltZUNoYW5nZWR9XG4gICAgICBvbkRhdGVDaGFuZ2U9e2RhdGVDaGFuZ2VkfVxuICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICBvbk5vd0NsaWNrPXtub3dDbGlja2VkfVxuICAgICAgb25EZXBhcnR1cmVDbGljaz17ZGVwYXJ0dXJlQ2xpY2tlZH1cbiAgICAgIG9uQXJyaXZhbENsaWNrPXthcnJpdmFsQ2xpY2tlZH1cbiAgICAgIGVtYmVkV2hlbkNsb3NlZD17ZW1iZWRXaGVuQ2xvc2VkfVxuICAgICAgZW1iZWRXaGVuT3Blbj17ZW1iZWRXaGVuT3Blbn1cbiAgICAgIGxhbmc9e2xhbmd9XG4gICAgICBjb2xvcj17Y29sb3J9XG4gICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICBvbk1vZGFsU3VibWl0PXtvbk1vZGFsU3VibWl0fVxuICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgc2VydmljZVRpbWVSYW5nZT17c2VydmljZVRpbWVSYW5nZX1cbiAgICAgIG9uT3Blbj17b25PcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIG9wZW5QaWNrZXI9e29wZW5QaWNrZXJ9XG4gICAgLz5cbiAgKTtcbn1cblxuRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lci5wcm9wVHlwZXMgPSB7XG4gIHJlYWx0aW1lOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgaW5pdGlhbEFycml2ZUJ5OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25EZXBhcnR1cmVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25BcnJpdmFsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gIH0pLFxuICBzZXJ2aWNlVGltZVJhbmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgcmVhbHRpbWU6IGZhbHNlLFxuICBpbml0aWFsQXJyaXZlQnk6IHVuZGVmaW5lZCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogdW5kZWZpbmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGxhbmc6ICdlbicsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgZm9udFdlaWdodHM6IHtcbiAgICBtZWRpdW06IDUwMCxcbiAgfSxcbiAgb25PcGVuOiBudWxsLFxuICBvbkNsb3NlOiBudWxsLFxuICBvcGVuUGlja2VyOiB1bmRlZmluZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyO1xuIl0sIm5hbWVzIjpbIl9hcnJheUxpa2VUb0FycmF5IiwiYXJyIiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIm8iLCJtaW5MZW4iLCJhcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfc2xpY2VkVG9BcnJheSIsImlzQXJyYXkiLCJhcnJheVdpdGhIb2xlcyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsInVuZGVmaW5lZCIsIl9zIiwiX2kiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImVyciIsIml0ZXJhYmxlVG9BcnJheUxpbWl0IiwidW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJub25JdGVyYWJsZVJlc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnJheVdpdGhvdXRIb2xlcyIsIml0ZXIiLCJpdGVyYWJsZVRvQXJyYXkiLCJub25JdGVyYWJsZVNwcmVhZCIsInBhcnNlVHlwZWRUaW1lIiwidHlwZWRWYWx1ZSIsImFjdHVhbFZhbHVlIiwic3BsaXQiLCJldmVyeSIsIk51bWJlciIsImlzSW50ZWdlciIsIkRlc2t0b3BEYXRldGltZXBpY2tlciIsIm9uQ2hhbmdlIiwiZ2V0RGlzcGxheSIsInRpbWVDaG9pY2VzIiwidmFsaWRhdGUiLCJpZCIsImxhYmVsIiwiaWNvbiIsImRpc2FibGVUeXBpbmciLCJ0aW1lWm9uZSIsIm1vbWVudCIsInR6Iiwic2V0RGVmYXVsdCIsInVzZVN0YXRlIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwidHlwaW5nIiwic2V0VHlwaW5nIiwidXNlRWZmZWN0IiwiaGFuZGxlVGltZXN0YW1wIiwibmV3VmFsdWUiLCJhc051bWJlciIsImlzTmFOIiwiaXNWYWxpZCIsInZhbHVlT2YiLCJvcHRpb25zIiwibWFwIiwidCIsImNsb3Nlc3RPcHRpb24iLCJyZWR1Y2UiLCJhIiwiYiIsIk1hdGgiLCJhYnMiLCJpbnB1dElkIiwibGFiZWxJZCIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIlNlbGVjdCIsImFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsIm9uRmlsdGVyIiwib25Gb2N1cyIsImNvbnRleHQiLCJpdGVtTGFiZWwiLCJ0aW1lIiwidmFsaWRhdGVkIiwiY29tcG9uZW50cyIsIkluZGljYXRvcnNDb250YWluZXIiLCJjbGFzc05hbWVQcmVmaXgiLCJvbklucHV0Q2hhbmdlIiwiYWN0aW9uIiwidXRpbHMiLCJpbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9uIiwiY29udHJvbFNob3VsZFJlbmRlclZhbHVlIiwidGFiU2VsZWN0c1ZhbHVlIiwicGxhY2Vob2xkZXIiLCJlIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25CbHVyIiwib25LZXlEb3duIiwiaW5jbHVkZXMiLCJrZXkiLCJpc1NlYXJjaGFibGUiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJwcm9jZXNzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheU9mIiwic3RyaW5nIiwibm9kZSIsImJvb2wiLCJkZWZhdWx0UHJvcHMiLCJ0cmFuc2xhdGlvbnMiLCJkZSIsInRvZGF5IiwidG9tb3Jyb3ciLCJhcnJpdmFsIiwiZGF0ZSIsImRlcGFydHVyZSIsInJlYWR5IiwiY2FuY2VsIiwiZW4iLCJmaSIsInN2IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwia2V5cyIsImluZGV4T2YiLCJvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTW9iaWxlRGF0ZXBpY2tlciIsIml0ZW1Db3VudCIsInN0YXJ0VGltZSIsIm9wZW4iLCJjaGFuZ2VPcGVuIiwic2Nyb2xsUmVmIiwidXNlUmVmIiwiZGF0ZUNob2ljZXMiLCJmaWxsIiwiXyIsImFkZCIsInNjcm9sbEluZGV4IiwiZmluZEluZGV4IiwidXNlTGF5b3V0RWZmZWN0IiwiY3VycmVudCIsInNjcm9sbFRvcCIsIm5hdGl2ZUlucHV0IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJBdXRvc3VnZ2VzdCIsInN1Z2dlc3Rpb25zIiwiZ2V0U3VnZ2VzdGlvblZhbHVlIiwicyIsInJlbmRlclN1Z2dlc3Rpb24iLCJvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQiLCJzaG91bGRSZW5kZXJTdWdnZXN0aW9ucyIsImlucHV0UHJvcHMiLCJyZWFkT25seSIsImZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljayIsIm9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZCIsInJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyIiwiY29udGFpbmVyUHJvcHMiLCJjaGlsZHJlbiIsIm90aGVyUmVmcyIsInRhYkluZGV4IiwiZWxlbSIsInRoZW1lIiwiTW9iaWxlVGltZXBpY2tlciIsImNoYW5nZUlucHV0VmFsdWUiLCJ0aW1lSW5wdXRSZWYiLCJmb2N1cyIsImlucHV0TW9kZSIsIm1heExlbmd0aCIsInNldFNlbGVjdGlvblJhbmdlIiwiZXZlbnQiLCJtYXRjaCIsImNoYXJBdCIsImFjdHVhbCIsInRpbWVzdGFtcCIsIk1vYmlsZVBpY2tlck1vZGFsIiwiZGVwYXJ0dXJlT3JBcnJpdmFsIiwib25Ob3dDbGljayIsImxhbmciLCJjb2xvciIsIm9uU3VibWl0Iiwib25DYW5jZWwiLCJnZXRUaW1lRGlzcGxheSIsImRhdGVTZWxlY3RJdGVtQ291bnQiLCJnZXREYXRlRGlzcGxheSIsInZhbGlkYXRlVGltZSIsImZvbnRXZWlnaHRzIiwidHJhbnNsYXRpb25TZXR0aW5ncyIsImxuZyIsImRpc3BsYXlUaW1lc3RhbXAiLCJjaGFuZ2VUaW1lc3RhbXAiLCJkZXBhcnR1cmVPckFycml2YWxDdXJyZW50IiwiY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsIiwiaHRtbElkIiwidW5pcXVlSWQiLCJkYXRlU2VsZWN0U3RhcnRUaW1lIiwic3RhcnRPZiIsImhvdXIiLCJtaW51dGUiLCJNb2RhbCIsImFwcEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiaXNPcGVuIiwib3ZlcmxheUNsYXNzTmFtZSIsIm1lZGl1bSIsImkxOG5leHQiLCJvbkNsaWNrIiwiY2hlY2tlZCIsIkljb24iLCJpbWciLCJEYXRldGltZXBpY2tlciIsIm9uVGltZUNoYW5nZSIsIm9uRGF0ZUNoYW5nZSIsIm9uRGVwYXJ0dXJlQ2xpY2siLCJvbkFycml2YWxDbGljayIsImVtYmVkV2hlbkNsb3NlZCIsImVtYmVkV2hlbk9wZW4iLCJvbk1vZGFsU3VibWl0Iiwic2VydmljZVRpbWVSYW5nZSIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJvcGVuUGlja2VyIiwiY2hhbmdlRGlzcGxheVRpbWVzdGFtcCIsInRpbWVySWQiLCJzZXRUaW1lciIsInVzZU1vYmlsZUlucHV0cyIsInZlbmRvciIsIndpbmRvdyIsIm9wZXJhIiwiZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIiwib3BlblBpY2tlclJlZiIsImlucHV0UmVmIiwiYWxlcnRSZWYiLCJmb3JFYWNoIiwibGFuZ3VhZ2UiLCJhZGRSZXNvdXJjZUJ1bmRsZSIsImxvY2FsZSIsIm5vd1NlbGVjdGVkIiwiY2xlYXJJbnRlcnZhbCIsIm5ld0lkIiwic2V0SW50ZXJ2YWwiLCJub3ciLCJpc1NhbWUiLCJwcmV2SXNPcGVuUmVmIiwicHJldklzT3BlbiIsImZvcm1hdHRlZCIsImZvcm1hdCIsInRvVXBwZXJDYXNlIiwiY3VycmVudFRpbWVzdGFtcCIsInRyaW1tZWQiLCJ0cmltIiwic3BsaXR0ZXIiLCJ2YWx1ZXMiLCJob3VycyIsImhvdXJzVmFsaWQiLCJtaW51dGVzIiwic2VsZWN0ZWRNb21lbnQiLCJ0aW1lU2VsZWN0U3RhcnRUaW1lIiwiZml2ZU1pbnV0ZXMiLCJuZXh0Rml2ZU1pbiIsImNlaWwiLCJ0aW1lc1RvQWRkIiwiY2xvc2VzdEluZGV4QWZ0ZXIiLCJzcGxpY2UiLCJTZXQiLCJzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCIsImlubmVySFRNTCIsInNldFRpbWVvdXQiLCJoaWRkZW4iLCJjbG9zZWQiLCJyb2xlIiwidGV4dGJ1dHRvbiIsImFjdGl2ZSIsIm5ld1RpbWVzdGFtcCIsIm5ld0RlcGFydHVyZU9yQXJyaXZhbCIsIkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIiLCJyZWFsdGltZSIsImluaXRpYWxBcnJpdmVCeSIsImluaXRpYWxUaW1lc3RhbXAiLCJpbml0aWFsTm93IiwiY2hhbmdlVGltZXN0YW1wU3RhdGUiLCJib3RoTnVsbCIsIm9uZU51bGwiLCJzYW1lVGltZSIsInJvdW5kIiwidGltZUNoYW5nZWQiLCJkZWJvdW5jZSIsIm5ld1RpbWUiLCJkYXRlQ2hhbmdlZCIsIm5ld0RhdGUiLCJjaGFuZ2VkIiwibW9kZSIsImRhdGVUaW1lQ29tYmluZWQiLCJpbml0IiwicmVzb3VyY2VzIiwib25lT2YiLCJzaGFwZSIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIl0sIm1hcHBpbmdzIjoid2pDQUFlLFNBQVNBLEVBQWtCQyxFQUFLQyxJQUNsQyxNQUFQQSxHQUFlQSxFQUFNRCxFQUFJRSxVQUFRRCxFQUFNRCxFQUFJRSxRQUUvQyxJQUFLLElBQUlDLEVBQUksRUFBR0MsRUFBTyxJQUFJQyxNQUFNSixHQUFNRSxFQUFJRixFQUFLRSxJQUM5Q0MsRUFBS0QsR0FBS0gsRUFBSUcsR0FHaEIsT0FBT0MsRUNOTSxTQUFTRSxFQUE0QkMsRUFBR0MsR0FDckQsR0FBS0QsRUFBTCxDQUNBLEdBQWlCLGlCQUFOQSxFQUFnQixPQUFPRSxFQUFpQkYsRUFBR0MsR0FDdEQsSUFBSUUsRUFBSUMsT0FBT0MsVUFBVUMsU0FBU0MsS0FBS1AsR0FBR1EsTUFBTSxHQUFJLEdBRXBELE1BRFUsV0FBTkwsR0FBa0JILEVBQUVTLGNBQWFOLEVBQUlILEVBQUVTLFlBQVlDLE1BQzdDLFFBQU5QLEdBQXFCLFFBQU5BLEVBQW9CTCxNQUFNYSxLQUFLWCxHQUN4QyxjQUFORyxHQUFxQiwyQ0FBMkNTLEtBQUtULEdBQVdELEVBQWlCRixFQUFHQyxRQUF4RyxHQ0hhLFNBQVNZLEVBQWVwQixFQUFLRyxHQUMxQyxPQ0xhLFNBQXlCSCxHQUN0QyxHQUFJSyxNQUFNZ0IsUUFBUXJCLEdBQU0sT0FBT0EsRURJeEJzQixDQUFldEIsSUVMVCxTQUErQkEsRUFBS0csR0FDakQsR0FBc0Isb0JBQVhvQixRQUE0QkEsT0FBT0MsWUFBWWIsT0FBT1gsR0FBakUsQ0FDQSxJQUFJeUIsRUFBTyxHQUNQQyxHQUFLLEVBQ0xDLEdBQUssRUFDTEMsT0FBS0MsRUFF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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,u,c){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=_(t),m=_(n),f=_(i),y=_(a),b=_(o),g=_(r),h=_(s),x=_(d),v=_(u),w=_(c);var k={parseTypedTime:function(e){let t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}};var E={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function C({value:e,onChange:t,getDisplay:i,timeChoices:a,validate:l,id:o,label:r,icon:s,disableTyping:d,timeZone:u}){f.default.tz.setDefault(u);const[c,_]=n.useState(i(e)),[p,y]=n.useState(!1);n.useEffect((()=>_(i(e))),[e]);const b=e=>{const n=Number(e);!Number.isNaN(n)&&f.default(n).isValid()&&f.default(n).valueOf()===n&&t(n)},g=a.map((e=>({value:e.toString(),label:i(e)}))),h=g.reduce(((t,n)=>Math.abs(e-t.value)<Math.abs(e-n.value)?t:n)),v=`${o}-input`,w=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["combobox-container"],htmlFor:v},m.default.createElement("span",{className:E["sr-only"],id:w},r," ",c),s,m.default.createElement(x.default,{"aria-labelledby":w,ariaLiveMessages:{guidance:()=>".",onChange:()=>"",onFilter:()=>"",onFocus:({context:e,label:t})=>"menu"===e?t:""},options:g,inputId:v,onChange:t=>{if(p){const t=l(c,e);null!==t?(b(t),y(!1)):(_(i(e)),y(!1))}else b(t.value)},components:{IndicatorsContainer:()=>null},className:E["datetimepicker-select-container"],classNamePrefix:"datetimepicker-select",onInputChange:(e,{action:t})=>{if(!d&&"input-change"===t){const t=k.parseTypedTime(e);_(t),y(!0)}},inputValue:!d&&c,value:h,filterOption:()=>!0,controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(p){const t=l(c,e);null!==t?(b(t),y(!1)):(_(i(e)),y(!1))}},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&y(!1)},isSearchable:!d})))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button, .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button, .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #dddddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #dddddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #dddddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #dddddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #ffffff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0px;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n color: #333333;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(C.propTypes={value:p.default.number.isRequired,onChange:p.default.func.isRequired,getDisplay:p.default.func.isRequired,timeChoices:p.default.arrayOf(p.default.number).isRequired,validate:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.node.isRequired,icon:p.default.node.isRequired,disableTyping:p.default.bool,timeZone:p.default.string}),C.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki"};const R={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt"}};const F=["ref"];function N({value:e,getDisplay:t,onChange:i,itemCount:a,startTime:l,id:o,label:r,icon:s,timeZone:d}){f.default.tz.setDefault(d);const[u,c]=n.useState(!1),_=n.useRef(null),p=Array(a).fill().map(((e,t)=>f.default(l).add(t,"day").valueOf())),y=p.map((t=>e-t)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{u&&_.current&&(_.current.scrollTop=50*y)}),[e,u]);const b=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),g=`${o}-input`,h=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:g},m.default.createElement("span",null,s),m.default.createElement("span",{className:E["sr-only"],id:h},r),b?m.default.createElement(m.default.Fragment,null,m.default.createElement("select",{className:E["mobile-input-display"],onChange:e=>i(Number(e.target.value)),value:e},p.map((e=>m.default.createElement("option",{key:e,value:e},t(e)))))):m.default.createElement(w.default,{id:o,suggestions:p,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>t(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:t(e),onChange:(e,{newValue:t})=>{i(Number(t))},onFocus:()=>{c(!0)},onBlur:()=>{c(!1)},id:g,"aria-labelledby":h,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,F);return m.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(_.current=e,n(e))}}),t)},theme:E})))}function P({value:e,getDisplay:t,onChange:i,id:a,label:l,icon:o,timeZone:r,validate:s}){const[d,u]=n.useState(t(e));f.default.tz.setDefault(r);const c=`${a}-input`,_=`${a}-label`,p=n.useRef(null);return n.useLayoutEffect((()=>{p.current&&p.current.focus()}),[]),m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:c},m.default.createElement("span",null,o),m.default.createElement("span",{className:E["sr-only"],id:_},l),m.default.createElement("input",{id:c,inputMode:"numeric",type:"text",maxLength:"6",className:E["time-input-mobile"],value:d,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:t=>{let n=t.target.value;if(n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===d&&(n=n.charAt(0)),n.length>5)return;const a=k.parseTypedTime(n);u(a);const l=s(a,e);l&&i(l)},ref:p})))}function S({departureOrArrival:e,onNowClick:t,lang:i,color:a,timeZone:l,onSubmit:o,onCancel:r,timestamp:s,getTimeDisplay:d,dateSelectItemCount:u,getDateDisplay:c,validateTime:_,fontWeights:p}){f.default.tz.setDefault(l);const y={lng:i},[x,w]=n.useState(s),[k,C]=n.useState(e);const[R]=n.useState(b.default("datetimepicker-")),F=f.default().startOf("day").hour(f.default(x).hour()).minute(f.default(x).minute()).valueOf();return m.default.createElement(v.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:E["mobile-modal-content"],overlayClassName:E["mobile-modal-overlay"]},m.default.createElement("div",{style:{"--color":`${a}`,"--font-weight-medium":p.medium}},m.default.createElement("div",{className:E["top-row"]},m.default.createElement("h3",{className:E["modal-title"]},g.default.t("choose-time",y)),m.default.createElement("button",{type:"button",className:E["departure-now-button"],onClick:t},g.default.t("departure-now",y))),m.default.createElement("div",{className:E["tab-row"]},m.default.createElement("label",{htmlFor:`${R}-modal-departure`,className:`${E["radio-tab-label"]}\n ${E["departure"===k?"active":void 0]}`},g.default.t("departure",y),m.default.createElement("input",{id:`${R}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{C("departure")},checked:"departure"===k})),m.default.createElement("label",{htmlFor:`${R}-modal-arrival`,className:`${E["radio-tab-label"]}\n ${E["arrival"===k?"active":void 0]}`},g.default.t("arrival",y),m.default.createElement("input",{id:`${R}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{C("arrival")},checked:"arrival"===k}))),m.default.createElement("div",{className:E["input-row"]},m.default.createElement(N,{value:x,getDisplay:c,onChange:function(e){w(e)},itemCount:u,startTime:F,id:`${R}-date`,label:g.default.t("date",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:a})),timeZone:l}),m.default.createElement(P,{value:x,getDisplay:d,onChange:function(e){w(e)},id:`${R}-time`,label:g.default.t("time",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:a})),timeZone:l,validate:_})),m.default.createElement("div",{className:E["buttons-row"]},m.default.createElement("button",{type:"button",className:E["ready-button"],onClick:()=>o(x,k)},g.default.t("ready",y)),m.default.createElement("button",{type:"button",className:E["cancel-button"],onClick:r},g.default.t("cancel",y)))))}function G({timestamp:e,onTimeChange:t,onDateChange:i,departureOrArrival:a,onNowClick:l,onDepartureClick:o,onArrivalClick:r,embedWhenClosed:s,embedWhenOpen:d,lang:u,color:c,timeZone:_,onModalSubmit:p,fontWeights:y,serviceTimeRange:x,onOpen:v,onClose:w,openPicker:k}){f.default.tz.setDefault(_);const[F,N]=n.useState(k||!1),[P,G]=n.useState(e||f.default().valueOf()),[O,q]=n.useState(null),[W]=n.useState(b.default("datetimepicker-")),[T]=n.useState(function(){const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}()&&function(){if("undefined"==typeof window||null===window)return!1;const e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),X=n.useRef(),$=n.useRef(),A=n.useRef(),D={lng:u};n.useEffect((()=>{Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[u])))}),[]),n.useEffect((()=>{f.default.locale(u)}),[u]);const z=null===e;n.useEffect((()=>{z?G(f.default().valueOf()):(O&&(clearInterval(O),q(null)),G(e))}),[e]),n.useEffect((()=>{if(!z)return;O&&clearInterval(O);const e=setInterval((()=>{const t=f.default().valueOf();f.default(P).isSame(t,"minute")||(clearInterval(e),q(null),G(t))}),5e3);return q(e),()=>clearInterval(e)}),[P]);const Z=n.useRef();n.useEffect((()=>{Z.current=F}));const V=e=>{const t=f.default(e);let n;return n=t.isSame(f.default(),"day")?g.default.t("today",D):t.isSame(f.default().add(1,"day"),"day")?g.default.t("tomorrow",D):t.format("dd D.M."),n=`${n.charAt(0).toUpperCase()}${n.slice(1)}`,n},L=e=>f.default(e).format("HH:mm"),M=(e,t)=>{const n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){const e=n.includes(".")?".":":",i=n.split(e),a=Number(i[0]),l=!Number.isNaN(a)&&a>=0&&a<=23,o=Number(i[1]);if(!(!Number.isNaN(o)&&o>=0&&o<=59)||!l)return null;return f.default(t).hours(a).minutes(o).valueOf()}return null},I=f.default(P),j=f.default(P).startOf("day").valueOf();let H=[];const Y=f.default(j);for(;Y.isSame(j,"day");)H.push(Y.valueOf()),Y.add(15,"minutes");if(null===e){const e=3e5,t=Math.ceil(P/e)*e,n=Array(7).fill().map(((n,i)=>t+i*e)),i=H.map((e=>P-e)).findIndex((e=>e<=0));H.splice(i,0,...n),H=Array.from(new Set(H))}const U=f.default().startOf("day").hour(I.hour()).minute(I.minute()).valueOf(),K=Array(x).fill().map(((e,t)=>f.default(U).add(t,"day").valueOf()));function B(){A.current&&(A.current.innerHTML=g.default.t("accessible-closed",D),setTimeout((()=>{A.current.innerHTML=null}),100))}return m.default.createElement("fieldset",{className:E["dt-datetimepicker"],id:`${W}-root`,style:{"--color":`${c}`,"--font-weight-medium":y.medium}},m.default.createElement("legend",{className:E["sr-only"]},g.default.t("accessible-title",D)),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-update-instructions",D)),m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:F?`${E.hidden} datetimepicker-top-row`:`${E["top-row-container"]} ${E.closed} datetimepicker-top-row`},m.default.createElement("label",{className:E["label-open"],htmlFor:`${W}-open`},m.default.createElement("span",{className:E["time-icon"]},m.default.createElement(h.default,{img:"time",color:c})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-open",D)),m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("button",{id:`${W}-open`,type:"button",className:`${E.textbutton} ${E.active} ${E["open-button"]}`,"aria-controls":`${W}-root`,"aria-expanded":"false",onClick:()=>{N(!0),A.current&&(A.current.innerHTML=g.default.t("accessible-opened",D),setTimeout((()=>{A.current.innerHTML=null}),100)),v&&v()},ref:X},m.default.createElement("span",null,z&&"departure"===a?g.default.t("departure-now",D):m.default.createElement(m.default.Fragment,null,g.default.t("departure"===a?"departure":"arrival",D),` ${f.default().isSame(f.default(P),"day")?"":V(P).toLowerCase()} ${L(P)}`)),m.default.createElement("span",{className:E["dropdown-icon"]},m.default.createElement(h.default,{img:"arrow-dropdown",color:c})))),m.default.createElement("span",{className:E["right-edge"]},s)),m.default.createElement("div",null)),T?F&&m.default.createElement(S,{departureOrArrival:a,onNowClick:()=>{N(!1),B(),l()},lang:u,color:c,onSubmit:(e,t)=>{p(e,t),N(!1),B()},onCancel:()=>{N(!1),B(),w&&w()},getTimeDisplay:L,timeZone:_,timestamp:P,getDateDisplay:V,dateSelectItemCount:x,getDisplay:L,validateTime:M,fontWeights:y}):m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:`${E["datetimepicker-open-container"]} ${F?"":E.hidden}`},m.default.createElement("div",{className:F?`${E["top-row-container"]} datetimepicker-top-row`:`${E.hidden} datetimepicker-top-row`}," ",m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("span",null),m.default.createElement("span",{className:E["departure-or-arrival-container"]},m.default.createElement("label",{htmlFor:`${W}-departure`,className:`${E["radio-textbutton-label"]}\n ${E["departure"===a?"active":void 0]}`},g.default.t("departure",D),m.default.createElement("input",{id:`${W}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{o()},checked:"departure"===a})),m.default.createElement("label",{htmlFor:`${W}-arrival`,className:`${E["radio-textbutton-label"]}\n ${E["arrival"===a?"active":void 0]}`},g.default.t("arrival",D),m.default.createElement("input",{id:`${W}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{r()},checked:"arrival"===a}))),m.default.createElement("button",{id:`${W}-now`,type:"button",className:E["departure-now-button"],onClick:()=>{N(!1),B(),w&&w(),l()},ref:$},g.default.t("departure-now",D)),m.default.createElement("span",{className:E["right-edge"]},m.default.createElement("button",{type:"button",className:E["close-button"],"aria-controls":`${W}-root`,"aria-expanded":"true",onClick:()=>{N(!1),B(),w&&w()}},m.default.createElement("span",{className:E["close-icon"]},m.default.createElement(h.default,{img:"close",color:c})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-close",D))))),m.default.createElement("div",{className:F?`${E["picker-container"]}`:`${E.hidden} datetimepicker-top-row`},m.default.createElement(m.default.Fragment,null,m.default.createElement("span",{className:E["combobox-left"]},m.default.createElement(C,{value:P,onChange:e=>{i(e)},getDisplay:V,timeChoices:K,validate:()=>null,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:c})),id:`${W}-date`,label:g.default.t("date",D),disableTyping:!0,timeZone:_})),m.default.createElement("span",{className:E["combobox-right"]},m.default.createElement(C,{value:P,onChange:e=>{t(e)},getDisplay:L,timeChoices:H,validate:M,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:c})),id:`${W}-time`,label:g.default.t("time",D),timeZone:_}))))),m.default.createElement("span",{className:F?"":E.hidden},d),m.default.createElement("div",{className:F?"datetimepicker-bottom-row-open":""})))}function O({realtime:e,initialArriveBy:t,initialTimestamp:i,onDepartureClick:a,onArrivalClick:l,onTimeChange:o,onDateChange:r,onNowClick:s,embedWhenClosed:d,embedWhenOpen:u,lang:c,color:_,timeZone:p,fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v}){f.default.locale(c),f.default.tz.setDefault(p);const w=e?null:f.default().valueOf(),[k,E]=n.useState(i?1e3*i:w),[C,R]=n.useState(!0===t?"arrival":"departure");n.useEffect((()=>{const e=null===k&&void 0===i,n=null===k||void 0===i,a=Math.round(k/1e3)===i;!e&&(n||!a)&&E(void 0===i?null:1e3*i),!t==("arrival"===C)&&R(!0===t?"arrival":"departure")}),[i,t]);const F=y.default((e=>{if(null===e)return E(f.default().valueOf()),void o(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),o(Math.round(e/1e3),"arrival"===C)}),10),N=y.default((e=>{if(null===e)return E(f.default().valueOf()),void r(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),r(Math.round(e/1e3),"arrival"===C)}),10);return m.default.createElement(G,{timestamp:k,onTimeChange:F,onDateChange:N,departureOrArrival:C,onNowClick:()=>{R("departure");const t=e?null:f.default().valueOf();E(t),s(Math.round(t/1e3))},onDepartureClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"departure"!==C&&(R("departure"),e=!0),e&&a(Math.round(t/1e3))},onArrivalClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"arrival"!==C&&(R("arrival"),e=!0),e&&l(Math.round(t/1e3))},embedWhenClosed:d,embedWhenOpen:u,lang:c,color:_,timeZone:p,onModalSubmit:(e,t)=>{E(e),R(t),o(e/1e3,"arrival"===t,!0)},fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v})}"production"!==process.env.NODE_ENV&&(N.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,itemCount:p.default.number.isRequired,startTime:p.default.number.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,dateTimeCombined:p.default.bool,timeZone:p.default.string}),N.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(P.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,timeZone:p.default.string,validate:p.default.func.isRequired}),P.defaultProps={icon:null,timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"en",resources:{}}),Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[e]))),"production"!==process.env.NODE_ENV&&(S.propTypes={timeZone:p.default.string,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,lang:p.default.string.isRequired,color:p.default.string,onSubmit:p.default.func.isRequired,onCancel:p.default.func.isRequired,timestamp:p.default.number.isRequired,getTimeDisplay:p.default.func.isRequired,dateSelectItemCount:p.default.number.isRequired,getDateDisplay:p.default.func.isRequired,validateTime:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired}),S.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(G.propTypes={timestamp:p.default.number,timeZone:p.default.string,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string.isRequired,color:p.default.string,onModalSubmit:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired,serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),G.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",serviceTimeRange:30,onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(O.propTypes={realtime:p.default.bool,initialTimestamp:p.default.number,initialArriveBy:p.default.bool,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,onNowClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string,color:p.default.string,timeZone:p.default.string,fontWeights:p.default.shape({medium:p.default.number}),serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),O.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0},e.default=O,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzL3V0aWxzLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGVza3RvcERhdGV0aW1lcGlja2VyLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZURhdGVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9tb2JpbGVEZXRlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVQaWNrZXJNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL0RhdGV0aW1lcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGFuZGxlIHR5cGluZyB0aW1lIGFuZCBhZGRpbmcgbmVjZXNzYXJ5IDpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZWRWYWx1ZVxuICpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VUeXBlZFRpbWUodHlwZWRWYWx1ZSkge1xuICBsZXQgYWN0dWFsVmFsdWUgPSB0eXBlZFZhbHVlO1xuICBpZiAoXG4gICAgYWN0dWFsVmFsdWUubGVuZ3RoID09PSAzICYmXG4gICAgYWN0dWFsVmFsdWUuc3BsaXQoJycpLmV2ZXJ5KG4gPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIobikpKVxuICApIHtcbiAgICAvLyBhZGQgJzonIGlmIHVzZXIgdHlwZXMgdGhyZWUgbnVtYmVycyBpbiBhIHJvd1xuICAgIGlmIChOdW1iZXIoYWN0dWFsVmFsdWUuc2xpY2UoMCwgMikpIDw9IDIzKSB7XG4gICAgICBhY3R1YWxWYWx1ZSA9IGAke2FjdHVhbFZhbHVlLnNsaWNlKDAsIDIpfToke2FjdHVhbFZhbHVlWzJdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWVbMF19OiR7YWN0dWFsVmFsdWUuc2xpY2UoMSl9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjdHVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgZGF0ZSBvciB0aW1lIGlucHV0IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge051bWJlcn0gcHJvcHMudmFsdWUgICAgQ3VycmVudGx5IHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DaGFuZ2UgICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIGlucHV0IGlzIGNoYW5nZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLmdldERpc3BsYXkgICBGdW5jdGlvbiB0byBnZXQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRpbWVzdGFtcFxuICogQHBhcmFtIHthcnJheX0gICAgcHJvcHMudGltZUNob2ljZXMgIEFycmF5IG9mIHRpbWVzdGFtcHMgdG8gY2hvb3NlIGZyb21cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRlICAgICAgICAgICBGdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCB3aGVuIHVzZXIgdHlwZXMgc29tZXRoaW5nIGFuZCBoaXRzIGVudGVyLiBQYXJhbWV0ZXIgaXMgaW5wdXQgYXMgc3RyaW5nc3RyaW5nLCByZXR1cm4gbnVtYmVyIHRpbWVzdGFtcCBpZiBpbnB1dCBpcyB2YWxpZCBvciBudWxsIGlmIGludmFsaWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqXG4gKiBAZXhhbXBsZVxuICogPERlc2t0b3BEYXRldGltZXBpY2tlclxuICogICB2YWx1ZT17MTU5MDEzMzgyMzAwMH1cbiAqICAgb25DaGFuZ2U9e3RpbWVzdGFtcCA9PiB1cGRhdGUodGltZXN0YW1wKX1cbiAqICAgZ2V0RGlzcGxheT17dGltZXN0YW1wID0+IGZvcm1hdFRpbWUodGltZXN0YW1wKX1cbiAqICAgdGltZUNob2ljZXM9e1sxNTkwMTMzODIzMDAwXX1cbiAqICAgdmFsaWRhdGU9KGlucHV0ID0+IHZhbGlkYXRlVGltZVN0cmluZyhpbnB1dCkpXG4gKiAgIGlkPVwidGltZWlucHV0XCJcbiAqICAgaWNvbj1cIjxJY29uIC8+XCJcbiAqICAgZGlzYWJsZVR5cGluZz17ZmFsc2V9IC8vIGNhbiBiZSBvbWl0dGVkIGlmIG5vdCB0cnVlXG4gKi9cbmZ1bmN0aW9uIERlc2t0b3BEYXRldGltZXBpY2tlcih7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgZ2V0RGlzcGxheSxcbiAgdGltZUNob2ljZXMsXG4gIHZhbGlkYXRlLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIGRpc2FibGVUeXBpbmcsXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFt0eXBpbmcsIHNldFR5cGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuXG4gIC8vIG5ld1ZhbHVlIGlzIHN0cmluZ1xuICBjb25zdCBoYW5kbGVUaW1lc3RhbXAgPSBuZXdWYWx1ZSA9PiB7XG4gICAgY29uc3QgYXNOdW1iZXIgPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgIGlmIChcbiAgICAgIE51bWJlci5pc05hTihhc051bWJlcikgfHxcbiAgICAgICFtb21lbnQoYXNOdW1iZXIpLmlzVmFsaWQoKSB8fFxuICAgICAgbW9tZW50KGFzTnVtYmVyKS52YWx1ZU9mKCkgIT09IGFzTnVtYmVyXG4gICAgKSB7XG4gICAgICAvLyBUT0RPIGhhbmRsZSBlcnJvcj9cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DaGFuZ2UoYXNOdW1iZXIpO1xuICB9O1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAobmV3VmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoZGlzYWJsZVR5cGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnaW5wdXQtY2hhbmdlJykge1xuICAgICAgY29uc3QgdmFsaWRhdGVkID0gdXRpbHMucGFyc2VUeXBlZFRpbWUobmV3VmFsdWUpO1xuICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKHZhbGlkYXRlZCk7XG4gICAgICBzZXRUeXBpbmcodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvcHRpb25zID0gdGltZUNob2ljZXMubWFwKHQgPT4ge1xuICAgIHJldHVybiB7IHZhbHVlOiB0LnRvU3RyaW5nKCksIGxhYmVsOiBnZXREaXNwbGF5KHQpIH07XG4gIH0pO1xuICBjb25zdCBjbG9zZXN0T3B0aW9uID0gb3B0aW9ucy5yZWR1Y2UoKGEsIGIpID0+XG4gICAgTWF0aC5hYnModmFsdWUgLSBhLnZhbHVlKSA8IE1hdGguYWJzKHZhbHVlIC0gYi52YWx1ZSkgPyBhIDogYixcbiAgKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICAgIHtsYWJlbH0ge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aWNvbn1cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17bGFiZWxJZH1cbiAgICAgICAgICBhcmlhTGl2ZU1lc3NhZ2VzPXt7XG4gICAgICAgICAgICBndWlkYW5jZTogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJy4nOyAvLyB0aGlzIGNhbid0IGJlIGVtcHR5IGZvciBzb21lIHJlYXNvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkZpbHRlcjogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKHsgY29udGV4dCwgbGFiZWw6IGl0ZW1MYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb250ZXh0ID09PSAnbWVudScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUxhYmVsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIGlucHV0SWQ9e2lucHV0SWR9XG4gICAgICAgICAgb25DaGFuZ2U9e3RpbWUgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGluZykge1xuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWQgPSB2YWxpZGF0ZShkaXNwbGF5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh2YWxpZGF0ZWQpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgSW5kaWNhdG9yc0NvbnRhaW5lcjogKCkgPT4gbnVsbCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkYXRldGltZXBpY2tlci1zZWxlY3QtY29udGFpbmVyJ119XG4gICAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwiZGF0ZXRpbWVwaWNrZXItc2VsZWN0XCJcbiAgICAgICAgICBvbklucHV0Q2hhbmdlPXtvbklucHV0Q2hhbmdlfVxuICAgICAgICAgIGlucHV0VmFsdWU9eyFkaXNhYmxlVHlwaW5nICYmIGRpc3BsYXlWYWx1ZX1cbiAgICAgICAgICB2YWx1ZT17Y2xvc2VzdE9wdGlvbn1cbiAgICAgICAgICBmaWx0ZXJPcHRpb249eygpID0+IHRydWV9XG4gICAgICAgICAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlPXtkaXNhYmxlVHlwaW5nfVxuICAgICAgICAgIHRhYlNlbGVjdHNWYWx1ZT17ZmFsc2V9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKCFkaXNhYmxlVHlwaW5nKSB7XG4gICAgICAgICAgICAgIGUudGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgICAvLyByZW1vdmluZyBmb2N1cyBhbHNvIGxvY2tzIGluIHZhbHVlXG4gICAgICAgICAgICBpZiAodHlwaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IHZhbGlkYXRlKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHZhbGlkYXRlZCk7XG4gICAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUoZ2V0RGlzcGxheSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uS2V5RG93bj17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCddLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaXNTZWFyY2hhYmxlPXshZGlzYWJsZVR5cGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC8+XG4gICk7XG59XG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdGltZUNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLmlzUmVxdWlyZWQsXG4gIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZVR5cGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuRGVza3RvcERhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGlzYWJsZVR5cGluZzogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BEYXRldGltZXBpY2tlcjtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdG9kYXk6ICdIZXV0ZScsXG4gICAgdG9tb3Jyb3c6ICdNb3JnZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1NjaGxpZcOfZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ0F1c3dhaGwgZ2VzY2hsb3NzZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZmZm5lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnQXVzd2FobCBnZcO2ZmZuZXQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdHVtIHVuZCBVaHJ6ZWl0YXVzd2FobCcsXG4gICAgYXJyaXZhbDogJ0Fua3VuZnQnLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQWJmYWhydCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQWJmYWhydCBqZXR6dCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1plaXQgd8OkaGxlbicsXG4gICAgcmVhZHk6ICdGZXJ0aWcnLFxuICAgIHRpbWU6ICdaZWl0JyxcbiAgICBjYW5jZWw6ICdBYmJyZWNoZW4nLFxuICB9LFxuICBlbjoge1xuICAgIHRvZGF5OiAnVG9kYXknLFxuICAgIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ0Nsb3NlIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdUaW1lcGlja2VyIGNsb3NlZCcsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdPcGVuIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdUaW1lcGlja2VyIG9wZW5lZCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0ZSBhbmQgdGltZXBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQ2hhbmdpbmcgdGltZSBwYXJhbWV0ZXJzIHdpbGwgdHJpZ2dlciBhIG5ldyBzZWFyY2guJyxcbiAgICBhcnJpdmFsOiAnQXJyaXZhbCcsXG4gICAgZGF0ZTogJ0RhdGUnLFxuICAgIGRlcGFydHVyZTogJ0RlcGFydHVyZScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTGVhdmluZyBub3cnLFxuICAgIHRpbWU6ICdUaW1lJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnQ2hvb3NlIHRpbWUnLFxuICAgIHJlYWR5OiAnUmVhZHknLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gIH0sXG4gIGZpOiB7XG4gICAgdG9kYXk6ICdUw6Ruw6TDpG4nLFxuICAgIHRvbW9ycm93OiAnSHVvbWVubmEnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N1bGplIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVmFsaXRzaW4gc3VsamV0dHUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnQXZhYSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1ZhbGl0c2luIGF2YXR0dScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnQWlrYS0gamEgcMOkaXbDpG3DpMOkcsOkdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0Fpa2F2YWxpbnRvamVuIG11dXR0YW1pbmVuIGxhdWthaXNlZSB1dWRlbiBoYXVuLicsXG4gICAgYXJyaXZhbDogJ1BlcmlsbMOkJyxcbiAgICBkYXRlOiAnUMOkaXbDpCcsXG4gICAgZGVwYXJ0dXJlOiAnTMOkaHTDtmFpa2EnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0zDpGh0w7Ygbnl0JyxcbiAgICB0aW1lOiAnQWlrYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1ZhbGl0c2UgYWlrYScsXG4gICAgcmVhZHk6ICdWYWxtaXMnLFxuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICB9LFxuICBzdjoge1xuICAgIHRvZGF5OiAnSSBkYWcnLFxuICAgIHRvbW9ycm93OiAnSSBtb3Jnb24nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N0w6RuZyB2w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdWw6RsamFyZW4gc3TDpG5nZGUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZwcG5hIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1bDpGxqYXJlbiDDtnBwbmFkZScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnVGlkLSBvY2ggZGF0dW12w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ09tIGR1IMOkbmRyYXIgdGlkZXJuYSwgc3RhcnRhcyBlbiBueSBzw7ZrbmluZyBhdXRvbWF0aXNrdC4nLFxuICAgIGFycml2YWw6ICdBbmzDpG5kZXInLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQXZnw6VuZ3N0aWQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0F2Z8OlciBudScsXG4gICAgdGltZTogJ1RpZCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1bDpGxqIHRpZCcsXG4gICAgcmVhZHk6ICdGw6RyZGlnJyxcbiAgICBjYW5jZWw6ICdBdmJyeXQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzQW5kcm9pZCB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZURhdGVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGl0ZW1Db3VudCxcbiAgc3RhcnRUaW1lLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG5cbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoaXRlbUNvdW50KVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoc3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IG1pbnV0ZSA9IDEwMDAgKiA2MDtcbiAgY29uc3QgZGlmZnMgPSBkYXRlQ2hvaWNlcy5tYXAodCA9PiB2YWx1ZSAtIHQpO1xuICBjb25zdCBzY3JvbGxJbmRleCA9IGRpZmZzLmZpbmRJbmRleCh0ID0+IHQgPCBtaW51dGUpOyAvLyB3aGVuIHRpbWUgaXMgbm93LCB0aGUgdGltZXMgbWlnaHQgZGlmZmVyIGJ5IGxlc3MgdGhhbiBvbmUgbWludXRlXG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgLy8gc2Nyb2xsIHRvIHNlbGVjdGVkIHRpbWUgd2hlbiBkcm9wZG93biBpcyBvcGVuZWRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG4gIGNvbnN0IG5hdGl2ZUlucHV0ID0gIWlzQW5kcm9pZCgpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge25hdGl2ZUlucHV0ID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtaW5wdXQtZGlzcGxheSddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBvbkNoYW5nZShOdW1iZXIoZS50YXJnZXQudmFsdWUpKX1cbiAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZGF0ZUNob2ljZXMubWFwKGRhdGUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17ZGF0ZX0gdmFsdWU9e2RhdGV9PlxuICAgICAgICAgICAgICAgICAgICB7Z2V0RGlzcGxheShkYXRlKX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17ZGF0ZUNob2ljZXN9XG4gICAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy50b1N0cmluZygpfVxuICAgICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbj17cyA9PiBnZXREaXNwbGF5KHMpfVxuICAgICAgICAgICAgb25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICAgIHZhbHVlOiBnZXREaXNwbGF5KHZhbHVlKSxcbiAgICAgICAgICAgICAgb25DaGFuZ2U6IChfLCB7IG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShOdW1iZXIobmV3VmFsdWUpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDogaW5wdXRJZCxcbiAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWQsXG4gICAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHsgcmVmLCAuLi5vdGhlclJlZnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBlbGVtO1xuICAgICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn1cbk1vYmlsZURhdGVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXRlbUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIHN0YXJ0VGltZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgZGF0ZVRpbWVDb21iaW5lZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlRGF0ZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIGRhdGVUaW1lQ29tYmluZWQ6IGZhbHNlLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVEYXRlcGlja2VyO1xuIiwiLyoqXG4gKiAgRGV0ZWN0IGlmIHVzZXIgaXMgb24gYSBtb2JpbGUgZGV2aWNlIGJ5IHBhcnNpbmcgdXNlckFnZW50LiBUaGlzIGlzIG5vdCAxMDAlIHJlbGlhYmxlIGJ1dCBjbG9zZSBlbm91Z2guXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCB3aW5kb3cub3BlcmE7XG4gIGNvbnN0IG1vYmlsZSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgIHVzZXJBZ2VudCxcbiAgKTtcbiAgcmV0dXJuIG1vYmlsZTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgaWYgdXNlciBpcyBvbiBhbiBhbmRyb2lkIGRldmljZS4gTm90IDEwMCUgcmVsaWFibGUuXG4gKi9cbmZ1bmN0aW9uIGlzQW5kcm9pZCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdXNlckFnZW50LmluZGV4T2YoJ2FuZHJvaWQnKSA+IC0xO1xufVxuXG5leHBvcnQgeyBpc01vYmlsZSwgaXNBbmRyb2lkIH07XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG4gIHZhbGlkYXRlLFxufSkge1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgY2hhbmdlSW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICBjb25zdCB0aW1lSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgaWQ9e2lucHV0SWR9XG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIG1heExlbmd0aD1cIjZcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddfVxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7IC8vIHNldCBjYXJldCB0byBzdGFydCBvZiBpbnB1dFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgLy8gbnVtYmVyIHR5cGVkIGFzIGZpcnN0IGNoYXIgPT4gY2xlYXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgICAgICAgICAgICAgbmV3VmFsdWUubWF0Y2goL1swLTldezN9OlswLTldezJ9LykgJiZcbiAgICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmNoYXJBdCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IHV0aWxzLnBhcnNlVHlwZWRUaW1lKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGNoYW5nZUlucHV0VmFsdWUoYWN0dWFsKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IHZhbGlkYXRlKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh0aW1lc3RhbXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXt0aW1lSW5wdXRSZWZ9XG4gICAgICAgIC8+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvPlxuICApO1xufVxuTW9iaWxlVGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgTW9iaWxlRGF0ZXBpY2tlciBmcm9tICcuL01vYmlsZURhdGVwaWNrZXInO1xuaW1wb3J0IE1vYmlsZVRpbWVwaWNrZXIgZnJvbSAnLi9Nb2JpbGVUaW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7IGxuZzogJ2VuJywgcmVzb3VyY2VzOiB7fSB9KTtcbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+XG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbik7XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBNb2JpbGVQaWNrZXJNb2RhbCh7XG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIHRpbWVzdGFtcCxcbiAgZ2V0VGltZURpc3BsYXksXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQsXG4gIGdldERhdGVEaXNwbGF5LFxuICB2YWxpZGF0ZVRpbWUsXG4gIGZvbnRXZWlnaHRzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBdID0gdXNlU3RhdGUodGltZXN0YW1wKTtcblxuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgKTtcblxuICBmdW5jdGlvbiBvbkFycml2YWxDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2Fycml2YWwnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVwYXJ0dXJlQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdkZXBhcnR1cmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSkge1xuICAgIGNoYW5nZVRpbWVzdGFtcChuZXdWYWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblRpbWVDaGFuZ2UobmV3VmFsdWUpIHtcbiAgICBjaGFuZ2VUaW1lc3RhbXAobmV3VmFsdWUpO1xuICB9XG5cbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5ob3VyKCkpXG4gICAgLm1pbnV0ZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkubWludXRlKCkpXG4gICAgLnZhbHVlT2YoKTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbFxuICAgICAgYXBwRWxlbWVudD17ZG9jdW1lbnQgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYXBwJykgOiB1bmRlZmluZWR9XG4gICAgICBpc09wZW5cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtY29udGVudCddfVxuICAgICAgb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtb3ZlcmxheSddfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0b3Atcm93J119PlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlc1snbW9kYWwtdGl0bGUnXX0+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdjaG9vc2UtdGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW5vdy1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uTm93Q2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndGFiLXJvdyddfT5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImRlcGFydHVyZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25EZXBhcnR1cmVDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGFiLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2Fycml2YWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWFycml2YWxgfVxuICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhcnJpdmFsXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkFycml2YWxDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1yb3cnXX0+XG4gICAgICAgICAgPE1vYmlsZURhdGVwaWNrZXJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgaXRlbUNvdW50PXtkYXRlU2VsZWN0SXRlbUNvdW50fVxuICAgICAgICAgICAgc3RhcnRUaW1lPXtkYXRlU2VsZWN0U3RhcnRUaW1lfVxuICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1snZGF0ZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNhbGVuZGFyXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TW9iaWxlVGltZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRpbWVDaGFuZ2V9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS10aW1lYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3RpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snYnV0dG9ucy1yb3cnXX0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVhZHktYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBvblN1Ym1pdChkaXNwbGF5VGltZXN0YW1wLCBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ3JlYWR5JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2FuY2VsLWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2FuY2VsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuTW9iaWxlUGlja2VyTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXRUaW1lRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREYXRlRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFsaWRhdGVUaW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbn07XG5cbk1vYmlsZVBpY2tlck1vZGFsLmRlZmF1bHRQcm9wcyA9IHtcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9iaWxlUGlja2VyTW9kYWw7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9maSc7XG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgRGVza3RvcERhdGV0aW1lcGlja2VyIGZyb20gJy4vRGVza3RvcERhdGV0aW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi9tb2JpbGVEZXRlY3Rpb24nO1xuaW1wb3J0IGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCBmcm9tICcuL2RhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCc7XG5pbXBvcnQgTW9iaWxlUGlja2VyTW9kYWwgZnJvbSAnLi9Nb2JpbGVQaWNrZXJNb2RhbCc7XG5cbm1vbWVudC5sb2NhbGUoJ2VuJyk7XG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBjb21ib2JveCBzdHlsZSBpbnB1dHMgZm9yIHNlbGVjdGluZyBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIGEgY29udHJvbGxlZCBjb21wb25lbnQsIHRpbWVzdGFtcCBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBib3RoIGlucHV0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy50aW1lc3RhbXAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZSBhcyBhIHVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcy4gU2V0IHRvIG51bGwgdG8gc2lnbmlmeSB0aGF0IFwibm93XCIgaXMgc2VsZWN0ZWQuIERpc3BsYXllZCB0aW1lIGlzIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiBzZXQgdG8gbnVsbFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGF0ZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0geydhcnJpdmFsJ3wnZGVwYXJ0dXJlJ30gcHJvcHMuZGVwYXJ0dXJlT3JBcnJpdmFsICAgRGV0ZXJtaW5lIGlmIGlucHV0IGlzIHNldCB0byBjaG9vc2UgZGVwYXJ0dXJlIG9yIGFycml2YWwgdGltZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25Ob3dDbGljayAgICAgICAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0IG5vd1wiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgIENhbGxlZCB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbkNsb3NlZCAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIGluIHRoZSBjb3JuZXIgd2hlbiBpbnB1dCBpcyBjbG9zZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuT3BlbiAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgd2hlbiBpbnB1dCBpcyBvcGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMubGFuZyAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ugc2VsZWN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGF0ZXRpbWVwaWNrZXJcbiAqICAgdGltZXN0YW1wPXsxNTkwMTMzODIzMDAwfVxuICogICBvblRpbWVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBvbkRhdGVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBkZXBhcnR1cmVPckFycml2YWw9eydkZXBhcnR1cmUnfVxuICogICBvbk5vd0NsaWNrPXsoKSA9PiBzZXRUaW1lc3RhbXBUb051bGwoKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KCkgPT4gZGVwYXJ0dXJlQ2xpY2tlZCgpfVxuICogICBvbkFycml2YWxDbGljaz17KCkgPT4gYXJyaXZhbENsaWNrZWQoKX1cbiAqICAgZW1iZWRXaGVuQ2xvc2VkPXs8YnV0dG9uIC8+fVxuICogICBsYW5nPXsnZW4nfVxuICogICBzZXJ2aWNlVGltZVJhbmdlPXsxNX1cbiAqIC8+XG4gKi9cbmZ1bmN0aW9uIERhdGV0aW1lcGlja2VyKHtcbiAgdGltZXN0YW1wLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBvbkRlcGFydHVyZUNsaWNrLFxuICBvbkFycml2YWxDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uTW9kYWxTdWJtaXQsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2lzT3BlbiwgY2hhbmdlT3Blbl0gPSB1c2VTdGF0ZShvcGVuUGlja2VyIHx8IGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZURpc3BsYXlUaW1lc3RhbXBdID0gdXNlU3RhdGUoXG4gICAgdGltZXN0YW1wIHx8IG1vbWVudCgpLnZhbHVlT2YoKSxcbiAgKTtcbiAgLy8gdGltZXIgZm9yIHVwZGF0aW5nIGRpc3BsYXlUaW1lc3RhbXAgaW4gcmVhbCB0aW1lXG4gIGNvbnN0IFt0aW1lcklkLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IFt1c2VNb2JpbGVJbnB1dHNdID0gdXNlU3RhdGUoaXNNb2JpbGUoKSAmJiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSk7XG4gIGNvbnN0IG9wZW5QaWNrZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYWxlcnRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5ndWFnZSA9PlxuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5ndWFnZSwgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb21lbnQubG9jYWxlKGxhbmcpO1xuICB9LCBbbGFuZ10pO1xuXG4gIGNvbnN0IG5vd1NlbGVjdGVkID0gdGltZXN0YW1wID09PSBudWxsO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChub3dTZWxlY3RlZCkge1xuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjbGVhciB0aW1lclxuICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICB9XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9LCBbdGltZXN0YW1wXSk7XG5cbiAgLy8gc2V0IHRpbWVyIHRvIHVwZGF0ZSBkaXNwbGF5VGltZXN0YW1wIHdoZW4gbWludXRlIGNoYW5nZXMgaWYgbm93U2VsZWN0ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW5vd1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICB9XG4gICAgY29uc3QgbmV3SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBzYW1lTWludXRlID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmlzU2FtZShub3csICdtaW51dGUnKTtcbiAgICAgIGlmICghc2FtZU1pbnV0ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobm93KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcbiAgICBzZXRUaW1lcihuZXdJZCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICB9LCBbZGlzcGxheVRpbWVzdGFtcF0pO1xuXG4gIGNvbnN0IHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gIH0pO1xuXG4gIC8vIHBhcmFtIGRhdGUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldERhdGVEaXNwbGF5ID0gZGF0ZSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudChkYXRlKTtcbiAgICBsZXQgZm9ybWF0dGVkO1xuICAgIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvZGF5JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKS5hZGQoMSwgJ2RheScpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9tb3Jyb3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkID0gdGltZS5mb3JtYXQoJ2RkIEQuTS4nKTtcbiAgICB9XG4gICAgZm9ybWF0dGVkID0gYCR7Zm9ybWF0dGVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Zm9ybWF0dGVkLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfTtcblxuICAvLyBwYXJhbSB0aW1lIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXRUaW1lRGlzcGxheSA9IHRpbWUgPT4ge1xuICAgIHJldHVybiBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbScpO1xuICB9O1xuXG4gIGNvbnN0IHZhbGlkYXRlVGltZSA9IChpbnB1dFZhbHVlLCBjdXJyZW50VGltZXN0YW1wKSA9PiB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGlucHV0VmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLm1hdGNoKC9eWzAtOV17MSwyfShcXC58OilbMC05XXsyfSQvKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BsaXR0ZXIgPSB0cmltbWVkLmluY2x1ZGVzKCcuJykgPyAnLicgOiAnOic7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0cmltbWVkLnNwbGl0KHNwbGl0dGVyKTtcbiAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHZhbHVlc1swXSk7XG4gICAgICBjb25zdCBob3Vyc1ZhbGlkID0gIU51bWJlci5pc05hTihob3VycykgJiYgaG91cnMgPj0gMCAmJiBob3VycyA8PSAyMztcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWVzWzFdKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXNWYWxpZCA9XG4gICAgICAgICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPD0gNTk7XG4gICAgICBpZiAoIW1pbnV0ZXNWYWxpZCB8fCAhaG91cnNWYWxpZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1N0YW1wID0gbW9tZW50KGN1cnJlbnRUaW1lc3RhbXApXG4gICAgICAgIC5ob3Vycyhob3VycylcbiAgICAgICAgLm1pbnV0ZXMobWludXRlcylcbiAgICAgICAgLnZhbHVlT2YoKTtcbiAgICAgIHJldHVybiBuZXdTdGFtcDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb21lbnQgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCk7XG4gIGNvbnN0IHRpbWVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICBsZXQgdGltZUNob2ljZXMgPSBbXTtcbiAgY29uc3QgY3VycmVudCA9IG1vbWVudCh0aW1lU2VsZWN0U3RhcnRUaW1lKTtcbiAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lKHRpbWVTZWxlY3RTdGFydFRpbWUsICdkYXknKSkge1xuICAgIHRpbWVDaG9pY2VzLnB1c2goY3VycmVudC52YWx1ZU9mKCkpO1xuICAgIGN1cnJlbnQuYWRkKDE1LCAnbWludXRlcycpO1xuICB9XG4gIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAvLyBpZiB0aW1lIGlzIHNldCB0byBub3dcbiAgICAvLyBhZGQgdGltZXMgaW4gNSBtaW4gaW50ZXJ2YWxzIGZvciBuZXh0IDMwIG1pbnNcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDEwMDAgKiA2MCAqIDU7XG4gICAgY29uc3QgbmV4dEZpdmVNaW4gPSBNYXRoLmNlaWwoZGlzcGxheVRpbWVzdGFtcCAvIGZpdmVNaW51dGVzKSAqIGZpdmVNaW51dGVzO1xuICAgIGNvbnN0IHRpbWVzVG9BZGQgPSBBcnJheSg3KVxuICAgICAgLmZpbGwoKVxuICAgICAgLm1hcCgoXywgaSkgPT4gbmV4dEZpdmVNaW4gKyBpICogZml2ZU1pbnV0ZXMpO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleEFmdGVyID0gdGltZUNob2ljZXNcbiAgICAgIC5tYXAodCA9PiBkaXNwbGF5VGltZXN0YW1wIC0gdClcbiAgICAgIC5maW5kSW5kZXgodCA9PiB0IDw9IDApO1xuICAgIHRpbWVDaG9pY2VzLnNwbGljZShjbG9zZXN0SW5kZXhBZnRlciwgMCwgLi4udGltZXNUb0FkZCk7XG4gICAgdGltZUNob2ljZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGltZUNob2ljZXMpKTsgLy8gcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgfVxuXG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKHNlbGVjdGVkTW9tZW50LmhvdXIoKSlcbiAgICAubWludXRlKHNlbGVjdGVkTW9tZW50Lm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoc2VydmljZVRpbWVSYW5nZSlcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KGRhdGVTZWxlY3RTdGFydFRpbWUpLmFkZChpLCAnZGF5JykudmFsdWVPZigpKTtcblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLWNsb3NlZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLW9wZW5lZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyT3BlbigpIHtcbiAgICBpZiAodXNlTW9iaWxlSW5wdXRzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc09wZW4gJiYgKFxuICAgICAgICAgIDxNb2JpbGVQaWNrZXJNb2RhbFxuICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICAgICAgICBvbk5vd0NsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpID0+IHtcbiAgICAgICAgICAgICAgb25Nb2RhbFN1Ym1pdChuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCk7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGdldFRpbWVEaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgIHRpbWVzdGFtcD17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERhdGVEaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIGRhdGVTZWxlY3RJdGVtQ291bnQ9e3NlcnZpY2VUaW1lUmFuZ2V9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHZhbGlkYXRlVGltZT17dmFsaWRhdGVUaW1lfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItb3Blbi1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICFpc09wZW4gPyBzdHlsZXMuaGlkZGVuIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICB7LyogVGhpcyBlbXB0eSBzcGFuIHByZXZlbnRzIGEgd2VpcmQgZm9jdXMgYnVnIG9uIGNocm9tZSAqL31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtb3ItYXJyaXZhbC1jb250YWluZXInXX0+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZScgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyA/ICdhY3RpdmUnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1ub3dgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1idXR0b24nXX1cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1pY29uJ119PlxuICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1jbG9zZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3BpY2tlci1jb250YWluZXInXX1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sZWZ0J119PlxuICAgICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25EYXRlQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjYWxlbmRhclwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlVHlwaW5nXG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtcmlnaHQnXX0+XG4gICAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvblRpbWVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e3RpbWVDaG9pY2VzfVxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tdGltZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2lzT3BlbiA/ICcnIDogc3R5bGVzLmhpZGRlbn0+e2VtYmVkV2hlbk9wZW59PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNPcGVuID8gJ2RhdGV0aW1lcGlja2VyLWJvdHRvbS1yb3ctb3BlbicgOiAnJ30gLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2R0LWRhdGV0aW1lcGlja2VyJ119XG4gICAgICBpZD17YCR7aHRtbElkfS1yb290YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8bGVnZW5kIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXRpdGxlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgIWlzT3BlblxuICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gJHtzdHlsZXMuY2xvc2VkfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydsYWJlbC1vcGVuJ119IGh0bWxGb3I9e2Ake2h0bWxJZH0tb3BlbmB9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3RpbWUtaWNvbiddfT5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLW9wZW4nLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW9wZW5gfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMudGV4dGJ1dHRvbn0gJHtzdHlsZXMuYWN0aXZlfSAke3N0eWxlc1snb3Blbi1idXR0b24nXX1gfVxuICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyT3BlbkFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgaWYgKG9uT3Blbikge1xuICAgICAgICAgICAgICAgICAgb25PcGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICByZWY9e29wZW5QaWNrZXJSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtub3dTZWxlY3RlZCAmJiBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gKFxuICAgICAgICAgICAgICAgICAgaTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncylcbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAge2kxOG5leHQudChcbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhcnJpdmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7YCAke1xuICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmlzU2FtZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCksICdkYXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXREYXRlRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIH0gJHtnZXRUaW1lRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKX1gfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZHJvcGRvd24taWNvbiddfT5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJhcnJvdy1kcm9wZG93blwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT57ZW1iZWRXaGVuQ2xvc2VkfTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgIDwvPlxuICAgICAge3JlbmRlck9wZW4oKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVwYXJ0dXJlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXJyaXZhbENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Nb2RhbFN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGltZXN0YW1wOiBudWxsLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgc2VydmljZVRpbWVSYW5nZTogMzAsXG4gIG9uT3BlbjogbnVsbCxcbiAgb25DbG9zZTogbnVsbCxcbiAgb3BlblBpY2tlcjogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXI7XG4iLCIvKipcbiAqIERldGVjdCBpZiBpbnB1dCB0eXBlPVwiZGF0ZVwiIGFuZCB0eXBlPVwidGltZVwiIGFyZSBzdXBwb3J0ZWQgaW4gYnkgdGhlIGJyb3dzZXJcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW0udHlwZSA9ICdkYXRlJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ2RhdGUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGVsZW0udHlwZSA9ICd0aW1lJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ3RpbWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQ7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBEYXRldGltZXBpY2tlciBmcm9tICcuL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXInO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgYW4gaW5wdXQgdG8gY2hvb3NlIGEgZGF0ZSBhbmQgdGltZS4gUmVuZGVycyBzZXBhcmF0ZSBpbnB1dCBmaWVsZHMgZm9yIGRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uLiBWYWx1ZXMgZm9yIHRpbWVzdGFtcCBhbmQgYXJyaXZlQnkgY29ycmVzcG9uZCB0byBEaWdpdHJhbnNpdCBxdWVyeSBwYXJhbXMgdGltZSBhbmQgYXJyaXZlQnkuIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSBhIG5hdGl2ZSBkYXRlIGlucHV0IG9uIG1vYmlsZSBhbmQgYSBjdXN0b20gb25lIGZvciBkZXNrdG9wLiBNb2JpbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgcGFyc2luZyB1c2VyIGFnZW50LlxuICpcbiAqIEBhbGlhcyBEYXRldGltZXBpY2tlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucmVhbHRpbWUgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgc2VsZWN0ZWQgdGltZSBzaG91bGQgYmUgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuICdub3cnIGlzIHNlbGVjdGVkLlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLmluaXRpYWxUaW1lc3RhbXAgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHMuIFVwZGF0aW5nIHRoaXMgd2lsbCBjaGFuZ2UgdGltZXBpY2tlciB2YWx1ZSBidXQgdGhlIGNvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLlxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5pbml0aWFsQXJyaXZlQnkgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIGFycml2ZUJ5LiBEZXRlcm1pbmVzIGlmIHBpY2tlciBpcyBpbiBhcnJpdmFsIG1vZGUgKHRydWUpIG9yIGRlcGFydHVyZSBtb2RlIChmYWxzZSkuIENvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLiBDaGFuZ2luZyB0aGlzIHdpbGwgYWxzbyB0cmlnZ2VyIGNoYW5nZSBpbiB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUsIGFycml2ZUJ5KSB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlcy4gdGltZSBpcyBudW1iZXIgdGltZXN0YW1wIGluIHNlY29uZHMsIGFycml2ZUJ5IGlzIGJvb2xlYW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lKSB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvbi4gRGVmYXVsdCAnZW4nXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHJlYWx0aW1lPXt0cnVlfVxuICogICBpbml0aWFsVGltZXN0YW1wPXsxNTkwMTMzODIzfVxuICogICBpbml0aWFsQXJyaXZlQnk9e2ZhbHNlfVxuICogICBvblRpbWVDaGFuZ2U9eyh0aW1lLCBhcnJpdmVCeSkgPT4gY2hhbmdlVXJsKHRpbWUsIGFycml2ZUJ5KX1cbiAqICAgb25EYXRlQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uTm93Q2xpY2s9eyh0aW1lKSA9PiBjaGFuZ2VVcmwodW5kZWZpbmVkLCB1bmRlZmluZWQpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsICd0cnVlJyl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsIHVuZGVmaW5lZCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyKHtcbiAgcmVhbHRpbWUsXG4gIGluaXRpYWxBcnJpdmVCeSxcbiAgaW5pdGlhbFRpbWVzdGFtcCxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBvbk5vd0NsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbml0aWFsTm93ID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICBjb25zdCBbdGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBTdGF0ZV0gPSB1c2VTdGF0ZShcbiAgICBpbml0aWFsVGltZXN0YW1wID8gaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDAgOiBpbml0aWFsTm93LFxuICApO1xuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsLCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICk7XG5cbiAgLy8gdXBkYXRlIHN0YXRlIGlmIHByb3BzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJvdGhOdWxsID0gdGltZXN0YW1wID09PSBudWxsICYmIGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmVOdWxsID0gdGltZXN0YW1wID09PSBudWxsIHx8IGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzYW1lVGltZSA9IE1hdGgucm91bmQodGltZXN0YW1wIC8gMTAwMCkgPT09IGluaXRpYWxUaW1lc3RhbXA7XG4gICAgY29uc3QgdGltZXN0YW1wQ2hhbmdlZCA9ICFib3RoTnVsbCAmJiAob25lTnVsbCB8fCAhc2FtZVRpbWUpO1xuICAgIGlmICh0aW1lc3RhbXBDaGFuZ2VkKSB7XG4gICAgICBpZiAoaW5pdGlhbFRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUoaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWluaXRpYWxBcnJpdmVCeSA9PT0gKGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKSkge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKFxuICAgICAgICBpbml0aWFsQXJyaXZlQnkgPT09IHRydWUgPyAnYXJyaXZhbCcgOiAnZGVwYXJ0dXJlJyxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRpbWVzdGFtcCwgaW5pdGlhbEFycml2ZUJ5XSk7XG5cbiAgY29uc3QgdGltZUNoYW5nZWQgPSBkZWJvdW5jZShuZXdUaW1lID0+IHtcbiAgICBpZiAobmV3VGltZSA9PT0gbnVsbCkge1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICAgIG9uVGltZUNoYW5nZShcbiAgICAgICAgTWF0aC5yb3VuZChtb21lbnQoKS52YWx1ZU9mKCkgLyAxMDAwKSxcbiAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCksIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKTtcbiAgfSwgMTApO1xuXG4gIGNvbnN0IGRhdGVDaGFuZ2VkID0gZGVib3VuY2UobmV3RGF0ZSA9PiB7XG4gICAgaWYgKG5ld0RhdGUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvbkRhdGVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3RGF0ZSk7XG4gICAgb25EYXRlQ2hhbmdlKE1hdGgucm91bmQobmV3RGF0ZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBub3dDbGlja2VkID0gKCkgPT4ge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld1RpbWVzdGFtcCk7XG4gICAgb25Ob3dDbGljayhNYXRoLnJvdW5kKG5ld1RpbWVzdGFtcCAvIDEwMDApKTtcbiAgfTtcblxuICBjb25zdCBkZXBhcnR1cmVDbGlja2VkID0gKCkgPT4ge1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IG5ld1RpbWUgPSB0aW1lc3RhbXA7XG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobm93KTtcbiAgICAgIG5ld1RpbWUgPSBub3c7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGRlcGFydHVyZU9yQXJyaXZhbCAhPT0gJ2RlcGFydHVyZScpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhcnJpdmFsQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdhcnJpdmFsJykge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uQXJyaXZhbENsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW9kYWxTdWJtaXQgPSAodGltZSwgbW9kZSkgPT4ge1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKHRpbWUpO1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChtb2RlKTtcbiAgICBvblRpbWVDaGFuZ2UodGltZSAvIDEwMDAsIG1vZGUgPT09ICdhcnJpdmFsJywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0ZXRpbWVwaWNrZXJcbiAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgb25UaW1lQ2hhbmdlPXt0aW1lQ2hhbmdlZH1cbiAgICAgIG9uRGF0ZUNoYW5nZT17ZGF0ZUNoYW5nZWR9XG4gICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgIG9uTm93Q2xpY2s9e25vd0NsaWNrZWR9XG4gICAgICBvbkRlcGFydHVyZUNsaWNrPXtkZXBhcnR1cmVDbGlja2VkfVxuICAgICAgb25BcnJpdmFsQ2xpY2s9e2Fycml2YWxDbGlja2VkfVxuICAgICAgZW1iZWRXaGVuQ2xvc2VkPXtlbWJlZFdoZW5DbG9zZWR9XG4gICAgICBlbWJlZFdoZW5PcGVuPXtlbWJlZFdoZW5PcGVufVxuICAgICAgbGFuZz17bGFuZ31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgIG9uTW9kYWxTdWJtaXQ9e29uTW9kYWxTdWJtaXR9XG4gICAgICBmb250V2VpZ2h0cz17Zm9udFdlaWdodHN9XG4gICAgICBzZXJ2aWNlVGltZVJhbmdlPXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgb25PcGVuPXtvbk9wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgb3BlblBpY2tlcj17b3BlblBpY2tlcn1cbiAgICAvPlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLnByb3BUeXBlcyA9IHtcbiAgcmVhbHRpbWU6IFByb3BUeXBlcy5ib29sLFxuICBpbml0aWFsVGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsQXJyaXZlQnk6IFByb3BUeXBlcy5ib29sLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgfSksXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIuZGVmYXVsdFByb3BzID0ge1xuICByZWFsdGltZTogZmFsc2UsXG4gIGluaXRpYWxBcnJpdmVCeTogdW5kZWZpbmVkLFxuICBpbml0aWFsVGltZXN0YW1wOiB1bmRlZmluZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgbGFuZzogJ2VuJyxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBmb250V2VpZ2h0czoge1xuICAgIG1lZGl1bTogNTAwLFxuICB9LFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXI7XG4iXSwibmFtZXMiOlsicGFyc2VUeXBlZFRpbWUiLCJ0eXBlZFZhbHVlIiwiYWN0dWFsVmFsdWUiLCJsZW5ndGgiLCJzcGxpdCIsImV2ZXJ5IiwibiIsIk51bWJlciIsImlzSW50ZWdlciIsInNsaWNlIiwiRGVza3RvcERhdGV0aW1lcGlja2VyIiwidmFsdWUiLCJvbkNoYW5nZSIsImdldERpc3BsYXkiLCJ0aW1lQ2hvaWNlcyIsInZhbGlkYXRlIiwiaWQiLCJsYWJlbCIsImljb24iLCJkaXNhYmxlVHlwaW5nIiwidGltZVpvbmUiLCJtb21lbnQiLCJ0eiIsInNldERlZmF1bHQiLCJkaXNwbGF5VmFsdWUiLCJjaGFuZ2VEaXNwbGF5VmFsdWUiLCJ1c2VTdGF0ZSIsInR5cGluZyIsInNldFR5cGluZyIsInVzZUVmZmVjdCIsImhhbmRsZVRpbWVzdGFtcCIsIm5ld1ZhbHVlIiwiYXNOdW1iZXIiLCJpc05hTiIsImlzVmFsaWQiLCJ2YWx1ZU9mIiwib3B0aW9ucyIsIm1hcCIsInQiLCJ0b1N0cmluZyIsImNsb3Nlc3RPcHRpb24iLCJyZWR1Y2UiLCJhIiwiYiIsIk1hdGgiLCJhYnMiLCJpbnB1dElkIiwibGFiZWxJZCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIlNlbGVjdCIsImFyaWFMaXZlTWVzc2FnZXMiLCJndWlkYW5jZSIsIm9uRmlsdGVyIiwib25Gb2N1cyIsImNvbnRleHQiLCJpdGVtTGFiZWwiLCJ0aW1lIiwidmFsaWRhdGVkIiwiY29tcG9uZW50cyIsIkluZGljYXRvcnNDb250YWluZXIiLCJjbGFzc05hbWVQcmVmaXgiLCJvbklucHV0Q2hhbmdlIiwiYWN0aW9uIiwidXRpbHMiLCJpbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9uIiwiY29udHJvbFNob3VsZFJlbmRlclZhbHVlIiwidGFiU2VsZWN0c1ZhbHVlIiwicGxhY2Vob2xkZXIiLCJlIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25CbHVyIiwib25LZXlEb3duIiwiaW5jbHVkZXMiLCJrZXkiLCJpc1NlYXJjaGFibGUiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInN0cmluZyIsIm5vZGUiLCJib29sIiwiZGVmYXVsdFByb3BzIiwidHJhbnNsYXRpb25zIiwiZGUiLCJ0b2RheSIsInRvbW9ycm93IiwiYXJyaXZhbCIsImRhdGUiLCJkZXBhcnR1cmUiLCJyZWFkeSIsImNhbmNlbCIsImVuIiwiZmkiLCJzdiIsIk1vYmlsZURhdGVwaWNrZXIiLCJpdGVtQ291bnQiLCJzdGFydFRpbWUiLCJvcGVuIiwiY2hhbmdlT3BlbiIsInNjcm9sbFJlZiIsInVzZVJlZiIsImRhdGVDaG9pY2VzIiwiQXJyYXkiLCJmaWxsIiwiXyIsImkiLCJhZGQiLCJzY3JvbGxJbmRleCIsImZpbmRJbmRleCIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJuYXRpdmVJbnB1dCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwic291cmNlIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsInRpbWVJbnB1dFJlZiIsImZvY3VzIiwiaW5wdXRNb2RlIiwibWF4TGVuZ3RoIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJldmVudCIsIm1hdGNoIiwiY2hhckF0IiwiYWN0dWFsIiwidGltZXN0YW1wIiwiTW9iaWxlUGlja2VyTW9kYWwiLCJkZXBhcnR1cmVPckFycml2YWwiLCJvbk5vd0NsaWNrIiwibGFuZyIsImNvbG9yIiwib25TdWJtaXQiLCJvbkNhbmNlbCIsImdldFRpbWVEaXNwbGF5IiwiZGF0ZVNlbGVjdEl0ZW1Db3VudCIsImdldERhdGVEaXNwbGF5IiwidmFsaWRhdGVUaW1lIiwiZm9udFdlaWdodHMiLCJ0cmFuc2xhdGlvblNldHRpbmdzIiwibG5nIiwiZGlzcGxheVRpbWVzdGFtcCIsImNoYW5nZVRpbWVzdGFtcCIsImRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQiLCJjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwiLCJodG1sSWQiLCJ1bmlxdWVJZCIsImRhdGVTZWxlY3RTdGFydFRpbWUiLCJzdGFydE9mIiwiaG91ciIsIm1pbnV0ZSIsIk1vZGFsIiwiYXBwRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJpc09wZW4iLCJvdmVybGF5Q2xhc3NOYW1lIiwibWVkaXVtIiwiaTE4bmV4dCIsIm9uQ2xpY2siLCJuYW1lIiwiY2hlY2tlZCIsIkljb24iLCJpbWciLCJEYXRldGltZXBpY2tlciIsIm9uVGltZUNoYW5nZSIsIm9uRGF0ZUNoYW5nZSIsIm9uRGVwYXJ0dXJlQ2xpY2siLCJvbkFycml2YWxDbGljayIsImVtYmVkV2hlbkNsb3NlZCIsImVtYmVkV2hlbk9wZW4iLCJvbk1vZGFsU3VibWl0Iiwic2VydmljZVRpbWVSYW5nZSIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJvcGVuUGlja2VyIiwiY2hhbmdlRGlzcGxheVRpbWVzdGFtcCIsInRpbWVySWQiLCJzZXRUaW1lciIsInVzZU1vYmlsZUlucHV0cyIsInZlbmRvciIsIndpbmRvdyIsIm9wZXJhIiwidGVzdCIsImlzTW9iaWxlIiwiZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIiwib3BlblBpY2tlclJlZiIsImlucHV0UmVmIiwiYWxlcnRSZWYiLCJmb3JFYWNoIiwibGFuZ3VhZ2UiLCJhZGRSZXNvdXJjZUJ1bmRsZSIsImxvY2FsZSIsIm5vd1NlbGVjdGVkIiwiY2xlYXJJbnRlcnZhbCIsIm5ld0lkIiwic2V0SW50ZXJ2YWwiLCJub3ciLCJpc1NhbWUiLCJwcmV2SXNPcGVuUmVmIiwiZm9ybWF0dGVkIiwiZm9ybWF0IiwidG9VcHBlckNhc2UiLCJjdXJyZW50VGltZXN0YW1wIiwidHJpbW1lZCIsInRyaW0iLCJzcGxpdHRlciIsInZhbHVlcyIsImhvdXJzIiwiaG91cnNWYWxpZCIsIm1pbnV0ZXMiLCJzZWxlY3RlZE1vbWVudCIsInRpbWVTZWxlY3RTdGFydFRpbWUiLCJwdXNoIiwiZml2ZU1pbnV0ZXMiLCJuZXh0Rml2ZU1pbiIsImNlaWwiLCJ0aW1lc1RvQWRkIiwiY2xvc2VzdEluZGV4QWZ0ZXIiLCJzcGxpY2UiLCJmcm9tIiwiU2V0Iiwic2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQiLCJpbm5lckhUTUwiLCJzZXRUaW1lb3V0IiwiaGlkZGVuIiwiY2xvc2VkIiwicm9sZSIsInRleHRidXR0b24iLCJhY3RpdmUiLCJuZXdUaW1lc3RhbXAiLCJuZXdEZXBhcnR1cmVPckFycml2YWwiLCJEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyIiwicmVhbHRpbWUiLCJpbml0aWFsQXJyaXZlQnkiLCJpbml0aWFsVGltZXN0YW1wIiwiaW5pdGlhbE5vdyIsImNoYW5nZVRpbWVzdGFtcFN0YXRlIiwiYm90aE51bGwiLCJvbmVOdWxsIiwic2FtZVRpbWUiLCJyb3VuZCIsInRpbWVDaGFuZ2VkIiwiZGVib3VuY2UiLCJuZXdUaW1lIiwiZGF0ZUNoYW5nZWQiLCJuZXdEYXRlIiwibm93Q2xpY2tlZCIsImRlcGFydHVyZUNsaWNrZWQiLCJjaGFuZ2VkIiwiYXJyaXZhbENsaWNrZWQiLCJtb2RlIiwiZGF0ZVRpbWVDb21iaW5lZCIsImluaXQiLCJyZXNvdXJjZXMiLCJvbmVPZiIsInNoYXBlIiwiZmFsbGJhY2tMbmciLCJkZWZhdWx0TlMiLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiXSwibWFwcGluZ3MiOiI4akNBdUJlLENBQUVBLGVBaEJqQixTQUF3QkMsR0FDdEIsSUFBSUMsRUFBY0QsRUFZbEIsT0FWeUIsSUFBdkJDLEVBQVlDLFFBQ1pELEVBQVlFLE1BQU0sSUFBSUMsT0FBTUMsR0FBS0MsT0FBT0MsVUFBVUQsT0FBT0QsUUFJdkRKLEVBREVLLE9BQU9MLEVBQVlPLE1BQU0sRUFBRyxLQUFPLEdBQ3RCLEdBQUVQLEVBQVlPLE1BQU0sRUFBRyxNQUFNUCxFQUFZLEtBRXpDLEdBQUVBLEVBQVksTUFBTUEsRUFBWU8sTUFBTSxNQUdsRFAsQ0FDVCw2dkVDV0EsU0FBU1EsR0FBc0JDLE1BQzdCQSxFQUFLQyxTQUNMQSxFQUFRQyxXQUNSQSxFQUFVQyxZQUNWQSxFQUFXQyxTQUNYQSxFQUFRQyxHQUNSQSxFQUFFQyxNQUNGQSxFQUFLQyxLQUNMQSxFQUFJQyxjQUNKQSxFQUFhQyxTQUNiQSxJQUVBQyxVQUFPQyxHQUFHQyxXQUFXSCxHQUNyQixNQUFPSSxFQUFjQyxHQUFzQkMsV0FBU2IsRUFBV0YsS0FDeERnQixFQUFRQyxHQUFhRixZQUFTLEdBRXJDRyxhQUFVLElBQU1KLEVBQW1CWixFQUFXRixLQUFTLENBQUNBLElBR3hELE1BQU1tQixFQUFr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
|