@untemps/react-vocal 1.7.35 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.github/workflows/publish.yml +2 -0
  2. package/.husky/commit-msg +1 -0
  3. package/.husky/pre-commit +1 -0
  4. package/.prettierignore +1 -0
  5. package/.prettierrc +1 -1
  6. package/CHANGELOG.md +29 -0
  7. package/CLAUDE.md +12 -8
  8. package/README.md +23 -16
  9. package/dev/index.html +24 -0
  10. package/dev/package.json +12 -8
  11. package/dev/src/{index.js → index.jsx} +2 -3
  12. package/dev/vite.config.js +10 -0
  13. package/dev/yarn.lock +296 -172
  14. package/dist/index.es.js +2182 -2
  15. package/dist/index.es.js.map +1 -0
  16. package/dist/index.js +9 -2
  17. package/dist/index.js.map +1 -0
  18. package/dist/index.umd.js +9 -2
  19. package/dist/index.umd.js.map +1 -0
  20. package/package.json +27 -60
  21. package/src/components/{Icon.js → Icon.jsx} +1 -14
  22. package/src/components/Vocal.jsx +206 -0
  23. package/src/components/__tests__/{Icon.test.js → Icon.test.jsx} +0 -4
  24. package/src/components/__tests__/{Vocal.test.js → Vocal.test.jsx} +175 -18
  25. package/src/components/__tests__/{VocalWithMockedUseVocal.test.js → VocalWithMockedUseVocal.test.jsx} +11 -13
  26. package/src/components/__tests__/__snapshots__/Icon.test.jsx.snap +21 -0
  27. package/src/components/__tests__/__snapshots__/Vocal.test.jsx.snap +28 -0
  28. package/src/hooks/__tests__/useCommands.test.js +1 -1
  29. package/src/hooks/__tests__/useTimeout.test.js +6 -6
  30. package/src/hooks/__tests__/useVocal.test.js +15 -15
  31. package/src/hooks/useTimeout.js +0 -2
  32. package/src/hooks/useVocal.js +0 -2
  33. package/vite.config.js +35 -0
  34. package/vitest.setup.js +74 -0
  35. package/babel.config.js +0 -12
  36. package/dev/babel.config.js +0 -4
  37. package/dev/rollup.config.js +0 -29
  38. package/jest/jest.setup.js +0 -72
  39. package/rollup.config.js +0 -42
  40. package/src/components/Vocal.js +0 -235
package/dist/index.es.js CHANGED
@@ -1,2 +1,2182 @@
1
- import t,{useRef as e,useEffect as n,useCallback as r,useState as i,isValidElement as o,cloneElement as s}from"react";import c from"prop-types";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?u(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],r=!0,i=!1,o=void 0;try{for(var s,c=t[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{r||null==c.return||c.return()}finally{if(i)throw o}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return f(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(t,e)}(t,e)||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(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var d=function(t,e,n){return function(t){var e=function(t){var e=Object.prototype,n=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function a(t,e,n,r){var i=e&&e.prototype instanceof l?e:l,o=Object.create(i.prototype),s=new _(r||[]);return o._invoke=function(t,e,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return L()}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var c=b(s,n);if(c){if(c===h)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var a=u(t,e,n);if("normal"===a.type){if(r=n.done?"completed":"suspendedYield",a.arg===h)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(r="completed",n.method="throw",n.arg=a.arg)}}}(t,n,s),o}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=a;var h={};function l(){}function f(){}function d(){}var p={};p[i]=function(){return this};var g=Object.getPrototypeOf,y=g&&g(g(E([])));y&&y!==e&&n.call(y,i)&&(p=y);var v=d.prototype=l.prototype=Object.create(p);function m(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var r;this._invoke=function(i,o){function s(){return new e((function(r,s){!function r(i,o,s,c){var a=u(t[i],t,o);if("throw"!==a.type){var h=a.arg,l=h.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,s,c)}),(function(t){r("throw",t,s,c)})):e.resolve(l).then((function(t){h.value=t,s(h)}),(function(t){return r("throw",t,s,c)}))}c(a.arg)}(i,o,r,s)}))}return r=r?r.then(s,s):s()}}function b(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,b(t,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var r=u(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,h;var i=r.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function E(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return f.prototype=v.constructor=d,d.constructor=f,f.displayName=c(d,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===f||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,c(t,s,"GeneratorFunction")),t.prototype=Object.create(v),t},t.awrap=function(t){return{__await:t}},m(w.prototype),w.prototype[o]=function(){return this},t.AsyncIterator=w,t.async=function(e,n,r,i,o){void 0===o&&(o=Promise);var s=new w(a(e,n,r,i),o);return t.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},m(v),c(v,s,"Generator"),v[i]=function(){return this},v.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=E,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(S),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return s.type="throw",s.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=n.call(o,"catchLoc"),a=n.call(o,"finallyLoc");if(c&&a){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(c){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!a)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var s=o?o.completion:{};return s.type=t,s.arg=e,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),S(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;S(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:E(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),h}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}}(n={path:void 0,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}();function p(t,e,n,r,i,o,s){try{var c=t[o](s),a=c.value}catch(t){return void n(t)}c.done?e(a):Promise.resolve(a).then(r,i)}var g=function(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function s(t){p(o,r,i,s,c,"next",t)}function c(t){p(o,r,i,s,c,"throw",t)}s(void 0)}))}},y=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r},v=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,i=!1,o=void 0;try{for(var s,c=t[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{r||null==c.return||c.return()}finally{if(i)throw o}}return n}}(t,e)||function(t,e){if(t){if("string"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(t,e)||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(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var w=function(t,e,n){return e&&m(t.prototype,e),n&&m(t,n),t},b=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},x=function(){return!!navigator.permissions},S=function(){return!!navigator.mediaDevices};function _(t,e,n,r,i,o,s){try{var c=t[o](s),a=c.value}catch(t){return void n(t)}c.done?e(a):Promise.resolve(a).then(r,i)}function E(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function s(t){_(o,r,i,s,c,"next",t)}function c(t){_(o,r,i,s,c,"throw",t)}s(void 0)}))}}function L(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,i=!1,o=void 0;try{for(var s,c=t[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{r||null==c.return||c.return()}finally{if(i)throw o}}return n}}(t,e)||function(t,e){if(t){if("string"==typeof t)return M(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}(t,e)||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(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var O=function(){var t=E(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise(function(){var t=E(regeneratorRuntime.mark((function t(n,r){var i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return x()||r(new DOMException("Navigator API: permissions not supported","NOT_SUPPORTED_ERR")),t.prev=1,t.next=4,navigator.permissions.query({name:e});case 4:i=t.sent,o=function t(e){i.removeEventListener("change",t),k(e.target.state,n,r)},i.addEventListener("change",o),k(i.state,n,r),t.next=13;break;case 10:t.prev=10,t.t0=t.catch(1),r(t.t0);case 13:case"end":return t.stop()}}),t,null,[[1,10]])})));return function(e,n){return t.apply(this,arguments)}}()));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),k=function(t,e,n){if("denied"===t)n(new DOMException("Permission denied","NOT_ALLOWED_ERR"));else e(t)},j=function(){var t=E(regeneratorRuntime.mark((function t(e,n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise(function(){var t=E(regeneratorRuntime.mark((function t(r,i){var o,s,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return x()&&S()||i(new DOMException("Navigator API: permissions or Navigator API: mediaDevices not supported","NOT_SUPPORTED_ERR")),t.prev=1,t.t0=Promise,t.next=5,O(e);case 5:return t.t1=t.sent,t.next=8,navigator.mediaDevices.getUserMedia(n);case 8:return t.t2=t.sent,t.t3=[t.t1,t.t2],t.next=12,t.t0.all.call(t.t0,t.t3);case 12:o=t.sent,s=L(o,2),c=s[1],r(c),t.next=21;break;case 18:t.prev=18,t.t4=t.catch(1),i(t.t4);case 21:case"end":return t.stop()}}),t,null,[[1,18]])})));return function(e,n){return t.apply(this,arguments)}}()));case 1:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}();function A(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function R(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?A(Object(n),!0).forEach((function(e){b(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var I=function(){function t(e){var n=this;(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")})(this,t),b(this,"_instance",null),b(this,"_listeners",null);var r=t._resolveSpeechRecognition();if(!r)throw new DOMException("SpeechRecognition not supported","NOT_SUPPORTED_ERR");this._instance=new r,this._listeners={},Object.entries(R(R({},t.defaultOptions),e||{})).forEach((function(e){var r=v(e,2),i=r[0],o=r[1];if("grammars"===i&&!o){var s=t._resolveSpeechGrammarList();s&&(o=new s)}n._instance[i]=o}))}var e;return w(t,null,[{key:"isSupported",get:function(){return!!t._resolveSpeechRecognition()&&!!x()&&!!S()},set:function(t){throw new Error("You cannot set isSupported directly.")}}]),w(t,[{key:"start",value:(e=g(d.mark((function t(){var e;return d.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._instance){t.next=14;break}return t.prev=1,t.next=4,j("microphone",{audio:!0});case 4:if(t.sent){t.next=7;break}throw new Error("Unable to retrieve the stream from media device");case 7:this._instance.start(),t.next=14;break;case 10:t.prev=10,t.t0=t.catch(1),(e=this._listeners.error)&&e(t.t0);case 14:return t.abrupt("return",this);case 15:case"end":return t.stop()}}),t,this,[[1,10]])}))),function(){return e.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(e,n){var r=this;if(this._instance&&this._includesEventType(e)){this._listeners[e]&&this.removeEventListener(e);var i=function(i){var o=[];e===t.eventTypes.RESULT&&i.results&&i.results.length>0&&o.push(i.results[0][0].transcript),n&&n.apply(r,[i].concat(o))};this._instance.addEventListener(e,i),this._listeners[e]=i}return this}},{key:"removeEventListener",value:function(t){var e=this._listeners[t];return this._instance.removeEventListener(t,e),delete this._listeners[t],this}},{key:"cleanup",value:function(){var t=this;return this.stop(),Object.keys(this._listeners).forEach((function(e){return t.removeEventListener(e)})),this._instance=null,this}},{key:"_includesEventType",value:function(e){return!!Object.values(t.eventTypes).find((function(t){return t===e}))}},{key:"instance",get:function(){return this._instance},set:function(t){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}}]),t}();b(I,"defaultOptions",{grammars:null,lang:"en-US",continuous:!1,interimResults:!1,maxAlternatives:1,serviceURI:null}),b(I,"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 C=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en-US",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=e(null);n((function(){if(I.isSupported)return s.current=o||new I({lang:t,grammars:i}),function(){s.current.abort(),s.current.cleanup()}}),[t,i,o]);var c=r((function(){s.current&&s.current.start()}),[]),a=r((function(){s.current&&s.current.stop()}),[]),u=r((function(){s.current&&s.current.abort()}),[]),h=r((function(t,e){s.current&&s.current.addEventListener(t,e)}),[]),l=r((function(t,e){s.current&&s.current.removeEventListener(t,e)}),[]),f=r((function(){s.current&&s.current.cleanup()}),[]);return[s,{start:c,stop:a,abort:u,subscribe:h,unsubscribe:l,clean:f}]};function P(t){return Array.isArray?Array.isArray(t):"[object Array]"===G(t)}function N(t){return"string"==typeof t}function $(t){return"number"==typeof t}function T(t){return!0===t||!1===t||function(t){return F(t)&&null!==t}(t)&&"[object Boolean]"==G(t)}function F(t){return"object"==typeof t}function D(t){return null!=t}function U(t){return!t.trim().length}function G(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const z=Object.prototype.hasOwnProperty;class q{constructor(t){this._keys=[],this._keyMap={};let e=0;t.forEach((t=>{let n=K(t);e+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,e+=n.weight})),this._keys.forEach((t=>{t.weight/=e}))}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function K(t){let e=null,n=null,r=null,i=1;if(N(t)||P(t))r=t,e=W(t),n=H(t);else{if(!z.call(t,"name"))throw new Error((t=>`Missing ${t} property in key`)("name"));const o=t.name;if(r=o,z.call(t,"weight")&&(i=t.weight,i<=0))throw new Error((t=>`Property 'weight' in key '${t}' must be a positive integer`)(o));e=W(o),n=H(o)}return{path:e,id:n,weight:i,src:r}}function W(t){return P(t)?t:t.split(".")}function H(t){return P(t)?t.join("."):t}const Y={useExtendedSearch:!1,getFn:function(t,e){let n=[],r=!1;const i=(t,e,o)=>{if(D(t))if(e[o]){const s=t[e[o]];if(!D(s))return;if(o===e.length-1&&(N(s)||$(s)||T(s)))n.push(function(t){return null==t?"":function(t){if("string"==typeof t)return t;let e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(t)}(s));else if(P(s)){r=!0;for(let t=0,n=s.length;t<n;t+=1)i(s[t],e,o+1)}else e.length&&i(s,e,o+1)}else n.push(t)};return i(t,N(e)?e.split("."):e,0),r?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1};var B={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(t,e)=>t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1,includeMatches:!1,findAllMatches:!1,minMatchCharLength:1,location:0,threshold:.6,distance:100,...Y};const J=/[^ ]+/g;class V{constructor({getFn:t=B.getFn}={}){this.norm=function(t=3){const e=new Map,n=Math.pow(10,t);return{get(t){const r=t.match(J).length;if(e.has(r))return e.get(r);const i=1/Math.sqrt(r),o=parseFloat(Math.round(i*n)/n);return e.set(r,o),o},clear(){e.clear()}}}(3),this.getFn=t,this.isCreated=!1,this.setIndexRecords()}setSources(t=[]){this.docs=t}setIndexRecords(t=[]){this.records=t}setKeys(t=[]){this.keys=t,this._keysMap={},t.forEach(((t,e)=>{this._keysMap[t.id]=e}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,N(this.docs[0])?this.docs.forEach(((t,e)=>{this._addString(t,e)})):this.docs.forEach(((t,e)=>{this._addObject(t,e)})),this.norm.clear())}add(t){const e=this.size();N(t)?this._addString(t,e):this._addObject(t,e)}removeAt(t){this.records.splice(t,1);for(let e=t,n=this.size();e<n;e+=1)this.records[e].i-=1}getValueForItemAtKeyId(t,e){return t[this._keysMap[e]]}size(){return this.records.length}_addString(t,e){if(!D(t)||U(t))return;let n={v:t,i:e,n:this.norm.get(t)};this.records.push(n)}_addObject(t,e){let n={i:e,$:{}};this.keys.forEach(((e,r)=>{let i=this.getFn(t,e.path);if(D(i))if(P(i)){let t=[];const e=[{nestedArrIndex:-1,value:i}];for(;e.length;){const{nestedArrIndex:n,value:r}=e.pop();if(D(r))if(N(r)&&!U(r)){let e={v:r,i:n,n:this.norm.get(r)};t.push(e)}else P(r)&&r.forEach(((t,n)=>{e.push({nestedArrIndex:n,value:t})}))}n.$[r]=t}else if(!U(i)){let t={v:i,n:this.norm.get(i)};n.$[r]=t}})),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Q(t,e,{getFn:n=B.getFn}={}){const r=new V({getFn:n});return r.setKeys(t.map(K)),r.setSources(e),r.create(),r}function X(t,{errors:e=0,currentLocation:n=0,expectedLocation:r=0,distance:i=B.distance,ignoreLocation:o=B.ignoreLocation}={}){const s=e/t.length;if(o)return s;const c=Math.abs(r-n);return i?s+c/i:c?1:s}function Z(t,e,n,{location:r=B.location,distance:i=B.distance,threshold:o=B.threshold,findAllMatches:s=B.findAllMatches,minMatchCharLength:c=B.minMatchCharLength,includeMatches:a=B.includeMatches,ignoreLocation:u=B.ignoreLocation}={}){if(e.length>32)throw new Error(`Pattern length exceeds max of ${32}.`);const h=e.length,l=t.length,f=Math.max(0,Math.min(r,l));let d=o,p=f;const g=c>1||a,y=g?Array(l):[];let v;for(;(v=t.indexOf(e,p))>-1;){let t=X(e,{currentLocation:v,expectedLocation:f,distance:i,ignoreLocation:u});if(d=Math.min(t,d),p=v+h,g){let t=0;for(;t<h;)y[v+t]=1,t+=1}}p=-1;let m=[],w=1,b=h+l;const x=1<<h-1;for(let r=0;r<h;r+=1){let o=0,c=b;for(;o<c;){X(e,{errors:r,currentLocation:f+c,expectedLocation:f,distance:i,ignoreLocation:u})<=d?o=c:b=c,c=Math.floor((b-o)/2+o)}b=c;let a=Math.max(1,f-c+1),v=s?l:Math.min(f+c,l)+h,S=Array(v+2);S[v+1]=(1<<r)-1;for(let o=v;o>=a;o-=1){let s=o-1,c=n[t.charAt(s)];if(g&&(y[s]=+!!c),S[o]=(S[o+1]<<1|1)&c,r&&(S[o]|=(m[o+1]|m[o])<<1|1|m[o+1]),S[o]&x&&(w=X(e,{errors:r,currentLocation:s,expectedLocation:f,distance:i,ignoreLocation:u}),w<=d)){if(d=w,p=s,p<=f)break;a=Math.max(1,2*f-p)}}if(X(e,{errors:r+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:u})>d)break;m=S}const S={isMatch:p>=0,score:Math.max(.001,w)};if(g){const t=function(t=[],e=B.minMatchCharLength){let n=[],r=-1,i=-1,o=0;for(let s=t.length;o<s;o+=1){let s=t[o];s&&-1===r?r=o:s||-1===r||(i=o-1,i-r+1>=e&&n.push([r,i]),r=-1)}return t[o-1]&&o-r>=e&&n.push([r,o-1]),n}(y,c);t.length?a&&(S.indices=t):S.isMatch=!1}return S}function tt(t){let e={};for(let n=0,r=t.length;n<r;n+=1){const i=t.charAt(n);e[i]=(e[i]||0)|1<<r-n-1}return e}class et{constructor(t,{location:e=B.location,threshold:n=B.threshold,distance:r=B.distance,includeMatches:i=B.includeMatches,findAllMatches:o=B.findAllMatches,minMatchCharLength:s=B.minMatchCharLength,isCaseSensitive:c=B.isCaseSensitive,ignoreLocation:a=B.ignoreLocation}={}){if(this.options={location:e,threshold:n,distance:r,includeMatches:i,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:c,ignoreLocation:a},this.pattern=c?t:t.toLowerCase(),this.chunks=[],!this.pattern.length)return;const u=(t,e)=>{this.chunks.push({pattern:t,alphabet:tt(t),startIndex:e})},h=this.pattern.length;if(h>32){let t=0;const e=h%32,n=h-e;for(;t<n;)u(this.pattern.substr(t,32),t),t+=32;if(e){const t=h-32;u(this.pattern.substr(t),t)}}else u(this.pattern,0)}searchIn(t){const{isCaseSensitive:e,includeMatches:n}=this.options;if(e||(t=t.toLowerCase()),this.pattern===t){let e={isMatch:!0,score:0};return n&&(e.indices=[[0,t.length-1]]),e}const{location:r,distance:i,threshold:o,findAllMatches:s,minMatchCharLength:c,ignoreLocation:a}=this.options;let u=[],h=0,l=!1;this.chunks.forEach((({pattern:e,alphabet:f,startIndex:d})=>{const{isMatch:p,score:g,indices:y}=Z(t,e,f,{location:r+d,distance:i,threshold:o,findAllMatches:s,minMatchCharLength:c,includeMatches:n,ignoreLocation:a});p&&(l=!0),h+=g,p&&y&&(u=[...u,...y])}));let f={isMatch:l,score:l?h/this.chunks.length:1};return l&&n&&(f.indices=u),f}}class nt{constructor(t){this.pattern=t}static isMultiMatch(t){return rt(t,this.multiRegex)}static isSingleMatch(t){return rt(t,this.singleRegex)}search(){}}function rt(t,e){const n=t.match(e);return n?n[1]:null}class it extends nt{constructor(t,{location:e=B.location,threshold:n=B.threshold,distance:r=B.distance,includeMatches:i=B.includeMatches,findAllMatches:o=B.findAllMatches,minMatchCharLength:s=B.minMatchCharLength,isCaseSensitive:c=B.isCaseSensitive,ignoreLocation:a=B.ignoreLocation}={}){super(t),this._bitapSearch=new et(t,{location:e,threshold:n,distance:r,includeMatches:i,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:c,ignoreLocation:a})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}}class ot extends nt{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let e,n=0;const r=[],i=this.pattern.length;for(;(e=t.indexOf(this.pattern,n))>-1;)n=e+i,r.push([e,n-1]);const o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}const st=[class extends nt{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){const e=t===this.pattern;return{isMatch:e,score:e?0:1,indices:[0,this.pattern.length-1]}}},ot,class extends nt{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){const e=t.startsWith(this.pattern);return{isMatch:e,score:e?0:1,indices:[0,this.pattern.length-1]}}},class extends nt{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){const e=!t.startsWith(this.pattern);return{isMatch:e,score:e?0:1,indices:[0,t.length-1]}}},class extends nt{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){const e=!t.endsWith(this.pattern);return{isMatch:e,score:e?0:1,indices:[0,t.length-1]}}},class extends nt{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){const e=t.endsWith(this.pattern);return{isMatch:e,score:e?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},class extends nt{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){const e=-1===t.indexOf(this.pattern);return{isMatch:e,score:e?0:1,indices:[0,t.length-1]}}},it],ct=st.length,at=/ +(?=([^\"]*\"[^\"]*\")*[^\"]*$)/;const ut=new Set([it.type,ot.type]);class ht{constructor(t,{isCaseSensitive:e=B.isCaseSensitive,includeMatches:n=B.includeMatches,minMatchCharLength:r=B.minMatchCharLength,ignoreLocation:i=B.ignoreLocation,findAllMatches:o=B.findAllMatches,location:s=B.location,threshold:c=B.threshold,distance:a=B.distance}={}){this.query=null,this.options={isCaseSensitive:e,includeMatches:n,minMatchCharLength:r,findAllMatches:o,ignoreLocation:i,location:s,threshold:c,distance:a},this.pattern=e?t:t.toLowerCase(),this.query=function(t,e={}){return t.split("|").map((t=>{let n=t.trim().split(at).filter((t=>t&&!!t.trim())),r=[];for(let t=0,i=n.length;t<i;t+=1){const i=n[t];let o=!1,s=-1;for(;!o&&++s<ct;){const t=st[s];let n=t.isMultiMatch(i);n&&(r.push(new t(n,e)),o=!0)}if(!o)for(s=-1;++s<ct;){const t=st[s];let n=t.isSingleMatch(i);if(n){r.push(new t(n,e));break}}}return r}))}(this.pattern,this.options)}static condition(t,e){return e.useExtendedSearch}searchIn(t){const e=this.query;if(!e)return{isMatch:!1,score:1};const{includeMatches:n,isCaseSensitive:r}=this.options;t=r?t:t.toLowerCase();let i=0,o=[],s=0;for(let r=0,c=e.length;r<c;r+=1){const c=e[r];o.length=0,i=0;for(let e=0,r=c.length;e<r;e+=1){const r=c[e],{isMatch:a,indices:u,score:h}=r.search(t);if(!a){s=0,i=0,o.length=0;break}if(i+=1,s+=h,n){const t=r.constructor.type;ut.has(t)?o=[...o,...u]:o.push(u)}}if(i){let t={isMatch:!0,score:s/i};return n&&(t.indices=o),t}}return{isMatch:!1,score:1}}}const lt=[];function ft(t,e){for(let n=0,r=lt.length;n<r;n+=1){let r=lt[n];if(r.condition(t,e))return new r(t,e)}return new et(t,e)}const dt="$and",pt="$or",gt="$path",yt="$val",vt=t=>!(!t[dt]&&!t[pt]),mt=t=>({[dt]:Object.keys(t).map((e=>({[e]:t[e]})))});function wt(t,e,{auto:n=!0}={}){const r=t=>{let i=Object.keys(t);const o=(t=>!!t[gt])(t);if(!o&&i.length>1&&!vt(t))return r(mt(t));if((t=>!P(t)&&F(t)&&!vt(t))(t)){const r=o?t[gt]:i[0],s=o?t[yt]:t[r];if(!N(s))throw new Error((t=>`Invalid value for key ${t}`)(r));const c={keyId:H(r),pattern:s};return n&&(c.searcher=ft(s,e)),c}let s={children:[],operator:i[0]};return i.forEach((e=>{const n=t[e];P(n)&&n.forEach((t=>{s.children.push(r(t))}))})),s};return vt(t)||(t=mt(t)),r(t)}function bt(t,e){const n=t.matches;e.matches=[],D(n)&&n.forEach((t=>{if(!D(t.indices)||!t.indices.length)return;const{indices:n,value:r}=t;let i={indices:n,value:r};t.key&&(i.key=t.key.src),t.idx>-1&&(i.refIndex=t.idx),e.matches.push(i)}))}function xt(t,e){e.score=t.score}class St{constructor(t,e={},n){this.options={...B,...e},this.options.useExtendedSearch,this._keyStore=new q(this.options.keys),this.setCollection(t,n)}setCollection(t,e){if(this._docs=t,e&&!(e instanceof V))throw new Error("Incorrect 'index' type");this._myIndex=e||Q(this.options.keys,this._docs,{getFn:this.options.getFn})}add(t){D(t)&&(this._docs.push(t),this._myIndex.add(t))}remove(t=(()=>!1)){const e=[];for(let n=0,r=this._docs.length;n<r;n+=1){const i=this._docs[n];t(i,n)&&(this.removeAt(n),n-=1,r-=1,e.push(i))}return e}removeAt(t){this._docs.splice(t,1),this._myIndex.removeAt(t)}getIndex(){return this._myIndex}search(t,{limit:e=-1}={}){const{includeMatches:n,includeScore:r,shouldSort:i,sortFn:o,ignoreFieldNorm:s}=this.options;let c=N(t)?N(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return function(t,{ignoreFieldNorm:e=B.ignoreFieldNorm}){t.forEach((t=>{let n=1;t.matches.forEach((({key:t,norm:r,score:i})=>{const o=t?t.weight:null;n*=Math.pow(0===i&&o?Number.EPSILON:i,(o||1)*(e?1:r))})),t.score=n}))}(c,{ignoreFieldNorm:s}),i&&c.sort(o),$(e)&&e>-1&&(c=c.slice(0,e)),function(t,e,{includeMatches:n=B.includeMatches,includeScore:r=B.includeScore}={}){const i=[];return n&&i.push(bt),r&&i.push(xt),t.map((t=>{const{idx:n}=t,r={item:e[n],refIndex:n};return i.length&&i.forEach((e=>{e(t,r)})),r}))}(c,this._docs,{includeMatches:n,includeScore:r})}_searchStringList(t){const e=ft(t,this.options),{records:n}=this._myIndex,r=[];return n.forEach((({v:t,i:n,n:i})=>{if(!D(t))return;const{isMatch:o,score:s,indices:c}=e.searchIn(t);o&&r.push({item:t,idx:n,matches:[{score:s,value:t,norm:i,indices:c}]})})),r}_searchLogical(t){const e=wt(t,this.options),n=(t,e,r)=>{if(!t.children){const{keyId:n,searcher:i}=t,o=this._findMatches({key:this._keyStore.get(n),value:this._myIndex.getValueForItemAtKeyId(e,n),searcher:i});return o&&o.length?[{idx:r,item:e,matches:o}]:[]}switch(t.operator){case dt:{const i=[];for(let o=0,s=t.children.length;o<s;o+=1){const s=t.children[o],c=n(s,e,r);if(!c.length)return[];i.push(...c)}return i}case pt:{const i=[];for(let o=0,s=t.children.length;o<s;o+=1){const s=t.children[o],c=n(s,e,r);if(c.length){i.push(...c);break}}return i}}},r=this._myIndex.records,i={},o=[];return r.forEach((({$:t,i:r})=>{if(D(t)){let s=n(e,t,r);s.length&&(i[r]||(i[r]={idx:r,item:t,matches:[]},o.push(i[r])),s.forEach((({matches:t})=>{i[r].matches.push(...t)})))}})),o}_searchObjectList(t){const e=ft(t,this.options),{keys:n,records:r}=this._myIndex,i=[];return r.forEach((({$:t,i:r})=>{if(!D(t))return;let o=[];n.forEach(((n,r)=>{o.push(...this._findMatches({key:n,value:t[r],searcher:e}))})),o.length&&i.push({idx:r,item:t,matches:o})})),i}_findMatches({key:t,value:e,searcher:n}){if(!D(e))return[];let r=[];if(P(e))e.forEach((({v:e,i:i,n:o})=>{if(!D(e))return;const{isMatch:s,score:c,indices:a}=n.searchIn(e);s&&r.push({score:c,key:t,value:e,idx:i,norm:o,indices:a})}));else{const{v:i,n:o}=e,{isMatch:s,score:c,indices:a}=n.searchIn(i);s&&r.push({score:c,key:t,value:i,norm:o,indices:a})}return r}}St.version="6.4.6",St.createIndex=Q,St.parseIndex=function(t,{getFn:e=B.getFn}={}){const{keys:n,records:r}=t,i=new V({getFn:e});return i.setKeys(n),i.setIndexRecords(r),i},St.config=B,St.parseQuery=wt,function(...t){lt.push(...t)}(ht);var _t=function(e){var n=e.color,r=e.activeColor,i=e.isActive;return t.createElement("svg",{"data-testid":"__icon-root__",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 24 24"},t.createElement("g",null,t.createElement("path",{"data-testid":"__icon-path__",fill:n,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"}),i&&t.createElement("circle",{"data-testid":"__icon-active__",fill:r,cx:"16",cy:"4",r:"4"})))};_t.propTypes={color:c.string,activeColor:c.string,isActive:c.bool},_t.defaultProps={color:"black",activeColor:"red",isActive:!1};var Et=function(c){var u=c.children,f=c.commands,d=c.lang,p=c.grammars,g=c.timeout,y=c.ariaLabel,v=c.style,m=c.className,w=c.outlineStyle,b=c.onStart,x=c.onEnd,S=c.onSpeechStart,_=c.onSpeechEnd,E=c.onResult,L=c.onError,M=c.onNoMatch,O=c.__rsInstance,k=e(null),j=l(i(!1),2),A=j[0],R=j[1],P=l(C(d,p,O),2)[1],N=P.start,$=P.stop,T=P.subscribe,F=P.unsubscribe,D=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4;t=t?null===(e=Object.entries(t))||void 0===e?void 0:e.reduce((function(t,e){var n=l(e,2),r=n[0],i=n[1];return a({},r.toLowerCase(),i)}),{}):{};var r=function(e){var r=new St(Object.keys(t),{includeScore:!0,ignoreLocation:!0}).search(e).filter((function(t){return t.score<n}));if(null!=r&&r.length){var i,o,s=r[0].item.toLowerCase();return null===(i=(o=t)[s])||void 0===i?void 0:i.call(o,e)}return null};return r}(f),U=function t(e){K(),H(),F("start",V),F("end",t),F("speechstart",Q),F("speechend",X),F("result",Z),F("error",tt),F("nomatch",et),x&&x(e)},G=function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=e(-1),s=r((function(){clearTimeout(o.current),o.current=-1}),[]),c=r((function(){s(),o.current=setTimeout(t,i)}),[t,i,s]);return n((function(){return s}),[s]),[c,s]}(U,g),z=l(G,2),q=z[0],K=z[1],W=function(){try{R(!0),T("start",V),T("end",U),T("speechstart",Q),T("speechend",X),T("result",Z),T("error",tt),T("nomatch",et),N()}catch(t){tt(t)}},H=function(){try{R(!1),$()}catch(t){L&&L(t)}},Y=function(){W()},B=function(){!m&&w&&(k.current.style.outline=w)},J=function(){!m&&w&&(k.current.style.outline="none")},V=function(t){q(),b&&b(t)},Q=function(t){K(),S&&S(t)},X=function(t){q(),_&&_(t)},Z=function(t,e){K(),H(),D(e),E&&E(e,t)},tt=function(t){H(),L&&L(t)},et=function(t){K(),H(),M&&M(t)};return function(e){return I.isSupported?function(t){return"function"==typeof t}(e)?e(W,H,A):o(e)?s(e,h({},!A&&{onClick:Y})):t.createElement("button",{"data-testid":"__vocal-root__",ref:k,role:"button","aria-label":y,style:m?null:h({width:24,height:24,background:"none",border:"none",padding:0,cursor:A?"default":"pointer"},v),className:m,onFocus:B,onBlur:J,onClick:Y},t.createElement(_t,{isActive:A,iconColor:"#aaa"})):null}(u)};Et.propTypes={commands:c.objectOf(c.func),lang:c.string,grammars:c.object,timeout:c.number,ariaLabel:c.string,style:c.object,className:c.string,outlineStyle:c.string,onStart:c.func,onEnd:c.func,onSpeechStart:c.func,onSpeechEnd:c.func,onResult:c.func,onError:c.func,onNoMatch:c.func},Et.defaultProps={commands:null,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 Lt=I.isSupported;export{Et as default,Lt as isSupported,C as useVocal};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AdW50ZW1wcy92b2NhbC9kaXN0L2luZGV4LmVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0B1bnRlbXBzL3V0aWxzL2Rpc3QvZXNtL2Z1bmN0aW9uL2lzRnVuY3Rpb24uanMiLCIuLi9zcmMvaG9va3MvdXNlVm9jYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvZnVzZS5qcy9kaXN0L2Z1c2UuZXNtLmpzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbW1hbmRzLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvSWNvbi5qcyIsIi4uL3NyYy9jb21wb25lbnRzL1ZvY2FsLmpzIiwiLi4vc3JjL2hvb2tzL3VzZVRpbWVvdXQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0KHI9e3BhdGg6ZSxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHJlcXVpcmVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBAcm9sbHVwL3BsdWdpbi1jb21tb25qc1wiKX0obnVsbD09ZSYmci5wYXRoKX19LHIuZXhwb3J0cyksci5leHBvcnRzfSgoZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LnByb3RvdHlwZSxyPWUuaGFzT3duUHJvcGVydHksbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LG89bi5pdGVyYXRvcnx8XCJAQGl0ZXJhdG9yXCIsaT1uLmFzeW5jSXRlcmF0b3J8fFwiQEBhc3luY0l0ZXJhdG9yXCIsYT1uLnRvU3RyaW5nVGFnfHxcIkBAdG9TdHJpbmdUYWdcIjtmdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sXCJcIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cn19ZnVuY3Rpb24gdSh0LGUscixuKXt2YXIgbz1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGY/ZTpmLGk9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgXyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbih0LGUscil7dmFyIG49XCJzdXNwZW5kZWRTdGFydFwiO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKFwiZXhlY3V0aW5nXCI9PT1uKXRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7aWYoXCJjb21wbGV0ZWRcIj09PW4pe2lmKFwidGhyb3dcIj09PW8pdGhyb3cgaTtyZXR1cm4gUygpfWZvcihyLm1ldGhvZD1vLHIuYXJnPWk7Oyl7dmFyIGE9ci5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1iKGEscik7aWYoYyl7aWYoYz09PWwpY29udGludWU7cmV0dXJuIGN9fWlmKFwibmV4dFwiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZihcInRocm93XCI9PT1yLm1ldGhvZCl7aWYoXCJzdXNwZW5kZWRTdGFydFwiPT09bil0aHJvdyBuPVwiY29tcGxldGVkXCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZVwicmV0dXJuXCI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoXCJyZXR1cm5cIixyLmFyZyk7bj1cImV4ZWN1dGluZ1wiO3ZhciB1PXModCxlLHIpO2lmKFwibm9ybWFsXCI9PT11LnR5cGUpe2lmKG49ci5kb25lP1wiY29tcGxldGVkXCI6XCJzdXNwZW5kZWRZaWVsZFwiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fVwidGhyb3dcIj09PXUudHlwZSYmKG49XCJjb21wbGV0ZWRcIixyLm1ldGhvZD1cInRocm93XCIsci5hcmc9dS5hcmcpfX19KHQscixhKSxpfWZ1bmN0aW9uIHModCxlLHIpe3RyeXtyZXR1cm57dHlwZTpcIm5vcm1hbFwiLGFyZzp0LmNhbGwoZSxyKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6XCJ0aHJvd1wiLGFyZzp0fX19dC53cmFwPXU7dmFyIGw9e307ZnVuY3Rpb24gZigpe31mdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9dmFyIHY9e307dltvXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsZD15JiZ5KHkoeChbXSkpKTtkJiZkIT09ZSYmci5jYWxsKGQsbykmJih2PWQpO3ZhciBtPXAucHJvdG90eXBlPWYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gZyh0KXtbXCJuZXh0XCIsXCJ0aHJvd1wiLFwicmV0dXJuXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gdyh0LGUpe3ZhciBuO3RoaXMuX2ludm9rZT1mdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEoKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKG4sYSl7IWZ1bmN0aW9uIG4obyxpLGEsYyl7dmFyIHU9cyh0W29dLHQsaSk7aWYoXCJ0aHJvd1wiIT09dS50eXBlKXt2YXIgbD11LmFyZyxmPWwudmFsdWU7cmV0dXJuIGYmJlwib2JqZWN0XCI9PXR5cGVvZiBmJiZyLmNhbGwoZixcIl9fYXdhaXRcIik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bihcIm5leHRcIix0LGEsYyl9KSwoZnVuY3Rpb24odCl7bihcInRocm93XCIsdCxhLGMpfSkpOmUucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXtsLnZhbHVlPXQsYShsKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbihcInRocm93XCIsdCxhLGMpfSkpfWModS5hcmcpfShvLGksbixhKX0pKX1yZXR1cm4gbj1uP24udGhlbihhLGEpOmEoKX19ZnVuY3Rpb24gYih0LGUpe3ZhciByPXQuaXRlcmF0b3JbZS5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKGUuZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT1lLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihlLm1ldGhvZD1cInJldHVyblwiLGUuYXJnPXZvaWQgMCxiKHQsZSksXCJ0aHJvd1wiPT09ZS5tZXRob2QpKXJldHVybiBsO2UubWV0aG9kPVwidGhyb3dcIixlLmFyZz1uZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKX1yZXR1cm4gbH12YXIgbj1zKHIsdC5pdGVyYXRvcixlLmFyZyk7aWYoXCJ0aHJvd1wiPT09bi50eXBlKXJldHVybiBlLm1ldGhvZD1cInRocm93XCIsZS5hcmc9bi5hcmcsZS5kZWxlZ2F0ZT1udWxsLGw7dmFyIG89bi5hcmc7cmV0dXJuIG8/by5kb25lPyhlW3QucmVzdWx0TmFtZV09by52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLFwicmV0dXJuXCIhPT1lLm1ldGhvZCYmKGUubWV0aG9kPVwibmV4dFwiLGUuYXJnPXZvaWQgMCksZS5kZWxlZ2F0ZT1udWxsLGwpOm86KGUubWV0aG9kPVwidGhyb3dcIixlLmFyZz1uZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIiksZS5kZWxlZ2F0ZT1udWxsLGwpfWZ1bmN0aW9uIEUodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gTyh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT1cIm5vcm1hbFwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBfKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzpcInJvb3RcIn1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIHgodCl7aWYodCl7dmFyIGU9dFtvXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBuPS0xLGk9ZnVuY3Rpb24gZSgpe2Zvcig7KytuPHQubGVuZ3RoOylpZihyLmNhbGwodCxuKSlyZXR1cm4gZS52YWx1ZT10W25dLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXZvaWQgMCxlLmRvbmU9ITAsZX07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpTfX1mdW5jdGlvbiBTKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gaC5wcm90b3R5cGU9bS5jb25zdHJ1Y3Rvcj1wLHAuY29uc3RydWN0b3I9aCxoLmRpc3BsYXlOYW1lPWMocCxhLFwiR2VuZXJhdG9yRnVuY3Rpb25cIiksdC5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PWh8fFwiR2VuZXJhdG9yRnVuY3Rpb25cIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQscCk6KHQuX19wcm90b19fPXAsYyh0LGEsXCJHZW5lcmF0b3JGdW5jdGlvblwiKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSx0fSx0LmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxnKHcucHJvdG90eXBlKSx3LnByb3RvdHlwZVtpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LkFzeW5jSXRlcmF0b3I9dyx0LmFzeW5jPWZ1bmN0aW9uKGUscixuLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IHcodShlLHIsbixvKSxpKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxnKG0pLGMobSxhLFwiR2VuZXJhdG9yXCIpLG1bb109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiW29iamVjdCBHZW5lcmF0b3JdXCJ9LHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2gocik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIHIoKXtmb3IoO2UubGVuZ3RoOyl7dmFyIG49ZS5wb3AoKTtpZihuIGluIHQpcmV0dXJuIHIudmFsdWU9bixyLmRvbmU9ITEscn1yZXR1cm4gci5kb25lPSEwLHJ9fSx0LnZhbHVlcz14LF8ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChPKSwhdClmb3IodmFyIGUgaW4gdGhpcylcInRcIj09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZihcInRocm93XCI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIGEudHlwZT1cInRocm93XCIsYS5hcmc9dCxlLm5leHQ9cixuJiYoZS5tZXRob2Q9XCJuZXh0XCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBvPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtvPj0wOy0tbyl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW29dLGE9aS5jb21wbGV0aW9uO2lmKFwicm9vdFwiPT09aS50cnlMb2MpcmV0dXJuIG4oXCJlbmRcIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIGM9ci5jYWxsKGksXCJjYXRjaExvY1wiKSx1PXIuY2FsbChpLFwiZmluYWxseUxvY1wiKTtpZihjJiZ1KXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCF1KXRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLFwiZmluYWxseUxvY1wiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKFwiYnJlYWtcIj09PXR8fFwiY29udGludWVcIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD1cIm5leHRcIix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGwpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoXCJ0aHJvd1wiPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVyblwiYnJlYWtcIj09PXQudHlwZXx8XCJjb250aW51ZVwiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzpcInJldHVyblwiPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9XCJyZXR1cm5cIix0aGlzLm5leHQ9XCJlbmRcIik6XCJub3JtYWxcIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxsfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLE8ociksbH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLnRyeUxvYz09PXQpe3ZhciBuPXIuY29tcGxldGlvbjtpZihcInRocm93XCI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO08ocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOngodCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sXCJuZXh0XCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksbH19LHR9KHQuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT1lfWNhdGNoKHQpe0Z1bmN0aW9uKFwiclwiLFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShlKX19KSk7ZnVuY3Rpb24gZSh0LGUscixuLG8saSxhKXt0cnl7dmFyIGM9dFtpXShhKSx1PWMudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcih0KX1jLmRvbmU/ZSh1KTpQcm9taXNlLnJlc29sdmUodSkudGhlbihuLG8pfXZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGkpe3ZhciBhPXQuYXBwbHkocixuKTtmdW5jdGlvbiBjKHQpe2UoYSxvLGksYyx1LFwibmV4dFwiLHQpfWZ1bmN0aW9uIHUodCl7ZShhLG8saSxjLHUsXCJ0aHJvd1wiLHQpfWModm9pZCAwKX0pKX19O3ZhciBuPWZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9O3ZhciBvPWZ1bmN0aW9uKHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSl7dmFyIHI9W10sbj0hMCxvPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIGEsYz10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGE9Yy5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGEudmFsdWUpLCFlfHxyLmxlbmd0aCE9PWUpO249ITApO31jYXRjaCh0KXtvPSEwLGk9dH1maW5hbGx5e3RyeXtufHxudWxsPT1jLnJldHVybnx8Yy5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgaX19cmV0dXJuIHJ9fTt2YXIgaT1mdW5jdGlvbih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufTt2YXIgYT1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBpKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1yJiZ0LmNvbnN0cnVjdG9yJiYocj10LmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1yfHxcIlNldFwiPT09cj9BcnJheS5mcm9tKHQpOlwiQXJndW1lbnRzXCI9PT1yfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKT9pKHQsZSk6dm9pZCAwfX07dmFyIGM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfTt2YXIgdT1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQpfHxvKHQsZSl8fGEodCxlKXx8YygpfTt2YXIgcz1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9O2Z1bmN0aW9uIGwodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXZhciBmPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZSYmbCh0LnByb3RvdHlwZSxlKSxyJiZsKHQsciksdH07dmFyIGg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fSxwPWZ1bmN0aW9uKCl7cmV0dXJuISFuYXZpZ2F0b3IucGVybWlzc2lvbnN9LHY9ZnVuY3Rpb24oKXtyZXR1cm4hIW5hdmlnYXRvci5tZWRpYURldmljZXN9O2Z1bmN0aW9uIHkodCxlLHIsbixvLGksYSl7dHJ5e3ZhciBjPXRbaV0oYSksdT1jLnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIHIodCl9Yy5kb25lP2UodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixvKX1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLG8pe3ZhciBpPXQuYXBwbHkoZSxyKTtmdW5jdGlvbiBhKHQpe3koaSxuLG8sYSxjLFwibmV4dFwiLHQpfWZ1bmN0aW9uIGModCl7eShpLG4sbyxhLGMsXCJ0aHJvd1wiLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXt2YXIgcj1bXSxuPSEwLG89ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgYSxjPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1jLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIWV8fHIubGVuZ3RoIT09ZSk7bj0hMCk7fWNhdGNoKHQpe289ITAsaT10fWZpbmFsbHl7dHJ5e258fG51bGw9PWMucmV0dXJufHxjLnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBpfX1yZXR1cm4gcn19KHQsZSl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGcodCxlKTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PXJ8fFwiU2V0XCI9PT1yP0FycmF5LmZyb20odCk6XCJBcmd1bWVudHNcIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2codCxlKTp2b2lkIDB9fSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gZyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufXZhciB3PWZ1bmN0aW9uKCl7dmFyIHQ9ZChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdChlKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIHQ9ZChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdChyLG4pe3ZhciBvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcCgpfHxuKG5ldyBET01FeGNlcHRpb24oXCJOYXZpZ2F0b3IgQVBJOiBwZXJtaXNzaW9ucyBub3Qgc3VwcG9ydGVkXCIsXCJOT1RfU1VQUE9SVEVEX0VSUlwiKSksdC5wcmV2PTEsdC5uZXh0PTQsbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOmV9KTtjYXNlIDQ6bz10LnNlbnQsaT1mdW5jdGlvbiB0KGUpe28ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLHQpLGIoZS50YXJnZXQuc3RhdGUscixuKX0sby5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsaSksYihvLnN0YXRlLHIsbiksdC5uZXh0PTEzO2JyZWFrO2Nhc2UgMTA6dC5wcmV2PTEwLHQudDA9dC5jYXRjaCgxKSxuKHQudDApO2Nhc2UgMTM6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsMTBdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxiPWZ1bmN0aW9uKHQsZSxyKXtzd2l0Y2godCl7Y2FzZVwiZGVuaWVkXCI6cihuZXcgRE9NRXhjZXB0aW9uKFwiUGVybWlzc2lvbiBkZW5pZWRcIixcIk5PVF9BTExPV0VEX0VSUlwiKSk7YnJlYWs7ZGVmYXVsdDplKHQpfX0sRT1mdW5jdGlvbigpe3ZhciB0PWQocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoZSxyKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdChcInJldHVyblwiLG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIHQ9ZChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdChuLG8pe3ZhciBpLGEsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBwKCkmJnYoKXx8byhuZXcgRE9NRXhjZXB0aW9uKFwiTmF2aWdhdG9yIEFQSTogcGVybWlzc2lvbnMgb3IgTmF2aWdhdG9yIEFQSTogbWVkaWFEZXZpY2VzIG5vdCBzdXBwb3J0ZWRcIixcIk5PVF9TVVBQT1JURURfRVJSXCIpKSx0LnByZXY9MSx0LnQwPVByb21pc2UsdC5uZXh0PTUsdyhlKTtjYXNlIDU6cmV0dXJuIHQudDE9dC5zZW50LHQubmV4dD04LG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHIpO2Nhc2UgODpyZXR1cm4gdC50Mj10LnNlbnQsdC50Mz1bdC50MSx0LnQyXSx0Lm5leHQ9MTIsdC50MC5hbGwuY2FsbCh0LnQwLHQudDMpO2Nhc2UgMTI6aT10LnNlbnQsYT1tKGksMiksYz1hWzFdLG4oYyksdC5uZXh0PTIxO2JyZWFrO2Nhc2UgMTg6dC5wcmV2PTE4LHQudDQ9dC5jYXRjaCgxKSxvKHQudDQpO2Nhc2UgMjE6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsMThdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIE8odCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIF8odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/TyhPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2godCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOk8oT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciByPXRoaXM7cyh0aGlzLGUpLGgodGhpcyxcIl9pbnN0YW5jZVwiLG51bGwpLGgodGhpcyxcIl9saXN0ZW5lcnNcIixudWxsKTt2YXIgbj1lLl9yZXNvbHZlU3BlZWNoUmVjb2duaXRpb24oKTtpZighbil0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFwiU3BlZWNoUmVjb2duaXRpb24gbm90IHN1cHBvcnRlZFwiLFwiTk9UX1NVUFBPUlRFRF9FUlJcIik7dGhpcy5faW5zdGFuY2U9bmV3IG4sdGhpcy5fbGlzdGVuZXJzPXt9LE9iamVjdC5lbnRyaWVzKF8oXyh7fSxlLmRlZmF1bHRPcHRpb25zKSx0fHx7fSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXUodCwyKSxvPW5bMF0saT1uWzFdO2lmKFwiZ3JhbW1hcnNcIj09PW8mJiFpKXt2YXIgYT1lLl9yZXNvbHZlU3BlZWNoR3JhbW1hckxpc3QoKTthJiYoaT1uZXcgYSl9ci5faW5zdGFuY2Vbb109aX0pKX12YXIgbjtyZXR1cm4gZihlLG51bGwsW3trZXk6XCJpc1N1cHBvcnRlZFwiLGdldDpmdW5jdGlvbigpe3JldHVybiEhZS5fcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uKCkmJiEhcCgpJiYhIXYoKX0sc2V0OmZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3Qgc2V0IGlzU3VwcG9ydGVkIGRpcmVjdGx5LlwiKX19XSksZihlLFt7a2V5Olwic3RhcnRcIix2YWx1ZToobj1yKHQubWFyaygoZnVuY3Rpb24gZSgpe3ZhciByO3JldHVybiB0LndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLl9pbnN0YW5jZSl7dC5uZXh0PTE0O2JyZWFrfXJldHVybiB0LnByZXY9MSx0Lm5leHQ9NCxFKFwibWljcm9waG9uZVwiLHthdWRpbzohMH0pO2Nhc2UgNDppZih0LnNlbnQpe3QubmV4dD03O2JyZWFrfXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byByZXRyaWV2ZSB0aGUgc3RyZWFtIGZyb20gbWVkaWEgZGV2aWNlXCIpO2Nhc2UgNzp0aGlzLl9pbnN0YW5jZS5zdGFydCgpLHQubmV4dD0xNDticmVhaztjYXNlIDEwOnQucHJldj0xMCx0LnQwPXQuY2F0Y2goMSksKHI9dGhpcy5fbGlzdGVuZXJzLmVycm9yKSYmcih0LnQwKTtjYXNlIDE0OnJldHVybiB0LmFicnVwdChcInJldHVyblwiLHRoaXMpO2Nhc2UgMTU6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLGUsdGhpcyxbWzEsMTBdXSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6XCJzdG9wXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLnN0b3AoKSx0aGlzfX0se2tleTpcImFib3J0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmFib3J0KCksdGhpc319LHtrZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzO2lmKHRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbmNsdWRlc0V2ZW50VHlwZSh0KSl7dGhpcy5fbGlzdGVuZXJzW3RdJiZ0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodCk7dmFyIG89ZnVuY3Rpb24obyl7dmFyIGk9W107dD09PWUuZXZlbnRUeXBlcy5SRVNVTFQmJm8ucmVzdWx0cyYmby5yZXN1bHRzLmxlbmd0aD4wJiZpLnB1c2goby5yZXN1bHRzWzBdWzBdLnRyYW5zY3JpcHQpLHImJnIuYXBwbHkobixbb10uY29uY2F0KGkpKX07dGhpcy5faW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcih0LG8pLHRoaXMuX2xpc3RlbmVyc1t0XT1vfXJldHVybiB0aGlzfX0se2tleTpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9saXN0ZW5lcnNbdF07cmV0dXJuIHRoaXMuX2luc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKSxkZWxldGUgdGhpcy5fbGlzdGVuZXJzW3RdLHRoaXN9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5zdG9wKCksT2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUpfSkpLHRoaXMuX2luc3RhbmNlPW51bGwsdGhpc319LHtrZXk6XCJfaW5jbHVkZXNFdmVudFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4hIU9iamVjdC52YWx1ZXMoZS5ldmVudFR5cGVzKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSl9fSx7a2V5OlwiaW5zdGFuY2VcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5zdGFuY2V9LHNldDpmdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2Fubm90IHNldCBpbnN0YW5jZSBkaXJlY3RseS5cIil9fV0sW3trZXk6XCJfcmVzb2x2ZVNwZWVjaFJlY29nbml0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LlNwZWVjaFJlY29nbml0aW9ufHx3aW5kb3cud2Via2l0U3BlZWNoUmVjb2duaXRpb258fHdpbmRvdy5tb3pTcGVlY2hSZWNvZ25pdGlvbnx8d2luZG93Lm1zU3BlZWNoUmVjb2duaXRpb259fSx7a2V5OlwiX3Jlc29sdmVTcGVlY2hHcmFtbWFyTGlzdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5TcGVlY2hHcmFtbWFyTGlzdHx8d2luZG93LndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0fHx3aW5kb3cubW96U3BlZWNoR3JhbW1hckxpc3R8fHdpbmRvdy5tc1NwZWVjaEdyYW1tYXJMaXN0fX1dKSxlfSgpO2goeCxcImRlZmF1bHRPcHRpb25zXCIse2dyYW1tYXJzOm51bGwsbGFuZzpcImVuLVVTXCIsY29udGludW91czohMSxpbnRlcmltUmVzdWx0czohMSxtYXhBbHRlcm5hdGl2ZXM6MSxzZXJ2aWNlVVJJOm51bGx9KSxoKHgsXCJldmVudFR5cGVzXCIse0FVRElPX0VORDpcImF1ZGlvZW5kXCIsQVVESU9fU1RBUlQ6XCJhdWRpb3N0YXJ0XCIsRU5EOlwiZW5kXCIsRVJST1I6XCJlcnJvclwiLE5PX01BVENIOlwibm9tYXRjaFwiLFJFU1VMVDpcInJlc3VsdFwiLFNPVU5EX0VORDpcInNvdW5kZW5kXCIsU09VTkRfU1RBUlQ6XCJzb3VuZHN0YXJ0XCIsU1BFRUNIX0VORDpcInNwZWVjaGVuZFwiLFNQRUVDSF9TVEFSVDpcInNwZWVjaHN0YXJ0XCIsU1RBUlQ6XCJzdGFydFwifSk7ZXhwb3J0e3ggYXMgVm9jYWx9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndVpYTXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMMjV2WkdWZmJXOWtkV3hsY3k5eVpXZGxibVZ5WVhSdmNpMXlkVzUwYVcxbEwzSjFiblJwYldVdWFuTWlMQ0l1TGk5dWIyUmxYMjF2WkhWc1pYTXZRR0poWW1Wc0wzSjFiblJwYldVdmFHVnNjR1Z5Y3k5aGMzbHVZMVJ2UjJWdVpYSmhkRzl5TG1weklpd2lMaTR2Ym05a1pWOXRiMlIxYkdWekwwQmlZV0psYkM5eWRXNTBhVzFsTDJobGJIQmxjbk12WVhKeVlYbFhhWFJvU0c5c1pYTXVhbk1pTENJdUxpOXViMlJsWDIxdlpIVnNaWE12UUdKaFltVnNMM0oxYm5ScGJXVXZhR1ZzY0dWeWN5OXBkR1Z5WVdKc1pWUnZRWEp5WVhsTWFXMXBkQzVxY3lJc0lpNHVMMjV2WkdWZmJXOWtkV3hsY3k5QVltRmlaV3d2Y25WdWRHbHRaUzlvWld4d1pYSnpMMkZ5Y21GNVRHbHJaVlJ2UVhKeVlYa3Vhbk1pTENJdUxpOXViMlJsWDIxdlpIVnNaWE12UUdKaFltVnNMM0oxYm5ScGJXVXZhR1ZzY0dWeWN5OTFibk4xY0hCdmNuUmxaRWwwWlhKaFlteGxWRzlCY25KaGVTNXFjeUlzSWk0dUwyNXZaR1ZmYlc5a2RXeGxjeTlBWW1GaVpXd3ZjblZ1ZEdsdFpTOW9aV3h3WlhKekwyNXZia2wwWlhKaFlteGxVbVZ6ZEM1cWN5SXNJaTR1TDI1dlpHVmZiVzlrZFd4bGN5OUFZbUZpWld3dmNuVnVkR2x0WlM5b1pXeHdaWEp6TDNOc2FXTmxaRlJ2UVhKeVlYa3Vhbk1pTENJdUxpOXViMlJsWDIxdlpIVnNaWE12UUdKaFltVnNMM0oxYm5ScGJXVXZhR1ZzY0dWeWN5OWpiR0Z6YzBOaGJHeERhR1ZqYXk1cWN5SXNJaTR1TDI1dlpHVmZiVzlrZFd4bGN5OUFZbUZpWld3dmNuVnVkR2x0WlM5b1pXeHdaWEp6TDJOeVpXRjBaVU5zWVhOekxtcHpJaXdpTGk0dmJtOWtaVjl0YjJSMWJHVnpMMEJpWVdKbGJDOXlkVzUwYVcxbEwyaGxiSEJsY25NdlpHVm1hVzVsVUhKdmNHVnlkSGt1YW5NaUxDSXVMaTl1YjJSbFgyMXZaSFZzWlhNdlFIVnVkR1Z0Y0hNdmRYTmxjaTF3WlhKdGFYTnphVzl1Y3kxMWRHbHNjeTlrYVhOMEwybHVaR1Y0TG1WekxtcHpJaXdpTGk0dmMzSmpMMVp2WTJGc0xtcHpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREUwTFhCeVpYTmxiblFzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdVhHNGdLaTljYmx4dWRtRnlJSEoxYm5ScGJXVWdQU0FvWm5WdVkzUnBiMjRnS0dWNGNHOXlkSE1wSUh0Y2JpQWdYQ0oxYzJVZ2MzUnlhV04wWENJN1hHNWNiaUFnZG1GeUlFOXdJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaVHRjYmlBZ2RtRnlJR2hoYzA5M2JpQTlJRTl3TG1oaGMwOTNibEJ5YjNCbGNuUjVPMXh1SUNCMllYSWdkVzVrWldacGJtVmtPeUF2THlCTmIzSmxJR052YlhCeVpYTnphV0pzWlNCMGFHRnVJSFp2YVdRZ01DNWNiaUFnZG1GeUlDUlRlVzFpYjJ3Z1BTQjBlWEJsYjJZZ1UzbHRZbTlzSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnUHlCVGVXMWliMndnT2lCN2ZUdGNiaUFnZG1GeUlHbDBaWEpoZEc5eVUzbHRZbTlzSUQwZ0pGTjViV0p2YkM1cGRHVnlZWFJ2Y2lCOGZDQmNJa0JBYVhSbGNtRjBiM0pjSWp0Y2JpQWdkbUZ5SUdGemVXNWpTWFJsY21GMGIzSlRlVzFpYjJ3Z1BTQWtVM2x0WW05c0xtRnplVzVqU1hSbGNtRjBiM0lnZkh3Z1hDSkFRR0Z6ZVc1alNYUmxjbUYwYjNKY0lqdGNiaUFnZG1GeUlIUnZVM1J5YVc1blZHRm5VM2x0WW05c0lEMGdKRk41YldKdmJDNTBiMU4wY21sdVoxUmhaeUI4ZkNCY0lrQkFkRzlUZEhKcGJtZFVZV2RjSWp0Y2JseHVJQ0JtZFc1amRHbHZiaUJrWldacGJtVW9iMkpxTENCclpYa3NJSFpoYkhWbEtTQjdYRzRnSUNBZ1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLRzlpYWl3Z2EyVjVMQ0I3WEc0Z0lDQWdJQ0IyWVd4MVpUb2dkbUZzZFdVc1hHNGdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQjBjblZsTEZ4dUlDQWdJQ0FnWTI5dVptbG5kWEpoWW14bE9pQjBjblZsTEZ4dUlDQWdJQ0FnZDNKcGRHRmliR1U2SUhSeWRXVmNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnYjJKcVcydGxlVjA3WEc0Z0lIMWNiaUFnZEhKNUlIdGNiaUFnSUNBdkx5QkpSU0E0SUdoaGN5QmhJR0p5YjJ0bGJpQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtnZEdoaGRDQnZibXg1SUhkdmNtdHpJRzl1SUVSUFRTQnZZbXBsWTNSekxseHVJQ0FnSUdSbFptbHVaU2g3ZlN3Z1hDSmNJaWs3WEc0Z0lIMGdZMkYwWTJnZ0tHVnljaWtnZTF4dUlDQWdJR1JsWm1sdVpTQTlJR1oxYm1OMGFXOXVLRzlpYWl3Z2EyVjVMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhbHRyWlhsZElEMGdkbUZzZFdVN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlIZHlZWEFvYVc1dVpYSkdiaXdnYjNWMFpYSkdiaXdnYzJWc1ppd2dkSEo1VEc5amMweHBjM1FwSUh0Y2JpQWdJQ0F2THlCSlppQnZkWFJsY2tadUlIQnliM1pwWkdWa0lHRnVaQ0J2ZFhSbGNrWnVMbkJ5YjNSdmRIbHdaU0JwY3lCaElFZGxibVZ5WVhSdmNpd2dkR2hsYmlCdmRYUmxja1p1TG5CeWIzUnZkSGx3WlNCcGJuTjBZVzVqWlc5bUlFZGxibVZ5WVhSdmNpNWNiaUFnSUNCMllYSWdjSEp2ZEc5SFpXNWxjbUYwYjNJZ1BTQnZkWFJsY2tadUlDWW1JRzkxZEdWeVJtNHVjSEp2ZEc5MGVYQmxJR2x1YzNSaGJtTmxiMllnUjJWdVpYSmhkRzl5SUQ4Z2IzVjBaWEpHYmlBNklFZGxibVZ5WVhSdmNqdGNiaUFnSUNCMllYSWdaMlZ1WlhKaGRHOXlJRDBnVDJKcVpXTjBMbU55WldGMFpTaHdjbTkwYjBkbGJtVnlZWFJ2Y2k1d2NtOTBiM1I1Y0dVcE8xeHVJQ0FnSUhaaGNpQmpiMjUwWlhoMElEMGdibVYzSUVOdmJuUmxlSFFvZEhKNVRHOWpjMHhwYzNRZ2ZId2dXMTBwTzF4dVhHNGdJQ0FnTHk4Z1ZHaGxJQzVmYVc1MmIydGxJRzFsZEdodlpDQjFibWxtYVdWeklIUm9aU0JwYlhCc1pXMWxiblJoZEdsdmJuTWdiMllnZEdobElDNXVaWGgwTEZ4dUlDQWdJQzh2SUM1MGFISnZkeXdnWVc1a0lDNXlaWFIxY200Z2JXVjBhRzlrY3k1Y2JpQWdJQ0JuWlc1bGNtRjBiM0l1WDJsdWRtOXJaU0E5SUcxaGEyVkpiblp2YTJWTlpYUm9iMlFvYVc1dVpYSkdiaXdnYzJWc1ppd2dZMjl1ZEdWNGRDazdYRzVjYmlBZ0lDQnlaWFIxY200Z1oyVnVaWEpoZEc5eU8xeHVJQ0I5WEc0Z0lHVjRjRzl5ZEhNdWQzSmhjQ0E5SUhkeVlYQTdYRzVjYmlBZ0x5OGdWSEo1TDJOaGRHTm9JR2hsYkhCbGNpQjBieUJ0YVc1cGJXbDZaU0JrWlc5d2RHbHRhWHBoZEdsdmJuTXVJRkpsZEhWeWJuTWdZU0JqYjIxd2JHVjBhVzl1WEc0Z0lDOHZJSEpsWTI5eVpDQnNhV3RsSUdOdmJuUmxlSFF1ZEhKNVJXNTBjbWxsYzF0cFhTNWpiMjF3YkdWMGFXOXVMaUJVYUdseklHbHVkR1Z5Wm1GalpTQmpiM1ZzWkZ4dUlDQXZMeUJvWVhabElHSmxaVzRnS0dGdVpDQjNZWE1nY0hKbGRtbHZkWE5zZVNrZ1pHVnphV2R1WldRZ2RHOGdkR0ZyWlNCaElHTnNiM04xY21VZ2RHOGdZbVZjYmlBZ0x5OGdhVzUyYjJ0bFpDQjNhWFJvYjNWMElHRnlaM1Z0Wlc1MGN5d2dZblYwSUdsdUlHRnNiQ0IwYUdVZ1kyRnpaWE1nZDJVZ1kyRnlaU0JoWW05MWRDQjNaVnh1SUNBdkx5QmhiSEpsWVdSNUlHaGhkbVVnWVc0Z1pYaHBjM1JwYm1jZ2JXVjBhRzlrSUhkbElIZGhiblFnZEc4Z1kyRnNiQ3dnYzI4Z2RHaGxjbVVuY3lCdWJ5QnVaV1ZrWEc0Z0lDOHZJSFJ2SUdOeVpXRjBaU0JoSUc1bGR5Qm1kVzVqZEdsdmJpQnZZbXBsWTNRdUlGZGxJR05oYmlCbGRtVnVJR2RsZENCaGQyRjVJSGRwZEdnZ1lYTnpkVzFwYm1kY2JpQWdMeThnZEdobElHMWxkR2h2WkNCMFlXdGxjeUJsZUdGamRHeDVJRzl1WlNCaGNtZDFiV1Z1ZEN3Z2MybHVZMlVnZEdoaGRDQm9ZWEJ3Wlc1eklIUnZJR0psSUhSeWRXVmNiaUFnTHk4Z2FXNGdaWFpsY25rZ1kyRnpaU3dnYzI4Z2QyVWdaRzl1SjNRZ2FHRjJaU0IwYnlCMGIzVmphQ0IwYUdVZ1lYSm5kVzFsYm5SeklHOWlhbVZqZEM0Z1ZHaGxYRzRnSUM4dklHOXViSGtnWVdSa2FYUnBiMjVoYkNCaGJHeHZZMkYwYVc5dUlISmxjWFZwY21Wa0lHbHpJSFJvWlNCamIyMXdiR1YwYVc5dUlISmxZMjl5WkN3Z2QyaHBZMmhjYmlBZ0x5OGdhR0Z6SUdFZ2MzUmhZbXhsSUhOb1lYQmxJR0Z1WkNCemJ5Qm9iM0JsWm5Wc2JIa2djMmh2ZFd4a0lHSmxJR05vWldGd0lIUnZJR0ZzYkc5allYUmxMbHh1SUNCbWRXNWpkR2x2YmlCMGNubERZWFJqYUNobWJpd2diMkpxTENCaGNtY3BJSHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSHNnZEhsd1pUb2dYQ0p1YjNKdFlXeGNJaXdnWVhKbk9pQm1iaTVqWVd4c0tHOWlhaXdnWVhKbktTQjlPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVnljaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSHNnZEhsd1pUb2dYQ0owYUhKdmQxd2lMQ0JoY21jNklHVnljaUI5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhaaGNpQkhaVzVUZEdGMFpWTjFjM0JsYm1SbFpGTjBZWEowSUQwZ1hDSnpkWE53Wlc1a1pXUlRkR0Z5ZEZ3aU8xeHVJQ0IyWVhJZ1IyVnVVM1JoZEdWVGRYTndaVzVrWldSWmFXVnNaQ0E5SUZ3aWMzVnpjR1Z1WkdWa1dXbGxiR1JjSWp0Y2JpQWdkbUZ5SUVkbGJsTjBZWFJsUlhobFkzVjBhVzVuSUQwZ1hDSmxlR1ZqZFhScGJtZGNJanRjYmlBZ2RtRnlJRWRsYmxOMFlYUmxRMjl0Y0d4bGRHVmtJRDBnWENKamIyMXdiR1YwWldSY0lqdGNibHh1SUNBdkx5QlNaWFIxY201cGJtY2dkR2hwY3lCdlltcGxZM1FnWm5KdmJTQjBhR1VnYVc1dVpYSkdiaUJvWVhNZ2RHaGxJSE5oYldVZ1pXWm1aV04wSUdGelhHNGdJQzh2SUdKeVpXRnJhVzVuSUc5MWRDQnZaaUIwYUdVZ1pHbHpjR0YwWTJnZ2MzZHBkR05vSUhOMFlYUmxiV1Z1ZEM1Y2JpQWdkbUZ5SUVOdmJuUnBiblZsVTJWdWRHbHVaV3dnUFNCN2ZUdGNibHh1SUNBdkx5QkVkVzF0ZVNCamIyNXpkSEoxWTNSdmNpQm1kVzVqZEdsdmJuTWdkR2hoZENCM1pTQjFjMlVnWVhNZ2RHaGxJQzVqYjI1emRISjFZM1J2Y2lCaGJtUmNiaUFnTHk4Z0xtTnZibk4wY25WamRHOXlMbkJ5YjNSdmRIbHdaU0J3Y205d1pYSjBhV1Z6SUdadmNpQm1kVzVqZEdsdmJuTWdkR2hoZENCeVpYUjFjbTRnUjJWdVpYSmhkRzl5WEc0Z0lDOHZJRzlpYW1WamRITXVJRVp2Y2lCbWRXeHNJSE53WldNZ1kyOXRjR3hwWVc1alpTd2dlVzkxSUcxaGVTQjNhWE5vSUhSdklHTnZibVpwWjNWeVpTQjViM1Z5WEc0Z0lDOHZJRzFwYm1sbWFXVnlJRzV2ZENCMGJ5QnRZVzVuYkdVZ2RHaGxJRzVoYldWeklHOW1JSFJvWlhObElIUjNieUJtZFc1amRHbHZibk11WEc0Z0lHWjFibU4wYVc5dUlFZGxibVZ5WVhSdmNpZ3BJSHQ5WEc0Z0lHWjFibU4wYVc5dUlFZGxibVZ5WVhSdmNrWjFibU4wYVc5dUtDa2dlMzFjYmlBZ1puVnVZM1JwYjI0Z1IyVnVaWEpoZEc5eVJuVnVZM1JwYjI1UWNtOTBiM1I1Y0dVb0tTQjdmVnh1WEc0Z0lDOHZJRlJvYVhNZ2FYTWdZU0J3YjJ4NVptbHNiQ0JtYjNJZ0pVbDBaWEpoZEc5eVVISnZkRzkwZVhCbEpTQm1iM0lnWlc1MmFYSnZibTFsYm5SeklIUm9ZWFJjYmlBZ0x5OGdaRzl1SjNRZ2JtRjBhWFpsYkhrZ2MzVndjRzl5ZENCcGRDNWNiaUFnZG1GeUlFbDBaWEpoZEc5eVVISnZkRzkwZVhCbElEMGdlMzA3WEc0Z0lFbDBaWEpoZEc5eVVISnZkRzkwZVhCbFcybDBaWEpoZEc5eVUzbHRZbTlzWFNBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZUdGNibHh1SUNCMllYSWdaMlYwVUhKdmRHOGdQU0JQWW1wbFkzUXVaMlYwVUhKdmRHOTBlWEJsVDJZN1hHNGdJSFpoY2lCT1lYUnBkbVZKZEdWeVlYUnZjbEJ5YjNSdmRIbHdaU0E5SUdkbGRGQnliM1J2SUNZbUlHZGxkRkJ5YjNSdktHZGxkRkJ5YjNSdktIWmhiSFZsY3loYlhTa3BLVHRjYmlBZ2FXWWdLRTVoZEdsMlpVbDBaWEpoZEc5eVVISnZkRzkwZVhCbElDWW1YRzRnSUNBZ0lDQk9ZWFJwZG1WSmRHVnlZWFJ2Y2xCeWIzUnZkSGx3WlNBaFBUMGdUM0FnSmlaY2JpQWdJQ0FnSUdoaGMwOTNiaTVqWVd4c0tFNWhkR2wyWlVsMFpYSmhkRzl5VUhKdmRHOTBlWEJsTENCcGRHVnlZWFJ2Y2xONWJXSnZiQ2twSUh0Y2JpQWdJQ0F2THlCVWFHbHpJR1Z1ZG1seWIyNXRaVzUwSUdoaGN5QmhJRzVoZEdsMlpTQWxTWFJsY21GMGIzSlFjbTkwYjNSNWNHVWxPeUIxYzJVZ2FYUWdhVzV6ZEdWaFpGeHVJQ0FnSUM4dklHOW1JSFJvWlNCd2IyeDVabWxzYkM1Y2JpQWdJQ0JKZEdWeVlYUnZjbEJ5YjNSdmRIbHdaU0E5SUU1aGRHbDJaVWwwWlhKaGRHOXlVSEp2ZEc5MGVYQmxPMXh1SUNCOVhHNWNiaUFnZG1GeUlFZHdJRDBnUjJWdVpYSmhkRzl5Um5WdVkzUnBiMjVRY205MGIzUjVjR1V1Y0hKdmRHOTBlWEJsSUQxY2JpQWdJQ0JIWlc1bGNtRjBiM0l1Y0hKdmRHOTBlWEJsSUQwZ1QySnFaV04wTG1OeVpXRjBaU2hKZEdWeVlYUnZjbEJ5YjNSdmRIbHdaU2s3WEc0Z0lFZGxibVZ5WVhSdmNrWjFibU4wYVc5dUxuQnliM1J2ZEhsd1pTQTlJRWR3TG1OdmJuTjBjblZqZEc5eUlEMGdSMlZ1WlhKaGRHOXlSblZ1WTNScGIyNVFjbTkwYjNSNWNHVTdYRzRnSUVkbGJtVnlZWFJ2Y2taMWJtTjBhVzl1VUhKdmRHOTBlWEJsTG1OdmJuTjBjblZqZEc5eUlEMGdSMlZ1WlhKaGRHOXlSblZ1WTNScGIyNDdYRzRnSUVkbGJtVnlZWFJ2Y2taMWJtTjBhVzl1TG1ScGMzQnNZWGxPWVcxbElEMGdaR1ZtYVc1bEtGeHVJQ0FnSUVkbGJtVnlZWFJ2Y2taMWJtTjBhVzl1VUhKdmRHOTBlWEJsTEZ4dUlDQWdJSFJ2VTNSeWFXNW5WR0ZuVTNsdFltOXNMRnh1SUNBZ0lGd2lSMlZ1WlhKaGRHOXlSblZ1WTNScGIyNWNJbHh1SUNBcE8xeHVYRzRnSUM4dklFaGxiSEJsY2lCbWIzSWdaR1ZtYVc1cGJtY2dkR2hsSUM1dVpYaDBMQ0F1ZEdoeWIzY3NJR0Z1WkNBdWNtVjBkWEp1SUcxbGRHaHZaSE1nYjJZZ2RHaGxYRzRnSUM4dklFbDBaWEpoZEc5eUlHbHVkR1Z5Wm1GalpTQnBiaUIwWlhKdGN5QnZaaUJoSUhOcGJtZHNaU0F1WDJsdWRtOXJaU0J0WlhSb2IyUXVYRzRnSUdaMWJtTjBhVzl1SUdSbFptbHVaVWwwWlhKaGRHOXlUV1YwYUc5a2N5aHdjbTkwYjNSNWNHVXBJSHRjYmlBZ0lDQmJYQ0p1WlhoMFhDSXNJRndpZEdoeWIzZGNJaXdnWENKeVpYUjFjbTVjSWwwdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlodFpYUm9iMlFwSUh0Y2JpQWdJQ0FnSUdSbFptbHVaU2h3Y205MGIzUjVjR1VzSUcxbGRHaHZaQ3dnWm5WdVkzUnBiMjRvWVhKbktTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TGw5cGJuWnZhMlVvYldWMGFHOWtMQ0JoY21jcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0JsZUhCdmNuUnpMbWx6UjJWdVpYSmhkRzl5Um5WdVkzUnBiMjRnUFNCbWRXNWpkR2x2YmloblpXNUdkVzRwSUh0Y2JpQWdJQ0IyWVhJZ1kzUnZjaUE5SUhSNWNHVnZaaUJuWlc1R2RXNGdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJuWlc1R2RXNHVZMjl1YzNSeWRXTjBiM0k3WEc0Z0lDQWdjbVYwZFhKdUlHTjBiM0pjYmlBZ0lDQWdJRDhnWTNSdmNpQTlQVDBnUjJWdVpYSmhkRzl5Um5WdVkzUnBiMjRnZkh4Y2JpQWdJQ0FnSUNBZ0x5OGdSbTl5SUhSb1pTQnVZWFJwZG1VZ1IyVnVaWEpoZEc5eVJuVnVZM1JwYjI0Z1kyOXVjM1J5ZFdOMGIzSXNJSFJvWlNCaVpYTjBJSGRsSUdOaGJseHVJQ0FnSUNBZ0lDQXZMeUJrYnlCcGN5QjBieUJqYUdWamF5QnBkSE1nTG01aGJXVWdjSEp2Y0dWeWRIa3VYRzRnSUNBZ0lDQWdJQ2hqZEc5eUxtUnBjM0JzWVhsT1lXMWxJSHg4SUdOMGIzSXVibUZ0WlNrZ1BUMDlJRndpUjJWdVpYSmhkRzl5Um5WdVkzUnBiMjVjSWx4dUlDQWdJQ0FnT2lCbVlXeHpaVHRjYmlBZ2ZUdGNibHh1SUNCbGVIQnZjblJ6TG0xaGNtc2dQU0JtZFc1amRHbHZiaWhuWlc1R2RXNHBJSHRjYmlBZ0lDQnBaaUFvVDJKcVpXTjBMbk5sZEZCeWIzUnZkSGx3WlU5bUtTQjdYRzRnSUNBZ0lDQlBZbXBsWTNRdWMyVjBVSEp2ZEc5MGVYQmxUMllvWjJWdVJuVnVMQ0JIWlc1bGNtRjBiM0pHZFc1amRHbHZibEJ5YjNSdmRIbHdaU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHZGxia1oxYmk1ZlgzQnliM1J2WDE4Z1BTQkhaVzVsY21GMGIzSkdkVzVqZEdsdmJsQnliM1J2ZEhsd1pUdGNiaUFnSUNBZ0lHUmxabWx1WlNoblpXNUdkVzRzSUhSdlUzUnlhVzVuVkdGblUzbHRZbTlzTENCY0lrZGxibVZ5WVhSdmNrWjFibU4wYVc5dVhDSXBPMXh1SUNBZ0lIMWNiaUFnSUNCblpXNUdkVzR1Y0hKdmRHOTBlWEJsSUQwZ1QySnFaV04wTG1OeVpXRjBaU2hIY0NrN1hHNGdJQ0FnY21WMGRYSnVJR2RsYmtaMWJqdGNiaUFnZlR0Y2JseHVJQ0F2THlCWGFYUm9hVzRnZEdobElHSnZaSGtnYjJZZ1lXNTVJR0Z6ZVc1aklHWjFibU4wYVc5dUxDQmdZWGRoYVhRZ2VHQWdhWE1nZEhKaGJuTm1iM0p0WldRZ2RHOWNiaUFnTHk4Z1lIbHBaV3hrSUhKbFoyVnVaWEpoZEc5eVVuVnVkR2x0WlM1aGQzSmhjQ2g0S1dBc0lITnZJSFJvWVhRZ2RHaGxJSEoxYm5ScGJXVWdZMkZ1SUhSbGMzUmNiaUFnTHk4Z1lHaGhjMDkzYmk1allXeHNLSFpoYkhWbExDQmNJbDlmWVhkaGFYUmNJaWxnSUhSdklHUmxkR1Z5YldsdVpTQnBaaUIwYUdVZ2VXbGxiR1JsWkNCMllXeDFaU0JwYzF4dUlDQXZMeUJ0WldGdWRDQjBieUJpWlNCaGQyRnBkR1ZrTGx4dUlDQmxlSEJ2Y25SekxtRjNjbUZ3SUQwZ1puVnVZM1JwYjI0b1lYSm5LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIc2dYMTloZDJGcGREb2dZWEpuSUgwN1hHNGdJSDA3WEc1Y2JpQWdablZ1WTNScGIyNGdRWE41Ym1OSmRHVnlZWFJ2Y2loblpXNWxjbUYwYjNJc0lGQnliMjFwYzJWSmJYQnNLU0I3WEc0Z0lDQWdablZ1WTNScGIyNGdhVzUyYjJ0bEtHMWxkR2h2WkN3Z1lYSm5MQ0J5WlhOdmJIWmxMQ0J5WldwbFkzUXBJSHRjYmlBZ0lDQWdJSFpoY2lCeVpXTnZjbVFnUFNCMGNubERZWFJqYUNoblpXNWxjbUYwYjNKYmJXVjBhRzlrWFN3Z1oyVnVaWEpoZEc5eUxDQmhjbWNwTzF4dUlDQWdJQ0FnYVdZZ0tISmxZMjl5WkM1MGVYQmxJRDA5UFNCY0luUm9jbTkzWENJcElIdGNiaUFnSUNBZ0lDQWdjbVZxWldOMEtISmxZMjl5WkM1aGNtY3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUhKbFkyOXlaQzVoY21jN1hHNGdJQ0FnSUNBZ0lIWmhjaUIyWVd4MVpTQTlJSEpsYzNWc2RDNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUZ3aWIySnFaV04wWENJZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUdoaGMwOTNiaTVqWVd4c0tIWmhiSFZsTENCY0lsOWZZWGRoYVhSY0lpa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnVUhKdmJXbHpaVWx0Y0d3dWNtVnpiMngyWlNoMllXeDFaUzVmWDJGM1lXbDBLUzUwYUdWdUtHWjFibU4wYVc5dUtIWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm5admEyVW9YQ0p1WlhoMFhDSXNJSFpoYkhWbExDQnlaWE52YkhabExDQnlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQWdJSDBzSUdaMWJtTjBhVzl1S0dWeWNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNTJiMnRsS0Z3aWRHaHliM2RjSWl3Z1pYSnlMQ0J5WlhOdmJIWmxMQ0J5WldwbFkzUXBPMXh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRkJ5YjIxcGMyVkpiWEJzTG5KbGMyOXNkbVVvZG1Gc2RXVXBMblJvWlc0b1puVnVZM1JwYjI0b2RXNTNjbUZ3Y0dWa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1YyaGxiaUJoSUhscFpXeGtaV1FnVUhKdmJXbHpaU0JwY3lCeVpYTnZiSFpsWkN3Z2FYUnpJR1pwYm1Gc0lIWmhiSFZsSUdKbFkyOXRaWE5jYmlBZ0lDQWdJQ0FnSUNBdkx5QjBhR1VnTG5aaGJIVmxJRzltSUhSb1pTQlFjbTl0YVhObFBIdDJZV3gxWlN4a2IyNWxmVDRnY21WemRXeDBJR1p2Y2lCMGFHVmNiaUFnSUNBZ0lDQWdJQ0F2THlCamRYSnlaVzUwSUdsMFpYSmhkR2x2Ymk1Y2JpQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRdWRtRnNkV1VnUFNCMWJuZHlZWEJ3WldRN1hHNGdJQ0FnSUNBZ0lDQWdjbVZ6YjJ4MlpTaHlaWE4xYkhRcE8xeHVJQ0FnSUNBZ0lDQjlMQ0JtZFc1amRHbHZiaWhsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFbG1JR0VnY21WcVpXTjBaV1FnVUhKdmJXbHpaU0IzWVhNZ2VXbGxiR1JsWkN3Z2RHaHliM2NnZEdobElISmxhbVZqZEdsdmJpQmlZV05yWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdhVzUwYnlCMGFHVWdZWE41Ym1NZ1oyVnVaWEpoZEc5eUlHWjFibU4wYVc5dUlITnZJR2wwSUdOaGJpQmlaU0JvWVc1a2JHVmtJSFJvWlhKbExseHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBiblp2YTJVb1hDSjBhSEp2ZDF3aUxDQmxjbkp2Y2l3Z2NtVnpiMngyWlN3Z2NtVnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJSEJ5WlhacGIzVnpVSEp2YldselpUdGNibHh1SUNBZ0lHWjFibU4wYVc5dUlHVnVjWFZsZFdVb2JXVjBhRzlrTENCaGNtY3BJSHRjYmlBZ0lDQWdJR1oxYm1OMGFXOXVJR05oYkd4SmJuWnZhMlZYYVhSb1RXVjBhRzlrUVc1a1FYSm5LQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJWSmJYQnNLR1oxYm1OMGFXOXVLSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdWRtOXJaU2h0WlhSb2IyUXNJR0Z5Wnl3Z2NtVnpiMngyWlN3Z2NtVnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsZEhWeWJpQndjbVYyYVc5MWMxQnliMjFwYzJVZ1BWeHVJQ0FnSUNBZ0lDQXZMeUJKWmlCbGJuRjFaWFZsSUdoaGN5QmlaV1Z1SUdOaGJHeGxaQ0JpWldadmNtVXNJSFJvWlc0Z2QyVWdkMkZ1ZENCMGJ5QjNZV2wwSUhWdWRHbHNYRzRnSUNBZ0lDQWdJQzh2SUdGc2JDQndjbVYyYVc5MWN5QlFjbTl0YVhObGN5Qm9ZWFpsSUdKbFpXNGdjbVZ6YjJ4MlpXUWdZbVZtYjNKbElHTmhiR3hwYm1jZ2FXNTJiMnRsTEZ4dUlDQWdJQ0FnSUNBdkx5QnpieUIwYUdGMElISmxjM1ZzZEhNZ1lYSmxJR0ZzZDJGNWN5QmtaV3hwZG1WeVpXUWdhVzRnZEdobElHTnZjbkpsWTNRZ2IzSmtaWEl1SUVsbVhHNGdJQ0FnSUNBZ0lDOHZJR1Z1Y1hWbGRXVWdhR0Z6SUc1dmRDQmlaV1Z1SUdOaGJHeGxaQ0JpWldadmNtVXNJSFJvWlc0Z2FYUWdhWE1nYVcxd2IzSjBZVzUwSUhSdlhHNGdJQ0FnSUNBZ0lDOHZJR05oYkd3Z2FXNTJiMnRsSUdsdGJXVmthV0YwWld4NUxDQjNhWFJvYjNWMElIZGhhWFJwYm1jZ2IyNGdZU0JqWVd4c1ltRmpheUIwYnlCbWFYSmxMRnh1SUNBZ0lDQWdJQ0F2THlCemJ5QjBhR0YwSUhSb1pTQmhjM2x1WXlCblpXNWxjbUYwYjNJZ1puVnVZM1JwYjI0Z2FHRnpJSFJvWlNCdmNIQnZjblIxYm1sMGVTQjBieUJrYjF4dUlDQWdJQ0FnSUNBdkx5QmhibmtnYm1WalpYTnpZWEo1SUhObGRIVndJR2x1SUdFZ2NISmxaR2xqZEdGaWJHVWdkMkY1TGlCVWFHbHpJSEJ5WldScFkzUmhZbWxzYVhSNVhHNGdJQ0FnSUNBZ0lDOHZJR2x6SUhkb2VTQjBhR1VnVUhKdmJXbHpaU0JqYjI1emRISjFZM1J2Y2lCemVXNWphSEp2Ym05MWMyeDVJR2x1ZG05clpYTWdhWFJ6WEc0Z0lDQWdJQ0FnSUM4dklHVjRaV04xZEc5eUlHTmhiR3hpWVdOckxDQmhibVFnZDJoNUlHRnplVzVqSUdaMWJtTjBhVzl1Y3lCemVXNWphSEp2Ym05MWMyeDVYRzRnSUNBZ0lDQWdJQzh2SUdWNFpXTjFkR1VnWTI5a1pTQmlaV1p2Y21VZ2RHaGxJR1pwY25OMElHRjNZV2wwTGlCVGFXNWpaU0IzWlNCcGJYQnNaVzFsYm5RZ2MybHRjR3hsWEc0Z0lDQWdJQ0FnSUM4dklHRnplVzVqSUdaMWJtTjBhVzl1Y3lCcGJpQjBaWEp0Y3lCdlppQmhjM2x1WXlCblpXNWxjbUYwYjNKekxDQnBkQ0JwY3lCbGMzQmxZMmxoYkd4NVhHNGdJQ0FnSUNBZ0lDOHZJR2x0Y0c5eWRHRnVkQ0IwYnlCblpYUWdkR2hwY3lCeWFXZG9kQ3dnWlhabGJpQjBhRzkxWjJnZ2FYUWdjbVZ4ZFdseVpYTWdZMkZ5WlM1Y2JpQWdJQ0FnSUNBZ2NISmxkbWx2ZFhOUWNtOXRhWE5sSUQ4Z2NISmxkbWx2ZFhOUWNtOXRhWE5sTG5Sb1pXNG9YRzRnSUNBZ0lDQWdJQ0FnWTJGc2JFbHVkbTlyWlZkcGRHaE5aWFJvYjJSQmJtUkJjbWNzWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdRWFp2YVdRZ2NISnZjR0ZuWVhScGJtY2dabUZwYkhWeVpYTWdkRzhnVUhKdmJXbHpaWE1nY21WMGRYSnVaV1FnWW5rZ2JHRjBaWEpjYmlBZ0lDQWdJQ0FnSUNBdkx5QnBiblp2WTJGMGFXOXVjeUJ2WmlCMGFHVWdhWFJsY21GMGIzSXVYRzRnSUNBZ0lDQWdJQ0FnWTJGc2JFbHVkbTlyWlZkcGRHaE5aWFJvYjJSQmJtUkJjbWRjYmlBZ0lDQWdJQ0FnS1NBNklHTmhiR3hKYm5admEyVlhhWFJvVFdWMGFHOWtRVzVrUVhKbktDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSR1ZtYVc1bElIUm9aU0IxYm1sbWFXVmtJR2hsYkhCbGNpQnRaWFJvYjJRZ2RHaGhkQ0JwY3lCMWMyVmtJSFJ2SUdsdGNHeGxiV1Z1ZENBdWJtVjRkQ3hjYmlBZ0lDQXZMeUF1ZEdoeWIzY3NJR0Z1WkNBdWNtVjBkWEp1SUNoelpXVWdaR1ZtYVc1bFNYUmxjbUYwYjNKTlpYUm9iMlJ6S1M1Y2JpQWdJQ0IwYUdsekxsOXBiblp2YTJVZ1BTQmxibkYxWlhWbE8xeHVJQ0I5WEc1Y2JpQWdaR1ZtYVc1bFNYUmxjbUYwYjNKTlpYUm9iMlJ6S0VGemVXNWpTWFJsY21GMGIzSXVjSEp2ZEc5MGVYQmxLVHRjYmlBZ1FYTjVibU5KZEdWeVlYUnZjaTV3Y205MGIzUjVjR1ZiWVhONWJtTkpkR1Z5WVhSdmNsTjViV0p2YkYwZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMDdYRzRnSUdWNGNHOXlkSE11UVhONWJtTkpkR1Z5WVhSdmNpQTlJRUZ6ZVc1alNYUmxjbUYwYjNJN1hHNWNiaUFnTHk4Z1RtOTBaU0IwYUdGMElITnBiWEJzWlNCaGMzbHVZeUJtZFc1amRHbHZibk1nWVhKbElHbHRjR3hsYldWdWRHVmtJRzl1SUhSdmNDQnZabHh1SUNBdkx5QkJjM2x1WTBsMFpYSmhkRzl5SUc5aWFtVmpkSE03SUhSb1pYa2dhblZ6ZENCeVpYUjFjbTRnWVNCUWNtOXRhWE5sSUdadmNpQjBhR1VnZG1Gc2RXVWdiMlpjYmlBZ0x5OGdkR2hsSUdacGJtRnNJSEpsYzNWc2RDQndjbTlrZFdObFpDQmllU0IwYUdVZ2FYUmxjbUYwYjNJdVhHNGdJR1Y0Y0c5eWRITXVZWE41Ym1NZ1BTQm1kVzVqZEdsdmJpaHBibTVsY2tadUxDQnZkWFJsY2tadUxDQnpaV3htTENCMGNubE1iMk56VEdsemRDd2dVSEp2YldselpVbHRjR3dwSUh0Y2JpQWdJQ0JwWmlBb1VISnZiV2x6WlVsdGNHd2dQVDA5SUhadmFXUWdNQ2tnVUhKdmJXbHpaVWx0Y0d3Z1BTQlFjbTl0YVhObE8xeHVYRzRnSUNBZ2RtRnlJR2wwWlhJZ1BTQnVaWGNnUVhONWJtTkpkR1Z5WVhSdmNpaGNiaUFnSUNBZ0lIZHlZWEFvYVc1dVpYSkdiaXdnYjNWMFpYSkdiaXdnYzJWc1ppd2dkSEo1VEc5amMweHBjM1FwTEZ4dUlDQWdJQ0FnVUhKdmJXbHpaVWx0Y0d4Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJR1Y0Y0c5eWRITXVhWE5IWlc1bGNtRjBiM0pHZFc1amRHbHZiaWh2ZFhSbGNrWnVLVnh1SUNBZ0lDQWdQeUJwZEdWeUlDOHZJRWxtSUc5MWRHVnlSbTRnYVhNZ1lTQm5aVzVsY21GMGIzSXNJSEpsZEhWeWJpQjBhR1VnWm5Wc2JDQnBkR1Z5WVhSdmNpNWNiaUFnSUNBZ0lEb2dhWFJsY2k1dVpYaDBLQ2t1ZEdobGJpaG1kVzVqZEdsdmJpaHlaWE4xYkhRcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4MExtUnZibVVnUHlCeVpYTjFiSFF1ZG1Gc2RXVWdPaUJwZEdWeUxtNWxlSFFvS1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUgwN1hHNWNiaUFnWm5WdVkzUnBiMjRnYldGclpVbHVkbTlyWlUxbGRHaHZaQ2hwYm01bGNrWnVMQ0J6Wld4bUxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVhSbElEMGdSMlZ1VTNSaGRHVlRkWE53Wlc1a1pXUlRkR0Z5ZER0Y2JseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUJwYm5admEyVW9iV1YwYUc5a0xDQmhjbWNwSUh0Y2JpQWdJQ0FnSUdsbUlDaHpkR0YwWlNBOVBUMGdSMlZ1VTNSaGRHVkZlR1ZqZFhScGJtY3BJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpUjJWdVpYSmhkRzl5SUdseklHRnNjbVZoWkhrZ2NuVnVibWx1WjF3aUtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hOMFlYUmxJRDA5UFNCSFpXNVRkR0YwWlVOdmJYQnNaWFJsWkNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYldWMGFHOWtJRDA5UFNCY0luUm9jbTkzWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0IwYUhKdmR5QmhjbWM3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQXZMeUJDWlNCbWIzSm5hWFpwYm1jc0lIQmxjaUF5TlM0ekxqTXVNeTR6SUc5bUlIUm9aU0J6Y0dWak9seHVJQ0FnSUNBZ0lDQXZMeUJvZEhSd2N6b3ZMM0JsYjNCc1pTNXRiM3BwYkd4aExtOXlaeTkrYW05eVpXNWtiM0ptWmk5bGN6WXRaSEpoWm5RdWFIUnRiQ056WldNdFoyVnVaWEpoZEc5eWNtVnpkVzFsWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYjI1bFVtVnpkV3gwS0NrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZiblJsZUhRdWJXVjBhRzlrSUQwZ2JXVjBhRzlrTzF4dUlDQWdJQ0FnWTI5dWRHVjRkQzVoY21jZ1BTQmhjbWM3WEc1Y2JpQWdJQ0FnSUhkb2FXeGxJQ2gwY25WbEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCa1pXeGxaMkYwWlNBOUlHTnZiblJsZUhRdVpHVnNaV2RoZEdVN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrWld4bFoyRjBaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJrWld4bFoyRjBaVkpsYzNWc2RDQTlJRzFoZVdKbFNXNTJiMnRsUkdWc1pXZGhkR1VvWkdWc1pXZGhkR1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hrWld4bFoyRjBaVkpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1JsYkdWbllYUmxVbVZ6ZFd4MElEMDlQU0JEYjI1MGFXNTFaVk5sYm5ScGJtVnNLU0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa1pXeGxaMkYwWlZKbGMzVnNkRHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JwWmlBb1kyOXVkR1Y0ZEM1dFpYUm9iMlFnUFQwOUlGd2libVY0ZEZ3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1UyVjBkR2x1WnlCamIyNTBaWGgwTGw5elpXNTBJR1p2Y2lCc1pXZGhZM2tnYzNWd2NHOXlkQ0J2WmlCQ1lXSmxiQ2R6WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdablZ1WTNScGIyNHVjMlZ1ZENCcGJYQnNaVzFsYm5SaGRHbHZiaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNTBaWGgwTG5ObGJuUWdQU0JqYjI1MFpYaDBMbDl6Wlc1MElEMGdZMjl1ZEdWNGRDNWhjbWM3WEc1Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpiMjUwWlhoMExtMWxkR2h2WkNBOVBUMGdYQ0owYUhKdmQxd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSE4wWVhSbElEMDlQU0JIWlc1VGRHRjBaVk4xYzNCbGJtUmxaRk4wWVhKMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCemRHRjBaU0E5SUVkbGJsTjBZWFJsUTI5dGNHeGxkR1ZrTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ1kyOXVkR1Y0ZEM1aGNtYzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdZMjl1ZEdWNGRDNWthWE53WVhSamFFVjRZMlZ3ZEdsdmJpaGpiMjUwWlhoMExtRnlaeWs3WEc1Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpiMjUwWlhoMExtMWxkR2h2WkNBOVBUMGdYQ0p5WlhSMWNtNWNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZiblJsZUhRdVlXSnlkWEIwS0Z3aWNtVjBkWEp1WENJc0lHTnZiblJsZUhRdVlYSm5LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lITjBZWFJsSUQwZ1IyVnVVM1JoZEdWRmVHVmpkWFJwYm1jN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUhKbFkyOXlaQ0E5SUhSeWVVTmhkR05vS0dsdWJtVnlSbTRzSUhObGJHWXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVmpiM0prTG5SNWNHVWdQVDA5SUZ3aWJtOXliV0ZzWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCSlppQmhiaUJsZUdObGNIUnBiMjRnYVhNZ2RHaHliM2R1SUdaeWIyMGdhVzV1WlhKR2Jpd2dkMlVnYkdWaGRtVWdjM1JoZEdVZ1BUMDlYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1IyVnVVM1JoZEdWRmVHVmpkWFJwYm1jZ1lXNWtJR3h2YjNBZ1ltRmpheUJtYjNJZ1lXNXZkR2hsY2lCcGJuWnZZMkYwYVc5dUxseHVJQ0FnSUNBZ0lDQWdJSE4wWVhSbElEMGdZMjl1ZEdWNGRDNWtiMjVsWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JRWRsYmxOMFlYUmxRMjl0Y0d4bGRHVmtYRzRnSUNBZ0lDQWdJQ0FnSUNBNklFZGxibE4wWVhSbFUzVnpjR1Z1WkdWa1dXbGxiR1E3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvY21WamIzSmtMbUZ5WnlBOVBUMGdRMjl1ZEdsdWRXVlRaVzUwYVc1bGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbE9pQnlaV052Y21RdVlYSm5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOXVaVG9nWTI5dWRHVjRkQzVrYjI1bFhHNGdJQ0FnSUNBZ0lDQWdmVHRjYmx4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tISmxZMjl5WkM1MGVYQmxJRDA5UFNCY0luUm9jbTkzWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0J6ZEdGMFpTQTlJRWRsYmxOMFlYUmxRMjl0Y0d4bGRHVmtPMXh1SUNBZ0lDQWdJQ0FnSUM4dklFUnBjM0JoZEdOb0lIUm9aU0JsZUdObGNIUnBiMjRnWW5rZ2JHOXZjR2x1WnlCaVlXTnJJR0Z5YjNWdVpDQjBieUIwYUdWY2JpQWdJQ0FnSUNBZ0lDQXZMeUJqYjI1MFpYaDBMbVJwYzNCaGRHTm9SWGhqWlhCMGFXOXVLR052Ym5SbGVIUXVZWEpuS1NCallXeHNJR0ZpYjNabExseHVJQ0FnSUNBZ0lDQWdJR052Ym5SbGVIUXViV1YwYUc5a0lEMGdYQ0owYUhKdmQxd2lPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuUmxlSFF1WVhKbklEMGdjbVZqYjNKa0xtRnlaenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDA3WEc0Z0lIMWNibHh1SUNBdkx5QkRZV3hzSUdSbGJHVm5ZWFJsTG1sMFpYSmhkRzl5VzJOdmJuUmxlSFF1YldWMGFHOWtYU2hqYjI1MFpYaDBMbUZ5WnlrZ1lXNWtJR2hoYm1Sc1pTQjBhR1ZjYmlBZ0x5OGdjbVZ6ZFd4MExDQmxhWFJvWlhJZ1lua2djbVYwZFhKdWFXNW5JR0VnZXlCMllXeDFaU3dnWkc5dVpTQjlJSEpsYzNWc2RDQm1jbTl0SUhSb1pWeHVJQ0F2THlCa1pXeGxaMkYwWlNCcGRHVnlZWFJ2Y2l3Z2IzSWdZbmtnYlc5a2FXWjVhVzVuSUdOdmJuUmxlSFF1YldWMGFHOWtJR0Z1WkNCamIyNTBaWGgwTG1GeVp5eGNiaUFnTHk4Z2MyVjBkR2x1WnlCamIyNTBaWGgwTG1SbGJHVm5ZWFJsSUhSdklHNTFiR3dzSUdGdVpDQnlaWFIxY201cGJtY2dkR2hsSUVOdmJuUnBiblZsVTJWdWRHbHVaV3d1WEc0Z0lHWjFibU4wYVc5dUlHMWhlV0psU1c1MmIydGxSR1ZzWldkaGRHVW9aR1ZzWldkaGRHVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYldWMGFHOWtJRDBnWkdWc1pXZGhkR1V1YVhSbGNtRjBiM0piWTI5dWRHVjRkQzV0WlhSb2IyUmRPMXh1SUNBZ0lHbG1JQ2h0WlhSb2IyUWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ0x5OGdRU0F1ZEdoeWIzY2diM0lnTG5KbGRIVnliaUIzYUdWdUlIUm9aU0JrWld4bFoyRjBaU0JwZEdWeVlYUnZjaUJvWVhNZ2JtOGdMblJvY205M1hHNGdJQ0FnSUNBdkx5QnRaWFJvYjJRZ1lXeDNZWGx6SUhSbGNtMXBibUYwWlhNZ2RHaGxJSGxwWld4a0tpQnNiMjl3TGx4dUlDQWdJQ0FnWTI5dWRHVjRkQzVrWld4bFoyRjBaU0E5SUc1MWJHdzdYRzVjYmlBZ0lDQWdJR2xtSUNoamIyNTBaWGgwTG0xbGRHaHZaQ0E5UFQwZ1hDSjBhSEp2ZDF3aUtTQjdYRzRnSUNBZ0lDQWdJQzh2SUU1dmRHVTZJRnRjSW5KbGRIVnlibHdpWFNCdGRYTjBJR0psSUhWelpXUWdabTl5SUVWVE15QndZWEp6YVc1bklHTnZiWEJoZEdsaWFXeHBkSGt1WEc0Z0lDQWdJQ0FnSUdsbUlDaGtaV3hsWjJGMFpTNXBkR1Z5WVhSdmNsdGNJbkpsZEhWeWJsd2lYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJRWxtSUhSb1pTQmtaV3hsWjJGMFpTQnBkR1Z5WVhSdmNpQm9ZWE1nWVNCeVpYUjFjbTRnYldWMGFHOWtMQ0JuYVhabElHbDBJR0ZjYmlBZ0lDQWdJQ0FnSUNBdkx5QmphR0Z1WTJVZ2RHOGdZMnhsWVc0Z2RYQXVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWRHVjRkQzV0WlhSb2IyUWdQU0JjSW5KbGRIVnlibHdpTzF4dUlDQWdJQ0FnSUNBZ0lHTnZiblJsZUhRdVlYSm5JRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lHMWhlV0psU1c1MmIydGxSR1ZzWldkaGRHVW9aR1ZzWldkaGRHVXNJR052Ym5SbGVIUXBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR052Ym5SbGVIUXViV1YwYUc5a0lEMDlQU0JjSW5Sb2NtOTNYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUVsbUlHMWhlV0psU1c1MmIydGxSR1ZzWldkaGRHVW9ZMjl1ZEdWNGRDa2dZMmhoYm1kbFpDQmpiMjUwWlhoMExtMWxkR2h2WkNCbWNtOXRYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QmNJbkpsZEhWeWJsd2lJSFJ2SUZ3aWRHaHliM2RjSWl3Z2JHVjBJSFJvWVhRZ2IzWmxjbkpwWkdVZ2RHaGxJRlI1Y0dWRmNuSnZjaUJpWld4dmR5NWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJEYjI1MGFXNTFaVk5sYm5ScGJtVnNPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR052Ym5SbGVIUXViV1YwYUc5a0lEMGdYQ0owYUhKdmQxd2lPMXh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbUZ5WnlBOUlHNWxkeUJVZVhCbFJYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ1hDSlVhR1VnYVhSbGNtRjBiM0lnWkc5bGN5QnViM1FnY0hKdmRtbGtaU0JoSUNkMGFISnZkeWNnYldWMGFHOWtYQ0lwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnUTI5dWRHbHVkV1ZUWlc1MGFXNWxiRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY21WamIzSmtJRDBnZEhKNVEyRjBZMmdvYldWMGFHOWtMQ0JrWld4bFoyRjBaUzVwZEdWeVlYUnZjaXdnWTI5dWRHVjRkQzVoY21jcE8xeHVYRzRnSUNBZ2FXWWdLSEpsWTI5eVpDNTBlWEJsSUQwOVBTQmNJblJvY205M1hDSXBJSHRjYmlBZ0lDQWdJR052Ym5SbGVIUXViV1YwYUc5a0lEMGdYQ0owYUhKdmQxd2lPMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDNWhjbWNnUFNCeVpXTnZjbVF1WVhKbk8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEM1a1pXeGxaMkYwWlNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdRMjl1ZEdsdWRXVlRaVzUwYVc1bGJEdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdhVzVtYnlBOUlISmxZMjl5WkM1aGNtYzdYRzVjYmlBZ0lDQnBaaUFvSVNCcGJtWnZLU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBMbTFsZEdodlpDQTlJRndpZEdoeWIzZGNJanRjYmlBZ0lDQWdJR052Ym5SbGVIUXVZWEpuSUQwZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSW1sMFpYSmhkRzl5SUhKbGMzVnNkQ0JwY3lCdWIzUWdZVzRnYjJKcVpXTjBYQ0lwTzF4dUlDQWdJQ0FnWTI5dWRHVjRkQzVrWld4bFoyRjBaU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQnlaWFIxY200Z1EyOXVkR2x1ZFdWVFpXNTBhVzVsYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FXNW1ieTVrYjI1bEtTQjdYRzRnSUNBZ0lDQXZMeUJCYzNOcFoyNGdkR2hsSUhKbGMzVnNkQ0J2WmlCMGFHVWdabWx1YVhOb1pXUWdaR1ZzWldkaGRHVWdkRzhnZEdobElIUmxiWEJ2Y21GeWVWeHVJQ0FnSUNBZ0x5OGdkbUZ5YVdGaWJHVWdjM0JsWTJsbWFXVmtJR0o1SUdSbGJHVm5ZWFJsTG5KbGMzVnNkRTVoYldVZ0tITmxaU0JrWld4bFoyRjBaVmxwWld4a0tTNWNiaUFnSUNBZ0lHTnZiblJsZUhSYlpHVnNaV2RoZEdVdWNtVnpkV3gwVG1GdFpWMGdQU0JwYm1adkxuWmhiSFZsTzF4dVhHNGdJQ0FnSUNBdkx5QlNaWE4xYldVZ1pYaGxZM1YwYVc5dUlHRjBJSFJvWlNCa1pYTnBjbVZrSUd4dlkyRjBhVzl1SUNoelpXVWdaR1ZzWldkaGRHVlphV1ZzWkNrdVhHNGdJQ0FnSUNCamIyNTBaWGgwTG01bGVIUWdQU0JrWld4bFoyRjBaUzV1WlhoMFRHOWpPMXh1WEc0Z0lDQWdJQ0F2THlCSlppQmpiMjUwWlhoMExtMWxkR2h2WkNCM1lYTWdYQ0owYUhKdmQxd2lJR0oxZENCMGFHVWdaR1ZzWldkaGRHVWdhR0Z1Wkd4bFpDQjBhR1ZjYmlBZ0lDQWdJQzh2SUdWNFkyVndkR2x2Yml3Z2JHVjBJSFJvWlNCdmRYUmxjaUJuWlc1bGNtRjBiM0lnY0hKdlkyVmxaQ0J1YjNKdFlXeHNlUzRnU1daY2JpQWdJQ0FnSUM4dklHTnZiblJsZUhRdWJXVjBhRzlrSUhkaGN5QmNJbTVsZUhSY0lpd2dabTl5WjJWMElHTnZiblJsZUhRdVlYSm5JSE5wYm1ObElHbDBJR2hoY3lCaVpXVnVYRzRnSUNBZ0lDQXZMeUJjSW1OdmJuTjFiV1ZrWENJZ1lua2dkR2hsSUdSbGJHVm5ZWFJsSUdsMFpYSmhkRzl5TGlCSlppQmpiMjUwWlhoMExtMWxkR2h2WkNCM1lYTmNiaUFnSUNBZ0lDOHZJRndpY21WMGRYSnVYQ0lzSUdGc2JHOTNJSFJvWlNCdmNtbG5hVzVoYkNBdWNtVjBkWEp1SUdOaGJHd2dkRzhnWTI5dWRHbHVkV1VnYVc0Z2RHaGxYRzRnSUNBZ0lDQXZMeUJ2ZFhSbGNpQm5aVzVsY21GMGIzSXVYRzRnSUNBZ0lDQnBaaUFvWTI5dWRHVjRkQzV0WlhSb2IyUWdJVDA5SUZ3aWNtVjBkWEp1WENJcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdWNGRDNXRaWFJvYjJRZ1BTQmNJbTVsZUhSY0lqdGNiaUFnSUNBZ0lDQWdZMjl1ZEdWNGRDNWhjbWNnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1VtVXRlV2xsYkdRZ2RHaGxJSEpsYzNWc2RDQnlaWFIxY201bFpDQmllU0IwYUdVZ1pHVnNaV2RoZEdVZ2JXVjBhRzlrTGx4dUlDQWdJQ0FnY21WMGRYSnVJR2x1Wm04N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1ZHaGxJR1JsYkdWbllYUmxJR2wwWlhKaGRHOXlJR2x6SUdacGJtbHphR1ZrTENCemJ5Qm1iM0puWlhRZ2FYUWdZVzVrSUdOdmJuUnBiblZsSUhkcGRHaGNiaUFnSUNBdkx5QjBhR1VnYjNWMFpYSWdaMlZ1WlhKaGRHOXlMbHh1SUNBZ0lHTnZiblJsZUhRdVpHVnNaV2RoZEdVZ1BTQnVkV3hzTzF4dUlDQWdJSEpsZEhWeWJpQkRiMjUwYVc1MVpWTmxiblJwYm1Wc08xeHVJQ0I5WEc1Y2JpQWdMeThnUkdWbWFXNWxJRWRsYm1WeVlYUnZjaTV3Y205MGIzUjVjR1V1ZTI1bGVIUXNkR2h5YjNjc2NtVjBkWEp1ZlNCcGJpQjBaWEp0Y3lCdlppQjBhR1ZjYmlBZ0x5OGdkVzVwWm1sbFpDQXVYMmx1ZG05clpTQm9aV3h3WlhJZ2JXVjBhRzlrTGx4dUlDQmtaV1pwYm1WSmRHVnlZWFJ2Y2sxbGRHaHZaSE1vUjNBcE8xeHVYRzRnSUdSbFptbHVaU2hIY0N3Z2RHOVRkSEpwYm1kVVlXZFRlVzFpYjJ3c0lGd2lSMlZ1WlhKaGRHOXlYQ0lwTzF4dVhHNGdJQzh2SUVFZ1IyVnVaWEpoZEc5eUlITm9iM1ZzWkNCaGJIZGhlWE1nY21WMGRYSnVJR2wwYzJWc1ppQmhjeUIwYUdVZ2FYUmxjbUYwYjNJZ2IySnFaV04wSUhkb1pXNGdkR2hsWEc0Z0lDOHZJRUJBYVhSbGNtRjBiM0lnWm5WdVkzUnBiMjRnYVhNZ1kyRnNiR1ZrSUc5dUlHbDBMaUJUYjIxbElHSnliM2R6WlhKekp5QnBiWEJzWlcxbGJuUmhkR2x2Ym5NZ2IyWWdkR2hsWEc0Z0lDOHZJR2wwWlhKaGRHOXlJSEJ5YjNSdmRIbHdaU0JqYUdGcGJpQnBibU52Y25KbFkzUnNlU0JwYlhCc1pXMWxiblFnZEdocGN5d2dZMkYxYzJsdVp5QjBhR1VnUjJWdVpYSmhkRzl5WEc0Z0lDOHZJRzlpYW1WamRDQjBieUJ1YjNRZ1ltVWdjbVYwZFhKdVpXUWdabkp2YlNCMGFHbHpJR05oYkd3dUlGUm9hWE1nWlc1emRYSmxjeUIwYUdGMElHUnZaWE51SjNRZ2FHRndjR1Z1TGx4dUlDQXZMeUJUWldVZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwyWmhZMlZpYjI5ckwzSmxaMlZ1WlhKaGRHOXlMMmx6YzNWbGN5OHlOelFnWm05eUlHMXZjbVVnWkdWMFlXbHNjeTVjYmlBZ1IzQmJhWFJsY21GMGIzSlRlVzFpYjJ4ZElEMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMDdYRzVjYmlBZ1IzQXVkRzlUZEhKcGJtY2dQU0JtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0piYjJKcVpXTjBJRWRsYm1WeVlYUnZjbDFjSWp0Y2JpQWdmVHRjYmx4dUlDQm1kVzVqZEdsdmJpQndkWE5vVkhKNVJXNTBjbmtvYkc5amN5a2dlMXh1SUNBZ0lIWmhjaUJsYm5SeWVTQTlJSHNnZEhKNVRHOWpPaUJzYjJOeld6QmRJSDA3WEc1Y2JpQWdJQ0JwWmlBb01TQnBiaUJzYjJOektTQjdYRzRnSUNBZ0lDQmxiblJ5ZVM1allYUmphRXh2WXlBOUlHeHZZM05iTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tESWdhVzRnYkc5amN5a2dlMXh1SUNBZ0lDQWdaVzUwY25rdVptbHVZV3hzZVV4dll5QTlJR3h2WTNOYk1sMDdYRzRnSUNBZ0lDQmxiblJ5ZVM1aFpuUmxja3h2WXlBOUlHeHZZM05iTTEwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NTBjbmxGYm5SeWFXVnpMbkIxYzJnb1pXNTBjbmtwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z2NtVnpaWFJVY25sRmJuUnllU2hsYm5SeWVTa2dlMXh1SUNBZ0lIWmhjaUJ5WldOdmNtUWdQU0JsYm5SeWVTNWpiMjF3YkdWMGFXOXVJSHg4SUh0OU8xeHVJQ0FnSUhKbFkyOXlaQzUwZVhCbElEMGdYQ0p1YjNKdFlXeGNJanRjYmlBZ0lDQmtaV3hsZEdVZ2NtVmpiM0prTG1GeVp6dGNiaUFnSUNCbGJuUnllUzVqYjIxd2JHVjBhVzl1SUQwZ2NtVmpiM0prTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z1EyOXVkR1Y0ZENoMGNubE1iMk56VEdsemRDa2dlMXh1SUNBZ0lDOHZJRlJvWlNCeWIyOTBJR1Z1ZEhKNUlHOWlhbVZqZENBb1pXWm1aV04wYVhabGJIa2dZU0IwY25rZ2MzUmhkR1Z0Wlc1MElIZHBkR2h2ZFhRZ1lTQmpZWFJqYUZ4dUlDQWdJQzh2SUc5eUlHRWdabWx1WVd4c2VTQmliRzlqYXlrZ1oybDJaWE1nZFhNZ1lTQndiR0ZqWlNCMGJ5QnpkRzl5WlNCMllXeDFaWE1nZEdoeWIzZHVJR1p5YjIxY2JpQWdJQ0F2THlCc2IyTmhkR2x2Ym5NZ2QyaGxjbVVnZEdobGNtVWdhWE1nYm04Z1pXNWpiRzl6YVc1bklIUnllU0J6ZEdGMFpXMWxiblF1WEc0Z0lDQWdkR2hwY3k1MGNubEZiblJ5YVdWeklEMGdXM3NnZEhKNVRHOWpPaUJjSW5KdmIzUmNJaUI5WFR0Y2JpQWdJQ0IwY25sTWIyTnpUR2x6ZEM1bWIzSkZZV05vS0hCMWMyaFVjbmxGYm5SeWVTd2dkR2hwY3lrN1hHNGdJQ0FnZEdocGN5NXlaWE5sZENoMGNuVmxLVHRjYmlBZ2ZWeHVYRzRnSUdWNGNHOXlkSE11YTJWNWN5QTlJR1oxYm1OMGFXOXVLRzlpYW1WamRDa2dlMXh1SUNBZ0lIWmhjaUJyWlhseklEMGdXMTA3WEc0Z0lDQWdabTl5SUNoMllYSWdhMlY1SUdsdUlHOWlhbVZqZENrZ2UxeHVJQ0FnSUNBZ2EyVjVjeTV3ZFhOb0tHdGxlU2s3WEc0Z0lDQWdmVnh1SUNBZ0lHdGxlWE11Y21WMlpYSnpaU2dwTzF4dVhHNGdJQ0FnTHk4Z1VtRjBhR1Z5SUhSb1lXNGdjbVYwZFhKdWFXNW5JR0Z1SUc5aWFtVmpkQ0IzYVhSb0lHRWdibVY0ZENCdFpYUm9iMlFzSUhkbElHdGxaWEJjYmlBZ0lDQXZMeUIwYUdsdVozTWdjMmx0Y0d4bElHRnVaQ0J5WlhSMWNtNGdkR2hsSUc1bGVIUWdablZ1WTNScGIyNGdhWFJ6Wld4bUxseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUJ1WlhoMEtDa2dlMXh1SUNBZ0lDQWdkMmhwYkdVZ0tHdGxlWE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnJaWGtnUFNCclpYbHpMbkJ2Y0NncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYTJWNUlHbHVJRzlpYW1WamRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUc1bGVIUXVkbUZzZFdVZ1BTQnJaWGs3WEc0Z0lDQWdJQ0FnSUNBZ2JtVjRkQzVrYjI1bElEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHNWxlSFE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdWRzhnWVhadmFXUWdZM0psWVhScGJtY2dZVzRnWVdSa2FYUnBiMjVoYkNCdlltcGxZM1FzSUhkbElHcDFjM1FnYUdGdVp5QjBhR1VnTG5aaGJIVmxYRzRnSUNBZ0lDQXZMeUJoYm1RZ0xtUnZibVVnY0hKdmNHVnlkR2xsY3lCdlptWWdkR2hsSUc1bGVIUWdablZ1WTNScGIyNGdiMkpxWldOMElHbDBjMlZzWmk0Z1ZHaHBjMXh1SUNBZ0lDQWdMeThnWVd4emJ5Qmxibk4xY21WeklIUm9ZWFFnZEdobElHMXBibWxtYVdWeUlIZHBiR3dnYm05MElHRnViMjU1YldsNlpTQjBhR1VnWm5WdVkzUnBiMjR1WEc0Z0lDQWdJQ0J1WlhoMExtUnZibVVnUFNCMGNuVmxPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxlSFE3WEc0Z0lDQWdmVHRjYmlBZ2ZUdGNibHh1SUNCbWRXNWpkR2x2YmlCMllXeDFaWE1vYVhSbGNtRmliR1VwSUh0Y2JpQWdJQ0JwWmlBb2FYUmxjbUZpYkdVcElIdGNiaUFnSUNBZ0lIWmhjaUJwZEdWeVlYUnZjazFsZEdodlpDQTlJR2wwWlhKaFlteGxXMmwwWlhKaGRHOXlVM2x0WW05c1hUdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWeVlYUnZjazFsZEdodlpDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWFJsY21GMGIzSk5aWFJvYjJRdVkyRnNiQ2hwZEdWeVlXSnNaU2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2FYUmxjbUZpYkdVdWJtVjRkQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwZEdWeVlXSnNaVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tDRnBjMDVoVGlocGRHVnlZV0pzWlM1c1pXNW5kR2dwS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ0xURXNJRzVsZUhRZ1BTQm1kVzVqZEdsdmJpQnVaWGgwS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDZ3JLMmtnUENCcGRHVnlZV0pzWlM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNob1lYTlBkMjR1WTJGc2JDaHBkR1Z5WVdKc1pTd2dhU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1WNGRDNTJZV3gxWlNBOUlHbDBaWEpoWW14bFcybGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGgwTG1SdmJtVWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1bGVIUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2JtVjRkQzUyWVd4MVpTQTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnSUNCdVpYaDBMbVJ2Ym1VZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHNWxlSFE3WEc0Z0lDQWdJQ0FnSUgwN1hHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxlSFF1Ym1WNGRDQTlJRzVsZUhRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VtVjBkWEp1SUdGdUlHbDBaWEpoZEc5eUlIZHBkR2dnYm04Z2RtRnNkV1Z6TGx4dUlDQWdJSEpsZEhWeWJpQjdJRzVsZUhRNklHUnZibVZTWlhOMWJIUWdmVHRjYmlBZ2ZWeHVJQ0JsZUhCdmNuUnpMblpoYkhWbGN5QTlJSFpoYkhWbGN6dGNibHh1SUNCbWRXNWpkR2x2YmlCa2IyNWxVbVZ6ZFd4MEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCN0lIWmhiSFZsT2lCMWJtUmxabWx1WldRc0lHUnZibVU2SUhSeWRXVWdmVHRjYmlBZ2ZWeHVYRzRnSUVOdmJuUmxlSFF1Y0hKdmRHOTBlWEJsSUQwZ2UxeHVJQ0FnSUdOdmJuTjBjblZqZEc5eU9pQkRiMjUwWlhoMExGeHVYRzRnSUNBZ2NtVnpaWFE2SUdaMWJtTjBhVzl1S0hOcmFYQlVaVzF3VW1WelpYUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWNISmxkaUE5SURBN1hHNGdJQ0FnSUNCMGFHbHpMbTVsZUhRZ1BTQXdPMXh1SUNBZ0lDQWdMeThnVW1WelpYUjBhVzVuSUdOdmJuUmxlSFF1WDNObGJuUWdabTl5SUd4bFoyRmplU0J6ZFhCd2IzSjBJRzltSUVKaFltVnNKM05jYmlBZ0lDQWdJQzh2SUdaMWJtTjBhVzl1TG5ObGJuUWdhVzF3YkdWdFpXNTBZWFJwYjI0dVhHNGdJQ0FnSUNCMGFHbHpMbk5sYm5RZ1BTQjBhR2x6TGw5elpXNTBJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZEdocGN5NWtiMjVsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0IwYUdsekxtUmxiR1ZuWVhSbElEMGdiblZzYkR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV0WlhSb2IyUWdQU0JjSW01bGVIUmNJanRjYmlBZ0lDQWdJSFJvYVhNdVlYSm5JRDBnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnSUNCMGFHbHpMblJ5ZVVWdWRISnBaWE11Wm05eVJXRmphQ2h5WlhObGRGUnllVVZ1ZEhKNUtUdGNibHh1SUNBZ0lDQWdhV1lnS0NGemEybHdWR1Z0Y0ZKbGMyVjBLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUc1aGJXVWdhVzRnZEdocGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFNXZkQ0J6ZFhKbElHRmliM1YwSUhSb1pTQnZjSFJwYldGc0lHOXlaR1Z5SUc5bUlIUm9aWE5sSUdOdmJtUnBkR2x2Ym5NNlhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0c1aGJXVXVZMmhoY2tGMEtEQXBJRDA5UFNCY0luUmNJaUFtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JvWVhOUGQyNHVZMkZzYkNoMGFHbHpMQ0J1WVcxbEtTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWhhWE5PWVU0b0syNWhiV1V1YzJ4cFkyVW9NU2twS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdselcyNWhiV1ZkSUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc1Y2JpQWdJQ0J6ZEc5d09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHOXVaU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJSFpoY2lCeWIyOTBSVzUwY25rZ1BTQjBhR2x6TG5SeWVVVnVkSEpwWlhOYk1GMDdYRzRnSUNBZ0lDQjJZWElnY205dmRGSmxZMjl5WkNBOUlISnZiM1JGYm5SeWVTNWpiMjF3YkdWMGFXOXVPMXh1SUNBZ0lDQWdhV1lnS0hKdmIzUlNaV052Y21RdWRIbHdaU0E5UFQwZ1hDSjBhSEp2ZDF3aUtTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lISnZiM1JTWldOdmNtUXVZWEpuTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXlkbUZzTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JrYVhOd1lYUmphRVY0WTJWd2RHbHZiam9nWm5WdVkzUnBiMjRvWlhoalpYQjBhVzl1S1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1a2IyNWxLU0I3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJR1Y0WTJWd2RHbHZianRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZG1GeUlHTnZiblJsZUhRZ1BTQjBhR2x6TzF4dUlDQWdJQ0FnWm5WdVkzUnBiMjRnYUdGdVpHeGxLR3h2WXl3Z1kyRjFaMmgwS1NCN1hHNGdJQ0FnSUNBZ0lISmxZMjl5WkM1MGVYQmxJRDBnWENKMGFISnZkMXdpTzF4dUlDQWdJQ0FnSUNCeVpXTnZjbVF1WVhKbklEMGdaWGhqWlhCMGFXOXVPMXh1SUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbTVsZUhRZ1BTQnNiMk03WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLR05oZFdkb2RDa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFbG1JSFJvWlNCa2FYTndZWFJqYUdWa0lHVjRZMlZ3ZEdsdmJpQjNZWE1nWTJGMVoyaDBJR0o1SUdFZ1kyRjBZMmdnWW14dlkyc3NYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RHaGxiaUJzWlhRZ2RHaGhkQ0JqWVhSamFDQmliRzlqYXlCb1lXNWtiR1VnZEdobElHVjRZMlZ3ZEdsdmJpQnViM0p0WVd4c2VTNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1MFpYaDBMbTFsZEdodlpDQTlJRndpYm1WNGRGd2lPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuUmxlSFF1WVhKbklEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNFaElHTmhkV2RvZER0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJSFJvYVhNdWRISjVSVzUwY21sbGN5NXNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlEQTdJQzB0YVNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWlc1MGNua2dQU0IwYUdsekxuUnllVVZ1ZEhKcFpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaV052Y21RZ1BTQmxiblJ5ZVM1amIyMXdiR1YwYVc5dU8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNobGJuUnllUzUwY25sTWIyTWdQVDA5SUZ3aWNtOXZkRndpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnUlhoalpYQjBhVzl1SUhSb2NtOTNiaUJ2ZFhSemFXUmxJRzltSUdGdWVTQjBjbmtnWW14dlkyc2dkR2hoZENCamIzVnNaQ0JvWVc1a2JHVmNiaUFnSUNBZ0lDQWdJQ0F2THlCcGRDd2djMjhnYzJWMElIUm9aU0JqYjIxd2JHVjBhVzl1SUhaaGJIVmxJRzltSUhSb1pTQmxiblJwY21VZ1puVnVZM1JwYjI0Z2RHOWNiaUFnSUNBZ0lDQWdJQ0F2THlCMGFISnZkeUIwYUdVZ1pYaGpaWEIwYVc5dUxseHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm9ZVzVrYkdVb1hDSmxibVJjSWlrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JwWmlBb1pXNTBjbmt1ZEhKNVRHOWpJRHc5SUhSb2FYTXVjSEpsZGlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCb1lYTkRZWFJqYUNBOUlHaGhjMDkzYmk1allXeHNLR1Z1ZEhKNUxDQmNJbU5oZEdOb1RHOWpYQ0lwTzF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJvWVhOR2FXNWhiR3g1SUQwZ2FHRnpUM2R1TG1OaGJHd29aVzUwY25rc0lGd2labWx1WVd4c2VVeHZZMXdpS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNob1lYTkRZWFJqYUNBbUppQm9ZWE5HYVc1aGJHeDVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXdjbVYySUR3Z1pXNTBjbmt1WTJGMFkyaE1iMk1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2hoYm1Sc1pTaGxiblJ5ZVM1allYUmphRXh2WXl3Z2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFJvYVhNdWNISmxkaUE4SUdWdWRISjVMbVpwYm1Gc2JIbE1iMk1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2hoYm1Sc1pTaGxiblJ5ZVM1bWFXNWhiR3g1VEc5aktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYUdGelEyRjBZMmdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbkJ5WlhZZ1BDQmxiblJ5ZVM1allYUmphRXh2WXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYUdGdVpHeGxLR1Z1ZEhKNUxtTmhkR05vVEc5akxDQjBjblZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9hR0Z6Um1sdVlXeHNlU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVjSEpsZGlBOElHVnVkSEo1TG1acGJtRnNiSGxNYjJNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdoaGJtUnNaU2hsYm5SeWVTNW1hVzVoYkd4NVRHOWpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSjBjbmtnYzNSaGRHVnRaVzUwSUhkcGRHaHZkWFFnWTJGMFkyZ2diM0lnWm1sdVlXeHNlVndpS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdZV0p5ZFhCME9pQm1kVzVqZEdsdmJpaDBlWEJsTENCaGNtY3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNCMGFHbHpMblJ5ZVVWdWRISnBaWE11YkdWdVozUm9JQzBnTVRzZ2FTQStQU0F3T3lBdExXa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVnVkSEo1SUQwZ2RHaHBjeTUwY25sRmJuUnlhV1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWlc1MGNua3VkSEo1VEc5aklEdzlJSFJvYVhNdWNISmxkaUFtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdhR0Z6VDNkdUxtTmhiR3dvWlc1MGNua3NJRndpWm1sdVlXeHNlVXh2WTF3aUtTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV3Y21WMklEd2daVzUwY25rdVptbHVZV3hzZVV4dll5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQm1hVzVoYkd4NVJXNTBjbmtnUFNCbGJuUnllVHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9abWx1WVd4c2VVVnVkSEo1SUNZbVhHNGdJQ0FnSUNBZ0lDQWdLSFI1Y0dVZ1BUMDlJRndpWW5KbFlXdGNJaUI4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQjBlWEJsSUQwOVBTQmNJbU52Ym5ScGJuVmxYQ0lwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdabWx1WVd4c2VVVnVkSEo1TG5SeWVVeHZZeUE4UFNCaGNtY2dKaVpjYmlBZ0lDQWdJQ0FnSUNCaGNtY2dQRDBnWm1sdVlXeHNlVVZ1ZEhKNUxtWnBibUZzYkhsTWIyTXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1NXZHViM0psSUhSb1pTQm1hVzVoYkd4NUlHVnVkSEo1SUdsbUlHTnZiblJ5YjJ3Z2FYTWdibTkwSUdwMWJYQnBibWNnZEc4Z1lWeHVJQ0FnSUNBZ0lDQXZMeUJzYjJOaGRHbHZiaUJ2ZFhSemFXUmxJSFJvWlNCMGNua3ZZMkYwWTJnZ1lteHZZMnN1WEc0Z0lDQWdJQ0FnSUdacGJtRnNiSGxGYm5SeWVTQTlJRzUxYkd3N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lIWmhjaUJ5WldOdmNtUWdQU0JtYVc1aGJHeDVSVzUwY25rZ1B5Qm1hVzVoYkd4NVJXNTBjbmt1WTI5dGNHeGxkR2x2YmlBNklIdDlPMXh1SUNBZ0lDQWdjbVZqYjNKa0xuUjVjR1VnUFNCMGVYQmxPMXh1SUNBZ0lDQWdjbVZqYjNKa0xtRnlaeUE5SUdGeVp6dGNibHh1SUNBZ0lDQWdhV1lnS0dacGJtRnNiSGxGYm5SeWVTa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWxkR2h2WkNBOUlGd2libVY0ZEZ3aU8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG01bGVIUWdQU0JtYVc1aGJHeDVSVzUwY25rdVptbHVZV3hzZVV4dll6dGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlFTnZiblJwYm5WbFUyVnVkR2x1Wld3N1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52YlhCc1pYUmxLSEpsWTI5eVpDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHTnZiWEJzWlhSbE9pQm1kVzVqZEdsdmJpaHlaV052Y21Rc0lHRm1kR1Z5VEc5aktTQjdYRzRnSUNBZ0lDQnBaaUFvY21WamIzSmtMblI1Y0dVZ1BUMDlJRndpZEdoeWIzZGNJaWtnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ5WldOdmNtUXVZWEpuTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jbVZqYjNKa0xuUjVjR1VnUFQwOUlGd2lZbkpsWVd0Y0lpQjhmRnh1SUNBZ0lDQWdJQ0FnSUhKbFkyOXlaQzUwZVhCbElEMDlQU0JjSW1OdmJuUnBiblZsWENJcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dVpYaDBJRDBnY21WamIzSmtMbUZ5Wnp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2NtVmpiM0prTG5SNWNHVWdQVDA5SUZ3aWNtVjBkWEp1WENJcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1eWRtRnNJRDBnZEdocGN5NWhjbWNnUFNCeVpXTnZjbVF1WVhKbk8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xbGRHaHZaQ0E5SUZ3aWNtVjBkWEp1WENJN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Ym1WNGRDQTlJRndpWlc1a1hDSTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEpsWTI5eVpDNTBlWEJsSUQwOVBTQmNJbTV2Y20xaGJGd2lJQ1ltSUdGbWRHVnlURzlqS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Ym1WNGRDQTlJR0ZtZEdWeVRHOWpPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdRMjl1ZEdsdWRXVlRaVzUwYVc1bGJEdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ1ptbHVhWE5vT2lCbWRXNWpkR2x2YmlobWFXNWhiR3g1VEc5aktTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnZEdocGN5NTBjbmxGYm5SeWFXVnpMbXhsYm1kMGFDQXRJREU3SUdrZ1BqMGdNRHNnTFMxcEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCbGJuUnllU0E5SUhSb2FYTXVkSEo1Ulc1MGNtbGxjMXRwWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1Z1ZEhKNUxtWnBibUZzYkhsTWIyTWdQVDA5SUdacGJtRnNiSGxNYjJNcElIdGNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxtTnZiWEJzWlhSbEtHVnVkSEo1TG1OdmJYQnNaWFJwYjI0c0lHVnVkSEo1TG1GbWRHVnlURzlqS1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE5sZEZSeWVVVnVkSEo1S0dWdWRISjVLVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUTI5dWRHbHVkV1ZUWlc1MGFXNWxiRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JjSW1OaGRHTm9YQ0k2SUdaMWJtTjBhVzl1S0hSeWVVeHZZeWtnZTF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlIUm9hWE11ZEhKNVJXNTBjbWxsY3k1c1pXNW5kR2dnTFNBeE95QnBJRDQ5SURBN0lDMHRhU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdaVzUwY25rZ1BTQjBhR2x6TG5SeWVVVnVkSEpwWlhOYmFWMDdYRzRnSUNBZ0lDQWdJR2xtSUNobGJuUnllUzUwY25sTWIyTWdQVDA5SUhSeWVVeHZZeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJ5WldOdmNtUWdQU0JsYm5SeWVTNWpiMjF3YkdWMGFXOXVPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHlaV052Y21RdWRIbHdaU0E5UFQwZ1hDSjBhSEp2ZDF3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkR2h5YjNkdUlEMGdjbVZqYjNKa0xtRnlaenRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjMlYwVkhKNVJXNTBjbmtvWlc1MGNua3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHliM2R1TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRlJvWlNCamIyNTBaWGgwTG1OaGRHTm9JRzFsZEdodlpDQnRkWE4wSUc5dWJIa2dZbVVnWTJGc2JHVmtJSGRwZEdnZ1lTQnNiMk5oZEdsdmJseHVJQ0FnSUNBZ0x5OGdZWEpuZFcxbGJuUWdkR2hoZENCamIzSnlaWE53YjI1a2N5QjBieUJoSUd0dWIzZHVJR05oZEdOb0lHSnNiMk5yTGx4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpYVd4c1pXZGhiQ0JqWVhSamFDQmhkSFJsYlhCMFhDSXBPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQmtaV3hsWjJGMFpWbHBaV3hrT2lCbWRXNWpkR2x2YmlocGRHVnlZV0pzWlN3Z2NtVnpkV3gwVG1GdFpTd2dibVY0ZEV4dll5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1a1pXeGxaMkYwWlNBOUlIdGNiaUFnSUNBZ0lDQWdhWFJsY21GMGIzSTZJSFpoYkhWbGN5aHBkR1Z5WVdKc1pTa3NYRzRnSUNBZ0lDQWdJSEpsYzNWc2RFNWhiV1U2SUhKbGMzVnNkRTVoYldVc1hHNGdJQ0FnSUNBZ0lHNWxlSFJNYjJNNklHNWxlSFJNYjJOY2JpQWdJQ0FnSUgwN1hHNWNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtMWxkR2h2WkNBOVBUMGdYQ0p1WlhoMFhDSXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1JHVnNhV0psY21GMFpXeDVJR1p2Y21kbGRDQjBhR1VnYkdGemRDQnpaVzUwSUhaaGJIVmxJSE52SUhSb1lYUWdkMlVnWkc5dUozUmNiaUFnSUNBZ0lDQWdMeThnWVdOamFXUmxiblJoYkd4NUlIQmhjM01nYVhRZ2IyNGdkRzhnZEdobElHUmxiR1ZuWVhSbExseHVJQ0FnSUNBZ0lDQjBhR2x6TG1GeVp5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJRU52Ym5ScGJuVmxVMlZ1ZEdsdVpXdzdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dVhHNGdJQzh2SUZKbFoyRnlaR3hsYzNNZ2IyWWdkMmhsZEdobGNpQjBhR2x6SUhOamNtbHdkQ0JwY3lCbGVHVmpkWFJwYm1jZ1lYTWdZU0JEYjIxdGIyNUtVeUJ0YjJSMWJHVmNiaUFnTHk4Z2IzSWdibTkwTENCeVpYUjFjbTRnZEdobElISjFiblJwYldVZ2IySnFaV04wSUhOdklIUm9ZWFFnZDJVZ1kyRnVJR1JsWTJ4aGNtVWdkR2hsSUhaaGNtbGhZbXhsWEc0Z0lDOHZJSEpsWjJWdVpYSmhkRzl5VW5WdWRHbHRaU0JwYmlCMGFHVWdiM1YwWlhJZ2MyTnZjR1VzSUhkb2FXTm9JR0ZzYkc5M2N5QjBhR2x6SUcxdlpIVnNaU0IwYnlCaVpWeHVJQ0F2THlCcGJtcGxZM1JsWkNCbFlYTnBiSGtnWW5rZ1lHSnBiaTl5WldkbGJtVnlZWFJ2Y2lBdExXbHVZMngxWkdVdGNuVnVkR2x0WlNCelkzSnBjSFF1YW5OZ0xseHVJQ0J5WlhSMWNtNGdaWGh3YjNKMGN6dGNibHh1ZlNoY2JpQWdMeThnU1dZZ2RHaHBjeUJ6WTNKcGNIUWdhWE1nWlhobFkzVjBhVzVuSUdGeklHRWdRMjl0Ylc5dVNsTWdiVzlrZFd4bExDQjFjMlVnYlc5a2RXeGxMbVY0Y0c5eWRITmNiaUFnTHk4Z1lYTWdkR2hsSUhKbFoyVnVaWEpoZEc5eVVuVnVkR2x0WlNCdVlXMWxjM0JoWTJVdUlFOTBhR1Z5ZDJselpTQmpjbVZoZEdVZ1lTQnVaWGNnWlcxd2RIbGNiaUFnTHk4Z2IySnFaV04wTGlCRmFYUm9aWElnZDJGNUxDQjBhR1VnY21WemRXeDBhVzVuSUc5aWFtVmpkQ0IzYVd4c0lHSmxJSFZ6WldRZ2RHOGdhVzVwZEdsaGJHbDZaVnh1SUNBdkx5QjBhR1VnY21WblpXNWxjbUYwYjNKU2RXNTBhVzFsSUhaaGNtbGhZbXhsSUdGMElIUm9aU0IwYjNBZ2IyWWdkR2hwY3lCbWFXeGxMbHh1SUNCMGVYQmxiMllnYlc5a2RXeGxJRDA5UFNCY0ltOWlhbVZqZEZ3aUlEOGdiVzlrZFd4bExtVjRjRzl5ZEhNZ09pQjdmVnh1S1NrN1hHNWNiblJ5ZVNCN1hHNGdJSEpsWjJWdVpYSmhkRzl5VW5WdWRHbHRaU0E5SUhKMWJuUnBiV1U3WEc1OUlHTmhkR05vSUNoaFkyTnBaR1Z1ZEdGc1UzUnlhV04wVFc5a1pTa2dlMXh1SUNBdkx5QlVhR2x6SUcxdlpIVnNaU0J6YUc5MWJHUWdibTkwSUdKbElISjFibTVwYm1jZ2FXNGdjM1J5YVdOMElHMXZaR1VzSUhOdklIUm9aU0JoWW05MlpWeHVJQ0F2THlCaGMzTnBaMjV0Wlc1MElITm9iM1ZzWkNCaGJIZGhlWE1nZDI5eWF5QjFibXhsYzNNZ2MyOXRaWFJvYVc1bklHbHpJRzFwYzJOdmJtWnBaM1Z5WldRdUlFcDFjM1JjYmlBZ0x5OGdhVzRnWTJGelpTQnlkVzUwYVcxbExtcHpJR0ZqWTJsa1pXNTBZV3hzZVNCeWRXNXpJR2x1SUhOMGNtbGpkQ0J0YjJSbExDQjNaU0JqWVc0Z1pYTmpZWEJsWEc0Z0lDOHZJSE4wY21samRDQnRiMlJsSUhWemFXNW5JR0VnWjJ4dlltRnNJRVoxYm1OMGFXOXVJR05oYkd3dUlGUm9hWE1nWTI5MWJHUWdZMjl1WTJWcGRtRmliSGtnWm1GcGJGeHVJQ0F2THlCcFppQmhJRU52Ym5SbGJuUWdVMlZqZFhKcGRIa2dVRzlzYVdONUlHWnZjbUpwWkhNZ2RYTnBibWNnUm5WdVkzUnBiMjRzSUdKMWRDQnBiaUIwYUdGMElHTmhjMlZjYmlBZ0x5OGdkR2hsSUhCeWIzQmxjaUJ6YjJ4MWRHbHZiaUJwY3lCMGJ5Qm1hWGdnZEdobElHRmpZMmxrWlc1MFlXd2djM1J5YVdOMElHMXZaR1VnY0hKdllteGxiUzRnU1daY2JpQWdMeThnZVc5MUozWmxJRzFwYzJOdmJtWnBaM1Z5WldRZ2VXOTFjaUJpZFc1a2JHVnlJSFJ2SUdadmNtTmxJSE4wY21samRDQnRiMlJsSUdGdVpDQmhjSEJzYVdWa0lHRmNiaUFnTHk4Z1ExTlFJSFJ2SUdadmNtSnBaQ0JHZFc1amRHbHZiaXdnWVc1a0lIbHZkU2R5WlNCdWIzUWdkMmxzYkdsdVp5QjBieUJtYVhnZ1pXbDBhR1Z5SUc5bUlIUm9iM05sWEc0Z0lDOHZJSEJ5YjJKc1pXMXpMQ0J3YkdWaGMyVWdaR1YwWVdsc0lIbHZkWElnZFc1cGNYVmxJSEJ5WldScFkyRnRaVzUwSUdsdUlHRWdSMmwwU0hWaUlHbHpjM1ZsTGx4dUlDQkdkVzVqZEdsdmJpaGNJbkpjSWl3Z1hDSnlaV2RsYm1WeVlYUnZjbEoxYm5ScGJXVWdQU0J5WENJcEtISjFiblJwYldVcE8xeHVmVnh1SWl3aVpuVnVZM1JwYjI0Z1lYTjVibU5IWlc1bGNtRjBiM0pUZEdWd0tHZGxiaXdnY21WemIyeDJaU3dnY21WcVpXTjBMQ0JmYm1WNGRDd2dYM1JvY205M0xDQnJaWGtzSUdGeVp5a2dlMXh1SUNCMGNua2dlMXh1SUNBZ0lIWmhjaUJwYm1adklEMGdaMlZ1VzJ0bGVWMG9ZWEpuS1R0Y2JpQWdJQ0IyWVhJZ2RtRnNkV1VnUFNCcGJtWnZMblpoYkhWbE8xeHVJQ0I5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1SUNBZ0lISmxhbVZqZENobGNuSnZjaWs3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dsdVptOHVaRzl1WlNrZ2UxeHVJQ0FnSUhKbGMyOXNkbVVvZG1Gc2RXVXBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTaDJZV3gxWlNrdWRHaGxiaWhmYm1WNGRDd2dYM1JvY205M0tUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJmWVhONWJtTlViMGRsYm1WeVlYUnZjaWhtYmlrZ2UxeHVJQ0J5WlhSMWNtNGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCelpXeG1JRDBnZEdocGN5eGNiaUFnSUNBZ0lDQWdZWEpuY3lBOUlHRnlaM1Z0Wlc1MGN6dGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0Z0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2RsYmlBOUlHWnVMbUZ3Y0d4NUtITmxiR1lzSUdGeVozTXBPMXh1WEc0Z0lDQWdJQ0JtZFc1amRHbHZiaUJmYm1WNGRDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQmhjM2x1WTBkbGJtVnlZWFJ2Y2xOMFpYQW9aMlZ1TENCeVpYTnZiSFpsTENCeVpXcGxZM1FzSUY5dVpYaDBMQ0JmZEdoeWIzY3NJRndpYm1WNGRGd2lMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1oxYm1OMGFXOXVJRjkwYUhKdmR5aGxjbklwSUh0Y2JpQWdJQ0FnSUNBZ1lYTjVibU5IWlc1bGNtRjBiM0pUZEdWd0tHZGxiaXdnY21WemIyeDJaU3dnY21WcVpXTjBMQ0JmYm1WNGRDd2dYM1JvY205M0xDQmNJblJvY205M1hDSXNJR1Z5Y2lrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lGOXVaWGgwS0hWdVpHVm1hVzVsWkNrN1hHNGdJQ0FnZlNrN1hHNGdJSDA3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdYMkZ6ZVc1alZHOUhaVzVsY21GMGIzSTdJaXdpWm5WdVkzUnBiMjRnWDJGeWNtRjVWMmwwYUVodmJHVnpLR0Z5Y2lrZ2UxeHVJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hoY25JcEtTQnlaWFIxY200Z1lYSnlPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGOWhjbkpoZVZkcGRHaEliMnhsY3pzaUxDSm1kVzVqZEdsdmJpQmZhWFJsY21GaWJHVlViMEZ5Y21GNVRHbHRhWFFvWVhKeUxDQnBLU0I3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0JjSW5WdVpHVm1hVzVsWkZ3aUlIeDhJQ0VvVTNsdFltOXNMbWwwWlhKaGRHOXlJR2x1SUU5aWFtVmpkQ2hoY25JcEtTa2djbVYwZFhKdU8xeHVJQ0IyWVhJZ1gyRnljaUE5SUZ0ZE8xeHVJQ0IyWVhJZ1gyNGdQU0IwY25WbE8xeHVJQ0IyWVhJZ1gyUWdQU0JtWVd4elpUdGNiaUFnZG1GeUlGOWxJRDBnZFc1a1pXWnBibVZrTzF4dVhHNGdJSFJ5ZVNCN1hHNGdJQ0FnWm05eUlDaDJZWElnWDJrZ1BTQmhjbkpiVTNsdFltOXNMbWwwWlhKaGRHOXlYU2dwTENCZmN6c2dJU2hmYmlBOUlDaGZjeUE5SUY5cExtNWxlSFFvS1NrdVpHOXVaU2s3SUY5dUlEMGdkSEoxWlNrZ2UxeHVJQ0FnSUNBZ1gyRnljaTV3ZFhOb0tGOXpMblpoYkhWbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0drZ0ppWWdYMkZ5Y2k1c1pXNW5kR2dnUFQwOUlHa3BJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdmU0JqWVhSamFDQW9aWEp5S1NCN1hHNGdJQ0FnWDJRZ1BTQjBjblZsTzF4dUlDQWdJRjlsSUQwZ1pYSnlPMXh1SUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQnBaaUFvSVY5dUlDWW1JRjlwVzF3aWNtVjBkWEp1WENKZElDRTlJRzUxYkd3cElGOXBXMXdpY21WMGRYSnVYQ0pkS0NrN1hHNGdJQ0FnZlNCbWFXNWhiR3g1SUh0Y2JpQWdJQ0FnSUdsbUlDaGZaQ2tnZEdoeWIzY2dYMlU3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJRjloY25JN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWDJsMFpYSmhZbXhsVkc5QmNuSmhlVXhwYldsME95SXNJbVoxYm1OMGFXOXVJRjloY25KaGVVeHBhMlZVYjBGeWNtRjVLR0Z5Y2l3Z2JHVnVLU0I3WEc0Z0lHbG1JQ2hzWlc0Z1BUMGdiblZzYkNCOGZDQnNaVzRnUGlCaGNuSXViR1Z1WjNSb0tTQnNaVzRnUFNCaGNuSXViR1Z1WjNSb08xeHVYRzRnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0JoY25JeUlEMGdibVYzSUVGeWNtRjVLR3hsYmlrN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJR0Z5Y2pKYmFWMGdQU0JoY25KYmFWMDdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdZWEp5TWp0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JmWVhKeVlYbE1hV3RsVkc5QmNuSmhlVHNpTENKMllYSWdZWEp5WVhsTWFXdGxWRzlCY25KaGVTQTlJSEpsY1hWcGNtVW9YQ0l1TDJGeWNtRjVUR2xyWlZSdlFYSnlZWGxjSWlrN1hHNWNibVoxYm1OMGFXOXVJRjkxYm5OMWNIQnZjblJsWkVsMFpYSmhZbXhsVkc5QmNuSmhlU2h2TENCdGFXNU1aVzRwSUh0Y2JpQWdhV1lnS0NGdktTQnlaWFIxY200N1hHNGdJR2xtSUNoMGVYQmxiMllnYnlBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnY21WMGRYSnVJR0Z5Y21GNVRHbHJaVlJ2UVhKeVlYa29ieXdnYldsdVRHVnVLVHRjYmlBZ2RtRnlJRzRnUFNCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTG1OaGJHd29ieWt1YzJ4cFkyVW9PQ3dnTFRFcE8xeHVJQ0JwWmlBb2JpQTlQVDBnWENKUFltcGxZM1JjSWlBbUppQnZMbU52Ym5OMGNuVmpkRzl5S1NCdUlEMGdieTVqYjI1emRISjFZM1J2Y2k1dVlXMWxPMXh1SUNCcFppQW9iaUE5UFQwZ1hDSk5ZWEJjSWlCOGZDQnVJRDA5UFNCY0lsTmxkRndpS1NCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNodktUdGNiaUFnYVdZZ0tHNGdQVDA5SUZ3aVFYSm5kVzFsYm5SelhDSWdmSHdnTDE0b1B6cFZhWHhKS1c1MEtEODZPSHd4Tm53ek1pa29QenBEYkdGdGNHVmtLVDlCY25KaGVTUXZMblJsYzNRb2Jpa3BJSEpsZEhWeWJpQmhjbkpoZVV4cGEyVlViMEZ5Y21GNUtHOHNJRzFwYmt4bGJpazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1gzVnVjM1Z3Y0c5eWRHVmtTWFJsY21GaWJHVlViMEZ5Y21GNU95SXNJbVoxYm1OMGFXOXVJRjl1YjI1SmRHVnlZV0pzWlZKbGMzUW9LU0I3WEc0Z0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pKYm5aaGJHbGtJR0YwZEdWdGNIUWdkRzhnWkdWemRISjFZM1IxY21VZ2JtOXVMV2wwWlhKaFlteGxJR2x1YzNSaGJtTmxMbHhjYmtsdUlHOXlaR1Z5SUhSdklHSmxJR2wwWlhKaFlteGxMQ0J1YjI0dFlYSnlZWGtnYjJKcVpXTjBjeUJ0ZFhOMElHaGhkbVVnWVNCYlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNncElHMWxkR2h2WkM1Y0lpazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1gyNXZia2wwWlhKaFlteGxVbVZ6ZERzaUxDSjJZWElnWVhKeVlYbFhhWFJvU0c5c1pYTWdQU0J5WlhGMWFYSmxLRndpTGk5aGNuSmhlVmRwZEdoSWIyeGxjMXdpS1R0Y2JseHVkbUZ5SUdsMFpYSmhZbXhsVkc5QmNuSmhlVXhwYldsMElEMGdjbVZ4ZFdseVpTaGNJaTR2YVhSbGNtRmliR1ZVYjBGeWNtRjVUR2x0YVhSY0lpazdYRzVjYm5aaGNpQjFibk4xY0hCdmNuUmxaRWwwWlhKaFlteGxWRzlCY25KaGVTQTlJSEpsY1hWcGNtVW9YQ0l1TDNWdWMzVndjRzl5ZEdWa1NYUmxjbUZpYkdWVWIwRnljbUY1WENJcE8xeHVYRzUyWVhJZ2JtOXVTWFJsY21GaWJHVlNaWE4wSUQwZ2NtVnhkV2x5WlNoY0lpNHZibTl1U1hSbGNtRmliR1ZTWlhOMFhDSXBPMXh1WEc1bWRXNWpkR2x2YmlCZmMyeHBZMlZrVkc5QmNuSmhlU2hoY25Jc0lHa3BJSHRjYmlBZ2NtVjBkWEp1SUdGeWNtRjVWMmwwYUVodmJHVnpLR0Z5Y2lrZ2ZId2dhWFJsY21GaWJHVlViMEZ5Y21GNVRHbHRhWFFvWVhKeUxDQnBLU0I4ZkNCMWJuTjFjSEJ2Y25SbFpFbDBaWEpoWW14bFZHOUJjbkpoZVNoaGNuSXNJR2twSUh4OElHNXZia2wwWlhKaFlteGxVbVZ6ZENncE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUY5emJHbGpaV1JVYjBGeWNtRjVPeUlzSW1aMWJtTjBhVzl1SUY5amJHRnpjME5oYkd4RGFHVmpheWhwYm5OMFlXNWpaU3dnUTI5dWMzUnlkV04wYjNJcElIdGNiaUFnYVdZZ0tDRW9hVzV6ZEdGdVkyVWdhVzV6ZEdGdVkyVnZaaUJEYjI1emRISjFZM1J2Y2lrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lRMkZ1Ym05MElHTmhiR3dnWVNCamJHRnpjeUJoY3lCaElHWjFibU4wYVc5dVhDSXBPMXh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWDJOc1lYTnpRMkZzYkVOb1pXTnJPeUlzSW1aMWJtTjBhVzl1SUY5a1pXWnBibVZRY205d1pYSjBhV1Z6S0hSaGNtZGxkQ3dnY0hKdmNITXBJSHRjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQndjbTl3Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ2NISnZjSE5iYVYwN1hHNGdJQ0FnWkdWelkzSnBjSFJ2Y2k1bGJuVnRaWEpoWW14bElEMGdaR1Z6WTNKcGNIUnZjaTVsYm5WdFpYSmhZbXhsSUh4OElHWmhiSE5sTzF4dUlDQWdJR1JsYzJOeWFYQjBiM0l1WTI5dVptbG5kWEpoWW14bElEMGdkSEoxWlR0Y2JpQWdJQ0JwWmlBb1hDSjJZV3gxWlZ3aUlHbHVJR1JsYzJOeWFYQjBiM0lwSUdSbGMyTnlhWEIwYjNJdWQzSnBkR0ZpYkdVZ1BTQjBjblZsTzF4dUlDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMFlYSm5aWFFzSUdSbGMyTnlhWEIwYjNJdWEyVjVMQ0JrWlhOamNtbHdkRzl5S1R0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmZZM0psWVhSbFEyeGhjM01vUTI5dWMzUnlkV04wYjNJc0lIQnliM1J2VUhKdmNITXNJSE4wWVhScFkxQnliM0J6S1NCN1hHNGdJR2xtSUNod2NtOTBiMUJ5YjNCektTQmZaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aERiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1VzSUhCeWIzUnZVSEp2Y0hNcE8xeHVJQ0JwWmlBb2MzUmhkR2xqVUhKdmNITXBJRjlrWldacGJtVlFjbTl3WlhKMGFXVnpLRU52Ym5OMGNuVmpkRzl5TENCemRHRjBhV05RY205d2N5azdYRzRnSUhKbGRIVnliaUJEYjI1emRISjFZM1J2Y2p0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JmWTNKbFlYUmxRMnhoYzNNN0lpd2lablZ1WTNScGIyNGdYMlJsWm1sdVpWQnliM0JsY25SNUtHOWlhaXdnYTJWNUxDQjJZV3gxWlNrZ2UxeHVJQ0JwWmlBb2EyVjVJR2x1SUc5aWFpa2dlMXh1SUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h2WW1vc0lHdGxlU3dnZTF4dUlDQWdJQ0FnZG1Gc2RXVTZJSFpoYkhWbExGeHVJQ0FnSUNBZ1pXNTFiV1Z5WVdKc1pUb2dkSEoxWlN4Y2JpQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dkSEoxWlN4Y2JpQWdJQ0FnSUhkeWFYUmhZbXhsT2lCMGNuVmxYRzRnSUNBZ2ZTazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdiMkpxVzJ0bGVWMGdQU0IyWVd4MVpUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnZZbW83WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdYMlJsWm1sdVpWQnliM0JsY25SNU95SXNJblpoY2lCbFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlTRnVZWFpwWjJGMGIzSXVjR1Z5YldsemMybHZibk45TEhJOVpuVnVZM1JwYjI0b0tYdHlaWFIxY200aElXNWhkbWxuWVhSdmNpNXRaV1JwWVVSbGRtbGpaWE45TzJaMWJtTjBhVzl1SUhRb1pTeHlMSFFzYml4aExHa3NieWw3ZEhKNWUzWmhjaUIxUFdWYmFWMG9ieWtzWXoxMUxuWmhiSFZsZldOaGRHTm9LR1VwZTNKbGRIVnliaUIyYjJsa0lIUW9aU2w5ZFM1a2IyNWxQM0lvWXlrNlVISnZiV2x6WlM1eVpYTnZiSFpsS0dNcExuUm9aVzRvYml4aEtYMW1kVzVqZEdsdmJpQnVLR1VwZTNKbGRIVnliaUJtZFc1amRHbHZiaWdwZTNaaGNpQnlQWFJvYVhNc2JqMWhjbWQxYldWdWRITTdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2htZFc1amRHbHZiaWhoTEdrcGUzWmhjaUJ2UFdVdVlYQndiSGtvY2l4dUtUdG1kVzVqZEdsdmJpQjFLR1VwZTNRb2J5eGhMR2tzZFN4akxGd2libVY0ZEZ3aUxHVXBmV1oxYm1OMGFXOXVJR01vWlNsN2RDaHZMR0VzYVN4MUxHTXNYQ0owYUhKdmQxd2lMR1VwZlhVb2RtOXBaQ0F3S1gwcEtYMTlablZ1WTNScGIyNGdZU2hsTEhJcGUzSmxkSFZ5YmlCbWRXNWpkR2x2YmlobEtYdHBaaWhCY25KaGVTNXBjMEZ5Y21GNUtHVXBLWEpsZEhWeWJpQmxmU2hsS1h4OFpuVnVZM1JwYjI0b1pTeHlLWHRwWmloY0luVnVaR1ZtYVc1bFpGd2lQVDEwZVhCbGIyWWdVM2x0WW05c2ZId2hLRk41YldKdmJDNXBkR1Z5WVhSdmNpQnBiaUJQWW1wbFkzUW9aU2twS1hKbGRIVnlianQyWVhJZ2REMWJYU3h1UFNFd0xHRTlJVEVzYVQxMmIybGtJREE3ZEhKNWUyWnZjaWgyWVhJZ2J5eDFQV1ZiVTNsdFltOXNMbWwwWlhKaGRHOXlYU2dwT3lFb2JqMG9iejExTG01bGVIUW9LU2t1Wkc5dVpTa21KaWgwTG5CMWMyZ29ieTUyWVd4MVpTa3NJWEo4ZkhRdWJHVnVaM1JvSVQwOWNpazdiajBoTUNrN2ZXTmhkR05vS0dVcGUyRTlJVEFzYVQxbGZXWnBibUZzYkhsN2RISjVlMjU4Zkc1MWJHdzlQWFV1Y21WMGRYSnVmSHgxTG5KbGRIVnliaWdwZldacGJtRnNiSGw3YVdZb1lTbDBhSEp2ZHlCcGZYMXlaWFIxY200Z2RIMG9aU3h5S1h4OFpuVnVZM1JwYjI0b1pTeHlLWHRwWmlnaFpTbHlaWFIxY200N2FXWW9YQ0p6ZEhKcGJtZGNJajA5ZEhsd1pXOW1JR1VwY21WMGRYSnVJR2tvWlN4eUtUdDJZWElnZEQxUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTG1OaGJHd29aU2t1YzJ4cFkyVW9PQ3d0TVNrN1hDSlBZbXBsWTNSY0lqMDlQWFFtSm1VdVkyOXVjM1J5ZFdOMGIzSW1KaWgwUFdVdVkyOXVjM1J5ZFdOMGIzSXVibUZ0WlNrN2FXWW9YQ0pOWVhCY0lqMDlQWFI4ZkZ3aVUyVjBYQ0k5UFQxMEtYSmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHVXBPMmxtS0Z3aVFYSm5kVzFsYm5SelhDSTlQVDEwZkh3dlhpZy9PbFZwZkVrcGJuUW9Qem80ZkRFMmZETXlLU2cvT2tOc1lXMXdaV1FwUDBGeWNtRjVKQzh1ZEdWemRDaDBLU2x5WlhSMWNtNGdhU2hsTEhJcGZTaGxMSElwZkh4bWRXNWpkR2x2YmlncGUzUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9YQ0pKYm5aaGJHbGtJR0YwZEdWdGNIUWdkRzhnWkdWemRISjFZM1IxY21VZ2JtOXVMV2wwWlhKaFlteGxJR2x1YzNSaGJtTmxMbHhjYmtsdUlHOXlaR1Z5SUhSdklHSmxJR2wwWlhKaFlteGxMQ0J1YjI0dFlYSnlZWGtnYjJKcVpXTjBjeUJ0ZFhOMElHaGhkbVVnWVNCYlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNncElHMWxkR2h2WkM1Y0lpbDlLQ2w5Wm5WdVkzUnBiMjRnYVNobExISXBleWh1ZFd4c1BUMXlmSHh5UG1VdWJHVnVaM1JvS1NZbUtISTlaUzVzWlc1bmRHZ3BPMlp2Y2loMllYSWdkRDB3TEc0OWJtVjNJRUZ5Y21GNUtISXBPM1E4Y2p0MEt5c3BibHQwWFQxbFczUmRPM0psZEhWeWJpQnVmWFpoY2lCdlBXWjFibU4wYVc5dUtDbDdkbUZ5SUhJOWJpaHlaV2RsYm1WeVlYUnZjbEoxYm5ScGJXVXViV0Z5YXlnb1puVnVZM1JwYjI0Z2NpaDBLWHR5WlhSMWNtNGdjbVZuWlc1bGNtRjBiM0pTZFc1MGFXMWxMbmR5WVhBb0tHWjFibU4wYVc5dUtISXBlMlp2Y2lnN095bHpkMmwwWTJnb2NpNXdjbVYyUFhJdWJtVjRkQ2w3WTJGelpTQXdPbkpsZEhWeWJpQnlMbUZpY25Wd2RDaGNJbkpsZEhWeWJsd2lMRzVsZHlCUWNtOXRhWE5sS0daMWJtTjBhVzl1S0NsN2RtRnlJSEk5YmloeVpXZGxibVZ5WVhSdmNsSjFiblJwYldVdWJXRnlheWdvWm5WdVkzUnBiMjRnY2lodUxHRXBlM1poY2lCcExHODdjbVYwZFhKdUlISmxaMlZ1WlhKaGRHOXlVblZ1ZEdsdFpTNTNjbUZ3S0NobWRXNWpkR2x2YmloeUtYdG1iM0lvT3pzcGMzZHBkR05vS0hJdWNISmxkajF5TG01bGVIUXBlMk5oYzJVZ01EcHlaWFIxY200Z1pTZ3BmSHhoS0c1bGR5QkVUMDFGZUdObGNIUnBiMjRvWENKT1lYWnBaMkYwYjNJZ1FWQkpPaUJ3WlhKdGFYTnphVzl1Y3lCdWIzUWdjM1Z3Y0c5eWRHVmtYQ0lzWENKT1QxUmZVMVZRVUU5U1ZFVkVYMFZTVWx3aUtTa3NjaTV3Y21WMlBURXNjaTV1WlhoMFBUUXNibUYyYVdkaGRHOXlMbkJsY20xcGMzTnBiMjV6TG5GMVpYSjVLSHR1WVcxbE9uUjlLVHRqWVhObElEUTZhVDF5TG5ObGJuUXNiejFtZFc1amRHbHZiaUJsS0hJcGUya3VjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWhjSW1Ob1lXNW5aVndpTEdVcExIVW9jaTUwWVhKblpYUXVjM1JoZEdVc2JpeGhLWDBzYVM1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0Z3aVkyaGhibWRsWENJc2J5a3NkU2hwTG5OMFlYUmxMRzRzWVNrc2NpNXVaWGgwUFRFek8ySnlaV0ZyTzJOaGMyVWdNVEE2Y2k1d2NtVjJQVEV3TEhJdWREQTljaTVqWVhSamFDZ3hLU3hoS0hJdWREQXBPMk5oYzJVZ01UTTZZMkZ6WlZ3aVpXNWtYQ0k2Y21WMGRYSnVJSEl1YzNSdmNDZ3BmWDBwTEhJc2JuVnNiQ3hiV3pFc01UQmRYU2w5S1NrcE8zSmxkSFZ5YmlCbWRXNWpkR2x2YmlobExIUXBlM0psZEhWeWJpQnlMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1gxOUtDa3BLVHRqWVhObElERTZZMkZ6WlZ3aVpXNWtYQ0k2Y21WMGRYSnVJSEl1YzNSdmNDZ3BmWDBwTEhJcGZTa3BLVHR5WlhSMWNtNGdablZ1WTNScGIyNG9aU2w3Y21WMGRYSnVJSEl1WVhCd2JIa29kR2hwY3l4aGNtZDFiV1Z1ZEhNcGZYMG9LU3gxUFdaMWJtTjBhVzl1S0dVc2NpeDBLWHR6ZDJsMFkyZ29aU2w3WTJGelpWd2laR1Z1YVdWa1hDSTZkQ2h1WlhjZ1JFOU5SWGhqWlhCMGFXOXVLRndpVUdWeWJXbHpjMmx2YmlCa1pXNXBaV1JjSWl4Y0lrNVBWRjlCVEV4UFYwVkVYMFZTVWx3aUtTazdZbkpsWVdzN1pHVm1ZWFZzZERweUtHVXBmWDBzWXoxbWRXNWpkR2x2YmlncGUzWmhjaUIwUFc0b2NtVm5aVzVsY21GMGIzSlNkVzUwYVcxbExtMWhjbXNvS0daMWJtTjBhVzl1SUhRb2FTeDFLWHR5WlhSMWNtNGdjbVZuWlc1bGNtRjBiM0pTZFc1MGFXMWxMbmR5WVhBb0tHWjFibU4wYVc5dUtIUXBlMlp2Y2lnN095bHpkMmwwWTJnb2RDNXdjbVYyUFhRdWJtVjRkQ2w3WTJGelpTQXdPbkpsZEhWeWJpQjBMbUZpY25Wd2RDaGNJbkpsZEhWeWJsd2lMRzVsZHlCUWNtOXRhWE5sS0daMWJtTjBhVzl1S0NsN2RtRnlJSFE5YmloeVpXZGxibVZ5WVhSdmNsSjFiblJwYldVdWJXRnlheWdvWm5WdVkzUnBiMjRnZENodUxHTXBlM1poY2lCekxHWXNjRHR5WlhSMWNtNGdjbVZuWlc1bGNtRjBiM0pTZFc1MGFXMWxMbmR5WVhBb0tHWjFibU4wYVc5dUtIUXBlMlp2Y2lnN095bHpkMmwwWTJnb2RDNXdjbVYyUFhRdWJtVjRkQ2w3WTJGelpTQXdPbkpsZEhWeWJpQmxLQ2ttSm5Jb0tYeDhZeWh1WlhjZ1JFOU5SWGhqWlhCMGFXOXVLRndpVG1GMmFXZGhkRzl5SUVGUVNUb2djR1Z5YldsemMybHZibk1nYjNJZ1RtRjJhV2RoZEc5eUlFRlFTVG9nYldWa2FXRkVaWFpwWTJWeklHNXZkQ0J6ZFhCd2IzSjBaV1JjSWl4Y0lrNVBWRjlUVlZCUVQxSlVSVVJmUlZKU1hDSXBLU3gwTG5CeVpYWTlNU3gwTG5Rd1BWQnliMjFwYzJVc2RDNXVaWGgwUFRVc2J5aHBLVHRqWVhObElEVTZjbVYwZFhKdUlIUXVkREU5ZEM1elpXNTBMSFF1Ym1WNGREMDRMRzVoZG1sbllYUnZjaTV0WldScFlVUmxkbWxqWlhNdVoyVjBWWE5sY2sxbFpHbGhLSFVwTzJOaGMyVWdPRHB5WlhSMWNtNGdkQzUwTWoxMExuTmxiblFzZEM1ME16MWJkQzUwTVN4MExuUXlYU3gwTG01bGVIUTlNVElzZEM1ME1DNWhiR3d1WTJGc2JDaDBMblF3TEhRdWRETXBPMk5oYzJVZ01USTZjejEwTG5ObGJuUXNaajFoS0hNc01pa3NjRDFtV3pGZExHNG9jQ2tzZEM1dVpYaDBQVEl4TzJKeVpXRnJPMk5oYzJVZ01UZzZkQzV3Y21WMlBURTRMSFF1ZERROWRDNWpZWFJqYUNneEtTeGpLSFF1ZERRcE8yTmhjMlVnTWpFNlkyRnpaVndpWlc1a1hDSTZjbVYwZFhKdUlIUXVjM1J2Y0NncGZYMHBMSFFzYm5Wc2JDeGJXekVzTVRoZFhTbDlLU2twTzNKbGRIVnliaUJtZFc1amRHbHZiaWhsTEhJcGUzSmxkSFZ5YmlCMExtRndjR3g1S0hSb2FYTXNZWEpuZFcxbGJuUnpLWDE5S0NrcEtUdGpZWE5sSURFNlkyRnpaVndpWlc1a1hDSTZjbVYwZFhKdUlIUXVjM1J2Y0NncGZYMHBMSFFwZlNrcEtUdHlaWFIxY200Z1puVnVZM1JwYjI0b1pTeHlLWHR5WlhSMWNtNGdkQzVoY0hCc2VTaDBhR2x6TEdGeVozVnRaVzUwY3lsOWZTZ3BPMlY0Y0c5eWRIdHZJR0Z6SUdkbGRGQmxjbTFwYzNOcGIyNHNZeUJoY3lCblpYUlZjMlZ5VFdWa2FXRlRkSEpsWVcwc2NpQmhjeUJwYzA1aGRtbG5ZWFJ2Y2sxbFpHbGhSR1YyYVdObGMxTjFjSEJ2Y25SbFpDeGxJR0Z6SUdselRtRjJhV2RoZEc5eVVHVnliV2x6YzJsdmJuTlRkWEJ3YjNKMFpXUjlPMXh1THk4aklITnZkWEpqWlUxaGNIQnBibWRWVWt3OVpHRjBZVHBoY0hCc2FXTmhkR2x2Ymk5cWMyOXVPMk5vWVhKelpYUTlkWFJtTFRnN1ltRnpaVFkwTEdWNVNqSmFXRXA2WVZjNWRVbHFiM3BNUTBwdFlWZDRiRWxxYjJsaFZ6VnJXbGhuZFZwWVRYVmhiazFwVEVOS2VtSXpWbmxaTWxaNlNXcHdZa2xwTkhWTU0wNTVXWGs1Y0dNd05XaGtiV3h1V1ZoU2RtTnNRbXhqYlRGd1l6Tk9jR0l5TlhwVk0xWjNZMGM1ZVdSSFZtdE1iWEI2U1dsM2FVeHBOSFpqTTBwcVRESnNlbFJ0UmpKaFYyUm9aRWM1ZVZSWFZtdGhWMFpGV2xoYWNGa3lWbnBWTTFaM1kwYzVlV1JIVm10TWJYQjZTV2wzYVV4cE5IWmpNMHBxVERKa2JHUkdRbXhqYlRGd1l6Tk9jR0l5TkhWaGJrMXBURU5KZFV4cE9YcGpiVTEyV2pKV01GWllUbXhqYXpGc1drZHNhRlV6VW5sYVYwWjBURzF3ZWtsc01ITkpiazUyWkZoS2FscFlUa1JpTWpVd1dsYzFNRWxxY0dKSmFUaHhTMng0ZFVsRGIyZFJNbWhzV1RKeloyUXlhR3hrUjJoc1kybENUMWxZV25CYU1rWXdZak5KWjFGV1FrcFBhVUozV2xoS2RHRllUbnBoVnpsMVkzbENjR041UW5wa1dFSjNZak5LTUZwWFVXZFpibXRuWkVkb2JFbEhUakZqYmtwc1ltNVJaMWx1U25aa00wNXNZMng0ZFVsRGIyZFJTRXBzWkVoV2VXSnVUV2RsTWtwMllqSjRiRmxYTlRsWVJ6Um5TMms1WTJKdFZqUmpSemw1WkVOQ2ExcFhXbWhrVjNnd1NVTm5jRWxFTUN0SlEwVm9ZbTFHTW1GWFpHaGtSemw1VEc1Q2JHTnRNWEJqTTA1d1lqSTFlbGhITkdsTVEwbDJTMmx3WTJKcFFYRkpSVTV2V2xkT2NrbElaRzlhV0ZKdldsaEpaMVJ0UmpKaFYyUm9aRWM1ZVVsRlJsRlRWRzluWWxkV2EyRlhSa1ZhV0Zwd1dUSldla2xIYkhwSlNFNHhZMGhDZG1OdVVteGFRMEpwWlZOQ01HRkhWV2RaTTFaNVkyMVdkV1JEUW1samJUa3pZekpXZVZoSE5HZExhVUpCWTIxV01HUllTblZqZVVJM1dXMDVkbUpIVm1oaWJqRmpZbWxCY1V3eGVIVmFXR2gzWWpOS01FbEhVbXhhYlVZeFlraFJaMHREYTJkUVZEUm5TVk5HZFZsWVduQmFNa1l3WWpOSmRXSlhWbXRoVjBaRldsaGFjRmt5Vm5wWVJ6UnBURU5LY0dKWVFuWmpibEZuWVZoT1QxbFlXbkJhTWtZd1lqTktVVnBZU25SaFdFNTZZVmM1ZFdNeFRqRmpTRUoyWTI1U2JGcERRbTFqYlRsMFNVTmpkVXd5YkhwVWJVWXlZVmRrYUdSSE9YbFZSMVo1WWxkc2VtTXliSFppYms1VVpGaENkMkl6U2pCYVYxRnVXRWMxWTJKcE9IRkxiSGgxU1VOdloxVnRWakJrV0VwMVkzbENhRWxJUW5saU1qRndZekpWWjJOdFZucGlNbmd5V2xkUloyUXlhR3hpYVVJd1lVZFZaMk5IVm5saVYyeDZZekpzZG1KcFFuQmplVUp1WTIxR2RXUkhWbXRKUjBvMVNVaFNiMXBUUWpGak1sWjVXRWMwWjB0cFFrRmpSMFo1V1Zjd1oyTkhWbmxpVjJ4Nll6SnNkbUpyTldoaVYxVm5TVU5CWjBsRFFXZEpRMEZuU1VOQ1QxbFhNV3hKUnpsdFNVaFNiMXBUUW5kYVdFcDBZVmhPZW1GWE9YVk1hVUpCWXpKV2JFbEhhREJrU0VKNlQyazRkbVI2VG1wTWJXUndaRWRvTVZscE5YQmllVGwzV2xoS2RHRllUbnBoVnpsMVkzazRhbHBYTlRGaVYxSnNXbWt4ZDFwWVNuUmhXRTU2WVZjNWRXSnRSblJhVm5oMVNVTnZaMUZJU214a1NGWjVZbTVOWjJVeFFubGlNakZ3WXpKV09WaEhOR2RMYVRsalltMVdOR05IT1hsa1EwSnJXbGRhYUdSWGVEQkpSMFo2WlZjMWFrbERhSGRhV0VwMFlWaE9lbUZYT1hWVWJVWjBXbE5yWjFCVU5HZGxNWGgxV0VoU2VWcFlVakZqYlRSblltMVdNMGxHUW5saU1qRndZekpWYjFsWVRqVmliVTFuUzBoS2JHTXlPWE5rYlZWelNVaEtiR0Z0Vm1wa1EydG5VRlEwWjJVeGVIVllTRkpqWkVkc2JVbERaMmhoV0U1UFdWaGFjRm95UmpCaU0wcFJXbGhLZEdGWVRucGhWemwxWXpGT01XTklRblpqYmxKc1drTm5jRXRUUWpkWVJ6VmpaRVo0TUZoSVVubGFWM0JzV1ROUmIySnRWak5KUlZKUVZGVldORmt5Vm5ka1IyeDJZbWxuYmxSdFJqSmhWMlJvWkVjNWVVbEZSbEZUVkc5blkwZFdlV0pYYkhwak1teDJZbTVOWjJKdE9UQkpTRTR4WTBoQ2RtTnVVbXhhUTJOelNVTmtUMVF4VW1aVk1WWlJWVVU1VTFaRlZrVllNRlpUVldsamNFdFdlSFZZU0ZKalpFZ3hZMkpzZUhWWVNGSmpaRWhTZVdWVFFqZFlSelZqWkVaNE1GaElVbXBpTWpWNlpFTkNkMXBZU25SaFdFNTZZVmM1ZFZVelVtaGtTRlo2U1VRd1oxbFlaR2hoV0ZGblltMUdNbUZYWkdoa1J6bDVURzVDYkdOdE1YQmpNMDV3WWpJMWVreHVSakZhV0VvMVMwaHpaMkp0Um5SYVZHOW5ZMGRXZVdKWGJIcGpNbXgyWW1zMWFHSlhWV2RtVTJ4allteDRNRmhJVW1Oa1IwNTJZbTVPTUVsSE9YVlJNbWhvWW0xa2JFbEVNR2RMUjFZeVdsYzFNRXRUUVRsUWFVSTNXRWMxWTJSR2VEQllTRkpqWkVoQ2JHTnRNWEJqTTA1d1lqSTFWR1JIUmpCa1dFMTFZMjFXZEdJeldteFNXRnBzWW01U1RXRllUakJhVnpWc1kybG5ibGt5YUdoaWJXUnNTbmwzWjJJeU5VUmhSMFoxV2pKVmNGaEhOV05rUm5nd1dFaFNZMlJJU214ak1qbHpaRzFXVUdOc1NteGhiVlpxWkVWS2FHTXlWbXRVTWpWVVpFZEdNRnBUYUd4a2JWWjFaRU0xTUZsWVNtNWFXRkYxWXpOU2FHUkhWWE5KU0Vwc1l6STVjMlJ0VlhOSlNFcHNZVzFXYW1SRGJHTmliSGd3V0VoU1kyUklNV05pYkhnd1dFaFNZMlJJUW14amJURndZek5PY0dJeU5WUmtSMFl3WkZoTmRWbFhVbXRTV0Zwc1ltNVNUV0ZZVGpCYVZ6VnNZMmxuYmxreWFHaGliV1JzU25sM1oySXlOVVJoUjBaMVdqSlZjRmhITldOa1JuZ3dXRWhTZVZwWVRuWmlTRnBzVkROS1UxcFhjR3haTTFKRFdWaE9iRnBGT1hWVk0xSm9aRWRWYjJOSFZubGlWMng2WXpKc2RtSnNUakJaV0ZJeFkzazFlbVJIUmpCYVUzZG5ZMjFXZW1JeWVESmFVM2RuWTIxV2NWcFhUakJMVm5oMVdFaFNZMlJJTUdkWk1rWXdXVEpuWjB0SFZubGpiVGw1UzFOQ04xaEhOV05rUm5nd1dFaFNlVnBYY0d4Wk0xRnZXbGhLZVdJelNYQllSelZqWkVaNE1HWldlSFZZU0ZJNVMxWjRkV1pXZUhWWVJ6VnFZakkxZW1SRFFubGFXRTUyWWtoYWJGUXpTbE5hVjNCc1dUTlNRMWxZVG14YVJUbDFWVE5TYUdSSFZXZFFVMEZ2WXpOU2FHUkhWWE5KU0Vwc1l6STVjMlJ0VlhOSlNFcHNZVzFXYW1SRGEyZFFWRFJuWlRGNGRWaElVbnBrTW13d1dUSm5aMHRJVGpCWldGSnNTMU5DTjFoSE5XTmtSbmd3V1RKR2VscFRRVzVhUjFaMVlWZFdhMHA2Y0dOaWJIZ3dXRWhTWTJSSVNteGhiVlpxWkVOb2RWcFlZMmRTUlRsT1VsaG9hbHBZUWpCaFZ6bDFTME5rVVZwWVNuUmhXRTU2WVZjNWRVbEhVbXhpYld4c1drTmpjMGxEWkU5VU1WSm1VVlY0VFZReFpFWlNSamxHVld4SmJrdFRiR05pYkhnd1dFaFNZMlJIU25sYVYwWnlXRWMxWTJSR2VEQmFSMVp0V1ZoV2MyUkVjR05pYkhnd1dFaFNZMlJJU214ak1qbHpaRzFWYjJNelVtaGtSMVZ3V0VjMVkyUklNV05pYmpGalltbEpjMGx0YkhSalJ6bDVaRU5DY0dNd05XaGtiV3h1V1ZoU2RtTnNRbXhqYlRGd1l6Tk9jR0l5TlhwVk0xWjNZMGM1ZVdSSFZtdEpSMXA1WWpJd1owcDVOSFpoV0U1UFdWaGFjRm95UmpCaU0wcFJXbGhLZEdGWVRucGhWemwxWXpGT01XTklRblpqYmxKc1drTmtZMkp0YkhSalJ6bDVaRU5DY0dNd05XaGtiV3h1V1ZoU2RtTnJNV3hhUjJ4b1VrZFdNbUZYVG14ak1VNHhZMGhDZG1OdVVteGFRMEp0WTIwNWRFbERZM1ZNTW14NlZHMUdNbUZYWkdoa1J6bDVWRmRXYTJGWFJrVmFXRnB3V1RKV2VsVXpWbmRqUnpsNVpFZFdhMG94ZUhWaFZ6RjNZak5LTUVsSFpHeGtSa0pzWTIweGNHTXpUbkJpTWpSbldtNUtkbUpUUVc1TWFUbHVXbGhTVVZwWVNuUmhXRTU2WVZjNWRVb3hlSFZZUnpSMlMybHdZMkpwUVhGSlJrcHNaRWhXZVdKdVRXZFpVMEozWTIwNWRHRllUbXhKU0Vwc1l6STVjMlJ0Vm10SlNHUnZXbGMwWjJSSGFHeEpTRUpzWTIweGNHTXpUbkJpTWpSbllWaE5aMW96U21oaWJsSnNXa05DYVdWVFFqQmhSMVZuWkZoT2JHTnBRbWhpYlZGblpFZG9iRWxJVGpCamJWWm9ZbE5DY0dONVFubGFXRko1WVZkV01scFhVbU5pYVVGeFNVVkNkMWxZU21oaVUwSjNXbGhLZEdGWVRucGhWemwxVkcxR2RGcFRRV2RKUTBGblNVTkJaMGxEUVdkSlJUVm9ZbGRWWjJJeVdXZGtSMmhzU1VoQ2JHTnRNWEJqTTA1d1lqSTBkVWxGUW5wYVYxVm5ZVWhTTUdOSVRUWk1lVGt6VFRKTmRWb3liREJoU0ZacFRHMXNka3d6UW14amJURndZek5PY0dJeU5YcE1lVTVzWW01V2RGcEhWbTFNV0VKc1kyMHhjR016VG5CaU1qVjFXVmN4YkZoSE5HZExhVUpCWTBkR2VWbFhNR2RpVjFacllWZEdWR1JJU214WlZ6RkVZakkxZW1SSVNtaGhWelV3WTNsQlowbERRa1JpTWpWNlpFaEthR0ZYTlRCamVVSjJXVzF3YkZrelVYVkpSVUo2V2xkVloyRklVakJqU0UwMlRIazVhMXBZV214aVJ6bDNXbGhKZFdKWE9UWmhWM2h6V1ZNMWRtTnRZM1phVnpSMFZsWk5kbHBIT1dwamVUbFlXbGRKZGxGV1FrcE1NREZzV2tkc2FGVXpVbmxhVjBaMFVUSTVkV016VW5sWlYyeDFaRWhPWTJKcFFYRkpSVUo1V2xoU01XTnROWHBKU0hSUlkyMDVkR0ZZVG14bVZuaDFTVU52ZGxoSE5XeGxTRUoyWTI1UloxcEhWbTFaV0ZaelpFTkNhR016YkhWWmVVRnZZMGRXZVdKWGJIcGpNbXgyWW1zMWFHSlhWWE5KUnpGc1drZHNhRlV6VW5sYVYwWjBVVEk1ZFdNelVubFpWMngxWkVoTmNFbEVNQ3RKU0hSallteDRNR050VmpCa1dFcDFTVWMxYkdSNVFsRmpiVGwwWVZoT2JFdEhSbnBsVnpWcVNVTm9lVnBZVG5aaVNGcHNURU5DZVZwWGNHeFpNMUZ3U1VRd0swbElkR05pYkhnd1dFaFNjRnBwUVc5SlYyeDZWRzFHTW1GWFpHaGtSemw1VlVkV2VXSlhiSHBqTW14MlltNU9WR1JZUW5kaU0wb3dXbGRSYjB0VFFqaG1RMEZvWVZoT1QxbFlXbkJhTWtZd1lqTktUbHBYVW5CWlZWSnNaRzFzYWxwWVRsUmtXRUozWWpOS01GcFhVVzlMVTJ0blpURjRkVmhJVW1Oa1JuZ3dZMjFXY1ZwWFRqQkxSelZzWkhsQ1JWUXdNVVpsUjA1c1kwaFNjR0l5Tkc5S01EVm9aRzFzYmxsWVVuWmphVUpDVlVWck5rbElRbXhqYlRGd1l6Tk9jR0l5TlhwSlJ6bDVTVVUxYUdSdGJHNVpXRkoyWTJsQ1FsVkZhelpKUnpGc1drZHNhRkpIVmpKaFYwNXNZM2xDZFdJelVXZGpNMVozWTBjNWVXUkhWbXRLZVhkblNqQTFVRlpHT1ZSV1ZrSlJWREZLVlZKVlVtWlNWa3BUU25scmNGaEhOV05rUm5nd1psWjRkVmhITldOa1JuZ3daRWhLTlVsSWRHTmliSGd3V0VoU1kyUkhUblppYms0d1NVWnpjMGxJVGpCamJWWm9ZbFl3WjFCVFFtaGtNa1p3WkVOQ1VXTnRPWFJoV0U1c1RHMUdjMkpEYUdKWVJ6VmpaRVo0TUZoSVVtTmtSMFl6V1Zkc01FbEhaR3hrUmtKc1kyMHhjR016VG5CaU1qUnZZMGRXZVdKWGJIcGpNbXgyWW1zMWFHSlhWWEJNUm5oMVdFaFNZMlJHZURCWVNGSm9aREpHY0dSRFFuVlpXRnB3V2pKR01HSXpTWFZpVjFacllWZEdSVnBZV25CWk1sWjZURzFrYkdSR1ZucGFXRXBPV2xkU2NGbFRhSFJhVjFKd1dWWk9NR050Vm1oaVZVNTJZbTVPTUdOdFJuQmlibEo2UzFONFkySnNlREJZU0ZKalpFWXdjRmhITldOa1JuZ3dXRWhTZVZwWVRuWmlTRnBzUzBoT01HTnRWbWhpVTJ4allteDRNRmhJVWpsSlIwNW9aRWRPYjBsRGFHeGpia3AyWTJscloyVXhlSFZZU0ZKalpFWjRNR050Vm5GYVYwNHdTMGRXZVdOdE9YbExWbmgxV0VoU1kyUklNV05pYkhnd1psTnNZMkp1TVdOaWFVcGtURU5LZFZsWE1XeGplVWsyVjNsS2RWbFlXbkJhTWtZd1lqTkphVXhEU25kYVdFcDBZVmhPZW1GWE9YVmplVWx6U1cweGJGcEhiR2hTUjFZeVlWZE9iR041U1hOSmJrSnNZMjB4Y0dNelRuQmlNalZQV1ZjeGJFbHBkMmxWU0VwMllsZHNlbHBUU1hOSmJrcHNZekk1YzJSdFZXbE1RMHA1V2xkd2JGa3pVV2xNUTBwd1l6QTFhR1J0Ykc1WldGSjJZMnhDYkdOdE1YQmpNMDV3WWpJMWVsVXpWbmRqUnpsNVpFZFdhMGxwZDJsU1JUbE9VbGhvYWxwWVFqQmhWemwxU1dsM2FXTllWbXhqYm10cFRFTktkVmxYTVd4SmFYZHBZMGRXZVdKWGJIcGpNbXgyWW14T01GbFlVakZqZVVselNXMDVkVkV5YUdoaWJXUnNTV2wzYVZwWVdteGlibEZwVEVOS2VWcFhNWFprYlZaR1pHMVdkV1JGZUhCak0xSnNZbTFXZVVscGQybGpiVlo2WWpKNE1scFZPWGxWYlZaeFdsZE9NRkZ0Um5wYVYxSlFZbXhPTUZsWVVteEphWGRwWkVkR2VWb3lWakJKYVhkcFl6TlNhR1JIVldsTVEwcG9Xa2RTUm1SdFZuVmtSWGh3WXpOU2JHSnRWbmxKYVhkcFlsZFdhMkZYUmxSa1NFcHNXVmN4UkdJeU5YcGtTRXBvWVZjMU1HTjVTWE5KYld4NlZHMUdNbUZYWkdoa1J6bDVWRmRXYTJGWFJrVmFXRnB3V1RKV2VsVXpWbmRqUnpsNVpFZFdhMGxwZDJsYU1sWXdWVWRXZVdKWGJIcGpNbXgyWW1sSmMwbHRaR3hrUmxaNldsaEtUbHBYVW5CWlUwbHpTVzFHYzJKRFNYTkpiazR3WTIxV2FHSlRTbVJNUTBwMFdWaENkMkZYTlc1amVVazJTV3RHUWxOVlJYTmxWVXBDVVZoV1ExRlRlRlpSVlVaV1VYbDRjbEV3VGtKV2ExRnpWbFZHUWxaVlZYTmhXR2hFVVRCa2NWRjVlSEpTUlVaQ1dsTjRXRkZWUmxCUmVYY3dVakJHUkZwRGVFcFJWVVpLVVhsNGRsSkZSa0pWVTNoWVVWVkdVRkY1ZUVaUlZVWlVVWGw0Y2xJd1JrUk9NRXBFVEVWMFFsRXdjRVZNUlZaQ1VWVTRjMU5WUmtKVFZWVnpXVlZHUWxsVGQzbFJNRVpDVGtWTmMyUXdUa0pUV0VwRVZXbDRWbEZWUmxaUmVYaGFVVlZHV2xWVGVFNVJWVVpPVEVWT1FsRlZWa1JNUlhSQ1VWVXhVVXhHWkVKUlZHUkZWVk40VkZGVlRrSlJlWGhHVVZWR1dFeEdUa0pSVm1oQ1RFVldRbEZXYkVSTVJXUkNVVEp3UTFKcGVFWlJWVVp3VVd0amMySXdTa0pSVnpsRFRFWk9RbEZXVmtkTVJXUkNVWGs1UkZKNWVFWlJWVVV3VVd0WmMxSlZSa0pVVldOelZEQkdRbFF3VFhOVVZVWkNWREZ2YzFKVlJrSlZNRTF6VTFWR1JrMVZVa3hNUlZaQ1VWZHNRMVI1ZUhCUmEwWkNZVlZKYzFVd1JrSldWVFJ6VWpCR1JFNVZUa2hNUlZaQ1VWUlNRMU5wZUVaUlZVWndVV3N3YzFSVlJrSlVNVzl6VWxWR1FsVXdUWE5qVlZKQ1VsUmtSVkZUZHpKVWEwWk1VakZOYzFKVlJrSlBSVWx6VlRCR1FsRXdWWE5TVlVaQ1ZERnZjMUpWUmtKVk1FMXpWbFZHUkU1VlRsaE1SVGxDVVRCWmMxVXdSa1JUYkdkelVsVkdRbFI1ZUVwUlZVWktVbE40YUZGVlJtaE1SemxEVVZWR2VGRnBlSEpSTUVaSVRqQk9TVXhGVmtKUlZrWmFURWN4UlZFeldrTlRVM2hZVVZWR1VGcERlRVpSVlVadVVXMWtRMHhFVWtoUlZVMDFVV2w0U2xGVlJrcGFhWGgyVWtWR1FsVlRlRmhSVlVaUVVYbDRSbEZWUmxSUmVYaDJVakJHUkU0d1NrUk1SWFJDVVZoT1JGbFRlRXhSVlUxNFVUSlJjMUpWUmtKVWVYaEtVVlZHU2xKVGVHaFJWVVpvVEVSQ1JsRlZSWGxTVTNoMlVUQkdTazFWVmt0TVIyeERVVlZPYzFGdGJFTk1SVlpDVVZkT2MxRnBlSHBSTUVaRVdrVm5jMVpWUmtKV1ZWVnpXVlZHUWxsWE9VTk1SMFpDVVZkR1NVeEVXa1ZSVlZwWFUxTjNORkV3UmtKbFJVcEVURVU1UWxOV1VuVlJhWGhHVVZWR1VtSlZTWE5qVlZKQ1VsWktjMUZwU2psY2JpSXNJbWx0Y0c5eWRDQjdJR2x6VG1GMmFXZGhkRzl5VUdWeWJXbHpjMmx2Ym5OVGRYQndiM0owWldRc0lHbHpUbUYyYVdkaGRHOXlUV1ZrYVdGRVpYWnBZMlZ6VTNWd2NHOXlkR1ZrTENCblpYUlZjMlZ5VFdWa2FXRlRkSEpsWVcwZ2ZTQm1jbTl0SUNkQWRXNTBaVzF3Y3k5MWMyVnlMWEJsY20xcGMzTnBiMjV6TFhWMGFXeHpKMXh1WEc1amJHRnpjeUJXYjJOaGJDQjdYRzVjZEhOMFlYUnBZeUJrWldaaGRXeDBUM0IwYVc5dWN5QTlJSHRjYmx4MFhIUm5jbUZ0YldGeWN6b2diblZzYkN4Y2JseDBYSFJzWVc1bk9pQW5aVzR0VlZNbkxGeHVYSFJjZEdOdmJuUnBiblZ2ZFhNNklHWmhiSE5sTEZ4dVhIUmNkR2x1ZEdWeWFXMVNaWE4xYkhSek9pQm1ZV3h6WlN4Y2JseDBYSFJ0WVhoQmJIUmxjbTVoZEdsMlpYTTZJREVzWEc1Y2RGeDBjMlZ5ZG1salpWVlNTVG9nYm5Wc2JDeGNibHgwZlZ4dVhHNWNkSE4wWVhScFl5QmxkbVZ1ZEZSNWNHVnpJRDBnZTF4dVhIUmNkRUZWUkVsUFgwVk9SRG9nSjJGMVpHbHZaVzVrSnl4Y2JseDBYSFJCVlVSSlQxOVRWRUZTVkRvZ0oyRjFaR2x2YzNSaGNuUW5MRnh1WEhSY2RFVk9SRG9nSjJWdVpDY3NYRzVjZEZ4MFJWSlNUMUk2SUNkbGNuSnZjaWNzWEc1Y2RGeDBUazlmVFVGVVEwZzZJQ2R1YjIxaGRHTm9KeXhjYmx4MFhIUlNSVk5WVEZRNklDZHlaWE4xYkhRbkxGeHVYSFJjZEZOUFZVNUVYMFZPUkRvZ0ozTnZkVzVrWlc1a0p5eGNibHgwWEhSVFQxVk9SRjlUVkVGU1ZEb2dKM052ZFc1a2MzUmhjblFuTEZ4dVhIUmNkRk5RUlVWRFNGOUZUa1E2SUNkemNHVmxZMmhsYm1RbkxGeHVYSFJjZEZOUVJVVkRTRjlUVkVGU1ZEb2dKM053WldWamFITjBZWEowSnl4Y2JseDBYSFJUVkVGU1ZEb2dKM04wWVhKMEp5eGNibHgwZlZ4dVhHNWNkSE4wWVhScFl5Qm5aWFFnYVhOVGRYQndiM0owWldRb0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUNFaFZtOWpZV3d1WDNKbGMyOXNkbVZUY0dWbFkyaFNaV052WjI1cGRHbHZiaWdwSUNZbUlDRWhhWE5PWVhacFoyRjBiM0pRWlhKdGFYTnphVzl1YzFOMWNIQnZjblJsWkNncElDWW1JQ0VoYVhOT1lYWnBaMkYwYjNKTlpXUnBZVVJsZG1salpYTlRkWEJ3YjNKMFpXUW9LVnh1WEhSOVhHNWNibHgwYzNSaGRHbGpJSE5sZENCcGMxTjFjSEJ2Y25SbFpDaGZLU0I3WEc1Y2RGeDBkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFpiM1VnWTJGdWJtOTBJSE5sZENCcGMxTjFjSEJ2Y25SbFpDQmthWEpsWTNSc2VTNG5LVnh1WEhSOVhHNWNibHgwWDJsdWMzUmhibU5sSUQwZ2JuVnNiRnh1WEhSZmJHbHpkR1Z1WlhKeklEMGdiblZzYkZ4dVhHNWNkR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk1wSUh0Y2JseDBYSFJqYjI1emRDQlRjR1ZsWTJoU1pXTnZaMjVwZEdsdmJpQTlJRlp2WTJGc0xsOXlaWE52YkhabFUzQmxaV05vVW1WamIyZHVhWFJwYjI0b0tWeHVYSFJjZEdsbUlDZ2hVM0JsWldOb1VtVmpiMmR1YVhScGIyNHBJSHRjYmx4MFhIUmNkSFJvY205M0lHNWxkeUJFVDAxRmVHTmxjSFJwYjI0b0oxTndaV1ZqYUZKbFkyOW5ibWwwYVc5dUlHNXZkQ0J6ZFhCd2IzSjBaV1FuTENBblRrOVVYMU5WVUZCUFVsUkZSRjlGVWxJbktWeHVYSFJjZEgxY2JseHVYSFJjZEhSb2FYTXVYMmx1YzNSaGJtTmxJRDBnYm1WM0lGTndaV1ZqYUZKbFkyOW5ibWwwYVc5dUtDbGNibHgwWEhSMGFHbHpMbDlzYVhOMFpXNWxjbk1nUFNCN2ZWeHVYRzVjZEZ4MFQySnFaV04wTG1WdWRISnBaWE1vZTF4dVhIUmNkRngwTGk0dVZtOWpZV3d1WkdWbVlYVnNkRTl3ZEdsdmJuTXNYRzVjZEZ4MFhIUXVMaTRvYjNCMGFXOXVjeUI4ZkNCN2ZTa3NYRzVjZEZ4MGZTa3VabTl5UldGamFDZ29XMnRsZVN3Z2RtRnNkV1ZkS1NBOVBpQjdYRzVjZEZ4MFhIUnBaaUFvYTJWNUlEMDlQU0FuWjNKaGJXMWhjbk1uSUNZbUlDRjJZV3gxWlNrZ2UxeHVYSFJjZEZ4MFhIUmpiMjV6ZENCVGNHVmxZMmhIY21GdGJXRnlUR2x6ZENBOUlGWnZZMkZzTGw5eVpYTnZiSFpsVTNCbFpXTm9SM0poYlcxaGNreHBjM1FvS1Z4dVhIUmNkRngwWEhScFppQW9JU0ZUY0dWbFkyaEhjbUZ0YldGeVRHbHpkQ2tnZTF4dVhIUmNkRngwWEhSY2RIWmhiSFZsSUQwZ2JtVjNJRk53WldWamFFZHlZVzF0WVhKTWFYTjBLQ2xjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkRngwZEdocGN5NWZhVzV6ZEdGdVkyVmJhMlY1WFNBOUlIWmhiSFZsWEc1Y2RGeDBmU2xjYmx4MGZWeHVYRzVjZEdkbGRDQnBibk4wWVc1alpTZ3BJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTVmYVc1emRHRnVZMlZjYmx4MGZWeHVYRzVjZEhObGRDQnBibk4wWVc1alpTaGZLU0I3WEc1Y2RGeDBkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFpiM1VnWTJGdWJtOTBJSE5sZENCcGJuTjBZVzVqWlNCa2FYSmxZM1JzZVM0bktWeHVYSFI5WEc1Y2JseDBZWE41Ym1NZ2MzUmhjblFvS1NCN1hHNWNkRngwYVdZZ0tDRWhkR2hwY3k1ZmFXNXpkR0Z1WTJVcElIdGNibHgwWEhSY2RIUnllU0I3WEc1Y2RGeDBYSFJjZEdOdmJuTjBJSE4wY21WaGJTQTlJR0YzWVdsMElHZGxkRlZ6WlhKTlpXUnBZVk4wY21WaGJTZ25iV2xqY205d2FHOXVaU2NzSUhzZ1lYVmthVzg2SUhSeWRXVWdmU2xjYmx4MFhIUmNkRngwYVdZZ0tDRnpkSEpsWVcwcElIdGNibHgwWEhSY2RGeDBYSFIwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVZ1WVdKc1pTQjBieUJ5WlhSeWFXVjJaU0IwYUdVZ2MzUnlaV0Z0SUdaeWIyMGdiV1ZrYVdFZ1pHVjJhV05sSnlsY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjBhR2x6TGw5cGJuTjBZVzVqWlM1emRHRnlkQ2dwWEc1Y2RGeDBYSFI5SUdOaGRHTm9JQ2hsY25KdmNpa2dlMXh1WEhSY2RGeDBYSFJqYjI1emRDQmxjbkp2Y2toaGJtUnNaWElnUFNCMGFHbHpMbDlzYVhOMFpXNWxjbk11WlhKeWIzSmNibHgwWEhSY2RGeDBhV1lnS0NFaFpYSnliM0pJWVc1a2JHVnlLU0I3WEc1Y2RGeDBYSFJjZEZ4MFpYSnliM0pJWVc1a2JHVnlLR1Z5Y205eUtWeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTmNibHgwZlZ4dVhHNWNkSE4wYjNBb0tTQjdYRzVjZEZ4MGFXWWdLQ0VoZEdocGN5NWZhVzV6ZEdGdVkyVXBJSHRjYmx4MFhIUmNkSFJvYVhNdVgybHVjM1JoYm1ObExuTjBiM0FvS1Z4dVhIUmNkSDFjYmx4dVhIUmNkSEpsZEhWeWJpQjBhR2x6WEc1Y2RIMWNibHh1WEhSaFltOXlkQ2dwSUh0Y2JseDBYSFJwWmlBb0lTRjBhR2x6TGw5cGJuTjBZVzVqWlNrZ2UxeHVYSFJjZEZ4MGRHaHBjeTVmYVc1emRHRnVZMlV1WVdKdmNuUW9LVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGFHbHpYRzVjZEgxY2JseHVYSFJoWkdSRmRtVnVkRXhwYzNSbGJtVnlLR1YyWlc1MFZIbHdaU3dnWTJGc2JHSmhZMnNwSUh0Y2JseDBYSFJwWmlBb0lTRjBhR2x6TGw5cGJuTjBZVzVqWlNBbUppQjBhR2x6TGw5cGJtTnNkV1JsYzBWMlpXNTBWSGx3WlNobGRtVnVkRlI1Y0dVcEtTQjdYRzVjZEZ4MFhIUnBaaUFvSVNGMGFHbHpMbDlzYVhOMFpXNWxjbk5iWlhabGJuUlVlWEJsWFNrZ2UxeHVYSFJjZEZ4MFhIUjBhR2x6TG5KbGJXOTJaVVYyWlc1MFRHbHpkR1Z1WlhJb1pYWmxiblJVZVhCbEtWeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmpiMjV6ZENCb1lXNWtiR1Z5SUQwZ0tHVjJaVzUwS1NBOVBpQjdYRzVjZEZ4MFhIUmNkR3hsZENCaFpHUnBkR2x2Ym1Gc1FYSm5jeUE5SUZ0ZFhHNWNkRngwWEhSY2RHbG1JQ2hsZG1WdWRGUjVjR1VnUFQwOUlGWnZZMkZzTG1WMlpXNTBWSGx3WlhNdVVrVlRWVXhVS1NCN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NFaFpYWmxiblF1Y21WemRXeDBjeUFtSmlCbGRtVnVkQzV5WlhOMWJIUnpMbXhsYm1kMGFDQStJREFwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkR0ZrWkdsMGFXOXVZV3hCY21kekxuQjFjMmdvWlhabGJuUXVjbVZ6ZFd4MGMxc3dYVnN3WFM1MGNtRnVjMk55YVhCMEtWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RDRWhZMkZzYkdKaFkyc2dKaVlnWTJGc2JHSmhZMnN1WVhCd2JIa29kR2hwY3l3Z1cyVjJaVzUwTENBdUxpNWhaR1JwZEdsdmJtRnNRWEpuYzEwcFhHNWNkRngwWEhSOVhHNWNkRngwWEhSMGFHbHpMbDlwYm5OMFlXNWpaUzVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLR1YyWlc1MFZIbHdaU3dnYUdGdVpHeGxjaWxjYmx4dVhIUmNkRngwZEdocGN5NWZiR2x6ZEdWdVpYSnpXMlYyWlc1MFZIbHdaVjBnUFNCb1lXNWtiR1Z5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE5jYmx4MGZWeHVYRzVjZEhKbGJXOTJaVVYyWlc1MFRHbHpkR1Z1WlhJb1pYWmxiblJVZVhCbEtTQjdYRzVjZEZ4MFkyOXVjM1FnYUdGdVpHeGxjaUE5SUhSb2FYTXVYMnhwYzNSbGJtVnljMXRsZG1WdWRGUjVjR1ZkWEc1Y2RGeDBkR2hwY3k1ZmFXNXpkR0Z1WTJVdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpaGxkbVZ1ZEZSNWNHVXNJR2hoYm1Sc1pYSXBYRzVjYmx4MFhIUmtaV3hsZEdVZ2RHaHBjeTVmYkdsemRHVnVaWEp6VzJWMlpXNTBWSGx3WlYxY2JseHVYSFJjZEhKbGRIVnliaUIwYUdselhHNWNkSDFjYmx4dVhIUmpiR1ZoYm5Wd0tDa2dlMXh1WEhSY2RIUm9hWE11YzNSdmNDZ3BYRzVjYmx4MFhIUlBZbXBsWTNRdWEyVjVjeWgwYUdsekxsOXNhWE4wWlc1bGNuTXBMbVp2Y2tWaFkyZ29LR3RsZVNrZ1BUNGdkR2hwY3k1eVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUtHdGxlU2twWEc1Y2RGeDBkR2hwY3k1ZmFXNXpkR0Z1WTJVZ1BTQnVkV3hzWEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwYzF4dVhIUjlYRzVjYmx4MFgybHVZMngxWkdWelJYWmxiblJVZVhCbEtHVjJaVzUwVkhsd1pTa2dlMXh1WEhSY2RISmxkSFZ5YmlBaElVOWlhbVZqZEM1MllXeDFaWE1vVm05allXd3VaWFpsYm5SVWVYQmxjeWt1Wm1sdVpDZ29kSGx3WlNrZ1BUNGdkSGx3WlNBOVBUMGdaWFpsYm5SVWVYQmxLVnh1WEhSOVhHNWNibHgwYzNSaGRHbGpJRjl5WlhOdmJIWmxVM0JsWldOb1VtVmpiMmR1YVhScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlDaGNibHgwWEhSY2RIZHBibVJ2ZHk1VGNHVmxZMmhTWldOdloyNXBkR2x2YmlCOGZGeHVYSFJjZEZ4MGQybHVaRzkzTG5kbFltdHBkRk53WldWamFGSmxZMjluYm1sMGFXOXVJSHg4WEc1Y2RGeDBYSFIzYVc1a2IzY3ViVzk2VTNCbFpXTm9VbVZqYjJkdWFYUnBiMjRnZkh4Y2JseDBYSFJjZEhkcGJtUnZkeTV0YzFOd1pXVmphRkpsWTI5bmJtbDBhVzl1WEc1Y2RGeDBLVnh1WEhSOVhHNWNibHgwYzNSaGRHbGpJRjl5WlhOdmJIWmxVM0JsWldOb1IzSmhiVzFoY2t4cGMzUW9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlDaGNibHgwWEhSY2RIZHBibVJ2ZHk1VGNHVmxZMmhIY21GdGJXRnlUR2x6ZENCOGZGeHVYSFJjZEZ4MGQybHVaRzkzTG5kbFltdHBkRk53WldWamFFZHlZVzF0WVhKTWFYTjBJSHg4WEc1Y2RGeDBYSFIzYVc1a2IzY3ViVzk2VTNCbFpXTm9SM0poYlcxaGNreHBjM1FnZkh4Y2JseDBYSFJjZEhkcGJtUnZkeTV0YzFOd1pXVmphRWR5WVcxdFlYSk1hWE4wWEc1Y2RGeDBLVnh1WEhSOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRlp2WTJGc1hHNGlYU3dpYm1GdFpYTWlPbHNpY25WdWRHbHRaU0lzSW1WNGNHOXlkSE1pTENKUGNDSXNJazlpYW1WamRDSXNJbkJ5YjNSdmRIbHdaU0lzSW1oaGMwOTNiaUlzSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdpSkZONWJXSnZiQ0lzSWxONWJXSnZiQ0lzSW1sMFpYSmhkRzl5VTNsdFltOXNJaXdpYVhSbGNtRjBiM0lpTENKaGMzbHVZMGwwWlhKaGRHOXlVM2x0WW05c0lpd2lZWE41Ym1OSmRHVnlZWFJ2Y2lJc0luUnZVM1J5YVc1blZHRm5VM2x0WW05c0lpd2lkRzlUZEhKcGJtZFVZV2NpTENKa1pXWnBibVVpTENKdlltb2lMQ0pyWlhraUxDSjJZV3gxWlNJc0ltUmxabWx1WlZCeWIzQmxjblI1SWl3aVpXNTFiV1Z5WVdKc1pTSXNJbU52Ym1acFozVnlZV0pzWlNJc0luZHlhWFJoWW14bElpd2laWEp5SWl3aWQzSmhjQ0lzSW1sdWJtVnlSbTRpTENKdmRYUmxja1p1SWl3aWMyVnNaaUlzSW5SeWVVeHZZM05NYVhOMElpd2ljSEp2ZEc5SFpXNWxjbUYwYjNJaUxDSkhaVzVsY21GMGIzSWlMQ0puWlc1bGNtRjBiM0lpTENKamNtVmhkR1VpTENKamIyNTBaWGgwSWl3aVEyOXVkR1Y0ZENJc0lsOXBiblp2YTJVaUxDSnpkR0YwWlNJc0ltMWxkR2h2WkNJc0ltRnlaeUlzSWtWeWNtOXlJaXdpWkc5dVpWSmxjM1ZzZENJc0ltUmxiR1ZuWVhSbElpd2laR1ZzWldkaGRHVlNaWE4xYkhRaUxDSnRZWGxpWlVsdWRtOXJaVVJsYkdWbllYUmxJaXdpUTI5dWRHbHVkV1ZUWlc1MGFXNWxiQ0lzSW5ObGJuUWlMQ0pmYzJWdWRDSXNJbVJwYzNCaGRHTm9SWGhqWlhCMGFXOXVJaXdpWVdKeWRYQjBJaXdpY21WamIzSmtJaXdpZEhKNVEyRjBZMmdpTENKMGVYQmxJaXdpWkc5dVpTSXNJbTFoYTJWSmJuWnZhMlZOWlhSb2IyUWlMQ0ptYmlJc0ltTmhiR3dpTENKSFpXNWxjbUYwYjNKR2RXNWpkR2x2YmlJc0lrZGxibVZ5WVhSdmNrWjFibU4wYVc5dVVISnZkRzkwZVhCbElpd2lTWFJsY21GMGIzSlFjbTkwYjNSNWNHVWlMQ0owYUdseklpd2laMlYwVUhKdmRHOGlMQ0puWlhSUWNtOTBiM1I1Y0dWUFppSXNJazVoZEdsMlpVbDBaWEpoZEc5eVVISnZkRzkwZVhCbElpd2lkbUZzZFdWeklpd2lSM0FpTENKa1pXWnBibVZKZEdWeVlYUnZjazFsZEdodlpITWlMQ0ptYjNKRllXTm9JaXdpUVhONWJtTkpkR1Z5WVhSdmNpSXNJbEJ5YjIxcGMyVkpiWEJzSWl3aWNISmxkbWx2ZFhOUWNtOXRhWE5sSWl3aVkyRnNiRWx1ZG05clpWZHBkR2hOWlhSb2IyUkJibVJCY21jaUxDSnlaWE52YkhabElpd2ljbVZxWldOMElpd2lhVzUyYjJ0bElpd2ljbVZ6ZFd4MElpd2lYMTloZDJGcGRDSXNJblJvWlc0aUxDSjFibmR5WVhCd1pXUWlMQ0psY25KdmNpSXNJblZ1WkdWbWFXNWxaQ0lzSWxSNWNHVkZjbkp2Y2lJc0ltbHVabThpTENKeVpYTjFiSFJPWVcxbElpd2libVY0ZENJc0ltNWxlSFJNYjJNaUxDSndkWE5vVkhKNVJXNTBjbmtpTENKc2IyTnpJaXdpWlc1MGNua2lMQ0owY25sTWIyTWlMQ0pqWVhSamFFeHZZeUlzSW1acGJtRnNiSGxNYjJNaUxDSmhablJsY2t4dll5SXNJblJ5ZVVWdWRISnBaWE1pTENKd2RYTm9JaXdpY21WelpYUlVjbmxGYm5SeWVTSXNJbU52YlhCc1pYUnBiMjRpTENKeVpYTmxkQ0lzSW1sMFpYSmhZbXhsSWl3aWFYUmxjbUYwYjNKTlpYUm9iMlFpTENKcGMwNWhUaUlzSW14bGJtZDBhQ0lzSW1raUxDSmpiMjV6ZEhKMVkzUnZjaUlzSW1ScGMzQnNZWGxPWVcxbElpd2lhWE5IWlc1bGNtRjBiM0pHZFc1amRHbHZiaUlzSW1kbGJrWjFiaUlzSW1OMGIzSWlMQ0p1WVcxbElpd2liV0Z5YXlJc0luTmxkRkJ5YjNSdmRIbHdaVTltSWl3aVgxOXdjbTkwYjE5Zklpd2lZWGR5WVhBaUxDSmhjM2x1WXlJc0lsQnliMjFwYzJVaUxDSnBkR1Z5SWl3aWRHOVRkSEpwYm1jaUxDSnJaWGx6SWl3aWIySnFaV04wSWl3aWNtVjJaWEp6WlNJc0luQnZjQ0lzSW5OcmFYQlVaVzF3VW1WelpYUWlMQ0p3Y21WMklpd2lZMmhoY2tGMElpd2ljMnhwWTJVaUxDSnpkRzl3SWl3aWNtOXZkRkpsWTI5eVpDSXNJbkoyWVd3aUxDSmxlR05sY0hScGIyNGlMQ0pvWVc1a2JHVWlMQ0pzYjJNaUxDSmpZWFZuYUhRaUxDSm9ZWE5EWVhSamFDSXNJbWhoYzBacGJtRnNiSGtpTENKbWFXNWhiR3g1Ulc1MGNua2lMQ0pqYjIxd2JHVjBaU0lzSW1acGJtbHphQ0lzSW1OaGRHTm9JaXdpZEdoeWIzZHVJaXdpWkdWc1pXZGhkR1ZaYVdWc1pDSXNJbTF2WkhWc1pTSXNJbkpsWjJWdVpYSmhkRzl5VW5WdWRHbHRaU0lzSW1GalkybGtaVzUwWVd4VGRISnBZM1JOYjJSbElpd2lSblZ1WTNScGIyNGlMQ0poYzNsdVkwZGxibVZ5WVhSdmNsTjBaWEFpTENKblpXNGlMQ0pmYm1WNGRDSXNJbDkwYUhKdmR5SXNJbUZ5WjNNaUxDSmhjbWQxYldWdWRITWlMQ0poY0hCc2VTSXNJbUZ5Y2lJc0lrRnljbUY1SWl3aWFYTkJjbkpoZVNJc0lsOWhjbklpTENKZmJpSXNJbDlrSWl3aVgyVWlMQ0pmY3lJc0lsOXBJaXdpYkdWdUlpd2lZWEp5TWlJc0ltOGlMQ0p0YVc1TVpXNGlMQ0poY25KaGVVeHBhMlZVYjBGeWNtRjVJaXdpYmlJc0ltWnliMjBpTENKMFpYTjBJaXdpWVhKeVlYbFhhWFJvU0c5c1pYTWlMQ0pwZEdWeVlXSnNaVlJ2UVhKeVlYbE1hVzFwZENJc0luVnVjM1Z3Y0c5eWRHVmtTWFJsY21GaWJHVlViMEZ5Y21GNUlpd2libTl1U1hSbGNtRmliR1ZTWlhOMElpd2lhVzV6ZEdGdVkyVWlMQ0pEYjI1emRISjFZM1J2Y2lJc0lsOWtaV1pwYm1WUWNtOXdaWEowYVdWeklpd2lkR0Z5WjJWMElpd2ljSEp2Y0hNaUxDSmtaWE5qY21sd2RHOXlJaXdpY0hKdmRHOVFjbTl3Y3lJc0luTjBZWFJwWTFCeWIzQnpJaXdpWlNJc0ltNWhkbWxuWVhSdmNpSXNJbkJsY20xcGMzTnBiMjV6SWl3aWNpSXNJbTFsWkdsaFJHVjJhV05sY3lJc0luUWlMQ0poSWl3aWRTSXNJbU1pTENKeVpYUjFjbTRpTENKRVQwMUZlR05sY0hScGIyNGlMQ0p4ZFdWeWVTSXNJbkpsYlc5MlpVVjJaVzUwVEdsemRHVnVaWElpTENKaFpHUkZkbVZ1ZEV4cGMzUmxibVZ5SWl3aWREQWlMQ0p6SWl3aVppSXNJbkFpTENKME1TSXNJbWRsZEZWelpYSk5aV1JwWVNJc0luUXlJaXdpZERNaUxDSmhiR3dpTENKME5DSXNJbFp2WTJGc0lpd2liM0IwYVc5dWN5SXNJbE53WldWamFGSmxZMjluYm1sMGFXOXVJaXdpWDNKbGMyOXNkbVZUY0dWbFkyaFNaV052WjI1cGRHbHZiaUlzSWw5cGJuTjBZVzVqWlNJc0lsOXNhWE4wWlc1bGNuTWlMQ0psYm5SeWFXVnpJaXdpWkdWbVlYVnNkRTl3ZEdsdmJuTWlMQ0pUY0dWbFkyaEhjbUZ0YldGeVRHbHpkQ0lzSWw5eVpYTnZiSFpsVTNCbFpXTm9SM0poYlcxaGNreHBjM1FpTENKZmRHaHBjeUlzSW1selRtRjJhV2RoZEc5eVVHVnliV2x6YzJsdmJuTlRkWEJ3YjNKMFpXUWlMQ0pwYzA1aGRtbG5ZWFJ2Y2sxbFpHbGhSR1YyYVdObGMxTjFjSEJ2Y25SbFpDSXNJbDhpTENKblpYUlZjMlZ5VFdWa2FXRlRkSEpsWVcwaUxDSmhkV1JwYnlJc0luTjBZWEowSWl3aVpYSnliM0pJWVc1a2JHVnlJaXdpWVdKdmNuUWlMQ0psZG1WdWRGUjVjR1VpTENKallXeHNZbUZqYXlJc0lsOXBibU5zZFdSbGMwVjJaVzUwVkhsd1pTSXNJbWhoYm1Sc1pYSWlMQ0psZG1WdWRDSXNJbUZrWkdsMGFXOXVZV3hCY21keklpd2laWFpsYm5SVWVYQmxjeUlzSWxKRlUxVk1WQ0lzSW5KbGMzVnNkSE1pTENKMGNtRnVjMk55YVhCMElpd2lYM1JvYVhNeUlpd2lYM1JvYVhNeklpd2labWx1WkNJc0luZHBibVJ2ZHlJc0luZGxZbXRwZEZOd1pXVmphRkpsWTI5bmJtbDBhVzl1SWl3aWJXOTZVM0JsWldOb1VtVmpiMmR1YVhScGIyNGlMQ0p0YzFOd1pXVmphRkpsWTI5bmJtbDBhVzl1SWl3aWQyVmlhMmwwVTNCbFpXTm9SM0poYlcxaGNreHBjM1FpTENKdGIzcFRjR1ZsWTJoSGNtRnRiV0Z5VEdsemRDSXNJbTF6VTNCbFpXTm9SM0poYlcxaGNreHBjM1FpTENKbmNtRnRiV0Z5Y3lJc0lteGhibWNpTENKamIyNTBhVzUxYjNWeklpd2lhVzUwWlhKcGJWSmxjM1ZzZEhNaUxDSnRZWGhCYkhSbGNtNWhkR2wyWlhNaUxDSnpaWEoyYVdObFZWSkpJaXdpUVZWRVNVOWZSVTVFSWl3aVFWVkVTVTlmVTFSQlVsUWlMQ0pGVGtRaUxDSkZVbEpQVWlJc0lrNVBYMDFCVkVOSUlpd2lVMDlWVGtSZlJVNUVJaXdpVTA5VlRrUmZVMVJCVWxRaUxDSlRVRVZGUTBoZlJVNUVJaXdpVTFCRlJVTklYMU5VUVZKVUlpd2lVMVJCVWxRaVhTd2liV0Z3Y0dsdVozTWlPaUk0VDBGUFFTeEpRVUZKUVN4RlFVRlhMRk5CUVZWRExFZEJSM1pDTEVsQlFVbERMRVZCUVV0RExFOUJRVTlETEZWQlExcERMRVZCUVZOSUxFVkJRVWRKTEdWQlJWcERMRVZCUVRSQ0xHMUNRVUZZUXl4UFFVRjNRa0VzVDBGQlV5eEhRVU5zUkVNc1JVRkJhVUpHTEVWQlFWRkhMRlZCUVZrc1lVRkRja05ETEVWQlFYTkNTaXhGUVVGUlN5eGxRVUZwUWl4clFrRkRMME5ETEVWQlFXOUNUaXhGUVVGUlR5eGhRVUZsTEdkQ1FVVXZReXhUUVVGVFF5eEZRVUZQUXl4RlFVRkxReXhGUVVGTFF5eEhRVTk0UWl4UFFVNUJaaXhQUVVGUFowSXNaVUZCWlVnc1JVRkJTME1zUlVGQlN5eERRVU01UWtNc1RVRkJUMEVzUlVGRFVFVXNXVUZCV1N4RlFVTmFReXhqUVVGakxFVkJRMlJETEZWQlFWVXNTVUZGVEU0c1JVRkJTVU1zUjBGRllpeEpRVVZGUml4RlFVRlBMRWRCUVVrc1NVRkRXQ3hOUVVGUFVTeEhRVU5RVWl4RlFVRlRMRk5CUVZORExFVkJRVXRETEVWQlFVdERMRWRCUXpGQ0xFOUJRVTlHTEVWQlFVbERMRWRCUVU5RExFZEJTWFJDTEZOQlFWTk5MRVZCUVV0RExFVkJRVk5ETEVWQlFWTkRMRVZCUVUxRExFZEJSWEJETEVsQlFVbERMRVZCUVdsQ1NDeEhRVUZYUVN4RlFVRlJkRUlzY1VKQlFYRkNNRUlzUlVGQldVb3NSVUZCVlVrc1JVRkRMMFZETEVWQlFWazFRaXhQUVVGUE5rSXNUMEZCVDBnc1JVRkJaWHBDTEZkQlEzcEROa0lzUlVGQlZTeEpRVUZKUXl4RlFVRlJUaXhIUVVGbExFbEJUWHBETEU5QlJrRkhMRVZCUVZWSkxGRkJjMDFhTEZOQlFUQkNWaXhGUVVGVFJTeEZRVUZOVFN4SFFVTjJReXhKUVVGSlJ5eEZRUzlMZFVJc2FVSkJhVXd6UWl4UFFVRlBMRk5CUVdkQ1F5eEZRVUZSUXl4SFFVTTNRaXhIUVdoTWIwSXNZMEZuVEdoQ1JpeEZRVU5HTEUxQlFVMHNTVUZCU1Vjc1RVRkJUU3huUTBGSGJFSXNSMEZ1VEc5Q0xHTkJiVXhvUWtnc1JVRkJOa0lzUTBGREwwSXNSMEZCWlN4VlFVRllReXhGUVVOR0xFMUJRVTFETEVWQlMxSXNUMEZCVDBVc1NVRk5WQ3hKUVVoQlVDeEZRVUZSU1N4UFFVRlRRU3hGUVVOcVFrb3NSVUZCVVVzc1NVRkJUVUVzU1VGRlJDeERRVU5ZTEVsQlFVbEhMRVZCUVZkU0xFVkJRVkZSTEZOQlEzWkNMRWRCUVVsQkxFVkJRVlVzUTBGRFdpeEpRVUZKUXl4RlFVRnBRa01zUlVGQmIwSkdMRVZCUVZWU0xFZEJRMjVFTEVkQlFVbFRMRVZCUVdkQ0xFTkJRMnhDTEVkQlFVbEJMRWxCUVcxQ1JTeEZRVUZyUWl4VFFVTjZReXhQUVVGUFJpeEhRVWxZTEVkQlFYVkNMRk5CUVc1Q1ZDeEZRVUZSU1N4UFFVZFdTaXhGUVVGUldTeExRVUZQV2l4RlFVRlJZU3hOUVVGUllpeEZRVUZSU3l4VFFVVnNReXhIUVVGMVFpeFZRVUZ1UWt3c1JVRkJVVWtzVDBGQmIwSXNRMEZEY2tNc1IwRnVUbkZDTEcxQ1FXMU9ha0pFTEVWQlJVWXNUVUZFUVVFc1JVRnFUbU1zV1VGclRsSklMRVZCUVZGTExFbEJSMmhDVEN4RlFVRlJZeXhyUWtGQmEwSmtMRVZCUVZGTExGTkJSVTRzVjBGQmJrSk1MRVZCUVZGSkxGRkJRMnBDU2l4RlFVRlJaU3hQUVVGUExGTkJRVlZtTEVWQlFWRkxMRXRCUjI1RFJpeEZRVFZPYTBJc1dVRTRUbXhDTEVsQlFVbGhMRVZCUVZORExFVkJRVk42UWl4RlFVRlRSU3hGUVVGTlRTeEhRVU55UXl4SFFVRnZRaXhYUVVGb1FtZENMRVZCUVU5RkxFdEJRVzFDTEVOQlR6VkNMRWRCU2tGbUxFVkJRVkZJTEVWQlFWRnRRaXhMUVdwUFFTeFpRVVpMTEdsQ1FYVlBha0pJTEVWQlFVOVlMRTFCUVZGTkxFVkJRMnBDTEZOQlIwWXNUVUZCVHl4RFFVTk1NVUlzVFVGQlR5dENMRVZCUVU5WUxFbEJRMlJqTEV0QlFVMXVRaXhGUVVGUmJVSXNUVUZIVXl4VlFVRm9Ra2dzUlVGQlQwVXNUMEZEYUVKbUxFVkJMMDluUWl4WlFXdFFhRUpJTEVWQlFWRkpMRTlCUVZNc1VVRkRha0pLTEVWQlFWRkxMRWxCUVUxWExFVkJRVTlZTEU5Qk9WRlFaU3hEUVVGcFFqVkNMRVZCUVZORkxFVkJRVTFOTEVkQlJUZERSaXhGUVdOVUxGTkJRVk50UWl4RlFVRlRTU3hGUVVGSmRFTXNSVUZCUzNOQ0xFZEJRM3BDTEVsQlEwVXNUVUZCVHl4RFFVRkZZU3hMUVVGTkxGTkJRVlZpTEVsQlFVdG5RaXhGUVVGSFF5eExRVUZMZGtNc1JVRkJTM05DTEVsQlF6TkRMRTFCUVU5bUxFZEJRMUFzVFVGQlR5eERRVUZGTkVJc1MwRkJUU3hSUVVGVFlpeEpRVUZMWml4SlFXaENha04wUWl4RlFVRlJkVUlzUzBGQlQwRXNSVUZ2UW1Zc1NVRlBTVzlDTEVWQlFXMUNMRWRCVFhaQ0xGTkJRVk5rTEV0QlExUXNVMEZCVXpCQ0xFdEJRMVFzVTBGQlUwTXNTMEZKVkN4SlFVRkpReXhGUVVGdlFpeEhRVU40UWtFc1JVRkJhMEpxUkN4SFFVRnJRaXhYUVVOc1F5eFBRVUZQYTBRc1RVRkhWQ3hKUVVGSlF5eEZRVUZYZWtRc1QwRkJUekJFTEdWQlEyeENReXhGUVVFd1FrWXNSMEZCV1VFc1JVRkJVMEVzUlVGQlUwY3NSVUZCVHl4TlFVTXZSRVFzUjBGRFFVRXNTVUZCTkVJMVJDeEhRVU0xUWtjc1JVRkJUMnRFTEV0QlFVdFBMRVZCUVhsQ2NrUXNTMEZIZGtOcFJDeEZRVUZ2UWtrc1IwRkhkRUlzU1VGQlNVVXNSVUZCUzFBc1JVRkJNa0p5UkN4VlFVTnNRekJDTEVWQlFWVXhRaXhWUVVGWlJDeFBRVUZQTmtJc1QwRkJUekJDTEVkQlYzUkRMRk5CUVZOUExFVkJRWE5DTjBRc1IwRkROMElzUTBGQlF5eFBRVUZSTEZGQlFWTXNWVUZCVlRoRUxGTkJRVkVzVTBGQlV6ZENMRWRCUXpORGRFSXNSVUZCVDFnc1JVRkJWMmxETEVkQlFWRXNVMEZCVTBNc1IwRkRha01zVDBGQlQzRkNMRXRCUVV0NFFpeFJRVUZSUlN4RlFVRlJReXhUUVd0RGJFTXNVMEZCVXpaQ0xFVkJRV053UXl4RlFVRlhjVU1zUjBGblEyaERMRWxCUVVsRExFVkJaME5LVml4TFFVRkxlRUlzVVVFNVFrd3NVMEZCYVVKRkxFVkJRVkZETEVkQlEzWkNMRk5CUVZOblF5eEpRVU5RTEU5QlFVOHNTVUZCU1VZc1IwRkJXU3hUUVVGVFJ5eEZRVUZUUXl4SlFXNUROME1zVTBGQlUwTXNSVUZCVDNCRExFVkJRVkZETEVWQlFVdHBReXhGUVVGVFF5eEhRVU53UXl4SlFVRkpka0lzUlVGQlUwTXNSVUZCVTI1Q0xFVkJRVlZOTEVkQlFWTk9MRVZCUVZkUExFZEJRM0JFTEVkQlFXOUNMRlZCUVdoQ1Z5eEZRVUZQUlN4TFFVVktMRU5CUTB3c1NVRkJTWFZDTEVWQlFWTjZRaXhGUVVGUFdDeEpRVU5vUW5CQ0xFVkJRVkYzUkN4RlFVRlBlRVFzVFVGRGJrSXNUMEZCU1VFc1IwRkRhVUlzYVVKQlFWWkJMRWRCUTFCaUxFVkJRVTlyUkN4TFFVRkxja01zUlVGQlR5eFhRVU5rYTBRc1JVRkJXVWNzVVVGQlVYSkVMRVZCUVUxNVJDeFRRVUZUUXl4TlFVRkxMRk5CUVZNeFJDeEhRVU4wUkhWRUxFVkJRVThzVDBGQlVYWkVMRVZCUVU5eFJDeEZRVUZUUXl4TlFVTTVRaXhUUVVGVGFrUXNSMEZEVm10RUxFVkJRVThzVVVGQlUyeEVMRVZCUVV0blJDeEZRVUZUUXl4TlFVa3pRa29zUlVGQldVY3NVVUZCVVhKRUxFZEJRVTh3UkN4TlFVRkxMRk5CUVZORExFZEJTVGxEU0N4RlFVRlBlRVFzVFVGQlVUSkVMRVZCUTJaT0xFVkJRVkZITEUxQlExQXNVMEZCVTBrc1IwRkhWaXhQUVVGUFRDeEZRVUZQTEZGQlFWTkxMRVZCUVU5UUxFVkJRVk5ETEUxQmRrSjZRMEVzUlVGQlQzWkNMRVZCUVU5WUxFdEJhVU5hYlVNc1EwRkJUM0JETEVWQlFWRkRMRVZCUVV0cFF5eEZRVUZUUXl4TlFVbHFReXhQUVVGUFNDeEZRV0ZNUVN4RlFVRnJRa0VzUlVGQlowSlBMRXRCUTJoRFRpeEZRVWRCUVN4SFFVTkZRU3hMUVd0SVZpeFRRVUZUTTBJc1JVRkJiMEpHTEVWQlFWVlNMRWRCUTNKRExFbEJRVWxKTEVWQlFWTkpMRVZCUVZNdlFpeFRRVUZUZFVJc1JVRkJVVWtzVVVGRGRrTXNVVUV4VkVVd1F5eEpRVEJVUlRGRExFVkJRWE5DTEVOQlMzaENMRWRCUmtGS0xFVkJRVkZSTEZOQlFWY3NTMEZGU1N4VlFVRnVRbElzUlVGQlVVa3NUMEZCYjBJc1EwRkZPVUlzUjBGQlNVa3NSVUZCVXk5Q0xGTkJRV2xDTEZOQlJ6VkNkVUlzUlVGQlVVa3NUMEZCVXl4VFFVTnFRa29zUlVGQlVVc3NVMEZ5VlZwNVF5eEZRWE5WU1hCRExFVkJRVzlDUml4RlFVRlZVaXhIUVVWUUxGVkJRVzVDUVN4RlFVRlJTU3hSUVVkV0xFOUJRVTlQTEVWQlNWaFlMRVZCUVZGSkxFOUJRVk1zVVVGRGFrSktMRVZCUVZGTExFbEJRVTBzU1VGQlNUQkRMRlZCUTJoQ0xHdEVRVWRLTEU5QlFVOXdReXhGUVVkVUxFbEJRVWxMTEVWQlFWTkRMRVZCUVZOaUxFVkJRVkZKTEVWQlFWTXZRaXhUUVVGVmRVSXNSVUZCVVVzc1MwRkZla1FzUjBGQmIwSXNWVUZCYUVKWExFVkJRVTlGTEV0QlNWUXNUMEZJUVd4Q0xFVkJRVkZKTEU5QlFWTXNVVUZEYWtKS0xFVkJRVkZMTEVsQlFVMVhMRVZCUVU5WUxFbEJRM0pDVEN4RlFVRlJVU3hUUVVGWExFdEJRMXBITEVWQlIxUXNTVUZCU1hGRExFVkJRVTlvUXl4RlFVRlBXQ3hKUVVWc1FpeFBRVUZOTWtNc1JVRlBSa0VzUlVGQlN6ZENMRTFCUjFCdVFpeEZRVUZSVVN4RlFVRlRlVU1zV1VGQlkwUXNSVUZCU3k5RUxFMUJSM0JEWlN4RlFVRlJhMFFzUzBGQlR6RkRMRVZCUVZNeVF5eFJRVkZFTEZkQlFXNUNia1FzUlVGQlVVa3NVMEZEVmtvc1JVRkJVVWtzVDBGQlV5eFBRVU5xUWtvc1JVRkJVVXNzVTBGNldGWjVReXhIUVcxWlJqbERMRVZCUVZGUkxGTkJRVmNzUzBGRFdrY3NSMEZPUlhGRExFZEJNMEpRYUVRc1JVRkJVVWtzVDBGQlV5eFJRVU5xUWtvc1JVRkJVVXNzU1VGQlRTeEpRVUZKTUVNc1ZVRkJWU3h2UTBGRE5VSXZReXhGUVVGUlVTeFRRVUZYTEV0QlExcEhMRWRCYjBSWUxGTkJRVk41UXl4RlFVRmhReXhIUVVOd1FpeEpRVUZKUXl4RlFVRlJMRU5CUVVWRExFOUJRVkZHTEVWQlFVc3NTVUZGZGtJc1MwRkJTMEVzU1VGRFVFTXNSVUZCVFVVc1UwRkJWMGdzUlVGQlN5eEpRVWR3UWl4TFFVRkxRU3hKUVVOUVF5eEZRVUZOUnl4WFFVRmhTaXhGUVVGTExFZEJRM2hDUXl4RlFVRk5TU3hUUVVGWFRDeEZRVUZMTEVsQlIzaENNMElzUzBGQlMybERMRmRCUVZkRExFdEJRVXRPTEVkQlIzWkNMRk5CUVZOUExFVkJRV05RTEVkQlEzSkNMRWxCUVVsMFF5eEZRVUZUYzBNc1JVRkJUVkVzV1VGQll5eEhRVU5xUXpsRExFVkJRVTlGTEV0QlFVOHNaMEpCUTFCR0xFVkJRVTlZTEVsQlEyUnBSQ3hGUVVGTlVTeFhRVUZoT1VNc1JVRkhja0lzVTBGQlUyWXNSVUZCVVU0c1IwRkpaaXRDTEV0QlFVdHBReXhYUVVGaExFTkJRVU1zUTBGQlJVb3NUMEZCVVN4VFFVTTNRalZFTEVWQlFWbHpReXhSUVVGUmJVSXNSVUZCWXpGQ0xFMUJRMnhEUVN4TFFVRkxjVU1zVDBGQlRTeEhRVGhDWWl4VFFVRlRha01zUlVGQlQydERMRWRCUTJRc1IwRkJTVUVzUlVGQlZTeERRVU5hTEVsQlFVbERMRVZCUVdsQ1JDeEZRVUZUZUVZc1IwRkRPVUlzUjBGQlNYbEdMRVZCUTBZc1QwRkJUMEVzUlVGQlpUTkRMRXRCUVVzd1F5eEhRVWMzUWl4SFFVRTJRaXh0UWtGQmJFSkJMRVZCUVZOa0xFdEJRMnhDTEU5QlFVOWpMRVZCUjFRc1NVRkJTMFVzVFVGQlRVWXNSVUZCVTBjc1VVRkJVeXhEUVVNelFpeEpRVUZKUXl4SFFVRkxMRVZCUVVkc1FpeEZRVUZQTEZOQlFWTkJMRWxCUXpGQ0xFOUJRVk5yUWl4RlFVRkpTaXhGUVVGVFJ5eFJRVU53UWl4SFFVRkpMMFlzUlVGQlQydEVMRXRCUVVzd1F5eEZRVUZWU1N4SFFVZDRRaXhQUVVaQmJFSXNSVUZCUzJwRkxFMUJRVkVyUlN4RlFVRlRTU3hIUVVOMFFteENMRVZCUVVzdlFpeE5RVUZQTEVWQlEwd3JRaXhGUVU5WUxFOUJTRUZCTEVWQlFVdHFSU3hYUVhwbFZEWkVMRVZCTUdWSlNTeEZRVUZMTDBJc1RVRkJUeXhGUVVWTUswSXNSMEZIVkN4UFFVRlBRU3hGUVVGTFFTeExRVUZQUVN4SFFVdDJRaXhOUVVGUExFTkJRVVZCTEV0QlFVMHpReXhIUVVscVFpeFRRVUZUUVN4SlFVTlFMRTFCUVU4c1EwRkJSWFJDTEZkQmVtWlFOa1FzUlVGNVpubENNMElzVFVGQlRTeEhRU3ROYmtNc1QwRTFiVUpCU1N4RlFVRnJRbkJFTEZWQlFWazBSQ3hGUVVGSGMwTXNXVUZCWXpkRExFVkJReTlEUVN4RlFVRXlRalpETEZsQlFXTTVReXhGUVVONlEwRXNSVUZCYTBJclF5eFpRVUZqZUVZc1JVRkRPVUl3UXl4RlFVTkJOVU1zUlVGRFFTeHhRa0ZoUmxvc1JVRkJVWFZITEc5Q1FVRnpRaXhUUVVGVFF5eEhRVU55UXl4SlFVRkpReXhGUVVGNVFpeHRRa0ZCV0VRc1IwRkJlVUpCTEVWQlFVOUlMRmxCUTJ4RUxGRkJRVTlKTEVsQlEwaEJMRWxCUVZOc1JDeEhRVWN5UWl4MVFrRkJia05yUkN4RlFVRkxTQ3hoUVVGbFJ5eEZRVUZMUXl4UlFVbG9RekZITEVWQlFWRXlSeXhMUVVGUExGTkJRVk5JTEVkQlVYUkNMRTlCVUVsMFJ5eFBRVUZQTUVjc1pVRkRWREZITEU5QlFVOHdSeXhsUVVGbFNpeEZRVUZSYUVRc1NVRkZPVUpuUkN4RlFVRlBTeXhWUVVGWmNrUXNSVUZEYmtJeFF5eEZRVUZQTUVZc1JVRkJVVFZHTEVWQlFXMUNMSE5DUVVWd1F6UkdMRVZCUVU5eVJ5eFZRVUZaUkN4UFFVRlBOa0lzVDBGQlQyZERMRWRCUXpGQ2VVTXNSMEZQVkhoSExFVkJRVkU0Unl4TlFVRlJMRk5CUVZONlJTeEhRVU4yUWl4TlFVRlBMRU5CUVVWeFF5eFJRVUZUY2tNc1NVRnpSWEJDTWtJc1JVRkJjMEpGTEVWQlFXTXZSQ3hYUVVOd1F5dEVMRVZCUVdNdlJDeFZRVUZWVHl4SFFVRjFRaXhYUVVNM1F5eFBRVUZQWjBRc1RVRkZWREZFTEVWQlFWRnJSU3hqUVVGblFrRXNSVUZMZUVKc1JTeEZRVUZSSzBjc1RVRkJVU3hUUVVGVGRrWXNSVUZCVTBNc1JVRkJVME1zUlVGQlRVTXNSVUZCWVhkRExGRkJRM2hETEVsQlFXaENRU3hKUVVGM1FrRXNSVUZCWXpaRExGTkJSVEZETEVsQlFVbERMRVZCUVU4c1NVRkJTUzlETEVWQlEySXpReXhGUVVGTFF5eEZRVUZUUXl4RlFVRlRReXhGUVVGTlF5eEhRVU0zUW5kRExFZEJSMFlzVDBGQlQyNUZMRVZCUVZGMVJ5eHZRa0ZCYjBJNVJTeEhRVU12UW5kR0xFVkJRMEZCTEVWQlFVc3ZRaXhQUVVGUFVDeE5RVUZMTEZOQlFWTkdMRWRCUTNoQ0xFOUJRVTlCTEVWQlFVOTBRaXhMUVVGUGMwSXNSVUZCVDNoRUxFMUJRVkZuUnl4RlFVRkxMMElzVjBGMVMycEViRUlzUlVGQmMwSkVMRWRCUlhSQ2FrUXNSVUZCVDJsRUxFVkJRVWx1UkN4RlFVRnRRaXhoUVU4NVFtMUVMRVZCUVVkMlJDeEhRVUZyUWl4WFFVTnVRaXhQUVVGUGEwUXNUVUZIVkVzc1JVRkJSMjFFTEZOQlFWY3NWMEZEV2l4TlFVRlBMSE5DUVd0RFZHeElMRVZCUVZGdFNDeExRVUZQTEZOQlFWTkRMRWRCUTNSQ0xFbEJRVWxFTEVWQlFVOHNSMEZEV0N4SlFVRkxMRWxCUVVsdVJ5eExRVUZQYjBjc1JVRkRaRVFzUlVGQlMzWkNMRXRCUVVzMVJTeEhRVTFhTEU5QlNrRnRSeXhGUVVGTFJTeFZRVWxGTEZOQlFWTnVReXhKUVVOa0xFdEJRVTlwUXl4RlFVRkxhRUlzVVVGQlVTeERRVU5zUWl4SlFVRkpia1lzUlVGQlRXMUhMRVZCUVV0SExFMUJRMllzUjBGQlNYUkhMRXRCUVU5dlJ5eEZRVWRVTEU5QlJrRnNReXhGUVVGTGFrVXNUVUZCVVVRc1JVRkRZbXRGTEVWQlFVc3ZRaXhOUVVGUExFVkJRMHdyUWl4RlFWRllMRTlCUkVGQkxFVkJRVXN2UWl4TlFVRlBMRVZCUTB3clFpeEpRWE5EV0d4R0xFVkJRVkU0UkN4UFFVRlRRU3hGUVUxcVFqZENMRVZCUVZFNVFpeFZRVUZaTEVOQlEyeENhMGNzV1VGQllYQkZMRVZCUldJNFJDeE5RVUZQTEZOQlFWTjNRaXhIUVdOa0xFZEJZa0UzUkN4TFFVRkxPRVFzUzBGQlR5eEZRVU5hT1VRc1MwRkJTM2RDTEV0QlFVOHNSVUZIV25oQ0xFdEJRVXRrTEV0QlFVOWpMRXRCUVV0aUxGZEJjR2RDYWtKcFF5eEZRWEZuUWtGd1FpeExRVUZMVUN4TlFVRlBMRVZCUTFwUExFdEJRVXRzUWl4VFFVRlhMRXRCUldoQ2EwSXNTMEZCUzNSQ0xFOUJRVk1zVDBGRFpITkNMRXRCUVV0eVFpeFRRWHBuUWt4NVF5eEZRVEpuUWtGd1FpeExRVUZMYVVNc1YwRkJWekZDTEZGQlFWRTBRaXhKUVVWdVFqQkNMRVZCUTBnc1NVRkJTeXhKUVVGSllpeExRVUZSYUVRc1MwRkZVU3hOUVVGdVFtZEVMRVZCUVV0bExFOUJRVThzU1VGRFduSklMRVZCUVU5clJDeExRVUZMU1N4TFFVRk5aMFFzUzBGRGFrSlNMRTlCUVU5UkxFVkJRVXRuUWl4TlFVRk5MRTFCUTNKQ2FFVXNTMEZCUzJkRUxGRkJibWhDV0RWQ0xFbEJlV2hDUmpaRExFdEJRVTBzVjBGRFNtcEZMRXRCUVV0UUxFMUJRVThzUlVGRldpeEpRVU5KZVVVc1JVRkVXV3hGTEV0QlFVdHBReXhYUVVGWExFZEJRMHhITEZkQlF6TkNMRWRCUVhkQ0xGVkJRWEJDT0VJc1JVRkJWekZGTEV0QlEySXNUVUZCVFRCRkxFVkJRVmQyUml4SlFVZHVRaXhQUVVGUGNVSXNTMEZCUzIxRkxFMUJSMlF2UlN4clFrRkJiVUlzVTBGQlUyZEdMRWRCUXpGQ0xFZEJRVWx3UlN4TFFVRkxVQ3hMUVVOUUxFMUJRVTB5UlN4RlFVZFNMRWxCUVVrNVJpeEZRVUZWTUVJc1MwRkRaQ3hUUVVGVGNVVXNSVUZCVDBNc1JVRkJTME1zUjBGWmJrSXNUMEZZUVdwR0xFVkJRVTlGTEV0QlFVOHNVVUZEWkVZc1JVRkJUMWdzU1VGQlRYbEdMRVZCUTJJNVJpeEZRVUZSYTBRc1MwRkJUemhETEVWQlJWaERMRWxCUjBacVJ5eEZRVUZSU1N4UFFVRlRMRTlCUTJwQ1NpeEZRVUZSU3l4VFFYQnFRbHA1UXl4TFFYVnFRbGx0UkN4RlFVZGFMRWxCUVVzc1NVRkJTVGRDTEVWQlFVa3hReXhMUVVGTGFVTXNWMEZCVjFFc1QwRkJVeXhGUVVGSFF5eEhRVUZMTEVsQlFVdEJMRVZCUVVjc1EwRkRjRVFzU1VGQlNXUXNSVUZCVVRWQ0xFdEJRVXRwUXl4WFFVRlhVeXhIUVVONFFuQkVMRVZCUVZOelF5eEZRVUZOVVN4WFFVVnVRaXhIUVVGeFFpeFRRVUZxUWxJc1JVRkJUVU1zVDBGSlVpeFBRVUZQZDBNc1JVRkJUeXhQUVVkb1FpeEhRVUZKZWtNc1JVRkJUVU1zVVVGQlZUZENMRXRCUVVzNFJDeExRVUZOTEVOQlF6ZENMRWxCUVVsVkxFVkJRVmM1U0N4RlFVRlBhMFFzUzBGQlMyZERMRVZCUVU4c1dVRkRPVUkyUXl4RlFVRmhMMGdzUlVGQlQydEVMRXRCUVV0blF5eEZRVUZQTEdOQlJYQkRMRWRCUVVrMFF5eEhRVUZaUXl4RlFVRlpMRU5CUXpGQ0xFZEJRVWw2UlN4TFFVRkxPRVFzUzBGQlQyeERMRVZCUVUxRkxGTkJRM0JDTEU5QlFVOTFReXhGUVVGUGVrTXNSVUZCVFVVc1ZVRkJWU3hIUVVONlFpeEhRVUZKT1VJc1MwRkJTemhFTEV0QlFVOXNReXhGUVVGTlJ5eFhRVU16UWl4UFFVRlBjME1zUlVGQlQzcERMRVZCUVUxSExHbENRVWRxUWl4SFFVRkplVU1zUjBGRFZDeEhRVUZKZUVVc1MwRkJTemhFTEV0QlFVOXNReXhGUVVGTlJTeFRRVU53UWl4UFFVRlBkVU1zUlVGQlQzcERMRVZCUVUxRkxGVkJRVlVzVDBGSE0wSXNRMEZCUVN4SlFVRkpNa01zUlVGTlZDeE5RVUZOTEVsQlFVazNSaXhOUVVGTkxEQkRRVXhvUWl4SFFVRkpiMElzUzBGQlN6aEVMRXRCUVU5c1F5eEZRVUZOUnl4WFFVTndRaXhQUVVGUGMwTXNSVUZCVDNwRExFVkJRVTFITEdkQ1FWVTVRakZETEU5QlFWRXNVMEZCVTBjc1JVRkJUV0lzUjBGRGNrSXNTVUZCU3l4SlFVRkpLMFFzUlVGQlNURkRMRXRCUVV0cFF5eFhRVUZYVVN4UFFVRlRMRVZCUVVkRExFZEJRVXNzU1VGQlMwRXNSVUZCUnl4RFFVTndSQ3hKUVVGSlpDeEZRVUZSTlVJc1MwRkJTMmxETEZkQlFWZFRMRWRCUXpWQ0xFZEJRVWxrTEVWQlFVMURMRkZCUVZVM1FpeExRVUZMT0VRc1RVRkRja0p3U0N4RlFVRlBhMFFzUzBGQlMyZERMRVZCUVU4c1pVRkRia0kxUWl4TFFVRkxPRVFzUzBGQlQyeERMRVZCUVUxSExGZEJRVmtzUTBGRGFFTXNTVUZCU1RKRExFVkJRV1U1UXl4RlFVTnVRaXhQUVVsQk9FTXNTVUZEVlN4VlFVRlViRVlzUjBGRFV5eGhRVUZVUVN4SlFVTkVhMFlzUlVGQllUZERMRkZCUVZWc1JDeEhRVU4yUWtFc1IwRkJUeXRHTEVWQlFXRXpReXhoUVVkMFFqSkRMRVZCUVdVc1RVRkhha0lzU1VGQlNYQkdMRVZCUVZOdlJpeEZRVUZsUVN4RlFVRmhkRU1zVjBGQllTeEhRVWwwUkN4UFFVaEJPVU1zUlVGQlQwVXNTMEZCVDBFc1JVRkRaRVlzUlVGQlQxZ3NTVUZCVFVFc1JVRkZWQ3RHTEVkQlEwWXhSU3hMUVVGTGRFSXNUMEZCVXl4UFFVTmtjMElzUzBGQlMzZENMRXRCUVU5clJDeEZRVUZoTTBNc1YwRkRiRUk1UXl4SFFVZEdaU3hMUVVGTE1rVXNVMEZCVTNKR0xFbEJSM1pDY1VZc1UwRkJWU3hUUVVGVGNrWXNSVUZCVVRCRExFZEJRM3BDTEVkQlFXOUNMRlZCUVdoQ01VTXNSVUZCVDBVc1MwRkRWQ3hOUVVGTlJpeEZRVUZQV0N4SlFXTm1MRTFCV0c5Q0xGVkJRV2hDVnl4RlFVRlBSU3hOUVVOVExHRkJRV2hDUml4RlFVRlBSU3hMUVVOVVVTeExRVUZMZDBJc1MwRkJUMnhETEVWQlFVOVlMRWxCUTAwc1YwRkJhRUpYTEVWQlFVOUZMRTFCUTJoQ1VTeExRVUZMYlVVc1MwRkJUMjVGTEV0QlFVdHlRaXhKUVVGTlZ5eEZRVUZQV0N4SlFVTTVRbkZDTEV0QlFVdDBRaXhQUVVGVExGTkJRMlJ6UWl4TFFVRkxkMElzUzBGQlR5eFBRVU5oTEZkQlFXaENiRU1zUlVGQlQwVXNUVUZCY1VKM1F5eEpRVU55UTJoRExFdEJRVXQzUWl4TFFVRlBVU3hIUVVkUUwwTXNSMEZIVkRKR0xFOUJRVkVzVTBGQlV6ZERMRWRCUTJZc1NVRkJTeXhKUVVGSlZ5eEZRVUZKTVVNc1MwRkJTMmxETEZkQlFWZFJMRTlCUVZNc1JVRkJSME1zUjBGQlN5eEpRVUZMUVN4RlFVRkhMRU5CUTNCRUxFbEJRVWxrTEVWQlFWRTFRaXhMUVVGTGFVTXNWMEZCVjFNc1IwRkROVUlzUjBGQlNXUXNSVUZCVFVjc1lVRkJaVUVzUlVGSGRrSXNUMEZHUVM5Q0xFdEJRVXN5UlN4VFFVRlRMME1zUlVGQlRWRXNWMEZCV1ZJc1JVRkJUVWtzVlVGRGRFTkhMRVZCUVdOUUxFZEJRMUF6UXl4SlFVdGlORVlzVFVGQlV5eFRRVUZUYUVRc1IwRkRhRUlzU1VGQlN5eEpRVUZKWVN4RlFVRkpNVU1zUzBGQlMybERMRmRCUVZkUkxFOUJRVk1zUlVGQlIwTXNSMEZCU3l4SlFVRkxRU3hGUVVGSExFTkJRM0JFTEVsQlFVbGtMRVZCUVZFMVFpeExRVUZMYVVNc1YwRkJWMU1zUjBGRE5VSXNSMEZCU1dRc1JVRkJUVU1zVTBGQlYwRXNSVUZCVVN4RFFVTXpRaXhKUVVGSmRrTXNSVUZCVTNORExFVkJRVTFSTEZkQlEyNUNMRWRCUVc5Q0xGVkJRV2hDT1VNc1JVRkJUMFVzUzBGQmEwSXNRMEZETTBJc1NVRkJTWE5HTEVWQlFWTjRSaXhGUVVGUFdDeEpRVU53UW5kRUxFVkJRV05RTEVkQlJXaENMRTlCUVU5clJDeEhRVTFZTEUxQlFVMHNTVUZCU1d4SExFMUJRVTBzTUVKQlIyeENiVWNzWTBGQlpTeFRRVUZUZWtNc1JVRkJWV1lzUlVGQldVVXNSMEZoTlVNc1QwRmFRWHBDTEV0QlFVdHNRaXhUUVVGWExFTkJRMlF2UWl4VFFVRlZjVVFzUlVGQlQydERMRWRCUTJwQ1ppeFhRVUZaUVN4RlFVTmFSU3hSUVVGVFFTeEhRVWRUTEZOQlFXaENla0lzUzBGQlMzUkNMRk5CUjFCelFpeExRVUZMY2tJc1UwRTNja0pRZVVNc1IwRm5jMEpQYmtNc1NVRlJTak5ETEVkQlQzTkNNRWtzUlVGQlR6RkpMRk5CUjNSRExFbEJRMFV5U1N4dFFrRkJjVUkxU1N4RlFVTnlRaXhOUVVGUE5ra3NSMEZWVUVNc1UwRkJVeXhKUVVGTExIbENRVUZrUVN4RFFVRjNRemxKTEU5RE1YVkNNVU1zVTBGQlV5dEpMRVZCUVcxQ1F5eEZRVUZMZWtVc1JVRkJVME1zUlVGQlVYbEZMRVZCUVU5RExFVkJRVkZxU1N4RlFVRkxjVUlzUjBGRGNFVXNTVUZEUlN4SlFVRkpNa01zUlVGQlR5dEVMRVZCUVVrdlNDeEhRVUZMY1VJc1IwRkRhRUp3UWl4RlFVRlJLMFFzUlVGQlN5OUVMRTFCUTJwQ0xFMUJRVTgwUkN4SFFVVlFMRmxCUkVGT0xFVkJRVTlOTEVkQlNVeEhMRVZCUVVzM1FpeExRVU5RYlVJc1JVRkJVWEpFTEVkQlJWSXJSaXhSUVVGUk1VTXNVVUZCVVhKRUxFZEJRVTh3UkN4TFFVRkxjVVVzUlVGQlQwTXNSMEYzUW5aRExFMUJjRUpCTEZOQlFUSkNOVVlzUjBGRGVrSXNUMEZCVHl4WFFVTk1MRWxCUVVrelFpeEZRVUZQWjBNc1MwRkRVSGRHTEVWQlFVOURMRlZCUTFnc1QwRkJUeXhKUVVGSmJrTXNVMEZCVVN4VFFVRlZNVU1zUlVGQlUwTXNSMEZEY0VNc1NVRkJTWGRGTEVWQlFVMHhSaXhGUVVGSEswWXNUVUZCVFRGSUxFVkJRVTEzU0N4SFFVVjZRaXhUUVVGVFJpeEZRVUZOTDBnc1IwRkRZalpJTEVWQlFXMUNReXhGUVVGTGVrVXNSVUZCVTBNc1JVRkJVWGxGTEVWQlFVOURMRVZCUVZFc1QwRkJVV2hKTEVkQlIyeEZMRk5CUVZOblNTeEZRVUZQTTBnc1IwRkRaSGRJTEVWQlFXMUNReXhGUVVGTGVrVXNSVUZCVTBNc1JVRkJVWGxGTEVWQlFVOURMRVZCUVZFc1VVRkJVek5JTEVkQlIyNUZNRWdzVDBGQlRXeEZMRkZETTBKYUxFMUJTa0VzVTBGQmVVSjFSU3hIUVVOMlFpeEhRVUZKUXl4TlFVRk5ReXhSUVVGUlJpeEhRVUZOTEU5QlFVOUJMRWRETUVKcVF5eE5RVE5DUVN4VFFVRXJRa0VzUlVGQlMycEVMRWRCUTJ4RExFZEJRWE5DTEc5Q1FVRllOMFlzVVVGQk5FSkJMRTlCUVU5RkxGbEJRVmxRTEU5QlFVOXRTaXhIUVVGcVJTeERRVU5CTEVsQlFVbEhMRVZCUVU4c1IwRkRVRU1zUjBGQlN5eEZRVU5NUXl4SFFVRkxMRVZCUTB4RExFOUJRVXMzUlN4RlFVVlVMRWxCUTBVc1NVRkJTeXhKUVVGcFF6aEZMRVZCUVRkQ1F5eEZRVUZMVWl4RlFVRkpPVWtzVDBGQlQwVXNZMEZCYlVKblNpeEhRVUZOUnl4RlFVRkxReXhGUVVGSE0wVXNVVUZCVVM5Q0xGRkJRMmhGY1Vjc1JVRkJTelZFTEV0QlFVdG5SU3hGUVVGSE0wa3NVVUZGVkcxR0xFZEJRVXR2UkN4RlFVRkxja1FzVTBGQlYwTXNSMEZJT0VOeFJDeEhRVUZMTEVsQlN6bEZMRTFCUVU5dVNTeEhRVU5RYjBrc1IwRkJTeXhGUVVOTVF5eEZRVUZMY2trc1ZVRkZUQ3hKUVVOUGJVa3NSMEZCYzBJc1RVRkJhRUpKTEVWQlFWY3NVVUZCVjBFc1JVRkJWeXhwUWtGRk5VTXNSMEZCU1Vnc1JVRkJTU3hOUVVGTlF5eEhRVWxzUWl4UFFVRlBTQ3hKUTJSVUxFMUJWa0VzVTBGQk1rSklMRVZCUVV0VExFbEJRMjVDTEUxQlFWQkJMRWRCUVdWQkxFVkJRVTFVTEVWQlFVbHNSQ3hWUVVGUk1rUXNSVUZCVFZRc1JVRkJTV3hFTEZGQlJTOURMRWxCUVVzc1NVRkJTVU1zUlVGQlNTeEZRVUZITWtRc1JVRkJUeXhKUVVGSlZDeE5RVUZOVVN4SFFVRk5NVVFzUlVGQlNUQkVMRVZCUVVzeFJDeEpRVU01UXpKRUxFVkJRVXN6UkN4SFFVRkxhVVFzUlVGQlNXcEVMRWRCUjJoQ0xFOUJRVTh5UkN4SFEwbFVMRTFCVkVFc1UwRkJjVU5ETEVWQlFVZERMRWRCUTNSRExFZEJRVXRFTEVWQlFVd3NRMEZEUVN4SFFVRnBRaXhwUWtGQlRrRXNSVUZCWjBJc1QwRkJUMFVzUlVGQmFVSkdMRVZCUVVkRExFZEJRM1JFTEVsQlFVbEZMRVZCUVVscVN5eFBRVUZQUXl4VlFVRlZLMGNzVTBGQlV6VkVMRXRCUVVzd1J5eEhRVUZIZEVNc1RVRkJUU3hIUVVGSkxFZEJSWEJFTEUxQlJGVXNWMEZCVG5sRExFZEJRV3RDU0N4RlFVRkZNMFFzWTBGQllUaEVMRVZCUVVsSUxFVkJRVVV6UkN4WlFVRlpTeXhOUVVNM1F5eFJRVUZPZVVRc1IwRkJjVUlzVVVGQlRrRXNSVUZCYjBKaUxFMUJRVTFqTEV0QlFVdEtMRWRCUTNoRExHTkJRVTVITEVkQlFYRkNMREpEUVVFeVEwVXNTMEZCUzBZc1IwRkJWMFFzUlVGQmFVSkdMRVZCUVVkRExGRkJRWGhITEVsRFNrWXNUVUZLUVN4WFFVTkZMRTFCUVUwc1NVRkJTV3hHTEZWQlFWVXNPRWxEVjNSQ0xFMUJTa0VzVTBGQmQwSnpSU3hGUVVGTGFrUXNSMEZETTBJc1QwRkJUMnRGTEVWQlFXVnFRaXhKUVVGUmEwSXNSVUZCY1VKc1FpeEZRVUZMYWtRc1NVRkJUVzlGTEVWQlFUSkNia0lzUlVGQlMycEVMRWxCUVUxeFJTeExRMGgwUnl4TlFVNUJMRk5CUVhsQ1F5eEZRVUZWUXl4SFFVTnFReXhMUVVGTlJDeGhRVUZ2UWtNc1IwRkRlRUlzVFVGQlRTeEpRVUZKTlVZc1ZVRkJWU3h6UTBOR2VFSXNVMEZCVXpaR0xFVkJRV3RDUXl4RlFVRlJReXhIUVVOcVF5eEpRVUZMTEVsQlFVa3hSU3hGUVVGSkxFVkJRVWRCTEVWQlFVa3dSU3hGUVVGTk0wVXNUMEZCVVVNc1NVRkJTeXhEUVVOeVF5eEpRVUZKTWtVc1JVRkJZVVFzUlVGQlRURkZMRWRCUTNaQ01rVXNSVUZCVnpWS0xGZEJRV0UwU2l4RlFVRlhOVW9zWVVGQll5eEZRVU5xUkRSS0xFVkJRVmN6U2l4alFVRmxMRVZCUTNSQ0xGVkJRVmN5U2l4SlFVRlpRU3hGUVVGWE1Vb3NWVUZCVnl4SFFVTnFSRzVDTEU5QlFVOW5RaXhsUVVGbE1rb3NSVUZCVVVVc1JVRkJWeTlLTEVsQlFVc3JTaXhKUVZWc1JDeE5RVTVCTEZOQlFYTkNTaXhGUVVGaFN5eEZRVUZaUXl4SFFVYzNReXhQUVVaSlJDeEhRVUZaU2l4RlFVRnJRa1FzUlVGQldYaExMRlZCUVZjMlN5eEhRVU55UkVNc1IwRkJZVXdzUlVGQmEwSkVMRVZCUVdGTkxFZEJRM3BEVGl4SFEwVlVMRTFCWmtFc1UwRkJlVUkxU2l4RlFVRkxReXhGUVVGTFF5eEhRVmxxUXl4UFFWaEpSQ3hMUVVGUFJDeEZRVU5VWWl4UFFVRlBaMElzWlVGQlpVZ3NSVUZCUzBNc1JVRkJTeXhEUVVNNVFrTXNUVUZCVDBFc1JVRkRVRVVzV1VGQldTeEZRVU5hUXl4alFVRmpMRVZCUTJSRExGVkJRVlVzU1VGSFdrNHNSVUZCU1VNc1IwRkJUME1zUlVGSFRrWXNSME5hVEcxTExFVkJRVVVzVjBGQlZ5eFJRVUZSUXl4VlFVRlZReXhoUVVGaFF5eEZRVUZGTEZkQlFWY3NVVUZCVVVZc1ZVRkJWVWNzWTBGQll5eFRRVUZUUXl4RlFVRkZUQ3hGUVVGRlJ5eEZRVUZGUlN4RlFVRkZjRUlzUlVGQlJYRkNMRVZCUVVWd1JpeEZRVUZGTkVRc1IwRkJSeXhKUVVGSkxFbEJRVWw1UWl4RlFVRkZVQ3hGUVVGRk9VVXNSMEZCUnpSRUxFZEJRVWN3UWl4RlFVRkZSQ3hGUVVGRmVFc3NUVUZCVFN4TlFVRk5hVXNzUjBGQlJ5eFpRVUZaU3l4RlFVRkZUQ3hIUVVGSFR5eEZRVUZGZEVrc1MwRkJTMnRKTEVWQlFVVkxMRWRCUVVjeFJTeFJRVUZSTVVNc1VVRkJVVzlJTEVkQlFVY3ZSeXhMUVVGTGQwWXNSVUZCUlhGQ0xFZEJRVWNzVTBGQlUzSkNMRVZCUVVWbExFZEJRVWNzVDBGQlR5eFhRVUZYTEVsQlFVbEhMRVZCUVVVelNDeExRVUZMZVVjc1JVRkJSV2hDTEZWQlFWVXNUMEZCVHl4SlFVRkpia01zYTBKQlFXdENkMFVzUlVGQlJYQkdMRWRCUVVjc1NVRkJTVFJFTEVWQlFVVnJRaXhGUVVGRk9VSXNUVUZCVFdsRExFVkJRVVZzUWl4SFFVRkhMRk5CUVZOelFpeEZRVUZGVUN4SFFVRkhTeXhGUVVGRmRrSXNSVUZCUlhkQ0xFVkJRVVZ3Uml4RlFVRkZjVVlzUlVGQlJVTXNSVUZCUlN4UFFVRlBVaXhIUVVGSExGTkJRVk5STEVWQlFVVlNMRWRCUVVkTExFVkJRVVYyUWl4RlFVRkZkMElzUlVGQlJYQkdMRVZCUVVWeFJpeEZRVUZGUXl4RlFVRkZMRkZCUVZGU0xFZEJRVWRQTEU5QlFVVXNUMEZCV1N4VFFVRlRSQ3hGUVVGRlRpeEZRVUZGUnl4SFFVRkhMRTlCUVU4c1UwRkJVMGdzUjBGQlJ5eEhRVUZITlVJc1RVRkJUVU1zVVVGQlVUSkNMRWRCUVVjc1QwRkJUMEVzUlVGQmRrTXNRMEZCTUVOQkxFbEJRVWtzVTBGQlUwRXNSVUZCUlVjc1IwRkJSeXhIUVVGSExHOUNRVUZ2UWpsTExGRkJRVlZCTEU5QlFVOUZMRmxCUVZsUUxFOUJRVTluVEN4SFFVRXpSQ3hEUVVGelJTeEpRVUZKU3l4RlFVRkZMRWRCUVVkd1FpeEhRVUZGTEVWQlFVZHhRaXhIUVVGRkxFVkJRVWR3Uml4UFFVRkZMRVZCUVU4c1NVRkJTU3hKUVVGSkxFbEJRVWswUkN4RlFVRkZlVUlzUlVGQlJWQXNSVUZCUlROTExFOUJRVTlGTEdOQlFXTXdTaXhIUVVGSFNDeEZRVUZGZVVJc1JVRkJSWFpITEZGQlFWRXZRaXhSUVVGUmIwa3NSVUZCUlROR0xFdEJRVXR2UlN4RlFVRkZMMGtzVVVGQlVXOUxMRWRCUVVkRkxFVkJRVVZ3Uml4VFFVRlRhMFlzUjBGQlIyeENMRWRCUVVVc1NVRkJTeXhOUVVGTlpTeEhRVUZIVFN4SFFVRkZMRVZCUVVkd1JpeEZRVUZGT0VVc1JVRkJSU3hSUVVGUkxFbEJRVWxtTEVkQlFVY3NUVUZCVFhOQ0xFVkJRVVZGTEZGQlFWRkdMRVZCUVVWRkxGTkJRVk1zVVVGQlVTeEhRVUZIU0N4RlFVRkZMRTFCUVUxd1JpeEhRVUZITEU5QlFVOXRSaXhIUVVGb1ZDeERRVUZ0VkV3c1JVRkJSVWNzU1VGQlNTeFRRVUZUU0N4RlFVRkZSeXhIUVVGSExFZEJRVWxJTEVWQlFVb3NRMEZCWVN4SFFVRkhMR2xDUVVGcFFrRXNSVUZCUlN4UFFVRlBPVVVzUlVGQlJUaEZMRVZCUVVWSExFZEJRVWNzU1VGQlNVVXNSVUZCUlhKTUxFOUJRVTlETEZWQlFWVXJSeXhUUVVGVE5VUXNTMEZCU3pSSUxFZEJRVWQ0UkN4TlFVRk5MRWRCUVVjc1IwRkJkVVFzVFVGQmNFUXNWMEZCVnpaRUxFZEJRVWRNTEVWQlFVVTNSU3hqUVVGamEwWXNSVUZCUlV3c1JVRkJSVGRGTEZsQlFWbExMRTFCUVZNc1VVRkJVVFpGTEVkQlFVY3NVVUZCVVVFc1JVRkJVMnBETEUxQlFVMWpMRXRCUVV0akxFZEJRVTBzWTBGQlkwc3NSMEZCUnl3eVEwRkJNa05zUWl4TFFVRkxhMElzUjBGQlZXNUdMRVZCUVVVNFJTeEZRVUZGUnl4UlFVRnNSaXhIUVVGd1RpeERRVUV3VTBnc1JVRkJSVWNzU1VGQlNTeFhRVUZYTEUxQlFVMHNTVUZCU1hSSExGVkJRVlVzTmtsQlFTOUNMRWRCUVN0TExGTkJRVk54UWl4RlFVRkZPRVVzUlVGQlJVY3NTVUZCU1N4TlFVRk5RU3hIUVVGSFFTeEZRVUZGU0N4RlFVRkZMMFVzVlVGQlZXdEdMRVZCUVVWSUxFVkJRVVV2UlN4UlFVRlJMRWxCUVVrc1NVRkJTVzlHTEVWQlFVVXNSVUZCUlhCQ0xFVkJRVVVzU1VGQlNXSXNUVUZCVFN0Q0xFZEJRVWRGTEVWQlFVVkdMRVZCUVVWRkxFbEJRVWx3UWl4RlFVRkZiMElzUjBGQlIwd3NSVUZCUlVzc1IwRkJSeXhQUVVGUGNFSXNSVUZCUlN4SlFVRkpTQ3hGUVVGRkxGZEJRVmNzU1VGQlNYRkNMRVZCUVVWc1FpeEZRVUZGZUVJc2JVSkJRVzFDYUVNc1pVRkJaVEJGTEVWQlFVVkZMRWRCUVVjc1QwRkJUelZETEcxQ1FVRnRRbkJJTEdWQlFXVTRTaXhIUVVGSExFOUJRVThzVDBGQlQwRXNSVUZCUlRkRUxFdEJRVXMyUkN4RlFVRkZia2NzVFVGQlRTeExRVUZMTEVWQlFVVXNUMEZCVDIxSExFVkJRVVYwU1N4UFFVRlBMRk5CUVZNc1NVRkJTV2xGTEZGQlFWRXNWMEZCVnl4SlFVRkpjVVVzUlVGQlJXeENMRVZCUVVWNFFpeHRRa0ZCYlVKb1F5eGxRVUZsTUVVc1JVRkJSV3hDTEVWQlFVVnhRaXhIUVVGSExFbEJRVWx3Uml4RlFVRkZORVFzUlVGQlJTeFBRVUZQY2tJc2JVSkJRVzFDY0Vnc1pVRkJaVGhLTEVkQlFVY3NUMEZCVHl4UFFVRlBRU3hGUVVGRk4wUXNTMEZCU3paRUxFVkJRVVZ1Unl4TlFVRk5MRXRCUVVzc1JVRkJSU3hQUVVGUFowY3NTMEZCUzAwc1JVRkJSU3hKUVVGSlNTeGhRVUZoTERKRFFVRXlReXh6UWtGQmMwSlFMRVZCUVVVM1JDeExRVUZMTEVWQlFVVTJSQ3hGUVVGRmJrY3NTMEZCU3l4RlFVRkZhVWNzVlVGQlZVTXNXVUZCV1ZNc1RVRkJUU3hEUVVGRGJrWXNTMEZCU3paRkxFbEJRVWtzUzBGQlN5eEZRVUZGYmtZc1JVRkJSV2xHTEVWQlFVVjZTU3hMUVVGTGIwZ3NSVUZCUlN4VFFVRlRhMElzUlVGQlJVY3NSMEZCUjJwR0xFVkJRVVV3Uml4dlFrRkJiMElzVTBGQlUxb3NSMEZCUjA4c1JVRkJSVW9zUlVGQlJWSXNUMEZCVHpGSkxFMUJRVTFuU1N4RlFVRkZjVUlzU1VGQlNYQkdMRVZCUVVVeVJpeHBRa0ZCYVVJc1UwRkJVeTlDTEVkQlFVZDVRaXhGUVVGRmNrWXNSVUZCUldwRkxFMUJRVTFuU1N4RlFVRkZjVUlzUjBGQlIwZ3NSVUZCUlc1SExFdEJRVXNzUjBGQlJ5eE5RVUZOTEV0QlFVc3NSMEZCUjIxSExFVkJRVVUzUkN4TFFVRkxMRWRCUVVjMlJDeEZRVUZGVnl4SFFVRkhXQ3hGUVVGRk9VTXNUVUZCVFN4SFFVRkhhVVFzUlVGQlJVZ3NSVUZCUlZjc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEU5QlFVOVlMRVZCUVVVeFJDeFZRVUZWTUVRc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEZWQlFWVXNUMEZCVHl4VFFVRlRTQ3hGUVVGRlN5eEhRVUZITEU5QlFVOUdMRVZCUVVWcVF5eE5RVUZOTVVZc1MwRkJTM2xHTEZsQlFXaHNRaXhMUVVGcGJVSXNTMEZCU3l4RlFVRkZMRWxCUVVrc1RVRkJUU3hQUVVGUGEwTXNSVUZCUlRGRUxGVkJRVlV3UkN4UFFVRlBMRTlCUVU4c1UwRkJVMGdzUjBGQlJ5eFBRVUZQUnl4RlFVRkZha01zVFVGQlRURkdMRXRCUVV0NVJpeFpRVUZzTWtJc1IwRkJhVE5DYzBNc1JVRkJSU3hUUVVGVFVDeEZRVUZGUnl4RlFVRkZSU3hIUVVGSExFOUJRVTlNTEVkQlFVY3NTVUZCU1N4VFFVRlRTeXhGUVVGRkxFbEJRVWxMTEdGQlFXRXNiMEpCUVc5Q0xHOUNRVUZ2UWl4TlFVRk5MRkZCUVZGUUxFVkJRVVZJTEV0QlFVdFJMRVZCUVVVc1YwRkJWeXhKUVVGSlNDeEZRVUZGY0VJc1JVRkJSWGhDTEcxQ1FVRnRRbWhETEdWQlFXVTBSU3hGUVVGRmJrWXNSVUZCUlhGR0xFZEJRVWNzVDBGQlR6bERMRzFDUVVGdFFuQklMR1ZCUVdWblN5eEhRVUZITEU5QlFVOHNUMEZCVDBFc1JVRkJSUzlFTEV0QlFVc3JSQ3hGUVVGRmNrY3NUVUZCVFN4TFFVRkxMRVZCUVVVc1QwRkJUM0ZITEVWQlFVVjRTU3hQUVVGUExGTkJRVk1zU1VGQlNXbEZMRkZCUVZFc1YwRkJWeXhKUVVGSmRVVXNSVUZCUlhCQ0xFVkJRVVY0UWl4dFFrRkJiVUpvUXl4bFFVRmxORVVzUlVGQlJYQkNMRVZCUVVWMVFpeEhRVUZITEVsQlFVbFBMRVZCUVVWRExFVkJRVVZETEVWQlFVVXNUMEZCVDNoRUxHMUNRVUZ0UW5CSUxHVkJRV1ZuU3l4SFFVRkhMRTlCUVU4c1QwRkJUMEVzUlVGQlJTOUVMRXRCUVVzclJDeEZRVUZGY2tjc1RVRkJUU3hMUVVGTExFVkJRVVVzVDBGQlQyZEhMRXRCUVV0SExFdEJRVXRMTEVWQlFVVXNTVUZCU1VVc1lVRkJZU3d3UlVGQk1FVXNjMEpCUVhOQ1RDeEZRVUZGTDBRc1MwRkJTeXhGUVVGRkswUXNSVUZCUlZNc1IwRkJSMmhHTEZGQlFWRjFSU3hGUVVGRmNrY3NTMEZCU3l4RlFVRkZPRVVzUlVGQlJUVkVMRWRCUVVjc1MwRkJTeXhGUVVGRkxFOUJRVTl0Uml4RlFVRkZZU3hIUVVGSFlpeEZRVUZGTTBrc1MwRkJTekpKTEVWQlFVVnlSeXhMUVVGTExFVkJRVVZwUnl4VlFVRlZSeXhoUVVGaFpTeGhRVUZoV2l4SFFVRkhMRXRCUVVzc1JVRkJSU3hQUVVGUFJpeEZRVUZGWlN4SFFVRkhaaXhGUVVGRk0wa3NTMEZCU3pKSkxFVkJRVVZuUWl4SFFVRkhMRU5CUVVOb1FpeEZRVUZGWVN4SFFVRkhZaXhGUVVGRlpTeEpRVUZKWml4RlFVRkZja2NzUzBGQlN5eEhRVUZIY1Vjc1JVRkJSVk1zUjBGQlIxRXNTVUZCU1d4S0xFdEJRVXRwU1N4RlFVRkZVeXhIUVVGSFZDeEZRVUZGWjBJc1NVRkJTU3hMUVVGTExFZEJRVWRPTEVWQlFVVldMRVZCUVVVelNTeExRVUZMYzBvc1JVRkJSVllzUlVGQlJWTXNSVUZCUlN4SFFVRkhSU3hGUVVGRlJDeEZRVUZGTEVkQlFVY3ZRaXhGUVVGRlowTXNSMEZCUjFvc1JVRkJSWEpITEV0QlFVc3NSMEZCUnl4TlFVRk5MRXRCUVVzc1IwRkJSM0ZITEVWQlFVVXZSQ3hMUVVGTExFZEJRVWNyUkN4RlFVRkZhMElzUjBGQlIyeENMRVZCUVVWb1JDeE5RVUZOTEVkQlFVZHRSQ3hGUVVGRlNDeEZRVUZGYTBJc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEU5QlFVOXNRaXhGUVVGRk5VUXNWVUZCVlRSRUxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4VlFVRlZMRTlCUVU4c1UwRkJVMHdzUlVGQlJVY3NSMEZCUnl4UFFVRlBSU3hGUVVGRmJrTXNUVUZCVFRGR0xFdEJRVXQ1Uml4WlFVRjZjRUlzUzBGQk1IRkNMRXRCUVVzc1JVRkJSU3hKUVVGSkxFMUJRVTBzVDBGQlQyOURMRVZCUVVVMVJDeFZRVUZWTkVRc1QwRkJUeXhQUVVGUExGTkJRVk5NTEVWQlFVVkhMRWRCUVVjc1QwRkJUMFVzUlVGQlJXNURMRTFCUVUweFJpeExRVUZMZVVZc1dVRkJMelpDTEhOclFrTkZOVEJGZFVRc2QwSkJiVU5QUXl3eVEwRklRU3d3UWtGRFF5eFZRVWRPUXl4RlFVRnZRa1lzUlVGQlRVY3NaME5CUXpOQ1JDeFJRVU5GTEVsQlFVbG9RaXhoUVVGaExHdERRVUZ0UXl3d1FrRkhkRVJyUWl4VlFVRlpMRWxCUVVsR0xFOUJRMmhDUnl4WFFVRmhMRWRCUld4Q04wMHNUMEZCVHpoTkxHVkJRMGhPTEVWQlFVMVBMR2RDUVVOTVRpeEhRVUZYTEV0QlEySXhTU3hUUVVGUkxIbENRVUZGYWtRc1QwRkJTME1zVlVGRFRDeGhRVUZTUkN4SlFVRjFRa01zUlVGQlR5eExRVU16UW1sTkxFVkJRVzlDVWl4RlFVRk5VeXcwUWtGRE1VSkVMRWxCUTB4cVRTeEZRVUZSTEVsQlFVbHBUU3hIUVVka1JTeEZRVUZMVGl4VlFVRlZPVXdzUjBGQlQwTXNjMFZCTjBKa2VVd3NSVUZCVFVjc0swSkJRV2xEVVN4UFFVRjFRME1zYTBKQlIycEZReXhUUVVOb1FpeEpRVUZKYWt3c1RVRkJUU3gxUzBGelExWnZRaXhMUVVGTGIwb3NiMFJCUlZsVkxFVkJRVzFDTEdGQlFXTXNRMEZCUlVNc1QwRkJUeXd5UTBGRmVFUXNTVUZCU1c1TUxFMUJRVTBzSzBSQlJWcDNTeXhWUVVGVldTd3lSRUZGVkVNc1JVRkJaV3BMTEV0QlFVdHhTaXhYUVVGWGJFa3NVVUZGY0VNNFNTeDVRMEZMU1dwTExHbEtRVWxFUVN4TFFVRkxiMG9zWjBKQlEweEJMRlZCUVZWdVJpeFBRVWRVYWtVc05FTkJTVVJCTEV0QlFVdHZTaXhuUWtGRFRFRXNWVUZCVldNc1VVRkhWR3hMTERoRFFVZFRiVXNzUlVGQlYwTXNhVUpCUTNKQ2NFc3NTMEZCUzI5S0xGZEJRV0Z3U2l4TFFVRkxjVXNzYlVKQlFXMUNSaXhIUVVGWkxFTkJRM0pFYmtzc1MwRkJTM0ZLTEZkQlFWZGpMRk5CUTJoQ0wwSXNiMEpCUVc5Q0swSXNUMEZIY0VKSExFVkJRVlVzVTBGQlEwTXNUMEZEV2tNc1JVRkJhVUlzUjBGRGFrSk1MRWxCUVdOdVFpeEZRVUZOZVVJc1YwRkJWME1zVVVGRE5VSklMRVZCUVUxSkxGTkJRVmRLTEVWQlFVMUpMRkZCUVZGc1NTeFBRVUZUTEVkQlF6ZERLMGdzUlVGQlpYUkpMRXRCUVV0eFNTeEZRVUZOU1N4UlFVRlJMRWRCUVVjc1IwRkJSME1zV1VGSmVFTlNMRWRCUVZsQkxFVkJRVk14UlN4TlFVRk5iVVlzUjBGQlQwNHNWVUZCVlVNc1ZVRkZNVU53UWl4VlFVRlZaaXhwUWtGQmFVSTRRaXhGUVVGWFJ5eFJRVVYwUTJwQ0xGZEJRVmRqTEVkQlFXRkhMRk5CUjNaQ2RFc3NhVVJCUjFsdFN5eFBRVU5pUnl4RlFVRlZkRXNzUzBGQlMzRktMRmRCUVZkakxHVkJRek5DWml4VlFVRlZhRUlzYjBKQlFXOUNLMElzUlVGQlYwY3NWVUZGZGtOMFN5eExRVUZMY1Vvc1YwRkJWMk1zUjBGRmFFSnVTeXc0UkVGSlJtbEZMRTlCUlV4NlNDeFBRVUZQYVVnc1MwRkJTM3BFTEV0QlFVdHhTaXhaUVVGWk9Va3NVMEZCVVN4VFFVRkRha1FzVlVGQlVYZE9MRVZCUVVzeFF5eHZRa0ZCYjBJNVN5eFhRVU5zUlRoTUxGVkJRVmtzUzBGRlZuQktMR2RFUVVkWGJVc3NWMEZEVkROT0xFOUJRVTgwUkN4UFFVRlBORWtzUlVGQlRYbENMRmxCUVZsTkxFMUJRVXNzVTBGQlEzWk1MRlZCUVZOQkxFbEJRVk15U3l3MlEwRnlSakZFYmtzc1MwRkJTMjlLTEhkQ1FVZEJVeXhUUVVOT0xFbEJRVWxxVEN4TlFVRk5MR3RIUVhOR1ptOU5MRTlCUVU4NVFpeHRRa0ZEVURoQ0xFOUJRVTlETEhsQ1FVTlFSQ3hQUVVGUFJTeHpRa0ZEVUVZc1QwRkJUMGNzSzBWQlRWQklMRTlCUVU5NFFpeHRRa0ZEVUhkQ0xFOUJRVTlKTEhsQ1FVTlFTaXhQUVVGUFN5eHpRa0ZEVUV3c1QwRkJUMDBzSzBKQmFrdEtkRU1zYlVKQlEyMUNMRU5CUTNaQ2RVTXNVMEZCVlN4TFFVTldReXhMUVVGTkxGRkJRMDVETEZsQlFWa3NSVUZEV2tNc1owSkJRV2RDTEVWQlEyaENReXhuUWtGQmFVSXNSVUZEYWtKRExGZEJRVmtzVTBGUVVqVkRMR1ZCVldVc1EwRkRia0kyUXl4VlFVRlhMRmRCUTFoRExGbEJRV0VzWVVGRFlrTXNTVUZCU3l4TlFVTk1ReXhOUVVGUExGRkJRMUJETEZOQlFWVXNWVUZEVm5aQ0xFOUJRVkVzVTBGRFVuZENMRlZCUVZjc1YwRkRXRU1zV1VGQllTeGhRVU5pUXl4WFFVRlpMRmxCUTFwRExHRkJRV01zWTBGRFpFTXNUVUZCVHlKOVxuIiwidmFyIG49ZnVuY3Rpb24obil7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbn07ZXhwb3J0e24gYXMgaXNGdW5jdGlvbn07XG4iLCJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFZvY2FsIGFzIFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciB9IGZyb20gJ0B1bnRlbXBzL3ZvY2FsJ1xuXG5jb25zdCB1c2VWb2NhbCA9IChsYW5nID0gJ2VuLVVTJywgZ3JhbW1hcnMgPSBudWxsLCBfX3JzSW5zdGFuY2UgPSBudWxsKSA9PiB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKVxuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZCkge1xuXHRcdFx0cmVmLmN1cnJlbnQgPSBfX3JzSW5zdGFuY2UgfHwgbmV3IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlcih7IGxhbmcsIGdyYW1tYXJzIH0pXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdFx0fVxuXHRcdH1cblx0fSwgW2xhbmcsIGdyYW1tYXJzLCBfX3JzSW5zdGFuY2VdKVxuXG5cdGNvbnN0IHN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQuc3RhcnQoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3Qgc3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LnN0b3AoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0Y29uc3QgYWJvcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hYm9ydCgpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBzdWJzY3JpYmUgPSB1c2VDYWxsYmFjaygoZXZlbnRUeXBlLCBoYW5kbGVyKSA9PiB7XG5cdFx0aWYgKHJlZi5jdXJyZW50KSB7XG5cdFx0XHRyZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcblx0XHR9XG5cdH0sIFtdKVxuXG5cdGNvbnN0IHVuc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGV2ZW50VHlwZSwgaGFuZGxlcikgPT4ge1xuXHRcdGlmIChyZWYuY3VycmVudCkge1xuXHRcdFx0cmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIpXG5cdFx0fVxuXHR9LCBbXSlcblxuXHRjb25zdCBjbGVhbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcblx0XHRpZiAocmVmLmN1cnJlbnQpIHtcblx0XHRcdHJlZi5jdXJyZW50LmNsZWFudXAoKVxuXHRcdH1cblx0fSwgW10pXG5cblx0cmV0dXJuIFtyZWYsIHsgc3RhcnQsIHN0b3AsIGFib3J0LCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlLCBjbGVhbiB9XVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VWb2NhbFxuXG4vLyBUT0RPOiBSZXR1cm4gdGhlIGluc3RhbmNlLCBub3QgdGhlIHJlZlxuIiwiLyoqXG4gKiBGdXNlLmpzIHY2LjQuNiAtIExpZ2h0d2VpZ2h0IGZ1enp5LXNlYXJjaCAoaHR0cDovL2Z1c2Vqcy5pbylcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgS2lybyBSaXNrIChodHRwOi8va2lyby5tZSlcbiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICovXG5cbmZ1bmN0aW9uIGlzQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuICFBcnJheS5pc0FycmF5XG4gICAgPyBnZXRUYWcodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nXG4gICAgOiBBcnJheS5pc0FycmF5KHZhbHVlKVxufVxuXG4vLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyLy5pbnRlcm5hbC9iYXNlVG9TdHJpbmcuanNcbmNvbnN0IElORklOSVRZID0gMSAvIDA7XG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIGxldCByZXN1bHQgPSB2YWx1ZSArICcnO1xuICByZXR1cm4gcmVzdWx0ID09ICcwJyAmJiAxIC8gdmFsdWUgPT0gLUlORklOSVRZID8gJy0wJyA6IHJlc3VsdFxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKVxufVxuXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xufVxuXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xufVxuXG4vLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL2lzQm9vbGVhbi5qc1xuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgPT09IHRydWUgfHxcbiAgICB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09ICdbb2JqZWN0IEJvb2xlYW5dJylcbiAgKVxufVxuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xufVxuXG4vLyBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3QodmFsdWUpICYmIHZhbHVlICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0JsYW5rKHZhbHVlKSB7XG4gIHJldHVybiAhdmFsdWUudHJpbSgpLmxlbmd0aFxufVxuXG4vLyBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4vLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyLy5pbnRlcm5hbC9nZXRUYWcuanNcbmZ1bmN0aW9uIGdldFRhZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbFxuICAgID8gdmFsdWUgPT09IHVuZGVmaW5lZFxuICAgICAgPyAnW29iamVjdCBVbmRlZmluZWRdJ1xuICAgICAgOiAnW29iamVjdCBOdWxsXSdcbiAgICA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSlcbn1cblxuY29uc3QgRVhURU5ERURfU0VBUkNIX1VOQVZBSUxBQkxFID0gJ0V4dGVuZGVkIHNlYXJjaCBpcyBub3QgYXZhaWxhYmxlJztcblxuY29uc3QgSU5DT1JSRUNUX0lOREVYX1RZUEUgPSBcIkluY29ycmVjdCAnaW5kZXgnIHR5cGVcIjtcblxuY29uc3QgTE9HSUNBTF9TRUFSQ0hfSU5WQUxJRF9RVUVSWV9GT1JfS0VZID0gKGtleSkgPT5cbiAgYEludmFsaWQgdmFsdWUgZm9yIGtleSAke2tleX1gO1xuXG5jb25zdCBQQVRURVJOX0xFTkdUSF9UT09fTEFSR0UgPSAobWF4KSA9PlxuICBgUGF0dGVybiBsZW5ndGggZXhjZWVkcyBtYXggb2YgJHttYXh9LmA7XG5cbmNvbnN0IE1JU1NJTkdfS0VZX1BST1BFUlRZID0gKG5hbWUpID0+IGBNaXNzaW5nICR7bmFtZX0gcHJvcGVydHkgaW4ga2V5YDtcblxuY29uc3QgSU5WQUxJRF9LRVlfV0VJR0hUX1ZBTFVFID0gKGtleSkgPT5cbiAgYFByb3BlcnR5ICd3ZWlnaHQnIGluIGtleSAnJHtrZXl9JyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcmA7XG5cbmNvbnN0IGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmNsYXNzIEtleVN0b3JlIHtcbiAgY29uc3RydWN0b3Ioa2V5cykge1xuICAgIHRoaXMuX2tleXMgPSBbXTtcbiAgICB0aGlzLl9rZXlNYXAgPSB7fTtcblxuICAgIGxldCB0b3RhbFdlaWdodCA9IDA7XG5cbiAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgbGV0IG9iaiA9IGNyZWF0ZUtleShrZXkpO1xuXG4gICAgICB0b3RhbFdlaWdodCArPSBvYmoud2VpZ2h0O1xuXG4gICAgICB0aGlzLl9rZXlzLnB1c2gob2JqKTtcbiAgICAgIHRoaXMuX2tleU1hcFtvYmouaWRdID0gb2JqO1xuXG4gICAgICB0b3RhbFdlaWdodCArPSBvYmoud2VpZ2h0O1xuICAgIH0pO1xuXG4gICAgLy8gTm9ybWFsaXplIHdlaWdodHMgc28gdGhhdCB0aGVpciBzdW0gaXMgZXF1YWwgdG8gMVxuICAgIHRoaXMuX2tleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBrZXkud2VpZ2h0IC89IHRvdGFsV2VpZ2h0O1xuICAgIH0pO1xuICB9XG4gIGdldChrZXlJZCkge1xuICAgIHJldHVybiB0aGlzLl9rZXlNYXBba2V5SWRdXG4gIH1cbiAga2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5c1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5fa2V5cylcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXkoa2V5KSB7XG4gIGxldCBwYXRoID0gbnVsbDtcbiAgbGV0IGlkID0gbnVsbDtcbiAgbGV0IHNyYyA9IG51bGw7XG4gIGxldCB3ZWlnaHQgPSAxO1xuXG4gIGlmIChpc1N0cmluZyhrZXkpIHx8IGlzQXJyYXkoa2V5KSkge1xuICAgIHNyYyA9IGtleTtcbiAgICBwYXRoID0gY3JlYXRlS2V5UGF0aChrZXkpO1xuICAgIGlkID0gY3JlYXRlS2V5SWQoa2V5KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWhhc093bi5jYWxsKGtleSwgJ25hbWUnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKE1JU1NJTkdfS0VZX1BST1BFUlRZKCduYW1lJykpXG4gICAgfVxuXG4gICAgY29uc3QgbmFtZSA9IGtleS5uYW1lO1xuICAgIHNyYyA9IG5hbWU7XG5cbiAgICBpZiAoaGFzT3duLmNhbGwoa2V5LCAnd2VpZ2h0JykpIHtcbiAgICAgIHdlaWdodCA9IGtleS53ZWlnaHQ7XG5cbiAgICAgIGlmICh3ZWlnaHQgPD0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9LRVlfV0VJR0hUX1ZBTFVFKG5hbWUpKVxuICAgICAgfVxuICAgIH1cblxuICAgIHBhdGggPSBjcmVhdGVLZXlQYXRoKG5hbWUpO1xuICAgIGlkID0gY3JlYXRlS2V5SWQobmFtZSk7XG4gIH1cblxuICByZXR1cm4geyBwYXRoLCBpZCwgd2VpZ2h0LCBzcmMgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlQYXRoKGtleSkge1xuICByZXR1cm4gaXNBcnJheShrZXkpID8ga2V5IDoga2V5LnNwbGl0KCcuJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5SWQoa2V5KSB7XG4gIHJldHVybiBpc0FycmF5KGtleSkgPyBrZXkuam9pbignLicpIDoga2V5XG59XG5cbmZ1bmN0aW9uIGdldChvYmosIHBhdGgpIHtcbiAgbGV0IGxpc3QgPSBbXTtcbiAgbGV0IGFyciA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlZXBHZXQgPSAob2JqLCBwYXRoLCBpbmRleCkgPT4ge1xuICAgIGlmICghaXNEZWZpbmVkKG9iaikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXBhdGhbaW5kZXhdKSB7XG4gICAgICAvLyBJZiB0aGVyZSdzIG5vIHBhdGggbGVmdCwgd2UndmUgYXJyaXZlZCBhdCB0aGUgb2JqZWN0IHdlIGNhcmUgYWJvdXQuXG4gICAgICBsaXN0LnB1c2gob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGtleSA9IHBhdGhbaW5kZXhdO1xuXG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlJ3JlIGF0IHRoZSBsYXN0IHZhbHVlIGluIHRoZSBwYXRoLCBhbmQgaWYgaXQncyBhIHN0cmluZy9udW1iZXIvYm9vbCxcbiAgICAgIC8vIGFkZCBpdCB0byB0aGUgbGlzdFxuICAgICAgaWYgKFxuICAgICAgICBpbmRleCA9PT0gcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgIChpc1N0cmluZyh2YWx1ZSkgfHwgaXNOdW1iZXIodmFsdWUpIHx8IGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgbGlzdC5wdXNoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGFyciA9IHRydWU7XG4gICAgICAgIC8vIFNlYXJjaCBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5LlxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdmFsdWUubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICBkZWVwR2V0KHZhbHVlW2ldLCBwYXRoLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoKSB7XG4gICAgICAgIC8vIEFuIG9iamVjdC4gUmVjdXJzZSBmdXJ0aGVyLlxuICAgICAgICBkZWVwR2V0KHZhbHVlLCBwYXRoLCBpbmRleCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAoc2luY2UgcGF0aCB1c2VkIHRvIGJlIGEgc3RyaW5nKVxuICBkZWVwR2V0KG9iaiwgaXNTdHJpbmcocGF0aCkgPyBwYXRoLnNwbGl0KCcuJykgOiBwYXRoLCAwKTtcblxuICByZXR1cm4gYXJyID8gbGlzdCA6IGxpc3RbMF1cbn1cblxuY29uc3QgTWF0Y2hPcHRpb25zID0ge1xuICAvLyBXaGV0aGVyIHRoZSBtYXRjaGVzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IHNldC4gV2hlbiBgdHJ1ZWAsIGVhY2ggcmVjb3JkIGluIHRoZSByZXN1bHRcbiAgLy8gc2V0IHdpbGwgaW5jbHVkZSB0aGUgaW5kaWNlcyBvZiB0aGUgbWF0Y2hlZCBjaGFyYWN0ZXJzLlxuICAvLyBUaGVzZSBjYW4gY29uc2VxdWVudGx5IGJlIHVzZWQgZm9yIGhpZ2hsaWdodGluZyBwdXJwb3Nlcy5cbiAgaW5jbHVkZU1hdGNoZXM6IGZhbHNlLFxuICAvLyBXaGVuIGB0cnVlYCwgdGhlIG1hdGNoaW5nIGZ1bmN0aW9uIHdpbGwgY29udGludWUgdG8gdGhlIGVuZCBvZiBhIHNlYXJjaCBwYXR0ZXJuIGV2ZW4gaWZcbiAgLy8gYSBwZXJmZWN0IG1hdGNoIGhhcyBhbHJlYWR5IGJlZW4gbG9jYXRlZCBpbiB0aGUgc3RyaW5nLlxuICBmaW5kQWxsTWF0Y2hlczogZmFsc2UsXG4gIC8vIE1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIG1hdGNoZWQgYmVmb3JlIGEgcmVzdWx0IGlzIGNvbnNpZGVyZWQgYSBtYXRjaFxuICBtaW5NYXRjaENoYXJMZW5ndGg6IDFcbn07XG5cbmNvbnN0IEJhc2ljT3B0aW9ucyA9IHtcbiAgLy8gV2hlbiBgdHJ1ZWAsIHRoZSBhbGdvcml0aG0gY29udGludWVzIHNlYXJjaGluZyB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBldmVuIGlmIGEgcGVyZmVjdFxuICAvLyBtYXRjaCBpcyBmb3VuZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc2FtZSBpbnB1dC5cbiAgaXNDYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgLy8gV2hlbiB0cnVlLCB0aGUgbWF0Y2hpbmcgZnVuY3Rpb24gd2lsbCBjb250aW51ZSB0byB0aGUgZW5kIG9mIGEgc2VhcmNoIHBhdHRlcm4gZXZlbiBpZlxuICBpbmNsdWRlU2NvcmU6IGZhbHNlLFxuICAvLyBMaXN0IG9mIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIHNlYXJjaGVkLiBUaGlzIGFsc28gc3VwcG9ydHMgbmVzdGVkIHByb3BlcnRpZXMuXG4gIGtleXM6IFtdLFxuICAvLyBXaGV0aGVyIHRvIHNvcnQgdGhlIHJlc3VsdCBsaXN0LCBieSBzY29yZVxuICBzaG91bGRTb3J0OiB0cnVlLFxuICAvLyBEZWZhdWx0IHNvcnQgZnVuY3Rpb246IHNvcnQgYnkgYXNjZW5kaW5nIHNjb3JlLCBhc2NlbmRpbmcgaW5kZXhcbiAgc29ydEZuOiAoYSwgYikgPT5cbiAgICBhLnNjb3JlID09PSBiLnNjb3JlID8gKGEuaWR4IDwgYi5pZHggPyAtMSA6IDEpIDogYS5zY29yZSA8IGIuc2NvcmUgPyAtMSA6IDFcbn07XG5cbmNvbnN0IEZ1enp5T3B0aW9ucyA9IHtcbiAgLy8gQXBwcm94aW1hdGVseSB3aGVyZSBpbiB0aGUgdGV4dCBpcyB0aGUgcGF0dGVybiBleHBlY3RlZCB0byBiZSBmb3VuZD9cbiAgbG9jYXRpb246IDAsXG4gIC8vIEF0IHdoYXQgcG9pbnQgZG9lcyB0aGUgbWF0Y2ggYWxnb3JpdGhtIGdpdmUgdXAuIEEgdGhyZXNob2xkIG9mICcwLjAnIHJlcXVpcmVzIGEgcGVyZmVjdCBtYXRjaFxuICAvLyAob2YgYm90aCBsZXR0ZXJzIGFuZCBsb2NhdGlvbiksIGEgdGhyZXNob2xkIG9mICcxLjAnIHdvdWxkIG1hdGNoIGFueXRoaW5nLlxuICB0aHJlc2hvbGQ6IDAuNixcbiAgLy8gRGV0ZXJtaW5lcyBob3cgY2xvc2UgdGhlIG1hdGNoIG11c3QgYmUgdG8gdGhlIGZ1enp5IGxvY2F0aW9uIChzcGVjaWZpZWQgYWJvdmUpLlxuICAvLyBBbiBleGFjdCBsZXR0ZXIgbWF0Y2ggd2hpY2ggaXMgJ2Rpc3RhbmNlJyBjaGFyYWN0ZXJzIGF3YXkgZnJvbSB0aGUgZnV6enkgbG9jYXRpb25cbiAgLy8gd291bGQgc2NvcmUgYXMgYSBjb21wbGV0ZSBtaXNtYXRjaC4gQSBkaXN0YW5jZSBvZiAnMCcgcmVxdWlyZXMgdGhlIG1hdGNoIGJlIGF0XG4gIC8vIHRoZSBleGFjdCBsb2NhdGlvbiBzcGVjaWZpZWQsIGEgdGhyZXNob2xkIG9mICcxMDAwJyB3b3VsZCByZXF1aXJlIGEgcGVyZmVjdCBtYXRjaFxuICAvLyB0byBiZSB3aXRoaW4gODAwIGNoYXJhY3RlcnMgb2YgdGhlIGZ1enp5IGxvY2F0aW9uIHRvIGJlIGZvdW5kIHVzaW5nIGEgMC44IHRocmVzaG9sZC5cbiAgZGlzdGFuY2U6IDEwMFxufTtcblxuY29uc3QgQWR2YW5jZWRPcHRpb25zID0ge1xuICAvLyBXaGVuIGB0cnVlYCwgaXQgZW5hYmxlcyB0aGUgdXNlIG9mIHVuaXgtbGlrZSBzZWFyY2ggY29tbWFuZHNcbiAgdXNlRXh0ZW5kZWRTZWFyY2g6IGZhbHNlLFxuICAvLyBUaGUgZ2V0IGZ1bmN0aW9uIHRvIHVzZSB3aGVuIGZldGNoaW5nIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuXG4gIC8vIFRoZSBkZWZhdWx0IHdpbGwgc2VhcmNoIG5lc3RlZCBwYXRocyAqaWUgZm9vLmJhci5iYXoqXG4gIGdldEZuOiBnZXQsXG4gIC8vIFdoZW4gYHRydWVgLCBzZWFyY2ggd2lsbCBpZ25vcmUgYGxvY2F0aW9uYCBhbmQgYGRpc3RhbmNlYCwgc28gaXQgd29uJ3QgbWF0dGVyXG4gIC8vIHdoZXJlIGluIHRoZSBzdHJpbmcgdGhlIHBhdHRlcm4gYXBwZWFycy5cbiAgLy8gTW9yZSBpbmZvOiBodHRwczovL2Z1c2Vqcy5pby9jb25jZXB0cy9zY29yaW5nLXRoZW9yeS5odG1sI2Z1enppbmVzcy1zY29yZVxuICBpZ25vcmVMb2NhdGlvbjogZmFsc2UsXG4gIC8vIFdoZW4gYHRydWVgLCB0aGUgY2FsY3VsYXRpb24gZm9yIHRoZSByZWxldmFuY2Ugc2NvcmUgKHVzZWQgZm9yIHNvcnRpbmcpIHdpbGxcbiAgLy8gaWdub3JlIHRoZSBmaWVsZC1sZW5ndGggbm9ybS5cbiAgLy8gTW9yZSBpbmZvOiBodHRwczovL2Z1c2Vqcy5pby9jb25jZXB0cy9zY29yaW5nLXRoZW9yeS5odG1sI2ZpZWxkLWxlbmd0aC1ub3JtXG4gIGlnbm9yZUZpZWxkTm9ybTogZmFsc2Vcbn07XG5cbnZhciBDb25maWcgPSB7XG4gIC4uLkJhc2ljT3B0aW9ucyxcbiAgLi4uTWF0Y2hPcHRpb25zLFxuICAuLi5GdXp6eU9wdGlvbnMsXG4gIC4uLkFkdmFuY2VkT3B0aW9uc1xufTtcblxuY29uc3QgU1BBQ0UgPSAvW14gXSsvZztcblxuLy8gRmllbGQtbGVuZ3RoIG5vcm06IHRoZSBzaG9ydGVyIHRoZSBmaWVsZCwgdGhlIGhpZ2hlciB0aGUgd2VpZ2h0LlxuLy8gU2V0IHRvIDMgZGVjaW1hbHMgdG8gcmVkdWNlIGluZGV4IHNpemUuXG5mdW5jdGlvbiBub3JtKG1hbnRpc3NhID0gMykge1xuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbSA9IE1hdGgucG93KDEwLCBtYW50aXNzYSk7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQodmFsdWUpIHtcbiAgICAgIGNvbnN0IG51bVRva2VucyA9IHZhbHVlLm1hdGNoKFNQQUNFKS5sZW5ndGg7XG5cbiAgICAgIGlmIChjYWNoZS5oYXMobnVtVG9rZW5zKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG51bVRva2VucylcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybSA9IDEgLyBNYXRoLnNxcnQobnVtVG9rZW5zKTtcblxuICAgICAgLy8gSW4gcGxhY2Ugb2YgYHRvRml4ZWQobWFudGlzc2EpYCwgZm9yIGZhc3RlciBjb21wdXRhdGlvblxuICAgICAgY29uc3QgbiA9IHBhcnNlRmxvYXQoTWF0aC5yb3VuZChub3JtICogbSkgLyBtKTtcblxuICAgICAgY2FjaGUuc2V0KG51bVRva2Vucywgbik7XG5cbiAgICAgIHJldHVybiBuXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEZ1c2VJbmRleCB7XG4gIGNvbnN0cnVjdG9yKHsgZ2V0Rm4gPSBDb25maWcuZ2V0Rm4gfSA9IHt9KSB7XG4gICAgdGhpcy5ub3JtID0gbm9ybSgzKTtcbiAgICB0aGlzLmdldEZuID0gZ2V0Rm47XG4gICAgdGhpcy5pc0NyZWF0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuc2V0SW5kZXhSZWNvcmRzKCk7XG4gIH1cbiAgc2V0U291cmNlcyhkb2NzID0gW10pIHtcbiAgICB0aGlzLmRvY3MgPSBkb2NzO1xuICB9XG4gIHNldEluZGV4UmVjb3JkcyhyZWNvcmRzID0gW10pIHtcbiAgICB0aGlzLnJlY29yZHMgPSByZWNvcmRzO1xuICB9XG4gIHNldEtleXMoa2V5cyA9IFtdKSB7XG4gICAgdGhpcy5rZXlzID0ga2V5cztcbiAgICB0aGlzLl9rZXlzTWFwID0ge307XG4gICAga2V5cy5mb3JFYWNoKChrZXksIGlkeCkgPT4ge1xuICAgICAgdGhpcy5fa2V5c01hcFtrZXkuaWRdID0gaWR4O1xuICAgIH0pO1xuICB9XG4gIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0NyZWF0ZWQgfHwgIXRoaXMuZG9jcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuaXNDcmVhdGVkID0gdHJ1ZTtcblxuICAgIC8vIExpc3QgaXMgQXJyYXk8U3RyaW5nPlxuICAgIGlmIChpc1N0cmluZyh0aGlzLmRvY3NbMF0pKSB7XG4gICAgICB0aGlzLmRvY3MuZm9yRWFjaCgoZG9jLCBkb2NJbmRleCkgPT4ge1xuICAgICAgICB0aGlzLl9hZGRTdHJpbmcoZG9jLCBkb2NJbmRleCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdCBpcyBBcnJheTxPYmplY3Q+XG4gICAgICB0aGlzLmRvY3MuZm9yRWFjaCgoZG9jLCBkb2NJbmRleCkgPT4ge1xuICAgICAgICB0aGlzLl9hZGRPYmplY3QoZG9jLCBkb2NJbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm5vcm0uY2xlYXIoKTtcbiAgfVxuICAvLyBBZGRzIGEgZG9jIHRvIHRoZSBlbmQgb2YgdGhlIGluZGV4XG4gIGFkZChkb2MpIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLnNpemUoKTtcblxuICAgIGlmIChpc1N0cmluZyhkb2MpKSB7XG4gICAgICB0aGlzLl9hZGRTdHJpbmcoZG9jLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRPYmplY3QoZG9jLCBpZHgpO1xuICAgIH1cbiAgfVxuICAvLyBSZW1vdmVzIHRoZSBkb2MgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBvZiB0aGUgaW5kZXhcbiAgcmVtb3ZlQXQoaWR4KSB7XG4gICAgdGhpcy5yZWNvcmRzLnNwbGljZShpZHgsIDEpO1xuXG4gICAgLy8gQ2hhbmdlIHJlZiBpbmRleCBvZiBldmVyeSBzdWJzcXVlbnQgZG9jXG4gICAgZm9yIChsZXQgaSA9IGlkeCwgbGVuID0gdGhpcy5zaXplKCk7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgdGhpcy5yZWNvcmRzW2ldLmkgLT0gMTtcbiAgICB9XG4gIH1cbiAgZ2V0VmFsdWVGb3JJdGVtQXRLZXlJZChpdGVtLCBrZXlJZCkge1xuICAgIHJldHVybiBpdGVtW3RoaXMuX2tleXNNYXBba2V5SWRdXVxuICB9XG4gIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkcy5sZW5ndGhcbiAgfVxuICBfYWRkU3RyaW5nKGRvYywgZG9jSW5kZXgpIHtcbiAgICBpZiAoIWlzRGVmaW5lZChkb2MpIHx8IGlzQmxhbmsoZG9jKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJlY29yZCA9IHtcbiAgICAgIHY6IGRvYyxcbiAgICAgIGk6IGRvY0luZGV4LFxuICAgICAgbjogdGhpcy5ub3JtLmdldChkb2MpXG4gICAgfTtcblxuICAgIHRoaXMucmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gIH1cbiAgX2FkZE9iamVjdChkb2MsIGRvY0luZGV4KSB7XG4gICAgbGV0IHJlY29yZCA9IHsgaTogZG9jSW5kZXgsICQ6IHt9IH07XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgZXZlcnkga2V5IChpLmUsIHBhdGgpLCBhbmQgZmV0Y2ggdGhlIHZhbHVlIGF0IHRoYXQga2V5XG4gICAgdGhpcy5rZXlzLmZvckVhY2goKGtleSwga2V5SW5kZXgpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGtleSlcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0Rm4oZG9jLCBrZXkucGF0aCk7XG5cbiAgICAgIGlmICghaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGxldCBzdWJSZWNvcmRzID0gW107XG4gICAgICAgIGNvbnN0IHN0YWNrID0gW3sgbmVzdGVkQXJySW5kZXg6IC0xLCB2YWx1ZSB9XTtcblxuICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgeyBuZXN0ZWRBcnJJbmRleCwgdmFsdWUgfSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICAgICAgaWYgKCFpc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgIWlzQmxhbmsodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3ViUmVjb3JkID0ge1xuICAgICAgICAgICAgICB2OiB2YWx1ZSxcbiAgICAgICAgICAgICAgaTogbmVzdGVkQXJySW5kZXgsXG4gICAgICAgICAgICAgIG46IHRoaXMubm9ybS5nZXQodmFsdWUpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzdWJSZWNvcmRzLnB1c2goc3ViUmVjb3JkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtLCBrKSA9PiB7XG4gICAgICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIG5lc3RlZEFyckluZGV4OiBrLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlY29yZC4kW2tleUluZGV4XSA9IHN1YlJlY29yZHM7XG4gICAgICB9IGVsc2UgaWYgKCFpc0JsYW5rKHZhbHVlKSkge1xuICAgICAgICBsZXQgc3ViUmVjb3JkID0ge1xuICAgICAgICAgIHY6IHZhbHVlLFxuICAgICAgICAgIG46IHRoaXMubm9ybS5nZXQodmFsdWUpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmVjb3JkLiRba2V5SW5kZXhdID0gc3ViUmVjb3JkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleXM6IHRoaXMua2V5cyxcbiAgICAgIHJlY29yZHM6IHRoaXMucmVjb3Jkc1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVJbmRleChrZXlzLCBkb2NzLCB7IGdldEZuID0gQ29uZmlnLmdldEZuIH0gPSB7fSkge1xuICBjb25zdCBteUluZGV4ID0gbmV3IEZ1c2VJbmRleCh7IGdldEZuIH0pO1xuICBteUluZGV4LnNldEtleXMoa2V5cy5tYXAoY3JlYXRlS2V5KSk7XG4gIG15SW5kZXguc2V0U291cmNlcyhkb2NzKTtcbiAgbXlJbmRleC5jcmVhdGUoKTtcbiAgcmV0dXJuIG15SW5kZXhcbn1cblxuZnVuY3Rpb24gcGFyc2VJbmRleChkYXRhLCB7IGdldEZuID0gQ29uZmlnLmdldEZuIH0gPSB7fSkge1xuICBjb25zdCB7IGtleXMsIHJlY29yZHMgfSA9IGRhdGE7XG4gIGNvbnN0IG15SW5kZXggPSBuZXcgRnVzZUluZGV4KHsgZ2V0Rm4gfSk7XG4gIG15SW5kZXguc2V0S2V5cyhrZXlzKTtcbiAgbXlJbmRleC5zZXRJbmRleFJlY29yZHMocmVjb3Jkcyk7XG4gIHJldHVybiBteUluZGV4XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTY29yZShcbiAgcGF0dGVybixcbiAge1xuICAgIGVycm9ycyA9IDAsXG4gICAgY3VycmVudExvY2F0aW9uID0gMCxcbiAgICBleHBlY3RlZExvY2F0aW9uID0gMCxcbiAgICBkaXN0YW5jZSA9IENvbmZpZy5kaXN0YW5jZSxcbiAgICBpZ25vcmVMb2NhdGlvbiA9IENvbmZpZy5pZ25vcmVMb2NhdGlvblxuICB9ID0ge31cbikge1xuICBjb25zdCBhY2N1cmFjeSA9IGVycm9ycyAvIHBhdHRlcm4ubGVuZ3RoO1xuXG4gIGlmIChpZ25vcmVMb2NhdGlvbikge1xuICAgIHJldHVybiBhY2N1cmFjeVxuICB9XG5cbiAgY29uc3QgcHJveGltaXR5ID0gTWF0aC5hYnMoZXhwZWN0ZWRMb2NhdGlvbiAtIGN1cnJlbnRMb2NhdGlvbik7XG5cbiAgaWYgKCFkaXN0YW5jZSkge1xuICAgIC8vIERvZGdlIGRpdmlkZSBieSB6ZXJvIGVycm9yLlxuICAgIHJldHVybiBwcm94aW1pdHkgPyAxLjAgOiBhY2N1cmFjeVxuICB9XG5cbiAgcmV0dXJuIGFjY3VyYWN5ICsgcHJveGltaXR5IC8gZGlzdGFuY2Vcbn1cblxuZnVuY3Rpb24gY29udmVydE1hc2tUb0luZGljZXMoXG4gIG1hdGNobWFzayA9IFtdLFxuICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoXG4pIHtcbiAgbGV0IGluZGljZXMgPSBbXTtcbiAgbGV0IHN0YXJ0ID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IGkgPSAwO1xuXG4gIGZvciAobGV0IGxlbiA9IG1hdGNobWFzay5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgIGxldCBtYXRjaCA9IG1hdGNobWFza1tpXTtcbiAgICBpZiAobWF0Y2ggJiYgc3RhcnQgPT09IC0xKSB7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIGlmICghbWF0Y2ggJiYgc3RhcnQgIT09IC0xKSB7XG4gICAgICBlbmQgPSBpIC0gMTtcbiAgICAgIGlmIChlbmQgLSBzdGFydCArIDEgPj0gbWluTWF0Y2hDaGFyTGVuZ3RoKSB7XG4gICAgICAgIGluZGljZXMucHVzaChbc3RhcnQsIGVuZF0pO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAtMTtcbiAgICB9XG4gIH1cblxuICAvLyAoaS0xIC0gc3RhcnQpICsgMSA9PiBpIC0gc3RhcnRcbiAgaWYgKG1hdGNobWFza1tpIC0gMV0gJiYgaSAtIHN0YXJ0ID49IG1pbk1hdGNoQ2hhckxlbmd0aCkge1xuICAgIGluZGljZXMucHVzaChbc3RhcnQsIGkgLSAxXSk7XG4gIH1cblxuICByZXR1cm4gaW5kaWNlc1xufVxuXG4vLyBNYWNoaW5lIHdvcmQgc2l6ZVxuY29uc3QgTUFYX0JJVFMgPSAzMjtcblxuZnVuY3Rpb24gc2VhcmNoKFxuICB0ZXh0LFxuICBwYXR0ZXJuLFxuICBwYXR0ZXJuQWxwaGFiZXQsXG4gIHtcbiAgICBsb2NhdGlvbiA9IENvbmZpZy5sb2NhdGlvbixcbiAgICBkaXN0YW5jZSA9IENvbmZpZy5kaXN0YW5jZSxcbiAgICB0aHJlc2hvbGQgPSBDb25maWcudGhyZXNob2xkLFxuICAgIGZpbmRBbGxNYXRjaGVzID0gQ29uZmlnLmZpbmRBbGxNYXRjaGVzLFxuICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgfSA9IHt9XG4pIHtcbiAgaWYgKHBhdHRlcm4ubGVuZ3RoID4gTUFYX0JJVFMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoUEFUVEVSTl9MRU5HVEhfVE9PX0xBUkdFKE1BWF9CSVRTKSlcbiAgfVxuXG4gIGNvbnN0IHBhdHRlcm5MZW4gPSBwYXR0ZXJuLmxlbmd0aDtcbiAgLy8gU2V0IHN0YXJ0aW5nIGxvY2F0aW9uIGF0IGJlZ2lubmluZyB0ZXh0IGFuZCBpbml0aWFsaXplIHRoZSBhbHBoYWJldC5cbiAgY29uc3QgdGV4dExlbiA9IHRleHQubGVuZ3RoO1xuICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlbiBsb2NhdGlvbiA+IHRleHQubGVuZ3RoXG4gIGNvbnN0IGV4cGVjdGVkTG9jYXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsb2NhdGlvbiwgdGV4dExlbikpO1xuICAvLyBIaWdoZXN0IHNjb3JlIGJleW9uZCB3aGljaCB3ZSBnaXZlIHVwLlxuICBsZXQgY3VycmVudFRocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgLy8gSXMgdGhlcmUgYSBuZWFyYnkgZXhhY3QgbWF0Y2g/IChzcGVlZHVwKVxuICBsZXQgYmVzdExvY2F0aW9uID0gZXhwZWN0ZWRMb2NhdGlvbjtcblxuICAvLyBQZXJmb3JtYW5jZTogb25seSBjb21wdXRlciBtYXRjaGVzIHdoZW4gdGhlIG1pbk1hdGNoQ2hhckxlbmd0aCA+IDFcbiAgLy8gT1IgaWYgYGluY2x1ZGVNYXRjaGVzYCBpcyB0cnVlLlxuICBjb25zdCBjb21wdXRlTWF0Y2hlcyA9IG1pbk1hdGNoQ2hhckxlbmd0aCA+IDEgfHwgaW5jbHVkZU1hdGNoZXM7XG4gIC8vIEEgbWFzayBvZiB0aGUgbWF0Y2hlcywgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGluZGljZXNcbiAgY29uc3QgbWF0Y2hNYXNrID0gY29tcHV0ZU1hdGNoZXMgPyBBcnJheSh0ZXh0TGVuKSA6IFtdO1xuXG4gIGxldCBpbmRleDtcblxuICAvLyBHZXQgYWxsIGV4YWN0IG1hdGNoZXMsIGhlcmUgZm9yIHNwZWVkIHVwXG4gIHdoaWxlICgoaW5kZXggPSB0ZXh0LmluZGV4T2YocGF0dGVybiwgYmVzdExvY2F0aW9uKSkgPiAtMSkge1xuICAgIGxldCBzY29yZSA9IGNvbXB1dGVTY29yZShwYXR0ZXJuLCB7XG4gICAgICBjdXJyZW50TG9jYXRpb246IGluZGV4LFxuICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgIGRpc3RhbmNlLFxuICAgICAgaWdub3JlTG9jYXRpb25cbiAgICB9KTtcblxuICAgIGN1cnJlbnRUaHJlc2hvbGQgPSBNYXRoLm1pbihzY29yZSwgY3VycmVudFRocmVzaG9sZCk7XG4gICAgYmVzdExvY2F0aW9uID0gaW5kZXggKyBwYXR0ZXJuTGVuO1xuXG4gICAgaWYgKGNvbXB1dGVNYXRjaGVzKSB7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICB3aGlsZSAoaSA8IHBhdHRlcm5MZW4pIHtcbiAgICAgICAgbWF0Y2hNYXNrW2luZGV4ICsgaV0gPSAxO1xuICAgICAgICBpICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgdGhlIGJlc3QgbG9jYXRpb25cbiAgYmVzdExvY2F0aW9uID0gLTE7XG5cbiAgbGV0IGxhc3RCaXRBcnIgPSBbXTtcbiAgbGV0IGZpbmFsU2NvcmUgPSAxO1xuICBsZXQgYmluTWF4ID0gcGF0dGVybkxlbiArIHRleHRMZW47XG5cbiAgY29uc3QgbWFzayA9IDEgPDwgKHBhdHRlcm5MZW4gLSAxKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdHRlcm5MZW47IGkgKz0gMSkge1xuICAgIC8vIFNjYW4gZm9yIHRoZSBiZXN0IG1hdGNoOyBlYWNoIGl0ZXJhdGlvbiBhbGxvd3MgZm9yIG9uZSBtb3JlIGVycm9yLlxuICAgIC8vIFJ1biBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIGhvdyBmYXIgZnJvbSB0aGUgbWF0Y2ggbG9jYXRpb24gd2UgY2FuIHN0cmF5XG4gICAgLy8gYXQgdGhpcyBlcnJvciBsZXZlbC5cbiAgICBsZXQgYmluTWluID0gMDtcbiAgICBsZXQgYmluTWlkID0gYmluTWF4O1xuXG4gICAgd2hpbGUgKGJpbk1pbiA8IGJpbk1pZCkge1xuICAgICAgY29uc3Qgc2NvcmUgPSBjb21wdXRlU2NvcmUocGF0dGVybiwge1xuICAgICAgICBlcnJvcnM6IGksXG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjogZXhwZWN0ZWRMb2NhdGlvbiArIGJpbk1pZCxcbiAgICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKHNjb3JlIDw9IGN1cnJlbnRUaHJlc2hvbGQpIHtcbiAgICAgICAgYmluTWluID0gYmluTWlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmluTWF4ID0gYmluTWlkO1xuICAgICAgfVxuXG4gICAgICBiaW5NaWQgPSBNYXRoLmZsb29yKChiaW5NYXggLSBiaW5NaW4pIC8gMiArIGJpbk1pbik7XG4gICAgfVxuXG4gICAgLy8gVXNlIHRoZSByZXN1bHQgZnJvbSB0aGlzIGl0ZXJhdGlvbiBhcyB0aGUgbWF4aW11bSBmb3IgdGhlIG5leHQuXG4gICAgYmluTWF4ID0gYmluTWlkO1xuXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMSwgZXhwZWN0ZWRMb2NhdGlvbiAtIGJpbk1pZCArIDEpO1xuICAgIGxldCBmaW5pc2ggPSBmaW5kQWxsTWF0Y2hlc1xuICAgICAgPyB0ZXh0TGVuXG4gICAgICA6IE1hdGgubWluKGV4cGVjdGVkTG9jYXRpb24gKyBiaW5NaWQsIHRleHRMZW4pICsgcGF0dGVybkxlbjtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGJpdCBhcnJheVxuICAgIGxldCBiaXRBcnIgPSBBcnJheShmaW5pc2ggKyAyKTtcblxuICAgIGJpdEFycltmaW5pc2ggKyAxXSA9ICgxIDw8IGkpIC0gMTtcblxuICAgIGZvciAobGV0IGogPSBmaW5pc2g7IGogPj0gc3RhcnQ7IGogLT0gMSkge1xuICAgICAgbGV0IGN1cnJlbnRMb2NhdGlvbiA9IGogLSAxO1xuICAgICAgbGV0IGNoYXJNYXRjaCA9IHBhdHRlcm5BbHBoYWJldFt0ZXh0LmNoYXJBdChjdXJyZW50TG9jYXRpb24pXTtcblxuICAgICAgaWYgKGNvbXB1dGVNYXRjaGVzKSB7XG4gICAgICAgIC8vIFNwZWVkIHVwOiBxdWljayBib29sIHRvIGludCBjb252ZXJzaW9uIChpLmUsIGBjaGFyTWF0Y2ggPyAxIDogMGApXG4gICAgICAgIG1hdGNoTWFza1tjdXJyZW50TG9jYXRpb25dID0gKyEhY2hhck1hdGNoO1xuICAgICAgfVxuXG4gICAgICAvLyBGaXJzdCBwYXNzOiBleGFjdCBtYXRjaFxuICAgICAgYml0QXJyW2pdID0gKChiaXRBcnJbaiArIDFdIDw8IDEpIHwgMSkgJiBjaGFyTWF0Y2g7XG5cbiAgICAgIC8vIFN1YnNlcXVlbnQgcGFzc2VzOiBmdXp6eSBtYXRjaFxuICAgICAgaWYgKGkpIHtcbiAgICAgICAgYml0QXJyW2pdIHw9XG4gICAgICAgICAgKChsYXN0Qml0QXJyW2ogKyAxXSB8IGxhc3RCaXRBcnJbal0pIDw8IDEpIHwgMSB8IGxhc3RCaXRBcnJbaiArIDFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoYml0QXJyW2pdICYgbWFzaykge1xuICAgICAgICBmaW5hbFNjb3JlID0gY29tcHV0ZVNjb3JlKHBhdHRlcm4sIHtcbiAgICAgICAgICBlcnJvcnM6IGksXG4gICAgICAgICAgY3VycmVudExvY2F0aW9uLFxuICAgICAgICAgIGV4cGVjdGVkTG9jYXRpb24sXG4gICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgaWdub3JlTG9jYXRpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVGhpcyBtYXRjaCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgYmV0dGVyIHRoYW4gYW55IGV4aXN0aW5nIG1hdGNoLlxuICAgICAgICAvLyBCdXQgY2hlY2sgYW55d2F5LlxuICAgICAgICBpZiAoZmluYWxTY29yZSA8PSBjdXJyZW50VGhyZXNob2xkKSB7XG4gICAgICAgICAgLy8gSW5kZWVkIGl0IGlzXG4gICAgICAgICAgY3VycmVudFRocmVzaG9sZCA9IGZpbmFsU2NvcmU7XG4gICAgICAgICAgYmVzdExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uO1xuXG4gICAgICAgICAgLy8gQWxyZWFkeSBwYXNzZWQgYGxvY2AsIGRvd25oaWxsIGZyb20gaGVyZSBvbiBpbi5cbiAgICAgICAgICBpZiAoYmVzdExvY2F0aW9uIDw9IGV4cGVjdGVkTG9jYXRpb24pIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gV2hlbiBwYXNzaW5nIGBiZXN0TG9jYXRpb25gLCBkb24ndCBleGNlZWQgb3VyIGN1cnJlbnQgZGlzdGFuY2UgZnJvbSBgZXhwZWN0ZWRMb2NhdGlvbmAuXG4gICAgICAgICAgc3RhcnQgPSBNYXRoLm1heCgxLCAyICogZXhwZWN0ZWRMb2NhdGlvbiAtIGJlc3RMb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBObyBob3BlIGZvciBhIChiZXR0ZXIpIG1hdGNoIGF0IGdyZWF0ZXIgZXJyb3IgbGV2ZWxzLlxuICAgIGNvbnN0IHNjb3JlID0gY29tcHV0ZVNjb3JlKHBhdHRlcm4sIHtcbiAgICAgIGVycm9yczogaSArIDEsXG4gICAgICBjdXJyZW50TG9jYXRpb246IGV4cGVjdGVkTG9jYXRpb24sXG4gICAgICBleHBlY3RlZExvY2F0aW9uLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH0pO1xuXG4gICAgaWYgKHNjb3JlID4gY3VycmVudFRocmVzaG9sZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBsYXN0Qml0QXJyID0gYml0QXJyO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIGlzTWF0Y2g6IGJlc3RMb2NhdGlvbiA+PSAwLFxuICAgIC8vIENvdW50IGV4YWN0IG1hdGNoZXMgKHRob3NlIHdpdGggYSBzY29yZSBvZiAwKSB0byBiZSBcImFsbW9zdFwiIGV4YWN0XG4gICAgc2NvcmU6IE1hdGgubWF4KDAuMDAxLCBmaW5hbFNjb3JlKVxuICB9O1xuXG4gIGlmIChjb21wdXRlTWF0Y2hlcykge1xuICAgIGNvbnN0IGluZGljZXMgPSBjb252ZXJ0TWFza1RvSW5kaWNlcyhtYXRjaE1hc2ssIG1pbk1hdGNoQ2hhckxlbmd0aCk7XG4gICAgaWYgKCFpbmRpY2VzLmxlbmd0aCkge1xuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICByZXN1bHQuaW5kaWNlcyA9IGluZGljZXM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXR0ZXJuQWxwaGFiZXQocGF0dGVybikge1xuICBsZXQgbWFzayA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBwYXR0ZXJuLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgY29uc3QgY2hhciA9IHBhdHRlcm4uY2hhckF0KGkpO1xuICAgIG1hc2tbY2hhcl0gPSAobWFza1tjaGFyXSB8fCAwKSB8ICgxIDw8IChsZW4gLSBpIC0gMSkpO1xuICB9XG5cbiAgcmV0dXJuIG1hc2tcbn1cblxuY2xhc3MgQml0YXBTZWFyY2gge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYXR0ZXJuLFxuICAgIHtcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgbG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH07XG5cbiAgICB0aGlzLnBhdHRlcm4gPSBpc0Nhc2VTZW5zaXRpdmUgPyBwYXR0ZXJuIDogcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5jaHVua3MgPSBbXTtcblxuICAgIGlmICghdGhpcy5wYXR0ZXJuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWRkQ2h1bmsgPSAocGF0dGVybiwgc3RhcnRJbmRleCkgPT4ge1xuICAgICAgdGhpcy5jaHVua3MucHVzaCh7XG4gICAgICAgIHBhdHRlcm4sXG4gICAgICAgIGFscGhhYmV0OiBjcmVhdGVQYXR0ZXJuQWxwaGFiZXQocGF0dGVybiksXG4gICAgICAgIHN0YXJ0SW5kZXhcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBsZW4gPSB0aGlzLnBhdHRlcm4ubGVuZ3RoO1xuXG4gICAgaWYgKGxlbiA+IE1BWF9CSVRTKSB7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBjb25zdCByZW1haW5kZXIgPSBsZW4gJSBNQVhfQklUUztcbiAgICAgIGNvbnN0IGVuZCA9IGxlbiAtIHJlbWFpbmRlcjtcblxuICAgICAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICAgICAgYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihpLCBNQVhfQklUUyksIGkpO1xuICAgICAgICBpICs9IE1BWF9CSVRTO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVtYWluZGVyKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBsZW4gLSBNQVhfQklUUztcbiAgICAgICAgYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihzdGFydEluZGV4KSwgc3RhcnRJbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZENodW5rKHRoaXMucGF0dGVybiwgMCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoSW4odGV4dCkge1xuICAgIGNvbnN0IHsgaXNDYXNlU2Vuc2l0aXZlLCBpbmNsdWRlTWF0Y2hlcyB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgaWYgKCFpc0Nhc2VTZW5zaXRpdmUpIHtcbiAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRXhhY3QgbWF0Y2hcbiAgICBpZiAodGhpcy5wYXR0ZXJuID09PSB0ZXh0KSB7XG4gICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICBpc01hdGNoOiB0cnVlLFxuICAgICAgICBzY29yZTogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICAgIHJlc3VsdC5pbmRpY2VzID0gW1swLCB0ZXh0Lmxlbmd0aCAtIDFdXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgdXNlIEJpdGFwIGFsZ29yaXRobVxuICAgIGNvbnN0IHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCxcbiAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGxldCBhbGxJbmRpY2VzID0gW107XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAwO1xuICAgIGxldCBoYXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgICB0aGlzLmNodW5rcy5mb3JFYWNoKCh7IHBhdHRlcm4sIGFscGhhYmV0LCBzdGFydEluZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaCh0ZXh0LCBwYXR0ZXJuLCBhbHBoYWJldCwge1xuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24gKyBzdGFydEluZGV4LFxuICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgdGhyZXNob2xkLFxuICAgICAgICBmaW5kQWxsTWF0Y2hlcyxcbiAgICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgICAgaWdub3JlTG9jYXRpb25cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBoYXNNYXRjaGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdG90YWxTY29yZSArPSBzY29yZTtcblxuICAgICAgaWYgKGlzTWF0Y2ggJiYgaW5kaWNlcykge1xuICAgICAgICBhbGxJbmRpY2VzID0gWy4uLmFsbEluZGljZXMsIC4uLmluZGljZXNdO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIGlzTWF0Y2g6IGhhc01hdGNoZXMsXG4gICAgICBzY29yZTogaGFzTWF0Y2hlcyA/IHRvdGFsU2NvcmUgLyB0aGlzLmNodW5rcy5sZW5ndGggOiAxXG4gICAgfTtcblxuICAgIGlmIChoYXNNYXRjaGVzICYmIGluY2x1ZGVNYXRjaGVzKSB7XG4gICAgICByZXN1bHQuaW5kaWNlcyA9IGFsbEluZGljZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmNsYXNzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG4gIHN0YXRpYyBpc011bHRpTWF0Y2gocGF0dGVybikge1xuICAgIHJldHVybiBnZXRNYXRjaChwYXR0ZXJuLCB0aGlzLm11bHRpUmVnZXgpXG4gIH1cbiAgc3RhdGljIGlzU2luZ2xlTWF0Y2gocGF0dGVybikge1xuICAgIHJldHVybiBnZXRNYXRjaChwYXR0ZXJuLCB0aGlzLnNpbmdsZVJlZ2V4KVxuICB9XG4gIHNlYXJjaCgvKnRleHQqLykge31cbn1cblxuZnVuY3Rpb24gZ2V0TWF0Y2gocGF0dGVybiwgZXhwKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBwYXR0ZXJuLm1hdGNoKGV4cCk7XG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlc1sxXSA6IG51bGxcbn1cblxuLy8gVG9rZW46ICdmaWxlXG5cbmNsYXNzIEV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXj1cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL149KC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dCA9PT0gdGhpcy5wYXR0ZXJuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogWzAsIHRoaXMucGF0dGVybi5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogIWZpcmVcblxuY2xhc3MgSW52ZXJzZUV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW52ZXJzZS1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eIVwiKC4qKVwiJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiEoLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGV4dC5pbmRleE9mKHRoaXMucGF0dGVybik7XG4gICAgY29uc3QgaXNNYXRjaCA9IGluZGV4ID09PSAtMTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0ZXh0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbi8vIFRva2VuOiBeZmlsZVxuXG5jbGFzcyBQcmVmaXhFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ3ByZWZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXFxeXCIoLiopXCIkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXFxeKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dC5zdGFydHNXaXRoKHRoaXMucGF0dGVybik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNNYXRjaCxcbiAgICAgIHNjb3JlOiBpc01hdGNoID8gMCA6IDEsXG4gICAgICBpbmRpY2VzOiBbMCwgdGhpcy5wYXR0ZXJuLmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbi8vIFRva2VuOiAhXmZpcmVcblxuY2xhc3MgSW52ZXJzZVByZWZpeEV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW52ZXJzZS1wcmVmaXgtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiFcXF5cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14hXFxeKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gIXRleHQuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogWzAsIHRleHQubGVuZ3RoIC0gMV1cbiAgICB9XG4gIH1cbn1cblxuLy8gVG9rZW46IC5maWxlJFxuXG5jbGFzcyBTdWZmaXhFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ3N1ZmZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXCIoLiopXCJcXCQkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eKC4qKVxcJCQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gdGV4dC5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogW3RleHQubGVuZ3RoIC0gdGhpcy5wYXR0ZXJuLmxlbmd0aCwgdGV4dC5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogIS5maWxlJFxuXG5jbGFzcyBJbnZlcnNlU3VmZml4RXhhY3RNYXRjaCBleHRlbmRzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICBzdXBlcihwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdpbnZlcnNlLXN1ZmZpeC1leGFjdCdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eIVwiKC4qKVwiXFwkJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiEoLiopXFwkJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSAhdGV4dC5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0ZXh0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEZ1enp5TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYXR0ZXJuLFxuICAgIHtcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb25cbiAgICB9ID0ge31cbiAgKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gICAgdGhpcy5fYml0YXBTZWFyY2ggPSBuZXcgQml0YXBTZWFyY2gocGF0dGVybiwge1xuICAgICAgbG9jYXRpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpc0Nhc2VTZW5zaXRpdmUsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2Z1enp5J1xuICB9XG4gIHN0YXRpYyBnZXQgbXVsdGlSZWdleCgpIHtcbiAgICByZXR1cm4gL15cIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14oLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIHJldHVybiB0aGlzLl9iaXRhcFNlYXJjaC5zZWFyY2hJbih0ZXh0KVxuICB9XG59XG5cbi8vIFRva2VuOiAnZmlsZVxuXG5jbGFzcyBJbmNsdWRlTWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW5jbHVkZSdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eJ1wiKC4qKVwiJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXicoLiopJC9cbiAgfVxuICBzZWFyY2godGV4dCkge1xuICAgIGxldCBsb2NhdGlvbiA9IDA7XG4gICAgbGV0IGluZGV4O1xuXG4gICAgY29uc3QgaW5kaWNlcyA9IFtdO1xuICAgIGNvbnN0IHBhdHRlcm5MZW4gPSB0aGlzLnBhdHRlcm4ubGVuZ3RoO1xuXG4gICAgLy8gR2V0IGFsbCBleGFjdCBtYXRjaGVzXG4gICAgd2hpbGUgKChpbmRleCA9IHRleHQuaW5kZXhPZih0aGlzLnBhdHRlcm4sIGxvY2F0aW9uKSkgPiAtMSkge1xuICAgICAgbG9jYXRpb24gPSBpbmRleCArIHBhdHRlcm5MZW47XG4gICAgICBpbmRpY2VzLnB1c2goW2luZGV4LCBsb2NhdGlvbiAtIDFdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc01hdGNoID0gISFpbmRpY2VzLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXNcbiAgICB9XG4gIH1cbn1cblxuLy8g4p2XT3JkZXIgaXMgaW1wb3J0YW50LiBETyBOT1QgQ0hBTkdFLlxuY29uc3Qgc2VhcmNoZXJzID0gW1xuICBFeGFjdE1hdGNoLFxuICBJbmNsdWRlTWF0Y2gsXG4gIFByZWZpeEV4YWN0TWF0Y2gsXG4gIEludmVyc2VQcmVmaXhFeGFjdE1hdGNoLFxuICBJbnZlcnNlU3VmZml4RXhhY3RNYXRjaCxcbiAgU3VmZml4RXhhY3RNYXRjaCxcbiAgSW52ZXJzZUV4YWN0TWF0Y2gsXG4gIEZ1enp5TWF0Y2hcbl07XG5cbmNvbnN0IHNlYXJjaGVyc0xlbiA9IHNlYXJjaGVycy5sZW5ndGg7XG5cbi8vIFJlZ2V4IHRvIHNwbGl0IGJ5IHNwYWNlcywgYnV0IGtlZXAgYW55dGhpbmcgaW4gcXVvdGVzIHRvZ2V0aGVyXG5jb25zdCBTUEFDRV9SRSA9IC8gKyg/PShbXlxcXCJdKlxcXCJbXlxcXCJdKlxcXCIpKlteXFxcIl0qJCkvO1xuY29uc3QgT1JfVE9LRU4gPSAnfCc7XG5cbi8vIFJldHVybiBhIDJEIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWVyeSwgZm9yIHNpbXBsZXIgcGFyc2luZy5cbi8vIEV4YW1wbGU6XG4vLyBcIl5jb3JlIGdvJCB8IHJiJCB8IHB5JCB4eSRcIiA9PiBbW1wiXmNvcmVcIiwgXCJnbyRcIl0sIFtcInJiJFwiXSwgW1wicHkkXCIsIFwieHkkXCJdXVxuZnVuY3Rpb24gcGFyc2VRdWVyeShwYXR0ZXJuLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoT1JfVE9LRU4pLm1hcCgoaXRlbSkgPT4ge1xuICAgIGxldCBxdWVyeSA9IGl0ZW1cbiAgICAgIC50cmltKClcbiAgICAgIC5zcGxpdChTUEFDRV9SRSlcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gJiYgISFpdGVtLnRyaW0oKSk7XG5cbiAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBxdWVyeS5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgY29uc3QgcXVlcnlJdGVtID0gcXVlcnlbaV07XG5cbiAgICAgIC8vIDEuIEhhbmRsZSBtdWx0aXBsZSBxdWVyeSBtYXRjaCAoaS5lLCBvbmNlIHRoYXQgYXJlIHF1b3RlZCwgbGlrZSBgXCJoZWxsbyB3b3JsZFwiYClcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgbGV0IGlkeCA9IC0xO1xuICAgICAgd2hpbGUgKCFmb3VuZCAmJiArK2lkeCA8IHNlYXJjaGVyc0xlbikge1xuICAgICAgICBjb25zdCBzZWFyY2hlciA9IHNlYXJjaGVyc1tpZHhdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzZWFyY2hlci5pc011bHRpTWF0Y2gocXVlcnlJdGVtKTtcbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKG5ldyBzZWFyY2hlcih0b2tlbiwgb3B0aW9ucykpO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSGFuZGxlIHNpbmdsZSBxdWVyeSBtYXRjaGVzIChpLmUsIG9uY2UgdGhhdCBhcmUgKm5vdCogcXVvdGVkKVxuICAgICAgaWR4ID0gLTE7XG4gICAgICB3aGlsZSAoKytpZHggPCBzZWFyY2hlcnNMZW4pIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoZXIgPSBzZWFyY2hlcnNbaWR4XTtcbiAgICAgICAgbGV0IHRva2VuID0gc2VhcmNoZXIuaXNTaW5nbGVNYXRjaChxdWVyeUl0ZW0pO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2gobmV3IHNlYXJjaGVyKHRva2VuLCBvcHRpb25zKSk7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzXG4gIH0pXG59XG5cbi8vIFRoZXNlIGV4dGVuZGVkIG1hdGNoZXJzIGNhbiByZXR1cm4gYW4gYXJyYXkgb2YgbWF0Y2hlcywgYXMgb3Bwb3NlZFxuLy8gdG8gYSBzaW5nbCBtYXRjaFxuY29uc3QgTXVsdGlNYXRjaFNldCA9IG5ldyBTZXQoW0Z1enp5TWF0Y2gudHlwZSwgSW5jbHVkZU1hdGNoLnR5cGVdKTtcblxuLyoqXG4gKiBDb21tYW5kLWxpa2Ugc2VhcmNoaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogR2l2ZW4gbXVsdGlwbGUgc2VhcmNoIHRlcm1zIGRlbGltaXRlZCBieSBzcGFjZXMuZS5nLiBgXmpzY3JpcHQgLnB5dGhvbiQgcnVieSAhamF2YWAsXG4gKiBzZWFyY2ggaW4gYSBnaXZlbiB0ZXh0LlxuICpcbiAqIFNlYXJjaCBzeW50YXg6XG4gKlxuICogfCBUb2tlbiAgICAgICB8IE1hdGNoIHR5cGUgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBganNjcmlwdGAgICB8IGZ1enp5LW1hdGNoICAgICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBmdXp6eSBtYXRjaCBganNjcmlwdGAgICAgICAgfFxuICogfCBgPXNjaGVtZWAgICB8IGV4YWN0LW1hdGNoICAgICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBhcmUgYHNjaGVtZWAgICAgICAgICAgICAgICAgfFxuICogfCBgJ3B5dGhvbmAgICB8IGluY2x1ZGUtbWF0Y2ggICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBpbmNsdWRlIGBweXRob25gICAgICAgICAgICAgfFxuICogfCBgIXJ1YnlgICAgICB8IGludmVyc2UtZXhhY3QtbWF0Y2ggICAgICAgIHwgSXRlbXMgdGhhdCBkbyBub3QgaW5jbHVkZSBgcnVieWAgICAgICAgfFxuICogfCBgXmphdmFgICAgICB8IHByZWZpeC1leGFjdC1tYXRjaCAgICAgICAgIHwgSXRlbXMgdGhhdCBzdGFydCB3aXRoIGBqYXZhYCAgICAgICAgICAgfFxuICogfCBgIV5lYXJsYW5nYCB8IGludmVyc2UtcHJlZml4LWV4YWN0LW1hdGNoIHwgSXRlbXMgdGhhdCBkbyBub3Qgc3RhcnQgd2l0aCBgZWFybGFuZ2AgfFxuICogfCBgLmpzJGAgICAgICB8IHN1ZmZpeC1leGFjdC1tYXRjaCAgICAgICAgIHwgSXRlbXMgdGhhdCBlbmQgd2l0aCBgLmpzYCAgICAgICAgICAgICAgfFxuICogfCBgIS5nbyRgICAgICB8IGludmVyc2Utc3VmZml4LWV4YWN0LW1hdGNoIHwgSXRlbXMgdGhhdCBkbyBub3QgZW5kIHdpdGggYC5nb2AgICAgICAgfFxuICpcbiAqIEEgc2luZ2xlIHBpcGUgY2hhcmFjdGVyIGFjdHMgYXMgYW4gT1Igb3BlcmF0b3IuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nXG4gKiBxdWVyeSBtYXRjaGVzIGVudHJpZXMgdGhhdCBzdGFydCB3aXRoIGBjb3JlYCBhbmQgZW5kIHdpdGggZWl0aGVyYGdvYCwgYHJiYCxcbiAqIG9yYHB5YC5cbiAqXG4gKiBgYGBcbiAqIF5jb3JlIGdvJCB8IHJiJCB8IHB5JFxuICogYGBgXG4gKi9cbmNsYXNzIEV4dGVuZGVkU2VhcmNoIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcGF0dGVybixcbiAgICB7XG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb24sXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlXG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMucXVlcnkgPSBudWxsO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGlzQ2FzZVNlbnNpdGl2ZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBpZ25vcmVMb2NhdGlvbixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgZGlzdGFuY2VcbiAgICB9O1xuXG4gICAgdGhpcy5wYXR0ZXJuID0gaXNDYXNlU2Vuc2l0aXZlID8gcGF0dGVybiA6IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcGFyc2VRdWVyeSh0aGlzLnBhdHRlcm4sIHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY29uZGl0aW9uKF8sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy51c2VFeHRlbmRlZFNlYXJjaFxuICB9XG5cbiAgc2VhcmNoSW4odGV4dCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5xdWVyeTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzTWF0Y2g6IGZhbHNlLFxuICAgICAgICBzY29yZTogMVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgaW5jbHVkZU1hdGNoZXMsIGlzQ2FzZVNlbnNpdGl2ZSB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgdGV4dCA9IGlzQ2FzZVNlbnNpdGl2ZSA/IHRleHQgOiB0ZXh0LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBsZXQgbnVtTWF0Y2hlcyA9IDA7XG4gICAgbGV0IGFsbEluZGljZXMgPSBbXTtcbiAgICBsZXQgdG90YWxTY29yZSA9IDA7XG5cbiAgICAvLyBPUnNcbiAgICBmb3IgKGxldCBpID0gMCwgcUxlbiA9IHF1ZXJ5Lmxlbmd0aDsgaSA8IHFMZW47IGkgKz0gMSkge1xuICAgICAgY29uc3Qgc2VhcmNoZXJzID0gcXVlcnlbaV07XG5cbiAgICAgIC8vIFJlc2V0IGluZGljZXNcbiAgICAgIGFsbEluZGljZXMubGVuZ3RoID0gMDtcbiAgICAgIG51bU1hdGNoZXMgPSAwO1xuXG4gICAgICAvLyBBTkRzXG4gICAgICBmb3IgKGxldCBqID0gMCwgcExlbiA9IHNlYXJjaGVycy5sZW5ndGg7IGogPCBwTGVuOyBqICs9IDEpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoZXIgPSBzZWFyY2hlcnNbal07XG4gICAgICAgIGNvbnN0IHsgaXNNYXRjaCwgaW5kaWNlcywgc2NvcmUgfSA9IHNlYXJjaGVyLnNlYXJjaCh0ZXh0KTtcblxuICAgICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICAgIG51bU1hdGNoZXMgKz0gMTtcbiAgICAgICAgICB0b3RhbFNjb3JlICs9IHNjb3JlO1xuICAgICAgICAgIGlmIChpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHNlYXJjaGVyLmNvbnN0cnVjdG9yLnR5cGU7XG4gICAgICAgICAgICBpZiAoTXVsdGlNYXRjaFNldC5oYXModHlwZSkpIHtcbiAgICAgICAgICAgICAgYWxsSW5kaWNlcyA9IFsuLi5hbGxJbmRpY2VzLCAuLi5pbmRpY2VzXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFsbEluZGljZXMucHVzaChpbmRpY2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG90YWxTY29yZSA9IDA7XG4gICAgICAgICAgbnVtTWF0Y2hlcyA9IDA7XG4gICAgICAgICAgYWxsSW5kaWNlcy5sZW5ndGggPSAwO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT1IgY29uZGl0aW9uLCBzbyBpZiBUUlVFLCByZXR1cm5cbiAgICAgIGlmIChudW1NYXRjaGVzKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgICAgaXNNYXRjaDogdHJ1ZSxcbiAgICAgICAgICBzY29yZTogdG90YWxTY29yZSAvIG51bU1hdGNoZXNcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaW5jbHVkZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXN1bHQuaW5kaWNlcyA9IGFsbEluZGljZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm90aGluZyB3YXMgbWF0Y2hlZFxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoOiBmYWxzZSxcbiAgICAgIHNjb3JlOiAxXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHJlZ2lzdGVyZWRTZWFyY2hlcnMgPSBbXTtcblxuZnVuY3Rpb24gcmVnaXN0ZXIoLi4uYXJncykge1xuICByZWdpc3RlcmVkU2VhcmNoZXJzLnB1c2goLi4uYXJncyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaGVyKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJlZ2lzdGVyZWRTZWFyY2hlcnMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICBsZXQgc2VhcmNoZXJDbGFzcyA9IHJlZ2lzdGVyZWRTZWFyY2hlcnNbaV07XG4gICAgaWYgKHNlYXJjaGVyQ2xhc3MuY29uZGl0aW9uKHBhdHRlcm4sIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gbmV3IHNlYXJjaGVyQ2xhc3MocGF0dGVybiwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IEJpdGFwU2VhcmNoKHBhdHRlcm4sIG9wdGlvbnMpXG59XG5cbmNvbnN0IExvZ2ljYWxPcGVyYXRvciA9IHtcbiAgQU5EOiAnJGFuZCcsXG4gIE9SOiAnJG9yJ1xufTtcblxuY29uc3QgS2V5VHlwZSA9IHtcbiAgUEFUSDogJyRwYXRoJyxcbiAgUEFUVEVSTjogJyR2YWwnXG59O1xuXG5jb25zdCBpc0V4cHJlc3Npb24gPSAocXVlcnkpID0+XG4gICEhKHF1ZXJ5W0xvZ2ljYWxPcGVyYXRvci5BTkRdIHx8IHF1ZXJ5W0xvZ2ljYWxPcGVyYXRvci5PUl0pO1xuXG5jb25zdCBpc1BhdGggPSAocXVlcnkpID0+ICEhcXVlcnlbS2V5VHlwZS5QQVRIXTtcblxuY29uc3QgaXNMZWFmID0gKHF1ZXJ5KSA9PlxuICAhaXNBcnJheShxdWVyeSkgJiYgaXNPYmplY3QocXVlcnkpICYmICFpc0V4cHJlc3Npb24ocXVlcnkpO1xuXG5jb25zdCBjb252ZXJ0VG9FeHBsaWNpdCA9IChxdWVyeSkgPT4gKHtcbiAgW0xvZ2ljYWxPcGVyYXRvci5BTkRdOiBPYmplY3Qua2V5cyhxdWVyeSkubWFwKChrZXkpID0+ICh7XG4gICAgW2tleV06IHF1ZXJ5W2tleV1cbiAgfSkpXG59KTtcblxuLy8gV2hlbiBgYXV0b2AgaXMgYHRydWVgLCB0aGUgcGFyc2UgZnVuY3Rpb24gd2lsbCBpbmZlciBhbmQgaW5pdGlhbGl6ZSBhbmQgYWRkXG4vLyB0aGUgYXBwcm9wcmlhdGUgYFNlYXJjaGVyYCBpbnN0YW5jZVxuZnVuY3Rpb24gcGFyc2UocXVlcnksIG9wdGlvbnMsIHsgYXV0byA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IG5leHQgPSAocXVlcnkpID0+IHtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcblxuICAgIGNvbnN0IGlzUXVlcnlQYXRoID0gaXNQYXRoKHF1ZXJ5KTtcblxuICAgIGlmICghaXNRdWVyeVBhdGggJiYga2V5cy5sZW5ndGggPiAxICYmICFpc0V4cHJlc3Npb24ocXVlcnkpKSB7XG4gICAgICByZXR1cm4gbmV4dChjb252ZXJ0VG9FeHBsaWNpdChxdWVyeSkpXG4gICAgfVxuXG4gICAgaWYgKGlzTGVhZihxdWVyeSkpIHtcbiAgICAgIGNvbnN0IGtleSA9IGlzUXVlcnlQYXRoID8gcXVlcnlbS2V5VHlwZS5QQVRIXSA6IGtleXNbMF07XG5cbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBpc1F1ZXJ5UGF0aCA/IHF1ZXJ5W0tleVR5cGUuUEFUVEVSTl0gOiBxdWVyeVtrZXldO1xuXG4gICAgICBpZiAoIWlzU3RyaW5nKHBhdHRlcm4pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihMT0dJQ0FMX1NFQVJDSF9JTlZBTElEX1FVRVJZX0ZPUl9LRVkoa2V5KSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBrZXlJZDogY3JlYXRlS2V5SWQoa2V5KSxcbiAgICAgICAgcGF0dGVyblxuICAgICAgfTtcblxuICAgICAgaWYgKGF1dG8pIHtcbiAgICAgICAgb2JqLnNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmpcbiAgICB9XG5cbiAgICBsZXQgbm9kZSA9IHtcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIG9wZXJhdG9yOiBrZXlzWzBdXG4gICAgfTtcblxuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG5cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbi5wdXNoKG5leHQoaXRlbSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBub2RlXG4gIH07XG5cbiAgaWYgKCFpc0V4cHJlc3Npb24ocXVlcnkpKSB7XG4gICAgcXVlcnkgPSBjb252ZXJ0VG9FeHBsaWNpdChxdWVyeSk7XG4gIH1cblxuICByZXR1cm4gbmV4dChxdWVyeSlcbn1cblxuLy8gUHJhY3RpY2FsIHNjb3JpbmcgZnVuY3Rpb25cbmZ1bmN0aW9uIGNvbXB1dGVTY29yZSQxKFxuICByZXN1bHRzLFxuICB7IGlnbm9yZUZpZWxkTm9ybSA9IENvbmZpZy5pZ25vcmVGaWVsZE5vcm0gfVxuKSB7XG4gIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgbGV0IHRvdGFsU2NvcmUgPSAxO1xuXG4gICAgcmVzdWx0Lm1hdGNoZXMuZm9yRWFjaCgoeyBrZXksIG5vcm0sIHNjb3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHdlaWdodCA9IGtleSA/IGtleS53ZWlnaHQgOiBudWxsO1xuXG4gICAgICB0b3RhbFNjb3JlICo9IE1hdGgucG93KFxuICAgICAgICBzY29yZSA9PT0gMCAmJiB3ZWlnaHQgPyBOdW1iZXIuRVBTSUxPTiA6IHNjb3JlLFxuICAgICAgICAod2VpZ2h0IHx8IDEpICogKGlnbm9yZUZpZWxkTm9ybSA/IDEgOiBub3JtKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC5zY29yZSA9IHRvdGFsU2NvcmU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXRjaGVzKHJlc3VsdCwgZGF0YSkge1xuICBjb25zdCBtYXRjaGVzID0gcmVzdWx0Lm1hdGNoZXM7XG4gIGRhdGEubWF0Y2hlcyA9IFtdO1xuXG4gIGlmICghaXNEZWZpbmVkKG1hdGNoZXMpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgaWYgKCFpc0RlZmluZWQobWF0Y2guaW5kaWNlcykgfHwgIW1hdGNoLmluZGljZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB7IGluZGljZXMsIHZhbHVlIH0gPSBtYXRjaDtcblxuICAgIGxldCBvYmogPSB7XG4gICAgICBpbmRpY2VzLFxuICAgICAgdmFsdWVcbiAgICB9O1xuXG4gICAgaWYgKG1hdGNoLmtleSkge1xuICAgICAgb2JqLmtleSA9IG1hdGNoLmtleS5zcmM7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLmlkeCA+IC0xKSB7XG4gICAgICBvYmoucmVmSW5kZXggPSBtYXRjaC5pZHg7XG4gICAgfVxuXG4gICAgZGF0YS5tYXRjaGVzLnB1c2gob2JqKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNjb3JlKHJlc3VsdCwgZGF0YSkge1xuICBkYXRhLnNjb3JlID0gcmVzdWx0LnNjb3JlO1xufVxuXG5mdW5jdGlvbiBmb3JtYXQoXG4gIHJlc3VsdHMsXG4gIGRvY3MsXG4gIHtcbiAgICBpbmNsdWRlTWF0Y2hlcyA9IENvbmZpZy5pbmNsdWRlTWF0Y2hlcyxcbiAgICBpbmNsdWRlU2NvcmUgPSBDb25maWcuaW5jbHVkZVNjb3JlXG4gIH0gPSB7fVxuKSB7XG4gIGNvbnN0IHRyYW5zZm9ybWVycyA9IFtdO1xuXG4gIGlmIChpbmNsdWRlTWF0Y2hlcykgdHJhbnNmb3JtZXJzLnB1c2godHJhbnNmb3JtTWF0Y2hlcyk7XG4gIGlmIChpbmNsdWRlU2NvcmUpIHRyYW5zZm9ybWVycy5wdXNoKHRyYW5zZm9ybVNjb3JlKTtcblxuICByZXR1cm4gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4ge1xuICAgIGNvbnN0IHsgaWR4IH0gPSByZXN1bHQ7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgaXRlbTogZG9jc1tpZHhdLFxuICAgICAgcmVmSW5kZXg6IGlkeFxuICAgIH07XG5cbiAgICBpZiAodHJhbnNmb3JtZXJzLmxlbmd0aCkge1xuICAgICAgdHJhbnNmb3JtZXJzLmZvckVhY2goKHRyYW5zZm9ybWVyKSA9PiB7XG4gICAgICAgIHRyYW5zZm9ybWVyKHJlc3VsdCwgZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVxuICB9KVxufVxuXG5jbGFzcyBGdXNlIHtcbiAgY29uc3RydWN0b3IoZG9jcywgb3B0aW9ucyA9IHt9LCBpbmRleCkge1xuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uQ29uZmlnLCAuLi5vcHRpb25zIH07XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMudXNlRXh0ZW5kZWRTZWFyY2ggJiZcbiAgICAgICF0cnVlXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVhURU5ERURfU0VBUkNIX1VOQVZBSUxBQkxFKVxuICAgIH1cblxuICAgIHRoaXMuX2tleVN0b3JlID0gbmV3IEtleVN0b3JlKHRoaXMub3B0aW9ucy5rZXlzKTtcblxuICAgIHRoaXMuc2V0Q29sbGVjdGlvbihkb2NzLCBpbmRleCk7XG4gIH1cblxuICBzZXRDb2xsZWN0aW9uKGRvY3MsIGluZGV4KSB7XG4gICAgdGhpcy5fZG9jcyA9IGRvY3M7XG5cbiAgICBpZiAoaW5kZXggJiYgIShpbmRleCBpbnN0YW5jZW9mIEZ1c2VJbmRleCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfSU5ERVhfVFlQRSlcbiAgICB9XG5cbiAgICB0aGlzLl9teUluZGV4ID1cbiAgICAgIGluZGV4IHx8XG4gICAgICBjcmVhdGVJbmRleCh0aGlzLm9wdGlvbnMua2V5cywgdGhpcy5fZG9jcywge1xuICAgICAgICBnZXRGbjogdGhpcy5vcHRpb25zLmdldEZuXG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZChkb2MpIHtcbiAgICBpZiAoIWlzRGVmaW5lZChkb2MpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9kb2NzLnB1c2goZG9jKTtcbiAgICB0aGlzLl9teUluZGV4LmFkZChkb2MpO1xuICB9XG5cbiAgcmVtb3ZlKHByZWRpY2F0ZSA9ICgvKiBkb2MsIGlkeCAqLykgPT4gZmFsc2UpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZG9jcy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgY29uc3QgZG9jID0gdGhpcy5fZG9jc1tpXTtcbiAgICAgIGlmIChwcmVkaWNhdGUoZG9jLCBpKSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0KGkpO1xuICAgICAgICBpIC09IDE7XG4gICAgICAgIGxlbiAtPSAxO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChkb2MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1vdmVBdChpZHgpIHtcbiAgICB0aGlzLl9kb2NzLnNwbGljZShpZHgsIDEpO1xuICAgIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoaWR4KTtcbiAgfVxuXG4gIGdldEluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLl9teUluZGV4XG4gIH1cblxuICBzZWFyY2gocXVlcnksIHsgbGltaXQgPSAtMSB9ID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGluY2x1ZGVTY29yZSxcbiAgICAgIHNob3VsZFNvcnQsXG4gICAgICBzb3J0Rm4sXG4gICAgICBpZ25vcmVGaWVsZE5vcm1cbiAgICB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgbGV0IHJlc3VsdHMgPSBpc1N0cmluZyhxdWVyeSlcbiAgICAgID8gaXNTdHJpbmcodGhpcy5fZG9jc1swXSlcbiAgICAgICAgPyB0aGlzLl9zZWFyY2hTdHJpbmdMaXN0KHF1ZXJ5KVxuICAgICAgICA6IHRoaXMuX3NlYXJjaE9iamVjdExpc3QocXVlcnkpXG4gICAgICA6IHRoaXMuX3NlYXJjaExvZ2ljYWwocXVlcnkpO1xuXG4gICAgY29tcHV0ZVNjb3JlJDEocmVzdWx0cywgeyBpZ25vcmVGaWVsZE5vcm0gfSk7XG5cbiAgICBpZiAoc2hvdWxkU29ydCkge1xuICAgICAgcmVzdWx0cy5zb3J0KHNvcnRGbik7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVtYmVyKGxpbWl0KSAmJiBsaW1pdCA+IC0xKSB7XG4gICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdChyZXN1bHRzLCB0aGlzLl9kb2NzLCB7XG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGluY2x1ZGVTY29yZVxuICAgIH0pXG4gIH1cblxuICBfc2VhcmNoU3RyaW5nTGlzdChxdWVyeSkge1xuICAgIGNvbnN0IHNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocXVlcnksIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgeyByZWNvcmRzIH0gPSB0aGlzLl9teUluZGV4O1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBldmVyeSBzdHJpbmcgaW4gdGhlIGluZGV4XG4gICAgcmVjb3Jkcy5mb3JFYWNoKCh7IHY6IHRleHQsIGk6IGlkeCwgbjogbm9ybSB9KSA9PiB7XG4gICAgICBpZiAoIWlzRGVmaW5lZCh0ZXh0KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBpc01hdGNoLCBzY29yZSwgaW5kaWNlcyB9ID0gc2VhcmNoZXIuc2VhcmNoSW4odGV4dCk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgaXRlbTogdGV4dCxcbiAgICAgICAgICBpZHgsXG4gICAgICAgICAgbWF0Y2hlczogW3sgc2NvcmUsIHZhbHVlOiB0ZXh0LCBub3JtLCBpbmRpY2VzIH1dXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIF9zZWFyY2hMb2dpY2FsKHF1ZXJ5KSB7XG5cbiAgICBjb25zdCBleHByZXNzaW9uID0gcGFyc2UocXVlcnksIHRoaXMub3B0aW9ucyk7XG5cbiAgICBjb25zdCBldmFsdWF0ZSA9IChub2RlLCBpdGVtLCBpZHgpID0+IHtcbiAgICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCB7IGtleUlkLCBzZWFyY2hlciB9ID0gbm9kZTtcblxuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5fZmluZE1hdGNoZXMoe1xuICAgICAgICAgIGtleTogdGhpcy5fa2V5U3RvcmUuZ2V0KGtleUlkKSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fbXlJbmRleC5nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKGl0ZW0sIGtleUlkKSxcbiAgICAgICAgICBzZWFyY2hlclxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgbWF0Y2hlc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXVxuICAgICAgfVxuXG4gICAgICAvKmVzbGludCBpbmRlbnQ6IFsyLCAyLCB7XCJTd2l0Y2hDYXNlXCI6IDF9XSovXG4gICAgICBzd2l0Y2ggKG5vZGUub3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSBMb2dpY2FsT3BlcmF0b3IuQU5EOiB7XG4gICAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV2YWx1YXRlKGNoaWxkLCBpdGVtLCBpZHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzLnB1c2goLi4ucmVzdWx0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMb2dpY2FsT3BlcmF0b3IuT1I6IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZXZhbHVhdGUoY2hpbGQsIGl0ZW0sIGlkeCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXMucHVzaCguLi5yZXN1bHQpO1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuX215SW5kZXgucmVjb3JkcztcbiAgICBjb25zdCByZXN1bHRNYXAgPSB7fTtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICByZWNvcmRzLmZvckVhY2goKHsgJDogaXRlbSwgaTogaWR4IH0pID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQoaXRlbSkpIHtcbiAgICAgICAgbGV0IGV4cFJlc3VsdHMgPSBldmFsdWF0ZShleHByZXNzaW9uLCBpdGVtLCBpZHgpO1xuXG4gICAgICAgIGlmIChleHBSZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgIC8vIERlZHVwZSB3aGVuIGFkZGluZ1xuICAgICAgICAgIGlmICghcmVzdWx0TWFwW2lkeF0pIHtcbiAgICAgICAgICAgIHJlc3VsdE1hcFtpZHhdID0geyBpZHgsIGl0ZW0sIG1hdGNoZXM6IFtdIH07XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0TWFwW2lkeF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBleHBSZXN1bHRzLmZvckVhY2goKHsgbWF0Y2hlcyB9KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRNYXBbaWR4XS5tYXRjaGVzLnB1c2goLi4ubWF0Y2hlcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBfc2VhcmNoT2JqZWN0TGlzdChxdWVyeSkge1xuICAgIGNvbnN0IHNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocXVlcnksIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgeyBrZXlzLCByZWNvcmRzIH0gPSB0aGlzLl9teUluZGV4O1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIC8vIExpc3QgaXMgQXJyYXk8T2JqZWN0PlxuICAgIHJlY29yZHMuZm9yRWFjaCgoeyAkOiBpdGVtLCBpOiBpZHggfSkgPT4ge1xuICAgICAgaWYgKCFpc0RlZmluZWQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBtYXRjaGVzID0gW107XG5cbiAgICAgIC8vIEl0ZXJhdGUgb3ZlciBldmVyeSBrZXkgKGkuZSwgcGF0aCksIGFuZCBmZXRjaCB0aGUgdmFsdWUgYXQgdGhhdCBrZXlcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBrZXlJbmRleCkgPT4ge1xuICAgICAgICBtYXRjaGVzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5fZmluZE1hdGNoZXMoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1ba2V5SW5kZXhdLFxuICAgICAgICAgICAgc2VhcmNoZXJcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgIGlkeCxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIG1hdGNoZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG4gIF9maW5kTWF0Y2hlcyh7IGtleSwgdmFsdWUsIHNlYXJjaGVyIH0pIHtcbiAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVzID0gW107XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlLmZvckVhY2goKHsgdjogdGV4dCwgaTogaWR4LCBuOiBub3JtIH0pID0+IHtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGV4dCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaGVyLnNlYXJjaEluKHRleHQpO1xuXG4gICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgbWF0Y2hlcy5wdXNoKHtcbiAgICAgICAgICAgIHNjb3JlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICBub3JtLFxuICAgICAgICAgICAgaW5kaWNlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyB2OiB0ZXh0LCBuOiBub3JtIH0gPSB2YWx1ZTtcblxuICAgICAgY29uc3QgeyBpc01hdGNoLCBzY29yZSwgaW5kaWNlcyB9ID0gc2VhcmNoZXIuc2VhcmNoSW4odGV4dCk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIG1hdGNoZXMucHVzaCh7IHNjb3JlLCBrZXksIHZhbHVlOiB0ZXh0LCBub3JtLCBpbmRpY2VzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzXG4gIH1cbn1cblxuRnVzZS52ZXJzaW9uID0gJzYuNC42JztcbkZ1c2UuY3JlYXRlSW5kZXggPSBjcmVhdGVJbmRleDtcbkZ1c2UucGFyc2VJbmRleCA9IHBhcnNlSW5kZXg7XG5GdXNlLmNvbmZpZyA9IENvbmZpZztcblxue1xuICBGdXNlLnBhcnNlUXVlcnkgPSBwYXJzZTtcbn1cblxue1xuICByZWdpc3RlcihFeHRlbmRlZFNlYXJjaCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZ1c2U7XG4iLCJpbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJ1xuXG5jb25zdCB1c2VDb21tYW5kcyA9IChjb21tYW5kcywgcHJlY2lzaW9uID0gMC40KSA9PiB7XG5cdGNvbW1hbmRzID0gISFjb21tYW5kc1xuXHRcdD8gT2JqZWN0LmVudHJpZXMoY29tbWFuZHMpPy5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoeyBba2V5LnRvTG93ZXJDYXNlKCldOiB2YWx1ZSB9KSwge30pXG5cdFx0OiB7fVxuXG5cdGNvbnN0IHRyaWdnZXJDb21tYW5kID0gKGlucHV0KSA9PiB7XG5cdFx0Y29uc3QgZnVzZSA9IG5ldyBGdXNlKE9iamVjdC5rZXlzKGNvbW1hbmRzKSwgeyBpbmNsdWRlU2NvcmU6IHRydWUsIGlnbm9yZUxvY2F0aW9uOiB0cnVlIH0pXG5cdFx0Y29uc3QgcmVzdWx0ID0gZnVzZS5zZWFyY2goaW5wdXQpLmZpbHRlcigocikgPT4gci5zY29yZSA8IHByZWNpc2lvbilcblx0XHRpZiAoISFyZXN1bHQ/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3Qga2V5ID0gcmVzdWx0WzBdLml0ZW0udG9Mb3dlckNhc2UoKVxuXHRcdFx0cmV0dXJuIGNvbW1hbmRzW2tleV0/LihpbnB1dClcblx0XHR9XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXG5cdHJldHVybiB0cmlnZ2VyQ29tbWFuZFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb21tYW5kc1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5jb25zdCBJY29uID0gKHsgY29sb3IsIGFjdGl2ZUNvbG9yLCBpc0FjdGl2ZSB9KSA9PiB7XG5cdHJldHVybiAoXG5cdFx0PHN2Z1xuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcm9vdF9fXCJcblx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdGhlaWdodD1cIjEwMCVcIlxuXHRcdFx0dmlld0JveD1cIjAgMCAyNCAyNFwiXG5cdFx0PlxuXHRcdFx0PGc+XG5cdFx0XHRcdDxwYXRoXG5cdFx0XHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX2ljb24tcGF0aF9fXCJcblx0XHRcdFx0XHRmaWxsPXtjb2xvcn1cblx0XHRcdFx0XHRkPVwiTTEyIDE0YzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDVjMC0xLjY2LTEuMzQtMy0zLTNTOSAzLjM0IDkgNXY2YzAgMS42NiAxLjM0IDMgMyAzem01LjMtM2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTQgNi43IDExSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjFoMnYtMy4yOGMzLjI4LS40OCA2LTMuMyA2LTYuNzJoLTEuN3pcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHR7aXNBY3RpdmUgJiYgPGNpcmNsZSBkYXRhLXRlc3RpZD1cIl9faWNvbi1hY3RpdmVfX1wiIGZpbGw9e2FjdGl2ZUNvbG9yfSBjeD1cIjE2XCIgY3k9XCI0XCIgcj1cIjRcIiAvPn1cblx0XHRcdDwvZz5cblx0XHQ8L3N2Zz5cblx0KVxufVxuXG5JY29uLnByb3BUeXBlcyA9IHtcblx0Y29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdGFjdGl2ZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRpc0FjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG59XG5cbkljb24uZGVmYXVsdFByb3BzID0ge1xuXHRjb2xvcjogJ2JsYWNrJyxcblx0YWN0aXZlQ29sb3I6ICdyZWQnLFxuXHRpc0FjdGl2ZTogZmFsc2UsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb25cbiIsImltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBWb2NhbCBhcyBTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIgfSBmcm9tICdAdW50ZW1wcy92b2NhbCdcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAdW50ZW1wcy91dGlscy9mdW5jdGlvbi9pc0Z1bmN0aW9uJ1xuXG5pbXBvcnQgdXNlVm9jYWwgZnJvbSAnLi4vaG9va3MvdXNlVm9jYWwnXG5pbXBvcnQgdXNlVGltZW91dCBmcm9tICcuLi9ob29rcy91c2VUaW1lb3V0J1xuaW1wb3J0IHVzZUNvbW1hbmRzIGZyb20gJy4uL2hvb2tzL3VzZUNvbW1hbmRzJ1xuXG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nXG5cbmNvbnN0IFZvY2FsID0gKHtcblx0Y2hpbGRyZW4sXG5cdGNvbW1hbmRzLFxuXHRsYW5nLFxuXHRncmFtbWFycyxcblx0dGltZW91dCxcblx0YXJpYUxhYmVsLFxuXHRzdHlsZSxcblx0Y2xhc3NOYW1lLFxuXHRvdXRsaW5lU3R5bGUsXG5cdG9uU3RhcnQsXG5cdG9uRW5kLFxuXHRvblNwZWVjaFN0YXJ0LFxuXHRvblNwZWVjaEVuZCxcblx0b25SZXN1bHQsXG5cdG9uRXJyb3IsXG5cdG9uTm9NYXRjaCxcblx0X19yc0luc3RhbmNlLFxufSkgPT4ge1xuXHRjb25zdCBidXR0b25SZWYgPSB1c2VSZWYobnVsbClcblx0Y29uc3QgW2lzTGlzdGVuaW5nLCBzZXRJc0xpc3RlbmluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuXHRjb25zdCBbLCB7IHN0YXJ0LCBzdG9wLCBzdWJzY3JpYmUsIHVuc3Vic2NyaWJlIH1dID0gdXNlVm9jYWwobGFuZywgZ3JhbW1hcnMsIF9fcnNJbnN0YW5jZSlcblx0Y29uc3QgdHJpZ2dlckNvbW1hbmQgPSB1c2VDb21tYW5kcyhjb21tYW5kcylcblxuXHRjb25zdCBfb25FbmQgPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdHVuc3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdHVuc3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0dW5zdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHR1bnN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdHVuc3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdHVuc3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdCEhb25FbmQgJiYgb25FbmQoZSlcblx0fVxuXG5cdGNvbnN0IFtzdGFydFRpbWVyLCBzdG9wVGltZXJdID0gdXNlVGltZW91dChfb25FbmQsIHRpbWVvdXQpXG5cblx0Y29uc3Qgc3RhcnRSZWNvZ25pdGlvbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0c2V0SXNMaXN0ZW5pbmcodHJ1ZSlcblxuXHRcdFx0c3Vic2NyaWJlKCdzdGFydCcsIF9vblN0YXJ0KVxuXHRcdFx0c3Vic2NyaWJlKCdlbmQnLCBfb25FbmQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaHN0YXJ0JywgX29uU3BlZWNoU3RhcnQpXG5cdFx0XHRzdWJzY3JpYmUoJ3NwZWVjaGVuZCcsIF9vblNwZWVjaEVuZClcblx0XHRcdHN1YnNjcmliZSgncmVzdWx0JywgX29uUmVzdWx0KVxuXHRcdFx0c3Vic2NyaWJlKCdlcnJvcicsIF9vbkVycm9yKVxuXHRcdFx0c3Vic2NyaWJlKCdub21hdGNoJywgX29uTm9NYXRjaClcblxuXHRcdFx0c3RhcnQoKVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRfb25FcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjb25zdCBzdG9wUmVjb2duaXRpb24gPSAoKSA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdHNldElzTGlzdGVuaW5nKGZhbHNlKVxuXG5cdFx0XHRzdG9wKClcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0ISFvbkVycm9yICYmIG9uRXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgX29uQ2xpY2sgPSAoKSA9PiB7XG5cdFx0c3RhcnRSZWNvZ25pdGlvbigpXG5cdH1cblxuXHRjb25zdCBfb25Gb2N1cyA9ICgpID0+IHtcblx0XHRpZiAoIWNsYXNzTmFtZSAmJiBvdXRsaW5lU3R5bGUpIHtcblx0XHRcdGJ1dHRvblJlZi5jdXJyZW50LnN0eWxlLm91dGxpbmUgPSBvdXRsaW5lU3R5bGVcblx0XHR9XG5cdH1cblxuXHRjb25zdCBfb25CbHVyID0gKCkgPT4ge1xuXHRcdGlmICghY2xhc3NOYW1lICYmIG91dGxpbmVTdHlsZSkge1xuXHRcdFx0YnV0dG9uUmVmLmN1cnJlbnQuc3R5bGUub3V0bGluZSA9ICdub25lJ1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IF9vblN0YXJ0ID0gKGUpID0+IHtcblx0XHRzdGFydFRpbWVyKClcblxuXHRcdCEhb25TdGFydCAmJiBvblN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hTdGFydCA9IChlKSA9PiB7XG5cdFx0c3RvcFRpbWVyKClcblxuXHRcdCEhb25TcGVlY2hTdGFydCAmJiBvblNwZWVjaFN0YXJ0KGUpXG5cdH1cblxuXHRjb25zdCBfb25TcGVlY2hFbmQgPSAoZSkgPT4ge1xuXHRcdHN0YXJ0VGltZXIoKVxuXG5cdFx0ISFvblNwZWVjaEVuZCAmJiBvblNwZWVjaEVuZChlKVxuXHR9XG5cblx0Y29uc3QgX29uUmVzdWx0ID0gKGV2ZW50LCByZXN1bHQpID0+IHtcblx0XHRzdG9wVGltZXIoKVxuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHR0cmlnZ2VyQ29tbWFuZChyZXN1bHQpXG5cblx0XHQhIW9uUmVzdWx0ICYmIG9uUmVzdWx0KHJlc3VsdCwgZXZlbnQpXG5cdH1cblxuXHRjb25zdCBfb25FcnJvciA9IChlcnJvcikgPT4ge1xuXHRcdHN0b3BSZWNvZ25pdGlvbigpXG5cblx0XHQhIW9uRXJyb3IgJiYgb25FcnJvcihlcnJvcilcblx0fVxuXG5cdGNvbnN0IF9vbk5vTWF0Y2ggPSAoZSkgPT4ge1xuXHRcdHN0b3BUaW1lcigpXG5cdFx0c3RvcFJlY29nbml0aW9uKClcblxuXHRcdCEhb25Ob01hdGNoICYmIG9uTm9NYXRjaChlKVxuXHR9XG5cblx0Y29uc3QgX3JlbmRlckRlZmF1bHQgPSAoKSA9PiAoXG5cdFx0PGJ1dHRvblxuXHRcdFx0ZGF0YS10ZXN0aWQ9XCJfX3ZvY2FsLXJvb3RfX1wiXG5cdFx0XHRyZWY9e2J1dHRvblJlZn1cblx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0YXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuXHRcdFx0c3R5bGU9e1xuXHRcdFx0XHRjbGFzc05hbWVcblx0XHRcdFx0XHQ/IG51bGxcblx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDI0LFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDI0LFxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRjdXJzb3I6ICFpc0xpc3RlbmluZyA/ICdwb2ludGVyJyA6ICdkZWZhdWx0Jyxcblx0XHRcdFx0XHRcdFx0Li4uc3R5bGUsXG5cdFx0XHRcdFx0ICB9XG5cdFx0XHR9XG5cdFx0XHRjbGFzc05hbWU9e2NsYXNzTmFtZX1cblx0XHRcdG9uRm9jdXM9e19vbkZvY3VzfVxuXHRcdFx0b25CbHVyPXtfb25CbHVyfVxuXHRcdFx0b25DbGljaz17X29uQ2xpY2t9XG5cdFx0PlxuXHRcdFx0PEljb24gaXNBY3RpdmU9e2lzTGlzdGVuaW5nfSBpY29uQ29sb3I9XCIjYWFhXCIgLz5cblx0XHQ8L2J1dHRvbj5cblx0KVxuXG5cdGNvbnN0IF9yZW5kZXJDaGlsZHJlbiA9IChjaGlsZHJlbikgPT4ge1xuXHRcdGlmIChTcGVlY2hSZWNvZ25pdGlvbldyYXBwZXIuaXNTdXBwb3J0ZWQpIHtcblx0XHRcdGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xuXHRcdFx0XHRyZXR1cm4gY2hpbGRyZW4oc3RhcnRSZWNvZ25pdGlvbiwgc3RvcFJlY29nbml0aW9uLCBpc0xpc3RlbmluZylcblx0XHRcdH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG5cdFx0XHRcdHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcblx0XHRcdFx0XHQuLi4oIWlzTGlzdGVuaW5nICYmIHsgb25DbGljazogX29uQ2xpY2sgfSksXG5cdFx0XHRcdH0pXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX3JlbmRlckRlZmF1bHQoKVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cblx0cmV0dXJuIF9yZW5kZXJDaGlsZHJlbihjaGlsZHJlbilcbn1cblxuVm9jYWwucHJvcFR5cGVzID0ge1xuXHQvKiogRGVmaW5lcyBjYWxsYmFja3MgdG8gYmUgdHJpZ2dlcmVkIHdoZW4ga2V5cyBhcmUgZGV0ZWN0ZWQgYnkgdGhlIHJlY29nbml0aW9uICovXG5cdGNvbW1hbmRzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLmZ1bmMpLFxuXHQvKiogRGVmaW5lcyB0aGUgbGFuZ3VhZ2UgdW5kZXJzdG9vZCBieSB0aGUgcmVjb2duaXRpb24gKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hSZWNvZ25pdGlvbi9sYW5nKSAqL1xuXHRsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHQvKiogRGVmaW5lcyB0aGUgZ3JhbW1hcnMgdW5kZXJzdG9vZCBieSB0aGUgcmVjb2duaXRpb24gKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hSZWNvZ25pdGlvbi9ncmFtbWFycykgKi9cblx0Z3JhbW1hcnM6IFByb3BUeXBlcy5vYmplY3QsXG5cdC8qKiBEZWZpbmVzIHRoZSB0aW1lIGluIG1zIHRvIHdhaXQgYmVmb3JlIGRpc2NhcmRpbmcgdGhlIHJlY29nbml0aW9uICovXG5cdHRpbWVvdXQ6IFByb3BUeXBlcy5udW1iZXIsXG5cdC8qKiBEZWZpbmVzIHRoZSBhMTF5IGxhYmVsIGZvciB0aGUgZGVmYXVsdCBidXR0b24gKi9cblx0YXJpYUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHQvKiogRGVmaW5lcyB0aGUgc3R5bGVzIG9mIHRoZSBkZWZhdWx0IGVsZW1lbnQgaWYgY2xhc3NOYW1lIGlzIG5vdCBzcGVjaWZpZWQgKi9cblx0c3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cdC8qKiBEZWZpbmVzIHRoZSBjbGFzcyBvZiB0aGUgZGVmYXVsdCBlbGVtZW50ICovXG5cdGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblx0LyoqIERlZmluZXMgdGhlIGRlZmF1bHQgc3R5bGUgb2YgdGhlIGZvY3VzIG91dGxpbmUuIGlmIG51bGwgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHVzZWQgKi9cblx0b3V0bGluZVN0eWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgcmVjb2duaXRpb24gc3RhcnRzICovXG5cdG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgcmVjb2duaXRpb24gZW5kcyAqL1xuXHRvbkVuZDogUHJvcFR5cGVzLmZ1bmMsXG5cdC8qKiBEZWZpbmVzIHRoZSBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSBzcGVlY2ggc3RhcnRzICovXG5cdG9uU3BlZWNoU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgc3BlZWNoIGVuZHMgKi9cblx0b25TcGVlY2hFbmQ6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiBhIHJlc3VsdCBpcyByZXR1cm5lZCBmcm9tIHRlIHJlY29nbml0aW9uICovXG5cdG9uUmVzdWx0OiBQcm9wVHlwZXMuZnVuYyxcblx0LyoqIERlZmluZXMgdGhlIGhhbmRsZXIgY2FsbGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJzICovXG5cdG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuXHQvKiogRGVmaW5lcyB0aGUgaGFuZGxlciBjYWxsZWQgd2hlbiBubyByZXN1bHQgY2FuIGJlIHJlY29nbml6ZWQgKi9cblx0b25Ob01hdGNoOiBQcm9wVHlwZXMuZnVuYyxcbn1cblxuVm9jYWwuZGVmYXVsdFByb3BzID0ge1xuXHRjb21tYW5kczogbnVsbCxcblx0bGFuZzogJ2VuLVVTJyxcblx0Z3JhbW1hcnM6IG51bGwsXG5cdHRpbWVvdXQ6IDMwMDAsXG5cdGFyaWFMYWJlbDogJ3N0YXJ0IHJlY29nbml0aW9uJyxcblx0c3R5bGU6IG51bGwsXG5cdGNsYXNzTmFtZTogbnVsbCxcblx0b3V0bGluZVN0eWxlOiAnMnB4IHNvbGlkJyxcblx0b25TdGFydDogbnVsbCxcblx0b25FbmQ6IG51bGwsXG5cdG9uU3BlZWNoU3RhcnQ6IG51bGwsXG5cdG9uU3BlZWNoRW5kOiBudWxsLFxuXHRvblJlc3VsdDogbnVsbCxcblx0b25FcnJvcjogbnVsbCxcblx0b25Ob01hdGNoOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBWb2NhbFxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IHVzZVRpbWVvdXQgPSAoaGFuZGxlciwgdGltZW91dCA9IDApID0+IHtcblx0Y29uc3QgcmVmID0gdXNlUmVmKC0xKVxuXG5cdGNvbnN0IHN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0Y2xlYXJUaW1lb3V0KHJlZi5jdXJyZW50KVxuXHRcdHJlZi5jdXJyZW50ID0gLTFcblx0fSwgW10pXG5cblx0Y29uc3Qgc3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG5cdFx0c3RvcCgpXG5cdFx0cmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpXG5cdH0sIFtoYW5kbGVyLCB0aW1lb3V0LCBzdG9wXSlcblxuXHR1c2VFZmZlY3QoKCkgPT4gc3RvcCwgW3N0b3BdKVxuXG5cdHJldHVybiBbc3RhcnQsIHN0b3BdXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRpbWVvdXRcblxuLy8gVE9ETzogUmV0dXJuIGEgcHJvbWlzZVxuIiwiaW1wb3J0IFZvY2FsIGZyb20gJy4vY29tcG9uZW50cy9Wb2NhbCdcbmltcG9ydCB7IFZvY2FsIGFzIFNwZWVjaFJlY29nbml0aW9uV3JhcHBlciB9IGZyb20gJ0B1bnRlbXBzL3ZvY2FsJ1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVZvY2FsIH0gZnJvbSAnLi9ob29rcy91c2VWb2NhbCdcbmV4cG9ydCBjb25zdCBpc1N1cHBvcnRlZCA9IFNwZWVjaFJlY29nbml0aW9uV3JhcHBlci5pc1N1cHBvcnRlZFxuXG5leHBvcnQgZGVmYXVsdCBWb2NhbFxuIl0sIm5hbWVzIjpbInQiLCJlIiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIlN5bWJvbCIsIm8iLCJpdGVyYXRvciIsImkiLCJhc3luY0l0ZXJhdG9yIiwiYSIsInRvU3RyaW5nVGFnIiwiYyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ1IiwiZiIsImNyZWF0ZSIsIl8iLCJfaW52b2tlIiwiRXJyb3IiLCJTIiwibWV0aG9kIiwiYXJnIiwiZGVsZWdhdGUiLCJiIiwibCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicyIsInR5cGUiLCJkb25lIiwiY2FsbCIsIndyYXAiLCJoIiwicCIsInYiLCJ0aGlzIiwieSIsImdldFByb3RvdHlwZU9mIiwiZCIsIngiLCJtIiwiZyIsImZvckVhY2giLCJ3IiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwicmV0dXJuIiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwiRSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJPIiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJjb25zdHJ1Y3RvciIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsIlByb21pc2UiLCJ0b1N0cmluZyIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwidmFsdWVzIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImNhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImV4cG9ydHMiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJGdW5jdGlvbiIsInBhdGgiLCJyZXF1aXJlIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJBcnJheSIsImlzQXJyYXkiLCJmcm9tIiwidGVzdCIsImtleSIsIm5hdmlnYXRvciIsInBlcm1pc3Npb25zIiwibWVkaWFEZXZpY2VzIiwiRE9NRXhjZXB0aW9uIiwicXVlcnkiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidGFyZ2V0Iiwic3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwidDAiLCJ0MSIsImdldFVzZXJNZWRpYSIsInQyIiwidDMiLCJhbGwiLCJ0NCIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3Jlc29sdmVTcGVlY2hSZWNvZ25pdGlvbiIsIl9pbnN0YW5jZSIsIl9saXN0ZW5lcnMiLCJlbnRyaWVzIiwiZGVmYXVsdE9wdGlvbnMiLCJfcmVzb2x2ZVNwZWVjaEdyYW1tYXJMaXN0IiwiZ2V0Iiwic2V0IiwiYXVkaW8iLCJzdGFydCIsImVycm9yIiwiYWJvcnQiLCJfaW5jbHVkZXNFdmVudFR5cGUiLCJldmVudFR5cGVzIiwiUkVTVUxUIiwicmVzdWx0cyIsInRyYW5zY3JpcHQiLCJjb25jYXQiLCJmaW5kIiwid2luZG93IiwiU3BlZWNoUmVjb2duaXRpb24iLCJ3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiIsIm1velNwZWVjaFJlY29nbml0aW9uIiwibXNTcGVlY2hSZWNvZ25pdGlvbiIsIlNwZWVjaEdyYW1tYXJMaXN0Iiwid2Via2l0U3BlZWNoR3JhbW1hckxpc3QiLCJtb3pTcGVlY2hHcmFtbWFyTGlzdCIsIm1zU3BlZWNoR3JhbW1hckxpc3QiLCJncmFtbWFycyIsImxhbmciLCJjb250aW51b3VzIiwiaW50ZXJpbVJlc3VsdHMiLCJtYXhBbHRlcm5hdGl2ZXMiLCJzZXJ2aWNlVVJJIiwiQVVESU9fRU5EIiwiQVVESU9fU1RBUlQiLCJFTkQiLCJFUlJPUiIsIk5PX01BVENIIiwiU09VTkRfRU5EIiwiU09VTkRfU1RBUlQiLCJTUEVFQ0hfRU5EIiwiU1BFRUNIX1NUQVJUIiwiU1RBUlQiLCJ1c2VWb2NhbCIsIl9fcnNJbnN0YW5jZSIsInJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsIlNwZWVjaFJlY29nbml0aW9uV3JhcHBlciIsImlzU3VwcG9ydGVkIiwiY3VycmVudCIsImNsZWFudXAiLCJ1c2VDYWxsYmFjayIsInN1YnNjcmliZSIsImV2ZW50VHlwZSIsImhhbmRsZXIiLCJ1bnN1YnNjcmliZSIsImNsZWFuIiwiZ2V0VGFnIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzQm9vbGVhbiIsImlzT2JqZWN0IiwiaXNPYmplY3RMaWtlIiwiaXNEZWZpbmVkIiwiaXNCbGFuayIsInRyaW0iLCJ1bmRlZmluZWQiLCJoYXNPd24iLCJLZXlTdG9yZSIsIl9rZXlzIiwiX2tleU1hcCIsInRvdGFsV2VpZ2h0Iiwib2JqIiwiY3JlYXRlS2V5Iiwid2VpZ2h0IiwiaWQiLCJrZXlJZCIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcmMiLCJjcmVhdGVLZXlQYXRoIiwiY3JlYXRlS2V5SWQiLCJNSVNTSU5HX0tFWV9QUk9QRVJUWSIsIklOVkFMSURfS0VZX1dFSUdIVF9WQUxVRSIsInNwbGl0Iiwiam9pbiIsIkFkdmFuY2VkT3B0aW9ucyIsInVzZUV4dGVuZGVkU2VhcmNoIiwiZ2V0Rm4iLCJsaXN0IiwiYXJyIiwiZGVlcEdldCIsImluZGV4IiwicmVzdWx0IiwiYmFzZVRvU3RyaW5nIiwibGVuIiwiaWdub3JlTG9jYXRpb24iLCJpZ25vcmVGaWVsZE5vcm0iLCJDb25maWciLCJpc0Nhc2VTZW5zaXRpdmUiLCJpbmNsdWRlU2NvcmUiLCJzaG91bGRTb3J0Iiwic29ydEZuIiwic2NvcmUiLCJpZHgiLCJpbmNsdWRlTWF0Y2hlcyIsImZpbmRBbGxNYXRjaGVzIiwibWluTWF0Y2hDaGFyTGVuZ3RoIiwibG9jYXRpb24iLCJ0aHJlc2hvbGQiLCJkaXN0YW5jZSIsIlNQQUNFIiwiRnVzZUluZGV4Iiwibm9ybSIsIm1hbnRpc3NhIiwiY2FjaGUiLCJNYXAiLCJNYXRoIiwicG93IiwibnVtVG9rZW5zIiwibWF0Y2giLCJoYXMiLCJzcXJ0IiwicGFyc2VGbG9hdCIsInJvdW5kIiwiY2xlYXIiLCJpc0NyZWF0ZWQiLCJzZXRJbmRleFJlY29yZHMiLCJzZXRTb3VyY2VzIiwiZG9jcyIsInJlY29yZHMiLCJzZXRLZXlzIiwiX2tleXNNYXAiLCJkb2MiLCJkb2NJbmRleCIsIl9hZGRTdHJpbmciLCJfYWRkT2JqZWN0IiwiYWRkIiwic2l6ZSIsInJlbW92ZUF0Iiwic3BsaWNlIiwiZ2V0VmFsdWVGb3JJdGVtQXRLZXlJZCIsIml0ZW0iLCJyZWNvcmQiLCIkIiwia2V5SW5kZXgiLCJzdWJSZWNvcmRzIiwic3RhY2siLCJuZXN0ZWRBcnJJbmRleCIsInN1YlJlY29yZCIsImsiLCJjcmVhdGVJbmRleCIsIm15SW5kZXgiLCJtYXAiLCJjb21wdXRlU2NvcmUiLCJwYXR0ZXJuIiwiZXJyb3JzIiwiY3VycmVudExvY2F0aW9uIiwiZXhwZWN0ZWRMb2NhdGlvbiIsImFjY3VyYWN5IiwicHJveGltaXR5IiwiYWJzIiwic2VhcmNoIiwidGV4dCIsInBhdHRlcm5BbHBoYWJldCIsInBhdHRlcm5MZW4iLCJ0ZXh0TGVuIiwibWF4IiwibWluIiwiY3VycmVudFRocmVzaG9sZCIsImJlc3RMb2NhdGlvbiIsImNvbXB1dGVNYXRjaGVzIiwibWF0Y2hNYXNrIiwiaW5kZXhPZiIsImxhc3RCaXRBcnIiLCJmaW5hbFNjb3JlIiwiYmluTWF4IiwibWFzayIsImJpbk1pbiIsImJpbk1pZCIsImZsb29yIiwiYml0QXJyIiwiaiIsImNoYXJNYXRjaCIsImlzTWF0Y2giLCJpbmRpY2VzIiwibWF0Y2htYXNrIiwiZW5kIiwiY29udmVydE1hc2tUb0luZGljZXMiLCJjcmVhdGVQYXR0ZXJuQWxwaGFiZXQiLCJjaGFyIiwiQml0YXBTZWFyY2giLCJvcHRpb25zIiwidG9Mb3dlckNhc2UiLCJjaHVua3MiLCJhZGRDaHVuayIsInN0YXJ0SW5kZXgiLCJhbHBoYWJldCIsInJlbWFpbmRlciIsInN1YnN0ciIsInNlYXJjaEluIiwiYWxsSW5kaWNlcyIsInRvdGFsU2NvcmUiLCJoYXNNYXRjaGVzIiwiQmFzZU1hdGNoIiwic3RhdGljIiwiZ2V0TWF0Y2giLCJtdWx0aVJlZ2V4Iiwic2luZ2xlUmVnZXgiLCJleHAiLCJtYXRjaGVzIiwiRnV6enlNYXRjaCIsInN1cGVyIiwiX2JpdGFwU2VhcmNoIiwiSW5jbHVkZU1hdGNoIiwic2VhcmNoZXJzIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwic2VhcmNoZXJzTGVuIiwiU1BBQ0VfUkUiLCJNdWx0aU1hdGNoU2V0IiwiU2V0IiwiRXh0ZW5kZWRTZWFyY2giLCJxdWVyeUl0ZW0iLCJmb3VuZCIsInNlYXJjaGVyIiwidG9rZW4iLCJpc011bHRpTWF0Y2giLCJpc1NpbmdsZU1hdGNoIiwicGFyc2VRdWVyeSIsIm51bU1hdGNoZXMiLCJxTGVuIiwicExlbiIsInJlZ2lzdGVyZWRTZWFyY2hlcnMiLCJjcmVhdGVTZWFyY2hlciIsInNlYXJjaGVyQ2xhc3MiLCJjb25kaXRpb24iLCJMb2dpY2FsT3BlcmF0b3IiLCJLZXlUeXBlIiwiaXNFeHByZXNzaW9uIiwiY29udmVydFRvRXhwbGljaXQiLCJMb2dpY2FsT3BlcmF0b3JfQU5EIiwicGFyc2UiLCJhdXRvIiwiaXNRdWVyeVBhdGgiLCJpc1BhdGgiLCJpc0xlYWYiLCJMT0dJQ0FMX1NFQVJDSF9JTlZBTElEX1FVRVJZX0ZPUl9LRVkiLCJub2RlIiwiY2hpbGRyZW4iLCJvcGVyYXRvciIsInRyYW5zZm9ybU1hdGNoZXMiLCJkYXRhIiwicmVmSW5kZXgiLCJ0cmFuc2Zvcm1TY29yZSIsIkZ1c2UiLCJfa2V5U3RvcmUiLCJzZXRDb2xsZWN0aW9uIiwiX2RvY3MiLCJfbXlJbmRleCIsInJlbW92ZSIsInByZWRpY2F0ZSIsImdldEluZGV4IiwibGltaXQiLCJfc2VhcmNoU3RyaW5nTGlzdCIsIl9zZWFyY2hPYmplY3RMaXN0IiwiX3NlYXJjaExvZ2ljYWwiLCJOdW1iZXIiLCJFUFNJTE9OIiwiY29tcHV0ZVNjb3JlJDEiLCJzb3J0IiwidHJhbnNmb3JtZXJzIiwidHJhbnNmb3JtZXIiLCJmb3JtYXQiLCJleHByZXNzaW9uIiwiZXZhbHVhdGUiLCJfZmluZE1hdGNoZXMiLCJyZXMiLCJjaGlsZCIsInJlc3VsdE1hcCIsImV4cFJlc3VsdHMiLCJ2ZXJzaW9uIiwicGFyc2VJbmRleCIsImNvbmZpZyIsImFyZ3MiLCJyZWdpc3RlciIsIkljb24iLCJfcmVmIiwiY29sb3IiLCJhY3RpdmVDb2xvciIsImlzQWN0aXZlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJmaWxsIiwiY3giLCJjeSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImJvb2wiLCJkZWZhdWx0UHJvcHMiLCJWb2NhbCIsImNvbW1hbmRzIiwidGltZW91dCIsImFyaWFMYWJlbCIsInN0eWxlIiwiY2xhc3NOYW1lIiwib3V0bGluZVN0eWxlIiwib25TdGFydCIsIm9uRW5kIiwib25TcGVlY2hTdGFydCIsIm9uU3BlZWNoRW5kIiwib25SZXN1bHQiLCJvbkVycm9yIiwib25Ob01hdGNoIiwiYnV0dG9uUmVmIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGUiLCJpc0xpc3RlbmluZyIsInNldElzTGlzdGVuaW5nIiwiX3VzZVZvY2FsMiQiLCJ0cmlnZ2VyQ29tbWFuZCIsIl9PYmplY3QkZW50cmllcyIsInByZWNpc2lvbiIsInJlZHVjZSIsImFjYyIsIl9yZWYyIiwiX2RlZmluZVByb3BlcnR5IiwiaW5wdXQiLCJmdXNlIiwiX2NvbW1hbmRzJGtleSIsIl9jb21tYW5kcyIsInVzZUNvbW1hbmRzIiwiX29uRW5kIiwic3RvcFRpbWVyIiwic3RvcFJlY29nbml0aW9uIiwiX29uU3RhcnQiLCJfb25TcGVlY2hTdGFydCIsIl9vblNwZWVjaEVuZCIsIl9vblJlc3VsdCIsIl9vbkVycm9yIiwiX29uTm9NYXRjaCIsIl91c2VUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInVzZVRpbWVvdXQiLCJfdXNlVGltZW91dDIiLCJzdGFydFRpbWVyIiwic3RhcnRSZWNvZ25pdGlvbiIsIl9vbkNsaWNrIiwiX29uRm9jdXMiLCJvdXRsaW5lIiwiX29uQmx1ciIsImV2ZW50IiwiX3JlbmRlckNoaWxkcmVuIiwiaXNGdW5jdGlvbiIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwiX29iamVjdFNwcmVhZCIsIm9uQ2xpY2siLCJyb2xlIiwiYmFja2dyb3VuZCIsImJvcmRlciIsInBhZGRpbmciLCJjdXJzb3IiLCJvbkZvY3VzIiwib25CbHVyIiwiaWNvbkNvbG9yIiwib2JqZWN0T2YiLCJmdW5jIiwib2JqZWN0IiwibnVtYmVyIl0sIm1hcHBpbmdzIjoiOHdEQUFBLElBQUlBLEVBQUUsU0FBU0EsRUFBRUMsRUFBRUMsR0FBRyxnQkFBcU5GLEdBQUcsSUFBSUMsRUFBRSxTQUFTRCxHQUFHLElBQUlDLEVBQUVFLE9BQU9DLFVBQVVGLEVBQUVELEVBQUVJLGVBQWVDLEVBQUUsbUJBQW1CQyxPQUFPQSxPQUFPLEdBQUdDLEVBQUVGLEVBQUVHLFVBQVUsYUFBYUMs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
1
+ import { cloneElement as e, isValidElement as t, useCallback as n, useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
2
+ //#region \0rolldown/runtime.js
3
+ var s = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), c = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
4
+ if (typeof require < "u") return require.apply(this, arguments);
5
+ throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
6
+ }), l = function(e, t, n) {
7
+ return e(n = {
8
+ path: t,
9
+ exports: {},
10
+ require: function(e, t) {
11
+ return function() {
12
+ throw Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");
13
+ }(t == null && n.path);
14
+ }
15
+ }, n.exports), n.exports;
16
+ }((function(e) {
17
+ var t = function(e) {
18
+ var t = Object.prototype, n = t.hasOwnProperty, r = typeof Symbol == "function" ? Symbol : {}, i = r.iterator || "@@iterator", a = r.asyncIterator || "@@asyncIterator", o = r.toStringTag || "@@toStringTag";
19
+ function s(e, t, n) {
20
+ return Object.defineProperty(e, t, {
21
+ value: n,
22
+ enumerable: !0,
23
+ configurable: !0,
24
+ writable: !0
25
+ }), e[t];
26
+ }
27
+ try {
28
+ s({}, "");
29
+ } catch {
30
+ s = function(e, t, n) {
31
+ return e[t] = n;
32
+ };
33
+ }
34
+ function c(e, t, n, r) {
35
+ var i = t && t.prototype instanceof d ? t : d, a = Object.create(i.prototype);
36
+ return a._invoke = function(e, t, n) {
37
+ var r = "suspendedStart";
38
+ return function(i, a) {
39
+ if (r === "executing") throw Error("Generator is already running");
40
+ if (r === "completed") {
41
+ if (i === "throw") throw a;
42
+ return T();
43
+ }
44
+ for (n.method = i, n.arg = a;;) {
45
+ var o = n.delegate;
46
+ if (o) {
47
+ var s = b(o, n);
48
+ if (s) {
49
+ if (s === u) continue;
50
+ return s;
51
+ }
52
+ }
53
+ if (n.method === "next") n.sent = n._sent = n.arg;
54
+ else if (n.method === "throw") {
55
+ if (r === "suspendedStart") throw r = "completed", n.arg;
56
+ n.dispatchException(n.arg);
57
+ } else n.method === "return" && n.abrupt("return", n.arg);
58
+ r = "executing";
59
+ var c = l(e, t, n);
60
+ if (c.type === "normal") {
61
+ if (r = n.done ? "completed" : "suspendedYield", c.arg === u) continue;
62
+ return {
63
+ value: c.arg,
64
+ done: n.done
65
+ };
66
+ }
67
+ c.type === "throw" && (r = "completed", n.method = "throw", n.arg = c.arg);
68
+ }
69
+ };
70
+ }(e, n, new C(r || [])), a;
71
+ }
72
+ function l(e, t, n) {
73
+ try {
74
+ return {
75
+ type: "normal",
76
+ arg: e.call(t, n)
77
+ };
78
+ } catch (e) {
79
+ return {
80
+ type: "throw",
81
+ arg: e
82
+ };
83
+ }
84
+ }
85
+ e.wrap = c;
86
+ var u = {};
87
+ function d() {}
88
+ function f() {}
89
+ function p() {}
90
+ var m = {};
91
+ m[i] = function() {
92
+ return this;
93
+ };
94
+ var h = Object.getPrototypeOf, g = h && h(h(w([])));
95
+ g && g !== t && n.call(g, i) && (m = g);
96
+ var _ = p.prototype = d.prototype = Object.create(m);
97
+ function v(e) {
98
+ [
99
+ "next",
100
+ "throw",
101
+ "return"
102
+ ].forEach((function(t) {
103
+ s(e, t, (function(e) {
104
+ return this._invoke(t, e);
105
+ }));
106
+ }));
107
+ }
108
+ function y(e, t) {
109
+ var r;
110
+ this._invoke = function(i, a) {
111
+ function o() {
112
+ return new t((function(r, o) {
113
+ (function r(i, a, o, s) {
114
+ var c = l(e[i], e, a);
115
+ if (c.type !== "throw") {
116
+ var u = c.arg, d = u.value;
117
+ return d && typeof d == "object" && n.call(d, "__await") ? t.resolve(d.__await).then((function(e) {
118
+ r("next", e, o, s);
119
+ }), (function(e) {
120
+ r("throw", e, o, s);
121
+ })) : t.resolve(d).then((function(e) {
122
+ u.value = e, o(u);
123
+ }), (function(e) {
124
+ return r("throw", e, o, s);
125
+ }));
126
+ }
127
+ s(c.arg);
128
+ })(i, a, r, o);
129
+ }));
130
+ }
131
+ return r = r ? r.then(o, o) : o();
132
+ };
133
+ }
134
+ function b(e, t) {
135
+ var n = e.iterator[t.method];
136
+ if (n === void 0) {
137
+ if (t.delegate = null, t.method === "throw") {
138
+ if (e.iterator.return && (t.method = "return", t.arg = void 0, b(e, t), t.method === "throw")) return u;
139
+ t.method = "throw", t.arg = /* @__PURE__ */ TypeError("The iterator does not provide a 'throw' method");
140
+ }
141
+ return u;
142
+ }
143
+ var r = l(n, e.iterator, t.arg);
144
+ if (r.type === "throw") return t.method = "throw", t.arg = r.arg, t.delegate = null, u;
145
+ var i = r.arg;
146
+ return i ? i.done ? (t[e.resultName] = i.value, t.next = e.nextLoc, t.method !== "return" && (t.method = "next", t.arg = void 0), t.delegate = null, u) : i : (t.method = "throw", t.arg = /* @__PURE__ */ TypeError("iterator result is not an object"), t.delegate = null, u);
147
+ }
148
+ function x(e) {
149
+ var t = { tryLoc: e[0] };
150
+ 1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t);
151
+ }
152
+ function S(e) {
153
+ var t = e.completion || {};
154
+ t.type = "normal", delete t.arg, e.completion = t;
155
+ }
156
+ function C(e) {
157
+ this.tryEntries = [{ tryLoc: "root" }], e.forEach(x, this), this.reset(!0);
158
+ }
159
+ function w(e) {
160
+ if (e) {
161
+ var t = e[i];
162
+ if (t) return t.call(e);
163
+ if (typeof e.next == "function") return e;
164
+ if (!isNaN(e.length)) {
165
+ var r = -1, a = function t() {
166
+ for (; ++r < e.length;) if (n.call(e, r)) return t.value = e[r], t.done = !1, t;
167
+ return t.value = void 0, t.done = !0, t;
168
+ };
169
+ return a.next = a;
170
+ }
171
+ }
172
+ return { next: T };
173
+ }
174
+ function T() {
175
+ return {
176
+ value: void 0,
177
+ done: !0
178
+ };
179
+ }
180
+ return f.prototype = _.constructor = p, p.constructor = f, f.displayName = s(p, o, "GeneratorFunction"), e.isGeneratorFunction = function(e) {
181
+ var t = typeof e == "function" && e.constructor;
182
+ return !!t && (t === f || (t.displayName || t.name) === "GeneratorFunction");
183
+ }, e.mark = function(e) {
184
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, p) : (e.__proto__ = p, s(e, o, "GeneratorFunction")), e.prototype = Object.create(_), e;
185
+ }, e.awrap = function(e) {
186
+ return { __await: e };
187
+ }, v(y.prototype), y.prototype[a] = function() {
188
+ return this;
189
+ }, e.AsyncIterator = y, e.async = function(t, n, r, i, a) {
190
+ a === void 0 && (a = Promise);
191
+ var o = new y(c(t, n, r, i), a);
192
+ return e.isGeneratorFunction(n) ? o : o.next().then((function(e) {
193
+ return e.done ? e.value : o.next();
194
+ }));
195
+ }, v(_), s(_, o, "Generator"), _[i] = function() {
196
+ return this;
197
+ }, _.toString = function() {
198
+ return "[object Generator]";
199
+ }, e.keys = function(e) {
200
+ var t = [];
201
+ for (var n in e) t.push(n);
202
+ return t.reverse(), function n() {
203
+ for (; t.length;) {
204
+ var r = t.pop();
205
+ if (r in e) return n.value = r, n.done = !1, n;
206
+ }
207
+ return n.done = !0, n;
208
+ };
209
+ }, e.values = w, C.prototype = {
210
+ constructor: C,
211
+ reset: function(e) {
212
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(S), !e) for (var t in this) t.charAt(0) === "t" && n.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = void 0);
213
+ },
214
+ stop: function() {
215
+ this.done = !0;
216
+ var e = this.tryEntries[0].completion;
217
+ if (e.type === "throw") throw e.arg;
218
+ return this.rval;
219
+ },
220
+ dispatchException: function(e) {
221
+ if (this.done) throw e;
222
+ var t = this;
223
+ function r(n, r) {
224
+ return o.type = "throw", o.arg = e, t.next = n, r && (t.method = "next", t.arg = void 0), !!r;
225
+ }
226
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
227
+ var a = this.tryEntries[i], o = a.completion;
228
+ if (a.tryLoc === "root") return r("end");
229
+ if (a.tryLoc <= this.prev) {
230
+ var s = n.call(a, "catchLoc"), c = n.call(a, "finallyLoc");
231
+ if (s && c) {
232
+ if (this.prev < a.catchLoc) return r(a.catchLoc, !0);
233
+ if (this.prev < a.finallyLoc) return r(a.finallyLoc);
234
+ } else if (s) {
235
+ if (this.prev < a.catchLoc) return r(a.catchLoc, !0);
236
+ } else {
237
+ if (!c) throw Error("try statement without catch or finally");
238
+ if (this.prev < a.finallyLoc) return r(a.finallyLoc);
239
+ }
240
+ }
241
+ }
242
+ },
243
+ abrupt: function(e, t) {
244
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
245
+ var i = this.tryEntries[r];
246
+ if (i.tryLoc <= this.prev && n.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
247
+ var a = i;
248
+ break;
249
+ }
250
+ }
251
+ a && (e === "break" || e === "continue") && a.tryLoc <= t && t <= a.finallyLoc && (a = null);
252
+ var o = a ? a.completion : {};
253
+ return o.type = e, o.arg = t, a ? (this.method = "next", this.next = a.finallyLoc, u) : this.complete(o);
254
+ },
255
+ complete: function(e, t) {
256
+ if (e.type === "throw") throw e.arg;
257
+ return e.type === "break" || e.type === "continue" ? this.next = e.arg : e.type === "return" ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : e.type === "normal" && t && (this.next = t), u;
258
+ },
259
+ finish: function(e) {
260
+ for (var t = this.tryEntries.length - 1; t >= 0; --t) {
261
+ var n = this.tryEntries[t];
262
+ if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), S(n), u;
263
+ }
264
+ },
265
+ catch: function(e) {
266
+ for (var t = this.tryEntries.length - 1; t >= 0; --t) {
267
+ var n = this.tryEntries[t];
268
+ if (n.tryLoc === e) {
269
+ var r = n.completion;
270
+ if (r.type === "throw") {
271
+ var i = r.arg;
272
+ S(n);
273
+ }
274
+ return i;
275
+ }
276
+ }
277
+ throw Error("illegal catch attempt");
278
+ },
279
+ delegateYield: function(e, t, n) {
280
+ return this.delegate = {
281
+ iterator: w(e),
282
+ resultName: t,
283
+ nextLoc: n
284
+ }, this.method === "next" && (this.arg = void 0), u;
285
+ }
286
+ }, e;
287
+ }(e.exports);
288
+ try {
289
+ regeneratorRuntime = t;
290
+ } catch {
291
+ Function("r", "regeneratorRuntime = r")(t);
292
+ }
293
+ }));
294
+ function u(e, t, n, r, i, a, o) {
295
+ try {
296
+ var s = e[a](o), c = s.value;
297
+ } catch (e) {
298
+ n(e);
299
+ return;
300
+ }
301
+ s.done ? t(c) : Promise.resolve(c).then(r, i);
302
+ }
303
+ var d = function(e) {
304
+ return function() {
305
+ var t = this, n = arguments;
306
+ return new Promise((function(r, i) {
307
+ var a = e.apply(t, n);
308
+ function o(e) {
309
+ u(a, r, i, o, s, "next", e);
310
+ }
311
+ function s(e) {
312
+ u(a, r, i, o, s, "throw", e);
313
+ }
314
+ o(void 0);
315
+ }));
316
+ };
317
+ }, f = function(e) {
318
+ if (Array.isArray(e)) return e;
319
+ }, p = function(e, t) {
320
+ if (typeof Symbol < "u" && Symbol.iterator in Object(e)) {
321
+ var n = [], r = !0, i = !1, a = void 0;
322
+ try {
323
+ for (var o, s = e[Symbol.iterator](); !(r = (o = s.next()).done) && (n.push(o.value), !t || n.length !== t); r = !0);
324
+ } catch (e) {
325
+ i = !0, a = e;
326
+ } finally {
327
+ try {
328
+ r || s.return == null || s.return();
329
+ } finally {
330
+ if (i) throw a;
331
+ }
332
+ }
333
+ return n;
334
+ }
335
+ }, m = function(e, t) {
336
+ (t == null || t > e.length) && (t = e.length);
337
+ for (var n = 0, r = Array(t); n < t; n++) r[n] = e[n];
338
+ return r;
339
+ }, h = function(e, t) {
340
+ if (e) {
341
+ if (typeof e == "string") return m(e, t);
342
+ var n = Object.prototype.toString.call(e).slice(8, -1);
343
+ return n === "Object" && e.constructor && (n = e.constructor.name), n === "Map" || n === "Set" ? Array.from(e) : n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? m(e, t) : void 0;
344
+ }
345
+ }, g = function() {
346
+ throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
347
+ }, _ = function(e, t) {
348
+ return f(e) || p(e, t) || h(e, t) || g();
349
+ }, v = function(e, t) {
350
+ if (!(e instanceof t)) throw TypeError("Cannot call a class as a function");
351
+ };
352
+ function y(e, t) {
353
+ for (var n = 0; n < t.length; n++) {
354
+ var r = t[n];
355
+ r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);
356
+ }
357
+ }
358
+ var b = function(e, t, n) {
359
+ return t && y(e.prototype, t), n && y(e, n), e;
360
+ }, x = function(e, t, n) {
361
+ return t in e ? Object.defineProperty(e, t, {
362
+ value: n,
363
+ enumerable: !0,
364
+ configurable: !0,
365
+ writable: !0
366
+ }) : e[t] = n, e;
367
+ }, S = function() {
368
+ return !!navigator.permissions;
369
+ }, C = function() {
370
+ return !!navigator.mediaDevices;
371
+ };
372
+ function w(e, t, n, r, i, a, o) {
373
+ try {
374
+ var s = e[a](o), c = s.value;
375
+ } catch (e) {
376
+ n(e);
377
+ return;
378
+ }
379
+ s.done ? t(c) : Promise.resolve(c).then(r, i);
380
+ }
381
+ function T(e) {
382
+ return function() {
383
+ var t = this, n = arguments;
384
+ return new Promise((function(r, i) {
385
+ var a = e.apply(t, n);
386
+ function o(e) {
387
+ w(a, r, i, o, s, "next", e);
388
+ }
389
+ function s(e) {
390
+ w(a, r, i, o, s, "throw", e);
391
+ }
392
+ o(void 0);
393
+ }));
394
+ };
395
+ }
396
+ function E(e, t) {
397
+ return function(e) {
398
+ if (Array.isArray(e)) return e;
399
+ }(e) || function(e, t) {
400
+ if (typeof Symbol < "u" && Symbol.iterator in Object(e)) {
401
+ var n = [], r = !0, i = !1, a = void 0;
402
+ try {
403
+ for (var o, s = e[Symbol.iterator](); !(r = (o = s.next()).done) && (n.push(o.value), !t || n.length !== t); r = !0);
404
+ } catch (e) {
405
+ i = !0, a = e;
406
+ } finally {
407
+ try {
408
+ r || s.return == null || s.return();
409
+ } finally {
410
+ if (i) throw a;
411
+ }
412
+ }
413
+ return n;
414
+ }
415
+ }(e, t) || function(e, t) {
416
+ if (e) {
417
+ if (typeof e == "string") return D(e, t);
418
+ var n = Object.prototype.toString.call(e).slice(8, -1);
419
+ return n === "Object" && e.constructor && (n = e.constructor.name), n === "Map" || n === "Set" ? Array.from(e) : n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? D(e, t) : void 0;
420
+ }
421
+ }(e, t) || function() {
422
+ throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
423
+ }();
424
+ }
425
+ function D(e, t) {
426
+ (t == null || t > e.length) && (t = e.length);
427
+ for (var n = 0, r = Array(t); n < t; n++) r[n] = e[n];
428
+ return r;
429
+ }
430
+ var ee = function() {
431
+ var e = T(regeneratorRuntime.mark((function e(t) {
432
+ return regeneratorRuntime.wrap((function(e) {
433
+ for (;;) switch (e.prev = e.next) {
434
+ case 0: return e.abrupt("return", new Promise(function() {
435
+ var e = T(regeneratorRuntime.mark((function e(n, r) {
436
+ var i, a;
437
+ return regeneratorRuntime.wrap((function(e) {
438
+ for (;;) switch (e.prev = e.next) {
439
+ case 0: return S() || r(new DOMException("Navigator API: permissions not supported", "NOT_SUPPORTED_ERR")), e.prev = 1, e.next = 4, navigator.permissions.query({ name: t });
440
+ case 4:
441
+ i = e.sent, a = function e(t) {
442
+ i.removeEventListener("change", e), O(t.target.state, n, r);
443
+ }, i.addEventListener("change", a), O(i.state, n, r), e.next = 13;
444
+ break;
445
+ case 10: e.prev = 10, e.t0 = e.catch(1), r(e.t0);
446
+ case 13:
447
+ case "end": return e.stop();
448
+ }
449
+ }), e, null, [[1, 10]]);
450
+ })));
451
+ return function(t, n) {
452
+ return e.apply(this, arguments);
453
+ };
454
+ }()));
455
+ case 1:
456
+ case "end": return e.stop();
457
+ }
458
+ }), e);
459
+ })));
460
+ return function(t) {
461
+ return e.apply(this, arguments);
462
+ };
463
+ }(), O = function(e, t, n) {
464
+ switch (e) {
465
+ case "denied":
466
+ n(new DOMException("Permission denied", "NOT_ALLOWED_ERR"));
467
+ break;
468
+ default: t(e);
469
+ }
470
+ }, k = function() {
471
+ var e = T(regeneratorRuntime.mark((function e(t, n) {
472
+ return regeneratorRuntime.wrap((function(e) {
473
+ for (;;) switch (e.prev = e.next) {
474
+ case 0: return e.abrupt("return", new Promise(function() {
475
+ var e = T(regeneratorRuntime.mark((function e(r, i) {
476
+ var a, o, s;
477
+ return regeneratorRuntime.wrap((function(e) {
478
+ for (;;) switch (e.prev = e.next) {
479
+ case 0: return S() && C() || i(new DOMException("Navigator API: permissions or Navigator API: mediaDevices not supported", "NOT_SUPPORTED_ERR")), e.prev = 1, e.t0 = Promise, e.next = 5, ee(t);
480
+ case 5: return e.t1 = e.sent, e.next = 8, navigator.mediaDevices.getUserMedia(n);
481
+ case 8: return e.t2 = e.sent, e.t3 = [e.t1, e.t2], e.next = 12, e.t0.all.call(e.t0, e.t3);
482
+ case 12:
483
+ a = e.sent, o = E(a, 2), s = o[1], r(s), e.next = 21;
484
+ break;
485
+ case 18: e.prev = 18, e.t4 = e.catch(1), i(e.t4);
486
+ case 21:
487
+ case "end": return e.stop();
488
+ }
489
+ }), e, null, [[1, 18]]);
490
+ })));
491
+ return function(t, n) {
492
+ return e.apply(this, arguments);
493
+ };
494
+ }()));
495
+ case 1:
496
+ case "end": return e.stop();
497
+ }
498
+ }), e);
499
+ })));
500
+ return function(t, n) {
501
+ return e.apply(this, arguments);
502
+ };
503
+ }();
504
+ function A(e, t) {
505
+ var n = Object.keys(e);
506
+ if (Object.getOwnPropertySymbols) {
507
+ var r = Object.getOwnPropertySymbols(e);
508
+ t && (r = r.filter((function(t) {
509
+ return Object.getOwnPropertyDescriptor(e, t).enumerable;
510
+ }))), n.push.apply(n, r);
511
+ }
512
+ return n;
513
+ }
514
+ function j(e) {
515
+ for (var t = 1; t < arguments.length; t++) {
516
+ var n = arguments[t] == null ? {} : arguments[t];
517
+ t % 2 ? A(Object(n), !0).forEach((function(t) {
518
+ x(e, t, n[t]);
519
+ })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : A(Object(n)).forEach((function(t) {
520
+ Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
521
+ }));
522
+ }
523
+ return e;
524
+ }
525
+ var M = function() {
526
+ function e(t) {
527
+ var n = this;
528
+ v(this, e), x(this, "_instance", null), x(this, "_listeners", null);
529
+ var r = e._resolveSpeechRecognition();
530
+ if (!r) throw new DOMException("SpeechRecognition not supported", "NOT_SUPPORTED_ERR");
531
+ this._instance = new r(), this._listeners = {}, Object.entries(j(j({}, e.defaultOptions), t || {})).forEach((function(t) {
532
+ var r = _(t, 2), i = r[0], a = r[1];
533
+ if (i === "grammars" && !a) {
534
+ var o = e._resolveSpeechGrammarList();
535
+ o && (a = new o());
536
+ }
537
+ n._instance[i] = a;
538
+ }));
539
+ }
540
+ var t;
541
+ return b(e, null, [{
542
+ key: "isSupported",
543
+ get: function() {
544
+ return !!e._resolveSpeechRecognition() && !!S() && !!C();
545
+ },
546
+ set: function(e) {
547
+ throw Error("You cannot set isSupported directly.");
548
+ }
549
+ }]), b(e, [
550
+ {
551
+ key: "start",
552
+ value: (t = d(l.mark((function e() {
553
+ var t;
554
+ return l.wrap((function(e) {
555
+ for (;;) switch (e.prev = e.next) {
556
+ case 0:
557
+ if (!this._instance) {
558
+ e.next = 14;
559
+ break;
560
+ }
561
+ return e.prev = 1, e.next = 4, k("microphone", { audio: !0 });
562
+ case 4:
563
+ if (e.sent) {
564
+ e.next = 7;
565
+ break;
566
+ }
567
+ throw Error("Unable to retrieve the stream from media device");
568
+ case 7:
569
+ this._instance.start(), e.next = 14;
570
+ break;
571
+ case 10: e.prev = 10, e.t0 = e.catch(1), (t = this._listeners.error) && t(e.t0);
572
+ case 14: return e.abrupt("return", this);
573
+ case 15:
574
+ case "end": return e.stop();
575
+ }
576
+ }), e, this, [[1, 10]]);
577
+ }))), function() {
578
+ return t.apply(this, arguments);
579
+ })
580
+ },
581
+ {
582
+ key: "stop",
583
+ value: function() {
584
+ return this._instance && this._instance.stop(), this;
585
+ }
586
+ },
587
+ {
588
+ key: "abort",
589
+ value: function() {
590
+ return this._instance && this._instance.abort(), this;
591
+ }
592
+ },
593
+ {
594
+ key: "addEventListener",
595
+ value: function(t, n) {
596
+ var r = this;
597
+ if (this._instance && this._includesEventType(t)) {
598
+ this._listeners[t] && this.removeEventListener(t);
599
+ var i = function(i) {
600
+ var a = [];
601
+ t === e.eventTypes.RESULT && i.results && i.results.length > 0 && a.push(i.results[0][0].transcript), n && n.apply(r, [i].concat(a));
602
+ };
603
+ this._instance.addEventListener(t, i), this._listeners[t] = i;
604
+ }
605
+ return this;
606
+ }
607
+ },
608
+ {
609
+ key: "removeEventListener",
610
+ value: function(e) {
611
+ var t = this._listeners[e];
612
+ return this._instance.removeEventListener(e, t), delete this._listeners[e], this;
613
+ }
614
+ },
615
+ {
616
+ key: "cleanup",
617
+ value: function() {
618
+ var e = this;
619
+ return this.stop(), Object.keys(this._listeners).forEach((function(t) {
620
+ return e.removeEventListener(t);
621
+ })), this._instance = null, this;
622
+ }
623
+ },
624
+ {
625
+ key: "_includesEventType",
626
+ value: function(t) {
627
+ return !!Object.values(e.eventTypes).find((function(e) {
628
+ return e === t;
629
+ }));
630
+ }
631
+ },
632
+ {
633
+ key: "instance",
634
+ get: function() {
635
+ return this._instance;
636
+ },
637
+ set: function(e) {
638
+ throw Error("You cannot set instance directly.");
639
+ }
640
+ }
641
+ ], [{
642
+ key: "_resolveSpeechRecognition",
643
+ value: function() {
644
+ return window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition;
645
+ }
646
+ }, {
647
+ key: "_resolveSpeechGrammarList",
648
+ value: function() {
649
+ return window.SpeechGrammarList || window.webkitSpeechGrammarList || window.mozSpeechGrammarList || window.msSpeechGrammarList;
650
+ }
651
+ }]), e;
652
+ }();
653
+ x(M, "defaultOptions", {
654
+ grammars: null,
655
+ lang: "en-US",
656
+ continuous: !1,
657
+ interimResults: !1,
658
+ maxAlternatives: 1,
659
+ serviceURI: null
660
+ }), x(M, "eventTypes", {
661
+ AUDIO_END: "audioend",
662
+ AUDIO_START: "audiostart",
663
+ END: "end",
664
+ ERROR: "error",
665
+ NO_MATCH: "nomatch",
666
+ RESULT: "result",
667
+ SOUND_END: "soundend",
668
+ SOUND_START: "soundstart",
669
+ SPEECH_END: "speechend",
670
+ SPEECH_START: "speechstart",
671
+ START: "start"
672
+ });
673
+ //#endregion
674
+ //#region node_modules/@untemps/utils/dist/function/isFunction.js
675
+ var te = (e) => typeof e == "function", N = (e = "en-US", t = null, i = null) => {
676
+ let o = a(null);
677
+ return r(() => {
678
+ if (M.isSupported) return o.current = i || new M({
679
+ lang: e,
680
+ grammars: t
681
+ }), () => {
682
+ o.current.abort(), o.current.cleanup();
683
+ };
684
+ }, [
685
+ e,
686
+ t,
687
+ i
688
+ ]), [o, {
689
+ start: n(() => {
690
+ o.current && o.current.start();
691
+ }, []),
692
+ stop: n(() => {
693
+ o.current && o.current.stop();
694
+ }, []),
695
+ abort: n(() => {
696
+ o.current && o.current.abort();
697
+ }, []),
698
+ subscribe: n((e, t) => {
699
+ o.current && o.current.addEventListener(e, t);
700
+ }, []),
701
+ unsubscribe: n((e, t) => {
702
+ o.current && o.current.removeEventListener(e, t);
703
+ }, []),
704
+ clean: n(() => {
705
+ o.current && o.current.cleanup();
706
+ }, [])
707
+ }];
708
+ }, ne = (e, t = 0) => {
709
+ let i = a(-1), o = n(() => {
710
+ clearTimeout(i.current), i.current = -1;
711
+ }, []), s = n(() => {
712
+ o(), i.current = setTimeout(e, t);
713
+ }, [
714
+ e,
715
+ t,
716
+ o
717
+ ]);
718
+ return r(() => o, [o]), [s, o];
719
+ };
720
+ //#endregion
721
+ //#region node_modules/fuse.js/dist/fuse.mjs
722
+ function P(e) {
723
+ return Array.isArray ? Array.isArray(e) : H(e) === "[object Array]";
724
+ }
725
+ function F(e) {
726
+ if (typeof e == "string") return e;
727
+ if (typeof e == "bigint") return e.toString();
728
+ let t = e + "";
729
+ return t == "0" && 1 / e == -Infinity ? "-0" : t;
730
+ }
731
+ function I(e) {
732
+ return e == null ? "" : F(e);
733
+ }
734
+ function L(e) {
735
+ return typeof e == "string";
736
+ }
737
+ function R(e) {
738
+ return typeof e == "number";
739
+ }
740
+ function re(e) {
741
+ return e === !0 || e === !1 || ie(e) && H(e) == "[object Boolean]";
742
+ }
743
+ function z(e) {
744
+ return typeof e == "object";
745
+ }
746
+ function ie(e) {
747
+ return z(e) && e !== null;
748
+ }
749
+ function B(e) {
750
+ return e != null;
751
+ }
752
+ function V(e) {
753
+ return !e.trim().length;
754
+ }
755
+ function H(e) {
756
+ return e == null ? e === void 0 ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(e);
757
+ }
758
+ var U = "Incorrect 'index' type", W = (e) => `Invalid value for key ${e}`, G = (e) => `Pattern length exceeds max of ${e}.`, ae = (e) => `Missing ${e} property in key`, oe = (e) => `Property 'weight' in key '${e}' must be a positive integer`, se = Object.prototype.hasOwnProperty, ce = class {
759
+ constructor(e) {
760
+ this._keys = [], this._keyMap = {};
761
+ let t = 0;
762
+ e.forEach((e) => {
763
+ let n = le(e);
764
+ this._keys.push(n), this._keyMap[n.id] = n, t += n.weight;
765
+ }), this._keys.forEach((e) => {
766
+ e.weight /= t;
767
+ });
768
+ }
769
+ get(e) {
770
+ return this._keyMap[e];
771
+ }
772
+ keys() {
773
+ return this._keys;
774
+ }
775
+ toJSON() {
776
+ return JSON.stringify(this._keys);
777
+ }
778
+ };
779
+ function le(e) {
780
+ let t = null, n = null, r = null, i = 1, a = null;
781
+ if (L(e) || P(e)) r = e, t = ue(e), n = de(e);
782
+ else {
783
+ if (!se.call(e, "name")) throw Error(ae("name"));
784
+ let o = e.name;
785
+ if (r = o, se.call(e, "weight") && (i = e.weight, i <= 0)) throw Error(oe(o));
786
+ t = ue(o), n = de(o), a = e.getFn;
787
+ }
788
+ return {
789
+ path: t,
790
+ id: n,
791
+ weight: i,
792
+ src: r,
793
+ getFn: a
794
+ };
795
+ }
796
+ function ue(e) {
797
+ return P(e) ? e : e.split(".");
798
+ }
799
+ function de(e) {
800
+ return P(e) ? e.join(".") : e;
801
+ }
802
+ function fe(e, t) {
803
+ let n = [], r = !1, i = (e, t, a, o) => {
804
+ if (B(e)) if (!t[a]) n.push(o === void 0 ? e : {
805
+ v: e,
806
+ i: o
807
+ });
808
+ else {
809
+ let s = e[t[a]];
810
+ if (!B(s)) return;
811
+ if (a === t.length - 1 && (L(s) || R(s) || re(s) || typeof s == "bigint")) n.push(o === void 0 ? I(s) : {
812
+ v: I(s),
813
+ i: o
814
+ });
815
+ else if (P(s)) {
816
+ r = !0;
817
+ for (let e = 0, n = s.length; e < n; e += 1) i(s[e], t, a + 1, e);
818
+ } else t.length && i(s, t, a + 1, o);
819
+ }
820
+ };
821
+ return i(e, L(t) ? t.split(".") : t, 0), r ? n : n[0];
822
+ }
823
+ var pe = {
824
+ includeMatches: !1,
825
+ findAllMatches: !1,
826
+ minMatchCharLength: 1
827
+ }, me = {
828
+ isCaseSensitive: !1,
829
+ ignoreDiacritics: !1,
830
+ includeScore: !1,
831
+ keys: [],
832
+ shouldSort: !0,
833
+ sortFn: (e, t) => e.score === t.score ? e.idx < t.idx ? -1 : 1 : e.score < t.score ? -1 : 1
834
+ }, he = {
835
+ location: 0,
836
+ threshold: .6,
837
+ distance: 100
838
+ }, ge = {
839
+ useExtendedSearch: !1,
840
+ useTokenSearch: !1,
841
+ getFn: fe,
842
+ ignoreLocation: !1,
843
+ ignoreFieldNorm: !1,
844
+ fieldNormWeight: 1
845
+ }, K = Object.freeze({
846
+ ...me,
847
+ ...pe,
848
+ ...he,
849
+ ...ge
850
+ }), _e = /[^ ]+/g;
851
+ function ve(e = 1, t = 3) {
852
+ let n = /* @__PURE__ */ new Map(), r = 10 ** t;
853
+ return {
854
+ get(t) {
855
+ let i = t.match(_e).length;
856
+ if (n.has(i)) return n.get(i);
857
+ let a = 1 / i ** (.5 * e), o = parseFloat(Math.round(a * r) / r);
858
+ return n.set(i, o), o;
859
+ },
860
+ clear() {
861
+ n.clear();
862
+ }
863
+ };
864
+ }
865
+ var ye = class {
866
+ constructor({ getFn: e = K.getFn, fieldNormWeight: t = K.fieldNormWeight } = {}) {
867
+ this.norm = ve(t, 3), this.getFn = e, this.isCreated = !1, this.docs = [], this.keys = [], this._keysMap = {}, this.setIndexRecords();
868
+ }
869
+ setSources(e = []) {
870
+ this.docs = e;
871
+ }
872
+ setIndexRecords(e = []) {
873
+ this.records = e;
874
+ }
875
+ setKeys(e = []) {
876
+ this.keys = e, this._keysMap = {}, e.forEach((e, t) => {
877
+ this._keysMap[e.id] = t;
878
+ });
879
+ }
880
+ create() {
881
+ this.isCreated || !this.docs.length || (this.isCreated = !0, L(this.docs[0]) ? this.docs.forEach((e, t) => {
882
+ this._addString(e, t);
883
+ }) : this.docs.forEach((e, t) => {
884
+ this._addObject(e, t);
885
+ }), this.norm.clear());
886
+ }
887
+ add(e) {
888
+ let t = this.size();
889
+ L(e) ? this._addString(e, t) : this._addObject(e, t);
890
+ }
891
+ removeAt(e) {
892
+ this.records.splice(e, 1);
893
+ for (let t = e, n = this.size(); t < n; t += 1) --this.records[t].i;
894
+ }
895
+ removeAll(e) {
896
+ for (let t = e.length - 1; t >= 0; --t) this.records.splice(e[t], 1);
897
+ for (let e = 0, t = this.records.length; e < t; e += 1) this.records[e].i = e;
898
+ }
899
+ getValueForItemAtKeyId(e, t) {
900
+ return e[this._keysMap[t]];
901
+ }
902
+ size() {
903
+ return this.records.length;
904
+ }
905
+ _addString(e, t) {
906
+ if (!B(e) || V(e)) return;
907
+ let n = {
908
+ v: e,
909
+ i: t,
910
+ n: this.norm.get(e)
911
+ };
912
+ this.records.push(n);
913
+ }
914
+ _addObject(e, t) {
915
+ let n = {
916
+ i: t,
917
+ $: {}
918
+ };
919
+ this.keys.forEach((t, r) => {
920
+ let i = t.getFn ? t.getFn(e) : this.getFn(e, t.path);
921
+ if (B(i)) {
922
+ if (P(i)) {
923
+ let e = [];
924
+ for (let t = 0, n = i.length; t < n; t += 1) {
925
+ let n = i[t];
926
+ if (B(n)) {
927
+ if (L(n)) {
928
+ if (!V(n)) {
929
+ let r = {
930
+ v: n,
931
+ i: t,
932
+ n: this.norm.get(n)
933
+ };
934
+ e.push(r);
935
+ }
936
+ } else if (B(n.v)) {
937
+ let t = L(n.v) ? n.v : I(n.v);
938
+ if (!V(t)) {
939
+ let r = {
940
+ v: t,
941
+ i: n.i,
942
+ n: this.norm.get(t)
943
+ };
944
+ e.push(r);
945
+ }
946
+ }
947
+ }
948
+ }
949
+ n.$[r] = e;
950
+ } else if (L(i) && !V(i)) {
951
+ let e = {
952
+ v: i,
953
+ n: this.norm.get(i)
954
+ };
955
+ n.$[r] = e;
956
+ }
957
+ }
958
+ }), this.records.push(n);
959
+ }
960
+ toJSON() {
961
+ return {
962
+ keys: this.keys.map(({ getFn: e, ...t }) => t),
963
+ records: this.records
964
+ };
965
+ }
966
+ };
967
+ function be(e, t, { getFn: n = K.getFn, fieldNormWeight: r = K.fieldNormWeight } = {}) {
968
+ let i = new ye({
969
+ getFn: n,
970
+ fieldNormWeight: r
971
+ });
972
+ return i.setKeys(e.map(le)), i.setSources(t), i.create(), i;
973
+ }
974
+ function xe(e, { getFn: t = K.getFn, fieldNormWeight: n = K.fieldNormWeight } = {}) {
975
+ let { keys: r, records: i } = e, a = new ye({
976
+ getFn: t,
977
+ fieldNormWeight: n
978
+ });
979
+ return a.setKeys(r), a.setIndexRecords(i), a;
980
+ }
981
+ function Se(e = [], t = K.minMatchCharLength) {
982
+ let n = [], r = -1, i = -1, a = 0;
983
+ for (let o = e.length; a < o; a += 1) {
984
+ let o = e[a];
985
+ o && r === -1 ? r = a : !o && r !== -1 && (i = a - 1, i - r + 1 >= t && n.push([r, i]), r = -1);
986
+ }
987
+ return e[a - 1] && a - r >= t && n.push([r, a - 1]), n;
988
+ }
989
+ var q = 32;
990
+ function Ce(e, t, n, { location: r = K.location, distance: i = K.distance, threshold: a = K.threshold, findAllMatches: o = K.findAllMatches, minMatchCharLength: s = K.minMatchCharLength, includeMatches: c = K.includeMatches, ignoreLocation: l = K.ignoreLocation } = {}) {
991
+ if (t.length > q) throw Error(G(q));
992
+ let u = t.length, d = e.length, f = Math.max(0, Math.min(r, d)), p = a, m = f, h = (e, t) => {
993
+ let n = e / u;
994
+ if (l) return n;
995
+ let r = Math.abs(f - t);
996
+ return i ? n + r / i : r ? 1 : n;
997
+ }, g = s > 1 || c, _ = g ? Array(d) : [], v;
998
+ for (; (v = e.indexOf(t, m)) > -1;) {
999
+ let e = h(0, v);
1000
+ if (p = Math.min(e, p), m = v + u, g) {
1001
+ let e = 0;
1002
+ for (; e < u;) _[v + e] = 1, e += 1;
1003
+ }
1004
+ }
1005
+ m = -1;
1006
+ let y = [], b = 1, x = u + d, S = 1 << u - 1;
1007
+ for (let t = 0; t < u; t += 1) {
1008
+ let r = 0, i = x;
1009
+ for (; r < i;) h(t, f + i) <= p ? r = i : x = i, i = Math.floor((x - r) / 2 + r);
1010
+ x = i;
1011
+ let a = Math.max(1, f - i + 1), s = o ? d : Math.min(f + i, d) + u, c = Array(s + 2);
1012
+ c[s + 1] = (1 << t) - 1;
1013
+ for (let r = s; r >= a; --r) {
1014
+ let i = r - 1, o = n[e[i]];
1015
+ if (g && (_[i] = +!!o), c[r] = (c[r + 1] << 1 | 1) & o, t && (c[r] |= (y[r + 1] | y[r]) << 1 | 1 | y[r + 1]), c[r] & S && (b = h(t, i), b <= p)) {
1016
+ if (p = b, m = i, m <= f) break;
1017
+ a = Math.max(1, 2 * f - m);
1018
+ }
1019
+ }
1020
+ if (h(t + 1, f) > p) break;
1021
+ y = c;
1022
+ }
1023
+ let C = {
1024
+ isMatch: m >= 0,
1025
+ score: Math.max(.001, b)
1026
+ };
1027
+ if (g) {
1028
+ let e = Se(_, s);
1029
+ e.length ? c && (C.indices = e) : C.isMatch = !1;
1030
+ }
1031
+ return C;
1032
+ }
1033
+ function we(e) {
1034
+ let t = {};
1035
+ for (let n = 0, r = e.length; n < r; n += 1) {
1036
+ let i = e.charAt(n);
1037
+ t[i] = (t[i] || 0) | 1 << r - n - 1;
1038
+ }
1039
+ return t;
1040
+ }
1041
+ function Te(e) {
1042
+ if (e.length <= 1) return e;
1043
+ e.sort((e, t) => e[0] - t[0] || e[1] - t[1]);
1044
+ let t = [e[0]];
1045
+ for (let n = 1, r = e.length; n < r; n += 1) {
1046
+ let r = t[t.length - 1], i = e[n];
1047
+ i[0] <= r[1] + 1 ? r[1] = Math.max(r[1], i[1]) : t.push(i);
1048
+ }
1049
+ return t;
1050
+ }
1051
+ var Ee = {
1052
+ ł: "l",
1053
+ Ł: "L",
1054
+ đ: "d",
1055
+ Đ: "D",
1056
+ ø: "o",
1057
+ Ø: "O",
1058
+ ħ: "h",
1059
+ Ħ: "H",
1060
+ ŧ: "t",
1061
+ Ŧ: "T",
1062
+ ı: "i",
1063
+ ß: "ss"
1064
+ }, De = RegExp("[" + Object.keys(Ee).join("") + "]", "g"), J = String.prototype.normalize ? (e) => e.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g, "").replace(De, (e) => Ee[e]) : (e) => e, Oe = class {
1065
+ constructor(e, { location: t = K.location, threshold: n = K.threshold, distance: r = K.distance, includeMatches: i = K.includeMatches, findAllMatches: a = K.findAllMatches, minMatchCharLength: o = K.minMatchCharLength, isCaseSensitive: s = K.isCaseSensitive, ignoreDiacritics: c = K.ignoreDiacritics, ignoreLocation: l = K.ignoreLocation } = {}) {
1066
+ if (this.options = {
1067
+ location: t,
1068
+ threshold: n,
1069
+ distance: r,
1070
+ includeMatches: i,
1071
+ findAllMatches: a,
1072
+ minMatchCharLength: o,
1073
+ isCaseSensitive: s,
1074
+ ignoreDiacritics: c,
1075
+ ignoreLocation: l
1076
+ }, e = s ? e : e.toLowerCase(), e = c ? J(e) : e, this.pattern = e, this.chunks = [], !this.pattern.length) return;
1077
+ let u = (e, t) => {
1078
+ this.chunks.push({
1079
+ pattern: e,
1080
+ alphabet: we(e),
1081
+ startIndex: t
1082
+ });
1083
+ }, d = this.pattern.length;
1084
+ if (d > q) {
1085
+ let e = 0, t = d % q, n = d - t;
1086
+ for (; e < n;) u(this.pattern.substr(e, q), e), e += q;
1087
+ if (t) {
1088
+ let e = d - q;
1089
+ u(this.pattern.substr(e), e);
1090
+ }
1091
+ } else u(this.pattern, 0);
1092
+ }
1093
+ searchIn(e) {
1094
+ let { isCaseSensitive: t, ignoreDiacritics: n, includeMatches: r } = this.options;
1095
+ if (e = t ? e : e.toLowerCase(), e = n ? J(e) : e, this.pattern === e) {
1096
+ let t = {
1097
+ isMatch: !0,
1098
+ score: 0
1099
+ };
1100
+ return r && (t.indices = [[0, e.length - 1]]), t;
1101
+ }
1102
+ let { location: i, distance: a, threshold: o, findAllMatches: s, minMatchCharLength: c, ignoreLocation: l } = this.options, u = [], d = 0, f = !1;
1103
+ this.chunks.forEach(({ pattern: t, alphabet: n, startIndex: p }) => {
1104
+ let { isMatch: m, score: h, indices: g } = Ce(e, t, n, {
1105
+ location: i + p,
1106
+ distance: a,
1107
+ threshold: o,
1108
+ findAllMatches: s,
1109
+ minMatchCharLength: c,
1110
+ includeMatches: r,
1111
+ ignoreLocation: l
1112
+ });
1113
+ m && (f = !0), d += h, m && g && u.push(...g);
1114
+ });
1115
+ let p = {
1116
+ isMatch: f,
1117
+ score: f ? d / this.chunks.length : 1
1118
+ };
1119
+ return f && r && (p.indices = Te(u)), p;
1120
+ }
1121
+ }, Y = class {
1122
+ constructor(e) {
1123
+ this.pattern = e;
1124
+ }
1125
+ static isMultiMatch(e) {
1126
+ return ke(e, this.multiRegex);
1127
+ }
1128
+ static isSingleMatch(e) {
1129
+ return ke(e, this.singleRegex);
1130
+ }
1131
+ search(e) {
1132
+ return {
1133
+ isMatch: !1,
1134
+ score: 1
1135
+ };
1136
+ }
1137
+ };
1138
+ function ke(e, t) {
1139
+ let n = e.match(t);
1140
+ return n ? n[1] : null;
1141
+ }
1142
+ var Ae = class extends Y {
1143
+ constructor(e) {
1144
+ super(e);
1145
+ }
1146
+ static get type() {
1147
+ return "exact";
1148
+ }
1149
+ static get multiRegex() {
1150
+ return /^="(.*)"$/;
1151
+ }
1152
+ static get singleRegex() {
1153
+ return /^=(.*)$/;
1154
+ }
1155
+ search(e) {
1156
+ let t = e === this.pattern;
1157
+ return {
1158
+ isMatch: t,
1159
+ score: +!t,
1160
+ indices: [0, this.pattern.length - 1]
1161
+ };
1162
+ }
1163
+ }, je = class extends Y {
1164
+ constructor(e) {
1165
+ super(e);
1166
+ }
1167
+ static get type() {
1168
+ return "inverse-exact";
1169
+ }
1170
+ static get multiRegex() {
1171
+ return /^!"(.*)"$/;
1172
+ }
1173
+ static get singleRegex() {
1174
+ return /^!(.*)$/;
1175
+ }
1176
+ search(e) {
1177
+ let t = e.indexOf(this.pattern) === -1;
1178
+ return {
1179
+ isMatch: t,
1180
+ score: +!t,
1181
+ indices: [0, e.length - 1]
1182
+ };
1183
+ }
1184
+ }, Me = class extends Y {
1185
+ constructor(e) {
1186
+ super(e);
1187
+ }
1188
+ static get type() {
1189
+ return "prefix-exact";
1190
+ }
1191
+ static get multiRegex() {
1192
+ return /^\^"(.*)"$/;
1193
+ }
1194
+ static get singleRegex() {
1195
+ return /^\^(.*)$/;
1196
+ }
1197
+ search(e) {
1198
+ let t = e.startsWith(this.pattern);
1199
+ return {
1200
+ isMatch: t,
1201
+ score: +!t,
1202
+ indices: [0, this.pattern.length - 1]
1203
+ };
1204
+ }
1205
+ }, Ne = class extends Y {
1206
+ constructor(e) {
1207
+ super(e);
1208
+ }
1209
+ static get type() {
1210
+ return "inverse-prefix-exact";
1211
+ }
1212
+ static get multiRegex() {
1213
+ return /^!\^"(.*)"$/;
1214
+ }
1215
+ static get singleRegex() {
1216
+ return /^!\^(.*)$/;
1217
+ }
1218
+ search(e) {
1219
+ let t = !e.startsWith(this.pattern);
1220
+ return {
1221
+ isMatch: t,
1222
+ score: +!t,
1223
+ indices: [0, e.length - 1]
1224
+ };
1225
+ }
1226
+ }, Pe = class extends Y {
1227
+ constructor(e) {
1228
+ super(e);
1229
+ }
1230
+ static get type() {
1231
+ return "suffix-exact";
1232
+ }
1233
+ static get multiRegex() {
1234
+ return /^"(.*)"\$$/;
1235
+ }
1236
+ static get singleRegex() {
1237
+ return /^(.*)\$$/;
1238
+ }
1239
+ search(e) {
1240
+ let t = e.endsWith(this.pattern);
1241
+ return {
1242
+ isMatch: t,
1243
+ score: +!t,
1244
+ indices: [e.length - this.pattern.length, e.length - 1]
1245
+ };
1246
+ }
1247
+ }, Fe = class extends Y {
1248
+ constructor(e) {
1249
+ super(e);
1250
+ }
1251
+ static get type() {
1252
+ return "inverse-suffix-exact";
1253
+ }
1254
+ static get multiRegex() {
1255
+ return /^!"(.*)"\$$/;
1256
+ }
1257
+ static get singleRegex() {
1258
+ return /^!(.*)\$$/;
1259
+ }
1260
+ search(e) {
1261
+ let t = !e.endsWith(this.pattern);
1262
+ return {
1263
+ isMatch: t,
1264
+ score: +!t,
1265
+ indices: [0, e.length - 1]
1266
+ };
1267
+ }
1268
+ }, Ie = class extends Y {
1269
+ constructor(e, { location: t = K.location, threshold: n = K.threshold, distance: r = K.distance, includeMatches: i = K.includeMatches, findAllMatches: a = K.findAllMatches, minMatchCharLength: o = K.minMatchCharLength, isCaseSensitive: s = K.isCaseSensitive, ignoreDiacritics: c = K.ignoreDiacritics, ignoreLocation: l = K.ignoreLocation } = {}) {
1270
+ super(e), this._bitapSearch = new Oe(e, {
1271
+ location: t,
1272
+ threshold: n,
1273
+ distance: r,
1274
+ includeMatches: i,
1275
+ findAllMatches: a,
1276
+ minMatchCharLength: o,
1277
+ isCaseSensitive: s,
1278
+ ignoreDiacritics: c,
1279
+ ignoreLocation: l
1280
+ });
1281
+ }
1282
+ static get type() {
1283
+ return "fuzzy";
1284
+ }
1285
+ static get multiRegex() {
1286
+ return /^"(.*)"$/;
1287
+ }
1288
+ static get singleRegex() {
1289
+ return /^(.*)$/;
1290
+ }
1291
+ search(e) {
1292
+ return this._bitapSearch.searchIn(e);
1293
+ }
1294
+ }, Le = class extends Y {
1295
+ constructor(e) {
1296
+ super(e);
1297
+ }
1298
+ static get type() {
1299
+ return "include";
1300
+ }
1301
+ static get multiRegex() {
1302
+ return /^'"(.*)"$/;
1303
+ }
1304
+ static get singleRegex() {
1305
+ return /^'(.*)$/;
1306
+ }
1307
+ search(e) {
1308
+ let t = 0, n, r = [], i = this.pattern.length;
1309
+ for (; (n = e.indexOf(this.pattern, t)) > -1;) t = n + i, r.push([n, t - 1]);
1310
+ let a = !!r.length;
1311
+ return {
1312
+ isMatch: a,
1313
+ score: +!a,
1314
+ indices: r
1315
+ };
1316
+ }
1317
+ }, Re = [
1318
+ Ae,
1319
+ Le,
1320
+ Me,
1321
+ Ne,
1322
+ Fe,
1323
+ Pe,
1324
+ je,
1325
+ Ie
1326
+ ], ze = Re.length, Be = "\0", Ve = "|";
1327
+ function He(e) {
1328
+ let t = [], n = e.length, r = 0;
1329
+ for (; r < n;) {
1330
+ for (; r < n && e[r] === " ";) r++;
1331
+ if (r >= n) break;
1332
+ let i = r;
1333
+ for (; i < n && e[i] !== " " && e[i] !== "\"";) i++;
1334
+ if (i < n && e[i] === "\"") {
1335
+ for (i++; i < n;) {
1336
+ if (e[i] === "\"") {
1337
+ let t = i + 1;
1338
+ if (t >= n || e[t] === " ") {
1339
+ i++;
1340
+ break;
1341
+ }
1342
+ if (e[t] === "$" && (t + 1 >= n || e[t + 1] === " ")) {
1343
+ i += 2;
1344
+ break;
1345
+ }
1346
+ }
1347
+ i++;
1348
+ }
1349
+ t.push(e.substring(r, i)), r = i;
1350
+ } else {
1351
+ for (; i < n && e[i] !== " ";) i++;
1352
+ t.push(e.substring(r, i)), r = i;
1353
+ }
1354
+ }
1355
+ return t;
1356
+ }
1357
+ function Ue(e, t = {}) {
1358
+ return e.replace(/\\\|/g, Be).split(Ve).map((e) => {
1359
+ let n = He(e.replace(/\u0000/g, "|").trim()).filter((e) => e && !!e.trim()), r = [];
1360
+ for (let e = 0, i = n.length; e < i; e += 1) {
1361
+ let i = n[e], a = !1, o = -1;
1362
+ for (; !a && ++o < ze;) {
1363
+ let e = Re[o], n = e.isMultiMatch(i);
1364
+ n && (r.push(new e(n, t)), a = !0);
1365
+ }
1366
+ if (!a) for (o = -1; ++o < ze;) {
1367
+ let e = Re[o], n = e.isSingleMatch(i);
1368
+ if (n) {
1369
+ r.push(new e(n, t));
1370
+ break;
1371
+ }
1372
+ }
1373
+ }
1374
+ return r;
1375
+ });
1376
+ }
1377
+ var We = new Set([Ie.type, Le.type]), Ge = class {
1378
+ constructor(e, { isCaseSensitive: t = K.isCaseSensitive, ignoreDiacritics: n = K.ignoreDiacritics, includeMatches: r = K.includeMatches, minMatchCharLength: i = K.minMatchCharLength, ignoreLocation: a = K.ignoreLocation, findAllMatches: o = K.findAllMatches, location: s = K.location, threshold: c = K.threshold, distance: l = K.distance } = {}) {
1379
+ this.query = null, this.options = {
1380
+ isCaseSensitive: t,
1381
+ ignoreDiacritics: n,
1382
+ includeMatches: r,
1383
+ minMatchCharLength: i,
1384
+ findAllMatches: o,
1385
+ ignoreLocation: a,
1386
+ location: s,
1387
+ threshold: c,
1388
+ distance: l
1389
+ }, e = t ? e : e.toLowerCase(), e = n ? J(e) : e, this.pattern = e, this.query = Ue(this.pattern, this.options);
1390
+ }
1391
+ static condition(e, t) {
1392
+ return t.useExtendedSearch;
1393
+ }
1394
+ searchIn(e) {
1395
+ let t = this.query;
1396
+ if (!t) return {
1397
+ isMatch: !1,
1398
+ score: 1
1399
+ };
1400
+ let { includeMatches: n, isCaseSensitive: r, ignoreDiacritics: i } = this.options;
1401
+ e = r ? e : e.toLowerCase(), e = i ? J(e) : e;
1402
+ let a = 0, o = [], s = 0, c = !1;
1403
+ for (let r = 0, i = t.length; r < i; r += 1) {
1404
+ let i = t[r];
1405
+ o.length = 0, a = 0, c = !1;
1406
+ for (let t = 0, r = i.length; t < r; t += 1) {
1407
+ let r = i[t], { isMatch: l, indices: u, score: d } = r.search(e);
1408
+ if (l) {
1409
+ a += 1, s += d;
1410
+ let e = r.constructor.type;
1411
+ e.startsWith("inverse") && (c = !0), n && (We.has(e) ? o.push(...u) : o.push(u));
1412
+ } else {
1413
+ s = 0, a = 0, o.length = 0, c = !1;
1414
+ break;
1415
+ }
1416
+ }
1417
+ if (a) {
1418
+ let e = {
1419
+ isMatch: !0,
1420
+ score: s / a
1421
+ };
1422
+ return c && (e.hasInverse = !0), n && (e.indices = Te(o)), e;
1423
+ }
1424
+ }
1425
+ return {
1426
+ isMatch: !1,
1427
+ score: 1
1428
+ };
1429
+ }
1430
+ }, Ke = [];
1431
+ function qe(...e) {
1432
+ Ke.push(...e);
1433
+ }
1434
+ function X(e, t) {
1435
+ for (let n = 0, r = Ke.length; n < r; n += 1) {
1436
+ let r = Ke[n];
1437
+ if (r.condition(e, t)) return new r(e, t);
1438
+ }
1439
+ return new Oe(e, t);
1440
+ }
1441
+ var Z = {
1442
+ AND: "$and",
1443
+ OR: "$or"
1444
+ }, Je = {
1445
+ PATH: "$path",
1446
+ PATTERN: "$val"
1447
+ }, Ye = (e) => !!(e[Z.AND] || e[Z.OR]), Xe = (e) => !!e[Je.PATH], Ze = (e) => !P(e) && z(e) && !Ye(e), Qe = (e) => ({ [Z.AND]: Object.keys(e).map((t) => ({ [t]: e[t] })) });
1448
+ function $e(e, t, { auto: n = !0 } = {}) {
1449
+ let r = (e) => {
1450
+ if (L(e)) {
1451
+ let r = {
1452
+ keyId: null,
1453
+ pattern: e
1454
+ };
1455
+ return n && (r.searcher = X(e, t)), r;
1456
+ }
1457
+ let i = Object.keys(e), a = Xe(e);
1458
+ if (!a && i.length > 1 && !Ye(e)) return r(Qe(e));
1459
+ if (Ze(e)) {
1460
+ let r = a ? e[Je.PATH] : i[0], o = a ? e[Je.PATTERN] : e[r];
1461
+ if (!L(o)) throw Error(W(r));
1462
+ let s = {
1463
+ keyId: de(r),
1464
+ pattern: o
1465
+ };
1466
+ return n && (s.searcher = X(o, t)), s;
1467
+ }
1468
+ let o = {
1469
+ children: [],
1470
+ operator: i[0]
1471
+ };
1472
+ return i.forEach((t) => {
1473
+ let n = e[t];
1474
+ P(n) && n.forEach((e) => {
1475
+ o.children.push(r(e));
1476
+ });
1477
+ }), o;
1478
+ };
1479
+ return Ye(e) || (e = Qe(e)), r(e);
1480
+ }
1481
+ function et(e, { ignoreFieldNorm: t = K.ignoreFieldNorm }) {
1482
+ let n = 1;
1483
+ return e.forEach(({ key: e, norm: r, score: i }) => {
1484
+ let a = e ? e.weight : null;
1485
+ n *= (i === 0 && a ? 2 ** -52 : i) ** +((a || 1) * (t ? 1 : r));
1486
+ }), n;
1487
+ }
1488
+ function tt(e, { ignoreFieldNorm: t = K.ignoreFieldNorm }) {
1489
+ e.forEach((e) => {
1490
+ e.score = et(e.matches, { ignoreFieldNorm: t });
1491
+ });
1492
+ }
1493
+ var nt = class {
1494
+ constructor(e) {
1495
+ this.limit = e, this.heap = [];
1496
+ }
1497
+ get size() {
1498
+ return this.heap.length;
1499
+ }
1500
+ shouldInsert(e) {
1501
+ return this.size < this.limit || e < this.heap[0].score;
1502
+ }
1503
+ insert(e) {
1504
+ this.size < this.limit ? (this.heap.push(e), this._bubbleUp(this.size - 1)) : e.score < this.heap[0].score && (this.heap[0] = e, this._sinkDown(0));
1505
+ }
1506
+ extractSorted(e) {
1507
+ return this.heap.sort(e);
1508
+ }
1509
+ _bubbleUp(e) {
1510
+ let t = this.heap;
1511
+ for (; e > 0;) {
1512
+ let n = e - 1 >> 1;
1513
+ if (t[e].score <= t[n].score) break;
1514
+ let r = t[e];
1515
+ t[e] = t[n], t[n] = r, e = n;
1516
+ }
1517
+ }
1518
+ _sinkDown(e) {
1519
+ let t = this.heap, n = t.length, r = e;
1520
+ do {
1521
+ e = r;
1522
+ let i = 2 * e + 1, a = 2 * e + 2;
1523
+ if (i < n && t[i].score > t[r].score && (r = i), a < n && t[a].score > t[r].score && (r = a), r !== e) {
1524
+ let n = t[e];
1525
+ t[e] = t[r], t[r] = n;
1526
+ }
1527
+ } while (r !== e);
1528
+ }
1529
+ };
1530
+ function rt(e, t) {
1531
+ let n = e.matches;
1532
+ t.matches = [], B(n) && n.forEach((e) => {
1533
+ if (!B(e.indices) || !e.indices.length) return;
1534
+ let { indices: n, value: r } = e, i = {
1535
+ indices: n,
1536
+ value: r
1537
+ };
1538
+ e.key && (i.key = e.key.src), e.idx > -1 && (i.refIndex = e.idx), t.matches.push(i);
1539
+ });
1540
+ }
1541
+ function it(e, t) {
1542
+ t.score = e.score;
1543
+ }
1544
+ function at(e, t, { includeMatches: n = K.includeMatches, includeScore: r = K.includeScore } = {}) {
1545
+ let i = [];
1546
+ return n && i.push(rt), r && i.push(it), e.map((e) => {
1547
+ let { idx: n } = e, r = {
1548
+ item: t[n],
1549
+ refIndex: n
1550
+ };
1551
+ return i.length && i.forEach((t) => {
1552
+ t(e, r);
1553
+ }), r;
1554
+ });
1555
+ }
1556
+ var ot = /\b\w+\b/g;
1557
+ function st({ isCaseSensitive: e = !1, ignoreDiacritics: t = !1 } = {}) {
1558
+ return { tokenize(n) {
1559
+ return e || (n = n.toLowerCase()), t && (n = J(n)), n.match(ot) || [];
1560
+ } };
1561
+ }
1562
+ function ct(e, t, n) {
1563
+ let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = 0;
1564
+ function o(e, t, o, s) {
1565
+ let c = n.tokenize(e);
1566
+ if (!c.length) return;
1567
+ a++;
1568
+ let l = /* @__PURE__ */ new Map();
1569
+ for (let e of c) l.set(e, (l.get(e) || 0) + 1);
1570
+ for (let [e, n] of l) {
1571
+ let a = {
1572
+ docIdx: t,
1573
+ keyIdx: o,
1574
+ subIdx: s,
1575
+ tf: n
1576
+ }, c = r.get(e);
1577
+ c || (c = [], r.set(e, c)), c.push(a), i.set(e, (i.get(e) || 0) + 1);
1578
+ }
1579
+ }
1580
+ for (let n of e) {
1581
+ let { i: e, v: r, $: i } = n;
1582
+ if (r !== void 0) {
1583
+ o(r, e, -1, -1);
1584
+ continue;
1585
+ }
1586
+ if (i) for (let n = 0; n < t; n++) {
1587
+ let t = i[n];
1588
+ if (t) if (Array.isArray(t)) for (let r of t) o(r.v, e, n, r.i ?? -1);
1589
+ else o(t.v, e, n, -1);
1590
+ }
1591
+ }
1592
+ return {
1593
+ terms: r,
1594
+ fieldCount: a,
1595
+ df: i
1596
+ };
1597
+ }
1598
+ function lt(e, t, n, r) {
1599
+ let { i, v: a, $: o } = t;
1600
+ function s(t, n, a) {
1601
+ let o = r.tokenize(t);
1602
+ if (!o.length) return;
1603
+ e.fieldCount++;
1604
+ let s = /* @__PURE__ */ new Map();
1605
+ for (let e of o) s.set(e, (s.get(e) || 0) + 1);
1606
+ for (let [t, r] of s) {
1607
+ let o = {
1608
+ docIdx: i,
1609
+ keyIdx: n,
1610
+ subIdx: a,
1611
+ tf: r
1612
+ }, s = e.terms.get(t);
1613
+ s || (s = [], e.terms.set(t, s)), s.push(o), e.df.set(t, (e.df.get(t) || 0) + 1);
1614
+ }
1615
+ }
1616
+ if (a !== void 0) {
1617
+ s(a, -1, -1);
1618
+ return;
1619
+ }
1620
+ if (o) for (let e = 0; e < n; e++) {
1621
+ let t = o[e];
1622
+ if (t) if (Array.isArray(t)) for (let n of t) s(n.v, e, n.i ?? -1);
1623
+ else s(t.v, e, -1);
1624
+ }
1625
+ }
1626
+ function ut(e, t) {
1627
+ for (let [n, r] of e.terms) {
1628
+ let i = r.filter((e) => e.docIdx !== t), a = r.length - i.length;
1629
+ a > 0 && (e.fieldCount -= a, e.df.set(n, (e.df.get(n) || 0) - a), i.length === 0 ? (e.terms.delete(n), e.df.delete(n)) : e.terms.set(n, i));
1630
+ }
1631
+ }
1632
+ var Q = class {
1633
+ constructor(e, t, n) {
1634
+ this.options = {
1635
+ ...K,
1636
+ ...t
1637
+ }, this.options.useExtendedSearch, this.options.useTokenSearch, this._keyStore = new ce(this.options.keys), this._docs = e, this._myIndex = null, this._invertedIndex = null, this.setCollection(e, n), this._lastQuery = null, this._lastSearcher = null;
1638
+ }
1639
+ _getSearcher(e) {
1640
+ if (this._lastQuery === e) return this._lastSearcher;
1641
+ let t = X(e, this._invertedIndex ? {
1642
+ ...this.options,
1643
+ _invertedIndex: this._invertedIndex
1644
+ } : this.options);
1645
+ return this._lastQuery = e, this._lastSearcher = t, t;
1646
+ }
1647
+ setCollection(e, t) {
1648
+ if (this._docs = e, t && !(t instanceof ye)) throw Error(U);
1649
+ if (this._myIndex = t || be(this.options.keys, this._docs, {
1650
+ getFn: this.options.getFn,
1651
+ fieldNormWeight: this.options.fieldNormWeight
1652
+ }), this.options.useTokenSearch) {
1653
+ let e = st({
1654
+ isCaseSensitive: this.options.isCaseSensitive,
1655
+ ignoreDiacritics: this.options.ignoreDiacritics
1656
+ });
1657
+ this._invertedIndex = ct(this._myIndex.records, this._myIndex.keys.length, e);
1658
+ }
1659
+ }
1660
+ add(e) {
1661
+ if (B(e) && (this._docs.push(e), this._myIndex.add(e), this._invertedIndex)) {
1662
+ let e = this._myIndex.records[this._myIndex.records.length - 1], t = st({
1663
+ isCaseSensitive: this.options.isCaseSensitive,
1664
+ ignoreDiacritics: this.options.ignoreDiacritics
1665
+ });
1666
+ lt(this._invertedIndex, e, this._myIndex.keys.length, t);
1667
+ }
1668
+ }
1669
+ remove(e = () => !1) {
1670
+ let t = [], n = [];
1671
+ for (let r = 0, i = this._docs.length; r < i; r += 1) e(this._docs[r], r) && (t.push(this._docs[r]), n.push(r));
1672
+ if (n.length) {
1673
+ if (this._invertedIndex) for (let e of n) ut(this._invertedIndex, e);
1674
+ for (let e = n.length - 1; e >= 0; --e) this._docs.splice(n[e], 1);
1675
+ this._myIndex.removeAll(n);
1676
+ }
1677
+ return t;
1678
+ }
1679
+ removeAt(e) {
1680
+ this._invertedIndex && ut(this._invertedIndex, e);
1681
+ let t = this._docs.splice(e, 1)[0];
1682
+ return this._myIndex.removeAt(e), t;
1683
+ }
1684
+ getIndex() {
1685
+ return this._myIndex;
1686
+ }
1687
+ search(e, t) {
1688
+ let { limit: n = -1 } = t || {}, { includeMatches: r, includeScore: i, shouldSort: a, sortFn: o, ignoreFieldNorm: s } = this.options;
1689
+ if (L(e) && !e.trim()) {
1690
+ let e = this._docs.map((e, t) => ({
1691
+ item: e,
1692
+ refIndex: t
1693
+ }));
1694
+ return R(n) && n > -1 && (e = e.slice(0, n)), e;
1695
+ }
1696
+ let c = R(n) && n > 0 && L(e), l;
1697
+ if (c) {
1698
+ let t = new nt(n);
1699
+ L(this._docs[0]) ? this._searchStringList(e, {
1700
+ heap: t,
1701
+ ignoreFieldNorm: s
1702
+ }) : this._searchObjectList(e, {
1703
+ heap: t,
1704
+ ignoreFieldNorm: s
1705
+ }), l = t.extractSorted(o);
1706
+ } else l = L(e) ? L(this._docs[0]) ? this._searchStringList(e) : this._searchObjectList(e) : this._searchLogical(e), tt(l, { ignoreFieldNorm: s }), a && l.sort(o), R(n) && n > -1 && (l = l.slice(0, n));
1707
+ return at(l, this._docs, {
1708
+ includeMatches: r,
1709
+ includeScore: i
1710
+ });
1711
+ }
1712
+ _searchStringList(e, { heap: t, ignoreFieldNorm: n } = {}) {
1713
+ let r = this._getSearcher(e), { records: i } = this._myIndex, a = t ? null : [];
1714
+ return i.forEach(({ v: e, i, n: o }) => {
1715
+ if (!B(e)) return;
1716
+ let { isMatch: s, score: c, indices: l } = r.searchIn(e);
1717
+ if (s) {
1718
+ let r = {
1719
+ item: e,
1720
+ idx: i,
1721
+ matches: [{
1722
+ score: c,
1723
+ value: e,
1724
+ norm: o,
1725
+ indices: l
1726
+ }]
1727
+ };
1728
+ t ? (r.score = et(r.matches, { ignoreFieldNorm: n }), t.shouldInsert(r.score) && t.insert(r)) : a.push(r);
1729
+ }
1730
+ }), a;
1731
+ }
1732
+ _searchLogical(e) {
1733
+ let t = $e(e, this.options), n = (e, t, r) => {
1734
+ if (!("children" in e)) {
1735
+ let { keyId: n, searcher: i } = e, a;
1736
+ return n === null ? (a = [], this._myIndex.keys.forEach((e, n) => {
1737
+ a.push(...this._findMatches({
1738
+ key: e,
1739
+ value: t[n],
1740
+ searcher: i
1741
+ }));
1742
+ })) : a = this._findMatches({
1743
+ key: this._keyStore.get(n),
1744
+ value: this._myIndex.getValueForItemAtKeyId(t, n),
1745
+ searcher: i
1746
+ }), a && a.length ? [{
1747
+ idx: r,
1748
+ item: t,
1749
+ matches: a
1750
+ }] : [];
1751
+ }
1752
+ let { children: i, operator: a } = e, o = [];
1753
+ for (let e = 0, s = i.length; e < s; e += 1) {
1754
+ let s = i[e], c = n(s, t, r);
1755
+ if (c.length) o.push(...c);
1756
+ else if (a === Z.AND) return [];
1757
+ }
1758
+ return o;
1759
+ }, r = this._myIndex.records, i = /* @__PURE__ */ new Map(), a = [];
1760
+ return r.forEach(({ $: e, i: r }) => {
1761
+ if (B(e)) {
1762
+ let o = n(t, e, r);
1763
+ o.length && (i.has(r) || (i.set(r, {
1764
+ idx: r,
1765
+ item: e,
1766
+ matches: []
1767
+ }), a.push(i.get(r))), o.forEach(({ matches: e }) => {
1768
+ i.get(r).matches.push(...e);
1769
+ }));
1770
+ }
1771
+ }), a;
1772
+ }
1773
+ _searchObjectList(e, { heap: t, ignoreFieldNorm: n } = {}) {
1774
+ let r = this._getSearcher(e), { keys: i, records: a } = this._myIndex, o = t ? null : [];
1775
+ return a.forEach(({ $: e, i: a }) => {
1776
+ if (!B(e)) return;
1777
+ let s = [], c = !1, l = !1;
1778
+ if (i.forEach((t, n) => {
1779
+ let i = this._findMatches({
1780
+ key: t,
1781
+ value: e[n],
1782
+ searcher: r
1783
+ });
1784
+ i.length ? (s.push(...i), i[0].hasInverse && (l = !0)) : c = !0;
1785
+ }), !(l && c) && s.length) {
1786
+ let r = {
1787
+ idx: a,
1788
+ item: e,
1789
+ matches: s
1790
+ };
1791
+ t ? (r.score = et(r.matches, { ignoreFieldNorm: n }), t.shouldInsert(r.score) && t.insert(r)) : o.push(r);
1792
+ }
1793
+ }), o;
1794
+ }
1795
+ _findMatches({ key: e, value: t, searcher: n }) {
1796
+ if (!B(t)) return [];
1797
+ let r = [];
1798
+ if (P(t)) t.forEach(({ v: t, i, n: a }) => {
1799
+ if (!B(t)) return;
1800
+ let { isMatch: o, score: s, indices: c, hasInverse: l } = n.searchIn(t);
1801
+ o && r.push({
1802
+ score: s,
1803
+ key: e,
1804
+ value: t,
1805
+ idx: i,
1806
+ norm: a,
1807
+ indices: c,
1808
+ hasInverse: l
1809
+ });
1810
+ });
1811
+ else {
1812
+ let { v: i, n: a } = t, { isMatch: o, score: s, indices: c, hasInverse: l } = n.searchIn(i);
1813
+ o && r.push({
1814
+ score: s,
1815
+ key: e,
1816
+ value: i,
1817
+ norm: a,
1818
+ indices: c,
1819
+ hasInverse: l
1820
+ });
1821
+ }
1822
+ return r;
1823
+ }
1824
+ }, dt = class {
1825
+ static condition(e, t) {
1826
+ return t.useTokenSearch;
1827
+ }
1828
+ constructor(e, t) {
1829
+ this.options = t, this.analyzer = st({
1830
+ isCaseSensitive: t.isCaseSensitive,
1831
+ ignoreDiacritics: t.ignoreDiacritics
1832
+ });
1833
+ let n = this.analyzer.tokenize(e), { df: r, fieldCount: i } = t._invertedIndex;
1834
+ this.termSearchers = [], this.idfWeights = [];
1835
+ for (let e of n) {
1836
+ this.termSearchers.push(new Oe(e, {
1837
+ location: t.location,
1838
+ threshold: t.threshold,
1839
+ distance: t.distance,
1840
+ includeMatches: t.includeMatches,
1841
+ findAllMatches: t.findAllMatches,
1842
+ minMatchCharLength: t.minMatchCharLength,
1843
+ isCaseSensitive: t.isCaseSensitive,
1844
+ ignoreDiacritics: t.ignoreDiacritics,
1845
+ ignoreLocation: !0
1846
+ }));
1847
+ let n = r.get(e) || 0, a = Math.log(1 + (i - n + .5) / (n + .5));
1848
+ this.idfWeights.push(a);
1849
+ }
1850
+ }
1851
+ searchIn(e) {
1852
+ if (!this.termSearchers.length) return {
1853
+ isMatch: !1,
1854
+ score: 1
1855
+ };
1856
+ let t = [], n = 0, r = 0, i = 0;
1857
+ for (let a = 0; a < this.termSearchers.length; a++) {
1858
+ let o = this.termSearchers[a].searchIn(e), s = this.idfWeights[a];
1859
+ r += s, o.isMatch && (i++, n += s * (1 - o.score), o.indices && t.push(...o.indices));
1860
+ }
1861
+ if (i === 0) return {
1862
+ isMatch: !1,
1863
+ score: 1
1864
+ };
1865
+ let a = r > 0 ? 1 - n / r : 0, o = {
1866
+ isMatch: !0,
1867
+ score: Math.max(.001, a)
1868
+ };
1869
+ return this.options.includeMatches && t.length && (o.indices = Te(t)), o;
1870
+ }
1871
+ };
1872
+ Q.version = "7.3.0", Q.createIndex = be, Q.parseIndex = xe, Q.config = K, Q.match = function(e, t, n) {
1873
+ return X(e, {
1874
+ ...K,
1875
+ ...n
1876
+ }).searchIn(t);
1877
+ }, Q.parseQuery = $e, qe(Ge), qe(dt), Q.use = function(...e) {
1878
+ e.forEach((e) => qe(e));
1879
+ };
1880
+ //#endregion
1881
+ //#region src/hooks/useCommands.js
1882
+ var ft = (e, t = .4) => (e = e ? Object.entries(e)?.reduce((e, [t, n]) => ({ [t.toLowerCase()]: n }), {}) : {}, (n) => {
1883
+ let r = new Q(Object.keys(e), {
1884
+ includeScore: !0,
1885
+ ignoreLocation: !0
1886
+ }).search(n).filter((e) => e.score < t);
1887
+ if (r?.length) {
1888
+ let t = r[0].item.toLowerCase();
1889
+ return e[t]?.(n);
1890
+ }
1891
+ return null;
1892
+ }), pt = /* @__PURE__ */ s(((e) => {
1893
+ var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
1894
+ function r(e, n, r) {
1895
+ var i = null;
1896
+ if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
1897
+ else r = n;
1898
+ return n = r.ref, {
1899
+ $$typeof: t,
1900
+ type: e,
1901
+ key: i,
1902
+ ref: n === void 0 ? null : n,
1903
+ props: r
1904
+ };
1905
+ }
1906
+ e.Fragment = n, e.jsx = r, e.jsxs = r;
1907
+ })), mt = /* @__PURE__ */ s(((e) => {
1908
+ process.env.NODE_ENV !== "production" && (function() {
1909
+ function t(e) {
1910
+ if (e == null) return null;
1911
+ if (typeof e == "function") return e.$$typeof === O ? null : e.displayName || e.name || null;
1912
+ if (typeof e == "string") return e;
1913
+ switch (e) {
1914
+ case v: return "Fragment";
1915
+ case b: return "Profiler";
1916
+ case y: return "StrictMode";
1917
+ case w: return "Suspense";
1918
+ case T: return "SuspenseList";
1919
+ case ee: return "Activity";
1920
+ }
1921
+ if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
1922
+ case _: return "Portal";
1923
+ case S: return e.displayName || "Context";
1924
+ case x: return (e._context.displayName || "Context") + ".Consumer";
1925
+ case C:
1926
+ var n = e.render;
1927
+ return e = e.displayName, e ||= (e = n.displayName || n.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
1928
+ case E: return n = e.displayName || null, n === null ? t(e.type) || "Memo" : n;
1929
+ case D:
1930
+ n = e._payload, e = e._init;
1931
+ try {
1932
+ return t(e(n));
1933
+ } catch {}
1934
+ }
1935
+ return null;
1936
+ }
1937
+ function n(e) {
1938
+ return "" + e;
1939
+ }
1940
+ function r(e) {
1941
+ try {
1942
+ n(e);
1943
+ var t = !1;
1944
+ } catch {
1945
+ t = !0;
1946
+ }
1947
+ if (t) {
1948
+ t = console;
1949
+ var r = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
1950
+ return r.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), n(e);
1951
+ }
1952
+ }
1953
+ function i(e) {
1954
+ if (e === v) return "<>";
1955
+ if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
1956
+ try {
1957
+ var n = t(e);
1958
+ return n ? "<" + n + ">" : "<...>";
1959
+ } catch {
1960
+ return "<...>";
1961
+ }
1962
+ }
1963
+ function a() {
1964
+ var e = k.A;
1965
+ return e === null ? null : e.getOwner();
1966
+ }
1967
+ function o() {
1968
+ return Error("react-stack-top-frame");
1969
+ }
1970
+ function s(e) {
1971
+ if (A.call(e, "key")) {
1972
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
1973
+ if (t && t.isReactWarning) return !1;
1974
+ }
1975
+ return e.key !== void 0;
1976
+ }
1977
+ function l(e, t) {
1978
+ function n() {
1979
+ te || (te = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
1980
+ }
1981
+ n.isReactWarning = !0, Object.defineProperty(e, "key", {
1982
+ get: n,
1983
+ configurable: !0
1984
+ });
1985
+ }
1986
+ function u() {
1987
+ var e = t(this.type);
1988
+ return N[e] || (N[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
1989
+ }
1990
+ function d(e, t, n, r, i, a) {
1991
+ var o = n.ref;
1992
+ return e = {
1993
+ $$typeof: g,
1994
+ type: e,
1995
+ key: t,
1996
+ props: n,
1997
+ _owner: r
1998
+ }, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
1999
+ enumerable: !1,
2000
+ value: null
2001
+ }) : Object.defineProperty(e, "ref", {
2002
+ enumerable: !1,
2003
+ get: u
2004
+ }), e._store = {}, Object.defineProperty(e._store, "validated", {
2005
+ configurable: !1,
2006
+ enumerable: !1,
2007
+ writable: !0,
2008
+ value: 0
2009
+ }), Object.defineProperty(e, "_debugInfo", {
2010
+ configurable: !1,
2011
+ enumerable: !1,
2012
+ writable: !0,
2013
+ value: null
2014
+ }), Object.defineProperty(e, "_debugStack", {
2015
+ configurable: !1,
2016
+ enumerable: !1,
2017
+ writable: !0,
2018
+ value: i
2019
+ }), Object.defineProperty(e, "_debugTask", {
2020
+ configurable: !1,
2021
+ enumerable: !1,
2022
+ writable: !0,
2023
+ value: a
2024
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
2025
+ }
2026
+ function f(e, n, i, o, c, u) {
2027
+ var f = n.children;
2028
+ if (f !== void 0) if (o) if (j(f)) {
2029
+ for (o = 0; o < f.length; o++) p(f[o]);
2030
+ Object.freeze && Object.freeze(f);
2031
+ } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
2032
+ else p(f);
2033
+ if (A.call(n, "key")) {
2034
+ f = t(e);
2035
+ var m = Object.keys(n).filter(function(e) {
2036
+ return e !== "key";
2037
+ });
2038
+ o = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", F[f + o] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", o, f, m, f), F[f + o] = !0);
2039
+ }
2040
+ if (f = null, i !== void 0 && (r(i), f = "" + i), s(n) && (r(n.key), f = "" + n.key), "key" in n) for (var h in i = {}, n) h !== "key" && (i[h] = n[h]);
2041
+ else i = n;
2042
+ return f && l(i, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, i, a(), c, u);
2043
+ }
2044
+ function p(e) {
2045
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
2046
+ }
2047
+ function m(e) {
2048
+ return typeof e == "object" && !!e && e.$$typeof === g;
2049
+ }
2050
+ var h = c("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), ee = Symbol.for("react.activity"), O = Symbol.for("react.client.reference"), k = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, A = Object.prototype.hasOwnProperty, j = Array.isArray, M = console.createTask ? console.createTask : function() {
2051
+ return null;
2052
+ };
2053
+ h = { react_stack_bottom_frame: function(e) {
2054
+ return e();
2055
+ } };
2056
+ var te, N = {}, ne = h.react_stack_bottom_frame.bind(h, o)(), P = M(i(o)), F = {};
2057
+ e.Fragment = v, e.jsx = function(e, t, n) {
2058
+ var r = 1e4 > k.recentlyCreatedOwnerStacks++;
2059
+ return f(e, t, n, !1, r ? Error("react-stack-top-frame") : ne, r ? M(i(e)) : P);
2060
+ }, e.jsxs = function(e, t, n) {
2061
+ var r = 1e4 > k.recentlyCreatedOwnerStacks++;
2062
+ return f(e, t, n, !0, r ? Error("react-stack-top-frame") : ne, r ? M(i(e)) : P);
2063
+ };
2064
+ })();
2065
+ })), $ = (/* @__PURE__ */ s(((e, t) => {
2066
+ process.env.NODE_ENV === "production" ? t.exports = pt() : t.exports = mt();
2067
+ })))(), ht = ({ color: e = "black", activeColor: t = "red", isActive: n = !1 }) => /* @__PURE__ */ (0, $.jsx)("svg", {
2068
+ "data-testid": "__icon-root__",
2069
+ xmlns: "http://www.w3.org/2000/svg",
2070
+ width: "100%",
2071
+ height: "100%",
2072
+ viewBox: "0 0 24 24",
2073
+ children: /* @__PURE__ */ (0, $.jsxs)("g", { children: [/* @__PURE__ */ (0, $.jsx)("path", {
2074
+ "data-testid": "__icon-path__",
2075
+ fill: e,
2076
+ 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"
2077
+ }), n && /* @__PURE__ */ (0, $.jsx)("circle", {
2078
+ "data-testid": "__icon-active__",
2079
+ fill: t,
2080
+ cx: "16",
2081
+ cy: "4",
2082
+ r: "4"
2083
+ })] })
2084
+ }), gt = ({ children: r, commands: s = null, lang: c = "en-US", grammars: l = null, timeout: u = 3e3, ariaLabel: d = "start recognition", style: f = null, className: p = null, outlineStyle: m = "2px solid", onStart: h = null, onEnd: g = null, onSpeechStart: _ = null, onSpeechEnd: v = null, onResult: y = null, onError: b = null, onNoMatch: x = null, __rsInstance: S }) => {
2085
+ let C = a(null), [w, T] = o(!1), [, { start: E, stop: D, subscribe: ee, unsubscribe: O }] = N(c, l, S), k = ft(s), A = a({});
2086
+ A.current = {
2087
+ onStart: h,
2088
+ onEnd: g,
2089
+ onSpeechStart: _,
2090
+ onSpeechEnd: v,
2091
+ onResult: y,
2092
+ onError: b,
2093
+ onNoMatch: x
2094
+ };
2095
+ let j = a(k);
2096
+ j.current = k;
2097
+ let P = a(null), F = a(null), [I, L] = ne(n(() => F.current?.(), []), u), R = n(() => {
2098
+ try {
2099
+ T(!1), D();
2100
+ } catch (e) {
2101
+ A.current.onError?.(e);
2102
+ } finally {
2103
+ P.current?.();
2104
+ }
2105
+ }, [D]), re = n((e) => {
2106
+ I(), A.current.onStart?.(e);
2107
+ }, [I]), z = n((e) => {
2108
+ L(), A.current.onSpeechStart?.(e);
2109
+ }, [L]), ie = n((e) => {
2110
+ I(), A.current.onSpeechEnd?.(e);
2111
+ }, [I]), B = n((e, t) => {
2112
+ L(), R(), j.current(t), A.current.onResult?.(t, e);
2113
+ }, [L, R]), V = n((e) => {
2114
+ R(), A.current.onError?.(e);
2115
+ }, [R]), H = n((e) => {
2116
+ L(), R(), A.current.onNoMatch?.(e);
2117
+ }, [L, R]), U = n((e) => {
2118
+ L(), R(), A.current.onEnd?.(e);
2119
+ }, [L, R]);
2120
+ F.current = U;
2121
+ let W = i(() => ({
2122
+ start: re,
2123
+ end: U,
2124
+ speechstart: z,
2125
+ speechend: ie,
2126
+ result: B,
2127
+ error: V,
2128
+ nomatch: H
2129
+ }), [
2130
+ re,
2131
+ U,
2132
+ z,
2133
+ ie,
2134
+ B,
2135
+ V,
2136
+ H
2137
+ ]);
2138
+ P.current = () => Object.entries(W).forEach(([e, t]) => O?.(e, t));
2139
+ let G = n(() => {
2140
+ try {
2141
+ T(!0), Object.entries(W).forEach(([e, t]) => ee(e, t)), E();
2142
+ } catch (e) {
2143
+ V(e);
2144
+ }
2145
+ }, [
2146
+ W,
2147
+ ee,
2148
+ E,
2149
+ V
2150
+ ]), ae = () => {
2151
+ !p && m && (C.current.style.outline = m);
2152
+ }, oe = () => {
2153
+ !p && m && (C.current.style.outline = "none");
2154
+ };
2155
+ return M.isSupported ? te(r) ? r(G, R, w) : t(r) ? e(r, { ...!w && { onClick: G } }) : /* @__PURE__ */ (0, $.jsx)("button", {
2156
+ "data-testid": "__vocal-root__",
2157
+ ref: C,
2158
+ role: "button",
2159
+ "aria-label": d,
2160
+ style: p ? null : {
2161
+ width: 24,
2162
+ height: 24,
2163
+ backgroundColor: "transparent",
2164
+ border: "none",
2165
+ padding: 0,
2166
+ cursor: w ? "default" : "pointer",
2167
+ ...f
2168
+ },
2169
+ className: p,
2170
+ onFocus: ae,
2171
+ onBlur: oe,
2172
+ onClick: G,
2173
+ children: /* @__PURE__ */ (0, $.jsx)(ht, {
2174
+ isActive: w,
2175
+ color: "#aaa"
2176
+ })
2177
+ }) : null;
2178
+ }, _t = M.isSupported, vt = gt;
2179
+ //#endregion
2180
+ export { vt as default, _t as isSupported, N as useVocal };
2181
+
2182
+ //# sourceMappingURL=index.es.js.map