@untemps/react-vocal
Advanced tools
Comparing version 1.5.1 to 1.5.2
@@ -0,1 +1,3 @@ | ||
## [1.5.2](https://github.com/untemps/react-vocal/compare/v1.5.1...v1.5.2) (2020-12-26) | ||
## [1.5.1](https://github.com/untemps/react-vocal/compare/v1.5.0...v1.5.1) (2020-12-22) | ||
@@ -2,0 +4,0 @@ |
@@ -1,2 +0,2 @@ | ||
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),r=e(require("prop-types"));function o(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void n(e)}c.done?t(u):Promise.resolve(u).then(r,o)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(e,t)}(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 f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void n(e)}c.done?t(u):Promise.resolve(u).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){p(i,r,o,a,c,"next",e)}function c(e){p(i,r,o,a,c,"throw",e)}a(void 0)}))}}function h(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=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var m=function(){var e=v(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(n,r){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.permissions){e.next=4;break}r(new DOMException("Permissions not supported","NOT_FOUND_ERR")),e.next=16;break;case 4:return e.prev=4,e.next=7,navigator.permissions.query({name:t});case 7:o=e.sent,i=function e(t){o.removeEventListener("change",e),b(t.target.state,n,r)},o.addEventListener("change",i),b(o.state,n,r),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(4),r(e.t0);case 16:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),b=function(e,t,n){switch(e){case"denied":n(new DOMException("Permission denied","NOT_ALLOWED_ERR"));break;default:t(e)}},y=function(){var e=v(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(r,o){var i,a,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.mediaDevices){e.next=4;break}o(new DOMException("MediaDevices not supported","NOT_FOUND_ERR")),e.next=24;break;case 4:return e.prev=4,e.t0=Promise,e.next=8,m(t);case 8:return e.t1=e.sent,e.next=11,navigator.mediaDevices.getUserMedia(n);case 11:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=15,e.t0.all.call(e.t0,e.t3);case 15:i=e.sent,a=h(i,2),c=a[1],r(c),e.next=24;break;case 21:e.prev=21,e.t4=e.catch(4),o(e.t4);case 24:case"end":return e.stop()}}),e,null,[[4,21]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),g=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"_instance",null),c(this,"_listeners",null);var r=e._resolveSpeechRecognition()||{};this._instance=new r,this._listeners={},Object.entries(s(s({},e.defaultOptions),t||{})).forEach((function(t){var r=l(t,2),o=r[0],i=r[1];"grammars"!==o||i||(i=new(e._resolveSpeechGrammarList()||{}));n._instance[o]=i}))}var t,n;return a(e,null,[{key:"isSupported",get:function(){return!!e._resolveSpeechRecognition()},set:function(e){throw new Error("You cannot set isSupported directly.")}}]),a(e,[{key:"start",value:(t=regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._instance){e.next=14;break}return e.prev=1,e.next=4,y("microphone",{audio:!0});case 4:if(e.sent){e.next=7;break}throw new Error("Unable to retrieve the stream from media device");case 7:this._instance.start(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),(t=this._listeners.error)&&t(e.t0);case 14:return e.abrupt("return",this);case 15:case"end":return e.stop()}}),e,this,[[1,10]])})),n=function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function c(e){o(a,r,i,c,u,"next",e)}function u(e){o(a,r,i,c,u,"throw",e)}c(void 0)}))},function(){return n.apply(this,arguments)})},{key:"stop",value:function(){return this._instance&&this._instance.stop(),this}},{key:"abort",value:function(){return this._instance&&this._instance.abort(),this}},{key:"addEventListener",value:function(t,n){var r=this;if(this._instance&&this._includesEventType(t)){this._listeners[t]&&this.removeEventListener(t);var o=function(o){var i=[];t===e.eventTypes.RESULT&&o.results&&o.results.length>0&&i.push(o.results[0][0].transcript),n&&n.apply(r,[].concat(i,[o]))};this._instance.addEventListener(t,o),this._listeners[t]=o}return this}},{key:"removeEventListener",value:function(e){var t=this._listeners[e];return this._instance.removeEventListener(e,t),delete this._listeners[e],this}},{key:"cleanup",value:function(){var e=this;return this.stop(),Object.keys(this._listeners).forEach((function(t){return e.removeEventListener(t)})),this._instance=null,this}},{key:"_includesEventType",value:function(t){return!!Object.values(e.eventTypes).find((function(e){return e===t}))}},{key:"instance",get:function(){return this._instance},set:function(e){throw new Error("You cannot set instance directly.")}}],[{key:"_resolveSpeechRecognition",value:function(){return window.SpeechRecognition||window.webkitSpeechRecognition||window.mozSpeechRecognition||window.msSpeechRecognition}},{key:"_resolveSpeechGrammarList",value:function(){return window.SpeechGrammarList||window.webkitSpeechGrammarList||window.mozSpeechGrammarList||window.msSpeechGrammarList}}]),e}();c(g,"defaultOptions",{grammars:null,lang:"en-US",continuous:!1,interimResults:!1,maxAlternatives:1,serviceURI:null}),c(g,"eventTypes",{AUDIO_END:"audioend",AUDIO_START:"audiostart",END:"end",ERROR:"error",NO_MATCH:"nomatch",RESULT:"result",SOUND_END:"soundend",SOUND_START:"soundstart",SPEECH_END:"speechend",SPEECH_START:"speechstart",START:"start"});var w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en-US",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=t.useRef(null);t.useEffect((function(){if(g.isSupported)return o.current=r||new g({lang:e,grammars:n}),function(){o.current.abort(),o.current.cleanup()}}),[e,n,r]);var i=t.useCallback((function(){o.current&&o.current.start()}),[]),a=t.useCallback((function(){o.current&&o.current.stop()}),[]),c=t.useCallback((function(){o.current&&o.current.abort()}),[]),u=t.useCallback((function(e,t){o.current&&o.current.addEventListener(e,t)}),[]),s=t.useCallback((function(e,t){o.current&&o.current.removeEventListener(e,t)}),[]),l=t.useCallback((function(){o.current&&o.current.cleanup()}),[]);return[o,{start:i,stop:a,abort:c,subscribe:u,unsubscribe:s,clean:l}]},S=function(e){var t=e.color,r=e.activeColor,o=e.isActive;return n.createElement("svg",{"data-testid":"__icon-root__",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 24 24"},n.createElement("g",null,n.createElement("path",{"data-testid":"__icon-path__",fill:t,d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"}),o&&n.createElement("circle",{"data-testid":"__icon-active__",fill:r,cx:"16",cy:"4",r:"4"})))};S.propTypes={color:r.string,activeColor:r.string,isActive:r.bool},S.defaultProps={color:"black",activeColor:"red",isActive:!1};var _=function(e){var r=e.children,o=e.lang,i=e.grammars,a=e.timeout,c=e.ariaLabel,u=e.style,f=e.className,p=e.outlineStyle,v=e.onStart,h=e.onEnd,d=e.onSpeechStart,m=e.onSpeechEnd,b=e.onResult,y=e.onError,_=e.onNoMatch,E=e.__rsInstance,O=t.useRef(null),k=l(t.useState(!1),2),R=k[0],x=k[1],j=l(w(o,i,E),2)[1],T=j.start,A=j.stop,L=j.subscribe,P=j.unsubscribe,D=function e(t){U(),I(),P("start",q),P("end",e),P("speechstart",F),P("speechend",V),P("result",B),P("error",Y),P("nomatch",$),h&&h(t)},C=l(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=t.useRef(-1),o=t.useCallback((function(){clearTimeout(r.current),r.current=-1}),[]),i=t.useCallback((function(){o(),r.current=setTimeout(e,n)}),[e,n,o]);return t.useEffect((function(){return o}),[o]),[i,o]}(D,a),2),N=C[0],U=C[1],M=function(){try{x(!0),L("start",q),L("end",D),L("speechstart",F),L("speechend",V),L("result",B),L("error",Y),L("nomatch",$),T()}catch(e){Y(e)}},I=function(){try{x(!1),A()}catch(e){y&&y(e)}},G=function(){M()},z=function(){!f&&p&&(O.current.style.outline=p)},H=function(){!f&&p&&(O.current.style.outline="none")},q=function(e){N(),v&&v(e)},F=function(e){U(),d&&d(e)},V=function(e){N(),m&&m(e)},B=function(e,t){U(),I(),b&&b(e,t)},Y=function(e){I(),y&&y(e)},$=function(e){U(),I(),_&&_(e)};return function(e){return g.isSupported?"function"==typeof e?e(M,I,R):t.isValidElement(e)?t.cloneElement(e,s({},!R&&{onClick:G})):n.createElement("button",{"data-testid":"__vocal-root__",ref:O,role:"button","aria-label":c,style:f?null:s({width:24,height:24,background:"none",border:"none",padding:0,cursor:R?"default":"pointer"},u),className:f,onFocus:z,onBlur:H,onClick:G},n.createElement(S,{isActive:R,iconColor:"#aaa"})):null}(r)};_.propTypes={lang:r.string,grammars:r.object,timeout:r.number,ariaLabel:r.string,style:r.object,className:r.string,outlineStyle:r.string,onStart:r.func,onEnd:r.func,onSpeechStart:r.func,onSpeechEnd:r.func,onResult:r.func,onError:r.func,onNoMatch:r.func},_.defaultProps={lang:"en-US",grammars:null,timeout:3e3,ariaLabel:"start recognition",style:null,className:null,outlineStyle:"2px solid",onStart:null,onEnd:null,onSpeechStart:null,onSpeechEnd:null,onResult:null,onError:null,onNoMatch:null};var E=g.isSupported;exports.default=_,exports.isSupported=E,exports.useVocal=w; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AdW50ZW1wcy91c2VyLXBlcm1pc3Npb25zLXV0aWxzL2Rpc3QvaW5kZXguZXMuanMiLCIuLi9zcmMvY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuanMiLCIuLi9zcmMvdXRpbHMvaXNGdW5jLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVZvY2FsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvSWNvbi5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1ZvY2FsLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVRpbWVvdXQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZShlLHIsdCxuLGEsaSxvKXt0cnl7dmFyIHU9ZVtpXShvKSxjPXUudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdChlKX11LmRvbmU/cihjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIHIocil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsaSl7dmFyIG89ci5hcHBseSh0LG4pO2Z1bmN0aW9uIHUocil7ZShvLGEsaSx1LGMsXCJuZXh0XCIscil9ZnVuY3Rpb24gYyhyKXtlKG8sYSxpLHUsYyxcInRocm93XCIscil9dSh2b2lkIDApfSkpfX1mdW5jdGlvbiB0KGUscil7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHIpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBTeW1ib2x8fCEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkpcmV0dXJuO3ZhciB0PVtdLG49ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBvLHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShvPXUubmV4dCgpKS5kb25lKSYmKHQucHVzaChvLnZhbHVlKSwhcnx8dC5sZW5ndGghPT1yKTtuPSEwKTt9Y2F0Y2goZSl7YT0hMCxpPWV9ZmluYWxseXt0cnl7bnx8bnVsbD09dS5yZXR1cm58fHUucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IGl9fXJldHVybiB0fShlLHIpfHxmdW5jdGlvbihlLHIpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbihlLHIpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09dCYmZS5jb25zdHJ1Y3RvciYmKHQ9ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09dHx8XCJTZXRcIj09PXQpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PXR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpKXJldHVybiBuKGUscil9KGUscil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBuKGUscil7KG51bGw9PXJ8fHI+ZS5sZW5ndGgpJiYocj1lLmxlbmd0aCk7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkocik7dDxyO3QrKyluW3RdPWVbdF07cmV0dXJuIG59dmFyIGE9ZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG5hdmlnYXRvci5wZXJtaXNzaW9ucyl7ZS5uZXh0PTQ7YnJlYWt9bihuZXcgRE9NRXhjZXB0aW9uKFwiUGVybWlzc2lvbnMgbm90IHN1cHBvcnRlZFwiLFwiTk9UX0ZPVU5EX0VSUlwiKSksZS5uZXh0PTE2O2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5wcmV2PTQsZS5uZXh0PTcsbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOnR9KTtjYXNlIDc6YT1lLnNlbnQsbz1mdW5jdGlvbiBlKHQpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGUpLGkodC50YXJnZXQuc3RhdGUscixuKX0sYS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbyksaShhLnN0YXRlLHIsbiksZS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6ZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCg0KSxuKGUudDApO2Nhc2UgMTY6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzQsMTNdXSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxpPWZ1bmN0aW9uKGUscix0KXtzd2l0Y2goZSl7Y2FzZVwiZGVuaWVkXCI6dChuZXcgRE9NRXhjZXB0aW9uKFwiUGVybWlzc2lvbiBkZW5pZWRcIixcIk5PVF9BTExPV0VEX0VSUlwiKSk7YnJlYWs7ZGVmYXVsdDpyKGUpfX0sbz1mdW5jdGlvbigpe3ZhciBlPXIocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUobixpKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG8pe3ZhciB1LGMscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG5hdmlnYXRvci5tZWRpYURldmljZXMpe2UubmV4dD00O2JyZWFrfW8obmV3IERPTUV4Y2VwdGlvbihcIk1lZGlhRGV2aWNlcyBub3Qgc3VwcG9ydGVkXCIsXCJOT1RfRk9VTkRfRVJSXCIpKSxlLm5leHQ9MjQ7YnJlYWs7Y2FzZSA0OnJldHVybiBlLnByZXY9NCxlLnQwPVByb21pc2UsZS5uZXh0PTgsYShuKTtjYXNlIDg6cmV0dXJuIGUudDE9ZS5zZW50LGUubmV4dD0xMSxuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShpKTtjYXNlIDExOnJldHVybiBlLnQyPWUuc2VudCxlLnQzPVtlLnQxLGUudDJdLGUubmV4dD0xNSxlLnQwLmFsbC5jYWxsKGUudDAsZS50Myk7Y2FzZSAxNTp1PWUuc2VudCxjPXQodSwyKSxzPWNbMV0scihzKSxlLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTplLnByZXY9MjEsZS50ND1lLmNhdGNoKDQpLG8oZS50NCk7Y2FzZSAyNDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNCwyMV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHIsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpO2Nhc2UgMTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZXhwb3J0e2EgYXMgZ2V0UGVybWlzc2lvbixvIGFzIGdldFVzZXJNZWRpYVN0cmVhbX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1WlhNdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUwzTnlZeTluWlhSUVpYSnRhWE56YVc5dUxtcHpJaXdpTGk0dmMzSmpMMmRsZEZWelpYSk5aV1JwWVZOMGNtVmhiUzVxY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlGSmxkSFZ5Ym5NZ1lTQndjbTl0YVhObElISmxjMjlzZG1Wa0lIZG9aVzRnZEdobElIQmxjbTFwYzNOcGIyNGdhWE1nWjNKaGJuUmxaQ0JpZVNCMGFHVWdkWE5sY2x4dUlDb2dRSEJoY21GdElIQmxjbTFwYzNOcGIyNU9ZVzFsSUNBZ0lDQWdJQ0FnSUNBZ1RtRnRaU0J2WmlCMGFHVWdjR1Z5YldsemMybHZiaTRnUUhObFpTQm9kSFJ3Y3pvdkwzY3pZeTVuYVhSb2RXSXVhVzh2Y0dWeWJXbHpjMmx2Ym5NdkkyVnVkVzFrWldZdGNHVnliV2x6YzJsdmJtNWhiV1ZjYmlBcUlFQnlaWFIxY201eklIdFFjbTl0YVhObGZWeHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JoYzNsdVl5QW9jR1Z5YldsemMybHZiazVoYldVcElEMCtJSHRjYmx4MGNtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHRnplVzVqSUNoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNibHgwWEhScFppQW9JVzVoZG1sbllYUnZjaTV3WlhKdGFYTnphVzl1Y3lrZ2UxeHVYSFJjZEZ4MGNtVnFaV04wS0c1bGR5QkVUMDFGZUdObGNIUnBiMjRvSjFCbGNtMXBjM05wYjI1eklHNXZkQ0J6ZFhCd2IzSjBaV1FuTENBblRrOVVYMFpQVlU1RVgwVlNVaWNwS1Z4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUjBjbmtnZTF4dVhIUmNkRngwWEhSamIyNXpkQ0J3WlhKdGFYTnphVzl1VTNSaGRIVnpJRDBnWVhkaGFYUWdibUYyYVdkaGRHOXlMbkJsY20xcGMzTnBiMjV6TG5GMVpYSjVLSHNnYm1GdFpUb2djR1Z5YldsemMybHZiazVoYldVZ2ZTbGNibHgwWEhSY2RGeDBZMjl1YzNRZ2IyNURhR0Z1WjJVZ1BTQW9aWFpsYm5RcElEMCtJSHRjYmx4MFhIUmNkRngwWEhSd1pYSnRhWE56YVc5dVUzUmhkSFZ6TG5KbGJXOTJaVVYyWlc1MFRHbHpkR1Z1WlhJb0oyTm9ZVzVuWlNjc0lHOXVRMmhoYm1kbEtWeHVYSFJjZEZ4MFhIUmNkSEpsYzI5c2RtVlBjbEpsYW1WamRFSmhjMlZrVDI1VGRHRjBaU2hsZG1WdWRDNTBZWEpuWlhRdWMzUmhkR1VzSUhKbGMyOXNkbVVzSUhKbGFtVmpkQ2xjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSd1pYSnRhWE56YVc5dVUzUmhkSFZ6TG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjJOb1lXNW5aU2NzSUc5dVEyaGhibWRsS1Z4dVhIUmNkRngwWEhSeVpYTnZiSFpsVDNKU1pXcGxZM1JDWVhObFpFOXVVM1JoZEdVb2NHVnliV2x6YzJsdmJsTjBZWFIxY3k1emRHRjBaU3dnY21WemIyeDJaU3dnY21WcVpXTjBLVnh1WEhSY2RGeDBmU0JqWVhSamFDQW9aWEp5YjNJcElIdGNibHgwWEhSY2RGeDBjbVZxWldOMEtHVnljbTl5S1Z4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZTbGNibjFjYmx4dVkyOXVjM1FnY21WemIyeDJaVTl5VW1WcVpXTjBRbUZ6WldSUGJsTjBZWFJsSUQwZ0tITjBZWFJsTENCeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNibHgwYzNkcGRHTm9JQ2h6ZEdGMFpTa2dlMXh1WEhSY2RHTmhjMlVnSjJSbGJtbGxaQ2M2WEc1Y2RGeDBYSFJ5WldwbFkzUW9ibVYzSUVSUFRVVjRZMlZ3ZEdsdmJpZ25VR1Z5YldsemMybHZiaUJrWlc1cFpXUW5MQ0FuVGs5VVgwRk1URTlYUlVSZlJWSlNKeWtwWEc1Y2RGeDBYSFJpY21WaGExeHVYSFJjZEdSbFptRjFiSFE2WEc1Y2RGeDBYSFJ5WlhOdmJIWmxLSE4wWVhSbEtWeHVYSFI5WEc1OVhHNGlMQ0pwYlhCdmNuUWdaMlYwVUdWeWJXbHpjMmx2YmlCbWNtOXRJQ2N1TDJkbGRGQmxjbTFwYzNOcGIyNG5YRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJoSUhCeWIyMXBjMlVnY21WemIyeDJaV1FnZDJobGJpQjBhR1VnY0dWeWJXbHpjMmx2YmlCcGN5Qm5jbUZ1ZEdWa0lHSjVJSFJvWlNCMWMyVnlJR0Z1WkNCMGFHVWdjM1J5WldGdElHbHpJSEpsZEhKcFpYWmxaRnh1SUNvZ1FIQmhjbUZ0SUhCbGNtMXBjM05wYjI1T1lXMWxJQ0FnSUNBZ0lDQWdJQ0FnVG1GdFpTQnZaaUIwYUdVZ2NHVnliV2x6YzJsdmJpNGdRSE5sWlNCb2RIUndjem92TDNjell5NW5hWFJvZFdJdWFXOHZjR1Z5YldsemMybHZibk12STJWdWRXMWtaV1l0Y0dWeWJXbHpjMmx2Ym01aGJXVmNiaUFxSUVCd1lYSmhiU0J0WldScFlWTjBjbVZoYlVOdmJuTjBjbUZwYm5SeklDQWdJRU52Ym5OMGNtRnBiblJ6SUc5aWFtVmpkQzRnUUhObFpTQm9kSFJ3Y3pvdkwyUmxkbVZzYjNCbGNpNXRiM3BwYkd4aExtOXlaeTlsYmkxVlV5OWtiMk56TDFkbFlpOUJVRWt2VFdWa2FXRlRkSEpsWVcxRGIyNXpkSEpoYVc1MGMxeHVJQ29nUUhKbGRIVnlibk1nZTFCeWIyMXBjMlY5WEc0Z0tpOWNibVY0Y0c5eWRDQmtaV1poZFd4MElHRnplVzVqSUNod1pYSnRhWE56YVc5dVRtRnRaU3dnYldWa2FXRlRkSEpsWVcxRGIyNXpkSEpoYVc1MGN5a2dQVDRnZTF4dVhIUnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ZWE41Ym1NZ0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1WEhSY2RHbG1JQ2doYm1GMmFXZGhkRzl5TG0xbFpHbGhSR1YyYVdObGN5a2dlMXh1WEhSY2RGeDBjbVZxWldOMEtHNWxkeUJFVDAxRmVHTmxjSFJwYjI0b0owMWxaR2xoUkdWMmFXTmxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0p5d2dKMDVQVkY5R1QxVk9SRjlGVWxJbktTbGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwZEhKNUlIdGNibHgwWEhSY2RGeDBZMjl1YzNRZ1d5d2djM1J5WldGdFhTQTlJR0YzWVdsMElGQnliMjFwYzJVdVlXeHNLRnRjYmx4MFhIUmNkRngwWEhSaGQyRnBkQ0JuWlhSUVpYSnRhWE56YVc5dUtIQmxjbTFwYzNOcGIyNU9ZVzFsS1N4Y2JseDBYSFJjZEZ4MFhIUmhkMkZwZENCdVlYWnBaMkYwYjNJdWJXVmthV0ZFWlhacFkyVnpMbWRsZEZWelpYSk5aV1JwWVNodFpXUnBZVk4wY21WaGJVTnZibk4wY21GcGJuUnpLU3hjYmx4MFhIUmNkRngwWFNsY2JseDBYSFJjZEZ4MGNtVnpiMngyWlNoemRISmxZVzBwWEc1Y2RGeDBYSFI5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1WEhSY2RGeDBYSFJ5WldwbFkzUW9aWEp5YjNJcFhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlLVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJbkJsY20xcGMzTnBiMjVPWVcxbElpd2lVSEp2YldselpTSXNJbkpsYzI5c2RtVWlMQ0p5WldwbFkzUWlMQ0p1WVhacFoyRjBiM0lpTENKd1pYSnRhWE56YVc5dWN5SXNJa1JQVFVWNFkyVndkR2x2YmlJc0luRjFaWEo1SWl3aWJtRnRaU0lzSW5CbGNtMXBjM05wYjI1VGRHRjBkWE1pTENKdmJrTm9ZVzVuWlNJc0ltVjJaVzUwSWl3aWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpSXNJbkpsYzI5c2RtVlBjbEpsYW1WamRFSmhjMlZrVDI1VGRHRjBaU0lzSW5SaGNtZGxkQ0lzSW5OMFlYUmxJaXdpWVdSa1JYWmxiblJNYVhOMFpXNWxjaUlzSW0xbFpHbGhVM1J5WldGdFEyOXVjM1J5WVdsdWRITWlMQ0p0WldScFlVUmxkbWxqWlhNaUxDSm5aWFJRWlhKdGFYTnphVzl1SWl3aVoyVjBWWE5sY2sxbFpHbGhJaXdpWVd4c0lpd2ljM1J5WldGdElsMHNJbTFoY0hCcGJtZHpJam9pYlhkRFFVdEJMR3RFUVVGbExGZEJRVTlCTERSSFFVTmtMRWxCUVVsRExHOUVRVUZSTEZkQlFVOURMRVZCUVZORExEaEdRVU0zUWtNc1ZVRkJWVU1zTkVKQlEyUkdMRVZCUVU4c1NVRkJTVWNzWVVGQllTdzBRa0ZCTmtJc2EwVkJSM0pDUml4VlFVRlZReXhaUVVGWlJTeE5RVUZOTEVOQlFVVkRMRXRCUVUxU0xGZEJRVGRFVXl4VFFVTkJReXhGUVVGWExGTkJRVmhCTEVWQlFWbERMRWRCUTJwQ1JpeEZRVUZwUWtjc2IwSkJRVzlDTEZOQlFWVkdMRWRCUXk5RFJ5eEZRVUUwUWtZc1JVRkJUVWNzVDBGQlQwTXNUVUZCVDJJc1JVRkJVME1zU1VGRk1VUk5MRVZCUVdsQ1R5eHBRa0ZCYVVJc1UwRkJWVTRzUjBGRE5VTkhMRVZCUVRSQ1NpeEZRVUZwUWswc1RVRkJUMklzUlVGQlUwTXNjVVJCUlRkRVFTdzJUa0ZOUlZVc1JVRkJPRUlzVTBGQlEwVXNSVUZCVDJJc1JVRkJVME1zVlVGRE5VTlpMRTlCUTBZc1UwRkRTbG9zUlVGQlR5eEpRVUZKUnl4aFFVRmhMRzlDUVVGeFFpeHJRMEZITjBOS0xFVkJRVkZoTEcxRVEzWkNTU3hYUVVGUFppeEZRVUZuUW1sQ0xEUkhRVU01UWl4SlFVRkphRUlzYjBSQlFWRXNWMEZCVDBNc1JVRkJVME1zWjBkQlF6ZENReXhWUVVGVll5dzJRa0ZEWkdZc1JVRkJUeXhKUVVGSlJ5eGhRVUZoTERaQ1FVRTRRaXc0UkVGSE5VSk1MR2xDUVVOc1FtdENMRVZCUVdOdVFpeDFRMEZEWkVrc1ZVRkJWV01zWVVGQllVVXNZVUZCWVVnc09FUkJSbFpKTERoRFFVRjRRa01zVDBGSlZIQkNMRVZCUVZGdlFpeHhSRUZGVW01Q0luMD1cbiIsImltcG9ydCB7IGdldFVzZXJNZWRpYVN0cmVhbSB9IGZyb20gJ0B1bnRlbXBzL3VzZXItcGVybWlzc2lvbnMtdXRpbHMnXG5cbmNsYXNzIFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciB7XG5cdHN0YXRpYyBkZWZhdWx0T3B0aW9ucyA9IHtcblx0XHRncmFtbWFyczogbnVsbCxcblx0XHRsYW5nOiAnZW4tVVMnLFxuXHRcdGNvbnRpbnVvdXM6IGZhbHNlLFxuXHRcdGludGVyaW1SZXN1bHRzOiBmYWxzZSxcblx0XHRtYXhBbHRlcm5hdGl2ZXM6IDEsXG5cdFx0c2VydmljZVVSSTogbnVsbCxcblx0fVxuXG5cdHN0YXRpYyBldmVudFR5cGVzID0ge1xuXHRcdEFVRElPX0VORDogJ2F1ZGlvZW5kJyxcblx0XHRBVURJT19TVEFSVDogJ2F1ZGlvc3RhcnQnLFxuXHRcdEVORDogJ2VuZCcsXG5cdFx0RVJST1I6ICdlcnJvcicsXG5cdFx0Tk9fTUFUQ0g6ICdub21hdGNoJyxcblx0XHRSRVNVTFQ6ICdyZXN1bHQnLFxuXHRcdFNPVU5EX0VORDogJ3NvdW5kZW5kJyxcblx0XHRTT1VORF9TVEFSVDogJ3NvdW5kc3RhcnQnLFxuXHRcdFNQRUVDSF9FTkQ6ICdzcGVlY2hlbmQnLFxuXHRcdFNQRUVDSF9TVEFSVDogJ3NwZWVjaHN0YXJ0Jyxcblx0XHRTVEFSVDogJ3N0YXJ0Jyxcblx0fVxuXG5cdHN0YXRpYyBnZXQgaXNTdXBwb3J0ZWQoKSB7XG5cdFx0cmV0dXJuICEhU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLl9yZXNvbHZlU3BlZWNoUmVjb2duaXRpb24oKVxuXHR9XG5cblx0c3RhdGljIHNldCBpc1N1cHBvcnRlZChfKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBpc1N1cHBvcnRlZCBkaXJlY3RseS4nKVxuXHR9XG5cblx0X2luc3RhbmNlID0gbnVsbFxuXHRfbGlzdGVuZXJzID0gbnVsbFxuXG5cdGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcblx0XHRjb25zdCBTcGVlY2hSZWNvZ25pdGlvbiA9IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKCkgfHwge31cblx0XHR0aGlzLl9pbnN0YW5jZSA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpXG5cdFx0dGhpcy5fbGlzdGVuZXJzID0ge31cblxuXHRcdE9iamVjdC5lbnRyaWVzKHtcblx0XHRcdC4uLlNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5kZWZhdWx0T3B0aW9ucyxcblx0XHRcdC4uLihvcHRpb25zIHx8IHt9KSxcblx0XHR9KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcblx0XHRcdGlmIChrZXkgPT09ICdncmFtbWFycycgJiYgIXZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IFNwZWVjaEdyYW1tYXJMaXN0ID0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLl9yZXNvbHZlU3BlZWNoR3JhbW1hckxpc3QoKSB8fCB7fVxuXHRcdFx0XHR2YWx1ZSA9IG5ldyBTcGVlY2hHcmFtbWFyTGlzdCgpXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pbnN0YW5jZVtrZXldID0gdmFsdWVcblx0XHR9KVxuXHR9XG5cblx0Z2V0IGluc3RhbmNlKCkge1xuXHRcdHJldHVybiB0aGlzLl9pbnN0YW5jZVxuXHR9XG5cblx0c2V0IGluc3RhbmNlKF8pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3Qgc2V0IGluc3RhbmNlIGRpcmVjdGx5LicpXG5cdH1cblxuXHRhc3luYyBzdGFydCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc3RyZWFtID0gYXdhaXQgZ2V0VXNlck1lZGlhU3RyZWFtKCdtaWNyb3Bob25lJywgeyBhdWRpbzogdHJ1ZSB9KVxuXHRcdFx0XHRpZiAoIXN0cmVhbSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJldHJpZXZlIHRoZSBzdHJlYW0gZnJvbSBtZWRpYSBkZXZpY2UnKVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2luc3RhbmNlLnN0YXJ0KClcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGNvbnN0IGVycm9ySGFuZGxlciA9IHRoaXMuX2xpc3RlbmVycy5lcnJvclxuXHRcdFx0XHRpZiAoISFlcnJvckhhbmRsZXIpIHtcblx0XHRcdFx0XHRlcnJvckhhbmRsZXIoZXJyb3IpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0c3RvcCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dGhpcy5faW5zdGFuY2Uuc3RvcCgpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdGFib3J0KCkge1xuXHRcdGlmICghIXRoaXMuX2luc3RhbmNlKSB7XG5cdFx0XHR0aGlzLl9pbnN0YW5jZS5hYm9ydCgpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuXHRcdGlmICghIXRoaXMuX2luc3RhbmNlICYmIHRoaXMuX2luY2x1ZGVzRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHtcblx0XHRcdGlmICghIXRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcblx0XHRcdFx0bGV0IGFkZGl0aW9uYWxBcmdzID0gW11cblx0XHRcdFx0aWYgKGV2ZW50VHlwZSA9PT0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmV2ZW50VHlwZXMuUkVTVUxUKSB7XG5cdFx0XHRcdFx0aWYgKCEhZXZlbnQucmVzdWx0cyAmJiBldmVudC5yZXN1bHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxBcmdzLnB1c2goZXZlbnQucmVzdWx0c1swXVswXS50cmFuc2NyaXB0KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCEhY2FsbGJhY2sgJiYgY2FsbGJhY2suYXBwbHkodGhpcywgWy4uLmFkZGl0aW9uYWxBcmdzLCBldmVudF0pXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcblxuXHRcdFx0dGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0gPSBoYW5kbGVyXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKSB7XG5cdFx0Y29uc3QgaGFuZGxlciA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdXG5cdFx0dGhpcy5faW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cblx0XHRkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRjbGVhbnVwKCkge1xuXHRcdHRoaXMuc3RvcCgpXG5cblx0XHRPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMpLmZvckVhY2goKGtleSkgPT4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGtleSkpXG5cdFx0dGhpcy5faW5zdGFuY2UgPSBudWxsXG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0X2luY2x1ZGVzRXZlbnRUeXBlKGV2ZW50VHlwZSkge1xuXHRcdHJldHVybiAhIU9iamVjdC52YWx1ZXMoU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmV2ZW50VHlwZXMpLmZpbmQoKHR5cGUpID0+IHR5cGUgPT09IGV2ZW50VHlwZSlcblx0fVxuXG5cdHN0YXRpYyBfcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR3aW5kb3cuU3BlZWNoUmVjb2duaXRpb24gfHxcblx0XHRcdHdpbmRvdy53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiB8fFxuXHRcdFx0d2luZG93Lm1velNwZWVjaFJlY29nbml0aW9uIHx8XG5cdFx0XHR3aW5kb3cubXNTcGVlY2hSZWNvZ25pdGlvblxuXHRcdClcblx0fVxuXG5cdHN0YXRpYyBfcmVzb2x2ZVNwZWVjaEdyYW1tYXJMaXN0KCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR3aW5kb3cuU3BlZWNoR3JhbW1hckxpc3QgfHxcblx0XHRcdHdpbmRvdy53ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCB8fFxuXHRcdFx0d2luZG93Lm1velNwZWVjaEdyYW1tYXJMaXN0IHx8XG5cdFx0XHR3aW5kb3cubXNTcGVlY2hHcmFtbWFyTGlzdFxuXHRcdClcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXJcbiIsImV4cG9ydCBkZWZhdWx0ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4uL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyJ1xuXG5jb25zdCB1c2VWb2NhbCA9IChsYW5nID0gJ2VuLVVTJywgZ3JhbW1hcnMgPSBudWxsLCBfX3JzSW5zdGFuY2UgPSBudWxsKSA9PiB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKVxuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZCkge1xuXHRcdFx0cmVmLmN1cnJlbnQgPSBfX3JzSW5zdGFuY2UgfHwgbmV3IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlcih7IGxhbmcsIGdyYW1tYXJzIH0pXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdFx0fVxuXHRcdH1cblx0fSwgW2xhbmcsIGdyYW1tYXJzLCBfX3JzSW5zdGFuY2VdKVxuXG5cdGNvbnN0IHN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuc3RhcnQoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3Qgc3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnN0b3AoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3QgYWJvcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBzdWJzY3JpYmUgPSB1c2VDYWxsYmFjaygoZXZlbnRUeXBlLCBoYW5kbGVyKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IHVuc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGV2ZW50VHlwZSwgaGFuZGxlcikgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBjbGVhbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0cmV0dXJuIFtyZWYsIHsgc3RhcnQsIHN0b3AsIGFib3J0LCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlLCBjbGVhbiB9XVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VWb2NhbFxuXG4vLyBUT0RPOiBSZXR1cm4gdGhlIGluc3RhbmNlLCBub3QgdGhlIHJlZlxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5jb25zdCBJY29uID0gKHsgY29sb3IsIGFjdGl2ZUNvbG9yLCBpc0FjdGl2ZSB9KSA9PiB7XG5cdHJldHVybiAoXG5cdFx0PHN2Z1xuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcm9vdF9fXCJcblx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdGhlaWdodD1cIjEwMCVcIlxuXHRcdFx0dmlld0JveD1cIjAgMCAyNCAyNFwiXG5cdFx0PlxuXHRcdFx0PGc+XG5cdFx0XHRcdDxwYXRoXG5cdFx0XHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcGF0aF9fXCJcblx0XHRcdFx0XHRmaWxsPXtjb2xvcn1cblx0XHRcdFx0XHRkPVwiTTEyIDE0YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY2YzAgMS42NiAxLjM0IDMgMyAzem01LjMtM2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTQgNi43IDExSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMzLjI4LS40OCA2LTMuMyA2LTYuNzJoLTEuN3pcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHR7aXNBY3RpdmUgJiYgPGNpcmNsZSBkYXRhLXRlc3RpZD1cIl9faWNvbi1hY3RpdmVfX1wiIGZpbGw9e2FjdGl2ZUNvbG9yfSBjeD1cIjE2XCIgY3k9XCI0XCIgcj1cIjRcIiAvPn1cblx0XHRcdDwvZz5cblx0XHQ8L3N2Zz5cblx0KVxufVxuXG5JY29uLnByb3BUeXBlcyA9IHtcblx0Y29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdGFjdGl2ZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRpc0FjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG59XG5cbkljb24uZGVmYXVsdFByb3BzID0ge1xuXHRjb2xvcjogJ2JsYWNrJyxcblx0YWN0aXZlQ29sb3I6ICdyZWQnLFxuXHRpc0FjdGl2ZTogZmFsc2UsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb25cbiIsImltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIgZnJvbSAnLi4vY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXInXG5cbmltcG9ydCBpc0Z1bmMgZnJvbSAnLi4vdXRpbHMvaXNGdW5jJ1xuXG5pbXBvcnQgdXNlVm9jYWwgZnJvbSAnLi4vaG9va3MvdXNlVm9jYWwnXG5pbXBvcnQgdXNlVGltZW91dCBmcm9tICcuLi9ob29rcy91c2VUaW1lb3V0J1xuXG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nXG5cbmNvbnN0IFZvY2FsID0gKHtcblx0Y2hpbGRyZW4sXG5cdGxhbmcsXG5cdGdyYW1tYXJzLFxuXHR0aW1lb3V0LFxuXHRhcmlhTGFiZWwsXG5cdHN0eWxlLFxuXHRjbGFzc05hbWUsXG5cdG91dGxpbmVTdHlsZSxcblx0b25TdGFydCxcblx0b25FbmQsXG5cdG9uU3BlZWNoU3RhcnQsXG5cdG9uU3BlZWNoRW5kLFxuXHRvblJlc3VsdCxcblx0b25FcnJvcixcblx0b25Ob01hdGNoLFxuXHRfX3JzSW5zdGFuY2UsXG59KSA9PiB7XG5cdGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZihudWxsKVxuXHRjb25zdCBbaXNMaXN0ZW5pbmcsIHNldElzTGlzdGVuaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG5cdGNvbnN0IFssIHsgc3RhcnQsIHN0b3AsIHN1YnNjcmliZSwgdW5zdWJzY3JpYmUgfV0gPSB1c2VWb2NhbChsYW5nLCBncmFtbWFycywgX19yc0luc3RhbmNlKVxuXG5cdGNvbnN0IF9vbkVuZCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblx0XHRzdG9wUmVjb2duaXRpb24oKVxuXG5cdFx0dW5zdWJzY3JpYmUoJ3N0YXJ0JywgX29uU3RhcnQpXG5cdFx0dW5zdWJzY3JpYmUoJ2VuZCcsIF9vbkVuZClcblx0XHR1bnN1YnNjcmliZSgnc3BlZWNoc3RhcnQnLCBfb25TcGVlY2hTdGFydClcblx0XHR1bnN1YnNjcmliZSgnc3BlZWNoZW5kJywgX29uU3BlZWNoRW5kKVxuXHRcdHVuc3Vic2NyaWJlKCdyZXN1bHQnLCBfb25SZXN1bHQpXG5cdFx0dW5zdWJzY3JpYmUoJ2Vycm9yJywgX29uRXJyb3IpXG5cdFx0dW5zdWJzY3JpYmUoJ25vbWF0Y2gnLCBfb25Ob01hdGNoKVxuXG5cdFx0ISFvbkVuZCAmJiBvbkVuZChlKVxuXHR9XG5cblx0Y29uc3QgW3N0YXJ0VGltZXIsIHN0b3BUaW1lcl0gPSB1c2VUaW1lb3V0KF9vbkVuZCwgdGltZW91dClcblxuXHRjb25zdCBzdGFydFJlY29nbml0aW9uID0gKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRzZXRJc0xpc3RlbmluZyh0cnVlKVxuXG5cdFx0XHRzdWJzY3JpYmUoJ3N0YXJ0JywgX29uU3RhcnQpXG5cdFx0XHRzdWJzY3JpYmUoJ2VuZCcsIF9vbkVuZClcblx0XHRcdHN1YnNjcmliZSgnc3BlZWNoc3RhcnQnLCBfb25TcGVlY2hTdGFydClcblx0XHRcdHN1YnNjcmliZSgnc3BlZWNoZW5kJywgX29uU3BlZWNoRW5kKVxuXHRcdFx0c3Vic2NyaWJlKCdyZXN1bHQnLCBfb25SZXN1bHQpXG5cdFx0XHRzdWJzY3JpYmUoJ2Vycm9yJywgX29uRXJyb3IpXG5cdFx0XHRzdWJzY3JpYmUoJ25vbWF0Y2gnLCBfb25Ob01hdGNoKVxuXG5cdFx0XHRzdGFydCgpXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdF9vbkVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHN0b3BSZWNvZ25pdGlvbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0c2V0SXNMaXN0ZW5pbmcoZmFsc2UpXG5cblx0XHRcdHN0b3AoKVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHQhIW9uRXJyb3IgJiYgb25FcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjb25zdCBfb25DbGljayA9ICgpID0+IHtcblx0XHRzdGFydFJlY29nbml0aW9uKClcblx0fVxuXG5cdGNvbnN0IF9vbkZvY3VzID0gKCkgPT4ge1xuXHRcdGlmICghY2xhc3NOYW1lICYmIG91dGxpbmVTdHlsZSkge1xuXHRcdFx0YnV0dG9uUmVmLmN1cnJlbnQuc3R5bGUub3V0bGluZSA9IG91dGxpbmVTdHlsZVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IF9vbkJsdXIgPSAoKSA9PiB7XG5cdFx0aWYgKCFjbGFzc05hbWUgJiYgb3V0bGluZVN0eWxlKSB7XG5cdFx0XHRidXR0b25SZWYuY3VycmVudC5zdHlsZS5vdXRsaW5lID0gJ25vbmUnXG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgX29uU3RhcnQgPSAoZSkgPT4ge1xuXHRcdHN0YXJ0VGltZXIoKVxuXG5cdFx0ISFvblN0YXJ0ICYmIG9uU3RhcnQoZSlcblx0fVxuXG5cdGNvbnN0IF9vblNwZWVjaFN0YXJ0ID0gKGUpID0+IHtcblx0XHRzdG9wVGltZXIoKVxuXG5cdFx0ISFvblNwZWVjaFN0YXJ0ICYmIG9uU3BlZWNoU3RhcnQoZSlcblx0fVxuXG5cdGNvbnN0IF9vblNwZWVjaEVuZCA9IChlKSA9PiB7XG5cdFx0c3RhcnRUaW1lcigpXG5cblx0XHQhIW9uU3BlZWNoRW5kICYmIG9uU3BlZWNoRW5kKGUpXG5cdH1cblxuXHRjb25zdCBfb25SZXN1bHQgPSAocmVzdWx0LCBldmVudCkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25SZXN1bHQgJiYgb25SZXN1bHQocmVzdWx0LCBldmVudClcblx0fVxuXG5cdGNvbnN0IF9vbkVycm9yID0gKGVycm9yKSA9PiB7XG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25FcnJvciAmJiBvbkVycm9yKGVycm9yKVxuXHR9XG5cblx0Y29uc3QgX29uTm9NYXRjaCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblx0XHRzdG9wUmVjb2duaXRpb24oKVxuXG5cdFx0ISFvbk5vTWF0Y2ggJiYgb25Ob01hdGNoKGUpXG5cdH1cblxuXHRjb25zdCBfcmVuZGVyRGVmYXVsdCA9ICgpID0+IChcblx0XHQ8YnV0dG9uXG5cdFx0XHRkYXRhLXRlc3RpZD1cIl9fdm9jYWwtcm9vdF9fXCJcblx0XHRcdHJlZj17YnV0dG9uUmVmfVxuXHRcdFx0cm9sZT1cImJ1dHRvblwiXG5cdFx0XHRhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG5cdFx0XHRzdHlsZT17XG5cdFx0XHRcdGNsYXNzTmFtZVxuXHRcdFx0XHRcdD8gbnVsbFxuXHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHR3aWR0aDogMjQsXG5cdFx0XHRcdFx0XHRcdGhlaWdodDogMjQsXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICdub25lJyxcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGN1cnNvcjogIWlzTGlzdGVuaW5nID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnLFxuXHRcdFx0XHRcdFx0XHQuLi5zdHlsZSxcblx0XHRcdFx0XHQgIH1cblx0XHRcdH1cblx0XHRcdGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuXHRcdFx0b25Gb2N1cz17X29uRm9jdXN9XG5cdFx0XHRvbkJsdXI9e19vbkJsdXJ9XG5cdFx0XHRvbkNsaWNrPXtfb25DbGlja31cblx0XHQ+XG5cdFx0XHQ8SWNvbiBpc0FjdGl2ZT17aXNMaXN0ZW5pbmd9IGljb25Db2xvcj1cIiNhYWFcIiAvPlxuXHRcdDwvYnV0dG9uPlxuXHQpXG5cblx0Y29uc3QgX3JlbmRlckNoaWxkcmVuID0gKGNoaWxkcmVuKSA9PiB7XG5cdFx0aWYgKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZCkge1xuXHRcdFx0aWYgKGlzRnVuYyhjaGlsZHJlbikpIHtcblx0XHRcdFx0cmV0dXJuIGNoaWxkcmVuKHN0YXJ0UmVjb2duaXRpb24sIHN0b3BSZWNvZ25pdGlvbiwgaXNMaXN0ZW5pbmcpXG5cdFx0XHR9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuXHRcdFx0XHRyZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG5cdFx0XHRcdFx0Li4uKCFpc0xpc3RlbmluZyAmJiB7IG9uQ2xpY2s6IF9vbkNsaWNrIH0pLFxuXHRcdFx0XHR9KVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIF9yZW5kZXJEZWZhdWx0KClcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXG5cdHJldHVybiBfcmVuZGVyQ2hpbGRyZW4oY2hpbGRyZW4pXG59XG5cblZvY2FsLnByb3BUeXBlcyA9IHtcblx0LyoqIERlZmluZXMgdGhlIGxhbmd1YWdlIHVuZGVyc3Rvb2QgYnkgdGhlIHJlY29nbml0aW9uIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3BlZWNoUmVjb2duaXRpb24vbGFuZykgKi9cblx0bGFuZzogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIGdyYW1tYXJzIHVuZGVyc3Rvb2QgYnkgdGhlIHJlY29nbml0aW9uIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3BlZWNoUmVjb2duaXRpb24vZ3JhbW1hcnMpICovXG5cdGdyYW1tYXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHQvKiogRGVmaW5lcyB0aGUgdGltZSBpbiBtcyB0byB3YWl0IGJlZm9yZSBkaXNjYXJkaW5nIHRoZSByZWNvZ25pdGlvbiAqL1xuXHR0aW1lb3V0OiBQcm9wVHlwZXMubnVtYmVyLFxuXHQvKiogRGVmaW5lcyB0aGUgYTExeSBsYWJlbCBmb3IgdGhlIGRlZmF1bHQgYnV0dG9uICovXG5cdGFyaWFMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIHN0eWxlcyBvZiB0aGUgZGVmYXVsdCBlbGVtZW50IGlmIGNsYXNzTmFtZSBpcyBub3Qgc3BlY2lmaWVkICovXG5cdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHQvKiogRGVmaW5lcyB0aGUgY2xhc3Mgb2YgdGhlIGRlZmF1bHQgZWxlbWVudCAqL1xuXHRjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBkZWZhdWx0IHN0eWxlIG9mIHRoZSBmb2N1cyBvdXRsaW5lLiBpZiBudWxsIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB1c2VkICovXG5cdG91dGxpbmVTdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHJlY29nbml0aW9uIHN0YXJ0cyAqL1xuXHRvblN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHJlY29nbml0aW9uIGVuZHMgKi9cblx0b25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHN0YXJ0cyAqL1xuXHRvblNwZWVjaFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCBlbmRzICovXG5cdG9uU3BlZWNoRW5kOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gYSByZXN1bHQgaXMgcmV0dXJuZWQgZnJvbSB0ZSByZWNvZ25pdGlvbiAqL1xuXHRvblJlc3VsdDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIGFuIGVycm9yIG9jY3VycyAqL1xuXHRvbkVycm9yOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gbm8gcmVzdWx0IGNhbiBiZSByZWNvZ25pemVkICovXG5cdG9uTm9NYXRjaDogUHJvcFR5cGVzLmZ1bmMsXG59XG5cblZvY2FsLmRlZmF1bHRQcm9wcyA9IHtcblx0bGFuZzogJ2VuLVVTJyxcblx0Z3JhbW1hcnM6IG51bGwsXG5cdHRpbWVvdXQ6IDMwMDAsXG5cdGFyaWFMYWJlbDogJ3N0YXJ0IHJlY29nbml0aW9uJyxcblx0c3R5bGU6IG51bGwsXG5cdGNsYXNzTmFtZTogbnVsbCxcblx0b3V0bGluZVN0eWxlOiAnMnB4IHNvbGlkJyxcblx0b25TdGFydDogbnVsbCxcblx0b25FbmQ6IG51bGwsXG5cdG9uU3BlZWNoU3RhcnQ6IG51bGwsXG5cdG9uU3BlZWNoRW5kOiBudWxsLFxuXHRvblJlc3VsdDogbnVsbCxcblx0b25FcnJvcjogbnVsbCxcblx0b25Ob01hdGNoOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBWb2NhbFxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IHVzZVRpbWVvdXQgPSAoaGFuZGxlciwgdGltZW91dCA9IDApID0+IHtcblx0Y29uc3QgcmVmID0gdXNlUmVmKC0xKVxuXG5cdGNvbnN0IHN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0Y2xlYXJUaW1lb3V0KHJlZi5jdXJyZW50KVxuXHRcdHJlZi5jdXJyZW50ID0gLTFcblx0fSwgW10pXG5cblx0Y29uc3Qgc3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0c3RvcCgpXG5cdFx0cmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpXG5cdH0sIFtoYW5kbGVyLCB0aW1lb3V0LCBzdG9wXSlcblxuXHR1c2VFZmZlY3QoKCkgPT4gc3RvcCwgW3N0b3BdKVxuXG5cdHJldHVybiBbc3RhcnQsIHN0b3BdXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRpbWVvdXRcblxuLy8gVE9ETzogUmV0dXJuIGEgcHJvbWlzZVxuIiwiaW1wb3J0IFZvY2FsIGZyb20gJy4vY29tcG9uZW50cy9Wb2NhbCdcbmltcG9ydCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIgZnJvbSAnLi9jb3JlL1NwZWVjaFJlY29nbml0aW9uV3JhcHBlcidcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VWb2NhbCB9IGZyb20gJy4vaG9va3MvdXNlVm9jYWwnXG5leHBvcnQgY29uc3QgaXNTdXBwb3J0ZWQgPSBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWRcblxuZXhwb3J0IGRlZmF1bHQgVm9jYWxcbiJdLCJuYW1lcyI6WyJlIiwiciIsInQiLCJuIiwiYSIsImkiLCJvIiwidSIsImMiLCJ2YWx1ZSIsImRvbmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ0aGlzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJBcnJheSIsImlzQXJyYXkiLCJTeW1ib2wiLCJpdGVyYXRvciIsIk9iamVjdCIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwicmV0dXJuIiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIlR5cGVFcnJvciIsInJlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJ3cmFwIiwicHJldiIsImFicnVwdCIsIm5hdmlnYXRvciIsInBlcm1pc3Npb25zIiwiRE9NRXhjZXB0aW9uIiwicXVlcnkiLCJzZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRhcmdldCIsInN0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInQwIiwiY2F0Y2giLCJzdG9wIiwicyIsIm1lZGlhRGV2aWNlcyIsInQxIiwiZ2V0VXNlck1lZGlhIiwidDIiLCJ0MyIsImFsbCIsInQ0IiwiU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIiwib3B0aW9ucyIsIlNwZWVjaFJlY29nbml0aW9uIiwiX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbiIsIl9pbnN0YW5jZSIsIl9saXN0ZW5lcnMiLCJlbnRyaWVzIiwiZGVmYXVsdE9wdGlvbnMiLCJmb3JFYWNoIiwia2V5IiwiX3Jlc29sdmVTcGVlY2hHcmFtbWFyTGlzdCIsIl90aGlzIiwiXyIsIkVycm9yIiwiZ2V0VXNlck1lZGlhU3RyZWFtIiwiYXVkaW8iLCJzdGFydCIsImVycm9ySGFuZGxlciIsImVycm9yIiwiYWJvcnQiLCJldmVudFR5cGUiLCJjYWxsYmFjayIsIl9pbmNsdWRlc0V2ZW50VHlwZSIsImhhbmRsZXIiLCJldmVudCIsImFkZGl0aW9uYWxBcmdzIiwiZXZlbnRUeXBlcyIsIlJFU1VMVCIsInJlc3VsdHMiLCJ0cmFuc2NyaXB0IiwiX3RoaXMyIiwia2V5cyIsIl90aGlzMyIsInZhbHVlcyIsImZpbmQiLCJ0eXBlIiwid2luZG93Iiwid2Via2l0U3BlZWNoUmVjb2duaXRpb24iLCJtb3pTcGVlY2hSZWNvZ25pdGlvbiIsIm1zU3BlZWNoUmVjb2duaXRpb24iLCJTcGVlY2hHcmFtbWFyTGlzdCIsIndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0IiwibW96U3BlZWNoR3JhbW1hckxpc3QiLCJtc1NwZWVjaEdyYW1tYXJMaXN0IiwiZ3JhbW1hcnMiLCJsYW5nIiwiY29udGludW91cyIsImludGVyaW1SZXN1bHRzIiwibWF4QWx0ZXJuYXRpdmVzIiwic2VydmljZVVSSSIsIkFVRElPX0VORCIsIkFVRElPX1NUQVJUIiwiRU5EIiwiRVJST1IiLCJOT19NQVRDSCIsIlNPVU5EX0VORCIsIlNPVU5EX1NUQVJUIiwiU1BFRUNIX0VORCIsIlNQRUVDSF9TVEFSVCIsIlNUQVJUIiwidXNlVm9jYWwiLCJfX3JzSW5zdGFuY2UiLCJyZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpc1N1cHBvcnRlZCIsImN1cnJlbnQiLCJjbGVhbnVwIiwidXNlQ2FsbGJhY2siLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsImNsZWFuIiwiSWNvbiIsImNvbG9yIiwiYWN0aXZlQ29sb3IiLCJpc0FjdGl2ZSIsIlJlYWN0IiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJmaWxsIiwiZCIsImN4IiwiY3kiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiZGVmYXVsdFByb3BzIiwiVm9jYWwiLCJjaGlsZHJlbiIsInRpbWVvdXQiLCJhcmlhTGFiZWwiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm91dGxpbmVTdHlsZSIsIm9uU3RhcnQiLCJvbkVuZCIsIm9uU3BlZWNoU3RhcnQiLCJvblNwZWVjaEVuZCIsIm9uUmVzdWx0Iiwib25FcnJvciIsIm9uTm9NYXRjaCIsImJ1dHRvblJlZiIsInVzZVN0YXRlIiwiaXNMaXN0ZW5pbmciLCJzZXRJc0xpc3RlbmluZyIsIl9vbkVuZCIsInN0b3BUaW1lciIsInN0b3BSZWNvZ25pdGlvbiIsIl9vblN0YXJ0IiwiX29uU3BlZWNoU3RhcnQiLCJfb25TcGVlY2hFbmQiLCJfb25SZXN1bHQiLCJfb25FcnJvciIsIl9vbk5vTWF0Y2giLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidXNlVGltZW91dCIsInN0YXJ0VGltZXIiLCJzdGFydFJlY29nbml0aW9uIiwiX29uQ2xpY2siLCJfb25Gb2N1cyIsIm91dGxpbmUiLCJfb25CbHVyIiwicmVzdWx0IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwicm9sZSIsImJhY2tncm91bmQiLCJib3JkZXIiLCJwYWRkaW5nIiwiY3Vyc29yIiwib25Gb2N1cyIsIm9uQmx1ciIsImljb25Db2xvciIsIl9yZW5kZXJDaGlsZHJlbiIsIm9iamVjdCIsIm51bWJlciIsImZ1bmMiXSwibWFwcGluZ3MiOiJ5cEVBQUEsU0FBU0EsRUFBRUEsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsR0FB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 | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("prop-types");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),o=n(t);function i(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function u(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(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 p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){d(i,r,o,a,u,"next",e)}function u(e){d(i,r,o,a,u,"throw",e)}a(void 0)}))}}function h(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=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(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 m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var b=function(){var e=v(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(n,r){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.permissions){e.next=4;break}r(new DOMException("Permissions not supported","NOT_FOUND_ERR")),e.next=16;break;case 4:return e.prev=4,e.next=7,navigator.permissions.query({name:t});case 7:o=e.sent,i=function e(t){o.removeEventListener("change",e),y(t.target.state,n,r)},o.addEventListener("change",i),y(o.state,n,r),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(4),r(e.t0);case 16:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),y=function(e,t,n){switch(e){case"denied":n(new DOMException("Permission denied","NOT_ALLOWED_ERR"));break;default:t(e)}},g=function(){var e=v(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(r,o){var i,a,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.mediaDevices){e.next=4;break}o(new DOMException("MediaDevices not supported","NOT_FOUND_ERR")),e.next=24;break;case 4:return e.prev=4,e.t0=Promise,e.next=8,b(t);case 8:return e.t1=e.sent,e.next=11,navigator.mediaDevices.getUserMedia(n);case 11:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=15,e.t0.all.call(e.t0,e.t3);case 15:i=e.sent,a=h(i,2),u=a[1],r(u),e.next=24;break;case 21:e.prev=21,e.t4=e.catch(4),o(e.t4);case 24:case"end":return e.stop()}}),e,null,[[4,21]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),w=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"_instance",null),c(this,"_listeners",null);var r=e._resolveSpeechRecognition()||{};this._instance=new r,this._listeners={},Object.entries(l(l({},e.defaultOptions),t||{})).forEach((function(t){var r=f(t,2),o=r[0],i=r[1];"grammars"!==o||i||(i=new(e._resolveSpeechGrammarList()||{}));n._instance[o]=i}))}var t,n;return u(e,null,[{key:"isSupported",get:function(){return!!e._resolveSpeechRecognition()},set:function(e){throw new Error("You cannot set isSupported directly.")}}]),u(e,[{key:"start",value:(t=regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._instance){e.next=14;break}return e.prev=1,e.next=4,g("microphone",{audio:!0});case 4:if(e.sent){e.next=7;break}throw new Error("Unable to retrieve the stream from media device");case 7:this._instance.start(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),(t=this._listeners.error)&&t(e.t0);case 14:return e.abrupt("return",this);case 15:case"end":return e.stop()}}),e,this,[[1,10]])})),n=function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function u(e){i(a,r,o,u,c,"next",e)}function c(e){i(a,r,o,u,c,"throw",e)}u(void 0)}))},function(){return n.apply(this,arguments)})},{key:"stop",value:function(){return this._instance&&this._instance.stop(),this}},{key:"abort",value:function(){return this._instance&&this._instance.abort(),this}},{key:"addEventListener",value:function(t,n){var r=this;if(this._instance&&this._includesEventType(t)){this._listeners[t]&&this.removeEventListener(t);var o=function(o){var i=[];t===e.eventTypes.RESULT&&o.results&&o.results.length>0&&i.push(o.results[0][0].transcript),n&&n.apply(r,[].concat(i,[o]))};this._instance.addEventListener(t,o),this._listeners[t]=o}return this}},{key:"removeEventListener",value:function(e){var t=this._listeners[e];return this._instance.removeEventListener(e,t),delete this._listeners[e],this}},{key:"cleanup",value:function(){var e=this;return this.stop(),Object.keys(this._listeners).forEach((function(t){return e.removeEventListener(t)})),this._instance=null,this}},{key:"_includesEventType",value:function(t){return!!Object.values(e.eventTypes).find((function(e){return e===t}))}},{key:"instance",get:function(){return this._instance},set:function(e){throw new Error("You cannot set instance directly.")}}],[{key:"_resolveSpeechRecognition",value:function(){return window.SpeechRecognition||window.webkitSpeechRecognition||window.mozSpeechRecognition||window.msSpeechRecognition}},{key:"_resolveSpeechGrammarList",value:function(){return window.SpeechGrammarList||window.webkitSpeechGrammarList||window.mozSpeechGrammarList||window.msSpeechGrammarList}}]),e}();c(w,"defaultOptions",{grammars:null,lang:"en-US",continuous:!1,interimResults:!1,maxAlternatives:1,serviceURI:null}),c(w,"eventTypes",{AUDIO_END:"audioend",AUDIO_START:"audiostart",END:"end",ERROR:"error",NO_MATCH:"nomatch",RESULT:"result",SOUND_END:"soundend",SOUND_START:"soundstart",SPEECH_END:"speechend",SPEECH_START:"speechstart",START:"start"});var S=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en-US",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=e.useRef(null);e.useEffect((function(){if(w.isSupported)return o.current=r||new w({lang:t,grammars:n}),function(){o.current.abort(),o.current.cleanup()}}),[t,n,r]);var i=e.useCallback((function(){o.current&&o.current.start()}),[]),a=e.useCallback((function(){o.current&&o.current.stop()}),[]),u=e.useCallback((function(){o.current&&o.current.abort()}),[]),c=e.useCallback((function(e,t){o.current&&o.current.addEventListener(e,t)}),[]),s=e.useCallback((function(e,t){o.current&&o.current.removeEventListener(e,t)}),[]),l=e.useCallback((function(){o.current&&o.current.cleanup()}),[]);return[o,{start:i,stop:a,abort:u,subscribe:c,unsubscribe:s,clean:l}]},_=function(e){var t=e.color,n=e.activeColor,o=e.isActive;return r.default.createElement("svg",{"data-testid":"__icon-root__",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 24 24"},r.default.createElement("g",null,r.default.createElement("path",{"data-testid":"__icon-path__",fill:t,d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"}),o&&r.default.createElement("circle",{"data-testid":"__icon-active__",fill:n,cx:"16",cy:"4",r:"4"})))};_.propTypes={color:o.default.string,activeColor:o.default.string,isActive:o.default.bool},_.defaultProps={color:"black",activeColor:"red",isActive:!1};var E=function(t){var n=t.children,o=t.lang,i=t.grammars,a=t.timeout,u=t.ariaLabel,c=t.style,s=t.className,p=t.outlineStyle,d=t.onStart,v=t.onEnd,h=t.onSpeechStart,m=t.onSpeechEnd,b=t.onResult,y=t.onError,g=t.onNoMatch,E=t.__rsInstance,O=e.useRef(null),k=f(e.useState(!1),2),R=k[0],x=k[1],j=f(S(o,i,E),2)[1],T=j.start,A=j.stop,L=j.subscribe,P=j.unsubscribe,D=function e(t){U(),I(),P("start",q),P("end",e),P("speechstart",F),P("speechend",V),P("result",B),P("error",Y),P("nomatch",$),v&&v(t)},C=f(function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=e.useRef(-1),o=e.useCallback((function(){clearTimeout(r.current),r.current=-1}),[]),i=e.useCallback((function(){o(),r.current=setTimeout(t,n)}),[t,n,o]);return e.useEffect((function(){return o}),[o]),[i,o]}(D,a),2),N=C[0],U=C[1],M=function(){try{x(!0),L("start",q),L("end",D),L("speechstart",F),L("speechend",V),L("result",B),L("error",Y),L("nomatch",$),T()}catch(e){Y(e)}},I=function(){try{x(!1),A()}catch(e){y&&y(e)}},G=function(){M()},z=function(){!s&&p&&(O.current.style.outline=p)},H=function(){!s&&p&&(O.current.style.outline="none")},q=function(e){N(),d&&d(e)},F=function(e){U(),h&&h(e)},V=function(e){N(),m&&m(e)},B=function(e,t){U(),I(),b&&b(e,t)},Y=function(e){I(),y&&y(e)},$=function(e){U(),I(),g&&g(e)};return function(t){return w.isSupported?"function"==typeof t?t(M,I,R):e.isValidElement(t)?e.cloneElement(t,l({},!R&&{onClick:G})):r.default.createElement("button",{"data-testid":"__vocal-root__",ref:O,role:"button","aria-label":u,style:s?null:l({width:24,height:24,background:"none",border:"none",padding:0,cursor:R?"default":"pointer"},c),className:s,onFocus:z,onBlur:H,onClick:G},r.default.createElement(_,{isActive:R,iconColor:"#aaa"})):null}(n)};E.propTypes={lang:o.default.string,grammars:o.default.object,timeout:o.default.number,ariaLabel:o.default.string,style:o.default.object,className:o.default.string,outlineStyle:o.default.string,onStart:o.default.func,onEnd:o.default.func,onSpeechStart:o.default.func,onSpeechEnd:o.default.func,onResult:o.default.func,onError:o.default.func,onNoMatch:o.default.func},E.defaultProps={lang:"en-US",grammars:null,timeout:3e3,ariaLabel:"start recognition",style:null,className:null,outlineStyle:"2px solid",onStart:null,onEnd:null,onSpeechStart:null,onSpeechEnd:null,onResult:null,onError:null,onNoMatch:null};var O=w.isSupported;exports.default=E,exports.isSupported=O,exports.useVocal=S; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AdW50ZW1wcy91c2VyLXBlcm1pc3Npb25zLXV0aWxzL2Rpc3QvaW5kZXguZXMuanMiLCIuLi9zcmMvY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuanMiLCIuLi9zcmMvdXRpbHMvaXNGdW5jLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVZvY2FsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvSWNvbi5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1ZvY2FsLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVRpbWVvdXQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZShlLHIsdCxuLGEsaSxvKXt0cnl7dmFyIHU9ZVtpXShvKSxjPXUudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdChlKX11LmRvbmU/cihjKTpQcm9taXNlLnJlc29sdmUoYykudGhlbihuLGEpfWZ1bmN0aW9uIHIocil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsaSl7dmFyIG89ci5hcHBseSh0LG4pO2Z1bmN0aW9uIHUocil7ZShvLGEsaSx1LGMsXCJuZXh0XCIscil9ZnVuY3Rpb24gYyhyKXtlKG8sYSxpLHUsYyxcInRocm93XCIscil9dSh2b2lkIDApfSkpfX1mdW5jdGlvbiB0KGUscil7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHIpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBTeW1ib2x8fCEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkpcmV0dXJuO3ZhciB0PVtdLG49ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBvLHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShvPXUubmV4dCgpKS5kb25lKSYmKHQucHVzaChvLnZhbHVlKSwhcnx8dC5sZW5ndGghPT1yKTtuPSEwKTt9Y2F0Y2goZSl7YT0hMCxpPWV9ZmluYWxseXt0cnl7bnx8bnVsbD09dS5yZXR1cm58fHUucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IGl9fXJldHVybiB0fShlLHIpfHxmdW5jdGlvbihlLHIpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbihlLHIpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09dCYmZS5jb25zdHJ1Y3RvciYmKHQ9ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09dHx8XCJTZXRcIj09PXQpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PXR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpKXJldHVybiBuKGUscil9KGUscil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBuKGUscil7KG51bGw9PXJ8fHI+ZS5sZW5ndGgpJiYocj1lLmxlbmd0aCk7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkocik7dDxyO3QrKyluW3RdPWVbdF07cmV0dXJuIG59dmFyIGE9ZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG5hdmlnYXRvci5wZXJtaXNzaW9ucyl7ZS5uZXh0PTQ7YnJlYWt9bihuZXcgRE9NRXhjZXB0aW9uKFwiUGVybWlzc2lvbnMgbm90IHN1cHBvcnRlZFwiLFwiTk9UX0ZPVU5EX0VSUlwiKSksZS5uZXh0PTE2O2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5wcmV2PTQsZS5uZXh0PTcsbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOnR9KTtjYXNlIDc6YT1lLnNlbnQsbz1mdW5jdGlvbiBlKHQpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLGUpLGkodC50YXJnZXQuc3RhdGUscixuKX0sYS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsbyksaShhLnN0YXRlLHIsbiksZS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6ZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCg0KSxuKGUudDApO2Nhc2UgMTY6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzQsMTNdXSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxpPWZ1bmN0aW9uKGUscix0KXtzd2l0Y2goZSl7Y2FzZVwiZGVuaWVkXCI6dChuZXcgRE9NRXhjZXB0aW9uKFwiUGVybWlzc2lvbiBkZW5pZWRcIixcIk5PVF9BTExPV0VEX0VSUlwiKSk7YnJlYWs7ZGVmYXVsdDpyKGUpfX0sbz1mdW5jdGlvbigpe3ZhciBlPXIocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUobixpKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG8pe3ZhciB1LGMscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG5hdmlnYXRvci5tZWRpYURldmljZXMpe2UubmV4dD00O2JyZWFrfW8obmV3IERPTUV4Y2VwdGlvbihcIk1lZGlhRGV2aWNlcyBub3Qgc3VwcG9ydGVkXCIsXCJOT1RfRk9VTkRfRVJSXCIpKSxlLm5leHQ9MjQ7YnJlYWs7Y2FzZSA0OnJldHVybiBlLnByZXY9NCxlLnQwPVByb21pc2UsZS5uZXh0PTgsYShuKTtjYXNlIDg6cmV0dXJuIGUudDE9ZS5zZW50LGUubmV4dD0xMSxuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShpKTtjYXNlIDExOnJldHVybiBlLnQyPWUuc2VudCxlLnQzPVtlLnQxLGUudDJdLGUubmV4dD0xNSxlLnQwLmFsbC5jYWxsKGUudDAsZS50Myk7Y2FzZSAxNTp1PWUuc2VudCxjPXQodSwyKSxzPWNbMV0scihzKSxlLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTplLnByZXY9MjEsZS50ND1lLmNhdGNoKDQpLG8oZS50NCk7Y2FzZSAyNDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNCwyMV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHIsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpO2Nhc2UgMTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZXhwb3J0e2EgYXMgZ2V0UGVybWlzc2lvbixvIGFzIGdldFVzZXJNZWRpYVN0cmVhbX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1WlhNdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUwzTnlZeTluWlhSUVpYSnRhWE56YVc5dUxtcHpJaXdpTGk0dmMzSmpMMmRsZEZWelpYSk5aV1JwWVZOMGNtVmhiUzVxY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlGSmxkSFZ5Ym5NZ1lTQndjbTl0YVhObElISmxjMjlzZG1Wa0lIZG9aVzRnZEdobElIQmxjbTFwYzNOcGIyNGdhWE1nWjNKaGJuUmxaQ0JpZVNCMGFHVWdkWE5sY2x4dUlDb2dRSEJoY21GdElIQmxjbTFwYzNOcGIyNU9ZVzFsSUNBZ0lDQWdJQ0FnSUNBZ1RtRnRaU0J2WmlCMGFHVWdjR1Z5YldsemMybHZiaTRnUUhObFpTQm9kSFJ3Y3pvdkwzY3pZeTVuYVhSb2RXSXVhVzh2Y0dWeWJXbHpjMmx2Ym5NdkkyVnVkVzFrWldZdGNHVnliV2x6YzJsdmJtNWhiV1ZjYmlBcUlFQnlaWFIxY201eklIdFFjbTl0YVhObGZWeHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JoYzNsdVl5QW9jR1Z5YldsemMybHZiazVoYldVcElEMCtJSHRjYmx4MGNtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtHRnplVzVqSUNoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNibHgwWEhScFppQW9JVzVoZG1sbllYUnZjaTV3WlhKdGFYTnphVzl1Y3lrZ2UxeHVYSFJjZEZ4MGNtVnFaV04wS0c1bGR5QkVUMDFGZUdObGNIUnBiMjRvSjFCbGNtMXBjM05wYjI1eklHNXZkQ0J6ZFhCd2IzSjBaV1FuTENBblRrOVVYMFpQVlU1RVgwVlNVaWNwS1Z4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUjBjbmtnZTF4dVhIUmNkRngwWEhSamIyNXpkQ0J3WlhKdGFYTnphVzl1VTNSaGRIVnpJRDBnWVhkaGFYUWdibUYyYVdkaGRHOXlMbkJsY20xcGMzTnBiMjV6TG5GMVpYSjVLSHNnYm1GdFpUb2djR1Z5YldsemMybHZiazVoYldVZ2ZTbGNibHgwWEhSY2RGeDBZMjl1YzNRZ2IyNURhR0Z1WjJVZ1BTQW9aWFpsYm5RcElEMCtJSHRjYmx4MFhIUmNkRngwWEhSd1pYSnRhWE56YVc5dVUzUmhkSFZ6TG5KbGJXOTJaVVYyWlc1MFRHbHpkR1Z1WlhJb0oyTm9ZVzVuWlNjc0lHOXVRMmhoYm1kbEtWeHVYSFJjZEZ4MFhIUmNkSEpsYzI5c2RtVlBjbEpsYW1WamRFSmhjMlZrVDI1VGRHRjBaU2hsZG1WdWRDNTBZWEpuWlhRdWMzUmhkR1VzSUhKbGMyOXNkbVVzSUhKbGFtVmpkQ2xjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSd1pYSnRhWE56YVc5dVUzUmhkSFZ6TG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjJOb1lXNW5aU2NzSUc5dVEyaGhibWRsS1Z4dVhIUmNkRngwWEhSeVpYTnZiSFpsVDNKU1pXcGxZM1JDWVhObFpFOXVVM1JoZEdVb2NHVnliV2x6YzJsdmJsTjBZWFIxY3k1emRHRjBaU3dnY21WemIyeDJaU3dnY21WcVpXTjBLVnh1WEhSY2RGeDBmU0JqWVhSamFDQW9aWEp5YjNJcElIdGNibHgwWEhSY2RGeDBjbVZxWldOMEtHVnljbTl5S1Z4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZTbGNibjFjYmx4dVkyOXVjM1FnY21WemIyeDJaVTl5VW1WcVpXTjBRbUZ6WldSUGJsTjBZWFJsSUQwZ0tITjBZWFJsTENCeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNibHgwYzNkcGRHTm9JQ2h6ZEdGMFpTa2dlMXh1WEhSY2RHTmhjMlVnSjJSbGJtbGxaQ2M2WEc1Y2RGeDBYSFJ5WldwbFkzUW9ibVYzSUVSUFRVVjRZMlZ3ZEdsdmJpZ25VR1Z5YldsemMybHZiaUJrWlc1cFpXUW5MQ0FuVGs5VVgwRk1URTlYUlVSZlJWSlNKeWtwWEc1Y2RGeDBYSFJpY21WaGExeHVYSFJjZEdSbFptRjFiSFE2WEc1Y2RGeDBYSFJ5WlhOdmJIWmxLSE4wWVhSbEtWeHVYSFI5WEc1OVhHNGlMQ0pwYlhCdmNuUWdaMlYwVUdWeWJXbHpjMmx2YmlCbWNtOXRJQ2N1TDJkbGRGQmxjbTFwYzNOcGIyNG5YRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJoSUhCeWIyMXBjMlVnY21WemIyeDJaV1FnZDJobGJpQjBhR1VnY0dWeWJXbHpjMmx2YmlCcGN5Qm5jbUZ1ZEdWa0lHSjVJSFJvWlNCMWMyVnlJR0Z1WkNCMGFHVWdjM1J5WldGdElHbHpJSEpsZEhKcFpYWmxaRnh1SUNvZ1FIQmhjbUZ0SUhCbGNtMXBjM05wYjI1T1lXMWxJQ0FnSUNBZ0lDQWdJQ0FnVG1GdFpTQnZaaUIwYUdVZ2NHVnliV2x6YzJsdmJpNGdRSE5sWlNCb2RIUndjem92TDNjell5NW5hWFJvZFdJdWFXOHZjR1Z5YldsemMybHZibk12STJWdWRXMWtaV1l0Y0dWeWJXbHpjMmx2Ym01aGJXVmNiaUFxSUVCd1lYSmhiU0J0WldScFlWTjBjbVZoYlVOdmJuTjBjbUZwYm5SeklDQWdJRU52Ym5OMGNtRnBiblJ6SUc5aWFtVmpkQzRnUUhObFpTQm9kSFJ3Y3pvdkwyUmxkbVZzYjNCbGNpNXRiM3BwYkd4aExtOXlaeTlsYmkxVlV5OWtiMk56TDFkbFlpOUJVRWt2VFdWa2FXRlRkSEpsWVcxRGIyNXpkSEpoYVc1MGMxeHVJQ29nUUhKbGRIVnlibk1nZTFCeWIyMXBjMlY5WEc0Z0tpOWNibVY0Y0c5eWRDQmtaV1poZFd4MElHRnplVzVqSUNod1pYSnRhWE56YVc5dVRtRnRaU3dnYldWa2FXRlRkSEpsWVcxRGIyNXpkSEpoYVc1MGN5a2dQVDRnZTF4dVhIUnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ZWE41Ym1NZ0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1WEhSY2RHbG1JQ2doYm1GMmFXZGhkRzl5TG0xbFpHbGhSR1YyYVdObGN5a2dlMXh1WEhSY2RGeDBjbVZxWldOMEtHNWxkeUJFVDAxRmVHTmxjSFJwYjI0b0owMWxaR2xoUkdWMmFXTmxjeUJ1YjNRZ2MzVndjRzl5ZEdWa0p5d2dKMDVQVkY5R1QxVk9SRjlGVWxJbktTbGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwZEhKNUlIdGNibHgwWEhSY2RGeDBZMjl1YzNRZ1d5d2djM1J5WldGdFhTQTlJR0YzWVdsMElGQnliMjFwYzJVdVlXeHNLRnRjYmx4MFhIUmNkRngwWEhSaGQyRnBkQ0JuWlhSUVpYSnRhWE56YVc5dUtIQmxjbTFwYzNOcGIyNU9ZVzFsS1N4Y2JseDBYSFJjZEZ4MFhIUmhkMkZwZENCdVlYWnBaMkYwYjNJdWJXVmthV0ZFWlhacFkyVnpMbWRsZEZWelpYSk5aV1JwWVNodFpXUnBZVk4wY21WaGJVTnZibk4wY21GcGJuUnpLU3hjYmx4MFhIUmNkRngwWFNsY2JseDBYSFJjZEZ4MGNtVnpiMngyWlNoemRISmxZVzBwWEc1Y2RGeDBYSFI5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1WEhSY2RGeDBYSFJ5WldwbFkzUW9aWEp5YjNJcFhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlLVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJbkJsY20xcGMzTnBiMjVPWVcxbElpd2lVSEp2YldselpTSXNJbkpsYzI5c2RtVWlMQ0p5WldwbFkzUWlMQ0p1WVhacFoyRjBiM0lpTENKd1pYSnRhWE56YVc5dWN5SXNJa1JQVFVWNFkyVndkR2x2YmlJc0luRjFaWEo1SWl3aWJtRnRaU0lzSW5CbGNtMXBjM05wYjI1VGRHRjBkWE1pTENKdmJrTm9ZVzVuWlNJc0ltVjJaVzUwSWl3aWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpSXNJbkpsYzI5c2RtVlBjbEpsYW1WamRFSmhjMlZrVDI1VGRHRjBaU0lzSW5SaGNtZGxkQ0lzSW5OMFlYUmxJaXdpWVdSa1JYWmxiblJNYVhOMFpXNWxjaUlzSW0xbFpHbGhVM1J5WldGdFEyOXVjM1J5WVdsdWRITWlMQ0p0WldScFlVUmxkbWxqWlhNaUxDSm5aWFJRWlhKdGFYTnphVzl1SWl3aVoyVjBWWE5sY2sxbFpHbGhJaXdpWVd4c0lpd2ljM1J5WldGdElsMHNJbTFoY0hCcGJtZHpJam9pYlhkRFFVdEJMR3RFUVVGbExGZEJRVTlCTERSSFFVTmtMRWxCUVVsRExHOUVRVUZSTEZkQlFVOURMRVZCUVZORExEaEdRVU0zUWtNc1ZVRkJWVU1zTkVKQlEyUkdMRVZCUVU4c1NVRkJTVWNzWVVGQllTdzBRa0ZCTmtJc2EwVkJSM0pDUml4VlFVRlZReXhaUVVGWlJTeE5RVUZOTEVOQlFVVkRMRXRCUVUxU0xGZEJRVGRFVXl4VFFVTkJReXhGUVVGWExGTkJRVmhCTEVWQlFWbERMRWRCUTJwQ1JpeEZRVUZwUWtjc2IwSkJRVzlDTEZOQlFWVkdMRWRCUXk5RFJ5eEZRVUUwUWtZc1JVRkJUVWNzVDBGQlQwTXNUVUZCVDJJc1JVRkJVME1zU1VGRk1VUk5MRVZCUVdsQ1R5eHBRa0ZCYVVJc1UwRkJWVTRzUjBGRE5VTkhMRVZCUVRSQ1NpeEZRVUZwUWswc1RVRkJUMklzUlVGQlUwTXNjVVJCUlRkRVFTdzJUa0ZOUlZVc1JVRkJPRUlzVTBGQlEwVXNSVUZCVDJJc1JVRkJVME1zVlVGRE5VTlpMRTlCUTBZc1UwRkRTbG9zUlVGQlR5eEpRVUZKUnl4aFFVRmhMRzlDUVVGeFFpeHJRMEZITjBOS0xFVkJRVkZoTEcxRVEzWkNTU3hYUVVGUFppeEZRVUZuUW1sQ0xEUkhRVU01UWl4SlFVRkphRUlzYjBSQlFWRXNWMEZCVDBNc1JVRkJVME1zWjBkQlF6ZENReXhWUVVGVll5dzJRa0ZEWkdZc1JVRkJUeXhKUVVGSlJ5eGhRVUZoTERaQ1FVRTRRaXc0UkVGSE5VSk1MR2xDUVVOc1FtdENMRVZCUVdOdVFpeDFRMEZEWkVrc1ZVRkJWV01zWVVGQllVVXNZVUZCWVVnc09FUkJSbFpKTERoRFFVRjRRa01zVDBGSlZIQkNMRVZCUVZGdlFpeHhSRUZGVW01Q0luMD1cbiIsImltcG9ydCB7IGdldFVzZXJNZWRpYVN0cmVhbSB9IGZyb20gJ0B1bnRlbXBzL3VzZXItcGVybWlzc2lvbnMtdXRpbHMnXG5cbmNsYXNzIFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciB7XG5cdHN0YXRpYyBkZWZhdWx0T3B0aW9ucyA9IHtcblx0XHRncmFtbWFyczogbnVsbCxcblx0XHRsYW5nOiAnZW4tVVMnLFxuXHRcdGNvbnRpbnVvdXM6IGZhbHNlLFxuXHRcdGludGVyaW1SZXN1bHRzOiBmYWxzZSxcblx0XHRtYXhBbHRlcm5hdGl2ZXM6IDEsXG5cdFx0c2VydmljZVVSSTogbnVsbCxcblx0fVxuXG5cdHN0YXRpYyBldmVudFR5cGVzID0ge1xuXHRcdEFVRElPX0VORDogJ2F1ZGlvZW5kJyxcblx0XHRBVURJT19TVEFSVDogJ2F1ZGlvc3RhcnQnLFxuXHRcdEVORDogJ2VuZCcsXG5cdFx0RVJST1I6ICdlcnJvcicsXG5cdFx0Tk9fTUFUQ0g6ICdub21hdGNoJyxcblx0XHRSRVNVTFQ6ICdyZXN1bHQnLFxuXHRcdFNPVU5EX0VORDogJ3NvdW5kZW5kJyxcblx0XHRTT1VORF9TVEFSVDogJ3NvdW5kc3RhcnQnLFxuXHRcdFNQRUVDSF9FTkQ6ICdzcGVlY2hlbmQnLFxuXHRcdFNQRUVDSF9TVEFSVDogJ3NwZWVjaHN0YXJ0Jyxcblx0XHRTVEFSVDogJ3N0YXJ0Jyxcblx0fVxuXG5cdHN0YXRpYyBnZXQgaXNTdXBwb3J0ZWQoKSB7XG5cdFx0cmV0dXJuICEhU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLl9yZXNvbHZlU3BlZWNoUmVjb2duaXRpb24oKVxuXHR9XG5cblx0c3RhdGljIHNldCBpc1N1cHBvcnRlZChfKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBpc1N1cHBvcnRlZCBkaXJlY3RseS4nKVxuXHR9XG5cblx0X2luc3RhbmNlID0gbnVsbFxuXHRfbGlzdGVuZXJzID0gbnVsbFxuXG5cdGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcblx0XHRjb25zdCBTcGVlY2hSZWNvZ25pdGlvbiA9IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKCkgfHwge31cblx0XHR0aGlzLl9pbnN0YW5jZSA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpXG5cdFx0dGhpcy5fbGlzdGVuZXJzID0ge31cblxuXHRcdE9iamVjdC5lbnRyaWVzKHtcblx0XHRcdC4uLlNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5kZWZhdWx0T3B0aW9ucyxcblx0XHRcdC4uLihvcHRpb25zIHx8IHt9KSxcblx0XHR9KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcblx0XHRcdGlmIChrZXkgPT09ICdncmFtbWFycycgJiYgIXZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IFNwZWVjaEdyYW1tYXJMaXN0ID0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLl9yZXNvbHZlU3BlZWNoR3JhbW1hckxpc3QoKSB8fCB7fVxuXHRcdFx0XHR2YWx1ZSA9IG5ldyBTcGVlY2hHcmFtbWFyTGlzdCgpXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pbnN0YW5jZVtrZXldID0gdmFsdWVcblx0XHR9KVxuXHR9XG5cblx0Z2V0IGluc3RhbmNlKCkge1xuXHRcdHJldHVybiB0aGlzLl9pbnN0YW5jZVxuXHR9XG5cblx0c2V0IGluc3RhbmNlKF8pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3Qgc2V0IGluc3RhbmNlIGRpcmVjdGx5LicpXG5cdH1cblxuXHRhc3luYyBzdGFydCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc3RyZWFtID0gYXdhaXQgZ2V0VXNlck1lZGlhU3RyZWFtKCdtaWNyb3Bob25lJywgeyBhdWRpbzogdHJ1ZSB9KVxuXHRcdFx0XHRpZiAoIXN0cmVhbSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJldHJpZXZlIHRoZSBzdHJlYW0gZnJvbSBtZWRpYSBkZXZpY2UnKVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2luc3RhbmNlLnN0YXJ0KClcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGNvbnN0IGVycm9ySGFuZGxlciA9IHRoaXMuX2xpc3RlbmVycy5lcnJvclxuXHRcdFx0XHRpZiAoISFlcnJvckhhbmRsZXIpIHtcblx0XHRcdFx0XHRlcnJvckhhbmRsZXIoZXJyb3IpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0c3RvcCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dGhpcy5faW5zdGFuY2Uuc3RvcCgpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdGFib3J0KCkge1xuXHRcdGlmICghIXRoaXMuX2luc3RhbmNlKSB7XG5cdFx0XHR0aGlzLl9pbnN0YW5jZS5hYm9ydCgpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuXHRcdGlmICghIXRoaXMuX2luc3RhbmNlICYmIHRoaXMuX2luY2x1ZGVzRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHtcblx0XHRcdGlmICghIXRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcblx0XHRcdFx0bGV0IGFkZGl0aW9uYWxBcmdzID0gW11cblx0XHRcdFx0aWYgKGV2ZW50VHlwZSA9PT0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmV2ZW50VHlwZXMuUkVTVUxUKSB7XG5cdFx0XHRcdFx0aWYgKCEhZXZlbnQucmVzdWx0cyAmJiBldmVudC5yZXN1bHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGFkZGl0aW9uYWxBcmdzLnB1c2goZXZlbnQucmVzdWx0c1swXVswXS50cmFuc2NyaXB0KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCEhY2FsbGJhY2sgJiYgY2FsbGJhY2suYXBwbHkodGhpcywgWy4uLmFkZGl0aW9uYWxBcmdzLCBldmVudF0pXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcblxuXHRcdFx0dGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0gPSBoYW5kbGVyXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKSB7XG5cdFx0Y29uc3QgaGFuZGxlciA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdXG5cdFx0dGhpcy5faW5zdGFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cblx0XHRkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRjbGVhbnVwKCkge1xuXHRcdHRoaXMuc3RvcCgpXG5cblx0XHRPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMpLmZvckVhY2goKGtleSkgPT4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGtleSkpXG5cdFx0dGhpcy5faW5zdGFuY2UgPSBudWxsXG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0X2luY2x1ZGVzRXZlbnRUeXBlKGV2ZW50VHlwZSkge1xuXHRcdHJldHVybiAhIU9iamVjdC52YWx1ZXMoU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmV2ZW50VHlwZXMpLmZpbmQoKHR5cGUpID0+IHR5cGUgPT09IGV2ZW50VHlwZSlcblx0fVxuXG5cdHN0YXRpYyBfcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR3aW5kb3cuU3BlZWNoUmVjb2duaXRpb24gfHxcblx0XHRcdHdpbmRvdy53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiB8fFxuXHRcdFx0d2luZG93Lm1velNwZWVjaFJlY29nbml0aW9uIHx8XG5cdFx0XHR3aW5kb3cubXNTcGVlY2hSZWNvZ25pdGlvblxuXHRcdClcblx0fVxuXG5cdHN0YXRpYyBfcmVzb2x2ZVNwZWVjaEdyYW1tYXJMaXN0KCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR3aW5kb3cuU3BlZWNoR3JhbW1hckxpc3QgfHxcblx0XHRcdHdpbmRvdy53ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCB8fFxuXHRcdFx0d2luZG93Lm1velNwZWVjaEdyYW1tYXJMaXN0IHx8XG5cdFx0XHR3aW5kb3cubXNTcGVlY2hHcmFtbWFyTGlzdFxuXHRcdClcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXJcbiIsImV4cG9ydCBkZWZhdWx0ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4uL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyJ1xuXG5jb25zdCB1c2VWb2NhbCA9IChsYW5nID0gJ2VuLVVTJywgZ3JhbW1hcnMgPSBudWxsLCBfX3JzSW5zdGFuY2UgPSBudWxsKSA9PiB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKVxuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZCkge1xuXHRcdFx0cmVmLmN1cnJlbnQgPSBfX3JzSW5zdGFuY2UgfHwgbmV3IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlcih7IGxhbmcsIGdyYW1tYXJzIH0pXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdFx0fVxuXHRcdH1cblx0fSwgW2xhbmcsIGdyYW1tYXJzLCBfX3JzSW5zdGFuY2VdKVxuXG5cdGNvbnN0IHN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuc3RhcnQoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3Qgc3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnN0b3AoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3QgYWJvcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBzdWJzY3JpYmUgPSB1c2VDYWxsYmFjaygoZXZlbnRUeXBlLCBoYW5kbGVyKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IHVuc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGV2ZW50VHlwZSwgaGFuZGxlcikgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBjbGVhbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0cmV0dXJuIFtyZWYsIHsgc3RhcnQsIHN0b3AsIGFib3J0LCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlLCBjbGVhbiB9XVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VWb2NhbFxuXG4vLyBUT0RPOiBSZXR1cm4gdGhlIGluc3RhbmNlLCBub3QgdGhlIHJlZlxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5jb25zdCBJY29uID0gKHsgY29sb3IsIGFjdGl2ZUNvbG9yLCBpc0FjdGl2ZSB9KSA9PiB7XG5cdHJldHVybiAoXG5cdFx0PHN2Z1xuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcm9vdF9fXCJcblx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdGhlaWdodD1cIjEwMCVcIlxuXHRcdFx0dmlld0JveD1cIjAgMCAyNCAyNFwiXG5cdFx0PlxuXHRcdFx0PGc+XG5cdFx0XHRcdDxwYXRoXG5cdFx0XHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcGF0aF9fXCJcblx0XHRcdFx0XHRmaWxsPXtjb2xvcn1cblx0XHRcdFx0XHRkPVwiTTEyIDE0YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY2YzAgMS42NiAxLjM0IDMgMyAzem01LjMtM2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTQgNi43IDExSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMzLjI4LS40OCA2LTMuMyA2LTYuNzJoLTEuN3pcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHR7aXNBY3RpdmUgJiYgPGNpcmNsZSBkYXRhLXRlc3RpZD1cIl9faWNvbi1hY3RpdmVfX1wiIGZpbGw9e2FjdGl2ZUNvbG9yfSBjeD1cIjE2XCIgY3k9XCI0XCIgcj1cIjRcIiAvPn1cblx0XHRcdDwvZz5cblx0XHQ8L3N2Zz5cblx0KVxufVxuXG5JY29uLnByb3BUeXBlcyA9IHtcblx0Y29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdGFjdGl2ZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRpc0FjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG59XG5cbkljb24uZGVmYXVsdFByb3BzID0ge1xuXHRjb2xvcjogJ2JsYWNrJyxcblx0YWN0aXZlQ29sb3I6ICdyZWQnLFxuXHRpc0FjdGl2ZTogZmFsc2UsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb25cbiIsImltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIgZnJvbSAnLi4vY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXInXG5cbmltcG9ydCBpc0Z1bmMgZnJvbSAnLi4vdXRpbHMvaXNGdW5jJ1xuXG5pbXBvcnQgdXNlVm9jYWwgZnJvbSAnLi4vaG9va3MvdXNlVm9jYWwnXG5pbXBvcnQgdXNlVGltZW91dCBmcm9tICcuLi9ob29rcy91c2VUaW1lb3V0J1xuXG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nXG5cbmNvbnN0IFZvY2FsID0gKHtcblx0Y2hpbGRyZW4sXG5cdGxhbmcsXG5cdGdyYW1tYXJzLFxuXHR0aW1lb3V0LFxuXHRhcmlhTGFiZWwsXG5cdHN0eWxlLFxuXHRjbGFzc05hbWUsXG5cdG91dGxpbmVTdHlsZSxcblx0b25TdGFydCxcblx0b25FbmQsXG5cdG9uU3BlZWNoU3RhcnQsXG5cdG9uU3BlZWNoRW5kLFxuXHRvblJlc3VsdCxcblx0b25FcnJvcixcblx0b25Ob01hdGNoLFxuXHRfX3JzSW5zdGFuY2UsXG59KSA9PiB7XG5cdGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZihudWxsKVxuXHRjb25zdCBbaXNMaXN0ZW5pbmcsIHNldElzTGlzdGVuaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG5cdGNvbnN0IFssIHsgc3RhcnQsIHN0b3AsIHN1YnNjcmliZSwgdW5zdWJzY3JpYmUgfV0gPSB1c2VWb2NhbChsYW5nLCBncmFtbWFycywgX19yc0luc3RhbmNlKVxuXG5cdGNvbnN0IF9vbkVuZCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblx0XHRzdG9wUmVjb2duaXRpb24oKVxuXG5cdFx0dW5zdWJzY3JpYmUoJ3N0YXJ0JywgX29uU3RhcnQpXG5cdFx0dW5zdWJzY3JpYmUoJ2VuZCcsIF9vbkVuZClcblx0XHR1bnN1YnNjcmliZSgnc3BlZWNoc3RhcnQnLCBfb25TcGVlY2hTdGFydClcblx0XHR1bnN1YnNjcmliZSgnc3BlZWNoZW5kJywgX29uU3BlZWNoRW5kKVxuXHRcdHVuc3Vic2NyaWJlKCdyZXN1bHQnLCBfb25SZXN1bHQpXG5cdFx0dW5zdWJzY3JpYmUoJ2Vycm9yJywgX29uRXJyb3IpXG5cdFx0dW5zdWJzY3JpYmUoJ25vbWF0Y2gnLCBfb25Ob01hdGNoKVxuXG5cdFx0ISFvbkVuZCAmJiBvbkVuZChlKVxuXHR9XG5cblx0Y29uc3QgW3N0YXJ0VGltZXIsIHN0b3BUaW1lcl0gPSB1c2VUaW1lb3V0KF9vbkVuZCwgdGltZW91dClcblxuXHRjb25zdCBzdGFydFJlY29nbml0aW9uID0gKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRzZXRJc0xpc3RlbmluZyh0cnVlKVxuXG5cdFx0XHRzdWJzY3JpYmUoJ3N0YXJ0JywgX29uU3RhcnQpXG5cdFx0XHRzdWJzY3JpYmUoJ2VuZCcsIF9vbkVuZClcblx0XHRcdHN1YnNjcmliZSgnc3BlZWNoc3RhcnQnLCBfb25TcGVlY2hTdGFydClcblx0XHRcdHN1YnNjcmliZSgnc3BlZWNoZW5kJywgX29uU3BlZWNoRW5kKVxuXHRcdFx0c3Vic2NyaWJlKCdyZXN1bHQnLCBfb25SZXN1bHQpXG5cdFx0XHRzdWJzY3JpYmUoJ2Vycm9yJywgX29uRXJyb3IpXG5cdFx0XHRzdWJzY3JpYmUoJ25vbWF0Y2gnLCBfb25Ob01hdGNoKVxuXG5cdFx0XHRzdGFydCgpXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdF9vbkVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IHN0b3BSZWNvZ25pdGlvbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0c2V0SXNMaXN0ZW5pbmcoZmFsc2UpXG5cblx0XHRcdHN0b3AoKVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHQhIW9uRXJyb3IgJiYgb25FcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjb25zdCBfb25DbGljayA9ICgpID0+IHtcblx0XHRzdGFydFJlY29nbml0aW9uKClcblx0fVxuXG5cdGNvbnN0IF9vbkZvY3VzID0gKCkgPT4ge1xuXHRcdGlmICghY2xhc3NOYW1lICYmIG91dGxpbmVTdHlsZSkge1xuXHRcdFx0YnV0dG9uUmVmLmN1cnJlbnQuc3R5bGUub3V0bGluZSA9IG91dGxpbmVTdHlsZVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IF9vbkJsdXIgPSAoKSA9PiB7XG5cdFx0aWYgKCFjbGFzc05hbWUgJiYgb3V0bGluZVN0eWxlKSB7XG5cdFx0XHRidXR0b25SZWYuY3VycmVudC5zdHlsZS5vdXRsaW5lID0gJ25vbmUnXG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgX29uU3RhcnQgPSAoZSkgPT4ge1xuXHRcdHN0YXJ0VGltZXIoKVxuXG5cdFx0ISFvblN0YXJ0ICYmIG9uU3RhcnQoZSlcblx0fVxuXG5cdGNvbnN0IF9vblNwZWVjaFN0YXJ0ID0gKGUpID0+IHtcblx0XHRzdG9wVGltZXIoKVxuXG5cdFx0ISFvblNwZWVjaFN0YXJ0ICYmIG9uU3BlZWNoU3RhcnQoZSlcblx0fVxuXG5cdGNvbnN0IF9vblNwZWVjaEVuZCA9IChlKSA9PiB7XG5cdFx0c3RhcnRUaW1lcigpXG5cblx0XHQhIW9uU3BlZWNoRW5kICYmIG9uU3BlZWNoRW5kKGUpXG5cdH1cblxuXHRjb25zdCBfb25SZXN1bHQgPSAocmVzdWx0LCBldmVudCkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25SZXN1bHQgJiYgb25SZXN1bHQocmVzdWx0LCBldmVudClcblx0fVxuXG5cdGNvbnN0IF9vbkVycm9yID0gKGVycm9yKSA9PiB7XG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25FcnJvciAmJiBvbkVycm9yKGVycm9yKVxuXHR9XG5cblx0Y29uc3QgX29uTm9NYXRjaCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblx0XHRzdG9wUmVjb2duaXRpb24oKVxuXG5cdFx0ISFvbk5vTWF0Y2ggJiYgb25Ob01hdGNoKGUpXG5cdH1cblxuXHRjb25zdCBfcmVuZGVyRGVmYXVsdCA9ICgpID0+IChcblx0XHQ8YnV0dG9uXG5cdFx0XHRkYXRhLXRlc3RpZD1cIl9fdm9jYWwtcm9vdF9fXCJcblx0XHRcdHJlZj17YnV0dG9uUmVmfVxuXHRcdFx0cm9sZT1cImJ1dHRvblwiXG5cdFx0XHRhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG5cdFx0XHRzdHlsZT17XG5cdFx0XHRcdGNsYXNzTmFtZVxuXHRcdFx0XHRcdD8gbnVsbFxuXHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHR3aWR0aDogMjQsXG5cdFx0XHRcdFx0XHRcdGhlaWdodDogMjQsXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICdub25lJyxcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGN1cnNvcjogIWlzTGlzdGVuaW5nID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnLFxuXHRcdFx0XHRcdFx0XHQuLi5zdHlsZSxcblx0XHRcdFx0XHQgIH1cblx0XHRcdH1cblx0XHRcdGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuXHRcdFx0b25Gb2N1cz17X29uRm9jdXN9XG5cdFx0XHRvbkJsdXI9e19vbkJsdXJ9XG5cdFx0XHRvbkNsaWNrPXtfb25DbGlja31cblx0XHQ+XG5cdFx0XHQ8SWNvbiBpc0FjdGl2ZT17aXNMaXN0ZW5pbmd9IGljb25Db2xvcj1cIiNhYWFcIiAvPlxuXHRcdDwvYnV0dG9uPlxuXHQpXG5cblx0Y29uc3QgX3JlbmRlckNoaWxkcmVuID0gKGNoaWxkcmVuKSA9PiB7XG5cdFx0aWYgKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZCkge1xuXHRcdFx0aWYgKGlzRnVuYyhjaGlsZHJlbikpIHtcblx0XHRcdFx0cmV0dXJuIGNoaWxkcmVuKHN0YXJ0UmVjb2duaXRpb24sIHN0b3BSZWNvZ25pdGlvbiwgaXNMaXN0ZW5pbmcpXG5cdFx0XHR9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuXHRcdFx0XHRyZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG5cdFx0XHRcdFx0Li4uKCFpc0xpc3RlbmluZyAmJiB7IG9uQ2xpY2s6IF9vbkNsaWNrIH0pLFxuXHRcdFx0XHR9KVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIF9yZW5kZXJEZWZhdWx0KClcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXG5cdHJldHVybiBfcmVuZGVyQ2hpbGRyZW4oY2hpbGRyZW4pXG59XG5cblZvY2FsLnByb3BUeXBlcyA9IHtcblx0LyoqIERlZmluZXMgdGhlIGxhbmd1YWdlIHVuZGVyc3Rvb2QgYnkgdGhlIHJlY29nbml0aW9uIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3BlZWNoUmVjb2duaXRpb24vbGFuZykgKi9cblx0bGFuZzogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIGdyYW1tYXJzIHVuZGVyc3Rvb2QgYnkgdGhlIHJlY29nbml0aW9uIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3BlZWNoUmVjb2duaXRpb24vZ3JhbW1hcnMpICovXG5cdGdyYW1tYXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHQvKiogRGVmaW5lcyB0aGUgdGltZSBpbiBtcyB0byB3YWl0IGJlZm9yZSBkaXNjYXJkaW5nIHRoZSByZWNvZ25pdGlvbiAqL1xuXHR0aW1lb3V0OiBQcm9wVHlwZXMubnVtYmVyLFxuXHQvKiogRGVmaW5lcyB0aGUgYTExeSBsYWJlbCBmb3IgdGhlIGRlZmF1bHQgYnV0dG9uICovXG5cdGFyaWFMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIHN0eWxlcyBvZiB0aGUgZGVmYXVsdCBlbGVtZW50IGlmIGNsYXNzTmFtZSBpcyBub3Qgc3BlY2lmaWVkICovXG5cdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHQvKiogRGVmaW5lcyB0aGUgY2xhc3Mgb2YgdGhlIGRlZmF1bHQgZWxlbWVudCAqL1xuXHRjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBkZWZhdWx0IHN0eWxlIG9mIHRoZSBmb2N1cyBvdXRsaW5lLiBpZiBudWxsIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB1c2VkICovXG5cdG91dGxpbmVTdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHJlY29nbml0aW9uIHN0YXJ0cyAqL1xuXHRvblN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHJlY29nbml0aW9uIGVuZHMgKi9cblx0b25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIHN0YXJ0cyAqL1xuXHRvblNwZWVjaFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCBlbmRzICovXG5cdG9uU3BlZWNoRW5kOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gYSByZXN1bHQgaXMgcmV0dXJuZWQgZnJvbSB0ZSByZWNvZ25pdGlvbiAqL1xuXHRvblJlc3VsdDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIGFuIGVycm9yIG9jY3VycyAqL1xuXHRvbkVycm9yOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gbm8gcmVzdWx0IGNhbiBiZSByZWNvZ25pemVkICovXG5cdG9uTm9NYXRjaDogUHJvcFR5cGVzLmZ1bmMsXG59XG5cblZvY2FsLmRlZmF1bHRQcm9wcyA9IHtcblx0bGFuZzogJ2VuLVVTJyxcblx0Z3JhbW1hcnM6IG51bGwsXG5cdHRpbWVvdXQ6IDMwMDAsXG5cdGFyaWFMYWJlbDogJ3N0YXJ0IHJlY29nbml0aW9uJyxcblx0c3R5bGU6IG51bGwsXG5cdGNsYXNzTmFtZTogbnVsbCxcblx0b3V0bGluZVN0eWxlOiAnMnB4IHNvbGlkJyxcblx0b25TdGFydDogbnVsbCxcblx0b25FbmQ6IG51bGwsXG5cdG9uU3BlZWNoU3RhcnQ6IG51bGwsXG5cdG9uU3BlZWNoRW5kOiBudWxsLFxuXHRvblJlc3VsdDogbnVsbCxcblx0b25FcnJvcjogbnVsbCxcblx0b25Ob01hdGNoOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBWb2NhbFxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IHVzZVRpbWVvdXQgPSAoaGFuZGxlciwgdGltZW91dCA9IDApID0+IHtcblx0Y29uc3QgcmVmID0gdXNlUmVmKC0xKVxuXG5cdGNvbnN0IHN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0Y2xlYXJUaW1lb3V0KHJlZi5jdXJyZW50KVxuXHRcdHJlZi5jdXJyZW50ID0gLTFcblx0fSwgW10pXG5cblx0Y29uc3Qgc3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0c3RvcCgpXG5cdFx0cmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpXG5cdH0sIFtoYW5kbGVyLCB0aW1lb3V0LCBzdG9wXSlcblxuXHR1c2VFZmZlY3QoKCkgPT4gc3RvcCwgW3N0b3BdKVxuXG5cdHJldHVybiBbc3RhcnQsIHN0b3BdXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRpbWVvdXRcblxuLy8gVE9ETzogUmV0dXJuIGEgcHJvbWlzZVxuIiwiaW1wb3J0IFZvY2FsIGZyb20gJy4vY29tcG9uZW50cy9Wb2NhbCdcbmltcG9ydCBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIgZnJvbSAnLi9jb3JlL1NwZWVjaFJlY29nbml0aW9uV3JhcHBlcidcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VWb2NhbCB9IGZyb20gJy4vaG9va3MvdXNlVm9jYWwnXG5leHBvcnQgY29uc3QgaXNTdXBwb3J0ZWQgPSBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWRcblxuZXhwb3J0IGRlZmF1bHQgVm9jYWxcbiJdLCJuYW1lcyI6WyJlIiwiciIsInQiLCJuIiwiYSIsImkiLCJvIiwidSIsImMiLCJ2YWx1ZSIsImRvbmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ0aGlzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJBcnJheSIsImlzQXJyYXkiLCJTeW1ib2wiLCJpdGVyYXRvciIsIk9iamVjdCIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwicmV0dXJuIiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIlR5cGVFcnJvciIsInJlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJ3cmFwIiwicHJldiIsImFicnVwdCIsIm5hdmlnYXRvciIsInBlcm1pc3Npb25zIiwiRE9NRXhjZXB0aW9uIiwicXVlcnkiLCJzZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRhcmdldCIsInN0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInQwIiwiY2F0Y2giLCJzdG9wIiwicyIsIm1lZGlhRGV2aWNlcyIsInQxIiwiZ2V0VXNlck1lZGlhIiwidDIiLCJ0MyIsImFsbCIsInQ0IiwiU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIiwib3B0aW9ucyIsIlNwZWVjaFJlY29nbml0aW9uIiwiX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbiIsIl9pbnN0YW5jZSIsIl9saXN0ZW5lcnMiLCJlbnRyaWVzIiwiZGVmYXVsdE9wdGlvbnMiLCJmb3JFYWNoIiwia2V5IiwiX3Jlc29sdmVTcGVlY2hHcmFtbWFyTGlzdCIsIl90aGlzIiwiXyIsIkVycm9yIiwiZ2V0VXNlck1lZGlhU3RyZWFtIiwiYXVkaW8iLCJzdGFydCIsImVycm9ySGFuZGxlciIsImVycm9yIiwiYWJvcnQiLCJldmVudFR5cGUiLCJjYWxsYmFjayIsIl9pbmNsdWRlc0V2ZW50VHlwZSIsImhhbmRsZXIiLCJldmVudCIsImFkZGl0aW9uYWxBcmdzIiwiZXZlbnRUeXBlcyIsIlJFU1VMVCIsInJlc3VsdHMiLCJ0cmFuc2NyaXB0IiwiX3RoaXMyIiwia2V5cyIsIl90aGlzMyIsInZhbHVlcyIsImZpbmQiLCJ0eXBlIiwid2luZG93Iiwid2Via2l0U3BlZWNoUmVjb2duaXRpb24iLCJtb3pTcGVlY2hSZWNvZ25pdGlvbiIsIm1zU3BlZWNoUmVjb2duaXRpb24iLCJTcGVlY2hHcmFtbWFyTGlzdCIsIndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0IiwibW96U3BlZWNoR3JhbW1hckxpc3QiLCJtc1NwZWVjaEdyYW1tYXJMaXN0IiwiZ3JhbW1hcnMiLCJsYW5nIiwiY29udGludW91cyIsImludGVyaW1SZXN1bHRzIiwibWF4QWx0ZXJuYXRpdmVzIiwic2VydmljZVVSSSIsIkFVRElPX0VORCIsIkFVRElPX1NUQVJUIiwiRU5EIiwiRVJST1IiLCJOT19NQVRDSCIsIlNPVU5EX0VORCIsIlNPVU5EX1NUQVJUIiwiU1BFRUNIX0VORCIsIlNQRUVDSF9TVEFSVCIsIlNUQVJUIiwidXNlVm9jYWwiLCJfX3JzSW5zdGFuY2UiLCJyZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpc1N1cHBvcnRlZCIsImN1cnJlbnQiLCJjbGVhbnVwIiwidXNlQ2FsbGJhY2siLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsImNsZWFuIiwiSWNvbiIsImNvbG9yIiwiYWN0aXZlQ29sb3IiLCJpc0FjdGl2ZSIsIlJlYWN0IiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJmaWxsIiwiZCIsImN4IiwiY3kiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiZGVmYXVsdFByb3BzIiwiVm9jYWwiLCJjaGlsZHJlbiIsInRpbWVvdXQiLCJhcmlhTGFiZWwiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm91dGxpbmVTdHlsZSIsIm9uU3RhcnQiLCJvbkVuZCIsIm9uU3BlZWNoU3RhcnQiLCJvblNwZWVjaEVuZCIsIm9uUmVzdWx0Iiwib25FcnJvciIsIm9uTm9NYXRjaCIsImJ1dHRvblJlZiIsInVzZVN0YXRlIiwiaXNMaXN0ZW5pbmciLCJzZXRJc0xpc3RlbmluZyIsIl9vbkVuZCIsInN0b3BUaW1lciIsInN0b3BSZWNvZ25pdGlvbiIsIl9vblN0YXJ0IiwiX29uU3BlZWNoU3RhcnQiLCJfb25TcGVlY2hFbmQiLCJfb25SZXN1bHQiLCJfb25FcnJvciIsIl9vbk5vTWF0Y2giLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidXNlVGltZW91dCIsInN0YXJ0VGltZXIiLCJzdGFydFJlY29nbml0aW9uIiwiX29uQ2xpY2siLCJfb25Gb2N1cyIsIm91dGxpbmUiLCJfb25CbHVyIiwicmVzdWx0IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwicm9sZSIsImJhY2tncm91bmQiLCJib3JkZXIiLCJwYWRkaW5nIiwiY3Vyc29yIiwib25Gb2N1cyIsIm9uQmx1ciIsImljb25Db2xvciIsIl9yZW5kZXJDaGlsZHJlbiIsIm9iamVjdCIsIm51bWJlciIsImZ1bmMiXSwibWFwcGluZ3MiOiJtcUVBQUEsU0FBU0EsRUFBRUEsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsRUFBRUMsR0FB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 |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["exports","react","prop-types"],t):t((e=e||self)["react-vocal"]={},e.React,e.PropTypes)}(this,(function(e,t,n){"use strict";var r="default"in t?t.default:t;function o(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void n(e)}c.done?t(u):Promise.resolve(u).then(r,o)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(e,t)}(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 f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void n(e)}c.done?t(u):Promise.resolve(u).then(r,o)}function h(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){p(i,r,o,a,c,"next",e)}function c(e){p(i,r,o,a,c,"throw",e)}a(void 0)}))}}function v(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=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n;var m=function(){var e=h(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=h(regeneratorRuntime.mark((function e(n,r){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.permissions){e.next=4;break}r(new DOMException("Permissions not supported","NOT_FOUND_ERR")),e.next=16;break;case 4:return e.prev=4,e.next=7,navigator.permissions.query({name:t});case 7:o=e.sent,i=function e(t){o.removeEventListener("change",e),y(t.target.state,n,r)},o.addEventListener("change",i),y(o.state,n,r),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(4),r(e.t0);case 16:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),y=function(e,t,n){switch(e){case"denied":n(new DOMException("Permission denied","NOT_ALLOWED_ERR"));break;default:t(e)}},b=function(){var e=h(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=h(regeneratorRuntime.mark((function e(r,o){var i,a,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.mediaDevices){e.next=4;break}o(new DOMException("MediaDevices not supported","NOT_FOUND_ERR")),e.next=24;break;case 4:return e.prev=4,e.t0=Promise,e.next=8,m(t);case 8:return e.t1=e.sent,e.next=11,navigator.mediaDevices.getUserMedia(n);case 11:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=15,e.t0.all.call(e.t0,e.t3);case 15:i=e.sent,a=v(i,2),c=a[1],r(c),e.next=24;break;case 21:e.prev=21,e.t4=e.catch(4),o(e.t4);case 24:case"end":return e.stop()}}),e,null,[[4,21]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),g=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),c(this,"_instance",null),c(this,"_listeners",null);var r=e._resolveSpeechRecognition()||{};this._instance=new r,this._listeners={},Object.entries(s(s({},e.defaultOptions),t||{})).forEach((function(t){var r=l(t,2),o=r[0],i=r[1];"grammars"!==o||i||(i=new(e._resolveSpeechGrammarList()||{}));n._instance[o]=i}))}var t,n;return a(e,null,[{key:"isSupported",get:function(){return!!e._resolveSpeechRecognition()},set:function(e){throw new Error("You cannot set isSupported directly.")}}]),a(e,[{key:"start",value:(t=regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._instance){e.next=14;break}return e.prev=1,e.next=4,b("microphone",{audio:!0});case 4:if(e.sent){e.next=7;break}throw new Error("Unable to retrieve the stream from media device");case 7:this._instance.start(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),(t=this._listeners.error)&&t(e.t0);case 14:return e.abrupt("return",this);case 15:case"end":return e.stop()}}),e,this,[[1,10]])})),n=function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function c(e){o(a,r,i,c,u,"next",e)}function u(e){o(a,r,i,c,u,"throw",e)}c(void 0)}))},function(){return n.apply(this,arguments)})},{key:"stop",value:function(){return this._instance&&this._instance.stop(),this}},{key:"abort",value:function(){return this._instance&&this._instance.abort(),this}},{key:"addEventListener",value:function(t,n){var r=this;if(this._instance&&this._includesEventType(t)){this._listeners[t]&&this.removeEventListener(t);var o=function(o){var i=[];t===e.eventTypes.RESULT&&o.results&&o.results.length>0&&i.push(o.results[0][0].transcript),n&&n.apply(r,[].concat(i,[o]))};this._instance.addEventListener(t,o),this._listeners[t]=o}return this}},{key:"removeEventListener",value:function(e){var t=this._listeners[e];return this._instance.removeEventListener(e,t),delete this._listeners[e],this}},{key:"cleanup",value:function(){var e=this;return this.stop(),Object.keys(this._listeners).forEach((function(t){return e.removeEventListener(t)})),this._instance=null,this}},{key:"_includesEventType",value:function(t){return!!Object.values(e.eventTypes).find((function(e){return e===t}))}},{key:"instance",get:function(){return this._instance},set:function(e){throw new Error("You cannot set instance directly.")}}],[{key:"_resolveSpeechRecognition",value:function(){return window.SpeechRecognition||window.webkitSpeechRecognition||window.mozSpeechRecognition||window.msSpeechRecognition}},{key:"_resolveSpeechGrammarList",value:function(){return window.SpeechGrammarList||window.webkitSpeechGrammarList||window.mozSpeechGrammarList||window.msSpeechGrammarList}}]),e}();c(g,"defaultOptions",{grammars:null,lang:"en-US",continuous:!1,interimResults:!1,maxAlternatives:1,serviceURI:null}),c(g,"eventTypes",{AUDIO_END:"audioend",AUDIO_START:"audiostart",END:"end",ERROR:"error",NO_MATCH:"nomatch",RESULT:"result",SOUND_END:"soundend",SOUND_START:"soundstart",SPEECH_END:"speechend",SPEECH_START:"speechstart",START:"start"});var w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en-US",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=t.useRef(null);t.useEffect((function(){if(g.isSupported)return o.current=r||new g({lang:e,grammars:n}),function(){o.current.abort(),o.current.cleanup()}}),[e,n,r]);var i=t.useCallback((function(){o.current&&o.current.start()}),[]),a=t.useCallback((function(){o.current&&o.current.stop()}),[]),c=t.useCallback((function(){o.current&&o.current.abort()}),[]),u=t.useCallback((function(e,t){o.current&&o.current.addEventListener(e,t)}),[]),s=t.useCallback((function(e,t){o.current&&o.current.removeEventListener(e,t)}),[]),l=t.useCallback((function(){o.current&&o.current.cleanup()}),[]);return[o,{start:i,stop:a,abort:c,subscribe:u,unsubscribe:s,clean:l}]},S=function(e){var t=e.color,n=e.activeColor,o=e.isActive;return r.createElement("svg",{"data-testid":"__icon-root__",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 24 24"},r.createElement("g",null,r.createElement("path",{"data-testid":"__icon-path__",fill:t,d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"}),o&&r.createElement("circle",{"data-testid":"__icon-active__",fill:n,cx:"16",cy:"4",r:"4"})))};S.propTypes={color:n.string,activeColor:n.string,isActive:n.bool},S.defaultProps={color:"black",activeColor:"red",isActive:!1};var _=function(e){var n=e.children,o=e.lang,i=e.grammars,a=e.timeout,c=e.ariaLabel,u=e.style,f=e.className,p=e.outlineStyle,h=e.onStart,v=e.onEnd,d=e.onSpeechStart,m=e.onSpeechEnd,y=e.onResult,b=e.onError,_=e.onNoMatch,E=e.__rsInstance,O=t.useRef(null),k=l(t.useState(!1),2),R=k[0],x=k[1],j=l(w(o,i,E),2)[1],T=j.start,P=j.stop,A=j.subscribe,L=j.unsubscribe,D=function e(t){U(),I(),L("start",q),L("end",e),L("speechstart",F),L("speechend",V),L("result",B),L("error",Y),L("nomatch",$),v&&v(t)},C=l(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=t.useRef(-1),o=t.useCallback((function(){clearTimeout(r.current),r.current=-1}),[]),i=t.useCallback((function(){o(),r.current=setTimeout(e,n)}),[e,n,o]);return t.useEffect((function(){return o}),[o]),[i,o]}(D,a),2),N=C[0],U=C[1],M=function(){try{x(!0),A("start",q),A("end",D),A("speechstart",F),A("speechend",V),A("result",B),A("error",Y),A("nomatch",$),T()}catch(e){Y(e)}},I=function(){try{x(!1),P()}catch(e){b&&b(e)}},G=function(){M()},z=function(){!f&&p&&(O.current.style.outline=p)},H=function(){!f&&p&&(O.current.style.outline="none")},q=function(e){N(),h&&h(e)},F=function(e){U(),d&&d(e)},V=function(e){N(),m&&m(e)},B=function(e,t){U(),I(),y&&y(e,t)},Y=function(e){I(),b&&b(e)},$=function(e){U(),I(),_&&_(e)};return function(e){return g.isSupported?"function"==typeof e?e(M,I,R):t.isValidElement(e)?t.cloneElement(e,s({},!R&&{onClick:G})):r.createElement("button",{"data-testid":"__vocal-root__",ref:O,role:"button","aria-label":c,style:f?null:s({width:24,height:24,background:"none",border:"none",padding:0,cursor:R?"default":"pointer"},u),className:f,onFocus:z,onBlur:H,onClick:G},r.createElement(S,{isActive:R,iconColor:"#aaa"})):null}(n)};_.propTypes={lang:n.string,grammars:n.object,timeout:n.number,ariaLabel:n.string,style:n.object,className:n.string,outlineStyle:n.string,onStart:n.func,onEnd:n.func,onSpeechStart:n.func,onSpeechEnd:n.func,onResult:n.func,onError:n.func,onNoMatch:n.func},_.defaultProps={lang:"en-US",grammars:null,timeout:3e3,ariaLabel:"start recognition",style:null,className:null,outlineStyle:"2px solid",onStart:null,onEnd:null,onSpeechStart:null,onSpeechEnd:null,onResult:null,onError:null,onNoMatch:null};var E=g.isSupported;e.default=_,e.isSupported=E,e.useVocal=w,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudW1kLmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvQHVudGVtcHMvdXNlci1wZXJtaXNzaW9ucy11dGlscy9kaXN0L2luZGV4LmVzLmpzIiwiLi4vc3JjL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVZvY2FsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvSWNvbi5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1ZvY2FsLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVRpbWVvdXQuanMiLCIuLi9zcmMvdXRpbHMvaXNGdW5jLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGUoZSxyLHQsbixhLGksbyl7dHJ5e3ZhciB1PWVbaV0obyksYz11LnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHQoZSl9dS5kb25lP3IoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiByKHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciBvPXIuYXBwbHkodCxuKTtmdW5jdGlvbiB1KHIpe2UobyxhLGksdSxjLFwibmV4dFwiLHIpfWZ1bmN0aW9uIGMocil7ZShvLGEsaSx1LGMsXCJ0aHJvd1wiLHIpfXUodm9pZCAwKX0pKX19ZnVuY3Rpb24gdChlLHIpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSxyKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgU3ltYm9sfHwhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpKXJldHVybjt2YXIgdD1bXSxuPSEwLGE9ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgbyx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0obz11Lm5leHQoKSkuZG9uZSkmJih0LnB1c2goby52YWx1ZSksIXJ8fHQubGVuZ3RoIT09cik7bj0hMCk7fWNhdGNoKGUpe2E9ITAsaT1lfWZpbmFsbHl7dHJ5e258fG51bGw9PXUucmV0dXJufHx1LnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1yZXR1cm4gdH0oZSxyKXx8ZnVuY3Rpb24oZSxyKXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG4oZSxyKTt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PXQmJmUuY29uc3RydWN0b3ImJih0PWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PXR8fFwiU2V0XCI9PT10KXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSlyZXR1cm4gbihlLHIpfShlLHIpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbihlLHIpeyhudWxsPT1yfHxyPmUubGVuZ3RoKSYmKHI9ZS5sZW5ndGgpO2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KHIpO3Q8cjt0Kyspblt0XT1lW3RdO3JldHVybiBufXZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0KXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4pe3ZhciBhLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuYXZpZ2F0b3IucGVybWlzc2lvbnMpe2UubmV4dD00O2JyZWFrfW4obmV3IERPTUV4Y2VwdGlvbihcIlBlcm1pc3Npb25zIG5vdCBzdXBwb3J0ZWRcIixcIk5PVF9GT1VORF9FUlJcIikpLGUubmV4dD0xNjticmVhaztjYXNlIDQ6cmV0dXJuIGUucHJldj00LGUubmV4dD03LG5hdmlnYXRvci5wZXJtaXNzaW9ucy5xdWVyeSh7bmFtZTp0fSk7Y2FzZSA3OmE9ZS5zZW50LG89ZnVuY3Rpb24gZSh0KXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixlKSxpKHQudGFyZ2V0LnN0YXRlLHIsbil9LGEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLG8pLGkoYS5zdGF0ZSxyLG4pLGUubmV4dD0xNjticmVhaztjYXNlIDEzOmUucHJldj0xMyxlLnQwPWUuY2F0Y2goNCksbihlLnQwKTtjYXNlIDE2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s0LDEzXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24ocix0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksaT1mdW5jdGlvbihlLHIsdCl7c3dpdGNoKGUpe2Nhc2VcImRlbmllZFwiOnQobmV3IERPTUV4Y2VwdGlvbihcIlBlcm1pc3Npb24gZGVuaWVkXCIsXCJOT1RfQUxMT1dFRF9FUlJcIikpO2JyZWFrO2RlZmF1bHQ6cihlKX19LG89ZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKG4saSl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoXCJyZXR1cm5cIixuZXcgUHJvbWlzZShmdW5jdGlvbigpe3ZhciBlPXIocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixvKXt2YXIgdSxjLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKXtlLm5leHQ9NDticmVha31vKG5ldyBET01FeGNlcHRpb24oXCJNZWRpYURldmljZXMgbm90IHN1cHBvcnRlZFwiLFwiTk9UX0ZPVU5EX0VSUlwiKSksZS5uZXh0PTI0O2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5wcmV2PTQsZS50MD1Qcm9taXNlLGUubmV4dD04LGEobik7Y2FzZSA4OnJldHVybiBlLnQxPWUuc2VudCxlLm5leHQ9MTEsbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoaSk7Y2FzZSAxMTpyZXR1cm4gZS50Mj1lLnNlbnQsZS50Mz1bZS50MSxlLnQyXSxlLm5leHQ9MTUsZS50MC5hbGwuY2FsbChlLnQwLGUudDMpO2Nhc2UgMTU6dT1lLnNlbnQsYz10KHUsMikscz1jWzFdLHIocyksZS5uZXh0PTI0O2JyZWFrO2Nhc2UgMjE6ZS5wcmV2PTIxLGUudDQ9ZS5jYXRjaCg0KSxvKGUudDQpO2Nhc2UgMjQ6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzQsMjFdXSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24ocix0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2V4cG9ydHthIGFzIGdldFBlcm1pc3Npb24sbyBhcyBnZXRVc2VyTWVkaWFTdHJlYW19O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndVpYTXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5blpYUlFaWEp0YVhOemFXOXVMbXB6SWl3aUxpNHZjM0pqTDJkbGRGVnpaWEpOWldScFlWTjBjbVZoYlM1cWN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRkpsZEhWeWJuTWdZU0J3Y205dGFYTmxJSEpsYzI5c2RtVmtJSGRvWlc0Z2RHaGxJSEJsY20xcGMzTnBiMjRnYVhNZ1ozSmhiblJsWkNCaWVTQjBhR1VnZFhObGNseHVJQ29nUUhCaGNtRnRJSEJsY20xcGMzTnBiMjVPWVcxbElDQWdJQ0FnSUNBZ0lDQWdUbUZ0WlNCdlppQjBhR1VnY0dWeWJXbHpjMmx2Ymk0Z1FITmxaU0JvZEhSd2N6b3ZMM2N6WXk1bmFYUm9kV0l1YVc4dmNHVnliV2x6YzJsdmJuTXZJMlZ1ZFcxa1pXWXRjR1Z5YldsemMybHZibTVoYldWY2JpQXFJRUJ5WlhSMWNtNXpJSHRRY205dGFYTmxmVnh1SUNvdlhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCaGMzbHVZeUFvY0dWeWJXbHpjMmx2Yms1aGJXVXBJRDArSUh0Y2JseDBjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR0Z6ZVc1aklDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmx4MFhIUnBaaUFvSVc1aGRtbG5ZWFJ2Y2k1d1pYSnRhWE56YVc5dWN5a2dlMXh1WEhSY2RGeDBjbVZxWldOMEtHNWxkeUJFVDAxRmVHTmxjSFJwYjI0b0oxQmxjbTFwYzNOcGIyNXpJRzV2ZENCemRYQndiM0owWldRbkxDQW5UazlVWDBaUFZVNUVYMFZTVWljcEtWeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFIwY25rZ2UxeHVYSFJjZEZ4MFhIUmpiMjV6ZENCd1pYSnRhWE56YVc5dVUzUmhkSFZ6SUQwZ1lYZGhhWFFnYm1GMmFXZGhkRzl5TG5CbGNtMXBjM05wYjI1ekxuRjFaWEo1S0hzZ2JtRnRaVG9nY0dWeWJXbHpjMmx2Yms1aGJXVWdmU2xjYmx4MFhIUmNkRngwWTI5dWMzUWdiMjVEYUdGdVoyVWdQU0FvWlhabGJuUXBJRDArSUh0Y2JseDBYSFJjZEZ4MFhIUndaWEp0YVhOemFXOXVVM1JoZEhWekxuSmxiVzkyWlVWMlpXNTBUR2x6ZEdWdVpYSW9KMk5vWVc1blpTY3NJRzl1UTJoaGJtZGxLVnh1WEhSY2RGeDBYSFJjZEhKbGMyOXNkbVZQY2xKbGFtVmpkRUpoYzJWa1QyNVRkR0YwWlNobGRtVnVkQzUwWVhKblpYUXVjM1JoZEdVc0lISmxjMjlzZG1Vc0lISmxhbVZqZENsY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUndaWEp0YVhOemFXOXVVM1JoZEhWekxtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0oyTm9ZVzVuWlNjc0lHOXVRMmhoYm1kbEtWeHVYSFJjZEZ4MFhIUnlaWE52YkhabFQzSlNaV3BsWTNSQ1lYTmxaRTl1VTNSaGRHVW9jR1Z5YldsemMybHZibE4wWVhSMWN5NXpkR0YwWlN3Z2NtVnpiMngyWlN3Z2NtVnFaV04wS1Z4dVhIUmNkRngwZlNCallYUmphQ0FvWlhKeWIzSXBJSHRjYmx4MFhIUmNkRngwY21WcVpXTjBLR1Z5Y205eUtWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmU2xjYm4xY2JseHVZMjl1YzNRZ2NtVnpiMngyWlU5eVVtVnFaV04wUW1GelpXUlBibE4wWVhSbElEMGdLSE4wWVhSbExDQnlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmx4MGMzZHBkR05vSUNoemRHRjBaU2tnZTF4dVhIUmNkR05oYzJVZ0oyUmxibWxsWkNjNlhHNWNkRngwWEhSeVpXcGxZM1FvYm1WM0lFUlBUVVY0WTJWd2RHbHZiaWduVUdWeWJXbHpjMmx2YmlCa1pXNXBaV1FuTENBblRrOVVYMEZNVEU5WFJVUmZSVkpTSnlrcFhHNWNkRngwWEhSaWNtVmhhMXh1WEhSY2RHUmxabUYxYkhRNlhHNWNkRngwWEhSeVpYTnZiSFpsS0hOMFlYUmxLVnh1WEhSOVhHNTlYRzRpTENKcGJYQnZjblFnWjJWMFVHVnliV2x6YzJsdmJpQm1jbTl0SUNjdUwyZGxkRkJsY20xcGMzTnBiMjRuWEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCaElIQnliMjFwYzJVZ2NtVnpiMngyWldRZ2QyaGxiaUIwYUdVZ2NHVnliV2x6YzJsdmJpQnBjeUJuY21GdWRHVmtJR0o1SUhSb1pTQjFjMlZ5SUdGdVpDQjBhR1VnYzNSeVpXRnRJR2x6SUhKbGRISnBaWFpsWkZ4dUlDb2dRSEJoY21GdElIQmxjbTFwYzNOcGIyNU9ZVzFsSUNBZ0lDQWdJQ0FnSUNBZ1RtRnRaU0J2WmlCMGFHVWdjR1Z5YldsemMybHZiaTRnUUhObFpTQm9kSFJ3Y3pvdkwzY3pZeTVuYVhSb2RXSXVhVzh2Y0dWeWJXbHpjMmx2Ym5NdkkyVnVkVzFrWldZdGNHVnliV2x6YzJsdmJtNWhiV1ZjYmlBcUlFQndZWEpoYlNCdFpXUnBZVk4wY21WaGJVTnZibk4wY21GcGJuUnpJQ0FnSUVOdmJuTjBjbUZwYm5SeklHOWlhbVZqZEM0Z1FITmxaU0JvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5bGJpMVZVeTlrYjJOekwxZGxZaTlCVUVrdlRXVmthV0ZUZEhKbFlXMURiMjV6ZEhKaGFXNTBjMXh1SUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJWOVhHNGdLaTljYm1WNGNHOXlkQ0JrWldaaGRXeDBJR0Z6ZVc1aklDaHdaWEp0YVhOemFXOXVUbUZ0WlN3Z2JXVmthV0ZUZEhKbFlXMURiMjV6ZEhKaGFXNTBjeWtnUFQ0Z2UxeHVYSFJ5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWVhONWJtTWdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dVhIUmNkR2xtSUNnaGJtRjJhV2RoZEc5eUxtMWxaR2xoUkdWMmFXTmxjeWtnZTF4dVhIUmNkRngwY21WcVpXTjBLRzVsZHlCRVQwMUZlR05sY0hScGIyNG9KMDFsWkdsaFJHVjJhV05sY3lCdWIzUWdjM1Z3Y0c5eWRHVmtKeXdnSjA1UFZGOUdUMVZPUkY5RlVsSW5LU2xjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGRISjVJSHRjYmx4MFhIUmNkRngwWTI5dWMzUWdXeXdnYzNSeVpXRnRYU0E5SUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z0Y2JseDBYSFJjZEZ4MFhIUmhkMkZwZENCblpYUlFaWEp0YVhOemFXOXVLSEJsY20xcGMzTnBiMjVPWVcxbEtTeGNibHgwWEhSY2RGeDBYSFJoZDJGcGRDQnVZWFpwWjJGMGIzSXViV1ZrYVdGRVpYWnBZMlZ6TG1kbGRGVnpaWEpOWldScFlTaHRaV1JwWVZOMGNtVmhiVU52Ym5OMGNtRnBiblJ6S1N4Y2JseDBYSFJjZEZ4MFhTbGNibHgwWEhSY2RGeDBjbVZ6YjJ4MlpTaHpkSEpsWVcwcFhHNWNkRngwWEhSOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dVhIUmNkRngwWEhSeVpXcGxZM1FvWlhKeWIzSXBYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5S1Z4dWZWeHVJbDBzSW01aGJXVnpJanBiSW5CbGNtMXBjM05wYjI1T1lXMWxJaXdpVUhKdmJXbHpaU0lzSW5KbGMyOXNkbVVpTENKeVpXcGxZM1FpTENKdVlYWnBaMkYwYjNJaUxDSndaWEp0YVhOemFXOXVjeUlzSWtSUFRVVjRZMlZ3ZEdsdmJpSXNJbkYxWlhKNUlpd2libUZ0WlNJc0luQmxjbTFwYzNOcGIyNVRkR0YwZFhNaUxDSnZia05vWVc1blpTSXNJbVYyWlc1MElpd2ljbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaUlzSW5KbGMyOXNkbVZQY2xKbGFtVmpkRUpoYzJWa1QyNVRkR0YwWlNJc0luUmhjbWRsZENJc0luTjBZWFJsSWl3aVlXUmtSWFpsYm5STWFYTjBaVzVsY2lJc0ltMWxaR2xoVTNSeVpXRnRRMjl1YzNSeVlXbHVkSE1pTENKdFpXUnBZVVJsZG1salpYTWlMQ0puWlhSUVpYSnRhWE56YVc5dUlpd2laMlYwVlhObGNrMWxaR2xoSWl3aVlXeHNJaXdpYzNSeVpXRnRJbDBzSW0xaGNIQnBibWR6SWpvaWJYZERRVXRCTEd0RVFVRmxMRmRCUVU5QkxEUkhRVU5rTEVsQlFVbERMRzlFUVVGUkxGZEJRVTlETEVWQlFWTkRMRGhHUVVNM1FrTXNWVUZCVlVNc05FSkJRMlJHTEVWQlFVOHNTVUZCU1Vjc1lVRkJZU3cwUWtGQk5rSXNhMFZCUjNKQ1JpeFZRVUZWUXl4WlFVRlpSU3hOUVVGTkxFTkJRVVZETEV0QlFVMVNMRmRCUVRkRVV5eFRRVU5CUXl4RlFVRlhMRk5CUVZoQkxFVkJRVmxETEVkQlEycENSaXhGUVVGcFFrY3NiMEpCUVc5Q0xGTkJRVlZHTEVkQlF5OURSeXhGUVVFMFFrWXNSVUZCVFVjc1QwRkJUME1zVFVGQlQySXNSVUZCVTBNc1NVRkZNVVJOTEVWQlFXbENUeXhwUWtGQmFVSXNVMEZCVlU0c1IwRkROVU5ITEVWQlFUUkNTaXhGUVVGcFFrMHNUVUZCVDJJc1JVRkJVME1zY1VSQlJUZEVRU3cyVGtGTlJWVXNSVUZCT0VJc1UwRkJRMFVzUlVGQlQySXNSVUZCVTBNc1ZVRkROVU5aTEU5QlEwWXNVMEZEU2xvc1JVRkJUeXhKUVVGSlJ5eGhRVUZoTEc5Q1FVRnhRaXhyUTBGSE4wTktMRVZCUVZGaExHMUVRM1pDU1N4WFFVRlBaaXhGUVVGblFtbENMRFJIUVVNNVFpeEpRVUZKYUVJc2IwUkJRVkVzVjBGQlQwTXNSVUZCVTBNc1owZEJRemRDUXl4VlFVRlZZeXcyUWtGRFpHWXNSVUZCVHl4SlFVRkpSeXhoUVVGaExEWkNRVUU0UWl3NFJFRkhOVUpNTEdsQ1FVTnNRbXRDTEVWQlFXTnVRaXgxUTBGRFpFa3NWVUZCVldNc1lVRkJZVVVzWVVGQllVZ3NPRVJCUmxaSkxEaERRVUY0UWtNc1QwRkpWSEJDTEVWQlFWRnZRaXh4UkVGRlVtNUNJbjA9XG4iLCJpbXBvcnQgeyBnZXRVc2VyTWVkaWFTdHJlYW0gfSBmcm9tICdAdW50ZW1wcy91c2VyLXBlcm1pc3Npb25zLXV0aWxzJ1xuXG5jbGFzcyBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIge1xuXHRzdGF0aWMgZGVmYXVsdE9wdGlvbnMgPSB7XG5cdFx0Z3JhbW1hcnM6IG51bGwsXG5cdFx0bGFuZzogJ2VuLVVTJyxcblx0XHRjb250aW51b3VzOiBmYWxzZSxcblx0XHRpbnRlcmltUmVzdWx0czogZmFsc2UsXG5cdFx0bWF4QWx0ZXJuYXRpdmVzOiAxLFxuXHRcdHNlcnZpY2VVUkk6IG51bGwsXG5cdH1cblxuXHRzdGF0aWMgZXZlbnRUeXBlcyA9IHtcblx0XHRBVURJT19FTkQ6ICdhdWRpb2VuZCcsXG5cdFx0QVVESU9fU1RBUlQ6ICdhdWRpb3N0YXJ0Jyxcblx0XHRFTkQ6ICdlbmQnLFxuXHRcdEVSUk9SOiAnZXJyb3InLFxuXHRcdE5PX01BVENIOiAnbm9tYXRjaCcsXG5cdFx0UkVTVUxUOiAncmVzdWx0Jyxcblx0XHRTT1VORF9FTkQ6ICdzb3VuZGVuZCcsXG5cdFx0U09VTkRfU1RBUlQ6ICdzb3VuZHN0YXJ0Jyxcblx0XHRTUEVFQ0hfRU5EOiAnc3BlZWNoZW5kJyxcblx0XHRTUEVFQ0hfU1RBUlQ6ICdzcGVlY2hzdGFydCcsXG5cdFx0U1RBUlQ6ICdzdGFydCcsXG5cdH1cblxuXHRzdGF0aWMgZ2V0IGlzU3VwcG9ydGVkKCkge1xuXHRcdHJldHVybiAhIVNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKClcblx0fVxuXG5cdHN0YXRpYyBzZXQgaXNTdXBwb3J0ZWQoXykge1xuXHRcdHRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCBzZXQgaXNTdXBwb3J0ZWQgZGlyZWN0bHkuJylcblx0fVxuXG5cdF9pbnN0YW5jZSA9IG51bGxcblx0X2xpc3RlbmVycyA9IG51bGxcblxuXHRjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG5cdFx0Y29uc3QgU3BlZWNoUmVjb2duaXRpb24gPSBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbigpIHx8IHt9XG5cdFx0dGhpcy5faW5zdGFuY2UgPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKVxuXHRcdHRoaXMuX2xpc3RlbmVycyA9IHt9XG5cblx0XHRPYmplY3QuZW50cmllcyh7XG5cdFx0XHQuLi5TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuZGVmYXVsdE9wdGlvbnMsXG5cdFx0XHQuLi4ob3B0aW9ucyB8fCB7fSksXG5cdFx0fSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRpZiAoa2V5ID09PSAnZ3JhbW1hcnMnICYmICF2YWx1ZSkge1xuXHRcdFx0XHRjb25zdCBTcGVlY2hHcmFtbWFyTGlzdCA9IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaEdyYW1tYXJMaXN0KCkgfHwge31cblx0XHRcdFx0dmFsdWUgPSBuZXcgU3BlZWNoR3JhbW1hckxpc3QoKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5zdGFuY2Vba2V5XSA9IHZhbHVlXG5cdFx0fSlcblx0fVxuXG5cdGdldCBpbnN0YW5jZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5faW5zdGFuY2Vcblx0fVxuXG5cdHNldCBpbnN0YW5jZShfKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBpbnN0YW5jZSBkaXJlY3RseS4nKVxuXHR9XG5cblx0YXN5bmMgc3RhcnQoKSB7XG5cdFx0aWYgKCEhdGhpcy5faW5zdGFuY2UpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHN0cmVhbSA9IGF3YWl0IGdldFVzZXJNZWRpYVN0cmVhbSgnbWljcm9waG9uZScsIHsgYXVkaW86IHRydWUgfSlcblx0XHRcdFx0aWYgKCFzdHJlYW0pIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXRyaWV2ZSB0aGUgc3RyZWFtIGZyb20gbWVkaWEgZGV2aWNlJylcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9pbnN0YW5jZS5zdGFydCgpXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRjb25zdCBlcnJvckhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnMuZXJyb3Jcblx0XHRcdFx0aWYgKCEhZXJyb3JIYW5kbGVyKSB7XG5cdFx0XHRcdFx0ZXJyb3JIYW5kbGVyKGVycm9yKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdHN0b3AoKSB7XG5cdFx0aWYgKCEhdGhpcy5faW5zdGFuY2UpIHtcblx0XHRcdHRoaXMuX2luc3RhbmNlLnN0b3AoKVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRhYm9ydCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dGhpcy5faW5zdGFuY2UuYWJvcnQoKVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbmNsdWRlc0V2ZW50VHlwZShldmVudFR5cGUpKSB7XG5cdFx0XHRpZiAoISF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBoYW5kbGVyID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGxldCBhZGRpdGlvbmFsQXJncyA9IFtdXG5cdFx0XHRcdGlmIChldmVudFR5cGUgPT09IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5ldmVudFR5cGVzLlJFU1VMVCkge1xuXHRcdFx0XHRcdGlmICghIWV2ZW50LnJlc3VsdHMgJiYgZXZlbnQucmVzdWx0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhZGRpdGlvbmFsQXJncy5wdXNoKGV2ZW50LnJlc3VsdHNbMF1bMF0udHJhbnNjcmlwdClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQhIWNhbGxiYWNrICYmIGNhbGxiYWNrLmFwcGx5KHRoaXMsIFsuLi5hZGRpdGlvbmFsQXJncywgZXZlbnRdKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cblx0XHRcdHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdID0gaGFuZGxlclxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSkge1xuXHRcdGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXVxuXHRcdHRoaXMuX2luc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyKVxuXG5cdFx0ZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdXG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0Y2xlYW51cCgpIHtcblx0XHR0aGlzLnN0b3AoKVxuXG5cdFx0T2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKS5mb3JFYWNoKChrZXkpID0+IHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihrZXkpKVxuXHRcdHRoaXMuX2luc3RhbmNlID0gbnVsbFxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdF9pbmNsdWRlc0V2ZW50VHlwZShldmVudFR5cGUpIHtcblx0XHRyZXR1cm4gISFPYmplY3QudmFsdWVzKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5ldmVudFR5cGVzKS5maW5kKCh0eXBlKSA9PiB0eXBlID09PSBldmVudFR5cGUpXG5cdH1cblxuXHRzdGF0aWMgX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbigpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0d2luZG93LlNwZWVjaFJlY29nbml0aW9uIHx8XG5cdFx0XHR3aW5kb3cud2Via2l0U3BlZWNoUmVjb2duaXRpb24gfHxcblx0XHRcdHdpbmRvdy5tb3pTcGVlY2hSZWNvZ25pdGlvbiB8fFxuXHRcdFx0d2luZG93Lm1zU3BlZWNoUmVjb2duaXRpb25cblx0XHQpXG5cdH1cblxuXHRzdGF0aWMgX3Jlc29sdmVTcGVlY2hHcmFtbWFyTGlzdCgpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0d2luZG93LlNwZWVjaEdyYW1tYXJMaXN0IHx8XG5cdFx0XHR3aW5kb3cud2Via2l0U3BlZWNoR3JhbW1hckxpc3QgfHxcblx0XHRcdHdpbmRvdy5tb3pTcGVlY2hHcmFtbWFyTGlzdCB8fFxuXHRcdFx0d2luZG93Lm1zU3BlZWNoR3JhbW1hckxpc3Rcblx0XHQpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyXG4iLCJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciBmcm9tICcuLi9jb3JlL1NwZWVjaFJlY29nbml0aW9uV3JhcHBlcidcblxuY29uc3QgdXNlVm9jYWwgPSAobGFuZyA9ICdlbi1VUycsIGdyYW1tYXJzID0gbnVsbCwgX19yc0luc3RhbmNlID0gbnVsbCkgPT4ge1xuXHRjb25zdCByZWYgPSB1c2VSZWYobnVsbClcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWQpIHtcblx0XHRcdHJlZi5jdXJyZW50ID0gX19yc0luc3RhbmNlIHx8IG5ldyBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIoeyBsYW5nLCBncmFtbWFycyB9KVxuXHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0cmVmLmN1cnJlbnQuYWJvcnQoKVxuXHRcdFx0XHRyZWYuY3VycmVudC5jbGVhbnVwKClcblx0XHRcdH1cblx0XHR9XG5cdH0sIFtsYW5nLCBncmFtbWFycywgX19yc0luc3RhbmNlXSlcblxuXHRjb25zdCBzdGFydCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnN0YXJ0KClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IHN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5zdG9wKClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IGFib3J0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuYWJvcnQoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3Qgc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGV2ZW50VHlwZSwgaGFuZGxlcikgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCB1bnN1YnNjcmliZSA9IHVzZUNhbGxiYWNrKChldmVudFR5cGUsIGhhbmRsZXIpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3QgY2xlYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5jbGVhbnVwKClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdHJldHVybiBbcmVmLCB7IHN0YXJ0LCBzdG9wLCBhYm9ydCwgc3Vic2NyaWJlLCB1bnN1YnNjcmliZSwgY2xlYW4gfV1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlVm9jYWxcblxuLy8gVE9ETzogUmV0dXJuIHRoZSBpbnN0YW5jZSwgbm90IHRoZSByZWZcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcblxuY29uc3QgSWNvbiA9ICh7IGNvbG9yLCBhY3RpdmVDb2xvciwgaXNBY3RpdmUgfSkgPT4ge1xuXHRyZXR1cm4gKFxuXHRcdDxzdmdcblx0XHRcdGRhdGEtdGVzdGlkPVwiX19pY29uLXJvb3RfX1wiXG5cdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRoZWlnaHQ9XCIxMDAlXCJcblx0XHRcdHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuXHRcdD5cblx0XHRcdDxnPlxuXHRcdFx0XHQ8cGF0aFxuXHRcdFx0XHRcdGRhdGEtdGVzdGlkPVwiX19pY29uLXBhdGhfX1wiXG5cdFx0XHRcdFx0ZmlsbD17Y29sb3J9XG5cdFx0XHRcdFx0ZD1cIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0e2lzQWN0aXZlICYmIDxjaXJjbGUgZGF0YS10ZXN0aWQ9XCJfX2ljb24tYWN0aXZlX19cIiBmaWxsPXthY3RpdmVDb2xvcn0gY3g9XCIxNlwiIGN5PVwiNFwiIHI9XCI0XCIgLz59XG5cdFx0XHQ8L2c+XG5cdFx0PC9zdmc+XG5cdClcbn1cblxuSWNvbi5wcm9wVHlwZXMgPSB7XG5cdGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRhY3RpdmVDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcblx0aXNBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxufVxuXG5JY29uLmRlZmF1bHRQcm9wcyA9IHtcblx0Y29sb3I6ICdibGFjaycsXG5cdGFjdGl2ZUNvbG9yOiAncmVkJyxcblx0aXNBY3RpdmU6IGZhbHNlLFxufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uXG4iLCJpbXBvcnQgUmVhY3QsIHsgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4uL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyJ1xuXG5pbXBvcnQgaXNGdW5jIGZyb20gJy4uL3V0aWxzL2lzRnVuYydcblxuaW1wb3J0IHVzZVZvY2FsIGZyb20gJy4uL2hvb2tzL3VzZVZvY2FsJ1xuaW1wb3J0IHVzZVRpbWVvdXQgZnJvbSAnLi4vaG9va3MvdXNlVGltZW91dCdcblxuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJ1xuXG5jb25zdCBWb2NhbCA9ICh7XG5cdGNoaWxkcmVuLFxuXHRsYW5nLFxuXHRncmFtbWFycyxcblx0dGltZW91dCxcblx0YXJpYUxhYmVsLFxuXHRzdHlsZSxcblx0Y2xhc3NOYW1lLFxuXHRvdXRsaW5lU3R5bGUsXG5cdG9uU3RhcnQsXG5cdG9uRW5kLFxuXHRvblNwZWVjaFN0YXJ0LFxuXHRvblNwZWVjaEVuZCxcblx0b25SZXN1bHQsXG5cdG9uRXJyb3IsXG5cdG9uTm9NYXRjaCxcblx0X19yc0luc3RhbmNlLFxufSkgPT4ge1xuXHRjb25zdCBidXR0b25SZWYgPSB1c2VSZWYobnVsbClcblx0Y29uc3QgW2lzTGlzdGVuaW5nLCBzZXRJc0xpc3RlbmluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuXHRjb25zdCBbLCB7IHN0YXJ0LCBzdG9wLCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH1dID0gdXNlVm9jYWwobGFuZywgZ3JhbW1hcnMsIF9fcnNJbnN0YW5jZSlcblxuXHRjb25zdCBfb25FbmQgPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdHVuc3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdHVuc3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHR1bnN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdHVuc3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdHVuc3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdCEhb25FbmQgJiYgb25FbmQoZSlcblx0fVxuXG5cdGNvbnN0IFtzdGFydFRpbWVyLCBzdG9wVGltZXJdID0gdXNlVGltZW91dChfb25FbmQsIHRpbWVvdXQpXG5cblx0Y29uc3Qgc3RhcnRSZWNvZ25pdGlvbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0c2V0SXNMaXN0ZW5pbmcodHJ1ZSlcblxuXHRcdFx0c3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdFx0c3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHRcdHN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdFx0c3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdFx0c3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdFx0c3RhcnQoKVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRfb25FcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjb25zdCBzdG9wUmVjb2duaXRpb24gPSAoKSA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdHNldElzTGlzdGVuaW5nKGZhbHNlKVxuXG5cdFx0XHRzdG9wKClcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0ISFvbkVycm9yICYmIG9uRXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgX29uQ2xpY2sgPSAoKSA9PiB7XG5cdFx0c3RhcnRSZWNvZ25pdGlvbigpXG5cdH1cblxuXHRjb25zdCBfb25Gb2N1cyA9ICgpID0+IHtcblx0XHRpZiAoIWNsYXNzTmFtZSAmJiBvdXRsaW5lU3R5bGUpIHtcblx0XHRcdGJ1dHRvblJlZi5jdXJyZW50LnN0eWxlLm91dGxpbmUgPSBvdXRsaW5lU3R5bGVcblx0XHR9XG5cdH1cblxuXHRjb25zdCBfb25CbHVyID0gKCkgPT4ge1xuXHRcdGlmICghY2xhc3NOYW1lICYmIG91dGxpbmVTdHlsZSkge1xuXHRcdFx0YnV0dG9uUmVmLmN1cnJlbnQuc3R5bGUub3V0bGluZSA9ICdub25lJ1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IF9vblN0YXJ0ID0gKGUpID0+IHtcblx0XHRzdGFydFRpbWVyKClcblxuXHRcdCEhb25TdGFydCAmJiBvblN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hTdGFydCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblxuXHRcdCEhb25TcGVlY2hTdGFydCAmJiBvblNwZWVjaFN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hFbmQgPSAoZSkgPT4ge1xuXHRcdHN0YXJ0VGltZXIoKVxuXG5cdFx0ISFvblNwZWVjaEVuZCAmJiBvblNwZWVjaEVuZChlKVxuXHR9XG5cblx0Y29uc3QgX29uUmVzdWx0ID0gKHJlc3VsdCwgZXZlbnQpID0+IHtcblx0XHRzdG9wVGltZXIoKVxuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHQhIW9uUmVzdWx0ICYmIG9uUmVzdWx0KHJlc3VsdCwgZXZlbnQpXG5cdH1cblxuXHRjb25zdCBfb25FcnJvciA9IChlcnJvcikgPT4ge1xuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHQhIW9uRXJyb3IgJiYgb25FcnJvcihlcnJvcilcblx0fVxuXG5cdGNvbnN0IF9vbk5vTWF0Y2ggPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25Ob01hdGNoICYmIG9uTm9NYXRjaChlKVxuXHR9XG5cblx0Y29uc3QgX3JlbmRlckRlZmF1bHQgPSAoKSA9PiAoXG5cdFx0PGJ1dHRvblxuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX3ZvY2FsLXJvb3RfX1wiXG5cdFx0XHRyZWY9e2J1dHRvblJlZn1cblx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0YXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuXHRcdFx0c3R5bGU9e1xuXHRcdFx0XHRjbGFzc05hbWVcblx0XHRcdFx0XHQ/IG51bGxcblx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDI0LFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDI0LFxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRjdXJzb3I6ICFpc0xpc3RlbmluZyA/ICdwb2ludGVyJyA6ICdkZWZhdWx0Jyxcblx0XHRcdFx0XHRcdFx0Li4uc3R5bGUsXG5cdFx0XHRcdFx0ICB9XG5cdFx0XHR9XG5cdFx0XHRjbGFzc05hbWU9e2NsYXNzTmFtZX1cblx0XHRcdG9uRm9jdXM9e19vbkZvY3VzfVxuXHRcdFx0b25CbHVyPXtfb25CbHVyfVxuXHRcdFx0b25DbGljaz17X29uQ2xpY2t9XG5cdFx0PlxuXHRcdFx0PEljb24gaXNBY3RpdmU9e2lzTGlzdGVuaW5nfSBpY29uQ29sb3I9XCIjYWFhXCIgLz5cblx0XHQ8L2J1dHRvbj5cblx0KVxuXG5cdGNvbnN0IF9yZW5kZXJDaGlsZHJlbiA9IChjaGlsZHJlbikgPT4ge1xuXHRcdGlmIChTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWQpIHtcblx0XHRcdGlmIChpc0Z1bmMoY2hpbGRyZW4pKSB7XG5cdFx0XHRcdHJldHVybiBjaGlsZHJlbihzdGFydFJlY29nbml0aW9uLCBzdG9wUmVjb2duaXRpb24sIGlzTGlzdGVuaW5nKVxuXHRcdFx0fSBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcblx0XHRcdFx0cmV0dXJuIGNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuXHRcdFx0XHRcdC4uLighaXNMaXN0ZW5pbmcgJiYgeyBvbkNsaWNrOiBfb25DbGljayB9KSxcblx0XHRcdFx0fSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBfcmVuZGVyRGVmYXVsdCgpXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsXG5cdH1cblxuXHRyZXR1cm4gX3JlbmRlckNoaWxkcmVuKGNoaWxkcmVuKVxufVxuXG5Wb2NhbC5wcm9wVHlwZXMgPSB7XG5cdC8qKiBEZWZpbmVzIHRoZSBsYW5ndWFnZSB1bmRlcnN0b29kIGJ5IHRoZSByZWNvZ25pdGlvbiAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFJlY29nbml0aW9uL2xhbmcpICovXG5cdGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBncmFtbWFycyB1bmRlcnN0b29kIGJ5IHRoZSByZWNvZ25pdGlvbiAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFJlY29nbml0aW9uL2dyYW1tYXJzKSAqL1xuXHRncmFtbWFyczogUHJvcFR5cGVzLm9iamVjdCxcblx0LyoqIERlZmluZXMgdGhlIHRpbWUgaW4gbXMgdG8gd2FpdCBiZWZvcmUgZGlzY2FyZGluZyB0aGUgcmVjb2duaXRpb24gKi9cblx0dGltZW91dDogUHJvcFR5cGVzLm51bWJlcixcblx0LyoqIERlZmluZXMgdGhlIGExMXkgbGFiZWwgZm9yIHRoZSBkZWZhdWx0IGJ1dHRvbiAqL1xuXHRhcmlhTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBzdHlsZXMgb2YgdGhlIGRlZmF1bHQgZWxlbWVudCBpZiBjbGFzc05hbWUgaXMgbm90IHNwZWNpZmllZCAqL1xuXHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblx0LyoqIERlZmluZXMgdGhlIGNsYXNzIG9mIHRoZSBkZWZhdWx0IGVsZW1lbnQgKi9cblx0Y2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHQvKiogRGVmaW5lcyB0aGUgZGVmYXVsdCBzdHlsZSBvZiB0aGUgZm9jdXMgb3V0bGluZS4gaWYgbnVsbCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdXNlZCAqL1xuXHRvdXRsaW5lU3R5bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSByZWNvZ25pdGlvbiBzdGFydHMgKi9cblx0b25TdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSByZWNvZ25pdGlvbiBlbmRzICovXG5cdG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCBzdGFydHMgKi9cblx0b25TcGVlY2hTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggZW5kcyAqL1xuXHRvblNwZWVjaEVuZDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIGEgcmVzdWx0IGlzIHJldHVybmVkIGZyb20gdGUgcmVjb2duaXRpb24gKi9cblx0b25SZXN1bHQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgKi9cblx0b25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIG5vIHJlc3VsdCBjYW4gYmUgcmVjb2duaXplZCAqL1xuXHRvbk5vTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5Wb2NhbC5kZWZhdWx0UHJvcHMgPSB7XG5cdGxhbmc6ICdlbi1VUycsXG5cdGdyYW1tYXJzOiBudWxsLFxuXHR0aW1lb3V0OiAzMDAwLFxuXHRhcmlhTGFiZWw6ICdzdGFydCByZWNvZ25pdGlvbicsXG5cdHN0eWxlOiBudWxsLFxuXHRjbGFzc05hbWU6IG51bGwsXG5cdG91dGxpbmVTdHlsZTogJzJweCBzb2xpZCcsXG5cdG9uU3RhcnQ6IG51bGwsXG5cdG9uRW5kOiBudWxsLFxuXHRvblNwZWVjaFN0YXJ0OiBudWxsLFxuXHRvblNwZWVjaEVuZDogbnVsbCxcblx0b25SZXN1bHQ6IG51bGwsXG5cdG9uRXJyb3I6IG51bGwsXG5cdG9uTm9NYXRjaDogbnVsbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgVm9jYWxcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuXG5jb25zdCB1c2VUaW1lb3V0ID0gKGhhbmRsZXIsIHRpbWVvdXQgPSAwKSA9PiB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZigtMSlcblxuXHRjb25zdCBzdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGNsZWFyVGltZW91dChyZWYuY3VycmVudClcblx0XHRyZWYuY3VycmVudCA9IC0xXG5cdH0sIFtdKVxuXG5cdGNvbnN0IHN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdHN0b3AoKVxuXHRcdHJlZi5jdXJyZW50ID0gc2V0VGltZW91dChoYW5kbGVyLCB0aW1lb3V0KVxuXHR9LCBbaGFuZGxlciwgdGltZW91dCwgc3RvcF0pXG5cblx0dXNlRWZmZWN0KCgpID0+IHN0b3AsIFtzdG9wXSlcblxuXHRyZXR1cm4gW3N0YXJ0LCBzdG9wXVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VUaW1lb3V0XG5cbi8vIFRPRE86IFJldHVybiBhIHByb21pc2VcbiIsImV4cG9ydCBkZWZhdWx0ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiIsImltcG9ydCBWb2NhbCBmcm9tICcuL2NvbXBvbmVudHMvVm9jYWwnXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4vY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXInXG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlVm9jYWwgfSBmcm9tICcuL2hvb2tzL3VzZVZvY2FsJ1xuZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkID0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmlzU3VwcG9ydGVkXG5cbmV4cG9ydCBkZWZhdWx0IFZvY2FsXG4iXSwibmFtZXMiOlsiZSIsInIiLCJ0IiwibiIsImEiLCJpIiwibyIsInUiLCJjIiwidmFsdWUiLCJkb25lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwidGhpcyIsImFyZ3VtZW50cyIsImFwcGx5IiwiQXJyYXkiLCJpc0FycmF5IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJPYmplY3QiLCJuZXh0IiwicHVzaCIsImxlbmd0aCIsInJldHVybiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJUeXBlRXJyb3IiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwid3JhcCIsInByZXYiLCJhYnJ1cHQiLCJuYXZpZ2F0b3IiLCJwZXJtaXNzaW9ucyIsIkRPTUV4Y2VwdGlvbiIsInF1ZXJ5Iiwic2VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0YXJnZXQiLCJzdGF0ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0MCIsImNhdGNoIiwic3RvcCIsInMiLCJtZWRpYURldmljZXMiLCJ0MSIsImdldFVzZXJNZWRpYSIsInQyIiwidDMiLCJhbGwiLCJ0NCIsIlNwZWVjaFJlY29nbml0aW9uV3JhcHBlciIsIm9wdGlvbnMiLCJTcGVlY2hSZWNvZ25pdGlvbiIsIl9yZXNvbHZlU3BlZWNoUmVjb2duaXRpb24iLCJfaW5zdGFuY2UiLCJfbGlzdGVuZXJzIiwiZW50cmllcyIsImRlZmF1bHRPcHRpb25zIiwiZm9yRWFjaCIsImtleSIsIl9yZXNvbHZlU3BlZWNoR3JhbW1hckxpc3QiLCJfdGhpcyIsIl8iLCJFcnJvciIsImdldFVzZXJNZWRpYVN0cmVhbSIsImF1ZGlvIiwic3RhcnQiLCJlcnJvckhhbmRsZXIiLCJlcnJvciIsImFib3J0IiwiZXZlbnRUeXBlIiwiY2FsbGJhY2siLCJfaW5jbHVkZXNFdmVudFR5cGUiLCJoYW5kbGVyIiwiZXZlbnQiLCJhZGRpdGlvbmFsQXJncyIsImV2ZW50VHlwZXMiLCJSRVNVTFQiLCJyZXN1bHRzIiwidHJhbnNjcmlwdCIsIl90aGlzMiIsImtleXMiLCJfdGhpczMiLCJ2YWx1ZXMiLCJmaW5kIiwidHlwZSIsIndpbmRvdyIsIndlYmtpdFNwZWVjaFJlY29nbml0aW9uIiwibW96U3BlZWNoUmVjb2duaXRpb24iLCJtc1NwZWVjaFJlY29nbml0aW9uIiwiU3BlZWNoR3JhbW1hckxpc3QiLCJ3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCIsIm1velNwZWVjaEdyYW1tYXJMaXN0IiwibXNTcGVlY2hHcmFtbWFyTGlzdCIsImdyYW1tYXJzIiwibGFuZyIsImNvbnRpbnVvdXMiLCJpbnRlcmltUmVzdWx0cyIsIm1heEFsdGVybmF0aXZlcyIsInNlcnZpY2VVUkkiLCJBVURJT19FTkQiLCJBVURJT19TVEFSVCIsIkVORCIsIkVSUk9SIiwiTk9fTUFUQ0giLCJTT1VORF9FTkQiLCJTT1VORF9TVEFSVCIsIlNQRUVDSF9FTkQiLCJTUEVFQ0hfU1RBUlQiLCJTVEFSVCIsInVzZVZvY2FsIiwiX19yc0luc3RhbmNlIiwicmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiaXNTdXBwb3J0ZWQiLCJjdXJyZW50IiwiY2xlYW51cCIsInVzZUNhbGxiYWNrIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJjbGVhbiIsIkljb24iLCJjb2xvciIsImFjdGl2ZUNvbG9yIiwiaXNBY3RpdmUiLCJSZWFjdCIsInhtbG5zIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsImQiLCJjeCIsImN5IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsIlZvY2FsIiwiY2hpbGRyZW4iLCJ0aW1lb3V0IiwiYXJpYUxhYmVsIiwic3R5bGUiLCJjbGFzc05hbWUiLCJvdXRsaW5lU3R5bGUiLCJvblN0YXJ0Iiwib25FbmQiLCJvblNwZWVjaFN0YXJ0Iiwib25TcGVlY2hFbmQiLCJvblJlc3VsdCIsIm9uRXJyb3IiLCJvbk5vTWF0Y2giLCJidXR0b25SZWYiLCJ1c2VTdGF0ZSIsImlzTGlzdGVuaW5nIiwic2V0SXNMaXN0ZW5pbmciLCJfb25FbmQiLCJzdG9wVGltZXIiLCJzdG9wUmVjb2duaXRpb24iLCJfb25TdGFydCIsIl9vblNwZWVjaFN0YXJ0IiwiX29uU3BlZWNoRW5kIiwiX29uUmVzdWx0IiwiX29uRXJyb3IiLCJfb25Ob01hdGNoIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInVzZVRpbWVvdXQiLCJzdGFydFRpbWVyIiwic3RhcnRSZWNvZ25pdGlvbiIsIl9vbkNsaWNrIiwiX29uRm9jdXMiLCJvdXRsaW5lIiwiX29uQmx1ciIsInJlc3VsdCIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50Iiwib25DbGljayIsInJvbGUiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyIiwicGFkZGluZyIsImN1cnNvciIsIm9uRm9jdXMiLCJvbkJsdXIiLCJpY29uQ29sb3IiLCJfcmVuZGVyQ2hpbGRyZW4iLCJvYmplY3QiLCJudW1iZXIiLCJmdW5jIl0sIm1hcHBpbmdzIjoic3hFQUFBLFNBQVNBLEVBQUVBLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVD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 | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["exports","react","prop-types"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["react-vocal"]={},e.React,e.PropTypes)}(this,(function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(t),i=r(n);function a(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){h(i,r,o,a,u,"next",e)}function u(e){h(i,r,o,a,u,"throw",e)}a(void 0)}))}}function m(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=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}(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 y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var b=function(){var e=v(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(n,r){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.permissions){e.next=4;break}r(new DOMException("Permissions not supported","NOT_FOUND_ERR")),e.next=16;break;case 4:return e.prev=4,e.next=7,navigator.permissions.query({name:t});case 7:o=e.sent,i=function e(t){o.removeEventListener("change",e),g(t.target.state,n,r)},o.addEventListener("change",i),g(o.state,n,r),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(4),r(e.t0);case 16:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),g=function(e,t,n){switch(e){case"denied":n(new DOMException("Permission denied","NOT_ALLOWED_ERR"));break;default:t(e)}},w=function(){var e=v(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=v(regeneratorRuntime.mark((function e(r,o){var i,a,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.mediaDevices){e.next=4;break}o(new DOMException("MediaDevices not supported","NOT_FOUND_ERR")),e.next=24;break;case 4:return e.prev=4,e.t0=Promise,e.next=8,b(t);case 8:return e.t1=e.sent,e.next=11,navigator.mediaDevices.getUserMedia(n);case 11:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=15,e.t0.all.call(e.t0,e.t3);case 15:i=e.sent,a=m(i,2),u=a[1],r(u),e.next=24;break;case 21:e.prev=21,e.t4=e.catch(4),o(e.t4);case 24:case"end":return e.stop()}}),e,null,[[4,21]])})));return function(t,n){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),S=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),s(this,"_instance",null),s(this,"_listeners",null);var r=e._resolveSpeechRecognition()||{};this._instance=new r,this._listeners={},Object.entries(f(f({},e.defaultOptions),t||{})).forEach((function(t){var r=p(t,2),o=r[0],i=r[1];"grammars"!==o||i||(i=new(e._resolveSpeechGrammarList()||{}));n._instance[o]=i}))}var t,n;return c(e,null,[{key:"isSupported",get:function(){return!!e._resolveSpeechRecognition()},set:function(e){throw new Error("You cannot set isSupported directly.")}}]),c(e,[{key:"start",value:(t=regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._instance){e.next=14;break}return e.prev=1,e.next=4,w("microphone",{audio:!0});case 4:if(e.sent){e.next=7;break}throw new Error("Unable to retrieve the stream from media device");case 7:this._instance.start(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),(t=this._listeners.error)&&t(e.t0);case 14:return e.abrupt("return",this);case 15:case"end":return e.stop()}}),e,this,[[1,10]])})),n=function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function u(e){a(i,r,o,u,c,"next",e)}function c(e){a(i,r,o,u,c,"throw",e)}u(void 0)}))},function(){return n.apply(this,arguments)})},{key:"stop",value:function(){return this._instance&&this._instance.stop(),this}},{key:"abort",value:function(){return this._instance&&this._instance.abort(),this}},{key:"addEventListener",value:function(t,n){var r=this;if(this._instance&&this._includesEventType(t)){this._listeners[t]&&this.removeEventListener(t);var o=function(o){var i=[];t===e.eventTypes.RESULT&&o.results&&o.results.length>0&&i.push(o.results[0][0].transcript),n&&n.apply(r,[].concat(i,[o]))};this._instance.addEventListener(t,o),this._listeners[t]=o}return this}},{key:"removeEventListener",value:function(e){var t=this._listeners[e];return this._instance.removeEventListener(e,t),delete this._listeners[e],this}},{key:"cleanup",value:function(){var e=this;return this.stop(),Object.keys(this._listeners).forEach((function(t){return e.removeEventListener(t)})),this._instance=null,this}},{key:"_includesEventType",value:function(t){return!!Object.values(e.eventTypes).find((function(e){return e===t}))}},{key:"instance",get:function(){return this._instance},set:function(e){throw new Error("You cannot set instance directly.")}}],[{key:"_resolveSpeechRecognition",value:function(){return window.SpeechRecognition||window.webkitSpeechRecognition||window.mozSpeechRecognition||window.msSpeechRecognition}},{key:"_resolveSpeechGrammarList",value:function(){return window.SpeechGrammarList||window.webkitSpeechGrammarList||window.mozSpeechGrammarList||window.msSpeechGrammarList}}]),e}();s(S,"defaultOptions",{grammars:null,lang:"en-US",continuous:!1,interimResults:!1,maxAlternatives:1,serviceURI:null}),s(S,"eventTypes",{AUDIO_END:"audioend",AUDIO_START:"audiostart",END:"end",ERROR:"error",NO_MATCH:"nomatch",RESULT:"result",SOUND_END:"soundend",SOUND_START:"soundstart",SPEECH_END:"speechend",SPEECH_START:"speechstart",START:"start"});var _=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en-US",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=t.useRef(null);t.useEffect((function(){if(S.isSupported)return o.current=r||new S({lang:e,grammars:n}),function(){o.current.abort(),o.current.cleanup()}}),[e,n,r]);var i=t.useCallback((function(){o.current&&o.current.start()}),[]),a=t.useCallback((function(){o.current&&o.current.stop()}),[]),u=t.useCallback((function(){o.current&&o.current.abort()}),[]),c=t.useCallback((function(e,t){o.current&&o.current.addEventListener(e,t)}),[]),s=t.useCallback((function(e,t){o.current&&o.current.removeEventListener(e,t)}),[]),l=t.useCallback((function(){o.current&&o.current.cleanup()}),[]);return[o,{start:i,stop:a,abort:u,subscribe:c,unsubscribe:s,clean:l}]},E=function(e){var t=e.color,n=e.activeColor,r=e.isActive;return o.default.createElement("svg",{"data-testid":"__icon-root__",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 24 24"},o.default.createElement("g",null,o.default.createElement("path",{"data-testid":"__icon-path__",fill:t,d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"}),r&&o.default.createElement("circle",{"data-testid":"__icon-active__",fill:n,cx:"16",cy:"4",r:"4"})))};E.propTypes={color:i.default.string,activeColor:i.default.string,isActive:i.default.bool},E.defaultProps={color:"black",activeColor:"red",isActive:!1};var O=function(e){var n=e.children,r=e.lang,i=e.grammars,a=e.timeout,u=e.ariaLabel,c=e.style,s=e.className,l=e.outlineStyle,d=e.onStart,h=e.onEnd,v=e.onSpeechStart,m=e.onSpeechEnd,y=e.onResult,b=e.onError,g=e.onNoMatch,w=e.__rsInstance,O=t.useRef(null),k=p(t.useState(!1),2),R=k[0],x=k[1],j=p(_(r,i,w),2)[1],T=j.start,A=j.stop,P=j.subscribe,L=j.unsubscribe,D=function e(t){U(),I(),L("start",q),L("end",e),L("speechstart",F),L("speechend",V),L("result",B),L("error",Y),L("nomatch",$),h&&h(t)},C=p(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=t.useRef(-1),o=t.useCallback((function(){clearTimeout(r.current),r.current=-1}),[]),i=t.useCallback((function(){o(),r.current=setTimeout(e,n)}),[e,n,o]);return t.useEffect((function(){return o}),[o]),[i,o]}(D,a),2),N=C[0],U=C[1],M=function(){try{x(!0),P("start",q),P("end",D),P("speechstart",F),P("speechend",V),P("result",B),P("error",Y),P("nomatch",$),T()}catch(e){Y(e)}},I=function(){try{x(!1),A()}catch(e){b&&b(e)}},G=function(){M()},z=function(){!s&&l&&(O.current.style.outline=l)},H=function(){!s&&l&&(O.current.style.outline="none")},q=function(e){N(),d&&d(e)},F=function(e){U(),v&&v(e)},V=function(e){N(),m&&m(e)},B=function(e,t){U(),I(),y&&y(e,t)},Y=function(e){I(),b&&b(e)},$=function(e){U(),I(),g&&g(e)};return function(e){return S.isSupported?"function"==typeof e?e(M,I,R):t.isValidElement(e)?t.cloneElement(e,f({},!R&&{onClick:G})):o.default.createElement("button",{"data-testid":"__vocal-root__",ref:O,role:"button","aria-label":u,style:s?null:f({width:24,height:24,background:"none",border:"none",padding:0,cursor:R?"default":"pointer"},c),className:s,onFocus:z,onBlur:H,onClick:G},o.default.createElement(E,{isActive:R,iconColor:"#aaa"})):null}(n)};O.propTypes={lang:i.default.string,grammars:i.default.object,timeout:i.default.number,ariaLabel:i.default.string,style:i.default.object,className:i.default.string,outlineStyle:i.default.string,onStart:i.default.func,onEnd:i.default.func,onSpeechStart:i.default.func,onSpeechEnd:i.default.func,onResult:i.default.func,onError:i.default.func,onNoMatch:i.default.func},O.defaultProps={lang:"en-US",grammars:null,timeout:3e3,ariaLabel:"start recognition",style:null,className:null,outlineStyle:"2px solid",onStart:null,onEnd:null,onSpeechStart:null,onSpeechEnd:null,onResult:null,onError:null,onNoMatch:null};var k=S.isSupported;e.default=O,e.isSupported=k,e.useVocal=_,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudW1kLmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvQHVudGVtcHMvdXNlci1wZXJtaXNzaW9ucy11dGlscy9kaXN0L2luZGV4LmVzLmpzIiwiLi4vc3JjL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVZvY2FsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvSWNvbi5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1ZvY2FsLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVRpbWVvdXQuanMiLCIuLi9zcmMvdXRpbHMvaXNGdW5jLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGUoZSxyLHQsbixhLGksbyl7dHJ5e3ZhciB1PWVbaV0obyksYz11LnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHQoZSl9dS5kb25lP3IoYyk6UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obixhKX1mdW5jdGlvbiByKHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciBvPXIuYXBwbHkodCxuKTtmdW5jdGlvbiB1KHIpe2UobyxhLGksdSxjLFwibmV4dFwiLHIpfWZ1bmN0aW9uIGMocil7ZShvLGEsaSx1LGMsXCJ0aHJvd1wiLHIpfXUodm9pZCAwKX0pKX19ZnVuY3Rpb24gdChlLHIpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSxyKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgU3ltYm9sfHwhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpKXJldHVybjt2YXIgdD1bXSxuPSEwLGE9ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgbyx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0obz11Lm5leHQoKSkuZG9uZSkmJih0LnB1c2goby52YWx1ZSksIXJ8fHQubGVuZ3RoIT09cik7bj0hMCk7fWNhdGNoKGUpe2E9ITAsaT1lfWZpbmFsbHl7dHJ5e258fG51bGw9PXUucmV0dXJufHx1LnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1yZXR1cm4gdH0oZSxyKXx8ZnVuY3Rpb24oZSxyKXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG4oZSxyKTt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PXQmJmUuY29uc3RydWN0b3ImJih0PWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PXR8fFwiU2V0XCI9PT10KXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSlyZXR1cm4gbihlLHIpfShlLHIpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbihlLHIpeyhudWxsPT1yfHxyPmUubGVuZ3RoKSYmKHI9ZS5sZW5ndGgpO2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KHIpO3Q8cjt0Kyspblt0XT1lW3RdO3JldHVybiBufXZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0KXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGU9cihyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4pe3ZhciBhLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuYXZpZ2F0b3IucGVybWlzc2lvbnMpe2UubmV4dD00O2JyZWFrfW4obmV3IERPTUV4Y2VwdGlvbihcIlBlcm1pc3Npb25zIG5vdCBzdXBwb3J0ZWRcIixcIk5PVF9GT1VORF9FUlJcIikpLGUubmV4dD0xNjticmVhaztjYXNlIDQ6cmV0dXJuIGUucHJldj00LGUubmV4dD03LG5hdmlnYXRvci5wZXJtaXNzaW9ucy5xdWVyeSh7bmFtZTp0fSk7Y2FzZSA3OmE9ZS5zZW50LG89ZnVuY3Rpb24gZSh0KXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixlKSxpKHQudGFyZ2V0LnN0YXRlLHIsbil9LGEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLG8pLGkoYS5zdGF0ZSxyLG4pLGUubmV4dD0xNjticmVhaztjYXNlIDEzOmUucHJldj0xMyxlLnQwPWUuY2F0Y2goNCksbihlLnQwKTtjYXNlIDE2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s0LDEzXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24ocix0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksaT1mdW5jdGlvbihlLHIsdCl7c3dpdGNoKGUpe2Nhc2VcImRlbmllZFwiOnQobmV3IERPTUV4Y2VwdGlvbihcIlBlcm1pc3Npb24gZGVuaWVkXCIsXCJOT1RfQUxMT1dFRF9FUlJcIikpO2JyZWFrO2RlZmF1bHQ6cihlKX19LG89ZnVuY3Rpb24oKXt2YXIgZT1yKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKG4saSl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoXCJyZXR1cm5cIixuZXcgUHJvbWlzZShmdW5jdGlvbigpe3ZhciBlPXIocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixvKXt2YXIgdSxjLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKXtlLm5leHQ9NDticmVha31vKG5ldyBET01FeGNlcHRpb24oXCJNZWRpYURldmljZXMgbm90IHN1cHBvcnRlZFwiLFwiTk9UX0ZPVU5EX0VSUlwiKSksZS5uZXh0PTI0O2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5wcmV2PTQsZS50MD1Qcm9taXNlLGUubmV4dD04LGEobik7Y2FzZSA4OnJldHVybiBlLnQxPWUuc2VudCxlLm5leHQ9MTEsbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoaSk7Y2FzZSAxMTpyZXR1cm4gZS50Mj1lLnNlbnQsZS50Mz1bZS50MSxlLnQyXSxlLm5leHQ9MTUsZS50MC5hbGwuY2FsbChlLnQwLGUudDMpO2Nhc2UgMTU6dT1lLnNlbnQsYz10KHUsMikscz1jWzFdLHIocyksZS5uZXh0PTI0O2JyZWFrO2Nhc2UgMjE6ZS5wcmV2PTIxLGUudDQ9ZS5jYXRjaCg0KSxvKGUudDQpO2Nhc2UgMjQ6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzQsMjFdXSl9KSkpO3JldHVybiBmdW5jdGlvbihyLHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24ocix0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2V4cG9ydHthIGFzIGdldFBlcm1pc3Npb24sbyBhcyBnZXRVc2VyTWVkaWFTdHJlYW19O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndVpYTXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5blpYUlFaWEp0YVhOemFXOXVMbXB6SWl3aUxpNHZjM0pqTDJkbGRGVnpaWEpOWldScFlWTjBjbVZoYlM1cWN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRkpsZEhWeWJuTWdZU0J3Y205dGFYTmxJSEpsYzI5c2RtVmtJSGRvWlc0Z2RHaGxJSEJsY20xcGMzTnBiMjRnYVhNZ1ozSmhiblJsWkNCaWVTQjBhR1VnZFhObGNseHVJQ29nUUhCaGNtRnRJSEJsY20xcGMzTnBiMjVPWVcxbElDQWdJQ0FnSUNBZ0lDQWdUbUZ0WlNCdlppQjBhR1VnY0dWeWJXbHpjMmx2Ymk0Z1FITmxaU0JvZEhSd2N6b3ZMM2N6WXk1bmFYUm9kV0l1YVc4dmNHVnliV2x6YzJsdmJuTXZJMlZ1ZFcxa1pXWXRjR1Z5YldsemMybHZibTVoYldWY2JpQXFJRUJ5WlhSMWNtNXpJSHRRY205dGFYTmxmVnh1SUNvdlhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCaGMzbHVZeUFvY0dWeWJXbHpjMmx2Yms1aGJXVXBJRDArSUh0Y2JseDBjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR0Z6ZVc1aklDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmx4MFhIUnBaaUFvSVc1aGRtbG5ZWFJ2Y2k1d1pYSnRhWE56YVc5dWN5a2dlMXh1WEhSY2RGeDBjbVZxWldOMEtHNWxkeUJFVDAxRmVHTmxjSFJwYjI0b0oxQmxjbTFwYzNOcGIyNXpJRzV2ZENCemRYQndiM0owWldRbkxDQW5UazlVWDBaUFZVNUVYMFZTVWljcEtWeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFIwY25rZ2UxeHVYSFJjZEZ4MFhIUmpiMjV6ZENCd1pYSnRhWE56YVc5dVUzUmhkSFZ6SUQwZ1lYZGhhWFFnYm1GMmFXZGhkRzl5TG5CbGNtMXBjM05wYjI1ekxuRjFaWEo1S0hzZ2JtRnRaVG9nY0dWeWJXbHpjMmx2Yms1aGJXVWdmU2xjYmx4MFhIUmNkRngwWTI5dWMzUWdiMjVEYUdGdVoyVWdQU0FvWlhabGJuUXBJRDArSUh0Y2JseDBYSFJjZEZ4MFhIUndaWEp0YVhOemFXOXVVM1JoZEhWekxuSmxiVzkyWlVWMlpXNTBUR2x6ZEdWdVpYSW9KMk5vWVc1blpTY3NJRzl1UTJoaGJtZGxLVnh1WEhSY2RGeDBYSFJjZEhKbGMyOXNkbVZQY2xKbGFtVmpkRUpoYzJWa1QyNVRkR0YwWlNobGRtVnVkQzUwWVhKblpYUXVjM1JoZEdVc0lISmxjMjlzZG1Vc0lISmxhbVZqZENsY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUndaWEp0YVhOemFXOXVVM1JoZEhWekxtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0oyTm9ZVzVuWlNjc0lHOXVRMmhoYm1kbEtWeHVYSFJjZEZ4MFhIUnlaWE52YkhabFQzSlNaV3BsWTNSQ1lYTmxaRTl1VTNSaGRHVW9jR1Z5YldsemMybHZibE4wWVhSMWN5NXpkR0YwWlN3Z2NtVnpiMngyWlN3Z2NtVnFaV04wS1Z4dVhIUmNkRngwZlNCallYUmphQ0FvWlhKeWIzSXBJSHRjYmx4MFhIUmNkRngwY21WcVpXTjBLR1Z5Y205eUtWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmU2xjYm4xY2JseHVZMjl1YzNRZ2NtVnpiMngyWlU5eVVtVnFaV04wUW1GelpXUlBibE4wWVhSbElEMGdLSE4wWVhSbExDQnlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmx4MGMzZHBkR05vSUNoemRHRjBaU2tnZTF4dVhIUmNkR05oYzJVZ0oyUmxibWxsWkNjNlhHNWNkRngwWEhSeVpXcGxZM1FvYm1WM0lFUlBUVVY0WTJWd2RHbHZiaWduVUdWeWJXbHpjMmx2YmlCa1pXNXBaV1FuTENBblRrOVVYMEZNVEU5WFJVUmZSVkpTSnlrcFhHNWNkRngwWEhSaWNtVmhhMXh1WEhSY2RHUmxabUYxYkhRNlhHNWNkRngwWEhSeVpYTnZiSFpsS0hOMFlYUmxLVnh1WEhSOVhHNTlYRzRpTENKcGJYQnZjblFnWjJWMFVHVnliV2x6YzJsdmJpQm1jbTl0SUNjdUwyZGxkRkJsY20xcGMzTnBiMjRuWEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCaElIQnliMjFwYzJVZ2NtVnpiMngyWldRZ2QyaGxiaUIwYUdVZ2NHVnliV2x6YzJsdmJpQnBjeUJuY21GdWRHVmtJR0o1SUhSb1pTQjFjMlZ5SUdGdVpDQjBhR1VnYzNSeVpXRnRJR2x6SUhKbGRISnBaWFpsWkZ4dUlDb2dRSEJoY21GdElIQmxjbTFwYzNOcGIyNU9ZVzFsSUNBZ0lDQWdJQ0FnSUNBZ1RtRnRaU0J2WmlCMGFHVWdjR1Z5YldsemMybHZiaTRnUUhObFpTQm9kSFJ3Y3pvdkwzY3pZeTVuYVhSb2RXSXVhVzh2Y0dWeWJXbHpjMmx2Ym5NdkkyVnVkVzFrWldZdGNHVnliV2x6YzJsdmJtNWhiV1ZjYmlBcUlFQndZWEpoYlNCdFpXUnBZVk4wY21WaGJVTnZibk4wY21GcGJuUnpJQ0FnSUVOdmJuTjBjbUZwYm5SeklHOWlhbVZqZEM0Z1FITmxaU0JvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5bGJpMVZVeTlrYjJOekwxZGxZaTlCVUVrdlRXVmthV0ZUZEhKbFlXMURiMjV6ZEhKaGFXNTBjMXh1SUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJWOVhHNGdLaTljYm1WNGNHOXlkQ0JrWldaaGRXeDBJR0Z6ZVc1aklDaHdaWEp0YVhOemFXOXVUbUZ0WlN3Z2JXVmthV0ZUZEhKbFlXMURiMjV6ZEhKaGFXNTBjeWtnUFQ0Z2UxeHVYSFJ5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWVhONWJtTWdLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dVhIUmNkR2xtSUNnaGJtRjJhV2RoZEc5eUxtMWxaR2xoUkdWMmFXTmxjeWtnZTF4dVhIUmNkRngwY21WcVpXTjBLRzVsZHlCRVQwMUZlR05sY0hScGIyNG9KMDFsWkdsaFJHVjJhV05sY3lCdWIzUWdjM1Z3Y0c5eWRHVmtKeXdnSjA1UFZGOUdUMVZPUkY5RlVsSW5LU2xjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGRISjVJSHRjYmx4MFhIUmNkRngwWTI5dWMzUWdXeXdnYzNSeVpXRnRYU0E5SUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z0Y2JseDBYSFJjZEZ4MFhIUmhkMkZwZENCblpYUlFaWEp0YVhOemFXOXVLSEJsY20xcGMzTnBiMjVPWVcxbEtTeGNibHgwWEhSY2RGeDBYSFJoZDJGcGRDQnVZWFpwWjJGMGIzSXViV1ZrYVdGRVpYWnBZMlZ6TG1kbGRGVnpaWEpOWldScFlTaHRaV1JwWVZOMGNtVmhiVU52Ym5OMGNtRnBiblJ6S1N4Y2JseDBYSFJjZEZ4MFhTbGNibHgwWEhSY2RGeDBjbVZ6YjJ4MlpTaHpkSEpsWVcwcFhHNWNkRngwWEhSOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dVhIUmNkRngwWEhSeVpXcGxZM1FvWlhKeWIzSXBYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5S1Z4dWZWeHVJbDBzSW01aGJXVnpJanBiSW5CbGNtMXBjM05wYjI1T1lXMWxJaXdpVUhKdmJXbHpaU0lzSW5KbGMyOXNkbVVpTENKeVpXcGxZM1FpTENKdVlYWnBaMkYwYjNJaUxDSndaWEp0YVhOemFXOXVjeUlzSWtSUFRVVjRZMlZ3ZEdsdmJpSXNJbkYxWlhKNUlpd2libUZ0WlNJc0luQmxjbTFwYzNOcGIyNVRkR0YwZFhNaUxDSnZia05vWVc1blpTSXNJbVYyWlc1MElpd2ljbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaUlzSW5KbGMyOXNkbVZQY2xKbGFtVmpkRUpoYzJWa1QyNVRkR0YwWlNJc0luUmhjbWRsZENJc0luTjBZWFJsSWl3aVlXUmtSWFpsYm5STWFYTjBaVzVsY2lJc0ltMWxaR2xoVTNSeVpXRnRRMjl1YzNSeVlXbHVkSE1pTENKdFpXUnBZVVJsZG1salpYTWlMQ0puWlhSUVpYSnRhWE56YVc5dUlpd2laMlYwVlhObGNrMWxaR2xoSWl3aVlXeHNJaXdpYzNSeVpXRnRJbDBzSW0xaGNIQnBibWR6SWpvaWJYZERRVXRCTEd0RVFVRmxMRmRCUVU5QkxEUkhRVU5rTEVsQlFVbERMRzlFUVVGUkxGZEJRVTlETEVWQlFWTkRMRGhHUVVNM1FrTXNWVUZCVlVNc05FSkJRMlJHTEVWQlFVOHNTVUZCU1Vjc1lVRkJZU3cwUWtGQk5rSXNhMFZCUjNKQ1JpeFZRVUZWUXl4WlFVRlpSU3hOUVVGTkxFTkJRVVZETEV0QlFVMVNMRmRCUVRkRVV5eFRRVU5CUXl4RlFVRlhMRk5CUVZoQkxFVkJRVmxETEVkQlEycENSaXhGUVVGcFFrY3NiMEpCUVc5Q0xGTkJRVlZHTEVkQlF5OURSeXhGUVVFMFFrWXNSVUZCVFVjc1QwRkJUME1zVFVGQlQySXNSVUZCVTBNc1NVRkZNVVJOTEVWQlFXbENUeXhwUWtGQmFVSXNVMEZCVlU0c1IwRkROVU5ITEVWQlFUUkNTaXhGUVVGcFFrMHNUVUZCVDJJc1JVRkJVME1zY1VSQlJUZEVRU3cyVGtGTlJWVXNSVUZCT0VJc1UwRkJRMFVzUlVGQlQySXNSVUZCVTBNc1ZVRkROVU5aTEU5QlEwWXNVMEZEU2xvc1JVRkJUeXhKUVVGSlJ5eGhRVUZoTEc5Q1FVRnhRaXhyUTBGSE4wTktMRVZCUVZGaExHMUVRM1pDU1N4WFFVRlBaaXhGUVVGblFtbENMRFJIUVVNNVFpeEpRVUZKYUVJc2IwUkJRVkVzVjBGQlQwTXNSVUZCVTBNc1owZEJRemRDUXl4VlFVRlZZeXcyUWtGRFpHWXNSVUZCVHl4SlFVRkpSeXhoUVVGaExEWkNRVUU0UWl3NFJFRkhOVUpNTEdsQ1FVTnNRbXRDTEVWQlFXTnVRaXgxUTBGRFpFa3NWVUZCVldNc1lVRkJZVVVzWVVGQllVZ3NPRVJCUmxaSkxEaERRVUY0UWtNc1QwRkpWSEJDTEVWQlFWRnZRaXh4UkVGRlVtNUNJbjA9XG4iLCJpbXBvcnQgeyBnZXRVc2VyTWVkaWFTdHJlYW0gfSBmcm9tICdAdW50ZW1wcy91c2VyLXBlcm1pc3Npb25zLXV0aWxzJ1xuXG5jbGFzcyBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIge1xuXHRzdGF0aWMgZGVmYXVsdE9wdGlvbnMgPSB7XG5cdFx0Z3JhbW1hcnM6IG51bGwsXG5cdFx0bGFuZzogJ2VuLVVTJyxcblx0XHRjb250aW51b3VzOiBmYWxzZSxcblx0XHRpbnRlcmltUmVzdWx0czogZmFsc2UsXG5cdFx0bWF4QWx0ZXJuYXRpdmVzOiAxLFxuXHRcdHNlcnZpY2VVUkk6IG51bGwsXG5cdH1cblxuXHRzdGF0aWMgZXZlbnRUeXBlcyA9IHtcblx0XHRBVURJT19FTkQ6ICdhdWRpb2VuZCcsXG5cdFx0QVVESU9fU1RBUlQ6ICdhdWRpb3N0YXJ0Jyxcblx0XHRFTkQ6ICdlbmQnLFxuXHRcdEVSUk9SOiAnZXJyb3InLFxuXHRcdE5PX01BVENIOiAnbm9tYXRjaCcsXG5cdFx0UkVTVUxUOiAncmVzdWx0Jyxcblx0XHRTT1VORF9FTkQ6ICdzb3VuZGVuZCcsXG5cdFx0U09VTkRfU1RBUlQ6ICdzb3VuZHN0YXJ0Jyxcblx0XHRTUEVFQ0hfRU5EOiAnc3BlZWNoZW5kJyxcblx0XHRTUEVFQ0hfU1RBUlQ6ICdzcGVlY2hzdGFydCcsXG5cdFx0U1RBUlQ6ICdzdGFydCcsXG5cdH1cblxuXHRzdGF0aWMgZ2V0IGlzU3VwcG9ydGVkKCkge1xuXHRcdHJldHVybiAhIVNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKClcblx0fVxuXG5cdHN0YXRpYyBzZXQgaXNTdXBwb3J0ZWQoXykge1xuXHRcdHRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCBzZXQgaXNTdXBwb3J0ZWQgZGlyZWN0bHkuJylcblx0fVxuXG5cdF9pbnN0YW5jZSA9IG51bGxcblx0X2xpc3RlbmVycyA9IG51bGxcblxuXHRjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG5cdFx0Y29uc3QgU3BlZWNoUmVjb2duaXRpb24gPSBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbigpIHx8IHt9XG5cdFx0dGhpcy5faW5zdGFuY2UgPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKVxuXHRcdHRoaXMuX2xpc3RlbmVycyA9IHt9XG5cblx0XHRPYmplY3QuZW50cmllcyh7XG5cdFx0XHQuLi5TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuZGVmYXVsdE9wdGlvbnMsXG5cdFx0XHQuLi4ob3B0aW9ucyB8fCB7fSksXG5cdFx0fSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRpZiAoa2V5ID09PSAnZ3JhbW1hcnMnICYmICF2YWx1ZSkge1xuXHRcdFx0XHRjb25zdCBTcGVlY2hHcmFtbWFyTGlzdCA9IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5fcmVzb2x2ZVNwZWVjaEdyYW1tYXJMaXN0KCkgfHwge31cblx0XHRcdFx0dmFsdWUgPSBuZXcgU3BlZWNoR3JhbW1hckxpc3QoKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5zdGFuY2Vba2V5XSA9IHZhbHVlXG5cdFx0fSlcblx0fVxuXG5cdGdldCBpbnN0YW5jZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5faW5zdGFuY2Vcblx0fVxuXG5cdHNldCBpbnN0YW5jZShfKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBpbnN0YW5jZSBkaXJlY3RseS4nKVxuXHR9XG5cblx0YXN5bmMgc3RhcnQoKSB7XG5cdFx0aWYgKCEhdGhpcy5faW5zdGFuY2UpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHN0cmVhbSA9IGF3YWl0IGdldFVzZXJNZWRpYVN0cmVhbSgnbWljcm9waG9uZScsIHsgYXVkaW86IHRydWUgfSlcblx0XHRcdFx0aWYgKCFzdHJlYW0pIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXRyaWV2ZSB0aGUgc3RyZWFtIGZyb20gbWVkaWEgZGV2aWNlJylcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9pbnN0YW5jZS5zdGFydCgpXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRjb25zdCBlcnJvckhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnMuZXJyb3Jcblx0XHRcdFx0aWYgKCEhZXJyb3JIYW5kbGVyKSB7XG5cdFx0XHRcdFx0ZXJyb3JIYW5kbGVyKGVycm9yKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdHN0b3AoKSB7XG5cdFx0aWYgKCEhdGhpcy5faW5zdGFuY2UpIHtcblx0XHRcdHRoaXMuX2luc3RhbmNlLnN0b3AoKVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRhYm9ydCgpIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSkge1xuXHRcdFx0dGhpcy5faW5zdGFuY2UuYWJvcnQoKVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcblx0XHRpZiAoISF0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbmNsdWRlc0V2ZW50VHlwZShldmVudFR5cGUpKSB7XG5cdFx0XHRpZiAoISF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBoYW5kbGVyID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGxldCBhZGRpdGlvbmFsQXJncyA9IFtdXG5cdFx0XHRcdGlmIChldmVudFR5cGUgPT09IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5ldmVudFR5cGVzLlJFU1VMVCkge1xuXHRcdFx0XHRcdGlmICghIWV2ZW50LnJlc3VsdHMgJiYgZXZlbnQucmVzdWx0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhZGRpdGlvbmFsQXJncy5wdXNoKGV2ZW50LnJlc3VsdHNbMF1bMF0udHJhbnNjcmlwdClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQhIWNhbGxiYWNrICYmIGNhbGxiYWNrLmFwcGx5KHRoaXMsIFsuLi5hZGRpdGlvbmFsQXJncywgZXZlbnRdKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cblx0XHRcdHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdID0gaGFuZGxlclxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzXG5cdH1cblxuXHRyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSkge1xuXHRcdGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXVxuXHRcdHRoaXMuX2luc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyKVxuXG5cdFx0ZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdXG5cblx0XHRyZXR1cm4gdGhpc1xuXHR9XG5cblx0Y2xlYW51cCgpIHtcblx0XHR0aGlzLnN0b3AoKVxuXG5cdFx0T2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKS5mb3JFYWNoKChrZXkpID0+IHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihrZXkpKVxuXHRcdHRoaXMuX2luc3RhbmNlID0gbnVsbFxuXG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdF9pbmNsdWRlc0V2ZW50VHlwZShldmVudFR5cGUpIHtcblx0XHRyZXR1cm4gISFPYmplY3QudmFsdWVzKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5ldmVudFR5cGVzKS5maW5kKCh0eXBlKSA9PiB0eXBlID09PSBldmVudFR5cGUpXG5cdH1cblxuXHRzdGF0aWMgX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbigpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0d2luZG93LlNwZWVjaFJlY29nbml0aW9uIHx8XG5cdFx0XHR3aW5kb3cud2Via2l0U3BlZWNoUmVjb2duaXRpb24gfHxcblx0XHRcdHdpbmRvdy5tb3pTcGVlY2hSZWNvZ25pdGlvbiB8fFxuXHRcdFx0d2luZG93Lm1zU3BlZWNoUmVjb2duaXRpb25cblx0XHQpXG5cdH1cblxuXHRzdGF0aWMgX3Jlc29sdmVTcGVlY2hHcmFtbWFyTGlzdCgpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0d2luZG93LlNwZWVjaEdyYW1tYXJMaXN0IHx8XG5cdFx0XHR3aW5kb3cud2Via2l0U3BlZWNoR3JhbW1hckxpc3QgfHxcblx0XHRcdHdpbmRvdy5tb3pTcGVlY2hHcmFtbWFyTGlzdCB8fFxuXHRcdFx0d2luZG93Lm1zU3BlZWNoR3JhbW1hckxpc3Rcblx0XHQpXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyXG4iLCJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciBmcm9tICcuLi9jb3JlL1NwZWVjaFJlY29nbml0aW9uV3JhcHBlcidcblxuY29uc3QgdXNlVm9jYWwgPSAobGFuZyA9ICdlbi1VUycsIGdyYW1tYXJzID0gbnVsbCwgX19yc0luc3RhbmNlID0gbnVsbCkgPT4ge1xuXHRjb25zdCByZWYgPSB1c2VSZWYobnVsbClcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWQpIHtcblx0XHRcdHJlZi5jdXJyZW50ID0gX19yc0luc3RhbmNlIHx8IG5ldyBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIoeyBsYW5nLCBncmFtbWFycyB9KVxuXHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0cmVmLmN1cnJlbnQuYWJvcnQoKVxuXHRcdFx0XHRyZWYuY3VycmVudC5jbGVhbnVwKClcblx0XHRcdH1cblx0XHR9XG5cdH0sIFtsYW5nLCBncmFtbWFycywgX19yc0luc3RhbmNlXSlcblxuXHRjb25zdCBzdGFydCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnN0YXJ0KClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IHN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5zdG9wKClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IGFib3J0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuYWJvcnQoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3Qgc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGV2ZW50VHlwZSwgaGFuZGxlcikgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCB1bnN1YnNjcmliZSA9IHVzZUNhbGxiYWNrKChldmVudFR5cGUsIGhhbmRsZXIpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3QgY2xlYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5jbGVhbnVwKClcblx0XHR9XG5cdH0sIFtdKVxuXG5cdHJldHVybiBbcmVmLCB7IHN0YXJ0LCBzdG9wLCBhYm9ydCwgc3Vic2NyaWJlLCB1bnN1YnNjcmliZSwgY2xlYW4gfV1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlVm9jYWxcblxuLy8gVE9ETzogUmV0dXJuIHRoZSBpbnN0YW5jZSwgbm90IHRoZSByZWZcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcblxuY29uc3QgSWNvbiA9ICh7IGNvbG9yLCBhY3RpdmVDb2xvciwgaXNBY3RpdmUgfSkgPT4ge1xuXHRyZXR1cm4gKFxuXHRcdDxzdmdcblx0XHRcdGRhdGEtdGVzdGlkPVwiX19pY29uLXJvb3RfX1wiXG5cdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRoZWlnaHQ9XCIxMDAlXCJcblx0XHRcdHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuXHRcdD5cblx0XHRcdDxnPlxuXHRcdFx0XHQ8cGF0aFxuXHRcdFx0XHRcdGRhdGEtdGVzdGlkPVwiX19pY29uLXBhdGhfX1wiXG5cdFx0XHRcdFx0ZmlsbD17Y29sb3J9XG5cdFx0XHRcdFx0ZD1cIk0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6XCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0e2lzQWN0aXZlICYmIDxjaXJjbGUgZGF0YS10ZXN0aWQ9XCJfX2ljb24tYWN0aXZlX19cIiBmaWxsPXthY3RpdmVDb2xvcn0gY3g9XCIxNlwiIGN5PVwiNFwiIHI9XCI0XCIgLz59XG5cdFx0XHQ8L2c+XG5cdFx0PC9zdmc+XG5cdClcbn1cblxuSWNvbi5wcm9wVHlwZXMgPSB7XG5cdGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRhY3RpdmVDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcblx0aXNBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxufVxuXG5JY29uLmRlZmF1bHRQcm9wcyA9IHtcblx0Y29sb3I6ICdibGFjaycsXG5cdGFjdGl2ZUNvbG9yOiAncmVkJyxcblx0aXNBY3RpdmU6IGZhbHNlLFxufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uXG4iLCJpbXBvcnQgUmVhY3QsIHsgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4uL2NvcmUvU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyJ1xuXG5pbXBvcnQgaXNGdW5jIGZyb20gJy4uL3V0aWxzL2lzRnVuYydcblxuaW1wb3J0IHVzZVZvY2FsIGZyb20gJy4uL2hvb2tzL3VzZVZvY2FsJ1xuaW1wb3J0IHVzZVRpbWVvdXQgZnJvbSAnLi4vaG9va3MvdXNlVGltZW91dCdcblxuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJ1xuXG5jb25zdCBWb2NhbCA9ICh7XG5cdGNoaWxkcmVuLFxuXHRsYW5nLFxuXHRncmFtbWFycyxcblx0dGltZW91dCxcblx0YXJpYUxhYmVsLFxuXHRzdHlsZSxcblx0Y2xhc3NOYW1lLFxuXHRvdXRsaW5lU3R5bGUsXG5cdG9uU3RhcnQsXG5cdG9uRW5kLFxuXHRvblNwZWVjaFN0YXJ0LFxuXHRvblNwZWVjaEVuZCxcblx0b25SZXN1bHQsXG5cdG9uRXJyb3IsXG5cdG9uTm9NYXRjaCxcblx0X19yc0luc3RhbmNlLFxufSkgPT4ge1xuXHRjb25zdCBidXR0b25SZWYgPSB1c2VSZWYobnVsbClcblx0Y29uc3QgW2lzTGlzdGVuaW5nLCBzZXRJc0xpc3RlbmluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuXHRjb25zdCBbLCB7IHN0YXJ0LCBzdG9wLCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH1dID0gdXNlVm9jYWwobGFuZywgZ3JhbW1hcnMsIF9fcnNJbnN0YW5jZSlcblxuXHRjb25zdCBfb25FbmQgPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdHVuc3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdHVuc3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHR1bnN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdHVuc3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdHVuc3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdCEhb25FbmQgJiYgb25FbmQoZSlcblx0fVxuXG5cdGNvbnN0IFtzdGFydFRpbWVyLCBzdG9wVGltZXJdID0gdXNlVGltZW91dChfb25FbmQsIHRpbWVvdXQpXG5cblx0Y29uc3Qgc3RhcnRSZWNvZ25pdGlvbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0c2V0SXNMaXN0ZW5pbmcodHJ1ZSlcblxuXHRcdFx0c3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdFx0c3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHRcdHN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdFx0c3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdFx0c3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdFx0c3RhcnQoKVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRfb25FcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjb25zdCBzdG9wUmVjb2duaXRpb24gPSAoKSA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdHNldElzTGlzdGVuaW5nKGZhbHNlKVxuXG5cdFx0XHRzdG9wKClcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0ISFvbkVycm9yICYmIG9uRXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgX29uQ2xpY2sgPSAoKSA9PiB7XG5cdFx0c3RhcnRSZWNvZ25pdGlvbigpXG5cdH1cblxuXHRjb25zdCBfb25Gb2N1cyA9ICgpID0+IHtcblx0XHRpZiAoIWNsYXNzTmFtZSAmJiBvdXRsaW5lU3R5bGUpIHtcblx0XHRcdGJ1dHRvblJlZi5jdXJyZW50LnN0eWxlLm91dGxpbmUgPSBvdXRsaW5lU3R5bGVcblx0XHR9XG5cdH1cblxuXHRjb25zdCBfb25CbHVyID0gKCkgPT4ge1xuXHRcdGlmICghY2xhc3NOYW1lICYmIG91dGxpbmVTdHlsZSkge1xuXHRcdFx0YnV0dG9uUmVmLmN1cnJlbnQuc3R5bGUub3V0bGluZSA9ICdub25lJ1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IF9vblN0YXJ0ID0gKGUpID0+IHtcblx0XHRzdGFydFRpbWVyKClcblxuXHRcdCEhb25TdGFydCAmJiBvblN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hTdGFydCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblxuXHRcdCEhb25TcGVlY2hTdGFydCAmJiBvblNwZWVjaFN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hFbmQgPSAoZSkgPT4ge1xuXHRcdHN0YXJ0VGltZXIoKVxuXG5cdFx0ISFvblNwZWVjaEVuZCAmJiBvblNwZWVjaEVuZChlKVxuXHR9XG5cblx0Y29uc3QgX29uUmVzdWx0ID0gKHJlc3VsdCwgZXZlbnQpID0+IHtcblx0XHRzdG9wVGltZXIoKVxuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHQhIW9uUmVzdWx0ICYmIG9uUmVzdWx0KHJlc3VsdCwgZXZlbnQpXG5cdH1cblxuXHRjb25zdCBfb25FcnJvciA9IChlcnJvcikgPT4ge1xuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHQhIW9uRXJyb3IgJiYgb25FcnJvcihlcnJvcilcblx0fVxuXG5cdGNvbnN0IF9vbk5vTWF0Y2ggPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25Ob01hdGNoICYmIG9uTm9NYXRjaChlKVxuXHR9XG5cblx0Y29uc3QgX3JlbmRlckRlZmF1bHQgPSAoKSA9PiAoXG5cdFx0PGJ1dHRvblxuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX3ZvY2FsLXJvb3RfX1wiXG5cdFx0XHRyZWY9e2J1dHRvblJlZn1cblx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0YXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuXHRcdFx0c3R5bGU9e1xuXHRcdFx0XHRjbGFzc05hbWVcblx0XHRcdFx0XHQ/IG51bGxcblx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDI0LFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDI0LFxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRjdXJzb3I6ICFpc0xpc3RlbmluZyA/ICdwb2ludGVyJyA6ICdkZWZhdWx0Jyxcblx0XHRcdFx0XHRcdFx0Li4uc3R5bGUsXG5cdFx0XHRcdFx0ICB9XG5cdFx0XHR9XG5cdFx0XHRjbGFzc05hbWU9e2NsYXNzTmFtZX1cblx0XHRcdG9uRm9jdXM9e19vbkZvY3VzfVxuXHRcdFx0b25CbHVyPXtfb25CbHVyfVxuXHRcdFx0b25DbGljaz17X29uQ2xpY2t9XG5cdFx0PlxuXHRcdFx0PEljb24gaXNBY3RpdmU9e2lzTGlzdGVuaW5nfSBpY29uQ29sb3I9XCIjYWFhXCIgLz5cblx0XHQ8L2J1dHRvbj5cblx0KVxuXG5cdGNvbnN0IF9yZW5kZXJDaGlsZHJlbiA9IChjaGlsZHJlbikgPT4ge1xuXHRcdGlmIChTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWQpIHtcblx0XHRcdGlmIChpc0Z1bmMoY2hpbGRyZW4pKSB7XG5cdFx0XHRcdHJldHVybiBjaGlsZHJlbihzdGFydFJlY29nbml0aW9uLCBzdG9wUmVjb2duaXRpb24sIGlzTGlzdGVuaW5nKVxuXHRcdFx0fSBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcblx0XHRcdFx0cmV0dXJuIGNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuXHRcdFx0XHRcdC4uLighaXNMaXN0ZW5pbmcgJiYgeyBvbkNsaWNrOiBfb25DbGljayB9KSxcblx0XHRcdFx0fSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBfcmVuZGVyRGVmYXVsdCgpXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsXG5cdH1cblxuXHRyZXR1cm4gX3JlbmRlckNoaWxkcmVuKGNoaWxkcmVuKVxufVxuXG5Wb2NhbC5wcm9wVHlwZXMgPSB7XG5cdC8qKiBEZWZpbmVzIHRoZSBsYW5ndWFnZSB1bmRlcnN0b29kIGJ5IHRoZSByZWNvZ25pdGlvbiAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFJlY29nbml0aW9uL2xhbmcpICovXG5cdGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBncmFtbWFycyB1bmRlcnN0b29kIGJ5IHRoZSByZWNvZ25pdGlvbiAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NwZWVjaFJlY29nbml0aW9uL2dyYW1tYXJzKSAqL1xuXHRncmFtbWFyczogUHJvcFR5cGVzLm9iamVjdCxcblx0LyoqIERlZmluZXMgdGhlIHRpbWUgaW4gbXMgdG8gd2FpdCBiZWZvcmUgZGlzY2FyZGluZyB0aGUgcmVjb2duaXRpb24gKi9cblx0dGltZW91dDogUHJvcFR5cGVzLm51bWJlcixcblx0LyoqIERlZmluZXMgdGhlIGExMXkgbGFiZWwgZm9yIHRoZSBkZWZhdWx0IGJ1dHRvbiAqL1xuXHRhcmlhTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBzdHlsZXMgb2YgdGhlIGRlZmF1bHQgZWxlbWVudCBpZiBjbGFzc05hbWUgaXMgbm90IHNwZWNpZmllZCAqL1xuXHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblx0LyoqIERlZmluZXMgdGhlIGNsYXNzIG9mIHRoZSBkZWZhdWx0IGVsZW1lbnQgKi9cblx0Y2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHQvKiogRGVmaW5lcyB0aGUgZGVmYXVsdCBzdHlsZSBvZiB0aGUgZm9jdXMgb3V0bGluZS4gaWYgbnVsbCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdXNlZCAqL1xuXHRvdXRsaW5lU3R5bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSByZWNvZ25pdGlvbiBzdGFydHMgKi9cblx0b25TdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSByZWNvZ25pdGlvbiBlbmRzICovXG5cdG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHNwZWVjaCBzdGFydHMgKi9cblx0b25TcGVlY2hTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggZW5kcyAqL1xuXHRvblNwZWVjaEVuZDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIGEgcmVzdWx0IGlzIHJldHVybmVkIGZyb20gdGUgcmVjb2duaXRpb24gKi9cblx0b25SZXN1bHQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgKi9cblx0b25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIG5vIHJlc3VsdCBjYW4gYmUgcmVjb2duaXplZCAqL1xuXHRvbk5vTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5Wb2NhbC5kZWZhdWx0UHJvcHMgPSB7XG5cdGxhbmc6ICdlbi1VUycsXG5cdGdyYW1tYXJzOiBudWxsLFxuXHR0aW1lb3V0OiAzMDAwLFxuXHRhcmlhTGFiZWw6ICdzdGFydCByZWNvZ25pdGlvbicsXG5cdHN0eWxlOiBudWxsLFxuXHRjbGFzc05hbWU6IG51bGwsXG5cdG91dGxpbmVTdHlsZTogJzJweCBzb2xpZCcsXG5cdG9uU3RhcnQ6IG51bGwsXG5cdG9uRW5kOiBudWxsLFxuXHRvblNwZWVjaFN0YXJ0OiBudWxsLFxuXHRvblNwZWVjaEVuZDogbnVsbCxcblx0b25SZXN1bHQ6IG51bGwsXG5cdG9uRXJyb3I6IG51bGwsXG5cdG9uTm9NYXRjaDogbnVsbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgVm9jYWxcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuXG5jb25zdCB1c2VUaW1lb3V0ID0gKGhhbmRsZXIsIHRpbWVvdXQgPSAwKSA9PiB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZigtMSlcblxuXHRjb25zdCBzdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGNsZWFyVGltZW91dChyZWYuY3VycmVudClcblx0XHRyZWYuY3VycmVudCA9IC0xXG5cdH0sIFtdKVxuXG5cdGNvbnN0IHN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdHN0b3AoKVxuXHRcdHJlZi5jdXJyZW50ID0gc2V0VGltZW91dChoYW5kbGVyLCB0aW1lb3V0KVxuXHR9LCBbaGFuZGxlciwgdGltZW91dCwgc3RvcF0pXG5cblx0dXNlRWZmZWN0KCgpID0+IHN0b3AsIFtzdG9wXSlcblxuXHRyZXR1cm4gW3N0YXJ0LCBzdG9wXVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VUaW1lb3V0XG5cbi8vIFRPRE86IFJldHVybiBhIHByb21pc2VcbiIsImV4cG9ydCBkZWZhdWx0ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiIsImltcG9ydCBWb2NhbCBmcm9tICcuL2NvbXBvbmVudHMvVm9jYWwnXG5pbXBvcnQgU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyIGZyb20gJy4vY29yZS9TcGVlY2hSZWNvZ25pdGlvbldyYXBwZXInXG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlVm9jYWwgfSBmcm9tICcuL2hvb2tzL3VzZVZvY2FsJ1xuZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkID0gU3BlZWNoUmVjb2duaXRpb25XcmFwcGVyLmlzU3VwcG9ydGVkXG5cbmV4cG9ydCBkZWZhdWx0IFZvY2FsXG4iXSwibmFtZXMiOlsiZSIsInIiLCJ0IiwibiIsImEiLCJpIiwibyIsInUiLCJjIiwidmFsdWUiLCJkb25lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwidGhpcyIsImFyZ3VtZW50cyIsImFwcGx5IiwiQXJyYXkiLCJpc0FycmF5IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJPYmplY3QiLCJuZXh0IiwicHVzaCIsImxlbmd0aCIsInJldHVybiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJUeXBlRXJyb3IiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwid3JhcCIsInByZXYiLCJhYnJ1cHQiLCJuYXZpZ2F0b3IiLCJwZXJtaXNzaW9ucyIsIkRPTUV4Y2VwdGlvbiIsInF1ZXJ5Iiwic2VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0YXJnZXQiLCJzdGF0ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0MCIsImNhdGNoIiwic3RvcCIsInMiLCJtZWRpYURldmljZXMiLCJ0MSIsImdldFVzZXJNZWRpYSIsInQyIiwidDMiLCJhbGwiLCJ0NCIsIlNwZWVjaFJlY29nbml0aW9uV3JhcHBlciIsIm9wdGlvbnMiLCJTcGVlY2hSZWNvZ25pdGlvbiIsIl9yZXNvbHZlU3BlZWNoUmVjb2duaXRpb24iLCJfaW5zdGFuY2UiLCJfbGlzdGVuZXJzIiwiZW50cmllcyIsImRlZmF1bHRPcHRpb25zIiwiZm9yRWFjaCIsImtleSIsIl9yZXNvbHZlU3BlZWNoR3JhbW1hckxpc3QiLCJfdGhpcyIsIl8iLCJFcnJvciIsImdldFVzZXJNZWRpYVN0cmVhbSIsImF1ZGlvIiwic3RhcnQiLCJlcnJvckhhbmRsZXIiLCJlcnJvciIsImFib3J0IiwiZXZlbnRUeXBlIiwiY2FsbGJhY2siLCJfaW5jbHVkZXNFdmVudFR5cGUiLCJoYW5kbGVyIiwiZXZlbnQiLCJhZGRpdGlvbmFsQXJncyIsImV2ZW50VHlwZXMiLCJSRVNVTFQiLCJyZXN1bHRzIiwidHJhbnNjcmlwdCIsIl90aGlzMiIsImtleXMiLCJfdGhpczMiLCJ2YWx1ZXMiLCJmaW5kIiwidHlwZSIsIndpbmRvdyIsIndlYmtpdFNwZWVjaFJlY29nbml0aW9uIiwibW96U3BlZWNoUmVjb2duaXRpb24iLCJtc1NwZWVjaFJlY29nbml0aW9uIiwiU3BlZWNoR3JhbW1hckxpc3QiLCJ3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCIsIm1velNwZWVjaEdyYW1tYXJMaXN0IiwibXNTcGVlY2hHcmFtbWFyTGlzdCIsImdyYW1tYXJzIiwibGFuZyIsImNvbnRpbnVvdXMiLCJpbnRlcmltUmVzdWx0cyIsIm1heEFsdGVybmF0aXZlcyIsInNlcnZpY2VVUkkiLCJBVURJT19FTkQiLCJBVURJT19TVEFSVCIsIkVORCIsIkVSUk9SIiwiTk9fTUFUQ0giLCJTT1VORF9FTkQiLCJTT1VORF9TVEFSVCIsIlNQRUVDSF9FTkQiLCJTUEVFQ0hfU1RBUlQiLCJTVEFSVCIsInVzZVZvY2FsIiwiX19yc0luc3RhbmNlIiwicmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiaXNTdXBwb3J0ZWQiLCJjdXJyZW50IiwiY2xlYW51cCIsInVzZUNhbGxiYWNrIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJjbGVhbiIsIkljb24iLCJjb2xvciIsImFjdGl2ZUNvbG9yIiwiaXNBY3RpdmUiLCJSZWFjdCIsInhtbG5zIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsImQiLCJjeCIsImN5IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsIlZvY2FsIiwiY2hpbGRyZW4iLCJ0aW1lb3V0IiwiYXJpYUxhYmVsIiwic3R5bGUiLCJjbGFzc05hbWUiLCJvdXRsaW5lU3R5bGUiLCJvblN0YXJ0Iiwib25FbmQiLCJvblNwZWVjaFN0YXJ0Iiwib25TcGVlY2hFbmQiLCJvblJlc3VsdCIsIm9uRXJyb3IiLCJvbk5vTWF0Y2giLCJidXR0b25SZWYiLCJ1c2VTdGF0ZSIsImlzTGlzdGVuaW5nIiwic2V0SXNMaXN0ZW5pbmciLCJfb25FbmQiLCJzdG9wVGltZXIiLCJzdG9wUmVjb2duaXRpb24iLCJfb25TdGFydCIsIl9vblNwZWVjaFN0YXJ0IiwiX29uU3BlZWNoRW5kIiwiX29uUmVzdWx0IiwiX29uRXJyb3IiLCJfb25Ob01hdGNoIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInVzZVRpbWVvdXQiLCJzdGFydFRpbWVyIiwic3RhcnRSZWNvZ25pdGlvbiIsIl9vbkNsaWNrIiwiX29uRm9jdXMiLCJvdXRsaW5lIiwiX29uQmx1ciIsInJlc3VsdCIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50Iiwib25DbGljayIsInJvbGUiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyIiwicGFkZGluZyIsImN1cnNvciIsIm9uRm9jdXMiLCJvbkJsdXIiLCJpY29uQ29sb3IiLCJfcmVuZGVyQ2hpbGRyZW4iLCJvYmplY3QiLCJudW1iZXIiLCJmdW5jIl0sIm1hcHBpbmdzIjoiMDNFQUFBLFNBQVNBLEVBQUVBLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVDLEVBQUVD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 |
{ | ||
"name": "@untemps/react-vocal", | ||
"version": "1.5.1", | ||
"version": "1.5.2", | ||
"author": "Vincent Le Badezet <v.lebadezet@untemps.net>", | ||
@@ -26,12 +26,12 @@ "repository": "git@github.com:untemps/react-vocal.git", | ||
"devDependencies": { | ||
"@babel/cli": "^7.10.1", | ||
"@babel/core": "^7.10.1", | ||
"@babel/plugin-proposal-class-properties": "^7.10.1", | ||
"@babel/plugin-transform-react-jsx": "^7.10.1", | ||
"@babel/plugin-transform-runtime": "^7.10.1", | ||
"@babel/preset-env": "^7.10.2", | ||
"@babel/preset-react": "^7.10.1", | ||
"@babel/cli": "^7.12.10", | ||
"@babel/core": "^7.12.10", | ||
"@babel/plugin-proposal-class-properties": "^7.12.1", | ||
"@babel/plugin-transform-react-jsx": "^7.12.12", | ||
"@babel/plugin-transform-runtime": "^7.12.10", | ||
"@babel/preset-env": "^7.12.11", | ||
"@babel/preset-react": "^7.12.10", | ||
"@commitlint/cli": "^9.1.1", | ||
"@commitlint/config-conventional": "^9.1.1", | ||
"@rollup/plugin-babel": "^5.0.2", | ||
"@rollup/plugin-babel": "^5.2.2", | ||
"@rollup/plugin-commonjs": "^12.0.0", | ||
@@ -41,14 +41,14 @@ "@rollup/plugin-node-resolve": "^8.0.0", | ||
"@semantic-release/git": "^9.0.0", | ||
"@semantic-release/github": "^7.0.7", | ||
"@testing-library/dom": "^7.7.1", | ||
"@testing-library/jest-dom": "^5.9.0", | ||
"@semantic-release/github": "^7.2.0", | ||
"@testing-library/dom": "^7.29.0", | ||
"@testing-library/jest-dom": "^5.11.6", | ||
"@testing-library/react": "^10.0.4", | ||
"@testing-library/react-hooks": "^3.3.0", | ||
"@testing-library/react-hooks": "^3.7.0", | ||
"@untemps/event-dispatcher": "^1.1.0", | ||
"@untemps/user-permissions-utils": "^1.0.1", | ||
"babel-jest": "^26.0.1", | ||
"cross-env": "^7.0.2", | ||
"husky": "^4.2.5", | ||
"jest": "^26.0.1", | ||
"prettier": "^2.0.5", | ||
"babel-jest": "^26.6.3", | ||
"cross-env": "^7.0.3", | ||
"husky": "^4.3.6", | ||
"jest": "^26.6.3", | ||
"prettier": "^2.2.1", | ||
"prop-types": "^15.7.2", | ||
@@ -58,7 +58,7 @@ "react": "^16.13.1", | ||
"react-test-renderer": "^16.13.1", | ||
"rollup": "^2.11.2", | ||
"rollup-plugin-filesize": "^9.0.0", | ||
"rollup": "^2.35.1", | ||
"rollup-plugin-filesize": "^9.1.0", | ||
"rollup-plugin-terser": "^6.1.0", | ||
"rollup-plugin-visualizer": "^4.0.4", | ||
"semantic-release": "^17.0.7" | ||
"rollup-plugin-visualizer": "^4.2.0", | ||
"semantic-release": "^17.3.0" | ||
}, | ||
@@ -65,0 +65,0 @@ "peerDependencies": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
249318
1778